summaryrefslogtreecommitdiff
path: root/.localrepo/gptel-0.9.9.tar
blob: 8d3bbc7d6b617218865beb3cc6e34653e9c580a8 (plain)
ofshex dumpascii
0000 67 70 74 65 6c 2d 30 2e 39 2e 39 2f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 gptel-0.9.9/....................
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 31 33 30 33 00 20 35 00 00 00 0000000.00000000000.011303..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 30 2e 39 2e 39 2f 52 45 41 44 4d 45 2e 6f 72 67 00 00 00 00 00 00 00 00 00 00 gptel-0.9.9/README.org..........
0220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
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 32 36 34 33 30 33 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 32 37 36 31 00 20 30 00 00 00 0264303.00000000000.012761..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 23 2b 74 69 74 6c 65 3a 20 67 70 74 65 6c 3a 20 41 20 73 69 6d 70 6c 65 20 4c 4c 4d 20 63 6c 69 #+title:.gptel:.A.simple.LLM.cli
0420 65 6e 74 20 66 6f 72 20 45 6d 61 63 73 0a 0a 5b 5b 68 74 74 70 73 3a 2f 2f 65 6c 70 61 2e 6e 6f ent.for.Emacs..[[https://elpa.no
0440 6e 67 6e 75 2e 6f 72 67 2f 6e 6f 6e 67 6e 75 2f 67 70 74 65 6c 2e 68 74 6d 6c 5d 5b 66 69 6c 65 ngnu.org/nongnu/gptel.html][file
0460 3a 68 74 74 70 73 3a 2f 2f 65 6c 70 61 2e 6e 6f 6e 67 6e 75 2e 6f 72 67 2f 6e 6f 6e 67 6e 75 2f :https://elpa.nongnu.org/nongnu/
0480 67 70 74 65 6c 2e 73 76 67 5d 5d 0a 5b 5b 68 74 74 70 73 3a 2f 2f 65 6c 70 61 2e 6e 6f 6e 67 6e gptel.svg]].[[https://elpa.nongn
04a0 75 2e 6f 72 67 2f 6e 6f 6e 67 6e 75 2d 64 65 76 65 6c 2f 67 70 74 65 6c 2e 68 74 6d 6c 5d 5b 66 u.org/nongnu-devel/gptel.html][f
04c0 69 6c 65 3a 68 74 74 70 73 3a 2f 2f 65 6c 70 61 2e 6e 6f 6e 67 6e 75 2e 6f 72 67 2f 6e 6f 6e 67 ile:https://elpa.nongnu.org/nong
04e0 6e 75 2d 64 65 76 65 6c 2f 67 70 74 65 6c 2e 73 76 67 5d 5d 0a 5b 5b 68 74 74 70 73 3a 2f 2f 73 nu-devel/gptel.svg]].[[https://s
0500 74 61 62 6c 65 2e 6d 65 6c 70 61 2e 6f 72 67 2f 23 2f 67 70 74 65 6c 5d 5b 66 69 6c 65 3a 68 74 table.melpa.org/#/gptel][file:ht
0520 74 70 73 3a 2f 2f 73 74 61 62 6c 65 2e 6d 65 6c 70 61 2e 6f 72 67 2f 70 61 63 6b 61 67 65 73 2f tps://stable.melpa.org/packages/
0540 67 70 74 65 6c 2d 62 61 64 67 65 2e 73 76 67 5d 5d 0a 5b 5b 68 74 74 70 73 3a 2f 2f 6d 65 6c 70 gptel-badge.svg]].[[https://melp
0560 61 2e 6f 72 67 2f 23 2f 67 70 74 65 6c 5d 5b 66 69 6c 65 3a 68 74 74 70 73 3a 2f 2f 6d 65 6c 70 a.org/#/gptel][file:https://melp
0580 61 2e 6f 72 67 2f 70 61 63 6b 61 67 65 73 2f 67 70 74 65 6c 2d 62 61 64 67 65 2e 73 76 67 5d 5d a.org/packages/gptel-badge.svg]]
05a0 0a 0a 67 70 74 65 6c 20 69 73 20 61 20 73 69 6d 70 6c 65 20 4c 61 72 67 65 20 4c 61 6e 67 75 61 ..gptel.is.a.simple.Large.Langua
05c0 67 65 20 4d 6f 64 65 6c 20 63 68 61 74 20 63 6c 69 65 6e 74 20 66 6f 72 20 45 6d 61 63 73 2c 20 ge.Model.chat.client.for.Emacs,.
05e0 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 20 6d 6f 64 65 6c 73 with.support.for.multiple.models
0600 20 61 6e 64 20 62 61 63 6b 65 6e 64 73 2e 20 20 49 74 20 77 6f 72 6b 73 20 69 6e 20 74 68 65 20 .and.backends...It.works.in.the.
0620 73 70 69 72 69 74 20 6f 66 20 45 6d 61 63 73 2c 20 61 76 61 69 6c 61 62 6c 65 20 61 74 20 61 6e spirit.of.Emacs,.available.at.an
0640 79 20 74 69 6d 65 20 61 6e 64 20 75 6e 69 66 6f 72 6d 6c 79 20 69 6e 20 61 6e 79 20 62 75 66 66 y.time.and.uniformly.in.any.buff
0660 65 72 2e 0a 0a 2a 47 65 6e 65 72 61 6c 20 75 73 61 67 65 2a 3a 20 28 5b 5b 68 74 74 70 73 3a 2f er...*General.usage*:.([[https:/
0680 2f 77 77 77 2e 79 6f 75 74 75 62 65 2e 63 6f 6d 2f 77 61 74 63 68 3f 76 3d 62 73 52 6e 68 5f 62 /www.youtube.com/watch?v=bsRnh_b
06a0 72 67 67 4d 5d 5b 59 6f 75 54 75 62 65 20 44 65 6d 6f 5d 5d 29 0a 0a 68 74 74 70 73 3a 2f 2f 75 rggM][YouTube.Demo]])..https://u
06c0 73 65 72 2d 69 6d 61 67 65 73 2e 67 69 74 68 75 62 75 73 65 72 63 6f 6e 74 65 6e 74 2e 63 6f 6d ser-images.githubusercontent.com
06e0 2f 38 36 30 37 35 33 32 2f 32 33 30 35 31 36 38 31 32 2d 38 36 35 31 30 61 30 39 2d 61 32 66 62 /8607532/230516812-86510a09-a2fb
0700 2d 34 63 62 64 2d 62 35 33 66 2d 63 63 32 35 32 32 64 30 35 61 31 33 2e 6d 70 34 0a 0a 68 74 74 -4cbd-b53f-cc2522d05a13.mp4..htt
0720 70 73 3a 2f 2f 75 73 65 72 2d 69 6d 61 67 65 73 2e 67 69 74 68 75 62 75 73 65 72 63 6f 6e 74 65 ps://user-images.githubuserconte
0740 6e 74 2e 63 6f 6d 2f 38 36 30 37 35 33 32 2f 32 33 30 35 31 36 38 31 36 2d 61 65 34 61 36 31 33 nt.com/8607532/230516816-ae4a613
0760 61 2d 34 64 30 31 2d 34 30 37 33 2d 61 64 33 66 2d 62 36 36 66 61 37 33 63 36 65 34 35 2e 6d 70 a-4d01-4073-ad3f-b66fa73c6e45.mp
0780 34 0a 0a 2a 49 6e 2d 70 6c 61 63 65 20 75 73 61 67 65 2a 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 70 20 4..*In-place.usage*..#+html:.<p.
07a0 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 0a 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 align="center">.https://github.c
07c0 6f 6d 2f 75 73 65 72 2d 61 74 74 61 63 68 6d 65 6e 74 73 2f 61 73 73 65 74 73 2f 63 65 63 31 31 om/user-attachments/assets/cec11
07e0 61 65 63 2d 35 32 66 36 2d 34 31 32 65 2d 39 65 37 61 2d 39 33 35 38 65 38 62 39 62 31 62 66 0a aec-52f6-412e-9e7a-9358e8b9b1bf.
0800 23 2b 68 74 6d 6c 3a 20 3c 2f 70 3e 0a 0a 2a 54 6f 6f 6c 20 75 73 65 2a 0a 0a 23 2b 68 74 6d 6c #+html:.</p>..*Tool.use*..#+html
0820 3a 20 3c 70 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 0a 68 74 74 70 73 3a 2f 2f 67 69 74 :.<p.align="center">.https://git
0840 68 75 62 2e 63 6f 6d 2f 75 73 65 72 2d 61 74 74 61 63 68 6d 65 6e 74 73 2f 61 73 73 65 74 73 2f hub.com/user-attachments/assets/
0860 35 66 39 39 33 36 35 39 2d 34 63 66 64 2d 34 39 66 61 2d 62 35 63 64 2d 31 39 63 35 35 37 36 36 5f993659-4cfd-49fa-b5cd-19c55766
0880 62 39 62 32 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 70 3e 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 70 20 61 6c b9b2.#+html:.</p>..#+html:.<p.al
08a0 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 0a 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d ign="center">.https://github.com
08c0 2f 75 73 65 72 2d 61 74 74 61 63 68 6d 65 6e 74 73 2f 61 73 73 65 74 73 2f 38 66 35 37 63 32 30 /user-attachments/assets/8f57c20
08e0 62 2d 65 31 62 30 2d 34 64 38 36 2d 62 39 37 32 2d 66 34 36 66 62 39 30 61 65 31 65 37 0a 23 2b b-e1b0-4d86-b972-f46fb90ae1e7.#+
0900 68 74 6d 6c 3a 20 3c 2f 70 3e 0a 0a 53 65 65 20 61 6c 73 6f 20 5b 5b 68 74 74 70 73 3a 2f 2f 79 html:.</p>..See.also.[[https://y
0920 6f 75 74 75 2e 62 65 2f 67 31 56 4d 47 68 43 35 67 52 55 5d 5b 74 68 69 73 20 79 6f 75 74 75 62 outu.be/g1VMGhC5gRU][this.youtub
0940 65 20 64 65 6d 6f 20 28 32 20 6d 69 6e 75 74 65 73 29 5d 5d 20 62 79 20 41 72 6d 69 6e 20 44 61 e.demo.(2.minutes)]].by.Armin.Da
0960 72 76 69 73 68 2e 0a 0a 23 20 2a 4d 65 64 69 61 20 73 75 70 70 6f 72 74 2a 0a 0a 23 20 23 2b 68 rvish...#.*Media.support*..#.#+h
0980 74 6d 6c 3a 20 3c 70 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 0a 23 20 68 74 74 70 73 3a tml:.<p.align="center">.#.https:
09a0 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 75 73 65 72 2d 61 74 74 61 63 68 6d 65 6e 74 73 2f 61 73 //github.com/user-attachments/as
09c0 73 65 74 73 2f 31 66 64 39 34 37 65 31 2d 32 32 36 62 2d 34 62 65 32 2d 62 63 36 38 2d 37 62 32 sets/1fd947e1-226b-4be2-bc68-7b2
09e0 32 62 32 65 33 32 31 35 66 0a 23 20 23 2b 68 74 6d 6c 3a 20 3c 2f 70 3e 0a 0a 23 20 2a 4d 75 6c 2b2e3215f.#.#+html:.</p>..#.*Mul
0a00 74 69 2d 4c 4c 4d 20 73 75 70 70 6f 72 74 20 64 65 6d 6f 2a 3a 0a 0a 23 20 68 74 74 70 73 3a 2f ti-LLM.support.demo*:..#.https:/
0a20 2f 67 69 74 68 75 62 2d 70 72 6f 64 75 63 74 69 6f 6e 2d 75 73 65 72 2d 61 73 73 65 74 2d 36 32 /github-production-user-asset-62
0a40 31 30 64 66 2e 73 33 2e 61 6d 61 7a 6f 6e 61 77 73 2e 63 6f 6d 2f 38 36 30 37 35 33 32 2f 32 37 10df.s3.amazonaws.com/8607532/27
0a60 38 38 35 34 30 32 34 2d 61 65 31 33 33 36 63 34 2d 35 62 38 37 2d 34 31 66 32 2d 38 33 65 39 2d 8854024-ae1336c4-5b87-41f2-83e9-
0a80 65 34 31 35 33 34 39 64 36 61 34 33 2e 6d 70 34 0a 0a 2d 2d 2d 2d 2d 2d 0a 0a 2d 20 49 6e 74 65 e415349d6a43.mp4..------..-.Inte
0aa0 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 20 ract.with.LLMs.from.anywhere.in.
0ac0 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 75 Emacs.(any.buffer,.shell,.minibu
0ae0 66 66 65 72 2c 20 77 68 65 72 65 76 65 72 29 2e 0a 2d 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 73 ffer,.wherever)..-.LLM.responses
0b00 20 61 72 65 20 69 6e 20 4d 61 72 6b 64 6f 77 6e 20 6f 72 20 4f 72 67 20 6d 61 72 6b 75 70 2e 0a .are.in.Markdown.or.Org.markup..
0b20 2d 20 53 75 70 70 6f 72 74 73 20 6d 75 6c 74 69 70 6c 65 20 69 6e 64 65 70 65 6e 64 65 6e 74 20 -.Supports.multiple.independent.
0b40 63 6f 6e 76 65 72 73 61 74 69 6f 6e 73 2c 20 6f 6e 65 2d 6f 66 66 20 61 64 20 68 6f 63 20 69 6e conversations,.one-off.ad.hoc.in
0b60 74 65 72 61 63 74 69 6f 6e 73 20 61 6e 64 20 61 6e 79 74 68 69 6e 67 20 69 6e 20 62 65 74 77 65 teractions.and.anything.in.betwe
0b80 65 6e 2e 0a 2d 20 53 75 70 70 6f 72 74 73 20 74 6f 6f 6c 2d 75 73 65 20 74 6f 20 65 71 75 69 70 en..-.Supports.tool-use.to.equip
0ba0 20 4c 4c 4d 73 20 77 69 74 68 20 61 67 65 6e 74 69 63 20 63 61 70 61 62 69 6c 69 74 69 65 73 2e .LLMs.with.agentic.capabilities.
0bc0 0a 2d 20 53 75 70 70 6f 72 74 73 20 4d 6f 64 65 6c 20 43 6f 6e 74 65 78 74 20 50 72 6f 74 6f 63 .-.Supports.Model.Context.Protoc
0be0 6f 6c 20 28 4d 43 50 29 20 69 6e 74 65 67 72 61 74 69 6f 6e 20 75 73 69 6e 67 20 5b 5b 68 74 74 ol.(MCP).integration.using.[[htt
0c00 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6c 69 7a 71 77 65 72 73 63 6f 74 74 2f 6d 63 70 ps://github.com/lizqwerscott/mcp
0c20 2e 65 6c 5d 5b 6d 63 70 2e 65 6c 5d 5d 2e 0a 2d 20 53 75 70 70 6f 72 74 73 20 6d 75 6c 74 69 2d .el][mcp.el]]..-.Supports.multi-
0c40 6d 6f 64 61 6c 20 69 6e 70 75 74 20 28 69 6e 63 6c 75 64 65 20 69 6d 61 67 65 73 2c 20 64 6f 63 modal.input.(include.images,.doc
0c60 75 6d 65 6e 74 73 29 2e 0a 2d 20 53 75 70 70 6f 72 74 73 20 22 72 65 61 73 6f 6e 69 6e 67 22 20 uments)..-.Supports."reasoning".
0c80 63 6f 6e 74 65 6e 74 20 69 6e 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 73 2e 0a 2d 20 53 61 76 65 content.in.LLM.responses..-.Save
0ca0 20 63 68 61 74 73 20 61 73 20 72 65 67 75 6c 61 72 20 4d 61 72 6b 64 6f 77 6e 2f 4f 72 67 2f 54 .chats.as.regular.Markdown/Org/T
0cc0 65 78 74 20 66 69 6c 65 73 20 61 6e 64 20 72 65 73 75 6d 65 20 74 68 65 6d 20 6c 61 74 65 72 2e ext.files.and.resume.them.later.
0ce0 0a 2d 20 45 64 69 74 20 79 6f 75 72 20 70 72 65 76 69 6f 75 73 20 70 72 6f 6d 70 74 73 20 6f 72 .-.Edit.your.previous.prompts.or
0d00 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 73 20 77 68 65 6e 20 63 6f 6e 74 69 6e 75 69 6e 67 20 61 .LLM.responses.when.continuing.a
0d20 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 2e 20 54 68 65 73 65 20 77 69 6c 6c 20 62 65 20 66 65 64 .conversation..These.will.be.fed
0d40 20 62 61 63 6b 20 74 6f 20 74 68 65 20 6d 6f 64 65 6c 2e 0a 2d 20 53 75 70 70 6f 72 74 73 20 69 .back.to.the.model..-.Supports.i
0d60 6e 74 72 6f 73 70 65 63 74 69 6f 6e 2c 20 73 6f 20 79 6f 75 20 63 61 6e 20 73 65 65 20 2f 65 78 ntrospection,.so.you.can.see./ex
0d80 61 63 74 6c 79 2f 20 77 68 61 74 20 77 69 6c 6c 20 62 65 20 73 65 6e 74 2e 20 20 49 6e 73 70 65 actly/.what.will.be.sent...Inspe
0da0 63 74 20 61 6e 64 20 6d 6f 64 69 66 79 20 71 75 65 72 69 65 73 20 62 65 66 6f 72 65 20 73 65 6e ct.and.modify.queries.before.sen
0dc0 64 69 6e 67 20 74 68 65 6d 2e 0a 2d 20 50 61 75 73 65 20 6d 75 6c 74 69 2d 73 74 61 67 65 20 72 ding.them..-.Pause.multi-stage.r
0de0 65 71 75 65 73 74 73 20 61 74 20 61 6e 20 69 6e 74 65 72 6d 65 64 69 61 74 65 20 73 74 61 67 65 equests.at.an.intermediate.stage
0e00 20 61 6e 64 20 72 65 73 75 6d 65 20 74 68 65 6d 20 6c 61 74 65 72 2e 0a 2d 20 44 6f 6e 27 74 20 .and.resume.them.later..-.Don't.
0e20 6c 69 6b 65 20 67 70 74 65 6c 27 73 20 77 6f 72 6b 66 6c 6f 77 3f 20 55 73 65 20 69 74 20 74 6f like.gptel's.workflow?.Use.it.to
0e40 20 63 72 65 61 74 65 20 79 6f 75 72 20 6f 77 6e 20 66 6f 72 20 61 6e 79 20 73 75 70 70 6f 72 74 .create.your.own.for.any.support
0e60 65 64 20 6d 6f 64 65 6c 2f 62 61 63 6b 65 6e 64 20 77 69 74 68 20 61 20 5b 5b 68 74 74 70 73 3a ed.model/backend.with.a.[[https:
0e80 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6b 61 72 74 68 69 6e 6b 2f 67 70 74 65 6c 2f 77 69 6b 69 //github.com/karthink/gptel/wiki
0ea0 2f 44 65 66 69 6e 69 6e 67 2d 63 75 73 74 6f 6d 2d 67 70 74 65 6c 2d 63 6f 6d 6d 61 6e 64 73 5d /Defining-custom-gptel-commands]
0ec0 5b 73 69 6d 70 6c 65 20 41 50 49 5d 5d 2e 0a 0a 67 70 74 65 6c 20 75 73 65 73 20 43 75 72 6c 20 [simple.API]]...gptel.uses.Curl.
0ee0 69 66 20 61 76 61 69 6c 61 62 6c 65 2c 20 62 75 74 20 66 61 6c 6c 73 20 62 61 63 6b 20 74 6f 20 if.available,.but.falls.back.to.
0f00 74 68 65 20 62 75 69 6c 74 2d 69 6e 20 75 72 6c 2d 72 65 74 72 69 65 76 65 20 74 6f 20 77 6f 72 the.built-in.url-retrieve.to.wor
0f20 6b 20 77 69 74 68 6f 75 74 20 65 78 74 65 72 6e 61 6c 20 64 65 70 65 6e 64 65 6e 63 69 65 73 2e k.without.external.dependencies.
0f40 0a 0a 2a 2a 20 43 6f 6e 74 65 6e 74 73 20 3a 74 6f 63 3a 0a 20 20 2d 20 5b 5b 23 69 6e 73 74 61 ..**.Contents.:toc:...-.[[#insta
0f60 6c 6c 61 74 69 6f 6e 5d 5b 49 6e 73 74 61 6c 6c 61 74 69 6f 6e 5d 5d 0a 20 20 20 20 2d 20 5b 5b llation][Installation]].....-.[[
0f80 23 73 74 72 61 69 67 68 74 5d 5b 53 74 72 61 69 67 68 74 5d 5d 0a 20 20 20 20 2d 20 5b 5b 23 6d #straight][Straight]].....-.[[#m
0fa0 61 6e 75 61 6c 5d 5b 4d 61 6e 75 61 6c 5d 5d 0a 20 20 20 20 2d 20 5b 5b 23 64 6f 6f 6d 2d 65 6d anual][Manual]].....-.[[#doom-em
0fc0 61 63 73 5d 5b 44 6f 6f 6d 20 45 6d 61 63 73 5d 5d 0a 20 20 20 20 2d 20 5b 5b 23 73 70 61 63 65 acs][Doom.Emacs]].....-.[[#space
0fe0 6d 61 63 73 5d 5b 53 70 61 63 65 6d 61 63 73 5d 5d 0a 20 20 2d 20 5b 5b 23 73 65 74 75 70 5d 5b macs][Spacemacs]]...-.[[#setup][
1000 53 65 74 75 70 5d 5d 0a 20 20 20 20 2d 20 5b 5b 23 63 68 61 74 67 70 74 5d 5b 43 68 61 74 47 50 Setup]].....-.[[#chatgpt][ChatGP
1020 54 5d 5d 0a 20 20 20 20 2d 20 5b 5b 23 6f 74 68 65 72 2d 6c 6c 6d 2d 62 61 63 6b 65 6e 64 73 5d T]].....-.[[#other-llm-backends]
1040 5b 4f 74 68 65 72 20 4c 4c 4d 20 62 61 63 6b 65 6e 64 73 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b [Other.LLM.backends]].......-.[[
1060 23 6f 70 74 69 6f 6e 61 6c 2d 73 65 63 75 72 69 6e 67 2d 61 70 69 2d 6b 65 79 73 2d 77 69 74 68 #optional-securing-api-keys-with
1080 2d 61 75 74 68 69 6e 66 6f 5d 5b 28 4f 70 74 69 6f 6e 61 6c 29 20 53 65 63 75 72 69 6e 67 20 41 -authinfo][(Optional).Securing.A
10a0 50 49 20 6b 65 79 73 20 77 69 74 68 20 3d 61 75 74 68 69 6e 66 6f 3d 5d 5d 0a 20 20 20 20 20 20 PI.keys.with.=authinfo=]].......
10c0 2d 20 5b 5b 23 61 7a 75 72 65 5d 5b 41 7a 75 72 65 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b 23 67 -.[[#azure][Azure]].......-.[[#g
10e0 70 74 34 61 6c 6c 5d 5b 47 50 54 34 41 6c 6c 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b 23 6f 6c 6c pt4all][GPT4All]].......-.[[#oll
1100 61 6d 61 5d 5b 4f 6c 6c 61 6d 61 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b 23 6f 70 65 6e 2d 77 65 ama][Ollama]].......-.[[#open-we
1120 62 75 69 5d 5b 4f 70 65 6e 20 57 65 62 55 49 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b 23 67 65 6d bui][Open.WebUI]].......-.[[#gem
1140 69 6e 69 5d 5b 47 65 6d 69 6e 69 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b 23 6c 6c 61 6d 61 63 70 ini][Gemini]].......-.[[#llamacp
1160 70 2d 6f 72 2d 6c 6c 61 6d 61 66 69 6c 65 5d 5b 4c 6c 61 6d 61 2e 63 70 70 20 6f 72 20 4c 6c 61 p-or-llamafile][Llama.cpp.or.Lla
1180 6d 61 66 69 6c 65 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b 23 6b 61 67 69 2d 66 61 73 74 67 70 74 mafile]].......-.[[#kagi-fastgpt
11a0 2d 2d 73 75 6d 6d 61 72 69 7a 65 72 5d 5b 4b 61 67 69 20 28 46 61 73 74 47 50 54 20 26 20 53 75 --summarizer][Kagi.(FastGPT.&.Su
11c0 6d 6d 61 72 69 7a 65 72 29 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b 23 74 6f 67 65 74 68 65 72 61 mmarizer)]].......-.[[#togethera
11e0 69 5d 5b 74 6f 67 65 74 68 65 72 2e 61 69 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b 23 61 6e 79 73 i][together.ai]].......-.[[#anys
1200 63 61 6c 65 5d 5b 41 6e 79 73 63 61 6c 65 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b 23 70 65 72 70 cale][Anyscale]].......-.[[#perp
1220 6c 65 78 69 74 79 5d 5b 50 65 72 70 6c 65 78 69 74 79 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b 23 lexity][Perplexity]].......-.[[#
1240 61 6e 74 68 72 6f 70 69 63 2d 63 6c 61 75 64 65 5d 5b 41 6e 74 68 72 6f 70 69 63 20 28 43 6c 61 anthropic-claude][Anthropic.(Cla
1260 75 64 65 29 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b 23 67 72 6f 71 5d 5b 47 72 6f 71 5d 5d 0a 20 ude)]].......-.[[#groq][Groq]]..
1280 20 20 20 20 20 2d 20 5b 5b 23 6d 69 73 74 72 61 6c 2d 6c 65 2d 63 68 61 74 5d 5b 4d 69 73 74 72 .....-.[[#mistral-le-chat][Mistr
12a0 61 6c 20 4c 65 20 43 68 61 74 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b 23 6f 70 65 6e 72 6f 75 74 al.Le.Chat]].......-.[[#openrout
12c0 65 72 5d 5b 4f 70 65 6e 52 6f 75 74 65 72 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b 23 70 72 69 76 er][OpenRouter]].......-.[[#priv
12e0 61 74 65 67 70 74 5d 5b 50 72 69 76 61 74 65 47 50 54 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b 23 ategpt][PrivateGPT]].......-.[[#
1300 64 65 65 70 73 65 65 6b 5d 5b 44 65 65 70 53 65 65 6b 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b 23 deepseek][DeepSeek]].......-.[[#
1320 73 61 6d 62 61 6e 6f 76 61 2d 64 65 65 70 73 65 65 6b 5d 5b 53 61 6d 62 61 6e 6f 76 61 20 28 44 sambanova-deepseek][Sambanova.(D
1340 65 65 70 73 65 65 6b 29 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b 23 63 65 72 65 62 72 61 73 5d 5b eepseek)]].......-.[[#cerebras][
1360 43 65 72 65 62 72 61 73 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b 23 67 69 74 68 75 62 2d 6d 6f 64 Cerebras]].......-.[[#github-mod
1380 65 6c 73 5d 5b 47 69 74 68 75 62 20 4d 6f 64 65 6c 73 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b 23 els][Github.Models]].......-.[[#
13a0 6e 6f 76 69 74 61 2d 61 69 5d 5b 4e 6f 76 69 74 61 20 41 49 5d 5d 0a 20 20 20 20 20 20 2d 20 5b novita-ai][Novita.AI]].......-.[
13c0 5b 23 78 61 69 5d 5b 78 41 49 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b 23 61 69 6d 6c 2d 61 70 69 [#xai][xAI]].......-.[[#aiml-api
13e0 5d 5b 41 49 2f 4d 4c 20 41 50 49 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b 23 67 69 74 68 75 62 2d ][AI/ML.API]].......-.[[#github-
1400 63 6f 70 69 6c 6f 74 63 68 61 74 5d 5b 47 69 74 48 75 62 20 43 6f 70 69 6c 6f 74 43 68 61 74 5d copilotchat][GitHub.CopilotChat]
1420 5d 0a 20 20 20 20 20 20 2d 20 5b 5b 23 61 77 73 2d 62 65 64 72 6f 63 6b 5d 5b 41 57 53 20 42 65 ].......-.[[#aws-bedrock][AWS.Be
1440 64 72 6f 63 6b 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b 23 6d 6f 6f 6e 73 68 6f 74 2d 6b 69 6d 69 drock]].......-.[[#moonshot-kimi
1460 5d 5b 4d 6f 6f 6e 73 68 6f 74 20 28 4b 69 6d 69 29 5d 5d 0a 20 20 2d 20 5b 5b 23 75 73 61 67 65 ][Moonshot.(Kimi)]]...-.[[#usage
1480 5d 5b 55 73 61 67 65 5d 5d 0a 20 20 20 20 2d 20 5b 5b 23 69 6e 2d 61 6e 79 2d 62 75 66 66 65 72 ][Usage]].....-.[[#in-any-buffer
14a0 5d 5b 49 6e 20 61 6e 79 20 62 75 66 66 65 72 3a 5d 5d 0a 20 20 20 20 2d 20 5b 5b 23 69 6e 2d 61 ][In.any.buffer:]].....-.[[#in-a
14c0 2d 64 65 64 69 63 61 74 65 64 2d 63 68 61 74 2d 62 75 66 66 65 72 5d 5b 49 6e 20 61 20 64 65 64 -dedicated-chat-buffer][In.a.ded
14e0 69 63 61 74 65 64 20 63 68 61 74 20 62 75 66 66 65 72 3a 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b icated.chat.buffer:]].......-.[[
1500 23 69 6e 63 6c 75 64 69 6e 67 2d 6d 65 64 69 61 2d 69 6d 61 67 65 73 2d 64 6f 63 75 6d 65 6e 74 #including-media-images-document
1520 73 2d 6f 72 2d 70 6c 61 69 6e 2d 74 65 78 74 2d 66 69 6c 65 73 2d 77 69 74 68 2d 72 65 71 75 65 s-or-plain-text-files-with-reque
1540 73 74 73 5d 5b 49 6e 63 6c 75 64 69 6e 67 20 6d 65 64 69 61 20 28 69 6d 61 67 65 73 2c 20 64 6f sts][Including.media.(images,.do
1560 63 75 6d 65 6e 74 73 20 6f 72 20 70 6c 61 69 6e 2d 74 65 78 74 20 66 69 6c 65 73 29 20 77 69 74 cuments.or.plain-text.files).wit
1580 68 20 72 65 71 75 65 73 74 73 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b 23 73 61 76 65 2d 61 6e 64 h.requests]].......-.[[#save-and
15a0 2d 72 65 73 74 6f 72 65 2d 79 6f 75 72 2d 63 68 61 74 2d 73 65 73 73 69 6f 6e 73 5d 5b 53 61 76 -restore-your-chat-sessions][Sav
15c0 65 20 61 6e 64 20 72 65 73 74 6f 72 65 20 79 6f 75 72 20 63 68 61 74 20 73 65 73 73 69 6f 6e 73 e.and.restore.your.chat.sessions
15e0 5d 5d 0a 20 20 20 20 2d 20 5b 5b 23 73 65 74 74 69 6e 67 2d 6f 70 74 69 6f 6e 73 2d 62 61 63 6b ]].....-.[[#setting-options-back
1600 65 6e 64 2d 6d 6f 64 65 6c 2d 72 65 71 75 65 73 74 2d 70 61 72 61 6d 65 74 65 72 73 2d 73 79 73 end-model-request-parameters-sys
1620 74 65 6d 2d 70 72 6f 6d 70 74 73 2d 61 6e 64 2d 6d 6f 72 65 5d 5b 53 65 74 74 69 6e 67 20 6f 70 tem-prompts-and-more][Setting.op
1640 74 69 6f 6e 73 20 28 62 61 63 6b 65 6e 64 2c 20 6d 6f 64 65 6c 2c 20 72 65 71 75 65 73 74 20 70 tions.(backend,.model,.request.p
1660 61 72 61 6d 65 74 65 72 73 2c 20 73 79 73 74 65 6d 20 70 72 6f 6d 70 74 73 20 61 6e 64 20 6d 6f arameters,.system.prompts.and.mo
1680 72 65 29 5d 5d 0a 20 20 20 20 2d 20 5b 5b 23 69 6e 63 6c 75 64 65 2d 6d 6f 72 65 2d 63 6f 6e 74 re)]].....-.[[#include-more-cont
16a0 65 78 74 2d 77 69 74 68 2d 72 65 71 75 65 73 74 73 5d 5b 49 6e 63 6c 75 64 65 20 6d 6f 72 65 20 ext-with-requests][Include.more.
16c0 63 6f 6e 74 65 78 74 20 77 69 74 68 20 72 65 71 75 65 73 74 73 5d 5d 0a 20 20 20 20 2d 20 5b 5b context.with.requests]].....-.[[
16e0 23 68 61 6e 64 6c 65 2d 72 65 61 73 6f 6e 69 6e 67 2d 63 6f 6e 74 65 6e 74 5d 5b 48 61 6e 64 6c #handle-reasoning-content][Handl
1700 65 20 22 72 65 61 73 6f 6e 69 6e 67 22 20 63 6f 6e 74 65 6e 74 5d 5d 0a 20 20 20 20 2d 20 5b 5b e."reasoning".content]].....-.[[
1720 23 74 6f 6f 6c 2d 75 73 65 5d 5b 54 6f 6f 6c 20 75 73 65 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b #tool-use][Tool.use]].......-.[[
1740 23 64 65 66 69 6e 69 6e 67 2d 67 70 74 65 6c 2d 74 6f 6f 6c 73 5d 5b 44 65 66 69 6e 69 6e 67 20 #defining-gptel-tools][Defining.
1760 67 70 74 65 6c 20 74 6f 6f 6c 73 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b 23 73 65 6c 65 63 74 69 gptel.tools]].......-.[[#selecti
1780 6e 67 2d 74 6f 6f 6c 73 5d 5b 53 65 6c 65 63 74 69 6e 67 20 74 6f 6f 6c 73 5d 5d 0a 20 20 20 20 ng-tools][Selecting.tools]].....
17a0 20 20 2d 20 5b 5b 23 6d 6f 64 65 6c 2d 63 6f 6e 74 65 78 74 2d 70 72 6f 74 6f 63 6f 6c 2d 6d 63 ..-.[[#model-context-protocol-mc
17c0 70 2d 69 6e 74 65 67 72 61 74 69 6f 6e 5d 5b 4d 6f 64 65 6c 20 43 6f 6e 74 65 78 74 20 50 72 6f p-integration][Model.Context.Pro
17e0 74 6f 63 6f 6c 20 28 4d 43 50 29 20 69 6e 74 65 67 72 61 74 69 6f 6e 5d 5d 0a 20 20 20 20 2d 20 tocol.(MCP).integration]].....-.
1800 5b 5b 23 72 65 77 72 69 74 65 2d 72 65 66 61 63 74 6f 72 2d 6f 72 2d 66 69 6c 6c 2d 69 6e 2d 61 [[#rewrite-refactor-or-fill-in-a
1820 2d 72 65 67 69 6f 6e 5d 5b 52 65 77 72 69 74 65 2c 20 72 65 66 61 63 74 6f 72 20 6f 72 20 66 69 -region][Rewrite,.refactor.or.fi
1840 6c 6c 20 69 6e 20 61 20 72 65 67 69 6f 6e 5d 5d 0a 20 20 20 20 2d 20 5b 5b 23 65 78 74 72 61 2d ll.in.a.region]].....-.[[#extra-
1860 6f 72 67 2d 6d 6f 64 65 2d 63 6f 6e 76 65 6e 69 65 6e 63 65 73 5d 5b 45 78 74 72 61 20 4f 72 67 org-mode-conveniences][Extra.Org
1880 20 6d 6f 64 65 20 63 6f 6e 76 65 6e 69 65 6e 63 65 73 5d 5d 0a 20 20 20 20 2d 20 5b 5b 23 69 6e .mode.conveniences]].....-.[[#in
18a0 74 72 6f 73 70 65 63 74 69 6f 6e 2d 65 78 61 6d 69 6e 65 2d 64 65 62 75 67 2d 6f 72 2d 6d 6f 64 trospection-examine-debug-or-mod
18c0 69 66 79 2d 72 65 71 75 65 73 74 73 5d 5b 49 6e 74 72 6f 73 70 65 63 74 69 6f 6e 20 28 65 78 61 ify-requests][Introspection.(exa
18e0 6d 69 6e 65 2c 20 64 65 62 75 67 20 6f 72 20 6d 6f 64 69 66 79 20 72 65 71 75 65 73 74 73 29 5d mine,.debug.or.modify.requests)]
1900 5d 0a 20 20 2d 20 5b 5b 23 66 61 71 5d 5b 46 41 51 5d 5d 0a 20 20 20 20 2d 20 5b 5b 23 63 68 61 ]...-.[[#faq][FAQ]].....-.[[#cha
1920 74 2d 62 75 66 66 65 72 2d 75 69 5d 5b 43 68 61 74 20 62 75 66 66 65 72 20 55 49 5d 5d 0a 20 20 t-buffer-ui][Chat.buffer.UI]]...
1940 20 20 20 20 2d 20 5b 5b 23 69 2d 77 61 6e 74 2d 74 68 65 2d 77 69 6e 64 6f 77 2d 74 6f 2d 73 63 ....-.[[#i-want-the-window-to-sc
1960 72 6f 6c 6c 2d 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2d 61 73 2d 74 68 65 2d 72 65 73 70 6f 6e roll-automatically-as-the-respon
1980 73 65 2d 69 73 2d 69 6e 73 65 72 74 65 64 5d 5b 49 20 77 61 6e 74 20 74 68 65 20 77 69 6e 64 6f se-is-inserted][I.want.the.windo
19a0 77 20 74 6f 20 73 63 72 6f 6c 6c 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 61 73 20 74 68 65 w.to.scroll.automatically.as.the
19c0 20 72 65 73 70 6f 6e 73 65 20 69 73 20 69 6e 73 65 72 74 65 64 5d 5d 0a 20 20 20 20 20 20 2d 20 .response.is.inserted]].......-.
19e0 5b 5b 23 69 2d 77 61 6e 74 2d 74 68 65 2d 63 75 72 73 6f 72 2d 74 6f 2d 6d 6f 76 65 2d 74 6f 2d [[#i-want-the-cursor-to-move-to-
1a00 74 68 65 2d 6e 65 78 74 2d 70 72 6f 6d 70 74 2d 61 66 74 65 72 2d 74 68 65 2d 72 65 73 70 6f 6e the-next-prompt-after-the-respon
1a20 73 65 2d 69 73 2d 69 6e 73 65 72 74 65 64 5d 5b 49 20 77 61 6e 74 20 74 68 65 20 63 75 72 73 6f se-is-inserted][I.want.the.curso
1a40 72 20 74 6f 20 6d 6f 76 65 20 74 6f 20 74 68 65 20 6e 65 78 74 20 70 72 6f 6d 70 74 20 61 66 74 r.to.move.to.the.next.prompt.aft
1a60 65 72 20 74 68 65 20 72 65 73 70 6f 6e 73 65 20 69 73 20 69 6e 73 65 72 74 65 64 5d 5d 0a 20 20 er.the.response.is.inserted]]...
1a80 20 20 20 20 2d 20 5b 5b 23 69 2d 77 61 6e 74 2d 74 6f 2d 63 68 61 6e 67 65 2d 74 68 65 2d 66 6f ....-.[[#i-want-to-change-the-fo
1aa0 72 6d 61 74 74 69 6e 67 2d 6f 66 2d 74 68 65 2d 70 72 6f 6d 70 74 2d 61 6e 64 2d 6c 6c 6d 2d 72 rmatting-of-the-prompt-and-llm-r
1ac0 65 73 70 6f 6e 73 65 5d 5b 49 20 77 61 6e 74 20 74 6f 20 63 68 61 6e 67 65 20 74 68 65 20 66 6f esponse][I.want.to.change.the.fo
1ae0 72 6d 61 74 74 69 6e 67 20 6f 66 20 74 68 65 20 70 72 6f 6d 70 74 20 61 6e 64 20 4c 4c 4d 20 72 rmatting.of.the.prompt.and.LLM.r
1b00 65 73 70 6f 6e 73 65 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b 23 68 6f 77 2d 64 6f 65 73 2d 67 70 esponse]].......-.[[#how-does-gp
1b20 74 65 6c 2d 64 69 73 74 69 6e 67 75 69 73 68 2d 62 65 74 77 65 65 6e 2d 75 73 65 72 2d 70 72 6f tel-distinguish-between-user-pro
1b40 6d 70 74 73 2d 61 6e 64 2d 6c 6c 6d 2d 72 65 73 70 6f 6e 73 65 73 5d 5b 48 6f 77 20 64 6f 65 73 mpts-and-llm-responses][How.does
1b60 20 67 70 74 65 6c 20 64 69 73 74 69 6e 67 75 69 73 68 20 62 65 74 77 65 65 6e 20 75 73 65 72 20 .gptel.distinguish.between.user.
1b80 70 72 6f 6d 70 74 73 20 61 6e 64 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 73 3f 5d 5d 0a 20 20 20 prompts.and.LLM.responses?]]....
1ba0 20 2d 20 5b 5b 23 74 72 61 6e 73 69 65 6e 74 2d 6d 65 6e 75 2d 62 65 68 61 76 69 6f 72 5d 5b 54 .-.[[#transient-menu-behavior][T
1bc0 72 61 6e 73 69 65 6e 74 20 6d 65 6e 75 20 62 65 68 61 76 69 6f 72 5d 5d 0a 20 20 20 20 20 20 2d ransient.menu.behavior]].......-
1be0 20 5b 5b 23 69 2d 77 61 6e 74 2d 74 6f 2d 73 65 74 2d 67 70 74 65 6c 2d 6f 70 74 69 6f 6e 73 2d .[[#i-want-to-set-gptel-options-
1c00 62 75 74 2d 6f 6e 6c 79 2d 66 6f 72 2d 74 68 69 73 2d 62 75 66 66 65 72 5d 5b 49 20 77 61 6e 74 but-only-for-this-buffer][I.want
1c20 20 74 6f 20 73 65 74 20 67 70 74 65 6c 20 6f 70 74 69 6f 6e 73 20 62 75 74 20 6f 6e 6c 79 20 66 .to.set.gptel.options.but.only.f
1c40 6f 72 20 74 68 69 73 20 62 75 66 66 65 72 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b 23 69 2d 77 61 or.this.buffer]].......-.[[#i-wa
1c60 6e 74 2d 74 68 65 2d 74 72 61 6e 73 69 65 6e 74 2d 6d 65 6e 75 2d 6f 70 74 69 6f 6e 73 2d 74 6f nt-the-transient-menu-options-to
1c80 2d 62 65 2d 73 61 76 65 64 2d 73 6f 2d 69 2d 6f 6e 6c 79 2d 6e 65 65 64 2d 74 6f 2d 73 65 74 2d -be-saved-so-i-only-need-to-set-
1ca0 74 68 65 6d 2d 6f 6e 63 65 5d 5b 49 20 77 61 6e 74 20 74 68 65 20 74 72 61 6e 73 69 65 6e 74 20 them-once][I.want.the.transient.
1cc0 6d 65 6e 75 20 6f 70 74 69 6f 6e 73 20 74 6f 20 62 65 20 73 61 76 65 64 20 73 6f 20 49 20 6f 6e menu.options.to.be.saved.so.I.on
1ce0 6c 79 20 6e 65 65 64 20 74 6f 20 73 65 74 20 74 68 65 6d 20 6f 6e 63 65 5d 5d 0a 20 20 20 20 20 ly.need.to.set.them.once]]......
1d00 20 2d 20 5b 5b 23 75 73 69 6e 67 2d 74 68 65 2d 74 72 61 6e 73 69 65 6e 74 2d 6d 65 6e 75 2d 6c .-.[[#using-the-transient-menu-l
1d20 65 61 76 65 73 2d 62 65 68 69 6e 64 2d 65 78 74 72 61 2d 77 69 6e 64 6f 77 73 5d 5b 55 73 69 6e eaves-behind-extra-windows][Usin
1d40 67 20 74 68 65 20 74 72 61 6e 73 69 65 6e 74 20 6d 65 6e 75 20 6c 65 61 76 65 73 20 62 65 68 69 g.the.transient.menu.leaves.behi
1d60 6e 64 20 65 78 74 72 61 20 77 69 6e 64 6f 77 73 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b 23 63 61 nd.extra.windows]].......-.[[#ca
1d80 6e 2d 69 2d 63 68 61 6e 67 65 2d 74 68 65 2d 74 72 61 6e 73 69 65 6e 74 2d 6d 65 6e 75 2d 6b 65 n-i-change-the-transient-menu-ke
1da0 79 2d 62 69 6e 64 69 6e 67 73 5d 5b 43 61 6e 20 49 20 63 68 61 6e 67 65 20 74 68 65 20 74 72 61 y-bindings][Can.I.change.the.tra
1dc0 6e 73 69 65 6e 74 20 6d 65 6e 75 20 6b 65 79 20 62 69 6e 64 69 6e 67 73 3f 5d 5d 0a 20 20 20 20 nsient.menu.key.bindings?]].....
1de0 20 20 2d 20 5b 5b 23 64 6f 6f 6d 2d 65 6d 61 63 73 2d 73 65 6e 64 69 6e 67 2d 61 2d 71 75 65 72 ..-.[[#doom-emacs-sending-a-quer
1e00 79 2d 66 72 6f 6d 2d 74 68 65 2d 67 70 74 65 6c 2d 6d 65 6e 75 2d 66 61 69 6c 73 2d 62 65 63 61 y-from-the-gptel-menu-fails-beca
1e20 75 73 65 2d 6f 66 2d 61 2d 6b 65 79 2d 63 6f 6e 66 6c 69 63 74 2d 77 69 74 68 2d 6f 72 67 2d 6d use-of-a-key-conflict-with-org-m
1e40 6f 64 65 5d 5b 28 44 6f 6f 6d 20 45 6d 61 63 73 29 20 53 65 6e 64 69 6e 67 20 61 20 71 75 65 72 ode][(Doom.Emacs).Sending.a.quer
1e60 79 20 66 72 6f 6d 20 74 68 65 20 67 70 74 65 6c 20 6d 65 6e 75 20 66 61 69 6c 73 20 62 65 63 61 y.from.the.gptel.menu.fails.beca
1e80 75 73 65 20 6f 66 20 61 20 6b 65 79 20 63 6f 6e 66 6c 69 63 74 20 77 69 74 68 20 4f 72 67 20 6d use.of.a.key.conflict.with.Org.m
1ea0 6f 64 65 5d 5d 0a 20 20 20 20 2d 20 5b 5b 23 6d 69 73 63 65 6c 6c 61 6e 65 6f 75 73 5d 5b 4d 69 ode]].....-.[[#miscellaneous][Mi
1ec0 73 63 65 6c 6c 61 6e 65 6f 75 73 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b 23 69 2d 77 61 6e 74 2d scellaneous]].......-.[[#i-want-
1ee0 74 6f 2d 75 73 65 2d 67 70 74 65 6c 2d 69 6e 2d 61 2d 77 61 79 2d 74 68 61 74 73 2d 6e 6f 74 2d to-use-gptel-in-a-way-thats-not-
1f00 73 75 70 70 6f 72 74 65 64 2d 62 79 2d 67 70 74 65 6c 2d 73 65 6e 64 2d 6f 72 2d 74 68 65 2d 6f supported-by-gptel-send-or-the-o
1f20 70 74 69 6f 6e 73 2d 6d 65 6e 75 5d 5b 49 20 77 61 6e 74 20 74 6f 20 75 73 65 20 67 70 74 65 6c ptions-menu][I.want.to.use.gptel
1f40 20 69 6e 20 61 20 77 61 79 20 74 68 61 74 27 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 65 64 20 62 .in.a.way.that's.not.supported.b
1f60 79 20 3d 67 70 74 65 6c 2d 73 65 6e 64 3d 20 6f 72 20 74 68 65 20 6f 70 74 69 6f 6e 73 20 6d 65 y.=gptel-send=.or.the.options.me
1f80 6e 75 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b 23 63 68 61 74 67 70 74 2d 69 2d 67 65 74 2d 74 68 nu]].......-.[[#chatgpt-i-get-th
1fa0 65 2d 65 72 72 6f 72 2d 68 74 74 70 32 2d 34 32 39 2d 79 6f 75 2d 65 78 63 65 65 64 65 64 2d 79 e-error-http2-429-you-exceeded-y
1fc0 6f 75 72 2d 63 75 72 72 65 6e 74 2d 71 75 6f 74 61 5d 5b 28 43 68 61 74 47 50 54 29 20 49 20 67 our-current-quota][(ChatGPT).I.g
1fe0 65 74 20 74 68 65 20 65 72 72 6f 72 20 22 28 48 54 54 50 2f 32 20 34 32 39 29 20 59 6f 75 20 65 et.the.error."(HTTP/2.429).You.e
2000 78 63 65 65 64 65 64 20 79 6f 75 72 20 63 75 72 72 65 6e 74 20 71 75 6f 74 61 22 5d 5d 0a 20 20 xceeded.your.current.quota"]]...
2020 20 20 20 20 2d 20 5b 5b 23 77 68 79 2d 61 6e 6f 74 68 65 72 2d 6c 6c 6d 2d 63 6c 69 65 6e 74 5d ....-.[[#why-another-llm-client]
2040 5b 57 68 79 20 61 6e 6f 74 68 65 72 20 4c 4c 4d 20 63 6c 69 65 6e 74 3f 5d 5d 0a 20 20 2d 20 5b [Why.another.LLM.client?]]...-.[
2060 5b 23 61 64 64 69 74 69 6f 6e 61 6c 2d 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 5d 5b 41 64 64 69 [#additional-configuration][Addi
2080 74 69 6f 6e 61 6c 20 43 6f 6e 66 69 67 75 72 61 74 69 6f 6e 5d 5d 0a 20 20 20 20 2d 20 5b 5b 23 tional.Configuration]].....-.[[#
20a0 6f 70 74 69 6f 6e 2d 70 72 65 73 65 74 73 5d 5b 4f 70 74 69 6f 6e 20 70 72 65 73 65 74 73 5d 5d option-presets][Option.presets]]
20c0 0a 20 20 20 20 20 20 2d 20 5b 5b 23 61 70 70 6c 79 69 6e 67 2d 70 72 65 73 65 74 73 2d 74 6f 2d .......-.[[#applying-presets-to-
20e0 72 65 71 75 65 73 74 73 2d 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 5d 5b 41 70 70 6c 79 69 6e 67 requests-automatically][Applying
2100 20 70 72 65 73 65 74 73 20 74 6f 20 72 65 71 75 65 73 74 73 20 61 75 74 6f 6d 61 74 69 63 61 6c .presets.to.requests.automatical
2120 6c 79 5d 5d 0a 20 20 2d 20 5b 5b 23 61 6c 74 65 72 6e 61 74 69 76 65 73 5d 5b 41 6c 74 65 72 6e ly]]...-.[[#alternatives][Altern
2140 61 74 69 76 65 73 5d 5d 0a 20 20 20 20 2d 20 5b 5b 23 70 61 63 6b 61 67 65 73 2d 75 73 69 6e 67 atives]].....-.[[#packages-using
2160 2d 67 70 74 65 6c 5d 5b 50 61 63 6b 61 67 65 73 20 75 73 69 6e 67 20 67 70 74 65 6c 5d 5d 0a 20 -gptel][Packages.using.gptel]]..
2180 20 2d 20 5b 5b 23 61 63 6b 6e 6f 77 6c 65 64 67 6d 65 6e 74 73 5d 5b 41 63 6b 6e 6f 77 6c 65 64 .-.[[#acknowledgments][Acknowled
21a0 67 6d 65 6e 74 73 5d 5d 0a 0a 2a 2a 20 49 6e 73 74 61 6c 6c 61 74 69 6f 6e 0a 0a 4e 6f 74 65 3a gments]]..**.Installation..Note:
21c0 20 67 70 74 65 6c 20 72 65 71 75 69 72 65 73 20 54 72 61 6e 73 69 65 6e 74 20 30 2e 37 2e 34 20 .gptel.requires.Transient.0.7.4.
21e0 6f 72 20 68 69 67 68 65 72 2e 20 20 54 72 61 6e 73 69 65 6e 74 20 69 73 20 61 20 62 75 69 6c 74 or.higher...Transient.is.a.built
2200 2d 69 6e 20 70 61 63 6b 61 67 65 20 61 6e 64 20 45 6d 61 63 73 20 64 6f 65 73 20 6e 6f 74 20 75 -in.package.and.Emacs.does.not.u
2220 70 64 61 74 65 20 69 74 20 62 79 20 64 65 66 61 75 6c 74 2e 20 20 45 6e 73 75 72 65 20 74 68 61 pdate.it.by.default...Ensure.tha
2240 74 20 3d 70 61 63 6b 61 67 65 2d 69 6e 73 74 61 6c 6c 2d 75 70 67 72 61 64 65 2d 62 75 69 6c 74 t.=package-install-upgrade-built
2260 2d 69 6e 3d 20 69 73 20 74 72 75 65 2c 20 6f 72 20 75 70 64 61 74 65 20 54 72 61 6e 73 69 65 6e -in=.is.true,.or.update.Transien
2280 74 20 6d 61 6e 75 61 6c 6c 79 2e 0a 0a 2d 20 2a 52 65 6c 65 61 73 65 20 76 65 72 73 69 6f 6e 2a t.manually...-.*Release.version*
22a0 3a 20 3d 4d 2d 78 20 70 61 63 6b 61 67 65 2d 69 6e 73 74 61 6c 6c 3d 20 e2 8f 8e 20 3d 67 70 74 :.=M-x.package-install=.....=gpt
22c0 65 6c 3d 20 69 6e 20 45 6d 61 63 73 2e 0a 2d 20 2a 44 65 76 65 6c 6f 70 6d 65 6e 74 20 73 6e 61 el=.in.Emacs..-.*Development.sna
22e0 70 73 68 6f 74 2a 3a 20 41 64 64 20 4d 45 4c 50 41 20 6f 72 20 4e 6f 6e 47 4e 55 2d 64 65 76 65 pshot*:.Add.MELPA.or.NonGNU-deve
2300 6c 20 45 4c 50 41 20 74 6f 20 79 6f 75 72 20 6c 69 73 74 20 6f 66 20 70 61 63 6b 61 67 65 20 73 l.ELPA.to.your.list.of.package.s
2320 6f 75 72 63 65 73 2c 20 74 68 65 6e 20 69 6e 73 74 61 6c 6c 20 77 69 74 68 20 3d 4d 2d 78 20 70 ources,.then.install.with.=M-x.p
2340 61 63 6b 61 67 65 2d 69 6e 73 74 61 6c 6c 3d 20 e2 8f 8e 20 3d 67 70 74 65 6c 3d 2e 0a 2d 20 2a ackage-install=.....=gptel=..-.*
2360 4f 70 74 69 6f 6e 61 6c 3a 2a 20 49 6e 73 74 61 6c 6c 20 3d 6d 61 72 6b 64 6f 77 6e 2d 6d 6f 64 Optional:*.Install.=markdown-mod
2380 65 3d 2e 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 74 61 69 6c 73 3e 3c 73 75 6d 6d 61 72 79 3e 0a e=...#+html:.<details><summary>.
23a0 2a 2a 2a 20 53 74 72 61 69 67 68 74 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a ***.Straight.#+html:.</summary>.
23c0 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 20 20 28 73 74 72 61 69 67 #+begin_src.emacs-lisp...(straig
23e0 68 74 2d 75 73 65 2d 70 61 63 6b 61 67 65 20 27 67 70 74 65 6c 29 0a 23 2b 65 6e 64 5f 73 72 63 ht-use-package.'gptel).#+end_src
2400 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 74 .#+html:.</details>.#+html:.<det
2420 61 69 6c 73 3e 3c 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 20 4d 61 6e 75 61 6c 0a 23 2b 68 74 6d 6c ails><summary>.***.Manual.#+html
2440 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 4e 6f 74 65 3a 20 67 70 74 65 6c 20 72 65 71 75 69 72 65 :.</summary>.Note:.gptel.require
2460 73 20 54 72 61 6e 73 69 65 6e 74 20 30 2e 37 2e 34 20 6f 72 20 68 69 67 68 65 72 2e 20 20 54 72 s.Transient.0.7.4.or.higher...Tr
2480 61 6e 73 69 65 6e 74 20 69 73 20 61 20 62 75 69 6c 74 2d 69 6e 20 70 61 63 6b 61 67 65 20 61 6e ansient.is.a.built-in.package.an
24a0 64 20 45 6d 61 63 73 20 64 6f 65 73 20 6e 6f 74 20 75 70 64 61 74 65 20 69 74 20 62 79 20 64 65 d.Emacs.does.not.update.it.by.de
24c0 66 61 75 6c 74 2e 20 20 45 6e 73 75 72 65 20 74 68 61 74 20 3d 70 61 63 6b 61 67 65 2d 69 6e 73 fault...Ensure.that.=package-ins
24e0 74 61 6c 6c 2d 75 70 67 72 61 64 65 2d 62 75 69 6c 74 2d 69 6e 3d 20 69 73 20 74 72 75 65 2c 20 tall-upgrade-built-in=.is.true,.
2500 6f 72 20 75 70 64 61 74 65 20 54 72 61 6e 73 69 65 6e 74 20 6d 61 6e 75 61 6c 6c 79 2e 0a 0a 43 or.update.Transient.manually...C
2520 6c 6f 6e 65 20 6f 72 20 64 6f 77 6e 6c 6f 61 64 20 74 68 69 73 20 72 65 70 6f 73 69 74 6f 72 79 lone.or.download.this.repository
2540 20 61 6e 64 20 72 75 6e 20 3d 4d 2d 78 20 70 61 63 6b 61 67 65 2d 69 6e 73 74 61 6c 6c 2d 66 69 .and.run.=M-x.package-install-fi
2560 6c 65 e2 8f 8e 3d 20 6f 6e 20 74 68 65 20 72 65 70 6f 73 69 74 6f 72 79 20 64 69 72 65 63 74 6f le...=.on.the.repository.directo
2580 72 79 2e 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 23 2b 68 74 6d 6c 3a 20 3c ry..#+html:.</details>.#+html:.<
25a0 64 65 74 61 69 6c 73 3e 3c 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 20 44 6f 6f 6d 20 45 6d 61 63 73 details><summary>.***.Doom.Emacs
25c0 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 49 6e 20 3d 70 61 63 6b 61 67 65 73 .#+html:.</summary>.In.=packages
25e0 2e 65 6c 3d 0a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 28 70 61 .el=..#+begin_src.emacs-lisp.(pa
2600 63 6b 61 67 65 21 20 67 70 74 65 6c 20 3a 72 65 63 69 70 65 20 28 3a 6e 6f 6e 72 65 63 75 72 73 ckage!.gptel.:recipe.(:nonrecurs
2620 69 76 65 20 74 29 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 49 6e 20 3d 63 6f 6e 66 69 67 2e 65 6c ive.t)).#+end_src..In.=config.el
2640 3d 0a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 28 75 73 65 2d 70 =..#+begin_src.emacs-lisp.(use-p
2660 61 63 6b 61 67 65 21 20 67 70 74 65 6c 0a 20 3a 63 6f 6e 66 69 67 0a 20 28 73 65 74 71 21 20 67 ackage!.gptel..:config..(setq!.g
2680 70 74 65 6c 2d 61 70 69 2d 6b 65 79 20 22 79 6f 75 72 20 6b 65 79 22 29 29 0a 23 2b 65 6e 64 5f ptel-api-key."your.key")).#+end_
26a0 73 72 63 0a 0a 22 79 6f 75 72 20 6b 65 79 22 20 63 61 6e 20 62 65 20 74 68 65 20 41 50 49 20 6b src.."your.key".can.be.the.API.k
26c0 65 79 20 69 74 73 65 6c 66 2c 20 6f 72 20 28 73 61 66 65 72 29 20 61 20 66 75 6e 63 74 69 6f 6e ey.itself,.or.(safer).a.function
26e0 20 74 68 61 74 20 72 65 74 75 72 6e 73 20 74 68 65 20 6b 65 79 2e 20 20 53 65 74 74 69 6e 67 20 .that.returns.the.key...Setting.
2700 3d 67 70 74 65 6c 2d 61 70 69 2d 6b 65 79 3d 20 69 73 20 6f 70 74 69 6f 6e 61 6c 2c 20 79 6f 75 =gptel-api-key=.is.optional,.you
2720 20 77 69 6c 6c 20 62 65 20 61 73 6b 65 64 20 66 6f 72 20 61 20 6b 65 79 20 69 66 20 69 74 27 73 .will.be.asked.for.a.key.if.it's
2740 20 6e 6f 74 20 66 6f 75 6e 64 2e 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a .not.found...#+html:.</details>.
2760 23 2b 68 74 6d 6c 3a 20 3c 64 65 74 61 69 6c 73 3e 3c 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 20 53 #+html:.<details><summary>.***.S
2780 70 61 63 65 6d 61 63 73 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 49 6e 20 79 pacemacs.#+html:.</summary>.In.y
27a0 6f 75 72 20 3d 2e 73 70 61 63 65 6d 61 63 73 3d 20 66 69 6c 65 2c 20 61 64 64 20 3d 6c 6c 6d 2d our.=.spacemacs=.file,.add.=llm-
27c0 63 6c 69 65 6e 74 3d 20 74 6f 20 3d 64 6f 74 73 70 61 63 65 6d 61 63 73 2d 63 6f 6e 66 69 67 75 client=.to.=dotspacemacs-configu
27e0 72 61 74 69 6f 6e 2d 6c 61 79 65 72 73 3d 2e 0a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 ration-layers=...#+begin_src.ema
2800 63 73 2d 6c 69 73 70 0a 28 6c 6c 6d 2d 63 6c 69 65 6e 74 20 3a 76 61 72 69 61 62 6c 65 73 0a 20 cs-lisp.(llm-client.:variables..
2820 20 20 20 20 20 20 20 20 20 20 20 6c 6c 6d 2d 63 6c 69 65 6e 74 2d 65 6e 61 62 6c 65 2d 67 70 74 ...........llm-client-enable-gpt
2840 65 6c 20 74 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c el.t).#+end_src.#+html:.</detail
2860 73 3e 0a 2a 2a 20 53 65 74 75 70 0a 0a 67 70 74 65 6c 20 73 75 70 70 6f 72 74 73 20 61 20 6e 75 s>.**.Setup..gptel.supports.a.nu
2880 6d 62 65 72 20 6f 66 20 4c 4c 4d 20 70 72 6f 76 69 64 65 72 73 3a 0a 0a 23 2b 68 74 6d 6c 3a 20 mber.of.LLM.providers:..#+html:.
28a0 3c 64 69 76 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 0a 7c 20 4c 4c 4d 20 42 61 63 6b 65 <div.align="center">.|.LLM.Backe
28c0 6e 64 20 20 20 20 20 20 20 20 20 20 7c 20 52 65 71 75 69 72 65 73 20 20 20 20 20 20 20 20 20 20 nd..........|.Requires..........
28e0 20 20 20 20 20 20 20 20 20 7c 0a 7c 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d .........|.|--------------------
2900 2d 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 7c --+----------------------------|
2920 0a 7c 20 43 68 61 74 47 50 54 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 5b 5b 68 74 74 70 .|.ChatGPT..............|.[[http
2940 73 3a 2f 2f 70 6c 61 74 66 6f 72 6d 2e 6f 70 65 6e 61 69 2e 63 6f 6d 2f 61 63 63 6f 75 6e 74 2f s://platform.openai.com/account/
2960 61 70 69 2d 6b 65 79 73 5d 5b 41 50 49 20 6b 65 79 5d 5d 20 20 20 20 20 20 20 20 20 20 20 20 20 api-keys][API.key]].............
2980 20 20 20 20 20 20 20 7c 0a 7c 20 41 6e 74 68 72 6f 70 69 63 20 28 43 6c 61 75 64 65 29 20 20 20 .......|.|.Anthropic.(Claude)...
29a0 7c 20 5b 5b 68 74 74 70 73 3a 2f 2f 77 77 77 2e 61 6e 74 68 72 6f 70 69 63 2e 63 6f 6d 2f 61 70 |.[[https://www.anthropic.com/ap
29c0 69 5d 5b 41 50 49 20 6b 65 79 5d 5d 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 i][API.key]]....................
29e0 7c 0a 7c 20 47 65 6d 69 6e 69 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 5b 5b 68 74 74 |.|.Gemini...............|.[[htt
2a00 70 73 3a 2f 2f 6d 61 6b 65 72 73 75 69 74 65 2e 67 6f 6f 67 6c 65 2e 63 6f 6d 2f 61 70 70 2f 61 ps://makersuite.google.com/app/a
2a20 70 69 6b 65 79 5d 5b 41 50 49 20 6b 65 79 5d 5d 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 pikey][API.key]]................
2a40 20 20 20 20 7c 0a 7c 20 4f 6c 6c 61 6d 61 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 5b ....|.|.Ollama...............|.[
2a60 5b 68 74 74 70 73 3a 2f 2f 6f 6c 6c 61 6d 61 2e 61 69 2f 5d 5b 4f 6c 6c 61 6d 61 20 72 75 6e 6e [https://ollama.ai/][Ollama.runn
2a80 69 6e 67 20 6c 6f 63 61 6c 6c 79 5d 5d 20 20 20 20 20 7c 0a 7c 20 4f 70 65 6e 20 57 65 62 55 49 ing.locally]].....|.|.Open.WebUI
2aa0 20 20 20 20 20 20 20 20 20 20 20 7c 20 5b 5b 68 74 74 70 73 3a 2f 2f 6f 70 65 6e 77 65 62 75 69 ...........|.[[https://openwebui
2ac0 2e 63 6f 6d 2f 5d 5b 4f 70 65 6e 20 57 65 62 55 49 20 72 75 6e 6e 69 6e 67 20 6c 6f 63 61 6c 6c .com/][Open.WebUI.running.locall
2ae0 79 5d 5d 20 7c 0a 7c 20 4c 6c 61 6d 61 2e 63 70 70 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 5b y]].|.|.Llama.cpp............|.[
2b00 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 67 6d 6c 2d 6f 72 67 2f 6c 6c 61 [https://github.com/ggml-org/lla
2b20 6d 61 2e 63 70 70 2f 74 72 65 65 2f 6d 61 73 74 65 72 2f 74 6f 6f 6c 73 2f 73 65 72 76 65 72 23 ma.cpp/tree/master/tools/server#
2b40 71 75 69 63 6b 2d 73 74 61 72 74 5d 5b 4c 6c 61 6d 61 2e 63 70 70 20 72 75 6e 6e 69 6e 67 20 6c quick-start][Llama.cpp.running.l
2b60 6f 63 61 6c 6c 79 5d 5d 20 20 7c 0a 7c 20 4c 6c 61 6d 61 66 69 6c 65 20 20 20 20 20 20 20 20 20 ocally]]..|.|.Llamafile.........
2b80 20 20 20 7c 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 4d 6f 7a 69 6c 6c ...|.[[https://github.com/Mozill
2ba0 61 2d 4f 63 68 6f 2f 6c 6c 61 6d 61 66 69 6c 65 23 71 75 69 63 6b 73 74 61 72 74 5d 5b 4c 6f 63 a-Ocho/llamafile#quickstart][Loc
2bc0 61 6c 20 4c 6c 61 6d 61 66 69 6c 65 20 73 65 72 76 65 72 5d 5d 20 20 20 20 20 7c 0a 7c 20 47 50 al.Llamafile.server]].....|.|.GP
2be0 54 34 41 6c 6c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 T4All..............|.[[https://g
2c00 70 74 34 61 6c 6c 2e 69 6f 2f 69 6e 64 65 78 2e 68 74 6d 6c 5d 5b 47 50 54 34 41 6c 6c 20 72 75 pt4all.io/index.html][GPT4All.ru
2c20 6e 6e 69 6e 67 20 6c 6f 63 61 6c 6c 79 5d 5d 20 20 20 20 7c 0a 7c 20 4b 61 67 69 20 46 61 73 74 nning.locally]]....|.|.Kagi.Fast
2c40 47 50 54 20 20 20 20 20 20 20 20 20 7c 20 5b 5b 68 74 74 70 73 3a 2f 2f 6b 61 67 69 2e 63 6f 6d GPT.........|.[[https://kagi.com
2c60 2f 73 65 74 74 69 6e 67 73 3f 70 3d 61 70 69 5d 5b 41 50 49 20 6b 65 79 5d 5d 20 20 20 20 20 20 /settings?p=api][API.key]]......
2c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 7c 20 4b 61 67 69 20 53 75 6d 6d 61 72 69 7a 65 ..............|.|.Kagi.Summarize
2ca0 72 20 20 20 20 20 20 7c 20 5b 5b 68 74 74 70 73 3a 2f 2f 6b 61 67 69 2e 63 6f 6d 2f 73 65 74 74 r......|.[[https://kagi.com/sett
2cc0 69 6e 67 73 3f 70 3d 61 70 69 5d 5b 41 50 49 20 6b 65 79 5d 5d 20 20 20 20 20 20 20 20 20 20 20 ings?p=api][API.key]]...........
2ce0 20 20 20 20 20 20 20 20 20 7c 0a 7c 20 41 7a 75 72 65 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .........|.|.Azure..............
2d00 20 20 7c 20 44 65 70 6c 6f 79 6d 65 6e 74 20 61 6e 64 20 41 50 49 20 6b 65 79 20 20 20 20 20 7c ..|.Deployment.and.API.key.....|
2d20 0a 7c 20 47 72 6f 71 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 5b 5b 68 74 74 70 .|.Groq.................|.[[http
2d40 73 3a 2f 2f 63 6f 6e 73 6f 6c 65 2e 67 72 6f 71 2e 63 6f 6d 2f 6b 65 79 73 5d 5b 41 50 49 20 6b s://console.groq.com/keys][API.k
2d60 65 79 5d 5d 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 7c 20 4d 69 73 74 ey]]....................|.|.Mist
2d80 72 61 6c 20 4c 65 20 43 68 61 74 20 20 20 20 20 20 7c 20 5b 5b 68 74 74 70 73 3a 2f 2f 63 6f 6e ral.Le.Chat......|.[[https://con
2da0 73 6f 6c 65 2e 6d 69 73 74 72 61 6c 2e 61 69 2f 61 70 69 2d 6b 65 79 73 5d 5b 41 50 49 20 6b 65 sole.mistral.ai/api-keys][API.ke
2dc0 79 5d 5d 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 7c 20 50 65 72 70 6c y]]....................|.|.Perpl
2de0 65 78 69 74 79 20 20 20 20 20 20 20 20 20 20 20 7c 20 5b 5b 68 74 74 70 73 3a 2f 2f 64 6f 63 73 exity...........|.[[https://docs
2e00 2e 70 65 72 70 6c 65 78 69 74 79 2e 61 69 2f 64 6f 63 73 2f 67 65 74 74 69 6e 67 2d 73 74 61 72 .perplexity.ai/docs/getting-star
2e20 74 65 64 5d 5b 41 50 49 20 6b 65 79 5d 5d 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ted][API.key]]..................
2e40 20 20 7c 0a 7c 20 4f 70 65 6e 52 6f 75 74 65 72 20 20 20 20 20 20 20 20 20 20 20 7c 20 5b 5b 68 ..|.|.OpenRouter...........|.[[h
2e60 74 74 70 73 3a 2f 2f 6f 70 65 6e 72 6f 75 74 65 72 2e 61 69 2f 6b 65 79 73 5d 5b 41 50 49 20 6b ttps://openrouter.ai/keys][API.k
2e80 65 79 5d 5d 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 7c 20 41 49 2f 4d ey]]....................|.|.AI/M
2ea0 4c 20 41 50 49 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 5b 5b 68 74 74 70 73 3a 2f 2f 61 69 6d L.API............|.[[https://aim
2ec0 6c 61 70 69 2e 63 6f 6d 2f 61 70 70 2f 3f 75 74 6d 5f 73 6f 75 72 63 65 3d 67 70 74 65 6c 26 75 lapi.com/app/?utm_source=gptel&u
2ee0 74 6d 5f 6d 65 64 69 75 6d 3d 67 69 74 68 75 62 26 75 74 6d 5f 63 61 6d 70 61 69 67 6e 3d 69 6e tm_medium=github&utm_campaign=in
2f00 74 65 67 72 61 74 69 6f 6e 5d 5b 41 50 49 20 6b 65 79 5d 5d 20 20 20 20 20 20 20 20 20 20 20 20 tegration][API.key]]............
2f20 20 20 20 20 20 20 20 20 7c 0a 7c 20 74 6f 67 65 74 68 65 72 2e 61 69 20 20 20 20 20 20 20 20 20 ........|.|.together.ai.........
2f40 20 7c 20 5b 5b 68 74 74 70 73 3a 2f 2f 61 70 69 2e 74 6f 67 65 74 68 65 72 2e 78 79 7a 2f 73 65 .|.[[https://api.together.xyz/se
2f60 74 74 69 6e 67 73 2f 61 70 69 2d 6b 65 79 73 5d 5b 41 50 49 20 6b 65 79 5d 5d 20 20 20 20 20 20 ttings/api-keys][API.key]]......
2f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 7c 20 41 6e 79 73 63 61 6c 65 20 20 20 20 20 20 ..............|.|.Anyscale......
2fa0 20 20 20 20 20 20 20 7c 20 5b 5b 68 74 74 70 73 3a 2f 2f 64 6f 63 73 2e 65 6e 64 70 6f 69 6e 74 .......|.[[https://docs.endpoint
2fc0 73 2e 61 6e 79 73 63 61 6c 65 2e 63 6f 6d 2f 5d 5b 41 50 49 20 6b 65 79 5d 5d 20 20 20 20 20 20 s.anyscale.com/][API.key]]......
2fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 7c 20 50 72 69 76 61 74 65 47 50 54 20 20 20 20 ..............|.|.PrivateGPT....
3000 20 20 20 20 20 20 20 7c 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 7a 79 .......|.[[https://github.com/zy
3020 6c 6f 6e 2d 61 69 2f 70 72 69 76 61 74 65 2d 67 70 74 23 2d 64 6f 63 75 6d 65 6e 74 61 74 69 6f lon-ai/private-gpt#-documentatio
3040 6e 5d 5b 50 72 69 76 61 74 65 47 50 54 20 72 75 6e 6e 69 6e 67 20 6c 6f 63 61 6c 6c 79 5d 5d 20 n][PrivateGPT.running.locally]].
3060 7c 0a 7c 20 44 65 65 70 53 65 65 6b 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 5b 5b 68 74 74 |.|.DeepSeek.............|.[[htt
3080 70 73 3a 2f 2f 70 6c 61 74 66 6f 72 6d 2e 64 65 65 70 73 65 65 6b 2e 63 6f 6d 2f 61 70 69 5f 6b ps://platform.deepseek.com/api_k
30a0 65 79 73 5d 5b 41 50 49 20 6b 65 79 5d 5d 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 eys][API.key]]..................
30c0 20 20 7c 0a 7c 20 53 61 6d 62 61 6e 6f 76 61 20 28 44 65 65 70 73 65 65 6b 29 20 7c 20 5b 5b 68 ..|.|.Sambanova.(Deepseek).|.[[h
30e0 74 74 70 73 3a 2f 2f 63 6c 6f 75 64 2e 73 61 6d 62 61 6e 6f 76 61 2e 61 69 2f 61 70 69 73 5d 5b ttps://cloud.sambanova.ai/apis][
3100 41 50 49 20 6b 65 79 5d 5d 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 7c API.key]]....................|.|
3120 20 43 65 72 65 62 72 61 73 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 5b 5b 68 74 74 70 73 3a .Cerebras.............|.[[https:
3140 2f 2f 63 6c 6f 75 64 2e 63 65 72 65 62 72 61 73 2e 61 69 2f 5d 5b 41 50 49 20 6b 65 79 5d 5d 20 //cloud.cerebras.ai/][API.key]].
3160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 7c 20 47 69 74 68 75 62 20 4d 6f ...................|.|.Github.Mo
3180 64 65 6c 73 20 20 20 20 20 20 20 20 7c 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 dels........|.[[https://github.c
31a0 6f 6d 2f 73 65 74 74 69 6e 67 73 2f 74 6f 6b 65 6e 73 5d 5b 54 6f 6b 65 6e 5d 5d 20 20 20 20 20 om/settings/tokens][Token]].....
31c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 7c 20 4e 6f 76 69 74 61 20 41 49 20 20 .................|.|.Novita.AI..
31e0 20 20 20 20 20 20 20 20 20 20 7c 20 5b 5b 68 74 74 70 73 3a 2f 2f 6e 6f 76 69 74 61 2e 61 69 2f ..........|.[[https://novita.ai/
3200 6d 6f 64 65 6c 2d 61 70 69 2f 70 72 6f 64 75 63 74 2f 6c 6c 6d 2d 61 70 69 3f 75 74 6d 5f 73 6f model-api/product/llm-api?utm_so
3220 75 72 63 65 3d 67 69 74 68 75 62 5f 67 70 74 65 6c 26 75 74 6d 5f 6d 65 64 69 75 6d 3d 67 69 74 urce=github_gptel&utm_medium=git
3240 68 75 62 5f 72 65 61 64 6d 65 26 75 74 6d 5f 63 61 6d 70 61 69 67 6e 3d 6c 69 6e 6b 5d 5b 54 6f hub_readme&utm_campaign=link][To
3260 6b 65 6e 5d 5d 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 7c 20 78 ken]]......................|.|.x
3280 41 49 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 5b 5b 68 74 74 70 73 3a 2f 2f AI..................|.[[https://
32a0 63 6f 6e 73 6f 6c 65 2e 78 2e 61 69 3f 75 74 6d 5f 73 6f 75 72 63 65 3d 67 69 74 68 75 62 5f 67 console.x.ai?utm_source=github_g
32c0 70 74 65 6c 26 75 74 6d 5f 6d 65 64 69 75 6d 3d 67 69 74 68 75 62 5f 72 65 61 64 6d 65 26 75 74 ptel&utm_medium=github_readme&ut
32e0 6d 5f 63 61 6d 70 61 69 67 6e 3d 6c 69 6e 6b 5d 5b 41 50 49 20 6b 65 79 5d 5d 20 20 20 20 20 20 m_campaign=link][API.key]]......
3300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 7c 20 47 69 74 48 75 62 20 43 6f 70 69 6c 6f 74 ..............|.|.GitHub.Copilot
3320 43 68 61 74 20 20 20 7c 20 47 69 74 48 75 62 20 61 63 63 6f 75 6e 74 20 20 20 20 20 20 20 20 20 Chat...|.GitHub.account.........
3340 20 20 20 20 7c 0a 7c 20 42 65 64 72 6f 63 6b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 41 ....|.|.Bedrock..............|.A
3360 57 53 20 63 72 65 64 65 6e 74 69 61 6c 73 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 7c 20 4d 6f WS.credentials............|.|.Mo
3380 6f 6e 73 68 6f 74 20 28 4b 69 6d 69 29 20 20 20 20 20 20 7c 20 41 50 49 20 6b 65 79 20 28 5b 5b onshot.(Kimi)......|.API.key.([[
33a0 68 74 74 70 73 3a 2f 2f 70 6c 61 74 66 6f 72 6d 2e 6d 6f 6f 6e 73 68 6f 74 2e 63 6e 2f 63 6f 6e https://platform.moonshot.cn/con
33c0 73 6f 6c 65 5d 5b 43 4e 5d 5d 20 6f 72 20 5b 5b 68 74 74 70 73 3a 2f 2f 70 6c 61 74 66 6f 72 6d sole][CN]].or.[[https://platform
33e0 2e 6d 6f 6f 6e 73 68 6f 74 2e 61 69 2f 63 6f 6e 73 6f 6c 65 5d 5b 47 6c 6f 62 61 6c 5d 5d 29 20 .moonshot.ai/console][Global]]).
3400 20 20 20 20 7c 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 69 76 3e 0a 0a 2a 2a 2a 20 43 68 61 74 47 50 ....|.#+html:.</div>..***.ChatGP
3420 54 0a 50 72 6f 63 75 72 65 20 61 6e 20 5b 5b 68 74 74 70 73 3a 2f 2f 70 6c 61 74 66 6f 72 6d 2e T.Procure.an.[[https://platform.
3440 6f 70 65 6e 61 69 2e 63 6f 6d 2f 61 63 63 6f 75 6e 74 2f 61 70 69 2d 6b 65 79 73 5d 5b 4f 70 65 openai.com/account/api-keys][Ope
3460 6e 41 49 20 41 50 49 20 6b 65 79 5d 5d 2e 0a 0a 4f 70 74 69 6f 6e 61 6c 3a 20 53 65 74 20 3d 67 nAI.API.key]]...Optional:.Set.=g
3480 70 74 65 6c 2d 61 70 69 2d 6b 65 79 3d 20 74 6f 20 74 68 65 20 6b 65 79 2e 20 41 6c 74 65 72 6e ptel-api-key=.to.the.key..Altern
34a0 61 74 69 76 65 6c 79 2c 20 79 6f 75 20 6d 61 79 20 63 68 6f 6f 73 65 20 61 20 6d 6f 72 65 20 73 atively,.you.may.choose.a.more.s
34c0 65 63 75 72 65 20 6d 65 74 68 6f 64 20 73 75 63 68 20 61 73 3a 0a 0a 2d 20 53 65 74 74 69 6e 67 ecure.method.such.as:..-.Setting
34e0 20 69 74 20 74 6f 20 61 20 63 75 73 74 6f 6d 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 72 65 .it.to.a.custom.function.that.re
3500 74 75 72 6e 73 20 74 68 65 20 6b 65 79 2e 0a 2d 20 4c 65 61 76 69 6e 67 20 69 74 20 73 65 74 20 turns.the.key..-.Leaving.it.set.
3520 74 6f 20 74 68 65 20 64 65 66 61 75 6c 74 20 3d 67 70 74 65 6c 2d 61 70 69 2d 6b 65 79 2d 66 72 to.the.default.=gptel-api-key-fr
3540 6f 6d 2d 61 75 74 68 2d 73 6f 75 72 63 65 3d 20 66 75 6e 63 74 69 6f 6e 20 77 68 69 63 68 20 72 om-auth-source=.function.which.r
3560 65 61 64 73 20 6b 65 79 73 20 66 72 6f 6d 20 3d 7e 2f 2e 61 75 74 68 69 6e 66 6f 3d 2e 20 28 53 eads.keys.from.=~/.authinfo=..(S
3580 65 65 20 5b 5b 23 6f 70 74 69 6f 6e 61 6c 2d 73 65 63 75 72 69 6e 67 2d 61 70 69 2d 6b 65 79 73 ee.[[#optional-securing-api-keys
35a0 2d 77 69 74 68 2d 61 75 74 68 69 6e 66 6f 5d 5b 61 75 74 68 69 6e 66 6f 20 64 65 74 61 69 6c 73 -with-authinfo][authinfo.details
35c0 5d 5d 29 0a 0a 2a 2a 2a 20 4f 74 68 65 72 20 4c 4c 4d 20 62 61 63 6b 65 6e 64 73 0a 0a 43 68 61 ]])..***.Other.LLM.backends..Cha
35e0 74 47 50 54 20 69 73 20 63 6f 6e 66 69 67 75 72 65 64 20 6f 75 74 20 6f 66 20 74 68 65 20 62 6f tGPT.is.configured.out.of.the.bo
3600 78 2e 20 20 49 66 20 79 6f 75 20 77 61 6e 74 20 74 6f 20 75 73 65 20 6f 74 68 65 72 20 4c 4c 4d x...If.you.want.to.use.other.LLM
3620 20 62 61 63 6b 65 6e 64 73 20 28 6c 69 6b 65 20 4f 6c 6c 61 6d 61 2c 20 43 6c 61 75 64 65 2f 41 .backends.(like.Ollama,.Claude/A
3640 6e 74 68 72 6f 70 69 63 20 6f 72 20 47 65 6d 69 6e 69 29 20 79 6f 75 20 6e 65 65 64 20 74 6f 20 nthropic.or.Gemini).you.need.to.
3660 72 65 67 69 73 74 65 72 20 61 6e 64 20 63 6f 6e 66 69 67 75 72 65 20 74 68 65 6d 20 66 69 72 73 register.and.configure.them.firs
3680 74 2e 0a 0a 41 73 20 61 6e 20 65 78 61 6d 70 6c 65 2c 20 72 65 67 69 73 74 65 72 69 6e 67 20 61 t...As.an.example,.registering.a
36a0 20 62 61 63 6b 65 6e 64 20 74 79 70 69 63 61 6c 6c 79 20 6c 6f 6f 6b 73 20 6c 69 6b 65 20 74 68 .backend.typically.looks.like.th
36c0 65 20 66 6f 6c 6c 6f 77 69 6e 67 3a 0a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d e.following:..#+begin_src.emacs-
36e0 6c 69 73 70 0a 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 61 6e 74 68 72 6f 70 69 63 20 22 43 6c 61 75 lisp.(gptel-make-anthropic."Clau
3700 64 65 22 20 3a 73 74 72 65 61 6d 20 74 20 3a 6b 65 79 20 67 70 74 65 6c 2d 61 70 69 2d 6b 65 79 de".:stream.t.:key.gptel-api-key
3720 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 4f 6e 63 65 20 74 68 69 73 20 62 61 63 6b 65 6e 64 20 69 ).#+end_src..Once.this.backend.i
3740 73 20 72 65 67 69 73 74 65 72 65 64 2c 20 79 6f 75 27 6c 6c 20 73 65 65 20 6d 6f 64 65 6c 20 6e s.registered,.you'll.see.model.n
3760 61 6d 65 73 20 70 72 65 66 69 78 65 64 20 62 79 20 22 43 6c 61 75 64 65 3a 22 20 61 70 70 65 61 ames.prefixed.by."Claude:".appea
3780 72 20 69 6e 20 67 70 74 65 6c 27 73 20 6d 65 6e 75 2e 0a 0a 53 65 65 20 62 65 6c 6f 77 20 66 6f r.in.gptel's.menu...See.below.fo
37a0 72 20 64 65 74 61 69 6c 73 20 6f 6e 20 79 6f 75 72 20 70 72 65 66 65 72 72 65 64 20 4c 4c 4d 20 r.details.on.your.preferred.LLM.
37c0 70 72 6f 76 69 64 65 72 2c 20 69 6e 63 6c 75 64 69 6e 67 20 6c 6f 63 61 6c 20 4c 4c 4d 73 2e 0a provider,.including.local.LLMs..
37e0 0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 74 61 69 6c 73 3e 3c 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a .#+html:.<details><summary>.****
3800 20 28 4f 70 74 69 6f 6e 61 6c 29 20 53 65 63 75 72 69 6e 67 20 41 50 49 20 6b 65 79 73 20 77 69 .(Optional).Securing.API.keys.wi
3820 74 68 20 3d 61 75 74 68 69 6e 66 6f 3d 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e th.=authinfo=.#+html:.</summary>
3840 0a 0a 59 6f 75 20 63 61 6e 20 75 73 65 20 45 6d 61 63 73 27 20 62 75 69 6c 74 2d 69 6e 20 73 75 ..You.can.use.Emacs'.built-in.su
3860 70 70 6f 72 74 20 66 6f 72 20 3d 61 75 74 68 69 6e 66 6f 3d 20 74 6f 20 73 74 6f 72 65 20 41 50 pport.for.=authinfo=.to.store.AP
3880 49 20 6b 65 79 73 20 72 65 71 75 69 72 65 64 20 62 79 20 67 70 74 65 6c 2e 20 20 41 64 64 20 79 I.keys.required.by.gptel...Add.y
38a0 6f 75 72 20 41 50 49 20 6b 65 79 73 20 74 6f 20 3d 7e 2f 2e 61 75 74 68 69 6e 66 6f 3d 2c 20 61 our.API.keys.to.=~/.authinfo=,.a
38c0 6e 64 20 6c 65 61 76 65 20 3d 67 70 74 65 6c 2d 61 70 69 2d 6b 65 79 3d 20 73 65 74 20 74 6f 20 nd.leave.=gptel-api-key=.set.to.
38e0 69 74 73 20 64 65 66 61 75 6c 74 2e 20 20 42 79 20 64 65 66 61 75 6c 74 2c 20 74 68 65 20 41 50 its.default...By.default,.the.AP
3900 49 20 65 6e 64 70 6f 69 6e 74 20 44 4e 53 20 6e 61 6d 65 20 28 65 2e 67 2e 20 22 61 70 69 2e 6f I.endpoint.DNS.name.(e.g.."api.o
3920 70 65 6e 61 69 2e 63 6f 6d 22 29 20 69 73 20 75 73 65 64 20 61 73 20 48 4f 53 54 20 61 6e 64 20 penai.com").is.used.as.HOST.and.
3940 22 61 70 69 6b 65 79 22 20 61 73 20 55 53 45 52 2e 0a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 61 "apikey".as.USER...#+begin_src.a
3960 75 74 68 69 6e 66 6f 0a 6d 61 63 68 69 6e 65 20 61 70 69 2e 6f 70 65 6e 61 69 2e 63 6f 6d 20 6c uthinfo.machine.api.openai.com.l
3980 6f 67 69 6e 20 61 70 69 6b 65 79 20 70 61 73 73 77 6f 72 64 20 73 6b 2d 73 65 63 72 65 74 2d 6f ogin.apikey.password.sk-secret-o
39a0 70 65 6e 61 69 2d 61 70 69 2d 6b 65 79 2d 67 6f 65 73 2d 68 65 72 65 0a 6d 61 63 68 69 6e 65 20 penai-api-key-goes-here.machine.
39c0 61 70 69 2e 61 6e 74 68 72 6f 70 69 63 2e 63 6f 6d 20 6c 6f 67 69 6e 20 61 70 69 6b 65 79 20 70 api.anthropic.com.login.apikey.p
39e0 61 73 73 77 6f 72 64 20 73 6b 2d 73 65 63 72 65 74 2d 61 6e 74 68 72 6f 70 69 63 2d 61 70 69 2d assword.sk-secret-anthropic-api-
3a00 6b 65 79 2d 67 6f 65 73 2d 68 65 72 65 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 23 2b 68 74 6d 6c 3a key-goes-here.#+end_src..#+html:
3a20 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 74 61 69 6c 73 3e 3c 73 75 .</details>.#+html:.<details><su
3a40 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 41 7a 75 72 65 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d mmary>.****.Azure.#+html:.</summ
3a60 61 72 79 3e 0a 0a 52 65 67 69 73 74 65 72 20 61 20 62 61 63 6b 65 6e 64 20 77 69 74 68 0a 0a 23 ary>..Register.a.backend.with..#
3a80 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 28 67 70 74 65 6c 2d 6d 61 6b +begin_src.emacs-lisp.(gptel-mak
3aa0 65 2d 61 7a 75 72 65 20 22 41 7a 75 72 65 2d 31 22 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 4e e-azure."Azure-1".............;N
3ac0 61 6d 65 2c 20 77 68 61 74 65 76 65 72 20 79 6f 75 27 64 20 6c 69 6b 65 0a 20 20 3a 70 72 6f 74 ame,.whatever.you'd.like...:prot
3ae0 6f 63 6f 6c 20 22 68 74 74 70 73 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ocol."https"....................
3b00 20 3b 4f 70 74 69 6f 6e 61 6c 20 2d 2d 20 68 74 74 70 73 20 69 73 20 74 68 65 20 64 65 66 61 75 .;Optional.--.https.is.the.defau
3b20 6c 74 0a 20 20 3a 68 6f 73 74 20 22 59 4f 55 52 5f 52 45 53 4f 55 52 43 45 5f 4e 41 4d 45 2e 6f lt...:host."YOUR_RESOURCE_NAME.o
3b40 70 65 6e 61 69 2e 61 7a 75 72 65 2e 63 6f 6d 22 0a 20 20 3a 65 6e 64 70 6f 69 6e 74 20 22 2f 6f penai.azure.com"...:endpoint."/o
3b60 70 65 6e 61 69 2f 64 65 70 6c 6f 79 6d 65 6e 74 73 2f 59 4f 55 52 5f 44 45 50 4c 4f 59 4d 45 4e penai/deployments/YOUR_DEPLOYMEN
3b80 54 5f 4e 41 4d 45 2f 63 68 61 74 2f 63 6f 6d 70 6c 65 74 69 6f 6e 73 3f 61 70 69 2d 76 65 72 73 T_NAME/chat/completions?api-vers
3ba0 69 6f 6e 3d 32 30 32 33 2d 30 35 2d 31 35 22 20 3b 6f 72 20 65 71 75 69 76 61 6c 65 6e 74 0a 20 ion=2023-05-15".;or.equivalent..
3bc0 20 3a 73 74 72 65 61 6d 20 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .:stream.t......................
3be0 20 20 20 20 20 20 20 3b 45 6e 61 62 6c 65 20 73 74 72 65 61 6d 69 6e 67 20 72 65 73 70 6f 6e 73 .......;Enable.streaming.respons
3c00 65 73 0a 20 20 3a 6b 65 79 20 23 27 67 70 74 65 6c 2d 61 70 69 2d 6b 65 79 0a 20 20 3a 6d 6f 64 es...:key.#'gptel-api-key...:mod
3c20 65 6c 73 20 27 28 67 70 74 2d 33 2e 35 2d 74 75 72 62 6f 20 67 70 74 2d 34 29 29 0a 23 2b 65 6e els.'(gpt-3.5-turbo.gpt-4)).#+en
3c40 64 5f 73 72 63 0a 0a 52 65 66 65 72 20 74 6f 20 74 68 65 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f d_src..Refer.to.the.documentatio
3c60 6e 20 6f 66 20 3d 67 70 74 65 6c 2d 6d 61 6b 65 2d 61 7a 75 72 65 3d 20 74 6f 20 73 65 74 20 6d n.of.=gptel-make-azure=.to.set.m
3c80 6f 72 65 20 70 61 72 61 6d 65 74 65 72 73 2e 0a 0a 59 6f 75 20 63 61 6e 20 70 69 63 6b 20 74 68 ore.parameters...You.can.pick.th
3ca0 69 73 20 62 61 63 6b 65 6e 64 20 66 72 6f 6d 20 74 68 65 20 6d 65 6e 75 20 77 68 65 6e 20 75 73 is.backend.from.the.menu.when.us
3cc0 69 6e 67 20 67 70 74 65 6c 2e 20 28 73 65 65 20 5b 5b 23 75 73 61 67 65 5d 5b 55 73 61 67 65 5d ing.gptel..(see.[[#usage][Usage]
3ce0 5d 29 2e 0a 0a 2a 2a 2a 2a 2a 20 28 4f 70 74 69 6f 6e 61 6c 29 20 53 65 74 20 61 73 20 74 68 65 ])...*****.(Optional).Set.as.the
3d00 20 64 65 66 61 75 6c 74 20 67 70 74 65 6c 20 62 61 63 6b 65 6e 64 0a 0a 54 68 65 20 61 62 6f 76 .default.gptel.backend..The.abov
3d20 65 20 63 6f 64 65 20 6d 61 6b 65 73 20 74 68 65 20 62 61 63 6b 65 6e 64 20 61 76 61 69 6c 61 62 e.code.makes.the.backend.availab
3d40 6c 65 20 74 6f 20 73 65 6c 65 63 74 2e 20 20 49 66 20 79 6f 75 20 77 61 6e 74 20 69 74 20 74 6f le.to.select...If.you.want.it.to
3d60 20 62 65 20 74 68 65 20 64 65 66 61 75 6c 74 20 62 61 63 6b 65 6e 64 20 66 6f 72 20 67 70 74 65 .be.the.default.backend.for.gpte
3d80 6c 2c 20 79 6f 75 20 63 61 6e 20 73 65 74 20 74 68 69 73 20 61 73 20 74 68 65 20 76 61 6c 75 65 l,.you.can.set.this.as.the.value
3da0 20 6f 66 20 3d 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 3d 2e 20 20 55 73 65 20 74 68 69 73 20 69 .of.=gptel-backend=...Use.this.i
3dc0 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20 61 62 6f 76 65 2e 0a 0a 23 2b 62 65 67 69 6e 5f 73 72 nstead.of.the.above...#+begin_sr
3de0 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 3b 3b 20 4f 50 54 49 4f 4e 41 4c 20 63 6f 6e 66 69 67 75 c.emacs-lisp.;;.OPTIONAL.configu
3e00 72 61 74 69 6f 6e 0a 28 73 65 74 71 0a 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 20 27 67 70 74 2d 33 ration.(setq..gptel-model.'gpt-3
3e20 2e 35 2d 74 75 72 62 6f 0a 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 28 67 70 74 65 6c 2d 6d .5-turbo..gptel-backend.(gptel-m
3e40 61 6b 65 2d 61 7a 75 72 65 20 22 41 7a 75 72 65 2d 31 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 ake-azure."Azure-1".............
3e60 20 20 20 20 20 3a 70 72 6f 74 6f 63 6f 6c 20 22 68 74 74 70 73 22 0a 20 20 20 20 20 20 20 20 20 .....:protocol."https"..........
3e80 20 20 20 20 20 20 20 20 3a 68 6f 73 74 20 22 59 4f 55 52 5f 52 45 53 4f 55 52 43 45 5f 4e 41 4d ........:host."YOUR_RESOURCE_NAM
3ea0 45 2e 6f 70 65 6e 61 69 2e 61 7a 75 72 65 2e 63 6f 6d 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 E.openai.azure.com".............
3ec0 20 20 20 20 20 3a 65 6e 64 70 6f 69 6e 74 20 22 2f 6f 70 65 6e 61 69 2f 64 65 70 6c 6f 79 6d 65 .....:endpoint."/openai/deployme
3ee0 6e 74 73 2f 59 4f 55 52 5f 44 45 50 4c 4f 59 4d 45 4e 54 5f 4e 41 4d 45 2f 63 68 61 74 2f 63 6f nts/YOUR_DEPLOYMENT_NAME/chat/co
3f00 6d 70 6c 65 74 69 6f 6e 73 3f 61 70 69 2d 76 65 72 73 69 6f 6e 3d 32 30 32 33 2d 30 35 2d 31 35 mpletions?api-version=2023-05-15
3f20 22 0a 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 74 0a 20 20 20 "..................:stream.t....
3f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6b 65 79 20 23 27 67 70 74 65 6c 2d 61 70 69 2d 6b ..............:key.#'gptel-api-k
3f60 65 79 0a 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 27 28 67 70 ey..................:models.'(gp
3f80 74 2d 33 2e 35 2d 74 75 72 62 6f 20 67 70 74 2d 34 29 29 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a t-3.5-turbo.gpt-4))).#+end_src..
3fa0 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 74 61 #+html:.</details>.#+html:.<deta
3fc0 69 6c 73 3e 3c 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 47 50 54 34 41 6c 6c 0a 23 2b 68 74 6d ils><summary>.****.GPT4All.#+htm
3fe0 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a 52 65 67 69 73 74 65 72 20 61 20 62 61 63 6b 65 6e l:.</summary>..Register.a.backen
4000 64 20 77 69 74 68 0a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 28 d.with..#+begin_src.emacs-lisp.(
4020 67 70 74 65 6c 2d 6d 61 6b 65 2d 67 70 74 34 61 6c 6c 20 22 47 50 54 34 41 6c 6c 22 20 20 20 20 gptel-make-gpt4all."GPT4All"....
4040 20 20 20 20 20 20 20 3b 4e 61 6d 65 20 6f 66 20 79 6f 75 72 20 63 68 6f 6f 73 69 6e 67 0a 20 3a .......;Name.of.your.choosing..:
4060 70 72 6f 74 6f 63 6f 6c 20 22 68 74 74 70 22 0a 20 3a 68 6f 73 74 20 22 6c 6f 63 61 6c 68 6f 73 protocol."http"..:host."localhos
4080 74 3a 34 38 39 31 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 57 68 65 72 65 20 69 t:4891".................;Where.i
40a0 74 27 73 20 72 75 6e 6e 69 6e 67 0a 20 3a 6d 6f 64 65 6c 73 20 27 28 6d 69 73 74 72 61 6c 2d 37 t's.running..:models.'(mistral-7
40c0 62 2d 6f 70 65 6e 6f 72 63 61 2e 51 34 5f 30 2e 67 67 75 66 29 29 20 3b 41 76 61 69 6c 61 62 6c b-openorca.Q4_0.gguf)).;Availabl
40e0 65 20 6d 6f 64 65 6c 73 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 54 68 65 73 65 20 61 72 65 20 74 68 e.models.#+end_src..These.are.th
4100 65 20 72 65 71 75 69 72 65 64 20 70 61 72 61 6d 65 74 65 72 73 2c 20 72 65 66 65 72 20 74 6f 20 e.required.parameters,.refer.to.
4120 74 68 65 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 3d 67 70 74 65 6c 2d 6d 61 6b 65 the.documentation.of.=gptel-make
4140 2d 67 70 74 34 61 6c 6c 3d 20 66 6f 72 20 6d 6f 72 65 2e 0a 0a 59 6f 75 20 63 61 6e 20 70 69 63 -gpt4all=.for.more...You.can.pic
4160 6b 20 74 68 69 73 20 62 61 63 6b 65 6e 64 20 66 72 6f 6d 20 74 68 65 20 6d 65 6e 75 20 77 68 65 k.this.backend.from.the.menu.whe
4180 6e 20 75 73 69 6e 67 20 67 70 74 65 6c 20 28 73 65 65 20 5b 5b 23 75 73 61 67 65 5d 5b 55 73 61 n.using.gptel.(see.[[#usage][Usa
41a0 67 65 5d 5d 29 2e 0a 0a 2a 2a 2a 2a 2a 20 28 4f 70 74 69 6f 6e 61 6c 29 20 53 65 74 20 61 73 20 ge]])...*****.(Optional).Set.as.
41c0 74 68 65 20 64 65 66 61 75 6c 74 20 67 70 74 65 6c 20 62 61 63 6b 65 6e 64 0a 0a 54 68 65 20 61 the.default.gptel.backend..The.a
41e0 62 6f 76 65 20 63 6f 64 65 20 6d 61 6b 65 73 20 74 68 65 20 62 61 63 6b 65 6e 64 20 61 76 61 69 bove.code.makes.the.backend.avai
4200 6c 61 62 6c 65 20 74 6f 20 73 65 6c 65 63 74 2e 20 20 49 66 20 79 6f 75 20 77 61 6e 74 20 69 74 lable.to.select...If.you.want.it
4220 20 74 6f 20 62 65 20 74 68 65 20 64 65 66 61 75 6c 74 20 62 61 63 6b 65 6e 64 20 66 6f 72 20 67 .to.be.the.default.backend.for.g
4240 70 74 65 6c 2c 20 79 6f 75 20 63 61 6e 20 73 65 74 20 74 68 69 73 20 61 73 20 74 68 65 20 76 61 ptel,.you.can.set.this.as.the.va
4260 6c 75 65 20 6f 66 20 3d 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 3d 2e 20 20 55 73 65 20 74 68 69 lue.of.=gptel-backend=...Use.thi
4280 73 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20 61 62 6f 76 65 2e 20 20 41 64 64 69 74 69 6f s.instead.of.the.above...Additio
42a0 6e 61 6c 6c 79 20 79 6f 75 20 6d 61 79 20 77 61 6e 74 20 74 6f 20 69 6e 63 72 65 61 73 65 20 74 nally.you.may.want.to.increase.t
42c0 68 65 20 72 65 73 70 6f 6e 73 65 20 74 6f 6b 65 6e 20 73 69 7a 65 20 73 69 6e 63 65 20 47 50 54 he.response.token.size.since.GPT
42e0 34 41 6c 6c 20 75 73 65 73 20 76 65 72 79 20 73 68 6f 72 74 20 28 6f 66 74 65 6e 20 74 72 75 6e 4All.uses.very.short.(often.trun
4300 63 61 74 65 64 29 20 72 65 73 70 6f 6e 73 65 73 20 62 79 20 64 65 66 61 75 6c 74 2e 0a 0a 23 2b cated).responses.by.default...#+
4320 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 3b 3b 20 4f 50 54 49 4f 4e 41 4c begin_src.emacs-lisp.;;.OPTIONAL
4340 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0a 28 73 65 74 71 0a 20 67 70 74 65 6c 2d 6d 61 78 2d .configuration.(setq..gptel-max-
4360 74 6f 6b 65 6e 73 20 35 30 30 0a 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 20 27 6d 69 73 74 72 61 6c tokens.500..gptel-model.'mistral
4380 2d 37 62 2d 6f 70 65 6e 6f 72 63 61 2e 51 34 5f 30 2e 67 67 75 66 0a 20 67 70 74 65 6c 2d 62 61 -7b-openorca.Q4_0.gguf..gptel-ba
43a0 63 6b 65 6e 64 20 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 67 70 74 34 61 6c 6c 20 22 47 50 54 34 41 ckend.(gptel-make-gpt4all."GPT4A
43c0 6c 6c 22 0a 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 22 ll"..................:protocol."
43e0 68 74 74 70 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 68 6f 73 74 20 22 6c 6f http"..................:host."lo
4400 63 61 6c 68 6f 73 74 3a 34 38 39 31 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a calhost:4891"..................:
4420 6d 6f 64 65 6c 73 20 27 28 6d 69 73 74 72 61 6c 2d 37 62 2d 6f 70 65 6e 6f 72 63 61 2e 51 34 5f models.'(mistral-7b-openorca.Q4_
4440 30 2e 67 67 75 66 29 29 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 0.gguf))).#+end_src..#+html:.</d
4460 65 74 61 69 6c 73 3e 0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 74 61 69 6c 73 3e 3c 73 75 6d 6d 61 72 etails>.#+html:.<details><summar
4480 79 3e 0a 2a 2a 2a 2a 20 4f 6c 6c 61 6d 61 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 y>.****.Ollama.#+html:.</summary
44a0 3e 0a 0a 52 65 67 69 73 74 65 72 20 61 20 62 61 63 6b 65 6e 64 20 77 69 74 68 0a 23 2b 62 65 67 >..Register.a.backend.with.#+beg
44c0 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 6c in_src.emacs-lisp.(gptel-make-ol
44e0 6c 61 6d 61 20 22 4f 6c 6c 61 6d 61 22 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 41 6e 79 20 6e lama."Ollama".............;Any.n
4500 61 6d 65 20 6f 66 20 79 6f 75 72 20 63 68 6f 6f 73 69 6e 67 0a 20 20 3a 68 6f 73 74 20 22 6c 6f ame.of.your.choosing...:host."lo
4520 63 61 6c 68 6f 73 74 3a 31 31 34 33 34 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 57 68 calhost:11434"...............;Wh
4540 65 72 65 20 69 74 27 73 20 72 75 6e 6e 69 6e 67 0a 20 20 3a 73 74 72 65 61 6d 20 74 20 20 20 20 ere.it's.running...:stream.t....
4560 20 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 53 74 72 65 61 6d .........................;Stream
4580 20 72 65 73 70 6f 6e 73 65 73 0a 20 20 3a 6d 6f 64 65 6c 73 20 27 28 6d 69 73 74 72 61 6c 3a 6c .responses...:models.'(mistral:l
45a0 61 74 65 73 74 29 29 20 20 20 20 20 20 20 20 20 20 3b 4c 69 73 74 20 6f 66 20 6d 6f 64 65 6c 73 atest))..........;List.of.models
45c0 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 54 68 65 73 65 20 61 72 65 20 74 68 65 20 72 65 71 75 69 72 .#+end_src..These.are.the.requir
45e0 65 64 20 70 61 72 61 6d 65 74 65 72 73 2c 20 72 65 66 65 72 20 74 6f 20 74 68 65 20 64 6f 63 75 ed.parameters,.refer.to.the.docu
4600 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 3d 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 6c 6c 61 6d 61 3d mentation.of.=gptel-make-ollama=
4620 20 66 6f 72 20 6d 6f 72 65 2e 0a 0a 59 6f 75 20 63 61 6e 20 70 69 63 6b 20 74 68 69 73 20 62 61 .for.more...You.can.pick.this.ba
4640 63 6b 65 6e 64 20 66 72 6f 6d 20 74 68 65 20 6d 65 6e 75 20 77 68 65 6e 20 75 73 69 6e 67 20 67 ckend.from.the.menu.when.using.g
4660 70 74 65 6c 20 28 73 65 65 20 5b 5b 23 75 73 61 67 65 5d 5b 55 73 61 67 65 5d 5d 29 0a 0a 2a 2a ptel.(see.[[#usage][Usage]])..**
4680 2a 2a 2a 20 28 4f 70 74 69 6f 6e 61 6c 29 20 53 65 74 20 61 73 20 74 68 65 20 64 65 66 61 75 6c ***.(Optional).Set.as.the.defaul
46a0 74 20 67 70 74 65 6c 20 62 61 63 6b 65 6e 64 0a 0a 54 68 65 20 61 62 6f 76 65 20 63 6f 64 65 20 t.gptel.backend..The.above.code.
46c0 6d 61 6b 65 73 20 74 68 65 20 62 61 63 6b 65 6e 64 20 61 76 61 69 6c 61 62 6c 65 20 74 6f 20 73 makes.the.backend.available.to.s
46e0 65 6c 65 63 74 2e 20 20 49 66 20 79 6f 75 20 77 61 6e 74 20 69 74 20 74 6f 20 62 65 20 74 68 65 elect...If.you.want.it.to.be.the
4700 20 64 65 66 61 75 6c 74 20 62 61 63 6b 65 6e 64 20 66 6f 72 20 67 70 74 65 6c 2c 20 79 6f 75 20 .default.backend.for.gptel,.you.
4720 63 61 6e 20 73 65 74 20 74 68 69 73 20 61 73 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 3d 67 70 can.set.this.as.the.value.of.=gp
4740 74 65 6c 2d 62 61 63 6b 65 6e 64 3d 2e 20 20 55 73 65 20 74 68 69 73 20 69 6e 73 74 65 61 64 20 tel-backend=...Use.this.instead.
4760 6f 66 20 74 68 65 20 61 62 6f 76 65 2e 0a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 of.the.above...#+begin_src.emacs
4780 2d 6c 69 73 70 0a 3b 3b 20 4f 50 54 49 4f 4e 41 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0a -lisp.;;.OPTIONAL.configuration.
47a0 28 73 65 74 71 0a 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 20 27 6d 69 73 74 72 61 6c 3a 6c 61 74 65 (setq..gptel-model.'mistral:late
47c0 73 74 0a 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 6c st..gptel-backend.(gptel-make-ol
47e0 6c 61 6d 61 20 22 4f 6c 6c 61 6d 61 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a lama."Ollama"..................:
4800 68 6f 73 74 20 22 6c 6f 63 61 6c 68 6f 73 74 3a 31 31 34 33 34 22 0a 20 20 20 20 20 20 20 20 20 host."localhost:11434"..........
4820 20 20 20 20 20 20 20 20 3a 73 74 72 65 61 6d 20 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ........:stream.t...............
4840 20 20 20 3a 6d 6f 64 65 6c 73 20 27 28 6d 69 73 74 72 61 6c 3a 6c 61 74 65 73 74 29 29 29 0a 23 ...:models.'(mistral:latest))).#
4860 2b 65 6e 64 5f 73 72 63 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 0a 23 2b +end_src..#+html:.</details>..#+
4880 68 74 6d 6c 3a 20 3c 64 65 74 61 69 6c 73 3e 3c 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 4f 70 html:.<details><summary>.****.Op
48a0 65 6e 20 57 65 62 55 49 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a 5b 5b 68 en.WebUI.#+html:.</summary>..[[h
48c0 74 74 70 73 3a 2f 2f 6f 70 65 6e 77 65 62 75 69 2e 63 6f 6d 2f 5d 5b 4f 70 65 6e 20 57 65 62 55 ttps://openwebui.com/][Open.WebU
48e0 49 5d 5d 20 69 73 20 61 6e 20 6f 70 65 6e 20 73 6f 75 72 63 65 2c 20 73 65 6c 66 2d 68 6f 73 74 I]].is.an.open.source,.self-host
4900 65 64 20 73 79 73 74 65 6d 20 77 68 69 63 68 20 70 72 6f 76 69 64 65 73 20 61 20 6d 75 6c 74 69 ed.system.which.provides.a.multi
4920 2d 75 73 65 72 20 77 65 62 20 63 68 61 74 20 69 6e 74 65 72 66 61 63 65 20 61 6e 64 20 61 6e 20 -user.web.chat.interface.and.an.
4940 41 50 49 20 65 6e 64 70 6f 69 6e 74 20 66 6f 72 20 61 63 63 65 73 73 69 6e 67 20 4c 4c 4d 73 2c API.endpoint.for.accessing.LLMs,
4960 20 65 73 70 65 63 69 61 6c 6c 79 20 4c 4c 4d 73 20 72 75 6e 6e 69 6e 67 20 6c 6f 63 61 6c 6c 79 .especially.LLMs.running.locally
4980 20 6f 6e 20 69 6e 66 65 72 65 6e 63 65 20 73 65 72 76 65 72 73 20 6c 69 6b 65 20 4f 6c 6c 61 6d .on.inference.servers.like.Ollam
49a0 61 2e 0a 0a 42 65 63 61 75 73 65 20 69 74 20 70 72 65 73 65 6e 74 73 20 61 6e 20 4f 70 65 6e 41 a...Because.it.presents.an.OpenA
49c0 49 2d 63 6f 6d 70 61 74 69 62 6c 65 20 65 6e 64 70 6f 69 6e 74 2c 20 79 6f 75 20 75 73 65 20 7e I-compatible.endpoint,.you.use.~
49e0 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 7e 20 74 6f 20 72 65 67 69 73 74 65 72 20 69 gptel-make-openai~.to.register.i
4a00 74 20 61 73 20 61 20 62 61 63 6b 65 6e 64 2e 0a 0a 46 6f 72 20 69 6e 73 74 61 6e 63 65 2c 20 79 t.as.a.backend...For.instance,.y
4a20 6f 75 20 63 61 6e 20 75 73 65 20 74 68 69 73 20 66 6f 72 6d 20 74 6f 20 72 65 67 69 73 74 65 72 ou.can.use.this.form.to.register
4a40 20 61 20 62 61 63 6b 65 6e 64 20 66 6f 72 20 61 20 6c 6f 63 61 6c 20 69 6e 73 74 61 6e 63 65 20 .a.backend.for.a.local.instance.
4a60 6f 66 20 4f 70 65 6e 20 57 65 62 20 55 49 20 73 65 72 76 65 64 20 76 69 61 20 68 74 74 70 20 6f of.Open.Web.UI.served.via.http.o
4a80 6e 20 70 6f 72 74 20 33 30 30 30 3a 0a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d n.port.3000:..#+begin_src.emacs-
4aa0 6c 69 73 70 0a 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 20 22 4f 70 65 6e 57 65 62 lisp.(gptel-make-openai."OpenWeb
4ac0 55 49 22 0a 20 20 3a 68 6f 73 74 20 22 6c 6f 63 61 6c 68 6f 73 74 3a 33 30 30 30 22 0a 20 20 3a UI"...:host."localhost:3000"...:
4ae0 70 72 6f 74 6f 63 6f 6c 20 22 68 74 74 70 22 0a 20 20 3a 6b 65 79 20 22 4b 45 59 5f 46 4f 52 5f protocol."http"...:key."KEY_FOR_
4b00 41 43 43 45 53 53 49 4e 47 5f 4f 50 45 4e 57 45 42 55 49 22 0a 20 20 3a 65 6e 64 70 6f 69 6e 74 ACCESSING_OPENWEBUI"...:endpoint
4b20 20 22 2f 61 70 69 2f 63 68 61 74 2f 63 6f 6d 70 6c 65 74 69 6f 6e 73 22 0a 20 20 3a 73 74 72 65 ."/api/chat/completions"...:stre
4b40 61 6d 20 74 0a 20 20 3a 6d 6f 64 65 6c 73 20 27 28 22 67 65 6d 6d 61 33 6e 3a 6c 61 74 65 73 74 am.t...:models.'("gemma3n:latest
4b60 22 29 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 4f 72 20 69 66 20 79 6f 75 20 61 72 65 20 72 75 6e ")).#+end_src..Or.if.you.are.run
4b80 6e 69 6e 67 20 4f 70 65 6e 20 57 65 62 20 55 49 20 6f 6e 20 61 6e 6f 74 68 65 72 20 68 6f 73 74 ning.Open.Web.UI.on.another.host
4ba0 20 6f 6e 20 79 6f 75 72 20 6c 6f 63 61 6c 20 6e 65 74 77 6f 72 6b 20 28 7e 62 6f 78 2e 6c 6f 63 .on.your.local.network.(~box.loc
4bc0 61 6c 7e 29 2c 20 73 65 72 76 69 6e 67 20 76 69 61 20 68 74 74 70 73 20 77 69 74 68 20 73 65 6c al~),.serving.via.https.with.sel
4be0 66 2d 73 69 67 6e 65 64 20 63 65 72 74 69 66 69 63 61 74 65 73 2c 20 74 68 69 73 20 77 69 6c 6c f-signed.certificates,.this.will
4c00 20 77 6f 72 6b 3a 0a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 28 .work:..#+begin_src.emacs-lisp.(
4c20 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 20 22 4f 70 65 6e 57 65 62 55 49 22 0a 20 20 gptel-make-openai."OpenWebUI"...
4c40 3a 68 6f 73 74 20 22 62 6f 78 2e 6c 6f 63 61 6c 22 0a 20 20 3a 63 75 72 6c 2d 61 72 67 73 20 27 :host."box.local"...:curl-args.'
4c60 28 22 2d 2d 69 6e 73 65 63 75 72 65 22 29 20 3b 20 6e 65 65 64 65 64 20 66 6f 72 20 73 65 6c 66 ("--insecure").;.needed.for.self
4c80 2d 73 69 67 6e 65 64 20 63 65 72 74 73 0a 20 20 3a 6b 65 79 20 22 4b 45 59 5f 46 4f 52 5f 41 43 -signed.certs...:key."KEY_FOR_AC
4ca0 43 45 53 53 49 4e 47 5f 4f 50 45 4e 57 45 42 55 49 22 0a 20 20 3a 65 6e 64 70 6f 69 6e 74 20 22 CESSING_OPENWEBUI"...:endpoint."
4cc0 2f 61 70 69 2f 63 68 61 74 2f 63 6f 6d 70 6c 65 74 69 6f 6e 73 22 0a 20 20 3a 73 74 72 65 61 6d /api/chat/completions"...:stream
4ce0 20 74 0a 20 20 3a 6d 6f 64 65 6c 73 20 27 28 22 67 65 6d 6d 61 33 6e 3a 6c 61 74 65 73 74 22 29 .t...:models.'("gemma3n:latest")
4d00 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 54 6f 20 66 69 6e 64 20 79 6f 75 72 20 41 50 49 20 6b 65 ).#+end_src..To.find.your.API.ke
4d20 79 20 69 6e 20 4f 70 65 6e 20 57 65 62 55 49 2c 20 63 6c 69 63 6b 20 74 68 65 20 75 73 65 72 20 y.in.Open.WebUI,.click.the.user.
4d40 6e 61 6d 65 20 69 6e 20 74 68 65 20 62 6f 74 74 6f 6d 20 6c 65 66 74 2c 20 53 65 74 74 69 6e 67 name.in.the.bottom.left,.Setting
4d60 73 2c 20 41 63 63 6f 75 6e 74 2c 20 61 6e 64 20 74 68 65 6e 20 53 68 6f 77 20 62 79 20 41 50 49 s,.Account,.and.then.Show.by.API
4d80 20 4b 65 79 73 20 73 65 63 74 69 6f 6e 2e 0a 0a 52 65 66 65 72 20 74 6f 20 74 68 65 20 64 6f 63 .Keys.section...Refer.to.the.doc
4da0 75 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 3d 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 umentation.of.=gptel-make-openai
4dc0 3d 20 66 6f 72 20 6d 6f 72 65 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 73 =.for.more.configuration.options
4de0 2e 0a 0a 59 6f 75 20 63 61 6e 20 70 69 63 6b 20 74 68 69 73 20 62 61 63 6b 65 6e 64 20 66 72 6f ...You.can.pick.this.backend.fro
4e00 6d 20 74 68 65 20 6d 65 6e 75 20 77 68 65 6e 20 75 73 69 6e 67 20 67 70 74 65 6c 20 28 73 65 65 m.the.menu.when.using.gptel.(see
4e20 20 5b 5b 23 75 73 61 67 65 5d 5b 55 73 61 67 65 5d 5d 29 0a 0a 2a 2a 2a 2a 2a 20 28 4f 70 74 69 .[[#usage][Usage]])..*****.(Opti
4e40 6f 6e 61 6c 29 20 53 65 74 20 61 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 67 70 74 65 6c 20 62 onal).Set.as.the.default.gptel.b
4e60 61 63 6b 65 6e 64 0a 0a 54 68 65 20 61 62 6f 76 65 20 63 6f 64 65 20 6d 61 6b 65 73 20 74 68 65 ackend..The.above.code.makes.the
4e80 20 62 61 63 6b 65 6e 64 20 61 76 61 69 6c 61 62 6c 65 20 74 6f 20 73 65 6c 65 63 74 2e 20 20 49 .backend.available.to.select...I
4ea0 66 20 79 6f 75 20 77 61 6e 74 20 69 74 20 74 6f 20 62 65 20 74 68 65 20 64 65 66 61 75 6c 74 20 f.you.want.it.to.be.the.default.
4ec0 62 61 63 6b 65 6e 64 20 66 6f 72 20 67 70 74 65 6c 2c 20 79 6f 75 20 63 61 6e 20 73 65 74 20 74 backend.for.gptel,.you.can.set.t
4ee0 68 69 73 20 61 73 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 3d 67 70 74 65 6c 2d 62 61 63 6b 65 his.as.the.value.of.=gptel-backe
4f00 6e 64 3d 2e 20 20 55 73 65 20 74 68 69 73 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20 61 62 nd=...Use.this.instead.of.the.ab
4f20 6f 76 65 2e 0a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 3b 3b 20 ove...#+begin_src.emacs-lisp.;;.
4f40 4f 50 54 49 4f 4e 41 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0a 28 73 65 74 71 0a 20 67 70 OPTIONAL.configuration.(setq..gp
4f60 74 65 6c 2d 6d 6f 64 65 6c 20 22 67 65 6d 6d 61 33 6e 3a 6c 61 74 65 73 74 22 0a 20 67 70 74 65 tel-model."gemma3n:latest"..gpte
4f80 6c 2d 62 61 63 6b 65 6e 64 20 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 20 22 4f 70 l-backend.(gptel-make-openai."Op
4fa0 65 6e 57 65 62 55 49 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 68 6f 73 74 20 enWebUI"..................:host.
4fc0 22 6c 6f 63 61 6c 68 6f 73 74 3a 33 30 30 30 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 "localhost:3000"................
4fe0 20 20 3a 70 72 6f 74 6f 63 6f 6c 20 22 68 74 74 70 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ..:protocol."http"..............
5000 20 20 20 20 3a 6b 65 79 20 22 4b 45 59 5f 46 4f 52 5f 41 43 43 45 53 53 49 4e 47 5f 4f 50 45 4e ....:key."KEY_FOR_ACCESSING_OPEN
5020 57 45 42 55 49 22 0a 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 WEBUI"..................:endpoin
5040 74 20 22 2f 61 70 69 2f 63 68 61 74 2f 63 6f 6d 70 6c 65 74 69 6f 6e 73 22 0a 20 20 20 20 20 20 t."/api/chat/completions".......
5060 20 20 20 20 20 20 20 20 20 20 20 3a 73 74 72 65 61 6d 20 74 0a 20 20 20 20 20 20 20 20 20 20 20 ...........:stream.t............
5080 20 20 20 20 20 20 3a 6d 6f 64 65 6c 73 20 27 28 22 67 65 6d 6d 61 33 6e 3a 6c 61 74 65 73 74 22 ......:models.'("gemma3n:latest"
50a0 29 29 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 ))).#+end_src..#+html:.</details
50c0 3e 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 74 61 69 6c 73 3e 3c 73 75 6d 6d 61 72 79 3e 0a 2a 2a >..#+html:.<details><summary>.**
50e0 2a 2a 20 47 65 6d 69 6e 69 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a 52 65 **.Gemini.#+html:.</summary>..Re
5100 67 69 73 74 65 72 20 61 20 62 61 63 6b 65 6e 64 20 77 69 74 68 0a 0a 23 2b 62 65 67 69 6e 5f 73 gister.a.backend.with..#+begin_s
5120 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 3b 3b 20 3a 6b 65 79 20 63 61 6e 20 62 65 20 61 20 66 rc.emacs-lisp.;;.:key.can.be.a.f
5140 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 41 50 49 20 6b 65 79 unction.that.returns.the.API.key
5160 2e 0a 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 67 65 6d 69 6e 69 20 22 47 65 6d 69 6e 69 22 20 3a 6b ..(gptel-make-gemini."Gemini".:k
5180 65 79 20 22 59 4f 55 52 5f 47 45 4d 49 4e 49 5f 41 50 49 5f 4b 45 59 22 20 3a 73 74 72 65 61 6d ey."YOUR_GEMINI_API_KEY".:stream
51a0 20 74 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 54 68 65 73 65 20 61 72 65 20 74 68 65 20 72 65 71 .t).#+end_src..These.are.the.req
51c0 75 69 72 65 64 20 70 61 72 61 6d 65 74 65 72 73 2c 20 72 65 66 65 72 20 74 6f 20 74 68 65 20 64 uired.parameters,.refer.to.the.d
51e0 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 3d 67 70 74 65 6c 2d 6d 61 6b 65 2d 67 65 6d 69 ocumentation.of.=gptel-make-gemi
5200 6e 69 3d 20 66 6f 72 20 6d 6f 72 65 2e 0a 0a 59 6f 75 20 63 61 6e 20 70 69 63 6b 20 74 68 69 73 ni=.for.more...You.can.pick.this
5220 20 62 61 63 6b 65 6e 64 20 66 72 6f 6d 20 74 68 65 20 6d 65 6e 75 20 77 68 65 6e 20 75 73 69 6e .backend.from.the.menu.when.usin
5240 67 20 67 70 74 65 6c 20 28 73 65 65 20 5b 5b 23 75 73 61 67 65 5d 5b 55 73 61 67 65 5d 5d 29 0a g.gptel.(see.[[#usage][Usage]]).
5260 0a 2a 2a 2a 2a 2a 20 28 4f 70 74 69 6f 6e 61 6c 29 20 53 65 74 20 61 73 20 74 68 65 20 64 65 66 .*****.(Optional).Set.as.the.def
5280 61 75 6c 74 20 67 70 74 65 6c 20 62 61 63 6b 65 6e 64 0a 0a 54 68 65 20 61 62 6f 76 65 20 63 6f ault.gptel.backend..The.above.co
52a0 64 65 20 6d 61 6b 65 73 20 74 68 65 20 62 61 63 6b 65 6e 64 20 61 76 61 69 6c 61 62 6c 65 20 74 de.makes.the.backend.available.t
52c0 6f 20 73 65 6c 65 63 74 2e 20 20 49 66 20 79 6f 75 20 77 61 6e 74 20 69 74 20 74 6f 20 62 65 20 o.select...If.you.want.it.to.be.
52e0 74 68 65 20 64 65 66 61 75 6c 74 20 62 61 63 6b 65 6e 64 20 66 6f 72 20 67 70 74 65 6c 2c 20 79 the.default.backend.for.gptel,.y
5300 6f 75 20 63 61 6e 20 73 65 74 20 74 68 69 73 20 61 73 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 ou.can.set.this.as.the.value.of.
5320 3d 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 3d 2e 20 20 55 73 65 20 74 68 69 73 20 69 6e 73 74 65 =gptel-backend=...Use.this.inste
5340 61 64 20 6f 66 20 74 68 65 20 61 62 6f 76 65 2e 0a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d ad.of.the.above...#+begin_src.em
5360 61 63 73 2d 6c 69 73 70 0a 3b 3b 20 4f 50 54 49 4f 4e 41 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 acs-lisp.;;.OPTIONAL.configurati
5380 6f 6e 0a 28 73 65 74 71 0a 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 20 27 67 65 6d 69 6e 69 2d 32 2e on.(setq..gptel-model.'gemini-2.
53a0 35 2d 70 72 6f 2d 65 78 70 2d 30 33 2d 32 35 0a 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 28 5-pro-exp-03-25..gptel-backend.(
53c0 67 70 74 65 6c 2d 6d 61 6b 65 2d 67 65 6d 69 6e 69 20 22 47 65 6d 69 6e 69 22 0a 20 20 20 20 20 gptel-make-gemini."Gemini"......
53e0 20 20 20 20 20 20 20 20 20 20 20 20 3a 6b 65 79 20 22 59 4f 55 52 5f 47 45 4d 49 4e 49 5f 41 50 ............:key."YOUR_GEMINI_AP
5400 49 5f 4b 45 59 22 0a 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 I_KEY"..................:stream.
5420 74 29 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 t)).#+end_src..#+html:.</details
5440 3e 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 74 61 69 6c 73 3e 0a 23 2b 68 74 6d 6c 3a 20 3c 73 75 >..#+html:.<details>.#+html:.<su
5460 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 4c 6c 61 6d 61 2e 63 70 70 20 6f 72 20 4c 6c 61 6d 61 66 69 mmary>.****.Llama.cpp.or.Llamafi
5480 6c 65 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a 28 49 66 20 75 73 69 6e 67 le.#+html:.</summary>..(If.using
54a0 20 61 20 6c 6c 61 6d 61 66 69 6c 65 2c 20 72 75 6e 20 61 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 .a.llamafile,.run.a.[[https://gi
54c0 74 68 75 62 2e 63 6f 6d 2f 4d 6f 7a 69 6c 6c 61 2d 4f 63 68 6f 2f 6c 6c 61 6d 61 66 69 6c 65 23 thub.com/Mozilla-Ocho/llamafile#
54e0 6f 74 68 65 72 2d 65 78 61 6d 70 6c 65 2d 6c 6c 61 6d 61 66 69 6c 65 73 5d 5b 73 65 72 76 65 72 other-example-llamafiles][server
5500 20 6c 6c 61 6d 61 66 69 6c 65 5d 5d 20 69 6e 73 74 65 61 64 20 6f 66 20 61 20 22 63 6f 6d 6d 61 .llamafile]].instead.of.a."comma
5520 6e 64 2d 6c 69 6e 65 20 6c 6c 61 6d 61 66 69 6c 65 22 2c 20 61 6e 64 20 61 20 6d 6f 64 65 6c 20 nd-line.llamafile",.and.a.model.
5540 74 68 61 74 20 73 75 70 70 6f 72 74 73 20 74 65 78 74 20 67 65 6e 65 72 61 74 69 6f 6e 2e 29 0a that.supports.text.generation.).
5560 0a 52 65 67 69 73 74 65 72 20 61 20 62 61 63 6b 65 6e 64 20 77 69 74 68 0a 0a 23 2b 62 65 67 69 .Register.a.backend.with..#+begi
5580 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 3b 3b 20 4c 6c 61 6d 61 2e 63 70 70 20 6f 66 n_src.emacs-lisp.;;.Llama.cpp.of
55a0 66 65 72 73 20 61 6e 20 4f 70 65 6e 41 49 20 63 6f 6d 70 61 74 69 62 6c 65 20 41 50 49 0a 28 67 fers.an.OpenAI.compatible.API.(g
55c0 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 20 22 6c 6c 61 6d 61 2d 63 70 70 22 20 20 20 20 ptel-make-openai."llama-cpp"....
55e0 20 20 20 20 20 20 3b 41 6e 79 20 6e 61 6d 65 0a 20 20 3a 73 74 72 65 61 6d 20 74 20 20 20 20 20 ......;Any.name...:stream.t.....
5600 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 53 74 72 65 61 6d 20 ........................;Stream.
5620 72 65 73 70 6f 6e 73 65 73 0a 20 20 3a 70 72 6f 74 6f 63 6f 6c 20 22 68 74 74 70 22 0a 20 20 3a responses...:protocol."http"...:
5640 68 6f 73 74 20 22 6c 6f 63 61 6c 68 6f 73 74 3a 38 30 30 30 22 20 20 20 20 20 20 20 20 20 20 20 host."localhost:8000"...........
5660 20 20 20 20 20 3b 4c 6c 61 6d 61 2e 63 70 70 20 73 65 72 76 65 72 20 6c 6f 63 61 74 69 6f 6e 0a .....;Llama.cpp.server.location.
5680 20 20 3a 6d 6f 64 65 6c 73 20 27 28 74 65 73 74 29 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..:models.'(test))..............
56a0 20 20 20 20 20 20 3b 41 6e 79 20 6e 61 6d 65 73 2c 20 64 6f 65 73 6e 27 74 20 6d 61 74 74 65 72 ......;Any.names,.doesn't.matter
56c0 20 66 6f 72 20 4c 6c 61 6d 61 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 54 68 65 73 65 20 61 72 65 20 .for.Llama.#+end_src..These.are.
56e0 74 68 65 20 72 65 71 75 69 72 65 64 20 70 61 72 61 6d 65 74 65 72 73 2c 20 72 65 66 65 72 20 74 the.required.parameters,.refer.t
5700 6f 20 74 68 65 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 3d 67 70 74 65 6c 2d 6d 61 o.the.documentation.of.=gptel-ma
5720 6b 65 2d 6f 70 65 6e 61 69 3d 20 66 6f 72 20 6d 6f 72 65 2e 0a 0a 59 6f 75 20 63 61 6e 20 70 69 ke-openai=.for.more...You.can.pi
5740 63 6b 20 74 68 69 73 20 62 61 63 6b 65 6e 64 20 66 72 6f 6d 20 74 68 65 20 6d 65 6e 75 20 77 68 ck.this.backend.from.the.menu.wh
5760 65 6e 20 75 73 69 6e 67 20 67 70 74 65 6c 20 28 73 65 65 20 5b 5b 23 75 73 61 67 65 5d 5b 55 73 en.using.gptel.(see.[[#usage][Us
5780 61 67 65 5d 5d 29 0a 0a 2a 2a 2a 2a 2a 20 28 4f 70 74 69 6f 6e 61 6c 29 20 53 65 74 20 61 73 20 age]])..*****.(Optional).Set.as.
57a0 74 68 65 20 64 65 66 61 75 6c 74 20 67 70 74 65 6c 20 62 61 63 6b 65 6e 64 0a 0a 54 68 65 20 61 the.default.gptel.backend..The.a
57c0 62 6f 76 65 20 63 6f 64 65 20 6d 61 6b 65 73 20 74 68 65 20 62 61 63 6b 65 6e 64 20 61 76 61 69 bove.code.makes.the.backend.avai
57e0 6c 61 62 6c 65 20 74 6f 20 73 65 6c 65 63 74 2e 20 20 49 66 20 79 6f 75 20 77 61 6e 74 20 69 74 lable.to.select...If.you.want.it
5800 20 74 6f 20 62 65 20 74 68 65 20 64 65 66 61 75 6c 74 20 62 61 63 6b 65 6e 64 20 66 6f 72 20 67 .to.be.the.default.backend.for.g
5820 70 74 65 6c 2c 20 79 6f 75 20 63 61 6e 20 73 65 74 20 74 68 69 73 20 61 73 20 74 68 65 20 76 61 ptel,.you.can.set.this.as.the.va
5840 6c 75 65 20 6f 66 20 3d 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 3d 2e 20 20 55 73 65 20 74 68 69 lue.of.=gptel-backend=...Use.thi
5860 73 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20 61 62 6f 76 65 2e 0a 0a 23 2b 62 65 67 69 6e s.instead.of.the.above...#+begin
5880 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 3b 3b 20 4f 50 54 49 4f 4e 41 4c 20 63 6f 6e 66 _src.emacs-lisp.;;.OPTIONAL.conf
58a0 69 67 75 72 61 74 69 6f 6e 0a 28 73 65 74 71 0a 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 20 20 20 27 iguration.(setq..gptel-model...'
58c0 74 65 73 74 0a 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 28 67 70 74 65 6c 2d 6d 61 6b 65 2d test..gptel-backend.(gptel-make-
58e0 6f 70 65 6e 61 69 20 22 6c 6c 61 6d 61 2d 63 70 70 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 openai."llama-cpp"..............
5900 20 20 20 20 3a 73 74 72 65 61 6d 20 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a ....:stream.t..................:
5920 70 72 6f 74 6f 63 6f 6c 20 22 68 74 74 70 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 protocol."http".................
5940 20 3a 68 6f 73 74 20 22 6c 6f 63 61 6c 68 6f 73 74 3a 38 30 30 30 22 0a 20 20 20 20 20 20 20 20 .:host."localhost:8000".........
5960 20 20 20 20 20 20 20 20 20 3a 6d 6f 64 65 6c 73 20 27 28 74 65 73 74 29 29 29 0a 23 2b 65 6e 64 .........:models.'(test))).#+end
5980 5f 73 72 63 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 23 2b 68 74 6d 6c 3a _src..#+html:.</details>.#+html:
59a0 20 3c 64 65 74 61 69 6c 73 3e 3c 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 4b 61 67 69 20 28 46 .<details><summary>.****.Kagi.(F
59c0 61 73 74 47 50 54 20 26 20 53 75 6d 6d 61 72 69 7a 65 72 29 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 astGPT.&.Summarizer).#+html:.</s
59e0 75 6d 6d 61 72 79 3e 0a 0a 4b 61 67 69 27 73 20 46 61 73 74 47 50 54 20 6d 6f 64 65 6c 20 61 6e ummary>..Kagi's.FastGPT.model.an
5a00 64 20 74 68 65 20 55 6e 69 76 65 72 73 61 6c 20 53 75 6d 6d 61 72 69 7a 65 72 20 61 72 65 20 62 d.the.Universal.Summarizer.are.b
5a20 6f 74 68 20 73 75 70 70 6f 72 74 65 64 2e 20 20 41 20 63 6f 75 70 6c 65 20 6f 66 20 6e 6f 74 65 oth.supported...A.couple.of.note
5a40 73 3a 0a 0a 31 2e 20 55 6e 69 76 65 72 73 61 6c 20 53 75 6d 6d 61 72 69 7a 65 72 3a 20 49 66 20 s:..1..Universal.Summarizer:.If.
5a60 74 68 65 72 65 20 69 73 20 61 20 55 52 4c 20 61 74 20 70 6f 69 6e 74 2c 20 74 68 65 20 73 75 6d there.is.a.URL.at.point,.the.sum
5a80 6d 61 72 69 7a 65 72 20 77 69 6c 6c 20 73 75 6d 6d 61 72 69 7a 65 20 74 68 65 20 63 6f 6e 74 65 marizer.will.summarize.the.conte
5aa0 6e 74 73 20 6f 66 20 74 68 65 20 55 52 4c 2e 20 20 4f 74 68 65 72 77 69 73 65 20 74 68 65 20 63 nts.of.the.URL...Otherwise.the.c
5ac0 6f 6e 74 65 78 74 20 73 65 6e 74 20 74 6f 20 74 68 65 20 6d 6f 64 65 6c 20 69 73 20 74 68 65 20 ontext.sent.to.the.model.is.the.
5ae0 73 61 6d 65 20 61 73 20 61 6c 77 61 79 73 3a 20 74 68 65 20 62 75 66 66 65 72 20 74 65 78 74 20 same.as.always:.the.buffer.text.
5b00 75 70 74 6f 20 70 6f 69 6e 74 2c 20 6f 72 20 74 68 65 20 63 6f 6e 74 65 6e 74 73 20 6f 66 20 74 upto.point,.or.the.contents.of.t
5b20 68 65 20 72 65 67 69 6f 6e 20 69 66 20 74 68 65 20 72 65 67 69 6f 6e 20 69 73 20 61 63 74 69 76 he.region.if.the.region.is.activ
5b40 65 2e 0a 0a 32 2e 20 4b 61 67 69 20 6d 6f 64 65 6c 73 20 64 6f 20 6e 6f 74 20 73 75 70 70 6f 72 e...2..Kagi.models.do.not.suppor
5b60 74 20 6d 75 6c 74 69 2d 74 75 72 6e 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 73 2c 20 69 6e 74 65 t.multi-turn.conversations,.inte
5b80 72 61 63 74 69 6f 6e 73 20 61 72 65 20 22 6f 6e 65 2d 73 68 6f 74 22 2e 20 20 54 68 65 79 20 61 ractions.are."one-shot"...They.a
5ba0 6c 73 6f 20 64 6f 20 6e 6f 74 20 73 75 70 70 6f 72 74 20 73 74 72 65 61 6d 69 6e 67 20 72 65 73 lso.do.not.support.streaming.res
5bc0 70 6f 6e 73 65 73 2e 0a 0a 52 65 67 69 73 74 65 72 20 61 20 62 61 63 6b 65 6e 64 20 77 69 74 68 ponses...Register.a.backend.with
5be0 0a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 28 67 70 74 65 6c 2d ..#+begin_src.emacs-lisp.(gptel-
5c00 6d 61 6b 65 2d 6b 61 67 69 20 22 4b 61 67 69 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 make-kagi."Kagi"................
5c20 20 20 20 20 3b 61 6e 79 20 6e 61 6d 65 0a 20 20 3a 6b 65 79 20 22 59 4f 55 52 5f 4b 41 47 49 5f ....;any.name...:key."YOUR_KAGI_
5c40 41 50 49 5f 4b 45 59 22 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 63 61 6e 20 62 65 API_KEY")................;can.be
5c60 20 61 20 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 .a.function.that.returns.the.key
5c80 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 54 68 65 73 65 20 61 72 65 20 74 68 65 20 72 65 71 75 69 72 .#+end_src..These.are.the.requir
5ca0 65 64 20 70 61 72 61 6d 65 74 65 72 73 2c 20 72 65 66 65 72 20 74 6f 20 74 68 65 20 64 6f 63 75 ed.parameters,.refer.to.the.docu
5cc0 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 3d 67 70 74 65 6c 2d 6d 61 6b 65 2d 6b 61 67 69 3d 20 66 mentation.of.=gptel-make-kagi=.f
5ce0 6f 72 20 6d 6f 72 65 2e 0a 0a 59 6f 75 20 63 61 6e 20 70 69 63 6b 20 74 68 69 73 20 62 61 63 6b or.more...You.can.pick.this.back
5d00 65 6e 64 20 61 6e 64 20 74 68 65 20 6d 6f 64 65 6c 20 28 66 61 73 74 67 70 74 2f 73 75 6d 6d 61 end.and.the.model.(fastgpt/summa
5d20 72 69 7a 65 72 29 20 66 72 6f 6d 20 74 68 65 20 74 72 61 6e 73 69 65 6e 74 20 6d 65 6e 75 20 77 rizer).from.the.transient.menu.w
5d40 68 65 6e 20 75 73 69 6e 67 20 67 70 74 65 6c 2e 0a 0a 2a 2a 2a 2a 2a 20 28 4f 70 74 69 6f 6e 61 hen.using.gptel...*****.(Optiona
5d60 6c 29 20 53 65 74 20 61 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 67 70 74 65 6c 20 62 61 63 6b l).Set.as.the.default.gptel.back
5d80 65 6e 64 0a 0a 54 68 65 20 61 62 6f 76 65 20 63 6f 64 65 20 6d 61 6b 65 73 20 74 68 65 20 62 61 end..The.above.code.makes.the.ba
5da0 63 6b 65 6e 64 20 61 76 61 69 6c 61 62 6c 65 20 74 6f 20 73 65 6c 65 63 74 2e 20 20 49 66 20 79 ckend.available.to.select...If.y
5dc0 6f 75 20 77 61 6e 74 20 69 74 20 74 6f 20 62 65 20 74 68 65 20 64 65 66 61 75 6c 74 20 62 61 63 ou.want.it.to.be.the.default.bac
5de0 6b 65 6e 64 20 66 6f 72 20 67 70 74 65 6c 2c 20 79 6f 75 20 63 61 6e 20 73 65 74 20 74 68 69 73 kend.for.gptel,.you.can.set.this
5e00 20 61 73 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 3d 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 3d .as.the.value.of.=gptel-backend=
5e20 2e 20 20 55 73 65 20 74 68 69 73 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20 61 62 6f 76 65 ...Use.this.instead.of.the.above
5e40 2e 0a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 3b 3b 20 4f 50 54 ...#+begin_src.emacs-lisp.;;.OPT
5e60 49 4f 4e 41 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0a 28 73 65 74 71 0a 20 67 70 74 65 6c IONAL.configuration.(setq..gptel
5e80 2d 6d 6f 64 65 6c 20 27 66 61 73 74 67 70 74 0a 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 28 -model.'fastgpt..gptel-backend.(
5ea0 67 70 74 65 6c 2d 6d 61 6b 65 2d 6b 61 67 69 20 22 4b 61 67 69 22 0a 20 20 20 20 20 20 20 20 20 gptel-make-kagi."Kagi"..........
5ec0 20 20 20 20 20 20 20 20 3a 6b 65 79 20 22 59 4f 55 52 5f 4b 41 47 49 5f 41 50 49 5f 4b 45 59 22 ........:key."YOUR_KAGI_API_KEY"
5ee0 29 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 54 68 65 20 61 6c 74 65 72 6e 61 74 69 76 65 73 20 74 )).#+end_src..The.alternatives.t
5f00 6f 20 3d 66 61 73 74 67 70 74 3d 20 69 6e 63 6c 75 64 65 20 3d 73 75 6d 6d 61 72 69 7a 65 3a 63 o.=fastgpt=.include.=summarize:c
5f20 65 63 69 6c 3d 2c 20 3d 73 75 6d 6d 61 72 69 7a 65 3a 61 67 6e 65 73 3d 2c 20 3d 73 75 6d 6d 61 ecil=,.=summarize:agnes=,.=summa
5f40 72 69 7a 65 3a 64 61 70 68 6e 65 3d 20 61 6e 64 20 3d 73 75 6d 6d 61 72 69 7a 65 3a 6d 75 72 69 rize:daphne=.and.=summarize:muri
5f60 65 6c 3d 2e 20 20 54 68 65 20 64 69 66 66 65 72 65 6e 63 65 20 62 65 74 77 65 65 6e 20 74 68 65 el=...The.difference.between.the
5f80 20 73 75 6d 6d 61 72 69 7a 65 72 20 65 6e 67 69 6e 65 73 20 69 73 20 5b 5b 68 74 74 70 73 3a 2f .summarizer.engines.is.[[https:/
5fa0 2f 68 65 6c 70 2e 6b 61 67 69 2e 63 6f 6d 2f 6b 61 67 69 2f 61 70 69 2f 73 75 6d 6d 61 72 69 7a /help.kagi.com/kagi/api/summariz
5fc0 65 72 2e 68 74 6d 6c 23 73 75 6d 6d 61 72 69 7a 61 74 69 6f 6e 2d 65 6e 67 69 6e 65 73 5d 5b 64 er.html#summarization-engines][d
5fe0 6f 63 75 6d 65 6e 74 65 64 20 68 65 72 65 5d 5d 2e 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 ocumented.here]]...#+html:.</det
6000 61 69 6c 73 3e 0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 74 61 69 6c 73 3e 3c 73 75 6d 6d 61 72 79 3e ails>.#+html:.<details><summary>
6020 0a 2a 2a 2a 2a 20 74 6f 67 65 74 68 65 72 2e 61 69 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d .****.together.ai.#+html:.</summ
6040 61 72 79 3e 0a 0a 52 65 67 69 73 74 65 72 20 61 20 62 61 63 6b 65 6e 64 20 77 69 74 68 0a 0a 23 ary>..Register.a.backend.with..#
6060 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 3b 3b 20 54 6f 67 65 74 68 65 +begin_src.emacs-lisp.;;.Togethe
6080 72 2e 61 69 20 6f 66 66 65 72 73 20 61 6e 20 4f 70 65 6e 41 49 20 63 6f 6d 70 61 74 69 62 6c 65 r.ai.offers.an.OpenAI.compatible
60a0 20 41 50 49 0a 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 20 22 54 6f 67 65 74 68 65 .API.(gptel-make-openai."Togethe
60c0 72 41 49 22 20 20 20 20 20 20 20 20 20 3b 41 6e 79 20 6e 61 6d 65 20 79 6f 75 20 77 61 6e 74 0a rAI".........;Any.name.you.want.
60e0 20 20 3a 68 6f 73 74 20 22 61 70 69 2e 74 6f 67 65 74 68 65 72 2e 78 79 7a 22 0a 20 20 3a 6b 65 ..:host."api.together.xyz"...:ke
6100 79 20 22 79 6f 75 72 2d 61 70 69 2d 6b 65 79 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 y."your-api-key"................
6120 20 20 20 3b 63 61 6e 20 62 65 20 61 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 72 65 74 75 72 ...;can.be.a.function.that.retur
6140 6e 73 20 74 68 65 20 6b 65 79 0a 20 20 3a 73 74 72 65 61 6d 20 74 0a 20 20 3a 6d 6f 64 65 6c 73 ns.the.key...:stream.t...:models
6160 20 27 28 3b 3b 20 68 61 73 20 6d 61 6e 79 20 6d 6f 72 65 2c 20 63 68 65 63 6b 20 74 6f 67 65 74 .'(;;.has.many.more,.check.toget
6180 68 65 72 2e 61 69 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d 69 73 74 72 61 6c 61 69 2f 4d 69 78 her.ai.............mistralai/Mix
61a0 74 72 61 6c 2d 38 78 37 42 2d 49 6e 73 74 72 75 63 74 2d 76 30 2e 31 0a 20 20 20 20 20 20 20 20 tral-8x7B-Instruct-v0.1.........
61c0 20 20 20 20 63 6f 64 65 6c 6c 61 6d 61 2f 43 6f 64 65 4c 6c 61 6d 61 2d 31 33 62 2d 49 6e 73 74 ....codellama/CodeLlama-13b-Inst
61e0 72 75 63 74 2d 68 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 64 65 6c 6c 61 6d 61 2f 43 6f ruct-hf.............codellama/Co
6200 64 65 4c 6c 61 6d 61 2d 33 34 62 2d 49 6e 73 74 72 75 63 74 2d 68 66 29 29 0a 23 2b 65 6e 64 5f deLlama-34b-Instruct-hf)).#+end_
6220 73 72 63 0a 0a 59 6f 75 20 63 61 6e 20 70 69 63 6b 20 74 68 69 73 20 62 61 63 6b 65 6e 64 20 66 src..You.can.pick.this.backend.f
6240 72 6f 6d 20 74 68 65 20 6d 65 6e 75 20 77 68 65 6e 20 75 73 69 6e 67 20 67 70 74 65 6c 20 28 73 rom.the.menu.when.using.gptel.(s
6260 65 65 20 5b 5b 23 75 73 61 67 65 5d 5b 55 73 61 67 65 5d 5d 29 0a 0a 2a 2a 2a 2a 2a 20 28 4f 70 ee.[[#usage][Usage]])..*****.(Op
6280 74 69 6f 6e 61 6c 29 20 53 65 74 20 61 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 67 70 74 65 6c tional).Set.as.the.default.gptel
62a0 20 62 61 63 6b 65 6e 64 0a 0a 54 68 65 20 61 62 6f 76 65 20 63 6f 64 65 20 6d 61 6b 65 73 20 74 .backend..The.above.code.makes.t
62c0 68 65 20 62 61 63 6b 65 6e 64 20 61 76 61 69 6c 61 62 6c 65 20 74 6f 20 73 65 6c 65 63 74 2e 20 he.backend.available.to.select..
62e0 20 49 66 20 79 6f 75 20 77 61 6e 74 20 69 74 20 74 6f 20 62 65 20 74 68 65 20 64 65 66 61 75 6c .If.you.want.it.to.be.the.defaul
6300 74 20 62 61 63 6b 65 6e 64 20 66 6f 72 20 67 70 74 65 6c 2c 20 79 6f 75 20 63 61 6e 20 73 65 74 t.backend.for.gptel,.you.can.set
6320 20 74 68 69 73 20 61 73 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 3d 67 70 74 65 6c 2d 62 61 63 .this.as.the.value.of.=gptel-bac
6340 6b 65 6e 64 3d 2e 20 20 55 73 65 20 74 68 69 73 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20 kend=...Use.this.instead.of.the.
6360 61 62 6f 76 65 2e 0a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 3b above...#+begin_src.emacs-lisp.;
6380 3b 20 4f 50 54 49 4f 4e 41 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0a 28 73 65 74 71 0a 20 ;.OPTIONAL.configuration.(setq..
63a0 67 70 74 65 6c 2d 6d 6f 64 65 6c 20 20 20 27 6d 69 73 74 72 61 6c 61 69 2f 4d 69 78 74 72 61 6c gptel-model...'mistralai/Mixtral
63c0 2d 38 78 37 42 2d 49 6e 73 74 72 75 63 74 2d 76 30 2e 31 0a 20 67 70 74 65 6c 2d 62 61 63 6b 65 -8x7B-Instruct-v0.1..gptel-backe
63e0 6e 64 0a 20 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 20 22 54 6f 67 65 74 68 65 72 nd..(gptel-make-openai."Together
6400 41 49 22 20 20 20 20 20 20 20 20 20 0a 20 20 20 3a 68 6f 73 74 20 22 61 70 69 2e 74 6f 67 65 74 AI".............:host."api.toget
6420 68 65 72 2e 78 79 7a 22 0a 20 20 20 3a 6b 65 79 20 22 79 6f 75 72 2d 61 70 69 2d 6b 65 79 22 20 her.xyz"....:key."your-api-key".
6440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 3a 73 74 72 65 61 6d 20 74 0a ......................:stream.t.
6460 20 20 20 3a 6d 6f 64 65 6c 73 20 27 28 3b 3b 20 68 61 73 20 6d 61 6e 79 20 6d 6f 72 65 2c 20 63 ...:models.'(;;.has.many.more,.c
6480 68 65 63 6b 20 74 6f 67 65 74 68 65 72 2e 61 69 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 69 heck.together.ai..............mi
64a0 73 74 72 61 6c 61 69 2f 4d 69 78 74 72 61 6c 2d 38 78 37 42 2d 49 6e 73 74 72 75 63 74 2d 76 30 stralai/Mixtral-8x7B-Instruct-v0
64c0 2e 31 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 64 65 6c 6c 61 6d 61 2f 43 6f 64 65 4c 6c .1..............codellama/CodeLl
64e0 61 6d 61 2d 31 33 62 2d 49 6e 73 74 72 75 63 74 2d 68 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 ama-13b-Instruct-hf.............
6500 20 63 6f 64 65 6c 6c 61 6d 61 2f 43 6f 64 65 4c 6c 61 6d 61 2d 33 34 62 2d 49 6e 73 74 72 75 63 .codellama/CodeLlama-34b-Instruc
6520 74 2d 68 66 29 29 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 t-hf))).#+end_src..#+html:.</det
6540 61 69 6c 73 3e 0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 74 61 69 6c 73 3e 3c 73 75 6d 6d 61 72 79 3e ails>.#+html:.<details><summary>
6560 0a 2a 2a 2a 2a 20 41 6e 79 73 63 61 6c 65 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 .****.Anyscale.#+html:.</summary
6580 3e 0a 0a 52 65 67 69 73 74 65 72 20 61 20 62 61 63 6b 65 6e 64 20 77 69 74 68 0a 0a 23 2b 62 65 >..Register.a.backend.with..#+be
65a0 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 3b 3b 20 41 6e 79 73 63 61 6c 65 20 6f gin_src.emacs-lisp.;;.Anyscale.o
65c0 66 66 65 72 73 20 61 6e 20 4f 70 65 6e 41 49 20 63 6f 6d 70 61 74 69 62 6c 65 20 41 50 49 0a 28 ffers.an.OpenAI.compatible.API.(
65e0 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 20 22 41 6e 79 73 63 61 6c 65 22 20 20 20 20 gptel-make-openai."Anyscale"....
6600 20 20 20 20 20 20 20 3b 41 6e 79 20 6e 61 6d 65 20 79 6f 75 20 77 61 6e 74 0a 20 20 3a 68 6f 73 .......;Any.name.you.want...:hos
6620 74 20 22 61 70 69 2e 65 6e 64 70 6f 69 6e 74 73 2e 61 6e 79 73 63 61 6c 65 2e 63 6f 6d 22 0a 20 t."api.endpoints.anyscale.com"..
6640 20 3a 6b 65 79 20 22 79 6f 75 72 2d 61 70 69 2d 6b 65 79 22 20 20 20 20 20 20 20 20 20 20 20 20 .:key."your-api-key"............
6660 20 20 20 20 20 20 20 3b 63 61 6e 20 62 65 20 61 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 72 .......;can.be.a.function.that.r
6680 65 74 75 72 6e 73 20 74 68 65 20 6b 65 79 0a 20 20 3a 6d 6f 64 65 6c 73 20 27 28 3b 3b 20 68 61 eturns.the.key...:models.'(;;.ha
66a0 73 20 6d 61 6e 79 20 6d 6f 72 65 2c 20 63 68 65 63 6b 20 61 6e 79 73 63 61 6c 65 0a 20 20 20 20 s.many.more,.check.anyscale.....
66c0 20 20 20 20 20 20 20 20 6d 69 73 74 72 61 6c 61 69 2f 4d 69 78 74 72 61 6c 2d 38 78 37 42 2d 49 ........mistralai/Mixtral-8x7B-I
66e0 6e 73 74 72 75 63 74 2d 76 30 2e 31 29 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 59 6f 75 20 63 61 nstruct-v0.1)).#+end_src..You.ca
6700 6e 20 70 69 63 6b 20 74 68 69 73 20 62 61 63 6b 65 6e 64 20 66 72 6f 6d 20 74 68 65 20 6d 65 6e n.pick.this.backend.from.the.men
6720 75 20 77 68 65 6e 20 75 73 69 6e 67 20 67 70 74 65 6c 20 28 73 65 65 20 5b 5b 23 75 73 61 67 65 u.when.using.gptel.(see.[[#usage
6740 5d 5b 55 73 61 67 65 5d 5d 29 0a 0a 2a 2a 2a 2a 2a 20 28 4f 70 74 69 6f 6e 61 6c 29 20 53 65 74 ][Usage]])..*****.(Optional).Set
6760 20 61 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 67 70 74 65 6c 20 62 61 63 6b 65 6e 64 0a 0a 54 .as.the.default.gptel.backend..T
6780 68 65 20 61 62 6f 76 65 20 63 6f 64 65 20 6d 61 6b 65 73 20 74 68 65 20 62 61 63 6b 65 6e 64 20 he.above.code.makes.the.backend.
67a0 61 76 61 69 6c 61 62 6c 65 20 74 6f 20 73 65 6c 65 63 74 2e 20 20 49 66 20 79 6f 75 20 77 61 6e available.to.select...If.you.wan
67c0 74 20 69 74 20 74 6f 20 62 65 20 74 68 65 20 64 65 66 61 75 6c 74 20 62 61 63 6b 65 6e 64 20 66 t.it.to.be.the.default.backend.f
67e0 6f 72 20 67 70 74 65 6c 2c 20 79 6f 75 20 63 61 6e 20 73 65 74 20 74 68 69 73 20 61 73 20 74 68 or.gptel,.you.can.set.this.as.th
6800 65 20 76 61 6c 75 65 20 6f 66 20 3d 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 3d 2e 20 20 55 73 65 e.value.of.=gptel-backend=...Use
6820 20 74 68 69 73 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20 61 62 6f 76 65 2e 0a 0a 23 2b 62 .this.instead.of.the.above...#+b
6840 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 3b 3b 20 4f 50 54 49 4f 4e 41 4c 20 egin_src.emacs-lisp.;;.OPTIONAL.
6860 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0a 28 73 65 74 71 0a 20 67 70 74 65 6c 2d 6d 6f 64 65 6c configuration.(setq..gptel-model
6880 20 20 20 27 6d 69 73 74 72 61 6c 61 69 2f 4d 69 78 74 72 61 6c 2d 38 78 37 42 2d 49 6e 73 74 72 ...'mistralai/Mixtral-8x7B-Instr
68a0 75 63 74 2d 76 30 2e 31 0a 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 0a 20 28 67 70 74 65 6c 2d uct-v0.1..gptel-backend..(gptel-
68c0 6d 61 6b 65 2d 6f 70 65 6e 61 69 20 22 41 6e 79 73 63 61 6c 65 22 0a 20 20 20 20 20 20 20 20 20 make-openai."Anyscale"..........
68e0 20 20 20 20 20 20 20 20 3a 68 6f 73 74 20 22 61 70 69 2e 65 6e 64 70 6f 69 6e 74 73 2e 61 6e 79 ........:host."api.endpoints.any
6900 73 63 61 6c 65 2e 63 6f 6d 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6b 65 79 scale.com"..................:key
6920 20 22 79 6f 75 72 2d 61 70 69 2d 6b 65 79 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ."your-api-key".................
6940 20 3a 6d 6f 64 65 6c 73 20 27 28 3b 3b 20 68 61 73 20 6d 61 6e 79 20 6d 6f 72 65 2c 20 63 68 65 .:models.'(;;.has.many.more,.che
6960 63 6b 20 61 6e 79 73 63 61 6c 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ck.anyscale.....................
6980 20 20 20 20 20 20 20 6d 69 73 74 72 61 6c 61 69 2f 4d 69 78 74 72 61 6c 2d 38 78 37 42 2d 49 6e .......mistralai/Mixtral-8x7B-In
69a0 73 74 72 75 63 74 2d 76 30 2e 31 29 29 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 23 2b 68 74 6d 6c struct-v0.1))).#+end_src..#+html
69c0 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 74 61 69 6c 73 3e 3c 73 :.</details>.#+html:.<details><s
69e0 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 50 65 72 70 6c 65 78 69 74 79 0a 23 2b 68 74 6d 6c 3a 20 ummary>.****.Perplexity.#+html:.
6a00 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a 52 65 67 69 73 74 65 72 20 61 20 62 61 63 6b 65 6e 64 20 77 </summary>..Register.a.backend.w
6a20 69 74 68 0a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 28 67 70 74 ith..#+begin_src.emacs-lisp.(gpt
6a40 65 6c 2d 6d 61 6b 65 2d 70 65 72 70 6c 65 78 69 74 79 20 22 50 65 72 70 6c 65 78 69 74 79 22 20 el-make-perplexity."Perplexity".
6a60 20 20 20 20 3b 41 6e 79 20 6e 61 6d 65 20 79 6f 75 20 77 61 6e 74 0a 20 20 3a 6b 65 79 20 22 79 ....;Any.name.you.want...:key."y
6a80 6f 75 72 2d 61 70 69 2d 6b 65 79 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b our-api-key"...................;
6aa0 63 61 6e 20 62 65 20 61 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 72 65 74 75 72 6e 73 20 74 can.be.a.function.that.returns.t
6ac0 68 65 20 6b 65 79 0a 20 20 3a 73 74 72 65 61 6d 20 74 29 20 20 20 20 20 20 20 20 20 20 20 20 20 he.key...:stream.t).............
6ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 49 66 20 79 6f 75 20 77 61 6e 74 20 72 65 73 70 ...............;If.you.want.resp
6b00 6f 6e 73 65 73 20 74 6f 20 62 65 20 73 74 72 65 61 6d 65 64 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a onses.to.be.streamed.#+end_src..
6b20 59 6f 75 20 63 61 6e 20 70 69 63 6b 20 74 68 69 73 20 62 61 63 6b 65 6e 64 20 66 72 6f 6d 20 74 You.can.pick.this.backend.from.t
6b40 68 65 20 6d 65 6e 75 20 77 68 65 6e 20 75 73 69 6e 67 20 67 70 74 65 6c 20 28 73 65 65 20 5b 5b he.menu.when.using.gptel.(see.[[
6b60 23 75 73 61 67 65 5d 5b 55 73 61 67 65 5d 5d 29 0a 0a 2a 2a 2a 2a 2a 20 28 4f 70 74 69 6f 6e 61 #usage][Usage]])..*****.(Optiona
6b80 6c 29 20 53 65 74 20 61 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 67 70 74 65 6c 20 62 61 63 6b l).Set.as.the.default.gptel.back
6ba0 65 6e 64 0a 0a 54 68 65 20 61 62 6f 76 65 20 63 6f 64 65 20 6d 61 6b 65 73 20 74 68 65 20 62 61 end..The.above.code.makes.the.ba
6bc0 63 6b 65 6e 64 20 61 76 61 69 6c 61 62 6c 65 20 74 6f 20 73 65 6c 65 63 74 2e 20 20 49 66 20 79 ckend.available.to.select...If.y
6be0 6f 75 20 77 61 6e 74 20 69 74 20 74 6f 20 62 65 20 74 68 65 20 64 65 66 61 75 6c 74 20 62 61 63 ou.want.it.to.be.the.default.bac
6c00 6b 65 6e 64 20 66 6f 72 20 67 70 74 65 6c 2c 20 79 6f 75 20 63 61 6e 20 73 65 74 20 74 68 69 73 kend.for.gptel,.you.can.set.this
6c20 20 61 73 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 3d 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 3d .as.the.value.of.=gptel-backend=
6c40 2e 20 20 55 73 65 20 74 68 69 73 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20 61 62 6f 76 65 ...Use.this.instead.of.the.above
6c60 2e 0a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 3b 3b 20 4f 50 54 ...#+begin_src.emacs-lisp.;;.OPT
6c80 49 4f 4e 41 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0a 28 73 65 74 71 0a 20 67 70 74 65 6c IONAL.configuration.(setq..gptel
6ca0 2d 6d 6f 64 65 6c 20 20 20 27 73 6f 6e 61 72 0a 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 28 -model...'sonar..gptel-backend.(
6cc0 67 70 74 65 6c 2d 6d 61 6b 65 2d 70 65 72 70 6c 65 78 69 74 79 20 22 50 65 72 70 6c 65 78 69 74 gptel-make-perplexity."Perplexit
6ce0 79 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6b 65 79 20 22 79 6f 75 72 2d 61 y"..................:key."your-a
6d00 70 69 2d 6b 65 79 22 20 3a 73 74 72 65 61 6d 20 74 29 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 23 pi-key".:stream.t)).#+end_src..#
6d20 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 74 61 69 +html:.</details>.#+html:.<detai
6d40 6c 73 3e 3c 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 41 6e 74 68 72 6f 70 69 63 20 28 43 6c 61 ls><summary>.****.Anthropic.(Cla
6d60 75 64 65 29 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 52 65 67 69 73 74 65 72 ude).#+html:.</summary>.Register
6d80 20 61 20 62 61 63 6b 65 6e 64 20 77 69 74 68 0a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 .a.backend.with..#+begin_src.ema
6da0 63 73 2d 6c 69 73 70 0a 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 61 6e 74 68 72 6f 70 69 63 20 22 43 cs-lisp.(gptel-make-anthropic."C
6dc0 6c 61 75 64 65 22 20 20 20 20 20 20 20 20 20 20 3b 41 6e 79 20 6e 61 6d 65 20 79 6f 75 20 77 61 laude"..........;Any.name.you.wa
6de0 6e 74 0a 20 20 3a 73 74 72 65 61 6d 20 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 nt...:stream.t..................
6e00 20 20 20 20 20 20 20 20 20 20 20 3b 53 74 72 65 61 6d 69 6e 67 20 72 65 73 70 6f 6e 73 65 73 0a ...........;Streaming.responses.
6e20 20 20 3a 6b 65 79 20 22 79 6f 75 72 2d 61 70 69 2d 6b 65 79 22 29 0a 23 2b 65 6e 64 5f 73 72 63 ..:key."your-api-key").#+end_src
6e40 0a 54 68 65 20 3d 3a 6b 65 79 3d 20 63 61 6e 20 62 65 20 61 20 66 75 6e 63 74 69 6f 6e 20 74 68 .The.=:key=.can.be.a.function.th
6e60 61 74 20 72 65 74 75 72 6e 73 20 74 68 65 20 6b 65 79 20 28 6d 6f 72 65 20 73 65 63 75 72 65 29 at.returns.the.key.(more.secure)
6e80 2e 0a 0a 59 6f 75 20 63 61 6e 20 70 69 63 6b 20 74 68 69 73 20 62 61 63 6b 65 6e 64 20 66 72 6f ...You.can.pick.this.backend.fro
6ea0 6d 20 74 68 65 20 6d 65 6e 75 20 77 68 65 6e 20 75 73 69 6e 67 20 67 70 74 65 6c 20 28 73 65 65 m.the.menu.when.using.gptel.(see
6ec0 20 5b 5b 23 75 73 61 67 65 5d 5b 55 73 61 67 65 5d 5d 29 2e 0a 0a 2a 2a 2a 2a 2a 20 28 4f 70 74 .[[#usage][Usage]])...*****.(Opt
6ee0 69 6f 6e 61 6c 29 20 53 65 74 20 61 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 67 70 74 65 6c 20 ional).Set.as.the.default.gptel.
6f00 62 61 63 6b 65 6e 64 0a 0a 54 68 65 20 61 62 6f 76 65 20 63 6f 64 65 20 6d 61 6b 65 73 20 74 68 backend..The.above.code.makes.th
6f20 65 20 62 61 63 6b 65 6e 64 20 61 76 61 69 6c 61 62 6c 65 20 74 6f 20 73 65 6c 65 63 74 2e 20 20 e.backend.available.to.select...
6f40 49 66 20 79 6f 75 20 77 61 6e 74 20 69 74 20 74 6f 20 62 65 20 74 68 65 20 64 65 66 61 75 6c 74 If.you.want.it.to.be.the.default
6f60 20 62 61 63 6b 65 6e 64 20 66 6f 72 20 67 70 74 65 6c 2c 20 79 6f 75 20 63 61 6e 20 73 65 74 20 .backend.for.gptel,.you.can.set.
6f80 74 68 69 73 20 61 73 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 3d 67 70 74 65 6c 2d 62 61 63 6b this.as.the.value.of.=gptel-back
6fa0 65 6e 64 3d 2e 20 20 55 73 65 20 74 68 69 73 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20 61 end=...Use.this.instead.of.the.a
6fc0 62 6f 76 65 2e 0a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 3b 3b bove...#+begin_src.emacs-lisp.;;
6fe0 20 4f 50 54 49 4f 4e 41 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0a 28 73 65 74 71 0a 20 67 .OPTIONAL.configuration.(setq..g
7000 70 74 65 6c 2d 6d 6f 64 65 6c 20 27 63 6c 61 75 64 65 2d 33 2d 73 6f 6e 6e 65 74 2d 32 30 32 34 ptel-model.'claude-3-sonnet-2024
7020 30 32 32 39 20 3b 20 20 22 63 6c 61 75 64 65 2d 33 2d 6f 70 75 73 2d 32 30 32 34 30 32 32 39 22 0229.;.."claude-3-opus-20240229"
7040 20 61 6c 73 6f 20 61 76 61 69 6c 61 62 6c 65 0a 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 28 .also.available..gptel-backend.(
7060 67 70 74 65 6c 2d 6d 61 6b 65 2d 61 6e 74 68 72 6f 70 69 63 20 22 43 6c 61 75 64 65 22 0a 20 20 gptel-make-anthropic."Claude"...
7080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 73 74 72 65 61 6d 20 74 20 3a 6b 65 79 20 22 79 ...............:stream.t.:key."y
70a0 6f 75 72 2d 61 70 69 2d 6b 65 79 22 29 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 2a 2a 2a 2a 2a 20 our-api-key")).#+end_src..*****.
70c0 28 4f 70 74 69 6f 6e 61 6c 29 20 49 6e 74 65 72 69 6d 20 73 75 70 70 6f 72 74 20 66 6f 72 20 43 (Optional).Interim.support.for.C
70e0 6c 61 75 64 65 20 33 2e 37 20 53 6f 6e 6e 65 74 0a 0a 54 6f 20 75 73 65 20 43 6c 61 75 64 65 20 laude.3.7.Sonnet..To.use.Claude.
7100 33 2e 37 20 53 6f 6e 6e 65 74 20 6d 6f 64 65 6c 20 69 6e 20 69 74 73 20 22 74 68 69 6e 6b 69 6e 3.7.Sonnet.model.in.its."thinkin
7120 67 22 20 6d 6f 64 65 2c 20 79 6f 75 20 63 61 6e 20 64 65 66 69 6e 65 20 61 20 73 65 63 6f 6e 64 g".mode,.you.can.define.a.second
7140 20 43 6c 61 75 64 65 20 62 61 63 6b 65 6e 64 20 61 6e 64 20 73 65 6c 65 63 74 20 69 74 20 76 69 .Claude.backend.and.select.it.vi
7160 61 20 74 68 65 20 55 49 20 6f 72 20 65 6c 69 73 70 3a 0a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 a.the.UI.or.elisp:..#+begin_src.
7180 65 6d 61 63 73 2d 6c 69 73 70 0a 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 61 6e 74 68 72 6f 70 69 63 emacs-lisp.(gptel-make-anthropic
71a0 20 22 43 6c 61 75 64 65 2d 74 68 69 6e 6b 69 6e 67 22 20 3b 41 6e 79 20 6e 61 6d 65 20 79 6f 75 ."Claude-thinking".;Any.name.you
71c0 20 77 61 6e 74 0a 20 20 3a 6b 65 79 20 22 79 6f 75 72 2d 41 50 49 2d 6b 65 79 22 0a 20 20 3a 73 .want...:key."your-API-key"...:s
71e0 74 72 65 61 6d 20 74 0a 20 20 3a 6d 6f 64 65 6c 73 20 27 28 63 6c 61 75 64 65 2d 73 6f 6e 6e 65 tream.t...:models.'(claude-sonne
7200 74 2d 34 2d 32 30 32 35 30 35 31 34 20 63 6c 61 75 64 65 2d 33 2d 37 2d 73 6f 6e 6e 65 74 2d 32 t-4-20250514.claude-3-7-sonnet-2
7220 30 32 35 30 32 31 39 29 0a 20 20 3a 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 20 27 28 3a 74 68 0250219)...:request-params.'(:th
7240 69 6e 6b 69 6e 67 20 28 3a 74 79 70 65 20 22 65 6e 61 62 6c 65 64 22 20 3a 62 75 64 67 65 74 5f inking.(:type."enabled".:budget_
7260 74 6f 6b 65 6e 73 20 32 30 34 38 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 tokens.2048)....................
7280 20 3a 6d 61 78 5f 74 6f 6b 65 6e 73 20 34 30 39 36 29 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 59 .:max_tokens.4096)).#+end_src..Y
72a0 6f 75 20 63 61 6e 20 73 65 74 20 74 68 65 20 72 65 61 73 6f 6e 69 6e 67 20 62 75 64 67 65 74 20 ou.can.set.the.reasoning.budget.
72c0 74 6f 6b 65 6e 73 20 61 6e 64 20 6d 61 78 20 74 6f 6b 65 6e 73 20 66 6f 72 20 74 68 69 73 20 75 tokens.and.max.tokens.for.this.u
72e0 73 61 67 65 20 76 69 61 20 74 68 65 20 3d 3a 62 75 64 67 65 74 5f 74 6f 6b 65 6e 73 3d 20 61 6e sage.via.the.=:budget_tokens=.an
7300 64 20 3d 3a 6d 61 78 5f 74 6f 6b 65 6e 73 3d 20 6b 65 79 73 20 68 65 72 65 2c 20 72 65 73 70 65 d.=:max_tokens=.keys.here,.respe
7320 63 74 69 76 65 6c 79 2e 0a 0a 59 6f 75 20 63 61 6e 20 63 6f 6e 74 72 6f 6c 20 77 68 65 74 68 65 ctively...You.can.control.whethe
7340 72 2f 68 6f 77 20 74 68 65 20 72 65 61 73 6f 6e 69 6e 67 20 6f 75 74 70 75 74 20 69 73 20 73 68 r/how.the.reasoning.output.is.sh
7360 6f 77 6e 20 76 69 61 20 67 70 74 65 6c 27 73 20 6d 65 6e 75 20 6f 72 20 3d 67 70 74 65 6c 2d 69 own.via.gptel's.menu.or.=gptel-i
7380 6e 63 6c 75 64 65 2d 72 65 61 73 6f 6e 69 6e 67 3d 2c 20 73 65 65 20 5b 5b 23 68 61 6e 64 6c 65 nclude-reasoning=,.see.[[#handle
73a0 2d 72 65 61 73 6f 6e 69 6e 67 2d 63 6f 6e 74 65 6e 74 5d 5b 68 61 6e 64 6c 69 6e 67 20 72 65 61 -reasoning-content][handling.rea
73c0 73 6f 6e 69 6e 67 20 63 6f 6e 74 65 6e 74 5d 5d 2e 20 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 soning.content]]....#+html:.</de
73e0 74 61 69 6c 73 3e 0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 74 61 69 6c 73 3e 3c 73 75 6d 6d 61 72 79 tails>.#+html:.<details><summary
7400 3e 0a 2a 2a 2a 2a 20 47 72 6f 71 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a >.****.Groq.#+html:.</summary>..
7420 52 65 67 69 73 74 65 72 20 61 20 62 61 63 6b 65 6e 64 20 77 69 74 68 0a 0a 23 2b 62 65 67 69 6e Register.a.backend.with..#+begin
7440 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 3b 3b 20 47 72 6f 71 20 6f 66 66 65 72 73 20 61 _src.emacs-lisp.;;.Groq.offers.a
7460 6e 20 4f 70 65 6e 41 49 20 63 6f 6d 70 61 74 69 62 6c 65 20 41 50 49 0a 28 67 70 74 65 6c 2d 6d n.OpenAI.compatible.API.(gptel-m
7480 61 6b 65 2d 6f 70 65 6e 61 69 20 22 47 72 6f 71 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ake-openai."Groq"...............
74a0 3b 41 6e 79 20 6e 61 6d 65 20 79 6f 75 20 77 61 6e 74 0a 20 20 3a 68 6f 73 74 20 22 61 70 69 2e ;Any.name.you.want...:host."api.
74c0 67 72 6f 71 2e 63 6f 6d 22 0a 20 20 3a 65 6e 64 70 6f 69 6e 74 20 22 2f 6f 70 65 6e 61 69 2f 76 groq.com"...:endpoint."/openai/v
74e0 31 2f 63 68 61 74 2f 63 6f 6d 70 6c 65 74 69 6f 6e 73 22 0a 20 20 3a 73 74 72 65 61 6d 20 74 0a 1/chat/completions"...:stream.t.
7500 20 20 3a 6b 65 79 20 22 79 6f 75 72 2d 61 70 69 2d 6b 65 79 22 20 20 20 20 20 20 20 20 20 20 20 ..:key."your-api-key"...........
7520 20 20 20 20 20 20 20 20 3b 63 61 6e 20 62 65 20 61 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 ........;can.be.a.function.that.
7540 72 65 74 75 72 6e 73 20 74 68 65 20 6b 65 79 0a 20 20 3a 6d 6f 64 65 6c 73 20 27 28 6c 6c 61 6d returns.the.key...:models.'(llam
7560 61 2d 33 2e 31 2d 37 30 62 2d 76 65 72 73 61 74 69 6c 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 a-3.1-70b-versatile.............
7580 6c 6c 61 6d 61 2d 33 2e 31 2d 38 62 2d 69 6e 73 74 61 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 llama-3.1-8b-instant............
75a0 20 6c 6c 61 6d 61 33 2d 37 30 62 2d 38 31 39 32 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6c 61 .llama3-70b-8192.............lla
75c0 6d 61 33 2d 38 62 2d 38 31 39 32 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d 69 78 74 72 61 6c 2d ma3-8b-8192.............mixtral-
75e0 38 78 37 62 2d 33 32 37 36 38 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 6d 6d 61 2d 37 62 2d 8x7b-32768.............gemma-7b-
7600 69 74 29 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 59 6f 75 20 63 61 6e 20 70 69 63 6b 20 74 68 69 it)).#+end_src..You.can.pick.thi
7620 73 20 62 61 63 6b 65 6e 64 20 66 72 6f 6d 20 74 68 65 20 6d 65 6e 75 20 77 68 65 6e 20 75 73 69 s.backend.from.the.menu.when.usi
7640 6e 67 20 67 70 74 65 6c 20 28 73 65 65 20 5b 5b 23 75 73 61 67 65 5d 5b 55 73 61 67 65 5d 5d 29 ng.gptel.(see.[[#usage][Usage]])
7660 2e 20 20 4e 6f 74 65 20 74 68 61 74 20 47 72 6f 71 20 69 73 20 66 61 73 74 20 65 6e 6f 75 67 68 ...Note.that.Groq.is.fast.enough
7680 20 74 68 61 74 20 79 6f 75 20 63 6f 75 6c 64 20 65 61 73 69 6c 79 20 73 65 74 20 3d 3a 73 74 72 .that.you.could.easily.set.=:str
76a0 65 61 6d 20 6e 69 6c 3d 20 61 6e 64 20 73 74 69 6c 6c 20 67 65 74 20 6e 65 61 72 2d 69 6e 73 74 eam.nil=.and.still.get.near-inst
76c0 61 6e 74 20 72 65 73 70 6f 6e 73 65 73 2e 0a 0a 2a 2a 2a 2a 2a 20 28 4f 70 74 69 6f 6e 61 6c 29 ant.responses...*****.(Optional)
76e0 20 53 65 74 20 61 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 67 70 74 65 6c 20 62 61 63 6b 65 6e .Set.as.the.default.gptel.backen
7700 64 0a 0a 54 68 65 20 61 62 6f 76 65 20 63 6f 64 65 20 6d 61 6b 65 73 20 74 68 65 20 62 61 63 6b d..The.above.code.makes.the.back
7720 65 6e 64 20 61 76 61 69 6c 61 62 6c 65 20 74 6f 20 73 65 6c 65 63 74 2e 20 20 49 66 20 79 6f 75 end.available.to.select...If.you
7740 20 77 61 6e 74 20 69 74 20 74 6f 20 62 65 20 74 68 65 20 64 65 66 61 75 6c 74 20 62 61 63 6b 65 .want.it.to.be.the.default.backe
7760 6e 64 20 66 6f 72 20 67 70 74 65 6c 2c 20 79 6f 75 20 63 61 6e 20 73 65 74 20 74 68 69 73 20 61 nd.for.gptel,.you.can.set.this.a
7780 73 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 3d 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 3d 2e 20 s.the.value.of.=gptel-backend=..
77a0 20 55 73 65 20 74 68 69 73 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20 61 62 6f 76 65 2e 0a .Use.this.instead.of.the.above..
77c0 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 3b 3b 20 4f 50 54 49 4f .#+begin_src.emacs-lisp.;;.OPTIO
77e0 4e 41 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0a 28 73 65 74 71 20 67 70 74 65 6c 2d 6d 6f NAL.configuration.(setq.gptel-mo
7800 64 65 6c 20 20 20 27 6d 69 78 74 72 61 6c 2d 38 78 37 62 2d 33 32 37 36 38 0a 20 20 20 20 20 20 del...'mixtral-8x7b-32768.......
7820 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 0a 20 20 20 20 20 20 28 67 70 74 65 6c 2d 6d 61 6b 65 2d gptel-backend.......(gptel-make-
7840 6f 70 65 6e 61 69 20 22 47 72 6f 71 22 0a 20 20 20 20 20 20 20 20 3a 68 6f 73 74 20 22 61 70 69 openai."Groq".........:host."api
7860 2e 67 72 6f 71 2e 63 6f 6d 22 0a 20 20 20 20 20 20 20 20 3a 65 6e 64 70 6f 69 6e 74 20 22 2f 6f .groq.com".........:endpoint."/o
7880 70 65 6e 61 69 2f 76 31 2f 63 68 61 74 2f 63 6f 6d 70 6c 65 74 69 6f 6e 73 22 0a 20 20 20 20 20 penai/v1/chat/completions"......
78a0 20 20 20 3a 73 74 72 65 61 6d 20 74 0a 20 20 20 20 20 20 20 20 3a 6b 65 79 20 22 79 6f 75 72 2d ...:stream.t.........:key."your-
78c0 61 70 69 2d 6b 65 79 22 0a 20 20 20 20 20 20 20 20 3a 6d 6f 64 65 6c 73 20 27 28 6c 6c 61 6d 61 api-key".........:models.'(llama
78e0 2d 33 2e 31 2d 37 30 62 2d 76 65 72 73 61 74 69 6c 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 -3.1-70b-versatile..............
7900 20 20 20 20 20 6c 6c 61 6d 61 2d 33 2e 31 2d 38 62 2d 69 6e 73 74 61 6e 74 0a 20 20 20 20 20 20 .....llama-3.1-8b-instant.......
7920 20 20 20 20 20 20 20 20 20 20 20 20 6c 6c 61 6d 61 33 2d 37 30 62 2d 38 31 39 32 0a 20 20 20 20 ............llama3-70b-8192.....
7940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6c 61 6d 61 33 2d 38 62 2d 38 31 39 32 0a 20 20 20 ..............llama3-8b-8192....
7960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 69 78 74 72 61 6c 2d 38 78 37 62 2d 33 32 37 36 ...............mixtral-8x7b-3276
7980 38 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 6d 6d 61 2d 37 62 2d 69 74 29 8...................gemma-7b-it)
79a0 29 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e )).#+end_src..#+html:.</details>
79c0 0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 74 61 69 6c 73 3e 3c 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a .#+html:.<details><summary>.****
79e0 20 4d 69 73 74 72 61 6c 20 4c 65 20 43 68 61 74 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 .Mistral.Le.Chat.#+html:.</summa
7a00 72 79 3e 0a 0a 52 65 67 69 73 74 65 72 20 61 20 62 61 63 6b 65 6e 64 20 77 69 74 68 0a 0a 23 2b ry>..Register.a.backend.with..#+
7a20 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 3b 3b 20 4d 69 73 74 72 61 6c 20 begin_src.emacs-lisp.;;.Mistral.
7a40 6f 66 66 65 72 73 20 61 6e 20 4f 70 65 6e 41 49 20 63 6f 6d 70 61 74 69 62 6c 65 20 41 50 49 0a offers.an.OpenAI.compatible.API.
7a60 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 20 22 4d 69 73 74 72 61 6c 4c 65 43 68 61 (gptel-make-openai."MistralLeCha
7a80 74 22 20 20 3b 41 6e 79 20 6e 61 6d 65 20 79 6f 75 20 77 61 6e 74 0a 20 20 3a 68 6f 73 74 20 22 t"..;Any.name.you.want...:host."
7aa0 61 70 69 2e 6d 69 73 74 72 61 6c 2e 61 69 22 0a 20 20 3a 65 6e 64 70 6f 69 6e 74 20 22 2f 76 31 api.mistral.ai"...:endpoint."/v1
7ac0 2f 63 68 61 74 2f 63 6f 6d 70 6c 65 74 69 6f 6e 73 22 0a 20 20 3a 70 72 6f 74 6f 63 6f 6c 20 22 /chat/completions"...:protocol."
7ae0 68 74 74 70 73 22 0a 20 20 3a 6b 65 79 20 22 79 6f 75 72 2d 61 70 69 2d 6b 65 79 22 20 20 20 20 https"...:key."your-api-key"....
7b00 20 20 20 20 20 20 20 20 20 20 20 3b 63 61 6e 20 62 65 20 61 20 66 75 6e 63 74 69 6f 6e 20 74 68 ...........;can.be.a.function.th
7b20 61 74 20 72 65 74 75 72 6e 73 20 74 68 65 20 6b 65 79 0a 20 20 3a 6d 6f 64 65 6c 73 20 27 28 22 at.returns.the.key...:models.'("
7b40 6d 69 73 74 72 61 6c 2d 73 6d 61 6c 6c 22 29 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 59 6f 75 20 mistral-small")).#+end_src..You.
7b60 63 61 6e 20 70 69 63 6b 20 74 68 69 73 20 62 61 63 6b 65 6e 64 20 66 72 6f 6d 20 74 68 65 20 6d can.pick.this.backend.from.the.m
7b80 65 6e 75 20 77 68 65 6e 20 75 73 69 6e 67 20 67 70 74 65 6c 20 28 73 65 65 20 5b 5b 23 75 73 61 enu.when.using.gptel.(see.[[#usa
7ba0 67 65 5d 5b 55 73 61 67 65 5d 5d 29 2e 0a 0a 2a 2a 2a 2a 2a 20 28 4f 70 74 69 6f 6e 61 6c 29 20 ge][Usage]])...*****.(Optional).
7bc0 53 65 74 20 61 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 67 70 74 65 6c 20 62 61 63 6b 65 6e 64 Set.as.the.default.gptel.backend
7be0 0a 0a 54 68 65 20 61 62 6f 76 65 20 63 6f 64 65 20 6d 61 6b 65 73 20 74 68 65 20 62 61 63 6b 65 ..The.above.code.makes.the.backe
7c00 6e 64 20 61 76 61 69 6c 61 62 6c 65 20 74 6f 20 73 65 6c 65 63 74 2e 20 20 49 66 20 79 6f 75 20 nd.available.to.select...If.you.
7c20 77 61 6e 74 20 69 74 20 74 6f 20 62 65 20 74 68 65 20 64 65 66 61 75 6c 74 20 62 61 63 6b 65 6e want.it.to.be.the.default.backen
7c40 64 20 66 6f 72 20 67 70 74 65 6c 2c 20 79 6f 75 20 63 61 6e 20 73 65 74 20 74 68 69 73 20 61 73 d.for.gptel,.you.can.set.this.as
7c60 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 3d 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 3d 2e 20 20 .the.value.of.=gptel-backend=...
7c80 55 73 65 20 74 68 69 73 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20 61 62 6f 76 65 2e 0a 0a Use.this.instead.of.the.above...
7ca0 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 3b 3b 20 4f 50 54 49 4f 4e #+begin_src.emacs-lisp.;;.OPTION
7cc0 41 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0a 28 73 65 74 71 20 67 70 74 65 6c 2d 6d 6f 64 AL.configuration.(setq.gptel-mod
7ce0 65 6c 20 20 20 27 6d 69 73 74 72 61 6c 2d 73 6d 61 6c 6c 0a 20 20 20 20 20 20 67 70 74 65 6c 2d el...'mistral-small.......gptel-
7d00 62 61 63 6b 65 6e 64 0a 20 20 20 20 20 20 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 backend.......(gptel-make-openai
7d20 20 22 4d 69 73 74 72 61 6c 4c 65 43 68 61 74 22 20 20 3b 41 6e 79 20 6e 61 6d 65 20 79 6f 75 20 ."MistralLeChat"..;Any.name.you.
7d40 77 61 6e 74 0a 20 20 20 20 20 20 20 20 3a 68 6f 73 74 20 22 61 70 69 2e 6d 69 73 74 72 61 6c 2e want.........:host."api.mistral.
7d60 61 69 22 0a 20 20 20 20 20 20 20 20 3a 65 6e 64 70 6f 69 6e 74 20 22 2f 76 31 2f 63 68 61 74 2f ai".........:endpoint."/v1/chat/
7d80 63 6f 6d 70 6c 65 74 69 6f 6e 73 22 0a 20 20 20 20 20 20 20 20 3a 70 72 6f 74 6f 63 6f 6c 20 22 completions".........:protocol."
7da0 68 74 74 70 73 22 0a 20 20 20 20 20 20 20 20 3a 6b 65 79 20 22 79 6f 75 72 2d 61 70 69 2d 6b 65 https".........:key."your-api-ke
7dc0 79 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 63 61 6e 20 62 65 20 61 20 66 75 6e 63 74 y"...............;can.be.a.funct
7de0 69 6f 6e 20 74 68 61 74 20 72 65 74 75 72 6e 73 20 74 68 65 20 6b 65 79 0a 20 20 20 20 20 20 20 ion.that.returns.the.key........
7e00 20 3a 6d 6f 64 65 6c 73 20 27 28 22 6d 69 73 74 72 61 6c 2d 73 6d 61 6c 6c 22 29 29 29 0a 23 2b .:models.'("mistral-small"))).#+
7e20 65 6e 64 5f 73 72 63 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 23 2b 68 74 end_src..#+html:.</details>.#+ht
7e40 6d 6c 3a 20 3c 64 65 74 61 69 6c 73 3e 3c 73 75 6d 6d 61 72 79 3e 0a 0a 2a 2a 2a 2a 20 4f 70 65 ml:.<details><summary>..****.Ope
7e60 6e 52 6f 75 74 65 72 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a 52 65 67 69 nRouter.#+html:.</summary>..Regi
7e80 73 74 65 72 20 61 20 62 61 63 6b 65 6e 64 20 77 69 74 68 0a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 ster.a.backend.with..#+begin_src
7ea0 20 65 6d 61 63 73 2d 6c 69 73 70 0a 3b 3b 20 4f 70 65 6e 52 6f 75 74 65 72 20 6f 66 66 65 72 73 .emacs-lisp.;;.OpenRouter.offers
7ec0 20 61 6e 20 4f 70 65 6e 41 49 20 63 6f 6d 70 61 74 69 62 6c 65 20 41 50 49 0a 28 67 70 74 65 6c .an.OpenAI.compatible.API.(gptel
7ee0 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 20 22 4f 70 65 6e 52 6f 75 74 65 72 22 20 20 20 20 20 20 20 -make-openai."OpenRouter".......
7f00 20 20 20 20 20 20 20 20 3b 41 6e 79 20 6e 61 6d 65 20 79 6f 75 20 77 61 6e 74 0a 20 20 3a 68 6f ........;Any.name.you.want...:ho
7f20 73 74 20 22 6f 70 65 6e 72 6f 75 74 65 72 2e 61 69 22 0a 20 20 3a 65 6e 64 70 6f 69 6e 74 20 22 st."openrouter.ai"...:endpoint."
7f40 2f 61 70 69 2f 76 31 2f 63 68 61 74 2f 63 6f 6d 70 6c 65 74 69 6f 6e 73 22 0a 20 20 3a 73 74 72 /api/v1/chat/completions"...:str
7f60 65 61 6d 20 74 0a 20 20 3a 6b 65 79 20 22 79 6f 75 72 2d 61 70 69 2d 6b 65 79 22 20 20 20 20 20 eam.t...:key."your-api-key".....
7f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 63 61 6e 20 62 65 20 61 20 66 75 6e 63 74 69 6f 6e ..............;can.be.a.function
7fa0 20 74 68 61 74 20 72 65 74 75 72 6e 73 20 74 68 65 20 6b 65 79 0a 20 20 3a 6d 6f 64 65 6c 73 20 .that.returns.the.key...:models.
7fc0 27 28 6f 70 65 6e 61 69 2f 67 70 74 2d 33 2e 35 2d 74 75 72 62 6f 0a 20 20 20 20 20 20 20 20 20 '(openai/gpt-3.5-turbo..........
7fe0 20 20 20 6d 69 73 74 72 61 6c 61 69 2f 6d 69 78 74 72 61 6c 2d 38 78 37 62 2d 69 6e 73 74 72 75 ...mistralai/mixtral-8x7b-instru
8000 63 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 74 61 2d 6c 6c 61 6d 61 2f 63 6f 64 65 6c 6c ct.............meta-llama/codell
8020 61 6d 61 2d 33 34 62 2d 69 6e 73 74 72 75 63 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 64 ama-34b-instruct.............cod
8040 65 6c 6c 61 6d 61 2f 63 6f 64 65 6c 6c 61 6d 61 2d 37 30 62 2d 69 6e 73 74 72 75 63 74 0a 20 20 ellama/codellama-70b-instruct...
8060 20 20 20 20 20 20 20 20 20 20 67 6f 6f 67 6c 65 2f 70 61 6c 6d 2d 32 2d 63 6f 64 65 63 68 61 74 ..........google/palm-2-codechat
8080 2d 62 69 73 6f 6e 2d 33 32 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 6f 6f 67 6c 65 2f 67 65 -bison-32k.............google/ge
80a0 6d 69 6e 69 2d 70 72 6f 29 29 0a 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 59 6f 75 20 63 61 6e 20 70 mini-pro))..#+end_src..You.can.p
80c0 69 63 6b 20 74 68 69 73 20 62 61 63 6b 65 6e 64 20 66 72 6f 6d 20 74 68 65 20 6d 65 6e 75 20 77 ick.this.backend.from.the.menu.w
80e0 68 65 6e 20 75 73 69 6e 67 20 67 70 74 65 6c 20 28 73 65 65 20 5b 5b 23 75 73 61 67 65 5d 5b 55 hen.using.gptel.(see.[[#usage][U
8100 73 61 67 65 5d 5d 29 2e 0a 0a 2a 2a 2a 2a 2a 20 28 4f 70 74 69 6f 6e 61 6c 29 20 53 65 74 20 61 sage]])...*****.(Optional).Set.a
8120 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 67 70 74 65 6c 20 62 61 63 6b 65 6e 64 0a 0a 54 68 65 s.the.default.gptel.backend..The
8140 20 61 62 6f 76 65 20 63 6f 64 65 20 6d 61 6b 65 73 20 74 68 65 20 62 61 63 6b 65 6e 64 20 61 76 .above.code.makes.the.backend.av
8160 61 69 6c 61 62 6c 65 20 74 6f 20 73 65 6c 65 63 74 2e 20 20 49 66 20 79 6f 75 20 77 61 6e 74 20 ailable.to.select...If.you.want.
8180 69 74 20 74 6f 20 62 65 20 74 68 65 20 64 65 66 61 75 6c 74 20 62 61 63 6b 65 6e 64 20 66 6f 72 it.to.be.the.default.backend.for
81a0 20 67 70 74 65 6c 2c 20 79 6f 75 20 63 61 6e 20 73 65 74 20 74 68 69 73 20 61 73 20 74 68 65 20 .gptel,.you.can.set.this.as.the.
81c0 76 61 6c 75 65 20 6f 66 20 3d 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 3d 2e 20 20 55 73 65 20 74 value.of.=gptel-backend=...Use.t
81e0 68 69 73 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20 61 62 6f 76 65 2e 0a 0a 23 2b 62 65 67 his.instead.of.the.above...#+beg
8200 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 3b 3b 20 4f 50 54 49 4f 4e 41 4c 20 63 6f in_src.emacs-lisp.;;.OPTIONAL.co
8220 6e 66 69 67 75 72 61 74 69 6f 6e 0a 28 73 65 74 71 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 20 20 20 nfiguration.(setq.gptel-model...
8240 27 6d 69 78 74 72 61 6c 2d 38 78 37 62 2d 33 32 37 36 38 0a 20 20 20 20 20 20 67 70 74 65 6c 2d 'mixtral-8x7b-32768.......gptel-
8260 62 61 63 6b 65 6e 64 0a 20 20 20 20 20 20 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 backend.......(gptel-make-openai
8280 20 22 4f 70 65 6e 52 6f 75 74 65 72 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 41 6e 79 ."OpenRouter"...............;Any
82a0 20 6e 61 6d 65 20 79 6f 75 20 77 61 6e 74 0a 20 20 20 20 20 20 20 20 3a 68 6f 73 74 20 22 6f 70 .name.you.want.........:host."op
82c0 65 6e 72 6f 75 74 65 72 2e 61 69 22 0a 20 20 20 20 20 20 20 20 3a 65 6e 64 70 6f 69 6e 74 20 22 enrouter.ai".........:endpoint."
82e0 2f 61 70 69 2f 76 31 2f 63 68 61 74 2f 63 6f 6d 70 6c 65 74 69 6f 6e 73 22 0a 20 20 20 20 20 20 /api/v1/chat/completions".......
8300 20 20 3a 73 74 72 65 61 6d 20 74 0a 20 20 20 20 20 20 20 20 3a 6b 65 79 20 22 79 6f 75 72 2d 61 ..:stream.t.........:key."your-a
8320 70 69 2d 6b 65 79 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 63 61 6e 20 62 pi-key"...................;can.b
8340 65 20 61 20 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 e.a.function.that.returns.the.ke
8360 79 0a 20 20 20 20 20 20 20 20 3a 6d 6f 64 65 6c 73 20 27 28 6f 70 65 6e 61 69 2f 67 70 74 2d 33 y.........:models.'(openai/gpt-3
8380 2e 35 2d 74 75 72 62 6f 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 69 73 74 72 .5-turbo...................mistr
83a0 61 6c 61 69 2f 6d 69 78 74 72 61 6c 2d 38 78 37 62 2d 69 6e 73 74 72 75 63 74 0a 20 20 20 20 20 alai/mixtral-8x7b-instruct......
83c0 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 74 61 2d 6c 6c 61 6d 61 2f 63 6f 64 65 6c 6c 61 6d .............meta-llama/codellam
83e0 61 2d 33 34 62 2d 69 6e 73 74 72 75 63 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 a-34b-instruct..................
8400 20 63 6f 64 65 6c 6c 61 6d 61 2f 63 6f 64 65 6c 6c 61 6d 61 2d 37 30 62 2d 69 6e 73 74 72 75 63 .codellama/codellama-70b-instruc
8420 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 6f 6f 67 6c 65 2f 70 61 6c 6d 2d t...................google/palm-
8440 32 2d 63 6f 64 65 63 68 61 74 2d 62 69 73 6f 6e 2d 33 32 6b 0a 20 20 20 20 20 20 20 20 20 20 20 2-codechat-bison-32k............
8460 20 20 20 20 20 20 20 67 6f 6f 67 6c 65 2f 67 65 6d 69 6e 69 2d 70 72 6f 29 29 29 0a 0a 23 2b 65 .......google/gemini-pro)))..#+e
8480 6e 64 5f 73 72 63 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 23 2b 68 74 6d nd_src..#+html:.</details>.#+htm
84a0 6c 3a 20 3c 64 65 74 61 69 6c 73 3e 3c 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 50 72 69 76 61 l:.<details><summary>.****.Priva
84c0 74 65 47 50 54 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a 52 65 67 69 73 74 teGPT.#+html:.</summary>..Regist
84e0 65 72 20 61 20 62 61 63 6b 65 6e 64 20 77 69 74 68 0a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 er.a.backend.with..#+begin_src.e
8500 6d 61 63 73 2d 6c 69 73 70 0a 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 70 72 69 76 61 74 65 67 70 74 macs-lisp.(gptel-make-privategpt
8520 20 22 70 72 69 76 61 74 65 47 50 54 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 41 6e 79 ."privateGPT"...............;Any
8540 20 6e 61 6d 65 20 79 6f 75 20 77 61 6e 74 0a 20 20 3a 70 72 6f 74 6f 63 6f 6c 20 22 68 74 74 70 .name.you.want...:protocol."http
8560 22 0a 20 20 3a 68 6f 73 74 20 22 6c 6f 63 61 6c 68 6f 73 74 3a 38 30 30 31 22 0a 20 20 3a 73 74 "...:host."localhost:8001"...:st
8580 72 65 61 6d 20 74 0a 20 20 3a 63 6f 6e 74 65 78 74 20 74 20 20 20 20 20 20 20 20 20 20 20 20 20 ream.t...:context.t.............
85a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 55 73 65 20 63 6f 6e 74 65 78 74 20 70 72 6f 76 ...............;Use.context.prov
85c0 69 64 65 64 20 62 79 20 65 6d 62 65 64 64 69 6e 67 73 0a 20 20 3a 73 6f 75 72 63 65 73 20 74 20 ided.by.embeddings...:sources.t.
85e0 20 20 20 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 52 65 74 75 ...........................;Retu
8600 72 6e 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 73 6f 75 72 63 65 20 64 6f 63 75 rn.information.about.source.docu
8620 6d 65 6e 74 73 0a 20 20 3a 6d 6f 64 65 6c 73 20 27 28 70 72 69 76 61 74 65 2d 67 70 74 29 29 0a ments...:models.'(private-gpt)).
8640 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 59 6f 75 20 63 61 6e 20 70 69 63 6b 20 74 68 69 73 20 62 61 .#+end_src..You.can.pick.this.ba
8660 63 6b 65 6e 64 20 66 72 6f 6d 20 74 68 65 20 6d 65 6e 75 20 77 68 65 6e 20 75 73 69 6e 67 20 67 ckend.from.the.menu.when.using.g
8680 70 74 65 6c 20 28 73 65 65 20 5b 5b 23 75 73 61 67 65 5d 5b 55 73 61 67 65 5d 5d 29 2e 0a 0a 2a ptel.(see.[[#usage][Usage]])...*
86a0 2a 2a 2a 2a 20 28 4f 70 74 69 6f 6e 61 6c 29 20 53 65 74 20 61 73 20 74 68 65 20 64 65 66 61 75 ****.(Optional).Set.as.the.defau
86c0 6c 74 20 67 70 74 65 6c 20 62 61 63 6b 65 6e 64 0a 0a 54 68 65 20 61 62 6f 76 65 20 63 6f 64 65 lt.gptel.backend..The.above.code
86e0 20 6d 61 6b 65 73 20 74 68 65 20 62 61 63 6b 65 6e 64 20 61 76 61 69 6c 61 62 6c 65 20 74 6f 20 .makes.the.backend.available.to.
8700 73 65 6c 65 63 74 2e 20 20 49 66 20 79 6f 75 20 77 61 6e 74 20 69 74 20 74 6f 20 62 65 20 74 68 select...If.you.want.it.to.be.th
8720 65 20 64 65 66 61 75 6c 74 20 62 61 63 6b 65 6e 64 20 66 6f 72 20 67 70 74 65 6c 2c 20 79 6f 75 e.default.backend.for.gptel,.you
8740 20 63 61 6e 20 73 65 74 20 74 68 69 73 20 61 73 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 3d 67 .can.set.this.as.the.value.of.=g
8760 70 74 65 6c 2d 62 61 63 6b 65 6e 64 3d 2e 20 20 55 73 65 20 74 68 69 73 20 69 6e 73 74 65 61 64 ptel-backend=...Use.this.instead
8780 20 6f 66 20 74 68 65 20 61 62 6f 76 65 2e 0a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 .of.the.above...#+begin_src.emac
87a0 73 2d 6c 69 73 70 0a 3b 3b 20 4f 50 54 49 4f 4e 41 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e s-lisp.;;.OPTIONAL.configuration
87c0 0a 28 73 65 74 71 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 20 20 20 27 70 72 69 76 61 74 65 2d 67 70 .(setq.gptel-model...'private-gp
87e0 74 0a 20 20 20 20 20 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 0a 20 20 20 20 20 20 28 67 70 74 t.......gptel-backend.......(gpt
8800 65 6c 2d 6d 61 6b 65 2d 70 72 69 76 61 74 65 67 70 74 20 22 70 72 69 76 61 74 65 47 50 54 22 20 el-make-privategpt."privateGPT".
8820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 41 6e 79 20 6e 61 6d 65 20 79 6f 75 20 77 61 6e 74 ..............;Any.name.you.want
8840 0a 20 20 20 20 20 20 20 20 3a 70 72 6f 74 6f 63 6f 6c 20 22 68 74 74 70 22 0a 20 20 20 20 20 20 .........:protocol."http".......
8860 20 20 3a 68 6f 73 74 20 22 6c 6f 63 61 6c 68 6f 73 74 3a 38 30 30 31 22 0a 20 20 20 20 20 20 20 ..:host."localhost:8001"........
8880 20 3a 73 74 72 65 61 6d 20 74 0a 20 20 20 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 20 74 20 20 20 .:stream.t.........:context.t...
88a0 20 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 55 73 65 20 63 6f .........................;Use.co
88c0 6e 74 65 78 74 20 70 72 6f 76 69 64 65 64 20 62 79 20 65 6d 62 65 64 64 69 6e 67 73 0a 20 20 20 ntext.provided.by.embeddings....
88e0 20 20 20 20 20 3a 73 6f 75 72 63 65 73 20 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .....:sources.t.................
8900 20 20 20 20 20 20 20 20 20 20 20 3b 52 65 74 75 72 6e 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 ...........;Return.information.a
8920 62 6f 75 74 20 73 6f 75 72 63 65 20 64 6f 63 75 6d 65 6e 74 73 0a 20 20 20 20 20 20 20 20 3a 6d bout.source.documents.........:m
8940 6f 64 65 6c 73 20 27 28 70 72 69 76 61 74 65 2d 67 70 74 29 29 29 0a 0a 23 2b 65 6e 64 5f 73 72 odels.'(private-gpt)))..#+end_sr
8960 63 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 23 2b 68 74 6d 6c 3a 20 3c 64 c..#+html:.</details>.#+html:.<d
8980 65 74 61 69 6c 73 3e 3c 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 44 65 65 70 53 65 65 6b 0a 23 etails><summary>.****.DeepSeek.#
89a0 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a 52 65 67 69 73 74 65 72 20 61 20 62 61 +html:.</summary>..Register.a.ba
89c0 63 6b 65 6e 64 20 77 69 74 68 0a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 ckend.with..#+begin_src.emacs-li
89e0 73 70 0a 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 64 65 65 70 73 65 65 6b 20 22 44 65 65 70 53 65 65 sp.(gptel-make-deepseek."DeepSee
8a00 6b 22 20 20 20 20 20 20 20 3b 41 6e 79 20 6e 61 6d 65 20 79 6f 75 20 77 61 6e 74 0a 20 20 3a 73 k".......;Any.name.you.want...:s
8a20 74 72 65 61 6d 20 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 tream.t.........................
8a40 20 20 3b 66 6f 72 20 73 74 72 65 61 6d 69 6e 67 20 72 65 73 70 6f 6e 73 65 73 0a 20 20 3a 6b 65 ..;for.streaming.responses...:ke
8a60 79 20 22 79 6f 75 72 2d 61 70 69 2d 6b 65 79 22 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 y."your-api-key")...............
8a80 3b 63 61 6e 20 62 65 20 61 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 72 65 74 75 72 6e 73 20 ;can.be.a.function.that.returns.
8aa0 74 68 65 20 6b 65 79 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 59 6f 75 20 63 61 6e 20 70 69 63 6b 20 the.key.#+end_src..You.can.pick.
8ac0 74 68 69 73 20 62 61 63 6b 65 6e 64 20 66 72 6f 6d 20 74 68 65 20 6d 65 6e 75 20 77 68 65 6e 20 this.backend.from.the.menu.when.
8ae0 75 73 69 6e 67 20 67 70 74 65 6c 20 28 73 65 65 20 5b 5b 23 75 73 61 67 65 5d 5b 55 73 61 67 65 using.gptel.(see.[[#usage][Usage
8b00 5d 5d 29 2e 0a 0a 2a 2a 2a 2a 2a 20 28 4f 70 74 69 6f 6e 61 6c 29 20 53 65 74 20 61 73 20 74 68 ]])...*****.(Optional).Set.as.th
8b20 65 20 64 65 66 61 75 6c 74 20 67 70 74 65 6c 20 62 61 63 6b 65 6e 64 0a 0a 54 68 65 20 61 62 6f e.default.gptel.backend..The.abo
8b40 76 65 20 63 6f 64 65 20 6d 61 6b 65 73 20 74 68 65 20 62 61 63 6b 65 6e 64 20 61 76 61 69 6c 61 ve.code.makes.the.backend.availa
8b60 62 6c 65 20 74 6f 20 73 65 6c 65 63 74 2e 20 20 49 66 20 79 6f 75 20 77 61 6e 74 20 69 74 20 74 ble.to.select...If.you.want.it.t
8b80 6f 20 62 65 20 74 68 65 20 64 65 66 61 75 6c 74 20 62 61 63 6b 65 6e 64 20 66 6f 72 20 67 70 74 o.be.the.default.backend.for.gpt
8ba0 65 6c 2c 20 79 6f 75 20 63 61 6e 20 73 65 74 20 74 68 69 73 20 61 73 20 74 68 65 20 76 61 6c 75 el,.you.can.set.this.as.the.valu
8bc0 65 20 6f 66 20 3d 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 3d 2e 20 20 55 73 65 20 74 68 69 73 20 e.of.=gptel-backend=...Use.this.
8be0 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20 61 62 6f 76 65 2e 0a 0a 23 2b 62 65 67 69 6e 5f 73 instead.of.the.above...#+begin_s
8c00 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 3b 3b 20 4f 50 54 49 4f 4e 41 4c 20 63 6f 6e 66 69 67 rc.emacs-lisp.;;.OPTIONAL.config
8c20 75 72 61 74 69 6f 6e 0a 28 73 65 74 71 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 20 20 20 27 64 65 65 uration.(setq.gptel-model...'dee
8c40 70 73 65 65 6b 2d 72 65 61 73 6f 6e 65 72 0a 20 20 20 20 20 20 67 70 74 65 6c 2d 62 61 63 6b 65 pseek-reasoner.......gptel-backe
8c60 6e 64 20 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 64 65 65 70 73 65 65 6b 20 22 44 65 65 70 53 65 65 nd.(gptel-make-deepseek."DeepSee
8c80 6b 22 0a 20 20 20 20 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 k".......................:stream
8ca0 20 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6b 65 79 20 22 79 .t.......................:key."y
8cc0 6f 75 72 2d 61 70 69 2d 6b 65 79 22 29 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 23 2b 68 74 6d 6c our-api-key")).#+end_src..#+html
8ce0 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 74 61 69 6c 73 3e 3c 73 :.</details>.#+html:.<details><s
8d00 75 6d 6d 61 72 79 3e 0a 0a 2a 2a 2a 2a 20 53 61 6d 62 61 6e 6f 76 61 20 28 44 65 65 70 73 65 65 ummary>..****.Sambanova.(Deepsee
8d20 6b 29 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 53 61 6d 62 61 6e 6f 76 61 20 k).#+html:.</summary>.Sambanova.
8d40 6f 66 66 65 72 73 20 76 61 72 69 6f 75 73 20 4c 4c 4d 73 20 74 68 72 6f 75 67 68 20 74 68 65 69 offers.various.LLMs.through.thei
8d60 72 20 53 61 6d 62 61 20 4e 6f 76 61 20 43 6c 6f 75 64 20 6f 66 66 65 72 69 6e 67 2c 20 77 69 74 r.Samba.Nova.Cloud.offering,.wit
8d80 68 20 44 65 65 70 73 65 65 6b 2d 52 31 20 62 65 69 6e 67 20 6f 6e 65 20 6f 66 20 74 68 65 6d 2e h.Deepseek-R1.being.one.of.them.
8da0 20 54 68 65 20 74 6f 6b 65 6e 20 73 70 65 65 64 20 66 6f 72 20 44 65 65 70 73 65 65 6b 20 52 31 .The.token.speed.for.Deepseek.R1
8dc0 20 76 69 61 20 53 61 6d 62 61 6e 6f 76 61 20 69 73 20 61 62 6f 75 74 20 36 20 74 69 6d 65 73 20 .via.Sambanova.is.about.6.times.
8de0 66 61 73 74 65 72 20 74 68 61 6e 20 77 68 65 6e 20 61 63 63 65 73 73 65 64 20 74 68 72 6f 75 67 faster.than.when.accessed.throug
8e00 68 20 64 65 65 70 73 65 65 6b 2e 63 6f 6d 20 0a 0a 52 65 67 69 73 74 65 72 20 61 20 62 61 63 6b h.deepseek.com...Register.a.back
8e20 65 6e 64 20 77 69 74 68 0a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 end.with..#+begin_src.emacs-lisp
8e40 0a 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 20 22 53 61 6d 62 61 6e 6f 76 61 22 20 .(gptel-make-openai."Sambanova".
8e60 20 20 20 20 20 20 20 3b 41 6e 79 20 6e 61 6d 65 20 79 6f 75 20 77 61 6e 74 0a 20 20 3a 68 6f 73 .......;Any.name.you.want...:hos
8e80 74 20 22 61 70 69 2e 73 61 6d 62 61 6e 6f 76 61 2e 61 69 22 0a 20 20 3a 65 6e 64 70 6f 69 6e 74 t."api.sambanova.ai"...:endpoint
8ea0 20 22 2f 76 31 2f 63 68 61 74 2f 63 6f 6d 70 6c 65 74 69 6f 6e 73 22 0a 20 20 3a 73 74 72 65 61 ."/v1/chat/completions"...:strea
8ec0 6d 20 74 20 20 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 66 6f m.t..........................;fo
8ee0 72 20 73 74 72 65 61 6d 69 6e 67 20 72 65 73 70 6f 6e 73 65 73 0a 20 20 3a 6b 65 79 20 22 79 6f r.streaming.responses...:key."yo
8f00 75 72 2d 61 70 69 2d 6b 65 79 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 63 61 6e 20 62 ur-api-key"...............;can.b
8f20 65 20 61 20 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 e.a.function.that.returns.the.ke
8f40 79 0a 20 20 3a 6d 6f 64 65 6c 73 20 27 28 44 65 65 70 53 65 65 6b 2d 52 31 29 29 0a 23 2b 65 6e y...:models.'(DeepSeek-R1)).#+en
8f60 64 5f 73 72 63 0a 0a 59 6f 75 20 63 61 6e 20 70 69 63 6b 20 74 68 69 73 20 62 61 63 6b 65 6e 64 d_src..You.can.pick.this.backend
8f80 20 66 72 6f 6d 20 74 68 65 20 6d 65 6e 75 20 77 68 65 6e 20 75 73 69 6e 67 20 67 70 74 65 6c 20 .from.the.menu.when.using.gptel.
8fa0 28 73 65 65 20 5b 5b 23 75 73 61 67 65 5d 5b 55 73 61 67 65 5d 5d 29 2e 0a 0a 2a 2a 2a 2a 2a 20 (see.[[#usage][Usage]])...*****.
8fc0 28 4f 70 74 69 6f 6e 61 6c 29 20 53 65 74 20 61 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 67 70 (Optional).Set.as.the.default.gp
8fe0 74 65 6c 20 62 61 63 6b 65 6e 64 0a 54 68 65 20 63 6f 64 65 20 61 62 6f 76 65 73 20 6d 61 6b 65 tel.backend.The.code.aboves.make
9000 73 20 74 68 65 20 62 61 63 6b 65 6e 64 20 61 76 61 69 6c 61 62 6c 65 20 66 6f 72 20 73 65 6c 65 s.the.backend.available.for.sele
9020 63 74 69 6f 6e 2e 20 20 49 66 20 79 6f 75 20 77 61 6e 74 20 69 74 20 74 6f 20 62 65 20 74 68 65 ction...If.you.want.it.to.be.the
9040 20 64 65 66 61 75 6c 74 20 62 61 63 6b 65 6e 64 20 66 6f 72 20 67 70 74 65 6c 2c 20 79 6f 75 20 .default.backend.for.gptel,.you.
9060 63 61 6e 20 73 65 74 20 74 68 69 73 20 61 73 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 3d 67 70 can.set.this.as.the.value.of.=gp
9080 74 65 6c 2d 62 61 63 6b 65 6e 64 3d 2e 20 20 41 64 64 20 74 68 65 73 65 20 74 77 6f 20 6c 69 6e tel-backend=...Add.these.two.lin
90a0 65 73 20 74 6f 20 79 6f 75 72 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 3a 20 0a 0a 23 2b 62 65 es.to.your.configuration:...#+be
90c0 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 3b 3b 20 4f 50 54 49 4f 4e 41 4c 20 63 gin_src.emacs-lisp.;;.OPTIONAL.c
90e0 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0a 20 20 28 73 65 74 71 20 67 70 74 65 6c 2d 6d 6f 64 65 6c onfiguration...(setq.gptel-model
9100 20 27 44 65 65 70 53 65 65 6b 2d 52 31 29 0a 20 20 28 73 65 74 71 20 67 70 74 65 6c 2d 62 61 63 .'DeepSeek-R1)...(setq.gptel-bac
9120 6b 65 6e 64 20 28 67 70 74 65 6c 2d 67 65 74 2d 62 61 63 6b 65 6e 64 20 22 53 61 6d 62 61 6e 6f kend.(gptel-get-backend."Sambano
9140 76 61 22 29 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 va")).#+end_src..#+html:.</detai
9160 6c 73 3e 0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 74 61 69 6c 73 3e 3c 73 75 6d 6d 61 72 79 3e 0a 0a ls>.#+html:.<details><summary>..
9180 2a 2a 2a 2a 20 43 65 72 65 62 72 61 73 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e ****.Cerebras.#+html:.</summary>
91a0 0a 0a 52 65 67 69 73 74 65 72 20 61 20 62 61 63 6b 65 6e 64 20 77 69 74 68 0a 0a 23 2b 62 65 67 ..Register.a.backend.with..#+beg
91c0 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 3b 3b 20 43 65 72 65 62 72 61 73 20 6f 66 in_src.emacs-lisp.;;.Cerebras.of
91e0 66 65 72 73 20 61 6e 20 69 6e 73 74 61 6e 74 20 4f 70 65 6e 41 49 20 63 6f 6d 70 61 74 69 62 6c fers.an.instant.OpenAI.compatibl
9200 65 20 41 50 49 0a 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 20 22 43 65 72 65 62 72 e.API.(gptel-make-openai."Cerebr
9220 61 73 22 0a 20 20 3a 68 6f 73 74 20 22 61 70 69 2e 63 65 72 65 62 72 61 73 2e 61 69 22 0a 20 20 as"...:host."api.cerebras.ai"...
9240 3a 65 6e 64 70 6f 69 6e 74 20 22 2f 76 31 2f 63 68 61 74 2f 63 6f 6d 70 6c 65 74 69 6f 6e 73 22 :endpoint."/v1/chat/completions"
9260 0a 20 20 3a 73 74 72 65 61 6d 20 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ...:stream.t....................
9280 20 20 20 20 20 20 20 20 20 3b 6f 70 74 69 6f 6e 61 6c 6c 79 20 6e 69 6c 20 61 73 20 43 65 72 65 .........;optionally.nil.as.Cere
92a0 62 72 61 73 20 69 73 20 69 6e 73 74 61 6e 74 20 41 49 0a 20 20 3a 6b 65 79 20 22 79 6f 75 72 2d bras.is.instant.AI...:key."your-
92c0 61 70 69 2d 6b 65 79 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 63 61 6e 20 api-key"...................;can.
92e0 62 65 20 61 20 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 be.a.function.that.returns.the.k
9300 65 79 0a 20 20 3a 6d 6f 64 65 6c 73 20 27 28 6c 6c 61 6d 61 33 2e 31 2d 37 30 62 0a 20 20 20 20 ey...:models.'(llama3.1-70b.....
9320 20 20 20 20 20 20 20 20 6c 6c 61 6d 61 33 2e 31 2d 38 62 29 29 0a 23 2b 65 6e 64 5f 73 72 63 0a ........llama3.1-8b)).#+end_src.
9340 0a 59 6f 75 20 63 61 6e 20 70 69 63 6b 20 74 68 69 73 20 62 61 63 6b 65 6e 64 20 66 72 6f 6d 20 .You.can.pick.this.backend.from.
9360 74 68 65 20 6d 65 6e 75 20 77 68 65 6e 20 75 73 69 6e 67 20 67 70 74 65 6c 20 28 73 65 65 20 5b the.menu.when.using.gptel.(see.[
9380 5b 23 75 73 61 67 65 5d 5b 55 73 61 67 65 5d 5d 29 2e 0a 0a 2a 2a 2a 2a 2a 20 28 4f 70 74 69 6f [#usage][Usage]])...*****.(Optio
93a0 6e 61 6c 29 20 53 65 74 20 61 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 67 70 74 65 6c 20 62 61 nal).Set.as.the.default.gptel.ba
93c0 63 6b 65 6e 64 0a 0a 54 68 65 20 61 62 6f 76 65 20 63 6f 64 65 20 6d 61 6b 65 73 20 74 68 65 20 ckend..The.above.code.makes.the.
93e0 62 61 63 6b 65 6e 64 20 61 76 61 69 6c 61 62 6c 65 20 74 6f 20 73 65 6c 65 63 74 2e 20 20 49 66 backend.available.to.select...If
9400 20 79 6f 75 20 77 61 6e 74 20 69 74 20 74 6f 20 62 65 20 74 68 65 20 64 65 66 61 75 6c 74 20 62 .you.want.it.to.be.the.default.b
9420 61 63 6b 65 6e 64 20 66 6f 72 20 67 70 74 65 6c 2c 20 79 6f 75 20 63 61 6e 20 73 65 74 20 74 68 ackend.for.gptel,.you.can.set.th
9440 69 73 20 61 73 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 3d 67 70 74 65 6c 2d 62 61 63 6b 65 6e is.as.the.value.of.=gptel-backen
9460 64 3d 2e 20 20 55 73 65 20 74 68 69 73 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20 61 62 6f d=...Use.this.instead.of.the.abo
9480 76 65 2e 0a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 3b 3b 20 4f ve...#+begin_src.emacs-lisp.;;.O
94a0 50 54 49 4f 4e 41 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0a 28 73 65 74 71 20 67 70 74 65 PTIONAL.configuration.(setq.gpte
94c0 6c 2d 6d 6f 64 65 6c 20 20 20 27 6c 6c 61 6d 61 33 2e 31 2d 38 62 0a 20 20 20 20 20 20 67 70 74 l-model...'llama3.1-8b.......gpt
94e0 65 6c 2d 62 61 63 6b 65 6e 64 0a 20 20 20 20 20 20 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 el-backend.......(gptel-make-ope
9500 6e 61 69 20 22 43 65 72 65 62 72 61 73 22 0a 20 20 20 20 20 20 20 20 3a 68 6f 73 74 20 22 61 70 nai."Cerebras".........:host."ap
9520 69 2e 63 65 72 65 62 72 61 73 2e 61 69 22 0a 20 20 20 20 20 20 20 20 3a 65 6e 64 70 6f 69 6e 74 i.cerebras.ai".........:endpoint
9540 20 22 2f 76 31 2f 63 68 61 74 2f 63 6f 6d 70 6c 65 74 69 6f 6e 73 22 0a 20 20 20 20 20 20 20 20 ."/v1/chat/completions".........
9560 3a 73 74 72 65 61 6d 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 3a 6b 65 79 20 22 79 6f 75 72 2d 61 :stream.nil.........:key."your-a
9580 70 69 2d 6b 65 79 22 0a 20 20 20 20 20 20 20 20 3a 6d 6f 64 65 6c 73 20 27 28 6c 6c 61 6d 61 33 pi-key".........:models.'(llama3
95a0 2e 31 2d 37 30 62 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6c 61 6d 61 33 2e .1-70b...................llama3.
95c0 31 2d 38 62 29 29 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 1-8b))).#+end_src..#+html:.</det
95e0 61 69 6c 73 3e 0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 74 61 69 6c 73 3e 3c 73 75 6d 6d 61 72 79 3e ails>.#+html:.<details><summary>
9600 0a 2a 2a 2a 2a 20 47 69 74 68 75 62 20 4d 6f 64 65 6c 73 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 .****.Github.Models.#+html:.</su
9620 6d 6d 61 72 79 3e 0a 0a 4e 4f 54 45 3a 20 20 5b 5b 68 74 74 70 73 3a 2f 2f 64 6f 63 73 2e 67 69 mmary>..NOTE:..[[https://docs.gi
9640 74 68 75 62 2e 63 6f 6d 2f 65 6e 2f 67 69 74 68 75 62 2d 6d 6f 64 65 6c 73 2f 61 62 6f 75 74 2d thub.com/en/github-models/about-
9660 67 69 74 68 75 62 2d 6d 6f 64 65 6c 73 5d 5b 47 69 74 48 75 62 20 4d 6f 64 65 6c 73 5d 5d 20 69 github-models][GitHub.Models]].i
9680 73 20 2f 6e 6f 74 2f 20 47 69 74 48 75 62 20 43 6f 70 69 6c 6f 74 21 20 20 49 66 20 79 6f 75 20 s./not/.GitHub.Copilot!..If.you.
96a0 77 61 6e 74 20 74 6f 20 75 73 65 20 47 69 74 48 75 62 20 43 6f 70 69 6c 6f 74 20 63 68 61 74 20 want.to.use.GitHub.Copilot.chat.
96c0 76 69 61 20 67 70 74 65 6c 2c 20 6c 6f 6f 6b 20 61 74 20 74 68 65 20 69 6e 73 74 72 75 63 74 69 via.gptel,.look.at.the.instructi
96e0 6f 6e 73 20 66 6f 72 20 47 69 74 48 75 62 20 43 6f 70 69 6c 6f 74 43 68 61 74 20 62 65 6c 6f 77 ons.for.GitHub.CopilotChat.below
9700 20 69 6e 73 74 65 61 64 2e 0a 0a 52 65 67 69 73 74 65 72 20 61 20 62 61 63 6b 65 6e 64 20 77 69 .instead...Register.a.backend.wi
9720 74 68 0a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 20 20 3b 3b 20 th..#+begin_src.emacs-lisp...;;.
9740 47 69 74 68 75 62 20 4d 6f 64 65 6c 73 20 6f 66 66 65 72 73 20 61 6e 20 4f 70 65 6e 41 49 20 63 Github.Models.offers.an.OpenAI.c
9760 6f 6d 70 61 74 69 62 6c 65 20 41 50 49 0a 20 20 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e ompatible.API...(gptel-make-open
9780 61 69 20 22 47 69 74 68 75 62 20 4d 6f 64 65 6c 73 22 20 3b 41 6e 79 20 6e 61 6d 65 20 79 6f 75 ai."Github.Models".;Any.name.you
97a0 20 77 61 6e 74 0a 20 20 20 20 3a 68 6f 73 74 20 22 6d 6f 64 65 6c 73 2e 69 6e 66 65 72 65 6e 63 .want.....:host."models.inferenc
97c0 65 2e 61 69 2e 61 7a 75 72 65 2e 63 6f 6d 22 0a 20 20 20 20 3a 65 6e 64 70 6f 69 6e 74 20 22 2f e.ai.azure.com".....:endpoint."/
97e0 63 68 61 74 2f 63 6f 6d 70 6c 65 74 69 6f 6e 73 3f 61 70 69 2d 76 65 72 73 69 6f 6e 3d 32 30 32 chat/completions?api-version=202
9800 34 2d 30 35 2d 30 31 2d 70 72 65 76 69 65 77 22 0a 20 20 20 20 3a 73 74 72 65 61 6d 20 74 0a 20 4-05-01-preview".....:stream.t..
9820 20 20 20 3a 6b 65 79 20 22 79 6f 75 72 2d 67 69 74 68 75 62 2d 74 6f 6b 65 6e 22 0a 20 20 20 20 ...:key."your-github-token".....
9840 3a 6d 6f 64 65 6c 73 20 27 28 67 70 74 2d 34 6f 29 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 59 6f :models.'(gpt-4o)).#+end_src..Yo
9860 75 20 77 69 6c 6c 20 6e 65 65 64 20 74 6f 20 63 72 65 61 74 65 20 61 20 67 69 74 68 75 62 20 5b u.will.need.to.create.a.github.[
9880 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 73 65 74 74 69 6e 67 73 2f 70 65 72 [https://github.com/settings/per
98a0 73 6f 6e 61 6c 2d 61 63 63 65 73 73 2d 74 6f 6b 65 6e 73 5d 5b 74 6f 6b 65 6e 5d 5d 2e 0a 0a 46 sonal-access-tokens][token]]...F
98c0 6f 72 20 61 6c 6c 20 74 68 65 20 61 76 61 69 6c 61 62 6c 65 20 6d 6f 64 65 6c 73 2c 20 63 68 65 or.all.the.available.models,.che
98e0 63 6b 20 74 68 65 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6d 61 72 6b ck.the.[[https://github.com/mark
9900 65 74 70 6c 61 63 65 2f 6d 6f 64 65 6c 73 5d 5b 6d 61 72 6b 65 74 70 6c 61 63 65 5d 5d 2e 0a 0a etplace/models][marketplace]]...
9920 59 6f 75 20 63 61 6e 20 70 69 63 6b 20 74 68 69 73 20 62 61 63 6b 65 6e 64 20 66 72 6f 6d 20 74 You.can.pick.this.backend.from.t
9940 68 65 20 6d 65 6e 75 20 77 68 65 6e 20 75 73 69 6e 67 20 28 73 65 65 20 5b 5b 23 75 73 61 67 65 he.menu.when.using.(see.[[#usage
9960 5d 5b 55 73 61 67 65 5d 5d 29 2e 0a 0a 2a 2a 2a 2a 2a 20 28 4f 70 74 69 6f 6e 61 6c 29 20 53 65 ][Usage]])...*****.(Optional).Se
9980 74 20 61 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 67 70 74 65 6c 20 62 61 63 6b 65 6e 64 0a 0a t.as.the.default.gptel.backend..
99a0 54 68 65 20 61 62 6f 76 65 20 63 6f 64 65 20 6d 61 6b 65 73 20 74 68 65 20 62 61 63 6b 65 6e 64 The.above.code.makes.the.backend
99c0 20 61 76 61 69 6c 61 62 6c 65 20 74 6f 20 73 65 6c 65 63 74 2e 20 20 49 66 20 79 6f 75 20 77 61 .available.to.select...If.you.wa
99e0 6e 74 20 69 74 20 74 6f 20 62 65 20 74 68 65 20 64 65 66 61 75 6c 74 20 62 61 63 6b 65 6e 64 20 nt.it.to.be.the.default.backend.
9a00 66 6f 72 20 67 70 74 65 6c 2c 20 79 6f 75 20 63 61 6e 20 73 65 74 20 74 68 69 73 20 61 73 20 74 for.gptel,.you.can.set.this.as.t
9a20 68 65 20 76 61 6c 75 65 20 6f 66 20 3d 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 3d 2e 20 20 55 73 he.value.of.=gptel-backend=...Us
9a40 65 20 74 68 69 73 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20 61 62 6f 76 65 2e 0a 0a 23 2b e.this.instead.of.the.above...#+
9a60 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 20 20 3b 3b 20 4f 50 54 49 4f 4e begin_src.emacs-lisp...;;.OPTION
9a80 41 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0a 20 20 28 73 65 74 71 20 67 70 74 65 6c 2d 6d AL.configuration...(setq.gptel-m
9aa0 6f 64 65 6c 20 20 27 67 70 74 2d 34 6f 0a 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 62 61 63 6b odel..'gpt-4o.........gptel-back
9ac0 65 6e 64 0a 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 20 22 end.........(gptel-make-openai."
9ae0 47 69 74 68 75 62 20 4d 6f 64 65 6c 73 22 20 3b 41 6e 79 20 6e 61 6d 65 20 79 6f 75 20 77 61 6e Github.Models".;Any.name.you.wan
9b00 74 0a 20 20 20 20 20 20 20 20 20 20 3a 68 6f 73 74 20 22 6d 6f 64 65 6c 73 2e 69 6e 66 65 72 65 t...........:host."models.infere
9b20 6e 63 65 2e 61 69 2e 61 7a 75 72 65 2e 63 6f 6d 22 0a 20 20 20 20 20 20 20 20 20 20 3a 65 6e 64 nce.ai.azure.com"...........:end
9b40 70 6f 69 6e 74 20 22 2f 63 68 61 74 2f 63 6f 6d 70 6c 65 74 69 6f 6e 73 3f 61 70 69 2d 76 65 72 point."/chat/completions?api-ver
9b60 73 69 6f 6e 3d 32 30 32 34 2d 30 35 2d 30 31 2d 70 72 65 76 69 65 77 22 0a 20 20 20 20 20 20 20 sion=2024-05-01-preview"........
9b80 20 20 20 3a 73 74 72 65 61 6d 20 74 0a 20 20 20 20 20 20 20 20 20 20 3a 6b 65 79 20 22 79 6f 75 ...:stream.t...........:key."you
9ba0 72 2d 67 69 74 68 75 62 2d 74 6f 6b 65 6e 22 0a 20 20 20 20 20 20 20 20 20 20 3a 6d 6f 64 65 6c r-github-token"...........:model
9bc0 73 20 27 28 67 70 74 2d 34 6f 29 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 23 2b 68 74 6d 6c 3a 20 s.'(gpt-4o)).#+end_src..#+html:.
9be0 3c 2f 64 65 74 61 69 6c 73 3e 0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 74 61 69 6c 73 3e 3c 73 75 6d </details>.#+html:.<details><sum
9c00 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 4e 6f 76 69 74 61 20 41 49 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 mary>.****.Novita.AI.#+html:.</s
9c20 75 6d 6d 61 72 79 3e 0a 0a 52 65 67 69 73 74 65 72 20 61 20 62 61 63 6b 65 6e 64 20 77 69 74 68 ummary>..Register.a.backend.with
9c40 0a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 3b 3b 20 4e 6f 76 69 ..#+begin_src.emacs-lisp.;;.Novi
9c60 74 61 20 41 49 20 6f 66 66 65 72 73 20 61 6e 20 4f 70 65 6e 41 49 20 63 6f 6d 70 61 74 69 62 6c ta.AI.offers.an.OpenAI.compatibl
9c80 65 20 41 50 49 0a 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 20 22 4e 6f 76 69 74 61 e.API.(gptel-make-openai."Novita
9ca0 41 49 22 20 20 20 20 20 20 20 20 20 3b 41 6e 79 20 6e 61 6d 65 20 79 6f 75 20 77 61 6e 74 0a 20 AI".........;Any.name.you.want..
9cc0 20 3a 68 6f 73 74 20 22 61 70 69 2e 6e 6f 76 69 74 61 2e 61 69 22 0a 20 20 3a 65 6e 64 70 6f 69 .:host."api.novita.ai"...:endpoi
9ce0 6e 74 20 22 2f 76 33 2f 6f 70 65 6e 61 69 22 0a 20 20 3a 6b 65 79 20 22 79 6f 75 72 2d 61 70 69 nt."/v3/openai"...:key."your-api
9d00 2d 6b 65 79 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 63 61 6e 20 62 65 20 -key"...................;can.be.
9d20 61 20 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 0a a.function.that.returns.the.key.
9d40 20 20 3a 73 74 72 65 61 6d 20 74 0a 20 20 3a 6d 6f 64 65 6c 73 20 27 28 3b 3b 20 68 61 73 20 6d ..:stream.t...:models.'(;;.has.m
9d60 61 6e 79 20 6d 6f 72 65 2c 20 63 68 65 63 6b 20 68 74 74 70 73 3a 2f 2f 6e 6f 76 69 74 61 2e 61 any.more,.check.https://novita.a
9d80 69 2f 6c 6c 6d 2d 61 70 69 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 72 79 70 68 65 2f 6d 79 74 i/llm-api.............gryphe/myt
9da0 68 6f 6d 61 78 2d 6c 32 2d 31 33 62 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 74 61 2d 6c 6c homax-l2-13b.............meta-ll
9dc0 61 6d 61 2f 6c 6c 61 6d 61 2d 33 2d 37 30 62 2d 69 6e 73 74 72 75 63 74 0a 20 20 20 20 20 20 20 ama/llama-3-70b-instruct........
9de0 20 20 20 20 20 6d 65 74 61 2d 6c 6c 61 6d 61 2f 6c 6c 61 6d 61 2d 33 2e 31 2d 37 30 62 2d 69 6e .....meta-llama/llama-3.1-70b-in
9e00 73 74 72 75 63 74 29 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 59 6f 75 20 63 61 6e 20 70 69 63 6b struct)).#+end_src..You.can.pick
9e20 20 74 68 69 73 20 62 61 63 6b 65 6e 64 20 66 72 6f 6d 20 74 68 65 20 6d 65 6e 75 20 77 68 65 6e .this.backend.from.the.menu.when
9e40 20 75 73 69 6e 67 20 67 70 74 65 6c 20 28 73 65 65 20 5b 5b 23 75 73 61 67 65 5d 5b 55 73 61 67 .using.gptel.(see.[[#usage][Usag
9e60 65 5d 5d 29 0a 0a 2a 2a 2a 2a 2a 20 28 4f 70 74 69 6f 6e 61 6c 29 20 53 65 74 20 61 73 20 74 68 e]])..*****.(Optional).Set.as.th
9e80 65 20 64 65 66 61 75 6c 74 20 67 70 74 65 6c 20 62 61 63 6b 65 6e 64 0a 0a 54 68 65 20 61 62 6f e.default.gptel.backend..The.abo
9ea0 76 65 20 63 6f 64 65 20 6d 61 6b 65 73 20 74 68 65 20 62 61 63 6b 65 6e 64 20 61 76 61 69 6c 61 ve.code.makes.the.backend.availa
9ec0 62 6c 65 20 74 6f 20 73 65 6c 65 63 74 2e 20 20 49 66 20 79 6f 75 20 77 61 6e 74 20 69 74 20 74 ble.to.select...If.you.want.it.t
9ee0 6f 20 62 65 20 74 68 65 20 64 65 66 61 75 6c 74 20 62 61 63 6b 65 6e 64 20 66 6f 72 20 67 70 74 o.be.the.default.backend.for.gpt
9f00 65 6c 2c 20 79 6f 75 20 63 61 6e 20 73 65 74 20 74 68 69 73 20 61 73 20 74 68 65 20 76 61 6c 75 el,.you.can.set.this.as.the.valu
9f20 65 20 6f 66 20 3d 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 3d 2e 20 20 55 73 65 20 74 68 69 73 20 e.of.=gptel-backend=...Use.this.
9f40 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20 61 62 6f 76 65 2e 0a 0a 23 2b 62 65 67 69 6e 5f 73 instead.of.the.above...#+begin_s
9f60 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 3b 3b 20 4f 50 54 49 4f 4e 41 4c 20 63 6f 6e 66 69 67 rc.emacs-lisp.;;.OPTIONAL.config
9f80 75 72 61 74 69 6f 6e 0a 28 73 65 74 71 0a 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 20 20 20 27 67 72 uration.(setq..gptel-model...'gr
9fa0 79 70 68 65 2f 6d 79 74 68 6f 6d 61 78 2d 6c 32 2d 31 33 62 0a 20 67 70 74 65 6c 2d 62 61 63 6b yphe/mythomax-l2-13b..gptel-back
9fc0 65 6e 64 0a 20 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 20 22 4e 6f 76 69 74 61 41 end..(gptel-make-openai."NovitaA
9fe0 49 22 20 20 20 20 20 20 20 20 20 0a 20 20 20 3a 68 6f 73 74 20 22 61 70 69 2e 6e 6f 76 69 74 61 I".............:host."api.novita
a000 2e 61 69 22 0a 20 20 20 3a 65 6e 64 70 6f 69 6e 74 20 22 2f 76 33 2f 6f 70 65 6e 61 69 22 0a 20 .ai"....:endpoint."/v3/openai"..
a020 20 20 3a 6b 65 79 20 22 79 6f 75 72 2d 61 70 69 2d 6b 65 79 22 20 20 20 20 20 20 20 20 20 20 20 ..:key."your-api-key"...........
a040 20 20 20 20 20 20 20 20 0a 20 20 20 3a 73 74 72 65 61 6d 20 74 0a 20 20 20 3a 6d 6f 64 65 6c 73 ............:stream.t....:models
a060 20 27 28 3b 3b 20 68 61 73 20 6d 61 6e 79 20 6d 6f 72 65 2c 20 63 68 65 63 6b 20 68 74 74 70 73 .'(;;.has.many.more,.check.https
a080 3a 2f 2f 6e 6f 76 69 74 61 2e 61 69 2f 6c 6c 6d 2d 61 70 69 0a 20 20 20 20 20 20 20 20 20 20 20 ://novita.ai/llm-api............
a0a0 20 20 6d 69 73 74 72 61 6c 61 69 2f 4d 69 78 74 72 61 6c 2d 38 78 37 42 2d 49 6e 73 74 72 75 63 ..mistralai/Mixtral-8x7B-Instruc
a0c0 74 2d 76 30 2e 31 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 74 61 2d 6c 6c 61 6d 61 2f 6c t-v0.1..............meta-llama/l
a0e0 6c 61 6d 61 2d 33 2d 37 30 62 2d 69 6e 73 74 72 75 63 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 lama-3-70b-instruct.............
a100 20 6d 65 74 61 2d 6c 6c 61 6d 61 2f 6c 6c 61 6d 61 2d 33 2e 31 2d 37 30 62 2d 69 6e 73 74 72 75 .meta-llama/llama-3.1-70b-instru
a120 63 74 29 29 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 ct))).#+end_src..#+html:.</detai
a140 6c 73 3e 0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 74 61 69 6c 73 3e 3c 73 75 6d 6d 61 72 79 3e 0a 2a ls>.#+html:.<details><summary>.*
a160 2a 2a 2a 20 78 41 49 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a 52 65 67 69 ***.xAI.#+html:.</summary>..Regi
a180 73 74 65 72 20 61 20 62 61 63 6b 65 6e 64 20 77 69 74 68 0a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 ster.a.backend.with..#+begin_src
a1a0 20 65 6d 61 63 73 2d 6c 69 73 70 0a 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 78 61 69 20 22 78 41 49 .emacs-lisp.(gptel-make-xai."xAI
a1c0 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 41 6e 79 20 6e 61 6d 65 20 79 "...................;.Any.name.y
a1e0 6f 75 20 77 61 6e 74 0a 20 20 3a 73 74 72 65 61 6d 20 74 0a 20 20 3a 6b 65 79 20 22 79 6f 75 72 ou.want...:stream.t...:key."your
a200 2d 61 70 69 2d 6b 65 79 22 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 63 61 -api-key")..................;.ca
a220 6e 20 62 65 20 61 20 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 n.be.a.function.that.returns.the
a240 20 6b 65 79 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 59 6f 75 20 63 61 6e 20 70 69 63 6b 20 74 68 69 .key.#+end_src..You.can.pick.thi
a260 73 20 62 61 63 6b 65 6e 64 20 66 72 6f 6d 20 74 68 65 20 6d 65 6e 75 20 77 68 65 6e 20 75 73 69 s.backend.from.the.menu.when.usi
a280 6e 67 20 67 70 74 65 6c 20 28 73 65 65 20 5b 5b 23 75 73 61 67 65 5d 5b 55 73 61 67 65 5d 5d 29 ng.gptel.(see.[[#usage][Usage]])
a2a0 0a 0a 2a 2a 2a 2a 2a 20 28 4f 70 74 69 6f 6e 61 6c 29 20 53 65 74 20 61 73 20 74 68 65 20 64 65 ..*****.(Optional).Set.as.the.de
a2c0 66 61 75 6c 74 20 67 70 74 65 6c 20 62 61 63 6b 65 6e 64 0a 0a 54 68 65 20 61 62 6f 76 65 20 63 fault.gptel.backend..The.above.c
a2e0 6f 64 65 20 6d 61 6b 65 73 20 74 68 65 20 62 61 63 6b 65 6e 64 20 61 76 61 69 6c 61 62 6c 65 20 ode.makes.the.backend.available.
a300 74 6f 20 73 65 6c 65 63 74 2e 20 20 49 66 20 79 6f 75 20 77 61 6e 74 20 69 74 20 74 6f 20 62 65 to.select...If.you.want.it.to.be
a320 20 74 68 65 20 64 65 66 61 75 6c 74 20 62 61 63 6b 65 6e 64 20 66 6f 72 20 67 70 74 65 6c 2c 20 .the.default.backend.for.gptel,.
a340 79 6f 75 20 63 61 6e 20 73 65 74 20 74 68 69 73 20 61 73 20 74 68 65 20 76 61 6c 75 65 20 6f 66 you.can.set.this.as.the.value.of
a360 20 3d 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 3d 2e 20 20 55 73 65 20 74 68 69 73 20 69 6e 73 74 .=gptel-backend=...Use.this.inst
a380 65 61 64 20 6f 66 20 74 68 65 20 61 62 6f 76 65 2e 0a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 ead.of.the.above...#+begin_src.e
a3a0 6d 61 63 73 2d 6c 69 73 70 0a 28 73 65 74 71 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 20 27 67 72 6f macs-lisp.(setq.gptel-model.'gro
a3c0 6b 2d 33 2d 6c 61 74 65 73 74 0a 20 20 20 20 20 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 0a 20 k-3-latest.......gptel-backend..
a3e0 20 20 20 20 20 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 78 61 69 20 22 78 41 49 22 20 20 20 20 20 20 .....(gptel-make-xai."xAI"......
a400 20 20 20 20 20 20 20 20 20 3b 20 41 6e 79 20 6e 61 6d 65 20 79 6f 75 20 77 61 6e 74 0a 20 20 20 .........;.Any.name.you.want....
a420 20 20 20 20 20 3a 6b 65 79 20 22 79 6f 75 72 2d 61 70 69 2d 6b 65 79 22 20 3b 20 63 61 6e 20 62 .....:key."your-api-key".;.can.b
a440 65 20 61 20 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 e.a.function.that.returns.the.ke
a460 79 0a 20 20 20 20 20 20 20 20 3a 73 74 72 65 61 6d 20 74 29 29 0a 23 2b 65 6e 64 5f 73 72 63 0a y.........:stream.t)).#+end_src.
a480 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 74 .#+html:.</details>.#+html:.<det
a4a0 61 69 6c 73 3e 3c 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 41 49 2f 4d 4c 20 41 50 49 0a 23 2b ails><summary>.****.AI/ML.API.#+
a4c0 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a 41 49 2f 4d 4c 20 41 50 49 20 70 72 6f 76 html:.</summary>..AI/ML.API.prov
a4e0 69 64 65 73 20 33 30 30 2b 20 41 49 20 6d 6f 64 65 6c 73 20 69 6e 63 6c 75 64 69 6e 67 20 44 65 ides.300+.AI.models.including.De
a500 65 70 73 65 65 6b 2c 20 47 65 6d 69 6e 69 2c 20 43 68 61 74 47 50 54 2e 20 54 68 65 20 6d 6f 64 epseek,.Gemini,.ChatGPT..The.mod
a520 65 6c 73 20 72 75 6e 20 61 74 20 65 6e 74 65 72 70 72 69 73 65 2d 67 72 61 64 65 20 72 61 74 65 els.run.at.enterprise-grade.rate
a540 20 6c 69 6d 69 74 73 20 61 6e 64 20 75 70 74 69 6d 65 73 2e 0a 0a 52 65 67 69 73 74 65 72 20 61 .limits.and.uptimes...Register.a
a560 20 62 61 63 6b 65 6e 64 20 77 69 74 68 0a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 .backend.with..#+begin_src.emacs
a580 2d 6c 69 73 70 0a 3b 3b 20 41 49 2f 4d 4c 20 41 50 49 20 6f 66 66 65 72 73 20 61 6e 20 4f 70 65 -lisp.;;.AI/ML.API.offers.an.Ope
a5a0 6e 41 49 20 63 6f 6d 70 61 74 69 62 6c 65 20 41 50 49 0a 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f nAI.compatible.API.(gptel-make-o
a5c0 70 65 6e 61 69 20 22 41 49 2f 4d 4c 20 41 50 49 22 20 20 20 20 20 20 20 20 3b 41 6e 79 20 6e 61 penai."AI/ML.API"........;Any.na
a5e0 6d 65 20 79 6f 75 20 77 61 6e 74 0a 20 20 3a 68 6f 73 74 20 22 61 70 69 2e 61 69 6d 6c 61 70 69 me.you.want...:host."api.aimlapi
a600 2e 63 6f 6d 22 0a 20 20 3a 65 6e 64 70 6f 69 6e 74 20 22 2f 76 31 2f 63 68 61 74 2f 63 6f 6d 70 .com"...:endpoint."/v1/chat/comp
a620 6c 65 74 69 6f 6e 73 22 0a 20 20 3a 73 74 72 65 61 6d 20 74 0a 20 20 3a 6b 65 79 20 22 79 6f 75 letions"...:stream.t...:key."you
a640 72 2d 61 70 69 2d 6b 65 79 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 63 61 6e 20 62 r-api-key"................;can.b
a660 65 20 61 20 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 e.a.function.that.returns.the.ke
a680 79 0a 20 20 3a 6d 6f 64 65 6c 73 20 27 28 64 65 65 70 73 65 65 6b 2d 63 68 61 74 20 67 65 6d 69 y...:models.'(deepseek-chat.gemi
a6a0 6e 69 2d 70 72 6f 20 67 70 74 2d 34 6f 29 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 59 6f 75 20 63 ni-pro.gpt-4o)).#+end_src..You.c
a6c0 61 6e 20 70 69 63 6b 20 74 68 69 73 20 62 61 63 6b 65 6e 64 20 66 72 6f 6d 20 74 68 65 20 6d 65 an.pick.this.backend.from.the.me
a6e0 6e 75 20 77 68 65 6e 20 75 73 69 6e 67 20 67 70 74 65 6c 20 28 73 65 65 20 5b 5b 23 75 73 61 67 nu.when.using.gptel.(see.[[#usag
a700 65 5d 5b 55 73 61 67 65 5d 5d 29 2e 0a 0a 2a 2a 2a 2a 2a 20 28 4f 70 74 69 6f 6e 61 6c 29 20 53 e][Usage]])...*****.(Optional).S
a720 65 74 20 61 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 67 70 74 65 6c 20 62 61 63 6b 65 6e 64 0a et.as.the.default.gptel.backend.
a740 0a 54 68 65 20 61 62 6f 76 65 20 63 6f 64 65 20 6d 61 6b 65 73 20 74 68 65 20 62 61 63 6b 65 6e .The.above.code.makes.the.backen
a760 64 20 61 76 61 69 6c 61 62 6c 65 20 74 6f 20 73 65 6c 65 63 74 2e 20 20 49 66 20 79 6f 75 20 77 d.available.to.select...If.you.w
a780 61 6e 74 20 69 74 20 74 6f 20 62 65 20 74 68 65 20 64 65 66 61 75 6c 74 20 62 61 63 6b 65 6e 64 ant.it.to.be.the.default.backend
a7a0 20 66 6f 72 20 67 70 74 65 6c 2c 20 79 6f 75 20 63 61 6e 20 73 65 74 20 74 68 69 73 20 61 73 20 .for.gptel,.you.can.set.this.as.
a7c0 74 68 65 20 76 61 6c 75 65 20 6f 66 20 3d 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 3d 2e 20 20 55 the.value.of.=gptel-backend=...U
a7e0 73 65 20 74 68 69 73 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20 61 62 6f 76 65 2e 0a 0a 23 se.this.instead.of.the.above...#
a800 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 3b 3b 20 4f 50 54 49 4f 4e 41 +begin_src.emacs-lisp.;;.OPTIONA
a820 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0a 28 73 65 74 71 20 67 70 74 65 6c 2d 6d 6f 64 65 L.configuration.(setq.gptel-mode
a840 6c 20 27 67 70 74 2d 34 6f 0a 20 20 20 20 20 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 0a 20 20 l.'gpt-4o.......gptel-backend...
a860 20 20 20 20 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 20 22 41 49 2f 4d 4c 20 41 50 ....(gptel-make-openai."AI/ML.AP
a880 49 22 0a 20 20 20 20 20 20 20 20 3a 68 6f 73 74 20 22 61 70 69 2e 61 69 6d 6c 61 70 69 2e 63 6f I".........:host."api.aimlapi.co
a8a0 6d 22 0a 20 20 20 20 20 20 20 20 3a 65 6e 64 70 6f 69 6e 74 20 22 2f 76 31 2f 63 68 61 74 2f 63 m".........:endpoint."/v1/chat/c
a8c0 6f 6d 70 6c 65 74 69 6f 6e 73 22 0a 20 20 20 20 20 20 20 20 3a 73 74 72 65 61 6d 20 74 0a 20 20 ompletions".........:stream.t...
a8e0 20 20 20 20 20 20 3a 6b 65 79 20 22 79 6f 75 72 2d 61 70 69 2d 6b 65 79 22 0a 20 20 20 20 20 20 ......:key."your-api-key".......
a900 20 20 3a 6d 6f 64 65 6c 73 20 27 28 64 65 65 70 73 65 65 6b 2d 63 68 61 74 20 67 65 6d 69 6e 69 ..:models.'(deepseek-chat.gemini
a920 2d 70 72 6f 20 67 70 74 2d 34 6f 29 29 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 23 2b 68 74 6d 6c -pro.gpt-4o))).#+end_src..#+html
a940 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 74 61 69 6c 73 3e 3c 73 :.</details>.#+html:.<details><s
a960 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 47 69 74 48 75 62 20 43 6f 70 69 6c 6f 74 43 68 61 74 0a ummary>.****.GitHub.CopilotChat.
a980 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a 52 65 67 69 73 74 65 72 20 61 20 62 #+html:.</summary>..Register.a.b
a9a0 61 63 6b 65 6e 64 20 77 69 74 68 0a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c ackend.with..#+begin_src.emacs-l
a9c0 69 73 70 0a 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 67 68 2d 63 6f 70 69 6c 6f 74 20 22 43 6f 70 69 isp.(gptel-make-gh-copilot."Copi
a9e0 6c 6f 74 22 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 59 6f 75 20 77 69 6c 6c 20 62 65 20 69 6e 66 lot").#+end_src..You.will.be.inf
aa00 6f 72 6d 65 64 20 74 6f 20 6c 6f 67 69 6e 20 69 6e 74 6f 20 3d 47 69 74 48 75 62 3d 20 61 73 20 ormed.to.login.into.=GitHub=.as.
aa20 72 65 71 75 69 72 65 64 2e 0a 59 6f 75 20 63 61 6e 20 70 69 63 6b 20 74 68 69 73 20 62 61 63 6b required..You.can.pick.this.back
aa40 65 6e 64 20 66 72 6f 6d 20 74 68 65 20 6d 65 6e 75 20 77 68 65 6e 20 75 73 69 6e 67 20 67 70 74 end.from.the.menu.when.using.gpt
aa60 65 6c 20 28 73 65 65 20 5b 5b 23 75 73 61 67 65 5d 5b 55 73 61 67 65 5d 5d 29 2e 0a 0a 2a 2a 2a el.(see.[[#usage][Usage]])...***
aa80 2a 2a 20 28 4f 70 74 69 6f 6e 61 6c 29 20 53 65 74 20 61 73 20 74 68 65 20 64 65 66 61 75 6c 74 **.(Optional).Set.as.the.default
aaa0 20 67 70 74 65 6c 20 62 61 63 6b 65 6e 64 0a 0a 54 68 65 20 61 62 6f 76 65 20 63 6f 64 65 20 6d .gptel.backend..The.above.code.m
aac0 61 6b 65 73 20 74 68 65 20 62 61 63 6b 65 6e 64 20 61 76 61 69 6c 61 62 6c 65 20 74 6f 20 73 65 akes.the.backend.available.to.se
aae0 6c 65 63 74 2e 20 20 49 66 20 79 6f 75 20 77 61 6e 74 20 69 74 20 74 6f 20 62 65 20 74 68 65 20 lect...If.you.want.it.to.be.the.
ab00 64 65 66 61 75 6c 74 20 62 61 63 6b 65 6e 64 20 66 6f 72 20 67 70 74 65 6c 2c 20 79 6f 75 20 63 default.backend.for.gptel,.you.c
ab20 61 6e 20 73 65 74 20 74 68 69 73 20 61 73 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 3d 67 70 74 an.set.this.as.the.value.of.=gpt
ab40 65 6c 2d 62 61 63 6b 65 6e 64 3d 2e 20 20 55 73 65 20 74 68 69 73 20 69 6e 73 74 65 61 64 20 6f el-backend=...Use.this.instead.o
ab60 66 20 74 68 65 20 61 62 6f 76 65 2e 0a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d f.the.above...#+begin_src.emacs-
ab80 6c 69 73 70 0a 3b 3b 20 4f 50 54 49 4f 4e 41 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0a 28 lisp.;;.OPTIONAL.configuration.(
aba0 73 65 74 71 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 20 27 63 6c 61 75 64 65 2d 33 2e 37 2d 73 6f 6e setq.gptel-model.'claude-3.7-son
abc0 6e 65 74 0a 20 20 20 20 20 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 28 67 70 74 65 6c 2d 6d net.......gptel-backend.(gptel-m
abe0 61 6b 65 2d 67 68 2d 63 6f 70 69 6c 6f 74 20 22 43 6f 70 69 6c 6f 74 22 29 29 0a 23 2b 65 6e 64 ake-gh-copilot."Copilot")).#+end
ac00 5f 73 72 63 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 23 2b 68 74 6d 6c 3a _src..#+html:.</details>.#+html:
ac20 20 3c 64 65 74 61 69 6c 73 3e 3c 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 41 57 53 20 42 65 64 .<details><summary>.****.AWS.Bed
ac40 72 6f 63 6b 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a 52 65 67 69 73 74 65 rock.#+html:.</summary>..Registe
ac60 72 20 61 20 62 61 63 6b 65 6e 64 20 77 69 74 68 0a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d r.a.backend.with..#+begin_src.em
ac80 61 63 73 2d 6c 69 73 70 0a 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 62 65 64 72 6f 63 6b 20 22 41 57 acs-lisp.(gptel-make-bedrock."AW
aca0 53 22 0a 20 20 3b 3b 20 6f 70 74 69 6f 6e 61 6c 6c 79 20 65 6e 61 62 6c 65 20 73 74 72 65 61 6d S"...;;.optionally.enable.stream
acc0 69 6e 67 0a 20 20 3a 73 74 72 65 61 6d 20 74 0a 20 20 3a 72 65 67 69 6f 6e 20 22 61 70 2d 6e 6f ing...:stream.t...:region."ap-no
ace0 72 74 68 65 61 73 74 2d 31 22 0a 20 20 3b 3b 20 73 75 62 73 65 74 20 6f 66 20 67 70 74 65 6c 2d rtheast-1"...;;.subset.of.gptel-
ad00 2d 62 65 64 72 6f 63 6b 2d 6d 6f 64 65 6c 73 0a 20 20 3a 6d 6f 64 65 6c 73 20 27 28 63 6c 61 75 -bedrock-models...:models.'(clau
ad20 64 65 2d 73 6f 6e 6e 65 74 2d 34 2d 32 30 32 35 30 35 31 34 29 0a 20 20 3b 3b 20 4d 6f 64 65 6c de-sonnet-4-20250514)...;;.Model
ad40 20 72 65 67 69 6f 6e 20 66 6f 72 20 63 72 6f 73 73 2d 72 65 67 69 6f 6e 20 69 6e 66 65 72 65 6e .region.for.cross-region.inferen
ad60 63 65 20 70 72 6f 66 69 6c 65 73 2e 20 52 65 71 75 69 72 65 64 20 66 6f 72 20 6d 6f 64 65 6c 73 ce.profiles..Required.for.models
ad80 20 73 75 63 68 0a 20 20 3b 3b 20 61 73 20 43 6c 61 75 64 65 20 77 69 74 68 6f 75 74 20 6f 6e 2d .such...;;.as.Claude.without.on-
ada0 64 65 6d 61 6e 64 20 74 68 72 6f 75 67 68 70 75 74 20 73 75 70 70 6f 72 74 2e 20 4f 6e 65 20 6f demand.throughput.support..One.o
adc0 66 20 27 61 70 61 63 2c 20 27 65 75 20 6f 72 20 27 75 73 2e 0a 20 20 3b 3b 20 68 74 74 70 73 3a f.'apac,.'eu.or.'us....;;.https:
ade0 2f 2f 64 6f 63 73 2e 61 77 73 2e 61 6d 61 7a 6f 6e 2e 63 6f 6d 2f 62 65 64 72 6f 63 6b 2f 6c 61 //docs.aws.amazon.com/bedrock/la
ae00 74 65 73 74 2f 75 73 65 72 67 75 69 64 65 2f 69 6e 66 65 72 65 6e 63 65 2d 70 72 6f 66 69 6c 65 test/userguide/inference-profile
ae20 73 2d 75 73 65 2e 68 74 6d 6c 0a 20 20 3a 6d 6f 64 65 6c 2d 72 65 67 69 6f 6e 20 27 61 70 61 63 s-use.html...:model-region.'apac
ae40 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 54 68 65 20 42 65 64 72 6f 63 6b 20 62 61 63 6b 65 6e 64 ).#+end_src..The.Bedrock.backend
ae60 20 67 65 74 73 20 79 6f 75 72 20 41 57 53 20 63 72 65 64 65 6e 74 69 61 6c 73 20 66 72 6f 6d 20 .gets.your.AWS.credentials.from.
ae80 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 73 2e 20 49 74 20 65 78 the.environment.variables..It.ex
aea0 70 65 63 74 73 20 74 6f 20 66 69 6e 64 20 65 69 74 68 65 72 0a 7e 41 57 53 5f 41 43 43 45 53 53 pects.to.find.either.~AWS_ACCESS
aec0 5f 4b 45 59 5f 49 44 7e 2c 20 7e 41 57 53 5f 53 45 43 52 45 54 5f 41 43 43 45 53 53 5f 4b 45 59 _KEY_ID~,.~AWS_SECRET_ACCESS_KEY
aee0 7e 2c 20 7e 41 57 53 5f 53 45 53 53 49 4f 4e 5f 54 4f 4b 45 4e 7e 20 28 6f 70 74 69 6f 6e 61 6c ~,.~AWS_SESSION_TOKEN~.(optional
af00 29 2c 20 6f 72 20 69 66 20 70 72 65 73 65 6e 74 2c 20 63 61 6e 20 75 73 65 20 7e 41 57 53 5f 50 ),.or.if.present,.can.use.~AWS_P
af20 52 4f 46 49 4c 45 7e 20 74 6f 20 67 65 74 20 74 68 65 73 65 20 64 69 72 65 63 74 6c 79 20 66 72 ROFILE~.to.get.these.directly.fr
af40 6f 6d 20 74 68 65 20 7e 61 77 73 7e 20 63 6c 69 2e 0a 0a 4e 4f 54 45 3a 20 54 68 65 20 42 65 64 om.the.~aws~.cli...NOTE:.The.Bed
af60 72 6f 63 6b 20 62 61 63 6b 65 6e 64 20 6e 65 65 64 73 20 63 75 72 6c 20 3e 3d 20 38 2e 35 20 69 rock.backend.needs.curl.>=.8.5.i
af80 6e 20 6f 72 64 65 72 20 66 6f 72 20 74 68 65 20 73 69 67 76 34 20 73 69 67 6e 69 6e 67 20 74 6f n.order.for.the.sigv4.signing.to
afa0 20 77 6f 72 6b 20 70 72 6f 70 65 72 6c 79 2c 0a 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 .work.properly,.https://github.c
afc0 6f 6d 2f 63 75 72 6c 2f 63 75 72 6c 2f 69 73 73 75 65 73 2f 31 31 37 39 34 0a 0a 41 6e 20 65 72 om/curl/curl/issues/11794..An.er
afe0 72 6f 72 20 77 69 6c 6c 20 62 65 20 73 69 67 6e 61 6c 6c 65 64 20 69 66 20 7e 67 70 74 65 6c 2d ror.will.be.signalled.if.~gptel-
b000 63 75 72 6c 7e 20 69 73 20 7e 4e 49 4c 7e 2e 0a 0a 59 6f 75 20 63 61 6e 20 70 69 63 6b 20 74 68 curl~.is.~NIL~...You.can.pick.th
b020 69 73 20 62 61 63 6b 65 6e 64 20 66 72 6f 6d 20 74 68 65 20 6d 65 6e 75 20 77 68 65 6e 20 75 73 is.backend.from.the.menu.when.us
b040 69 6e 67 20 67 70 74 65 6c 20 28 73 65 65 20 5b 5b 23 75 73 61 67 65 5d 5b 55 73 61 67 65 5d 5d ing.gptel.(see.[[#usage][Usage]]
b060 29 2e 0a 0a 2a 2a 2a 2a 2a 20 28 4f 70 74 69 6f 6e 61 6c 29 20 53 65 74 20 61 73 20 74 68 65 20 )...*****.(Optional).Set.as.the.
b080 64 65 66 61 75 6c 74 20 67 70 74 65 6c 20 62 61 63 6b 65 6e 64 0a 0a 54 68 65 20 61 62 6f 76 65 default.gptel.backend..The.above
b0a0 20 63 6f 64 65 20 6d 61 6b 65 73 20 74 68 65 20 62 61 63 6b 65 6e 64 20 61 76 61 69 6c 61 62 6c .code.makes.the.backend.availabl
b0c0 65 20 74 6f 20 73 65 6c 65 63 74 2e 20 20 49 66 20 79 6f 75 20 77 61 6e 74 20 69 74 20 74 6f 20 e.to.select...If.you.want.it.to.
b0e0 62 65 20 74 68 65 20 64 65 66 61 75 6c 74 20 62 61 63 6b 65 6e 64 20 66 6f 72 20 67 70 74 65 6c be.the.default.backend.for.gptel
b100 2c 20 79 6f 75 20 63 61 6e 20 73 65 74 20 74 68 69 73 20 61 73 20 74 68 65 20 76 61 6c 75 65 20 ,.you.can.set.this.as.the.value.
b120 6f 66 20 3d 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 3d 2e 20 20 55 73 65 20 74 68 69 73 20 69 6e of.=gptel-backend=...Use.this.in
b140 73 74 65 61 64 20 6f 66 20 74 68 65 20 61 62 6f 76 65 2e 0a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 stead.of.the.above...#+begin_src
b160 20 65 6d 61 63 73 2d 6c 69 73 70 0a 3b 3b 20 4f 50 54 49 4f 4e 41 4c 20 63 6f 6e 66 69 67 75 72 .emacs-lisp.;;.OPTIONAL.configur
b180 61 74 69 6f 6e 0a 28 73 65 74 71 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 20 20 20 27 63 6c 61 75 64 ation.(setq.gptel-model...'claud
b1a0 65 2d 73 6f 6e 6e 65 74 2d 34 2d 32 30 32 35 30 35 31 34 0a 20 20 20 20 20 20 67 70 74 65 6c 2d e-sonnet-4-20250514.......gptel-
b1c0 62 61 63 6b 65 6e 64 0a 20 20 20 20 20 20 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 62 65 64 72 6f 63 backend.......(gptel-make-bedroc
b1e0 6b 20 22 41 57 53 22 0a 20 20 20 20 20 20 20 20 3b 3b 20 6f 70 74 69 6f 6e 61 6c 6c 79 20 65 6e k."AWS".........;;.optionally.en
b200 61 62 6c 65 20 73 74 72 65 61 6d 69 6e 67 0a 20 20 20 20 20 20 20 20 3a 73 74 72 65 61 6d 20 74 able.streaming.........:stream.t
b220 0a 20 20 20 20 20 20 20 20 3a 72 65 67 69 6f 6e 20 22 61 70 2d 6e 6f 72 74 68 65 61 73 74 2d 31 .........:region."ap-northeast-1
b240 22 0a 20 20 20 20 20 20 20 20 3b 3b 20 73 75 62 73 65 74 20 6f 66 20 67 70 74 65 6c 2d 2d 62 65 ".........;;.subset.of.gptel--be
b260 64 72 6f 63 6b 2d 6d 6f 64 65 6c 73 0a 20 20 20 20 20 20 20 20 3a 6d 6f 64 65 6c 73 20 27 28 63 drock-models.........:models.'(c
b280 6c 61 75 64 65 2d 73 6f 6e 6e 65 74 2d 34 2d 32 30 32 35 30 35 31 34 29 0a 20 20 20 20 20 20 20 laude-sonnet-4-20250514)........
b2a0 20 3b 3b 20 4d 6f 64 65 6c 20 72 65 67 69 6f 6e 20 66 6f 72 20 63 72 6f 73 73 2d 72 65 67 69 6f .;;.Model.region.for.cross-regio
b2c0 6e 20 69 6e 66 65 72 65 6e 63 65 20 70 72 6f 66 69 6c 65 73 2e 20 52 65 71 75 69 72 65 64 20 66 n.inference.profiles..Required.f
b2e0 6f 72 20 6d 6f 64 65 6c 73 20 73 75 63 68 0a 20 20 20 20 20 20 20 20 3b 3b 20 61 73 20 43 6c 61 or.models.such.........;;.as.Cla
b300 75 64 65 20 77 69 74 68 6f 75 74 20 6f 6e 2d 64 65 6d 61 6e 64 20 74 68 72 6f 75 67 68 70 75 74 ude.without.on-demand.throughput
b320 20 73 75 70 70 6f 72 74 2e 20 4f 6e 65 20 6f 66 20 27 61 70 61 63 2c 20 27 65 75 20 6f 72 20 27 .support..One.of.'apac,.'eu.or.'
b340 75 73 2e 0a 20 20 20 20 20 20 20 20 3b 3b 20 68 74 74 70 73 3a 2f 2f 64 6f 63 73 2e 61 77 73 2e us..........;;.https://docs.aws.
b360 61 6d 61 7a 6f 6e 2e 63 6f 6d 2f 62 65 64 72 6f 63 6b 2f 6c 61 74 65 73 74 2f 75 73 65 72 67 75 amazon.com/bedrock/latest/usergu
b380 69 64 65 2f 69 6e 66 65 72 65 6e 63 65 2d 70 72 6f 66 69 6c 65 73 2d 75 73 65 2e 68 74 6d 6c 0a ide/inference-profiles-use.html.
b3a0 20 20 20 20 20 20 20 20 3a 6d 6f 64 65 6c 2d 72 65 67 69 6f 6e 20 27 61 70 61 63 29 29 0a 23 2b ........:model-region.'apac)).#+
b3c0 65 6e 64 5f 73 72 63 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 23 2b 68 74 end_src..#+html:.</details>.#+ht
b3e0 6d 6c 3a 20 3c 64 65 74 61 69 6c 73 3e 3c 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 4d 6f 6f 6e ml:.<details><summary>.****.Moon
b400 73 68 6f 74 20 28 4b 69 6d 69 29 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a shot.(Kimi).#+html:.</summary>..
b420 52 65 67 69 73 74 65 72 20 61 20 62 61 63 6b 65 6e 64 20 77 69 74 68 0a 0a 23 2b 62 65 67 69 6e Register.a.backend.with..#+begin
b440 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e _src.emacs-lisp.(gptel-make-open
b460 61 69 20 22 4d 6f 6f 6e 73 68 6f 74 22 0a 20 20 3a 68 6f 73 74 20 22 61 70 69 2e 6d 6f 6f 6e 73 ai."Moonshot"...:host."api.moons
b480 68 6f 74 2e 63 6e 22 20 3b 3b 20 6f 72 20 22 61 70 69 2e 6d 6f 6f 6e 73 68 6f 74 2e 61 69 22 20 hot.cn".;;.or."api.moonshot.ai".
b4a0 66 6f 72 20 74 68 65 20 67 6c 6f 62 61 6c 20 73 69 74 65 0a 20 20 3a 6b 65 79 20 22 79 6f 75 72 for.the.global.site...:key."your
b4c0 2d 61 70 69 2d 6b 65 79 22 0a 20 20 3a 73 74 72 65 61 6d 20 74 20 3b 3b 20 6f 70 74 69 6f 6e 61 -api-key"...:stream.t.;;.optiona
b4e0 6c 6c 79 20 65 6e 61 62 6c 65 20 73 74 72 65 61 6d 69 6e 67 0a 20 20 3a 6d 6f 64 65 6c 73 20 27 lly.enable.streaming...:models.'
b500 28 6b 69 6d 69 2d 6c 61 74 65 73 74 20 6b 69 6d 69 2d 6b 32 2d 30 37 31 31 2d 70 72 65 76 69 65 (kimi-latest.kimi-k2-0711-previe
b520 77 29 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 53 65 65 20 5b 5b 68 74 74 70 73 3a 2f 2f 70 6c 61 w)).#+end_src..See.[[https://pla
b540 74 66 6f 72 6d 2e 6d 6f 6f 6e 73 68 6f 74 2e 61 69 2f 64 6f 63 73 2f 70 72 69 63 69 6e 67 2f 63 tform.moonshot.ai/docs/pricing/c
b560 68 61 74 5d 5b 4d 6f 6f 6e 73 68 6f 74 2e 61 69 20 64 6f 63 75 6d 65 6e 74 5d 5d 20 66 6f 72 20 hat][Moonshot.ai.document]].for.
b580 61 20 63 6f 6d 70 6c 65 74 65 20 6c 69 73 74 20 6f 66 20 6d 6f 64 65 6c 73 2e 0a 0a 2a 2a 2a 2a a.complete.list.of.models...****
b5a0 2a 20 28 4f 70 74 69 6f 6e 61 6c 29 20 55 73 65 20 74 68 65 20 62 75 69 6c 74 69 6e 20 73 65 61 *.(Optional).Use.the.builtin.sea
b5c0 72 63 68 20 74 6f 6f 6c 0a 0a 4d 6f 6f 6e 73 68 6f 74 20 73 75 70 70 6f 72 74 73 20 61 20 62 75 rch.tool..Moonshot.supports.a.bu
b5e0 69 6c 74 69 6e 20 73 65 61 72 63 68 20 74 6f 6f 6c 20 74 68 61 74 20 64 6f 65 73 20 6e 6f 74 20 iltin.search.tool.that.does.not.
b600 72 65 71 75 69 72 65 73 20 74 68 65 20 75 73 65 72 20 74 6f 20 70 72 6f 76 69 64 65 20 74 68 65 requires.the.user.to.provide.the
b620 20 74 6f 6f 6c 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 20 54 6f 20 75 73 65 20 74 68 61 .tool.implementation..To.use.tha
b640 74 2c 20 79 6f 75 20 66 69 72 73 74 20 6e 65 65 64 20 74 6f 20 64 65 66 69 6e 65 20 74 68 65 20 t,.you.first.need.to.define.the.
b660 74 6f 6f 6c 20 61 6e 64 20 61 64 64 20 74 6f 20 3d 67 70 74 65 6c 2d 74 6f 6f 6c 73 3d 20 28 77 tool.and.add.to.=gptel-tools=.(w
b680 68 69 6c 65 20 69 74 20 64 6f 65 73 20 6e 6f 74 20 72 65 71 75 69 72 65 73 20 74 68 65 20 63 6c hile.it.does.not.requires.the.cl
b6a0 69 65 6e 74 20 74 6f 20 70 72 6f 76 69 64 65 20 74 68 65 20 73 65 61 72 63 68 20 69 6d 70 6c 65 ient.to.provide.the.search.imple
b6c0 6d 65 6e 74 61 74 69 6f 6e 2c 20 69 74 20 64 6f 65 73 20 65 78 70 65 63 74 73 20 74 68 65 20 63 mentation,.it.does.expects.the.c
b6e0 6c 69 65 6e 74 20 74 6f 20 72 65 70 6c 79 20 61 20 74 6f 6f 6c 20 63 61 6c 6c 20 6d 65 73 73 61 lient.to.reply.a.tool.call.messa
b700 67 65 20 77 69 74 68 20 69 74 73 20 67 69 76 65 6e 20 61 72 67 75 6d 65 6e 74 2c 20 74 6f 20 62 ge.with.its.given.argument,.to.b
b720 65 20 63 6f 6e 73 69 73 74 65 6e 74 20 77 69 74 68 20 6f 74 68 65 72 20 74 6f 6f 6c 20 63 61 6c e.consistent.with.other.tool.cal
b740 6c 73 29 3a 0a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 28 73 65 ls):..#+begin_src.emacs-lisp.(se
b760 74 71 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 0a 20 20 20 20 20 20 28 6c 69 73 74 20 28 67 70 74 65 tq.gptel-tools.......(list.(gpte
b780 6c 2d 6d 61 6b 65 2d 74 6f 6f 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6e 61 6d 65 20 22 l-make-tool..............:name."
b7a0 24 77 65 62 5f 73 65 61 72 63 68 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 66 75 6e 63 74 $web_search"..............:funct
b7c0 69 6f 6e 20 28 6c 61 6d 62 64 61 20 28 26 6f 70 74 69 6f 6e 61 6c 20 73 65 61 72 63 68 5f 72 65 ion.(lambda.(&optional.search_re
b7e0 73 75 6c 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 28 sult)..........................(
b800 6a 73 6f 6e 2d 73 65 72 69 61 6c 69 7a 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 json-serialize..................
b820 20 20 20 20 20 20 20 20 20 60 28 3a 73 65 61 72 63 68 5f 72 65 73 75 6c 74 20 2c 73 65 61 72 63 .........`(:search_result.,searc
b840 68 5f 72 65 73 75 6c 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 64 65 73 63 72 69 h_result)))..............:descri
b860 70 74 69 6f 6e 20 22 4d 6f 6f 6e 73 68 6f 74 20 62 75 69 6c 74 69 6e 20 77 65 62 20 73 65 61 72 ption."Moonshot.builtin.web.sear
b880 63 68 2e 20 4f 6e 6c 79 20 75 73 61 62 6c 65 20 62 79 20 6d 6f 6f 6e 73 68 6f 74 20 6d 6f 64 65 ch..Only.usable.by.moonshot.mode
b8a0 6c 20 28 6b 69 6d 69 29 2c 20 69 67 6e 6f 72 65 20 74 68 69 73 20 69 66 20 79 6f 75 20 61 72 65 l.(kimi),.ignore.this.if.you.are
b8c0 20 6e 6f 74 2e 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 61 72 67 73 20 27 28 28 3a 6e 61 .not."..............:args.'((:na
b8e0 6d 65 20 22 73 65 61 72 63 68 5f 72 65 73 75 6c 74 22 20 3a 74 79 70 65 20 6f 62 6a 65 63 74 20 me."search_result".:type.object.
b900 3a 6f 70 74 69 6f 6e 61 6c 20 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 61 74 65 :optional.t))..............:cate
b920 67 6f 72 79 20 22 77 65 62 22 29 29 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 54 68 65 6e 20 79 6f gory."web"))).#+end_src..Then.yo
b940 75 20 61 6c 73 6f 20 6e 65 65 64 20 74 6f 20 61 64 64 20 74 68 65 20 74 6f 6f 6c 20 64 65 63 6c u.also.need.to.add.the.tool.decl
b960 61 72 61 74 69 6f 6e 20 76 69 61 20 3d 3a 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 3d 20 62 65 aration.via.=:request-params=.be
b980 63 61 75 73 65 20 69 74 20 6e 65 65 64 73 20 61 20 73 70 65 63 69 61 6c 20 3d 62 75 69 6c 74 69 cause.it.needs.a.special.=builti
b9a0 6e 5f 66 75 6e 63 74 69 6f 6e 3d 20 74 79 70 65 3a 0a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 n_function=.type:..#+begin_src.e
b9c0 6d 61 63 73 2d 6c 69 73 70 0a 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 20 22 4d 6f macs-lisp.(gptel-make-openai."Mo
b9e0 6f 6e 73 68 6f 74 22 0a 20 20 3a 68 6f 73 74 20 22 61 70 69 2e 6d 6f 6f 6e 73 68 6f 74 2e 63 6e onshot"...:host."api.moonshot.cn
ba00 22 20 3b 3b 20 6f 72 20 22 61 70 69 2e 6d 6f 6f 6e 73 68 6f 74 2e 61 69 22 20 66 6f 72 20 74 68 ".;;.or."api.moonshot.ai".for.th
ba20 65 20 67 6c 6f 62 61 6c 20 73 69 74 65 0a 20 20 3a 6b 65 79 20 22 79 6f 75 72 2d 61 70 69 2d 6b e.global.site...:key."your-api-k
ba40 65 79 22 0a 20 20 3a 73 74 72 65 61 6d 20 74 20 3b 3b 20 6f 70 74 69 6f 6e 61 6c 6c 79 20 65 6e ey"...:stream.t.;;.optionally.en
ba60 61 62 6c 65 20 73 74 72 65 61 6d 69 6e 67 0a 20 20 3a 6d 6f 64 65 6c 73 20 27 28 6b 69 6d 69 2d able.streaming...:models.'(kimi-
ba80 6c 61 74 65 73 74 20 6b 69 6d 69 2d 6b 32 2d 30 37 31 31 2d 70 72 65 76 69 65 77 29 0a 20 20 3a latest.kimi-k2-0711-preview)...:
baa0 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 20 27 28 3a 74 6f 6f 6c 73 20 5b 28 3a 74 79 70 65 20 request-params.'(:tools.[(:type.
bac0 22 62 75 69 6c 74 69 6e 5f 66 75 6e 63 74 69 6f 6e 22 20 3a 66 75 6e 63 74 69 6f 6e 20 28 3a 6e "builtin_function".:function.(:n
bae0 61 6d 65 20 22 24 77 65 62 5f 73 65 61 72 63 68 22 29 29 5d 29 29 0a 23 2b 65 6e 64 5f 73 72 63 ame."$web_search"))])).#+end_src
bb00 0a 0a 4e 6f 77 20 74 68 65 20 63 68 61 74 20 73 68 6f 75 6c 64 20 62 65 20 61 62 6c 65 20 74 6f ..Now.the.chat.should.be.able.to
bb20 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 75 73 65 20 73 65 61 72 63 68 2e 20 54 72 79 20 22 .automatically.use.search..Try."
bb40 77 68 61 74 27 73 20 6e 65 77 20 74 6f 64 61 79 22 20 61 6e 64 20 79 6f 75 20 73 68 6f 75 6c 64 what's.new.today".and.you.should
bb60 20 65 78 70 65 63 74 20 74 68 65 20 75 70 2d 74 6f 2d 64 61 74 65 20 6e 65 77 73 20 69 6e 20 72 .expect.the.up-to-date.news.in.r
bb80 65 73 70 6f 6e 73 65 2e 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 2a 2a 20 esponse...#+html:.</details>.**.
bba0 55 73 61 67 65 0a 0a 67 70 74 65 6c 20 70 72 6f 76 69 64 65 73 20 61 20 66 65 77 20 70 6f 77 65 Usage..gptel.provides.a.few.powe
bbc0 72 66 75 6c 2c 20 67 65 6e 65 72 61 6c 20 70 75 72 70 6f 73 65 20 61 6e 64 20 66 6c 65 78 69 62 rful,.general.purpose.and.flexib
bbe0 6c 65 20 63 6f 6d 6d 61 6e 64 73 2e 20 20 59 6f 75 20 63 61 6e 20 64 79 6e 61 6d 69 63 61 6c 6c le.commands...You.can.dynamicall
bc00 79 20 74 77 65 61 6b 20 74 68 65 69 72 20 62 65 68 61 76 69 6f 72 20 74 6f 20 74 68 65 20 6e 65 y.tweak.their.behavior.to.the.ne
bc20 65 64 73 20 6f 66 20 79 6f 75 72 20 74 61 73 6b 20 77 69 74 68 20 2f 64 69 72 65 63 74 69 76 65 eds.of.your.task.with./directive
bc40 73 2f 2c 20 72 65 64 69 72 65 63 74 69 6f 6e 20 6f 70 74 69 6f 6e 73 20 61 6e 64 20 6d 6f 72 65 s/,.redirection.options.and.more
bc60 2e 20 20 54 68 65 72 65 20 69 73 20 61 20 5b 5b 68 74 74 70 73 3a 2f 2f 77 77 77 2e 79 6f 75 74 ...There.is.a.[[https://www.yout
bc80 75 62 65 2e 63 6f 6d 2f 77 61 74 63 68 3f 76 3d 62 73 52 6e 68 5f 62 72 67 67 4d 5d 5b 76 69 64 ube.com/watch?v=bsRnh_brggM][vid
bca0 65 6f 20 64 65 6d 6f 5d 5d 20 73 68 6f 77 69 6e 67 20 76 61 72 69 6f 75 73 20 75 73 65 73 20 6f eo.demo]].showing.various.uses.o
bcc0 66 20 67 70 74 65 6c 20 2d 2d 20 62 75 74 20 3d 67 70 74 65 6c 2d 73 65 6e 64 3d 20 6d 69 67 68 f.gptel.--.but.=gptel-send=.migh
bce0 74 20 62 65 20 61 6c 6c 20 79 6f 75 20 6e 65 65 64 2e 0a 0a 7c 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d t.be.all.you.need...|-----------
bd00 2d 2d 2d 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------+-----------------------
bd20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
bd40 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
bd60 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 7c 0a 7c 20 2a 54 6f 20 73 65 6e 64 20 71 75 65 72 69 65 73 ------------|.|.*To.send.queries
bd80 2a 20 7c 20 44 65 73 63 72 69 70 74 69 6f 6e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 *.|.Description.................
bda0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
bdc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
bde0 20 20 20 20 20 20 7c 0a 7c 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 2d 2d 2d ......|.|-------------------+---
be00 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
be20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
be40 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
be60 7c 0a 7c 20 3d 67 70 74 65 6c 2d 73 65 6e 64 3d 20 20 20 20 20 20 7c 20 53 65 6e 64 20 61 6c 6c |.|.=gptel-send=......|.Send.all
be80 20 74 65 78 74 20 75 70 20 74 6f 20 3d 28 70 6f 69 6e 74 29 3d 2c 20 6f 72 20 74 68 65 20 73 65 .text.up.to.=(point)=,.or.the.se
bea0 6c 65 63 74 69 6f 6e 20 69 66 20 72 65 67 69 6f 6e 20 69 73 20 61 63 74 69 76 65 2e 20 20 57 6f lection.if.region.is.active...Wo
bec0 72 6b 73 20 61 6e 79 77 68 65 72 65 20 69 6e 20 45 6d 61 63 73 2e 20 20 20 20 7c 0a 7c 20 3d 67 rks.anywhere.in.Emacs.....|.|.=g
bee0 70 74 65 6c 3d 20 20 20 20 20 20 20 20 20 20 20 7c 20 43 72 65 61 74 65 20 61 20 6e 65 77 20 64 ptel=...........|.Create.a.new.d
bf00 65 64 69 63 61 74 65 64 20 63 68 61 74 20 62 75 66 66 65 72 2e 20 20 4e 6f 74 20 72 65 71 75 69 edicated.chat.buffer...Not.requi
bf20 72 65 64 20 74 6f 20 75 73 65 20 67 70 74 65 6c 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 red.to.use.gptel................
bf40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 7c 20 3d 67 70 74 65 6c 2d 72 ....................|.|.=gptel-r
bf60 65 77 72 69 74 65 3d 20 20 20 7c 20 52 65 77 72 69 74 65 2c 20 72 65 66 61 63 74 6f 72 20 6f 72 ewrite=...|.Rewrite,.refactor.or
bf80 20 63 68 61 6e 67 65 20 74 68 65 20 73 65 6c 65 63 74 65 64 20 72 65 67 69 6f 6e 2e 20 20 43 61 .change.the.selected.region...Ca
bfa0 6e 20 64 69 66 66 2f 65 64 69 66 66 20 63 68 61 6e 67 65 73 20 62 65 66 6f 72 65 20 6d 65 72 67 n.diff/ediff.changes.before.merg
bfc0 69 6e 67 2f 61 70 70 6c 79 69 6e 67 2e 20 7c 0a 7c 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ing/applying..|.|---------------
bfe0 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----+---------------------------
c000 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
c020 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
c040 2d 2d 2d 2d 2d 2d 2d 2d 7c 0a 0a 7c 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------|..|--------------------
c060 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d -+------------------------------
c080 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
c0a0 2d 7c 0a 7c 20 2a 54 6f 20 74 77 65 61 6b 20 62 65 68 61 76 69 6f 72 2a 20 7c 20 20 20 20 20 20 -|.|.*To.tweak.behavior*.|......
c0c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
c0e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 7c 2d 2d 2d 2d .........................|.|----
c100 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d -----------------+--------------
c120 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
c140 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 7c 0a 7c 20 3d 43 2d 75 3d 20 3d 67 70 74 65 -----------------|.|.=C-u=.=gpte
c160 6c 2d 73 65 6e 64 3d 20 20 7c 20 54 72 61 6e 73 69 65 6e 74 20 6d 65 6e 75 20 66 6f 72 20 70 72 l-send=..|.Transient.menu.for.pr
c180 65 66 65 72 65 6e 63 65 73 2c 20 69 6e 70 75 74 2f 6f 75 74 70 75 74 20 72 65 64 69 72 65 63 74 eferences,.input/output.redirect
c1a0 69 6f 6e 20 65 74 63 2e 20 7c 0a 7c 20 3d 67 70 74 65 6c 2d 6d 65 6e 75 3d 20 20 20 20 20 20 20 ion.etc..|.|.=gptel-menu=.......
c1c0 20 7c 20 2f 28 53 61 6d 65 29 2f 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .|./(Same)/.....................
c1e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
c200 20 7c 0a 7c 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d .|.|---------------------+------
c220 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
c240 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 7c 0a 0a 7c 2d 2d 2d -------------------------|..|---
c260 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------+----------------
c280 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
c2a0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
c2c0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 7c 0a 7c 20 2a 54 6f 20 ------------------------|.|.*To.
c2e0 61 64 64 20 63 6f 6e 74 65 78 74 2a 20 7c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 add.context*.|..................
c300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
c320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
c340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 7c 2d 2d 2d 2d 2d 2d 2d ......................|.|-------
c360 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d -----------+--------------------
c380 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
c3a0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
c3c0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 7c 0a 7c 20 3d 67 70 74 65 6c 2d 61 --------------------|.|.=gptel-a
c3e0 64 64 3d 20 20 20 20 20 20 7c 20 41 64 64 2f 72 65 6d 6f 76 65 20 61 20 72 65 67 69 6f 6e 20 6f dd=......|.Add/remove.a.region.o
c400 72 20 62 75 66 66 65 72 20 74 6f 20 67 70 74 65 6c 27 73 20 63 6f 6e 74 65 78 74 2e 20 20 49 6e r.buffer.to.gptel's.context...In
c420 20 44 69 72 65 64 2c 20 61 64 64 2f 72 65 6d 6f 76 65 20 6d 61 72 6b 65 64 20 66 69 6c 65 73 2e .Dired,.add/remove.marked.files.
c440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 7c 20 3d 67 70 74 65 6c 2d 61 64 64 ..................|.|.=gptel-add
c460 2d 66 69 6c 65 3d 20 7c 20 41 64 64 20 61 20 66 69 6c 65 20 28 74 65 78 74 20 6f 72 20 73 75 70 -file=.|.Add.a.file.(text.or.sup
c480 70 6f 72 74 65 64 20 6d 65 64 69 61 20 74 79 70 65 29 20 74 6f 20 67 70 74 65 6c 27 73 20 63 6f ported.media.type).to.gptel's.co
c4a0 6e 74 65 78 74 2e 20 20 41 6c 73 6f 20 61 76 61 69 6c 61 62 6c 65 20 66 72 6f 6d 20 74 68 65 20 ntext...Also.available.from.the.
c4c0 74 72 61 6e 73 69 65 6e 74 20 6d 65 6e 75 2e 20 7c 0a 7c 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d transient.menu..|.|-------------
c4e0 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d -----+--------------------------
c500 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
c520 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
c540 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 7c 0a 0a 7c 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------|..|--------------
c560 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------+-----------------
c580 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
c5a0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
c5c0 2d 2d 2d 2d 2d 2d 2d 2d 7c 0a 7c 20 2a 4f 72 67 20 6d 6f 64 65 20 62 6f 6e 75 73 65 73 2a 20 20 --------|.|.*Org.mode.bonuses*..
c5e0 20 20 20 20 20 20 20 7c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .......|........................
c600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
c620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
c640 20 7c 0a 7c 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d .|.|----------------------------
c660 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d +-------------------------------
c680 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
c6a0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 7c 0a 7c 20 3d 67 --------------------------|.|.=g
c6c0 70 74 65 6c 2d 6f 72 67 2d 73 65 74 2d 74 6f 70 69 63 3d 20 20 20 20 20 20 7c 20 4c 69 6d 69 74 ptel-org-set-topic=......|.Limit
c6e0 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 20 63 6f 6e 74 65 78 74 20 74 6f 20 61 6e 20 4f 72 67 20 .conversation.context.to.an.Org.
c700 68 65 61 64 69 6e 67 2e 20 20 28 46 6f 72 20 62 72 61 6e 63 68 69 6e 67 20 63 6f 6e 76 65 72 73 heading...(For.branching.convers
c720 61 74 69 6f 6e 73 20 73 65 65 20 62 65 6c 6f 77 2e 29 20 7c 0a 7c 20 3d 67 70 74 65 6c 2d 6f 72 ations.see.below.).|.|.=gptel-or
c740 67 2d 73 65 74 2d 70 72 6f 70 65 72 74 69 65 73 3d 20 7c 20 57 72 69 74 65 20 67 70 74 65 6c 20 g-set-properties=.|.Write.gptel.
c760 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 61 73 20 4f 72 67 20 70 72 6f 70 65 72 74 69 65 73 2c configuration.as.Org.properties,
c780 20 66 6f 72 20 70 65 72 2d 68 65 61 64 69 6e 67 20 63 68 61 74 20 63 6f 6e 66 69 67 75 72 61 74 .for.per-heading.chat.configurat
c7a0 69 6f 6e 2e 20 20 20 20 20 20 20 20 7c 0a 7c 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ion.........|.|-----------------
c7c0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d -----------+--------------------
c7e0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
c800 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
c820 2d 2d 2d 2d 2d 7c 0a 0a 7c 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d -----|..|------------------+----
c840 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
c860 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
c880 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 7c 0a 7c 20 2a 47 69 74 48 -----------------------|.|.*GitH
c8a0 75 62 20 43 6f 70 69 6c 6f 74 2a 20 7c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ub.Copilot*.|...................
c8c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
c8e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
c900 20 20 20 20 20 20 20 20 7c 0a 7c 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 2d 2d ........|.|------------------+--
c920 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
c940 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
c960 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 7c 0a 7c 20 3d 67 70 -------------------------|.|.=gp
c980 74 65 6c 2d 67 68 2d 6c 6f 67 69 6e 3d 20 7c 20 41 75 74 68 65 6e 74 69 63 61 74 65 20 77 69 74 tel-gh-login=.|.Authenticate.wit
c9a0 68 20 47 69 74 48 75 62 20 43 6f 70 69 6c 6f 74 2e 20 28 41 75 74 6f 6d 61 74 69 63 61 6c 6c 79 h.GitHub.Copilot..(Automatically
c9c0 20 68 61 6e 64 6c 65 64 2c 20 62 75 74 20 63 61 6e 20 62 65 20 66 6f 72 63 65 64 20 69 66 20 72 .handled,.but.can.be.forced.if.r
c9e0 65 71 75 69 72 65 64 2e 29 20 7c 0a 7c 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b equired.).|.|------------------+
ca00 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
ca20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
ca40 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 7c 0a 0a 2a 2a ---------------------------|..**
ca60 2a 20 49 6e 20 61 6e 79 20 62 75 66 66 65 72 3a 0a 0a 31 2e 20 43 61 6c 6c 20 3d 4d 2d 78 20 67 *.In.any.buffer:..1..Call.=M-x.g
ca80 70 74 65 6c 2d 73 65 6e 64 3d 20 74 6f 20 73 65 6e 64 20 74 68 65 20 74 65 78 74 20 75 70 20 74 ptel-send=.to.send.the.text.up.t
caa0 6f 20 74 68 65 20 63 75 72 73 6f 72 2e 20 54 68 65 20 72 65 73 70 6f 6e 73 65 20 77 69 6c 6c 20 o.the.cursor..The.response.will.
cac0 62 65 20 69 6e 73 65 72 74 65 64 20 62 65 6c 6f 77 2e 20 20 43 6f 6e 74 69 6e 75 65 20 74 68 65 be.inserted.below...Continue.the
cae0 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 6c 6f 77 20 74 68 .conversation.by.typing.below.th
cb00 65 20 72 65 73 70 6f 6e 73 65 2e 0a 0a 32 2e 20 49 66 20 61 20 72 65 67 69 6f 6e 20 69 73 20 73 e.response...2..If.a.region.is.s
cb20 65 6c 65 63 74 65 64 2c 20 74 68 65 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 20 77 69 6c 6c 20 62 elected,.the.conversation.will.b
cb40 65 20 6c 69 6d 69 74 65 64 20 74 6f 20 69 74 73 20 63 6f 6e 74 65 6e 74 73 2e 0a 0a 33 2e 20 43 e.limited.to.its.contents...3..C
cb60 61 6c 6c 20 3d 4d 2d 78 20 67 70 74 65 6c 2d 73 65 6e 64 3d 20 77 69 74 68 20 61 20 70 72 65 66 all.=M-x.gptel-send=.with.a.pref
cb80 69 78 20 61 72 67 75 6d 65 6e 74 20 28 7e 43 2d 75 7e 29 0a 20 20 20 2d 20 74 6f 20 73 65 74 20 ix.argument.(~C-u~)....-.to.set.
cba0 63 68 61 74 20 70 61 72 61 6d 65 74 65 72 73 20 28 6d 6f 64 65 6c 2c 20 62 61 63 6b 65 6e 64 2c chat.parameters.(model,.backend,
cbc0 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 20 65 74 63 29 20 66 6f 72 20 74 68 69 73 20 62 75 .system.message.etc).for.this.bu
cbe0 66 66 65 72 2c 0a 20 20 20 2d 20 69 6e 63 6c 75 64 65 20 71 75 69 63 6b 20 69 6e 73 74 72 75 63 ffer,....-.include.quick.instruc
cc00 74 69 6f 6e 73 20 66 6f 72 20 74 68 65 20 6e 65 78 74 20 72 65 71 75 65 73 74 20 6f 6e 6c 79 2c tions.for.the.next.request.only,
cc20 0a 20 20 20 2d 20 74 6f 20 61 64 64 20 61 64 64 69 74 69 6f 6e 61 6c 20 63 6f 6e 74 65 78 74 20 ....-.to.add.additional.context.
cc40 2d 2d 20 72 65 67 69 6f 6e 73 2c 20 62 75 66 66 65 72 73 20 6f 72 20 66 69 6c 65 73 20 2d 2d 20 --.regions,.buffers.or.files.--.
cc60 74 6f 20 67 70 74 65 6c 2c 0a 20 20 20 2d 20 74 6f 20 72 65 61 64 20 74 68 65 20 70 72 6f 6d 70 to.gptel,....-.to.read.the.promp
cc80 74 20 66 72 6f 6d 20 6f 72 20 72 65 64 69 72 65 63 74 20 74 68 65 20 72 65 73 70 6f 6e 73 65 20 t.from.or.redirect.the.response.
cca0 65 6c 73 65 77 68 65 72 65 2c 0a 20 20 20 2d 20 6f 72 20 74 6f 20 72 65 70 6c 61 63 65 20 74 68 elsewhere,....-.or.to.replace.th
ccc0 65 20 70 72 6f 6d 70 74 20 77 69 74 68 20 74 68 65 20 72 65 73 70 6f 6e 73 65 2e 0a 0a 23 2b 68 e.prompt.with.the.response...#+h
cce0 74 6d 6c 3a 20 3c 69 6d 67 20 73 72 63 3d 22 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f tml:.<img.src="https://github.co
cd00 6d 2f 6b 61 72 74 68 69 6e 6b 2f 67 70 74 65 6c 2f 61 73 73 65 74 73 2f 38 36 30 37 35 33 32 2f m/karthink/gptel/assets/8607532/
cd20 33 35 36 32 61 36 65 32 2d 37 61 35 63 2d 34 66 37 65 2d 38 65 35 37 2d 62 66 33 63 31 31 35 38 3562a6e2-7a5c-4f7e-8e57-bf3c1158
cd40 39 63 37 33 22 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 20 61 6c 74 3d 22 49 6d 61 67 65 20 9c73".align="center".alt="Image.
cd60 73 68 6f 77 69 6e 67 20 67 70 74 65 6c 27 73 20 6d 65 6e 75 20 77 69 74 68 20 73 6f 6d 65 20 6f showing.gptel's.menu.with.some.o
cd80 66 20 74 68 65 20 61 76 61 69 6c 61 62 6c 65 20 71 75 65 72 79 20 6f 70 74 69 6f 6e 73 2e 22 3e f.the.available.query.options.">
cda0 0a 0a 59 6f 75 20 63 61 6e 20 61 6c 73 6f 20 64 65 66 69 6e 65 20 61 20 22 70 72 65 73 65 74 22 ..You.can.also.define.a."preset"
cdc0 20 62 75 6e 64 6c 65 20 6f 66 20 6f 70 74 69 6f 6e 73 20 74 68 61 74 20 61 72 65 20 61 70 70 6c .bundle.of.options.that.are.appl
cde0 69 65 64 20 74 6f 67 65 74 68 65 72 2c 20 73 65 65 20 5b 5b 23 6f 70 74 69 6f 6e 2d 70 72 65 73 ied.together,.see.[[#option-pres
ce00 65 74 73 5d 5b 4f 70 74 69 6f 6e 20 70 72 65 73 65 74 73 5d 5d 20 62 65 6c 6f 77 2e 0a 0a 2a 2a ets][Option.presets]].below...**
ce20 2a 20 49 6e 20 61 20 64 65 64 69 63 61 74 65 64 20 63 68 61 74 20 62 75 66 66 65 72 3a 0a 0a 2a *.In.a.dedicated.chat.buffer:..*
ce40 4e 6f 74 65 2a 3a 20 67 70 74 65 6c 20 77 6f 72 6b 73 20 61 6e 79 77 68 65 72 65 20 69 6e 20 45 Note*:.gptel.works.anywhere.in.E
ce60 6d 61 63 73 2e 20 20 54 68 65 20 64 65 64 69 63 61 74 65 64 20 63 68 61 74 20 62 75 66 66 65 72 macs...The.dedicated.chat.buffer
ce80 20 6f 6e 6c 79 20 61 64 64 73 20 73 6f 6d 65 20 63 6f 6e 76 65 6e 69 65 6e 63 65 73 2e 0a 0a 31 .only.adds.some.conveniences...1
cea0 2e 20 52 75 6e 20 3d 4d 2d 78 20 67 70 74 65 6c 3d 20 74 6f 20 73 74 61 72 74 20 6f 72 20 73 77 ..Run.=M-x.gptel=.to.start.or.sw
cec0 69 74 63 68 20 74 6f 20 74 68 65 20 63 68 61 74 20 62 75 66 66 65 72 2e 20 49 74 20 77 69 6c 6c itch.to.the.chat.buffer..It.will
cee0 20 61 73 6b 20 79 6f 75 20 66 6f 72 20 74 68 65 20 6b 65 79 20 69 66 20 79 6f 75 20 73 6b 69 70 .ask.you.for.the.key.if.you.skip
cf00 70 65 64 20 74 68 65 20 70 72 65 76 69 6f 75 73 20 73 74 65 70 2e 20 52 75 6e 20 69 74 20 77 69 ped.the.previous.step..Run.it.wi
cf20 74 68 20 61 20 70 72 65 66 69 78 2d 61 72 67 20 28 3d 43 2d 75 20 4d 2d 78 20 67 70 74 65 6c 3d th.a.prefix-arg.(=C-u.M-x.gptel=
cf40 29 20 74 6f 20 73 74 61 72 74 20 61 20 6e 65 77 20 73 65 73 73 69 6f 6e 2e 0a 0a 32 2e 20 49 6e ).to.start.a.new.session...2..In
cf60 20 74 68 65 20 67 70 74 65 6c 20 62 75 66 66 65 72 2c 20 73 65 6e 64 20 79 6f 75 72 20 70 72 6f .the.gptel.buffer,.send.your.pro
cf80 6d 70 74 20 77 69 74 68 20 3d 4d 2d 78 20 67 70 74 65 6c 2d 73 65 6e 64 3d 2c 20 62 6f 75 6e 64 mpt.with.=M-x.gptel-send=,.bound
cfa0 20 74 6f 20 3d 43 2d 63 20 52 45 54 3d 2e 0a 0a 33 2e 20 53 65 74 20 63 68 61 74 20 70 61 72 61 .to.=C-c.RET=...3..Set.chat.para
cfc0 6d 65 74 65 72 73 20 28 4c 4c 4d 20 70 72 6f 76 69 64 65 72 2c 20 6d 6f 64 65 6c 2c 20 64 69 72 meters.(LLM.provider,.model,.dir
cfe0 65 63 74 69 76 65 73 20 65 74 63 29 20 66 6f 72 20 74 68 65 20 73 65 73 73 69 6f 6e 20 62 79 20 ectives.etc).for.the.session.by.
d000 63 61 6c 6c 69 6e 67 20 3d 67 70 74 65 6c 2d 73 65 6e 64 3d 20 77 69 74 68 20 61 20 70 72 65 66 calling.=gptel-send=.with.a.pref
d020 69 78 20 61 72 67 75 6d 65 6e 74 20 28 3d 43 2d 75 20 43 2d 63 20 52 45 54 3d 29 3a 0a 20 20 20 ix.argument.(=C-u.C-c.RET=):....
d040 0a 23 2b 68 74 6d 6c 3a 20 3c 69 6d 67 20 73 72 63 3d 22 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 .#+html:.<img.src="https://githu
d060 62 2e 63 6f 6d 2f 6b 61 72 74 68 69 6e 6b 2f 67 70 74 65 6c 2f 61 73 73 65 74 73 2f 38 36 30 37 b.com/karthink/gptel/assets/8607
d080 35 33 32 2f 65 62 34 38 36 37 65 35 2d 33 30 61 63 2d 34 35 35 66 2d 39 39 39 66 2d 65 31 37 31 532/eb4867e5-30ac-455f-999f-e171
d0a0 32 33 61 66 62 38 31 30 22 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 20 61 6c 74 3d 22 49 6d 23afb810".align="center".alt="Im
d0c0 61 67 65 20 73 68 6f 77 69 6e 67 20 67 70 74 65 6c 27 73 20 6d 65 6e 75 20 77 69 74 68 20 73 6f age.showing.gptel's.menu.with.so
d0e0 6d 65 20 6f 66 20 74 68 65 20 61 76 61 69 6c 61 62 6c 65 20 71 75 65 72 79 20 6f 70 74 69 6f 6e me.of.the.available.query.option
d100 73 2e 22 3e 0a 0a 54 68 61 74 27 73 20 69 74 2e 20 59 6f 75 20 63 61 6e 20 67 6f 20 62 61 63 6b s.">..That's.it..You.can.go.back
d120 20 61 6e 64 20 65 64 69 74 20 70 72 65 76 69 6f 75 73 20 70 72 6f 6d 70 74 73 20 61 6e 64 20 72 .and.edit.previous.prompts.and.r
d140 65 73 70 6f 6e 73 65 73 20 69 66 20 79 6f 75 20 77 61 6e 74 2e 0a 0a 54 68 65 20 64 65 66 61 75 esponses.if.you.want...The.defau
d160 6c 74 20 6d 6f 64 65 20 69 73 20 3d 6d 61 72 6b 64 6f 77 6e 2d 6d 6f 64 65 3d 20 69 66 20 61 76 lt.mode.is.=markdown-mode=.if.av
d180 61 69 6c 61 62 6c 65 2c 20 65 6c 73 65 20 3d 74 65 78 74 2d 6d 6f 64 65 3d 2e 20 20 59 6f 75 20 ailable,.else.=text-mode=...You.
d1a0 63 61 6e 20 73 65 74 20 3d 67 70 74 65 6c 2d 64 65 66 61 75 6c 74 2d 6d 6f 64 65 3d 20 74 6f 20 can.set.=gptel-default-mode=.to.
d1c0 3d 6f 72 67 2d 6d 6f 64 65 3d 20 69 66 20 64 65 73 69 72 65 64 2e 0a 0a 59 6f 75 20 63 61 6e 20 =org-mode=.if.desired...You.can.
d1e0 61 6c 73 6f 20 64 65 66 69 6e 65 20 61 20 22 70 72 65 73 65 74 22 20 62 75 6e 64 6c 65 20 6f 66 also.define.a."preset".bundle.of
d200 20 6f 70 74 69 6f 6e 73 20 74 68 61 74 20 61 72 65 20 61 70 70 6c 69 65 64 20 74 6f 67 65 74 68 .options.that.are.applied.togeth
d220 65 72 2c 20 73 65 65 20 5b 5b 23 6f 70 74 69 6f 6e 2d 70 72 65 73 65 74 73 5d 5b 4f 70 74 69 6f er,.see.[[#option-presets][Optio
d240 6e 20 70 72 65 73 65 74 73 5d 5d 20 62 65 6c 6f 77 2e 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 74 n.presets]].below...#+html:.<det
d260 61 69 6c 73 3e 3c 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 49 6e 63 6c 75 64 69 6e 67 20 6d 65 ails><summary>.****.Including.me
d280 64 69 61 20 28 69 6d 61 67 65 73 2c 20 64 6f 63 75 6d 65 6e 74 73 20 6f 72 20 70 6c 61 69 6e 2d dia.(images,.documents.or.plain-
d2a0 74 65 78 74 20 66 69 6c 65 73 29 20 77 69 74 68 20 72 65 71 75 65 73 74 73 0a 23 2b 68 74 6d 6c text.files).with.requests.#+html
d2c0 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a 67 70 74 65 6c 20 73 75 70 70 6f 72 74 73 20 73 65 6e :.</summary>..gptel.supports.sen
d2e0 64 69 6e 67 20 6d 65 64 69 61 20 69 6e 20 4d 61 72 6b 64 6f 77 6e 20 61 6e 64 20 4f 72 67 20 63 ding.media.in.Markdown.and.Org.c
d300 68 61 74 20 62 75 66 66 65 72 73 2c 20 62 75 74 20 74 68 69 73 20 66 65 61 74 75 72 65 20 69 73 hat.buffers,.but.this.feature.is
d320 20 64 69 73 61 62 6c 65 64 20 62 79 20 64 65 66 61 75 6c 74 2e 0a 0a 2d 20 59 6f 75 20 63 61 6e .disabled.by.default...-.You.can
d340 20 65 6e 61 62 6c 65 20 69 74 20 67 6c 6f 62 61 6c 6c 79 2c 20 66 6f 72 20 61 6c 6c 20 6d 6f 64 .enable.it.globally,.for.all.mod
d360 65 6c 73 20 74 68 61 74 20 73 75 70 70 6f 72 74 20 69 74 2c 20 62 79 20 73 65 74 74 69 6e 67 20 els.that.support.it,.by.setting.
d380 3d 67 70 74 65 6c 2d 74 72 61 63 6b 2d 6d 65 64 69 61 3d 2e 20 20 0a 2d 20 4f 72 20 79 6f 75 20 =gptel-track-media=....-.Or.you.
d3a0 63 61 6e 20 73 65 74 20 69 74 20 6c 6f 63 61 6c 6c 79 2c 20 6a 75 73 74 20 66 6f 72 20 74 68 65 can.set.it.locally,.just.for.the
d3c0 20 63 68 61 74 20 62 75 66 66 65 72 2c 20 76 69 61 20 74 68 65 20 68 65 61 64 65 72 20 6c 69 6e .chat.buffer,.via.the.header.lin
d3e0 65 3a 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 69 6d 67 20 73 72 63 3d 22 68 74 74 70 73 3a 2f 2f 67 69 e:..#+html:.<img.src="https://gi
d400 74 68 75 62 2e 63 6f 6d 2f 75 73 65 72 2d 61 74 74 61 63 68 6d 65 6e 74 73 2f 61 73 73 65 74 73 thub.com/user-attachments/assets
d420 2f 39 31 66 36 61 61 61 62 2d 32 65 61 34 2d 34 38 30 36 2d 39 63 63 39 2d 33 39 62 34 62 34 36 /91f6aaab-2ea4-4806-9cc9-39b4b46
d440 61 38 65 36 63 22 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 20 61 6c 74 3d 22 49 6d 61 67 65 a8e6c".align="center".alt="Image
d460 20 73 68 6f 77 69 6e 67 20 61 20 67 70 74 65 6c 20 63 68 61 74 20 62 75 66 66 65 72 27 73 20 68 .showing.a.gptel.chat.buffer's.h
d480 65 61 64 65 72 20 6c 69 6e 65 20 77 69 74 68 20 74 68 65 20 62 75 74 74 6f 6e 20 74 6f 20 74 6f eader.line.with.the.button.to.to
d4a0 67 67 6c 65 20 6d 65 64 69 61 20 73 75 70 70 6f 72 74 22 3e 0a 0a 2d 2d 2d 2d 2d 0a 0a 54 68 65 ggle.media.support">..-----..The
d4c0 72 65 20 61 72 65 20 74 77 6f 20 77 61 79 73 20 74 6f 20 69 6e 63 6c 75 64 65 20 6d 65 64 69 61 re.are.two.ways.to.include.media
d4e0 20 6f 72 20 70 6c 61 69 6e 2d 74 65 78 74 20 66 69 6c 65 73 20 77 69 74 68 20 72 65 71 75 65 73 .or.plain-text.files.with.reques
d500 74 73 3a 0a 0a 31 2e 20 41 64 64 69 6e 67 20 6d 65 64 69 61 20 66 69 6c 65 73 20 74 6f 20 74 68 ts:..1..Adding.media.files.to.th
d520 65 20 63 6f 6e 74 65 78 74 20 77 69 74 68 20 3d 67 70 74 65 6c 2d 61 64 64 2d 66 69 6c 65 3d 2c e.context.with.=gptel-add-file=,
d540 20 64 65 73 63 72 69 62 65 64 20 66 75 72 74 68 65 72 20 62 65 6c 6f 77 2e 0a 32 2e 20 49 6e 63 .described.further.below..2..Inc
d560 6c 75 64 69 6e 67 20 6c 69 6e 6b 73 20 74 6f 20 6d 65 64 69 61 20 69 6e 20 63 68 61 74 20 62 75 luding.links.to.media.in.chat.bu
d580 66 66 65 72 73 2c 20 64 65 73 63 72 69 62 65 64 20 68 65 72 65 3a 0a 0a 54 6f 20 69 6e 63 6c 75 ffers,.described.here:..To.inclu
d5a0 64 65 20 70 6c 61 69 6e 2d 74 65 78 74 20 66 69 6c 65 73 2c 20 69 6d 61 67 65 73 20 6f 72 20 6f de.plain-text.files,.images.or.o
d5c0 74 68 65 72 20 73 75 70 70 6f 72 74 65 64 20 64 6f 63 75 6d 65 6e 74 20 74 79 70 65 73 20 77 69 ther.supported.document.types.wi
d5e0 74 68 20 72 65 71 75 65 73 74 73 20 69 6e 20 63 68 61 74 20 62 75 66 66 65 72 73 2c 20 79 6f 75 th.requests.in.chat.buffers,.you
d600 20 63 61 6e 20 69 6e 63 6c 75 64 65 20 6c 69 6e 6b 73 20 74 6f 20 74 68 65 6d 20 69 6e 20 74 68 .can.include.links.to.them.in.th
d620 65 20 63 68 61 74 20 62 75 66 66 65 72 2e 20 20 53 75 63 68 20 61 20 6c 69 6e 6b 20 6d 75 73 74 e.chat.buffer...Such.a.link.must
d640 20 62 65 20 22 73 74 61 6e 64 61 6c 6f 6e 65 22 2c 20 69 2e 65 2e 20 6f 6e 20 61 20 6c 69 6e 65 .be."standalone",.i.e..on.a.line
d660 20 62 79 20 69 74 73 65 6c 66 20 73 75 72 72 6f 75 6e 64 65 64 20 62 79 20 77 68 69 74 65 73 70 .by.itself.surrounded.by.whitesp
d680 61 63 65 2e 0a 0a 49 6e 20 4f 72 67 20 6d 6f 64 65 2c 20 66 6f 72 20 65 78 61 6d 70 6c 65 2c 20 ace...In.Org.mode,.for.example,.
d6a0 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 61 72 65 20 61 6c 6c 20 2a 76 61 6c 69 64 2a 20 77 61 the.following.are.all.*valid*.wa
d6c0 79 73 20 6f 66 20 69 6e 63 6c 75 64 69 6e 67 20 61 6e 20 69 6d 61 67 65 20 77 69 74 68 20 74 68 ys.of.including.an.image.with.th
d6e0 65 20 72 65 71 75 65 73 74 3a 0a 0a 2d 20 22 53 74 61 6e 64 61 6c 6f 6e 65 22 20 66 69 6c 65 20 e.request:..-."Standalone".file.
d700 6c 69 6e 6b 73 3a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 0a 49 6e 20 74 68 69 73 20 79 61 6d 6c links:.#+begin_src..In.this.yaml
d720 20 66 69 6c 65 2c 20 49 20 68 61 76 65 20 73 6f 6d 65 20 6b 65 79 2d 72 65 6d 61 70 70 69 6e 67 .file,.I.have.some.key-remapping
d740 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 3a 0a 0a 5b 5b 66 69 6c 65 3a 2f 70 61 74 68 2f 74 6f .configuration:..[[file:/path/to
d760 2f 72 65 6d 61 70 2e 79 61 6d 6c 5d 5d 0a 0a 43 6f 75 6c 64 20 79 6f 75 20 65 78 70 6c 61 69 6e /remap.yaml]]..Could.you.explain
d780 20 77 68 61 74 20 69 74 20 64 6f 65 73 2c 20 61 6e 64 20 77 68 69 63 68 20 70 72 6f 67 72 61 6d .what.it.does,.and.which.program
d7a0 20 6d 69 67 68 74 20 62 65 20 75 73 69 6e 67 20 69 74 3f 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 23 .might.be.using.it?.#+end_src..#
d7c0 2b 62 65 67 69 6e 5f 73 72 63 0a 44 65 73 63 72 69 62 65 20 74 68 69 73 20 70 69 63 74 75 72 65 +begin_src.Describe.this.picture
d7e0 0a 0a 5b 5b 66 69 6c 65 3a 2f 70 61 74 68 2f 74 6f 2f 73 63 72 65 65 6e 73 68 6f 74 2e 70 6e 67 ..[[file:/path/to/screenshot.png
d800 5d 5d 0a 0a 46 6f 63 75 73 20 73 70 65 63 69 66 69 63 61 6c 6c 79 20 6f 6e 20 74 68 65 20 74 65 ]]..Focus.specifically.on.the.te
d820 78 74 20 63 6f 6e 74 65 6e 74 2e 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 2d 20 22 53 74 61 6e 64 61 xt.content..#+end_src..-."Standa
d840 6c 6f 6e 65 22 20 66 69 6c 65 20 6c 69 6e 6b 20 77 69 74 68 20 64 65 73 63 72 69 70 74 69 6f 6e lone".file.link.with.description
d860 3a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 0a 44 65 73 63 72 69 62 65 20 74 68 69 73 20 70 69 63 :.#+begin_src..Describe.this.pic
d880 74 75 72 65 0a 0a 5b 5b 66 69 6c 65 3a 2f 70 61 74 68 2f 74 6f 2f 73 63 72 65 65 6e 73 68 6f 74 ture..[[file:/path/to/screenshot
d8a0 2e 70 6e 67 5d 5b 73 6f 6d 65 20 70 69 63 74 75 72 65 5d 5d 0a 0a 46 6f 63 75 73 20 73 70 65 63 .png][some.picture]]..Focus.spec
d8c0 69 66 69 63 61 6c 6c 79 20 6f 6e 20 74 68 65 20 74 65 78 74 20 63 6f 6e 74 65 6e 74 2e 0a 23 2b ifically.on.the.text.content..#+
d8e0 65 6e 64 5f 73 72 63 0a 0a 2d 20 22 53 74 61 6e 64 61 6c 6f 6e 65 22 2c 20 61 6e 67 6c 65 20 66 end_src..-."Standalone",.angle.f
d900 69 6c 65 20 6c 69 6e 6b 3a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 0a 44 65 73 63 72 69 62 65 20 ile.link:.#+begin_src..Describe.
d920 74 68 69 73 20 70 69 63 74 75 72 65 0a 0a 3c 66 69 6c 65 3a 2f 70 61 74 68 2f 74 6f 2f 73 63 72 this.picture..<file:/path/to/scr
d940 65 65 6e 73 68 6f 74 2e 70 6e 67 3e 0a 0a 46 6f 63 75 73 20 73 70 65 63 69 66 69 63 61 6c 6c 79 eenshot.png>..Focus.specifically
d960 20 6f 6e 20 74 68 65 20 74 65 78 74 20 63 6f 6e 74 65 6e 74 2e 0a 23 2b 65 6e 64 5f 73 72 63 0a .on.the.text.content..#+end_src.
d980 0a 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 6c 69 6e 6b 73 20 61 72 65 20 2a 6e 6f 74 20 76 61 .The.following.links.are.*not.va
d9a0 6c 69 64 2a 2c 20 61 6e 64 20 74 68 65 20 74 65 78 74 20 6f 66 20 74 68 65 20 6c 69 6e 6b 20 77 lid*,.and.the.text.of.the.link.w
d9c0 69 6c 6c 20 62 65 20 73 65 6e 74 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20 66 69 6c 65 20 ill.be.sent.instead.of.the.file.
d9e0 63 6f 6e 74 65 6e 74 73 3a 0a 0a 2d 20 49 6e 6c 69 6e 65 20 6c 69 6e 6b 3a 0a 23 2b 62 65 67 69 contents:..-.Inline.link:.#+begi
da00 6e 5f 73 72 63 20 0a 44 65 73 63 72 69 62 65 20 74 68 69 73 20 5b 5b 66 69 6c 65 3a 2f 70 61 74 n_src..Describe.this.[[file:/pat
da20 68 2f 74 6f 2f 73 63 72 65 65 6e 73 68 6f 74 2e 70 6e 67 5d 5b 70 69 63 74 75 72 65 5d 5d 2e 0a h/to/screenshot.png][picture]]..
da40 0a 46 6f 63 75 73 20 73 70 65 63 69 66 69 63 61 6c 6c 79 20 6f 6e 20 74 68 65 20 74 65 78 74 20 .Focus.specifically.on.the.text.
da60 63 6f 6e 74 65 6e 74 2e 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 2d 20 4c 69 6e 6b 20 6e 6f 74 20 22 content..#+end_src..-.Link.not."
da80 73 74 61 6e 64 61 6c 6f 6e 65 22 3a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 0a 44 65 73 63 72 69 62 standalone":.#+begin_src.Describ
daa0 65 20 74 68 69 73 20 70 69 63 74 75 72 65 3a 20 0a 5b 5b 66 69 6c 65 3a 2f 70 61 74 68 2f 74 6f e.this.picture:..[[file:/path/to
dac0 2f 73 63 72 65 65 6e 73 68 6f 74 2e 70 6e 67 5d 5d 0a 46 6f 63 75 73 20 73 70 65 63 69 66 69 63 /screenshot.png]].Focus.specific
dae0 61 6c 6c 79 20 6f 6e 20 74 68 65 20 74 65 78 74 20 63 6f 6e 74 65 6e 74 2e 0a 23 2b 65 6e 64 5f ally.on.the.text.content..#+end_
db00 73 72 63 0a 0a 2d 20 4e 6f 74 20 61 20 76 61 6c 69 64 20 4f 72 67 20 6c 69 6e 6b 3a 0a 23 2b 62 src..-.Not.a.valid.Org.link:.#+b
db20 65 67 69 6e 5f 73 72 63 20 0a 44 65 73 63 72 69 62 65 20 74 68 65 20 70 69 63 74 75 72 65 0a 0a egin_src..Describe.the.picture..
db40 66 69 6c 65 3a 2f 70 61 74 68 2f 74 6f 2f 73 63 72 65 65 6e 73 68 6f 74 2e 70 6e 67 0a 23 2b 65 file:/path/to/screenshot.png.#+e
db60 6e 64 5f 73 72 63 0a 0a 53 69 6d 69 6c 61 72 20 63 72 69 74 65 72 69 61 20 61 70 70 6c 79 20 74 nd_src..Similar.criteria.apply.t
db80 6f 20 4d 61 72 6b 64 6f 77 6e 20 63 68 61 74 20 62 75 66 66 65 72 73 2e 0a 0a 23 2b 68 74 6d 6c o.Markdown.chat.buffers...#+html
dba0 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 74 61 69 6c 73 3e 3c 73 :.</details>.#+html:.<details><s
dbc0 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 53 61 76 65 20 61 6e 64 20 72 65 73 74 6f 72 65 20 79 6f ummary>.****.Save.and.restore.yo
dbe0 75 72 20 63 68 61 74 20 73 65 73 73 69 6f 6e 73 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 ur.chat.sessions.#+html:.</summa
dc00 72 79 3e 0a 0a 53 61 76 69 6e 67 20 74 68 65 20 66 69 6c 65 20 77 69 6c 6c 20 73 61 76 65 20 74 ry>..Saving.the.file.will.save.t
dc20 68 65 20 73 74 61 74 65 20 6f 66 20 74 68 65 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 20 61 73 20 he.state.of.the.conversation.as.
dc40 77 65 6c 6c 2e 20 20 54 6f 20 72 65 73 75 6d 65 20 74 68 65 20 63 68 61 74 2c 20 6f 70 65 6e 20 well...To.resume.the.chat,.open.
dc60 74 68 65 20 66 69 6c 65 20 61 6e 64 20 74 75 72 6e 20 6f 6e 20 3d 67 70 74 65 6c 2d 6d 6f 64 65 the.file.and.turn.on.=gptel-mode
dc80 3d 20 62 65 66 6f 72 65 20 65 64 69 74 69 6e 67 20 74 68 65 20 62 75 66 66 65 72 2e 0a 0a 23 2b =.before.editing.the.buffer...#+
dca0 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 2a 2a 2a 20 53 65 74 74 69 6e 67 20 6f 70 74 html:.</details>.***.Setting.opt
dcc0 69 6f 6e 73 20 28 62 61 63 6b 65 6e 64 2c 20 6d 6f 64 65 6c 2c 20 72 65 71 75 65 73 74 20 70 61 ions.(backend,.model,.request.pa
dce0 72 61 6d 65 74 65 72 73 2c 20 73 79 73 74 65 6d 20 70 72 6f 6d 70 74 73 20 61 6e 64 20 6d 6f 72 rameters,.system.prompts.and.mor
dd00 65 29 0a 0a 4d 6f 73 74 20 67 70 74 65 6c 20 6f 70 74 69 6f 6e 73 20 63 61 6e 20 62 65 20 73 65 e)..Most.gptel.options.can.be.se
dd20 74 20 66 72 6f 6d 20 67 70 74 65 6c 27 73 20 74 72 61 6e 73 69 65 6e 74 20 6d 65 6e 75 2c 20 61 t.from.gptel's.transient.menu,.a
dd40 76 61 69 6c 61 62 6c 65 20 62 79 20 63 61 6c 6c 69 6e 67 20 3d 67 70 74 65 6c 2d 73 65 6e 64 3d vailable.by.calling.=gptel-send=
dd60 20 77 69 74 68 20 61 20 70 72 65 66 69 78 2d 61 72 67 75 6d 65 6e 74 2c 20 6f 72 20 76 69 61 20 .with.a.prefix-argument,.or.via.
dd80 3d 67 70 74 65 6c 2d 6d 65 6e 75 3d 2e 20 20 54 6f 20 63 68 61 6e 67 65 20 74 68 65 69 72 20 64 =gptel-menu=...To.change.their.d
dda0 65 66 61 75 6c 74 20 76 61 6c 75 65 73 20 69 6e 20 79 6f 75 72 20 63 6f 6e 66 69 67 75 72 61 74 efault.values.in.your.configurat
ddc0 69 6f 6e 2c 20 73 65 65 20 5b 5b 23 61 64 64 69 74 69 6f 6e 61 6c 2d 63 6f 6e 66 69 67 75 72 61 ion,.see.[[#additional-configura
dde0 74 69 6f 6e 5d 5b 41 64 64 69 74 69 6f 6e 61 6c 20 43 6f 6e 66 69 67 75 72 61 74 69 6f 6e 5d 5d tion][Additional.Configuration]]
de00 2e 20 20 43 68 61 74 20 62 75 66 66 65 72 2d 73 70 65 63 69 66 69 63 20 6f 70 74 69 6f 6e 73 20 ...Chat.buffer-specific.options.
de20 61 72 65 20 61 6c 73 6f 20 61 76 61 69 6c 61 62 6c 65 20 76 69 61 20 74 68 65 20 68 65 61 64 65 are.also.available.via.the.heade
de40 72 2d 6c 69 6e 65 20 69 6e 20 63 68 61 74 20 62 75 66 66 65 72 73 2e 0a 0a 23 20 54 4f 44 4f 20 r-line.in.chat.buffers...#.TODO.
de60 52 65 6d 6f 76 65 20 74 68 69 73 20 77 68 65 6e 20 77 72 69 74 69 6e 67 20 74 68 65 20 6d 61 6e Remove.this.when.writing.the.man
de80 75 61 6c 2e 0a 53 65 6c 65 63 74 69 6e 67 20 61 20 6d 6f 64 65 6c 20 61 6e 64 20 62 61 63 6b 65 ual..Selecting.a.model.and.backe
dea0 6e 64 20 63 61 6e 20 62 65 20 64 6f 6e 65 20 69 6e 74 65 72 61 63 74 69 76 65 6c 79 20 76 69 61 nd.can.be.done.interactively.via
dec0 20 74 68 65 20 3d 2d 6d 3d 20 63 6f 6d 6d 61 6e 64 20 6f 66 20 3d 67 70 74 65 6c 2d 6d 65 6e 75 .the.=-m=.command.of.=gptel-menu
dee0 3d 2e 20 20 41 76 61 69 6c 61 62 6c 65 20 72 65 67 69 73 74 65 72 65 64 20 6d 6f 64 65 6c 73 20 =...Available.registered.models.
df00 61 72 65 20 70 72 65 66 69 78 65 64 20 62 79 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 69 are.prefixed.by.the.name.of.thei
df20 72 20 62 61 63 6b 65 6e 64 20 77 69 74 68 20 61 20 73 74 72 69 6e 67 20 6c 69 6b 65 20 3d 43 68 r.backend.with.a.string.like.=Ch
df40 61 74 47 50 54 3a 67 70 74 2d 34 6f 2d 6d 69 6e 69 3d 2c 20 77 68 65 72 65 20 3d 43 68 61 74 47 atGPT:gpt-4o-mini=,.where.=ChatG
df60 50 54 3d 20 69 73 20 74 68 65 20 62 61 63 6b 65 6e 64 20 6e 61 6d 65 20 79 6f 75 20 75 73 65 64 PT=.is.the.backend.name.you.used
df80 20 74 6f 20 72 65 67 69 73 74 65 72 20 69 74 20 61 6e 64 20 3d 67 70 74 2d 34 6f 2d 6d 69 6e 69 .to.register.it.and.=gpt-4o-mini
dfa0 3d 20 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6d 6f 64 65 6c 2e 0a 0a 2a 2a 2a =.is.the.name.of.the.model...***
dfc0 20 49 6e 63 6c 75 64 65 20 6d 6f 72 65 20 63 6f 6e 74 65 78 74 20 77 69 74 68 20 72 65 71 75 65 .Include.more.context.with.reque
dfe0 73 74 73 0a 3a 50 52 4f 50 45 52 54 49 45 53 3a 0a 3a 43 55 53 54 4f 4d 5f 49 44 3a 20 69 6e 63 sts.:PROPERTIES:.:CUSTOM_ID:.inc
e000 6c 75 64 65 2d 63 6f 6e 74 65 78 74 0a 3a 45 4e 44 3a 0a 0a 42 79 20 64 65 66 61 75 6c 74 2c 20 lude-context.:END:..By.default,.
e020 67 70 74 65 6c 20 77 69 6c 6c 20 71 75 65 72 79 20 74 68 65 20 4c 4c 4d 20 77 69 74 68 20 74 68 gptel.will.query.the.LLM.with.th
e040 65 20 61 63 74 69 76 65 20 72 65 67 69 6f 6e 20 6f 72 20 74 68 65 20 62 75 66 66 65 72 20 63 6f e.active.region.or.the.buffer.co
e060 6e 74 65 6e 74 73 20 75 70 20 74 6f 20 74 68 65 20 63 75 72 73 6f 72 2e 20 20 4f 66 74 65 6e 20 ntents.up.to.the.cursor...Often.
e080 69 74 20 63 61 6e 20 62 65 20 68 65 6c 70 66 75 6c 20 74 6f 20 70 72 6f 76 69 64 65 20 74 68 65 it.can.be.helpful.to.provide.the
e0a0 20 4c 4c 4d 20 77 69 74 68 20 61 64 64 69 74 69 6f 6e 61 6c 20 63 6f 6e 74 65 78 74 20 66 72 6f .LLM.with.additional.context.fro
e0c0 6d 20 6f 75 74 73 69 64 65 20 74 68 65 20 63 75 72 72 65 6e 74 20 62 75 66 66 65 72 2e 20 46 6f m.outside.the.current.buffer..Fo
e0e0 72 20 65 78 61 6d 70 6c 65 2c 20 77 68 65 6e 20 79 6f 75 27 72 65 20 69 6e 20 61 20 63 68 61 74 r.example,.when.you're.in.a.chat
e100 20 62 75 66 66 65 72 20 62 75 74 20 77 61 6e 74 20 74 6f 20 61 73 6b 20 71 75 65 73 74 69 6f 6e .buffer.but.want.to.ask.question
e120 73 20 61 62 6f 75 74 20 61 20 28 70 6f 73 73 69 62 6c 79 20 63 68 61 6e 67 69 6e 67 29 20 63 6f s.about.a.(possibly.changing).co
e140 64 65 20 62 75 66 66 65 72 20 61 6e 64 20 61 75 78 69 6c 69 61 72 79 20 70 72 6f 6a 65 63 74 20 de.buffer.and.auxiliary.project.
e160 66 69 6c 65 73 2e 0a 0a 59 6f 75 20 63 61 6e 20 69 6e 63 6c 75 64 65 20 61 64 64 69 74 69 6f 6e files...You.can.include.addition
e180 61 6c 20 74 65 78 74 20 72 65 67 69 6f 6e 73 2c 20 62 75 66 66 65 72 73 20 6f 72 20 66 69 6c 65 al.text.regions,.buffers.or.file
e1a0 73 20 77 69 74 68 20 67 70 74 65 6c 27 73 20 71 75 65 72 69 65 73 20 69 6e 20 74 77 6f 20 77 61 s.with.gptel's.queries.in.two.wa
e1c0 79 73 2e 20 20 54 68 65 20 66 69 72 73 74 20 69 73 20 76 69 61 20 6c 69 6e 6b 73 20 69 6e 20 63 ys...The.first.is.via.links.in.c
e1e0 68 61 74 20 62 75 66 66 65 72 73 2c 20 61 73 20 64 65 73 63 72 69 62 65 64 20 61 62 6f 76 65 20 hat.buffers,.as.described.above.
e200 28 73 65 65 20 22 49 6e 63 6c 75 64 69 6e 67 20 6d 65 64 69 61 20 77 69 74 68 20 72 65 71 75 65 (see."Including.media.with.reque
e220 73 74 73 22 29 2e 0a 0a 54 68 65 20 73 65 63 6f 6e 64 20 69 73 20 67 6c 6f 62 61 6c 6c 79 20 76 sts")...The.second.is.globally.v
e240 69 61 20 64 65 64 69 63 61 74 65 64 20 63 6f 6e 74 65 78 74 20 63 6f 6d 6d 61 6e 64 73 3a 20 79 ia.dedicated.context.commands:.y
e260 6f 75 20 63 61 6e 20 61 64 64 20 61 20 73 65 6c 65 63 74 65 64 20 72 65 67 69 6f 6e 2c 20 62 75 ou.can.add.a.selected.region,.bu
e280 66 66 65 72 20 6f 72 20 66 69 6c 65 20 74 6f 20 67 70 74 65 6c 27 73 20 63 6f 6e 74 65 78 74 20 ffer.or.file.to.gptel's.context.
e2a0 66 72 6f 6d 20 74 68 65 20 6d 65 6e 75 2c 20 6f 72 20 63 61 6c 6c 20 3d 67 70 74 65 6c 2d 61 64 from.the.menu,.or.call.=gptel-ad
e2c0 64 3d 2e 20 20 54 6f 20 61 64 64 20 61 20 66 69 6c 65 20 75 73 65 20 3d 67 70 74 65 6c 2d 61 64 d=...To.add.a.file.use.=gptel-ad
e2e0 64 3d 20 69 6e 20 44 69 72 65 64 2c 20 6f 72 20 75 73 65 20 74 68 65 20 64 65 64 69 63 61 74 65 d=.in.Dired,.or.use.the.dedicate
e300 64 20 3d 67 70 74 65 6c 2d 61 64 64 2d 66 69 6c 65 3d 20 63 6f 6d 6d 61 6e 64 2e 20 20 44 69 72 d.=gptel-add-file=.command...Dir
e320 65 63 74 6f 72 69 65 73 20 77 69 6c 6c 20 68 61 76 65 20 74 68 65 69 72 20 66 69 6c 65 73 20 61 ectories.will.have.their.files.a
e340 64 64 65 64 20 72 65 63 75 72 73 69 76 65 6c 79 20 61 66 74 65 72 20 70 72 6f 6d 70 74 69 6e 67 dded.recursively.after.prompting
e360 20 66 6f 72 20 63 6f 6e 66 69 72 6d 61 74 69 6f 6e 2e 0a 0a 54 68 69 73 20 61 64 64 69 74 69 6f .for.confirmation...This.additio
e380 6e 61 6c 20 63 6f 6e 74 65 78 74 20 69 73 20 22 6c 69 76 65 22 20 61 6e 64 20 6e 6f 74 20 61 20 nal.context.is."live".and.not.a.
e3a0 73 6e 61 70 73 68 6f 74 2e 20 20 4f 6e 63 65 20 61 64 64 65 64 2c 20 74 68 65 20 72 65 67 69 6f snapshot...Once.added,.the.regio
e3c0 6e 73 2c 20 62 75 66 66 65 72 73 20 6f 72 20 66 69 6c 65 73 20 61 72 65 20 73 63 61 6e 6e 65 64 ns,.buffers.or.files.are.scanned
e3e0 20 61 6e 64 20 69 6e 63 6c 75 64 65 64 20 61 74 20 74 68 65 20 74 69 6d 65 20 6f 66 20 65 61 63 .and.included.at.the.time.of.eac
e400 68 20 71 75 65 72 79 2e 20 20 57 68 65 6e 20 75 73 69 6e 67 20 6d 75 6c 74 69 2d 6d 6f 64 61 6c h.query...When.using.multi-modal
e420 20 6d 6f 64 65 6c 73 2c 20 61 64 64 65 64 20 66 69 6c 65 73 20 63 61 6e 20 62 65 20 6f 66 20 61 .models,.added.files.can.be.of.a
e440 6e 79 20 73 75 70 70 6f 72 74 65 64 20 74 79 70 65 20 2d 2d 20 74 79 70 69 63 61 6c 6c 79 20 69 ny.supported.type.--.typically.i
e460 6d 61 67 65 73 2e 0a 0a 59 6f 75 20 63 61 6e 20 65 78 61 6d 69 6e 65 20 74 68 65 20 61 63 74 69 mages...You.can.examine.the.acti
e480 76 65 20 63 6f 6e 74 65 78 74 20 66 72 6f 6d 20 74 68 65 20 6d 65 6e 75 3a 0a 23 2b 68 74 6d 6c ve.context.from.the.menu:.#+html
e4a0 3a 20 3c 69 6d 67 20 73 72 63 3d 22 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6b :.<img.src="https://github.com/k
e4c0 61 72 74 68 69 6e 6b 2f 67 70 74 65 6c 2f 61 73 73 65 74 73 2f 38 36 30 37 35 33 32 2f 36 33 63 arthink/gptel/assets/8607532/63c
e4e0 64 37 66 63 38 2d 36 62 33 65 2d 34 32 61 65 2d 62 36 63 61 2d 30 36 66 66 39 33 35 62 61 65 39 d7fc8-6b3e-42ae-b6ca-06ff935bae9
e500 63 22 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 20 61 6c 74 3d 22 49 6d 61 67 65 20 73 68 6f c".align="center".alt="Image.sho
e520 77 69 6e 67 20 67 70 74 65 6c 27 73 20 6d 65 6e 75 20 77 69 74 68 20 74 68 65 20 22 69 6e 73 70 wing.gptel's.menu.with.the."insp
e540 65 63 74 20 63 6f 6e 74 65 78 74 22 20 63 6f 6d 6d 61 6e 64 2e 22 3e 0a 0a 41 6e 64 20 74 68 65 ect.context".command.">..And.the
e560 6e 20 62 72 6f 77 73 65 20 74 68 72 6f 75 67 68 20 6f 72 20 72 65 6d 6f 76 65 20 63 6f 6e 74 65 n.browse.through.or.remove.conte
e580 78 74 20 66 72 6f 6d 20 74 68 65 20 63 6f 6e 74 65 78 74 20 62 75 66 66 65 72 3a 0a 23 2b 68 74 xt.from.the.context.buffer:.#+ht
e5a0 6d 6c 3a 20 3c 69 6d 67 20 73 72 63 3d 22 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d ml:.<img.src="https://github.com
e5c0 2f 6b 61 72 74 68 69 6e 6b 2f 67 70 74 65 6c 2f 61 73 73 65 74 73 2f 38 36 30 37 35 33 32 2f 37 /karthink/gptel/assets/8607532/7
e5e0 39 61 35 66 66 65 38 2d 33 64 36 33 2d 34 62 66 37 2d 39 62 66 36 2d 30 34 35 37 61 62 36 31 62 9a5ffe8-3d63-4bf7-9bf6-0457ab61b
e600 66 32 61 22 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 20 61 6c 74 3d 22 49 6d 61 67 65 20 73 f2a".align="center".alt="Image.s
e620 68 6f 77 69 6e 67 20 67 70 74 65 6c 27 73 20 63 6f 6e 74 65 78 74 20 62 75 66 66 65 72 2e 22 3e howing.gptel's.context.buffer.">
e640 0a 0a 2a 2a 2a 20 48 61 6e 64 6c 65 20 22 72 65 61 73 6f 6e 69 6e 67 22 20 63 6f 6e 74 65 6e 74 ..***.Handle."reasoning".content
e660 0a 0a 53 6f 6d 65 20 4c 4c 4d 73 20 69 6e 63 6c 75 64 65 20 69 6e 20 74 68 65 69 72 20 72 65 73 ..Some.LLMs.include.in.their.res
e680 70 6f 6e 73 65 20 61 20 22 74 68 69 6e 6b 69 6e 67 22 20 6f 72 20 22 72 65 61 73 6f 6e 69 6e 67 ponse.a."thinking".or."reasoning
e6a0 22 20 62 6c 6f 63 6b 2e 20 20 54 68 69 73 20 74 65 78 74 20 69 6d 70 72 6f 76 65 73 20 74 68 65 ".block...This.text.improves.the
e6c0 20 71 75 61 6c 69 74 79 20 6f 66 20 74 68 65 20 4c 4c 4d e2 80 99 73 20 66 69 6e 61 6c 20 6f 75 .quality.of.the.LLM...s.final.ou
e6e0 74 70 75 74 2c 20 62 75 74 20 6d 61 79 20 6e 6f 74 20 62 65 20 69 6e 74 65 72 65 73 74 69 6e 67 tput,.but.may.not.be.interesting
e700 20 74 6f 20 79 6f 75 20 62 79 20 69 74 73 65 6c 66 2e 20 20 59 6f 75 20 63 61 6e 20 64 65 63 69 .to.you.by.itself...You.can.deci
e720 64 65 20 68 6f 77 20 79 6f 75 20 77 6f 75 6c 64 20 6c 69 6b 65 20 74 68 69 73 20 22 72 65 61 73 de.how.you.would.like.this."reas
e740 6f 6e 69 6e 67 22 20 63 6f 6e 74 65 6e 74 20 74 6f 20 62 65 20 68 61 6e 64 6c 65 64 20 62 79 20 oning".content.to.be.handled.by.
e760 67 70 74 65 6c 20 62 79 20 73 65 74 74 69 6e 67 20 74 68 65 20 75 73 65 72 20 6f 70 74 69 6f 6e gptel.by.setting.the.user.option
e780 20 3d 67 70 74 65 6c 2d 69 6e 63 6c 75 64 65 2d 72 65 61 73 6f 6e 69 6e 67 3d 2e 20 20 59 6f 75 .=gptel-include-reasoning=...You
e7a0 20 63 61 6e 20 69 6e 63 6c 75 64 65 20 69 74 20 69 6e 20 74 68 65 20 4c 4c 4d 20 72 65 73 70 6f .can.include.it.in.the.LLM.respo
e7c0 6e 73 65 20 28 74 68 65 20 64 65 66 61 75 6c 74 29 2c 20 6f 6d 69 74 20 69 74 20 65 6e 74 69 72 nse.(the.default),.omit.it.entir
e7e0 65 6c 79 2c 20 69 6e 63 6c 75 64 65 20 69 74 20 69 6e 20 74 68 65 20 62 75 66 66 65 72 20 62 75 ely,.include.it.in.the.buffer.bu
e800 74 20 69 67 6e 6f 72 65 20 69 74 20 6f 6e 20 73 75 62 73 65 71 75 65 6e 74 20 63 6f 6e 76 65 72 t.ignore.it.on.subsequent.conver
e820 73 61 74 69 6f 6e 20 74 75 72 6e 73 2c 20 6f 72 20 72 65 64 69 72 65 63 74 20 69 74 20 74 6f 20 sation.turns,.or.redirect.it.to.
e840 61 6e 6f 74 68 65 72 20 62 75 66 66 65 72 2e 20 20 41 73 20 77 69 74 68 20 6d 6f 73 74 20 6f 70 another.buffer...As.with.most.op
e860 74 69 6f 6e 73 2c 20 79 6f 75 20 63 61 6e 20 73 70 65 63 69 66 79 20 74 68 69 73 20 62 65 68 76 tions,.you.can.specify.this.behv
e880 61 69 6f 72 20 66 72 6f 6d 20 67 70 74 65 6c 27 73 20 74 72 61 6e 73 69 65 6e 74 20 6d 65 6e 75 aior.from.gptel's.transient.menu
e8a0 20 67 6c 6f 62 61 6c 6c 79 2c 20 62 75 66 66 65 72 2d 6c 6f 63 61 6c 6c 79 20 6f 72 20 66 6f 72 .globally,.buffer-locally.or.for
e8c0 20 74 68 65 20 6e 65 78 74 20 72 65 71 75 65 73 74 20 6f 6e 6c 79 2e 0a 0a 57 68 65 6e 20 69 6e .the.next.request.only...When.in
e8e0 63 6c 75 64 65 64 20 77 69 74 68 20 74 68 65 20 72 65 73 70 6f 6e 73 65 2c 20 72 65 61 73 6f 6e cluded.with.the.response,.reason
e900 69 6e 67 20 63 6f 6e 74 65 6e 74 20 77 69 6c 6c 20 62 65 20 64 65 6c 69 6d 69 74 65 64 20 62 79 ing.content.will.be.delimited.by
e920 20 4f 72 67 20 62 6c 6f 63 6b 73 20 6f 72 20 6d 61 72 6b 64 6f 77 6e 20 62 61 63 6b 74 69 63 6b .Org.blocks.or.markdown.backtick
e940 73 2e 0a 0a 2a 2a 2a 20 54 6f 6f 6c 20 75 73 65 0a 0a 67 70 74 65 6c 20 63 61 6e 20 70 72 6f 76 s...***.Tool.use..gptel.can.prov
e960 69 64 65 20 74 68 65 20 4c 4c 4d 20 77 69 74 68 20 63 6c 69 65 6e 74 2d 73 69 64 65 20 65 6c 69 ide.the.LLM.with.client-side.eli
e980 73 70 20 22 74 6f 6f 6c 73 22 2c 20 6f 72 20 66 75 6e 63 74 69 6f 6e 20 73 70 65 63 69 66 69 63 sp."tools",.or.function.specific
e9a0 61 74 69 6f 6e 73 2c 20 61 6c 6f 6e 67 20 77 69 74 68 20 74 68 65 20 72 65 71 75 65 73 74 2e 20 ations,.along.with.the.request..
e9c0 20 49 66 20 74 68 65 20 4c 4c 4d 20 64 65 63 69 64 65 73 20 74 6f 20 72 75 6e 20 74 68 65 20 74 .If.the.LLM.decides.to.run.the.t
e9e0 6f 6f 6c 2c 20 69 74 20 73 75 70 70 6c 69 65 73 20 74 68 65 20 74 6f 6f 6c 20 63 61 6c 6c 20 61 ool,.it.supplies.the.tool.call.a
ea00 72 67 75 6d 65 6e 74 73 2c 20 77 68 69 63 68 20 67 70 74 65 6c 20 75 73 65 73 20 74 6f 20 72 75 rguments,.which.gptel.uses.to.ru
ea20 6e 20 74 68 65 20 74 6f 6f 6c 20 69 6e 20 79 6f 75 72 20 45 6d 61 63 73 20 73 65 73 73 69 6f 6e n.the.tool.in.your.Emacs.session
ea40 2e 20 20 54 68 65 20 72 65 73 75 6c 74 20 69 73 20 6f 70 74 69 6f 6e 61 6c 6c 79 20 72 65 74 75 ...The.result.is.optionally.retu
ea60 72 6e 65 64 20 74 6f 20 74 68 65 20 4c 4c 4d 20 74 6f 20 63 6f 6d 70 6c 65 74 65 20 74 68 65 20 rned.to.the.LLM.to.complete.the.
ea80 74 61 73 6b 2e 0a 0a 54 68 69 73 20 65 78 63 68 61 6e 67 65 20 63 61 6e 20 62 65 20 75 73 65 64 task...This.exchange.can.be.used
eaa0 20 74 6f 20 65 71 75 69 70 20 74 68 65 20 4c 4c 4d 20 77 69 74 68 20 63 61 70 61 62 69 6c 69 74 .to.equip.the.LLM.with.capabilit
eac0 69 65 73 20 6f 72 20 6b 6e 6f 77 6c 65 64 67 65 20 62 65 79 6f 6e 64 20 77 68 61 74 20 69 73 20 ies.or.knowledge.beyond.what.is.
eae0 61 76 61 69 6c 61 62 6c 65 20 6f 75 74 20 6f 66 20 74 68 65 20 62 6f 78 20 2d 2d 20 66 6f 72 20 available.out.of.the.box.--.for.
eb00 69 6e 73 74 61 6e 63 65 2c 20 79 6f 75 20 63 61 6e 20 67 65 74 20 74 68 65 20 4c 4c 4d 20 74 6f instance,.you.can.get.the.LLM.to
eb20 20 63 6f 6e 74 72 6f 6c 20 79 6f 75 72 20 45 6d 61 63 73 20 66 72 61 6d 65 2c 20 63 72 65 61 74 .control.your.Emacs.frame,.creat
eb40 65 20 6f 72 20 6d 6f 64 69 66 79 20 66 69 6c 65 73 20 61 6e 64 20 64 69 72 65 63 74 6f 72 69 65 e.or.modify.files.and.directorie
eb60 73 2c 20 6f 72 20 6c 6f 6f 6b 20 75 70 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 72 65 6c 65 76 61 s,.or.look.up.information.releva
eb80 6e 74 20 74 6f 20 79 6f 75 72 20 72 65 71 75 65 73 74 20 76 69 61 20 77 65 62 20 73 65 61 72 63 nt.to.your.request.via.web.searc
eba0 68 20 6f 72 20 69 6e 20 61 20 6c 6f 63 61 6c 20 64 61 74 61 62 61 73 65 2e 20 20 48 65 72 65 20 h.or.in.a.local.database...Here.
ebc0 69 73 20 61 20 76 65 72 79 20 73 69 6d 70 6c 65 20 65 78 61 6d 70 6c 65 3a 0a 0a 23 2b 68 74 6d is.a.very.simple.example:..#+htm
ebe0 6c 3a 20 3c 70 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 0a 68 74 74 70 73 3a 2f 2f 67 69 l:.<p.align="center">.https://gi
ec00 74 68 75 62 2e 63 6f 6d 2f 75 73 65 72 2d 61 74 74 61 63 68 6d 65 6e 74 73 2f 61 73 73 65 74 73 thub.com/user-attachments/assets
ec20 2f 64 31 66 38 65 32 61 63 2d 36 32 62 62 2d 34 39 62 63 2d 38 35 30 64 2d 30 61 36 37 61 61 30 /d1f8e2ac-62bb-49bc-850d-0a67aa0
ec40 63 64 34 63 33 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 70 3e 0a 0a 54 6f 20 75 73 65 20 74 6f 6f 6c 73 cd4c3.#+html:.</p>..To.use.tools
ec60 20 69 6e 20 67 70 74 65 6c 2c 20 79 6f 75 20 6e 65 65 64 0a 2d 20 61 20 6d 6f 64 65 6c 20 74 68 .in.gptel,.you.need.-.a.model.th
ec80 61 74 20 73 75 70 70 6f 72 74 73 20 74 68 69 73 20 75 73 61 67 65 2e 20 20 41 6c 6c 20 74 68 65 at.supports.this.usage...All.the
eca0 20 66 6c 61 67 73 68 69 70 20 6d 6f 64 65 6c 73 20 73 75 70 70 6f 72 74 20 74 6f 6f 6c 20 75 73 .flagship.models.support.tool.us
ecc0 65 2c 20 61 73 20 64 6f 20 6d 61 6e 79 20 6f 66 20 74 68 65 20 73 6d 61 6c 6c 65 72 20 6f 70 65 e,.as.do.many.of.the.smaller.ope
ece0 6e 20 6d 6f 64 65 6c 73 2e 0a 2d 20 54 6f 6f 6c 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e 73 20 n.models..-.Tool.specifications.
ed00 74 68 61 74 20 67 70 74 65 6c 20 75 6e 64 65 72 73 74 61 6e 64 73 2e 20 20 67 70 74 65 6c 20 64 that.gptel.understands...gptel.d
ed20 6f 65 73 20 6e 6f 74 20 63 75 72 72 65 6e 74 6c 79 20 69 6e 63 6c 75 64 65 20 61 6e 79 20 74 6f oes.not.currently.include.any.to
ed40 6f 6c 73 20 6f 75 74 20 6f 66 20 74 68 65 20 62 6f 78 2e 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 ols.out.of.the.box...#+html:.<de
ed60 74 61 69 6c 73 3e 3c 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 44 65 66 69 6e 69 6e 67 20 67 70 tails><summary>.****.Defining.gp
ed80 74 65 6c 20 74 6f 6f 6c 73 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a 44 65 tel.tools.#+html:.</summary>..De
eda0 66 69 6e 69 6e 67 20 61 20 67 70 74 65 6c 20 74 6f 6f 6c 20 72 65 71 75 69 72 65 73 20 61 6e 20 fining.a.gptel.tool.requires.an.
edc0 65 6c 69 73 70 20 66 75 6e 63 74 69 6f 6e 20 61 6e 64 20 61 73 73 6f 63 69 61 74 65 64 20 6d 65 elisp.function.and.associated.me
ede0 74 61 64 61 74 61 2e 20 20 48 65 72 65 20 61 72 65 20 74 77 6f 20 73 69 6d 70 6c 65 20 74 6f 6f tadata...Here.are.two.simple.too
ee00 6c 20 64 65 66 69 6e 69 74 69 6f 6e 73 3a 0a 0a 2a 54 6f 20 72 65 61 64 20 74 68 65 20 63 6f 6e l.definitions:..*To.read.the.con
ee20 74 65 6e 74 73 20 6f 66 20 61 6e 20 45 6d 61 63 73 20 62 75 66 66 65 72 2a 3a 0a 0a 23 2b 62 65 tents.of.an.Emacs.buffer*:..#+be
ee40 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 74 gin_src.emacs-lisp.(gptel-make-t
ee60 6f 6f 6c 0a 20 3a 6e 61 6d 65 20 22 72 65 61 64 5f 62 75 66 66 65 72 22 20 20 20 20 20 20 20 20 ool..:name."read_buffer"........
ee80 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 6a 61 76 61 73 63 72 69 70 74 2d 73 74 79 6c 65 20 73 ............;.javascript-style.s
eea0 6e 61 6b 65 5f 63 61 73 65 20 6e 61 6d 65 0a 20 3a 66 75 6e 63 74 69 6f 6e 20 28 6c 61 6d 62 64 nake_case.name..:function.(lambd
eec0 61 20 28 62 75 66 66 65 72 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 74 68 a.(buffer)..................;.th
eee0 65 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 77 69 6c 6c 20 72 75 6e 0a 20 20 20 20 20 20 20 e.function.that.will.run........
ef00 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 62 75 66 66 65 72 2d 6c 69 76 65 2d 70 20 28 67 65 ......(unless.(buffer-live-p.(ge
ef20 74 2d 62 75 66 66 65 72 20 62 75 66 66 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 t-buffer.buffer))...............
ef40 20 28 65 72 72 6f 72 20 22 65 72 72 6f 72 3a 20 62 75 66 66 65 72 20 25 73 20 69 73 20 6e 6f 74 .(error."error:.buffer.%s.is.not
ef60 20 6c 69 76 65 2e 22 20 62 75 66 66 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 .live.".buffer))..............(w
ef80 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 20 62 75 66 66 65 72 0a 20 20 20 20 20 ith-current-buffer..buffer......
efa0 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
efc0 72 6f 70 65 72 74 69 65 73 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28 70 6f 69 6e 74 2d 6d 61 78 roperties.(point-min).(point-max
efe0 29 29 29 29 0a 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 72 65 74 75 72 6e 20 74 68 65 20 63 ))))..:description."return.the.c
f000 6f 6e 74 65 6e 74 73 20 6f 66 20 61 6e 20 65 6d 61 63 73 20 62 75 66 66 65 72 22 0a 20 3a 61 72 ontents.of.an.emacs.buffer"..:ar
f020 67 73 20 28 6c 69 73 74 20 27 28 3a 6e 61 6d 65 20 22 62 75 66 66 65 72 22 0a 20 20 20 20 20 20 gs.(list.'(:name."buffer".......
f040 20 20 20 20 20 20 20 20 20 3a 74 79 70 65 20 73 74 72 69 6e 67 20 20 20 20 20 20 20 20 20 20 20 .........:type.string...........
f060 20 3b 20 3a 74 79 70 65 20 76 61 6c 75 65 20 6d 75 73 74 20 62 65 20 61 20 73 79 6d 62 6f 6c 0a .;.:type.value.must.be.a.symbol.
f080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 74 68 65 ...............:description."the
f0a0 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 62 75 66 66 65 72 20 77 68 6f 73 65 20 63 6f 6e 74 65 6e .name.of.the.buffer.whose.conten
f0c0 74 73 20 61 72 65 20 74 6f 20 62 65 20 72 65 74 72 69 65 76 65 64 22 29 29 0a 20 3a 63 61 74 65 ts.are.to.be.retrieved"))..:cate
f0e0 67 6f 72 79 20 22 65 6d 61 63 73 22 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 gory."emacs")...................
f100 20 20 3b 20 41 6e 20 61 72 62 69 74 72 61 72 79 20 6c 61 62 65 6c 20 66 6f 72 20 67 72 6f 75 70 ..;.An.arbitrary.label.for.group
f120 69 6e 67 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 42 65 73 69 64 65 73 20 74 68 65 20 66 75 6e 63 74 ing.#+end_src..Besides.the.funct
f140 69 6f 6e 20 69 74 73 65 6c 66 2c 20 77 68 69 63 68 20 63 61 6e 20 62 65 20 6e 61 6d 65 64 20 6f ion.itself,.which.can.be.named.o
f160 72 20 61 6e 6f 6e 79 6d 6f 75 73 20 28 61 73 20 61 62 6f 76 65 29 2c 20 74 68 65 20 74 6f 6f 6c r.anonymous.(as.above),.the.tool
f180 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e 20 72 65 71 75 69 72 65 73 20 61 20 3d 3a 6e 61 6d 65 .specification.requires.a.=:name
f1a0 3d 2c 20 3d 3a 64 65 73 63 72 69 70 74 69 6f 6e 3d 20 61 6e 64 20 61 20 6c 69 73 74 20 6f 66 20 =,.=:description=.and.a.list.of.
f1c0 61 72 67 75 6d 65 6e 74 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e 73 20 69 6e 20 3d 3a 61 72 67 argument.specifications.in.=:arg
f1e0 73 3d 2e 20 20 45 61 63 68 20 61 72 67 75 6d 65 6e 74 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e s=...Each.argument.specification
f200 20 69 73 20 61 20 70 6c 69 73 74 20 77 69 74 68 20 61 74 6c 65 61 73 74 20 74 68 65 20 6b 65 79 .is.a.plist.with.atleast.the.key
f220 73 20 3d 3a 6e 61 6d 65 3d 2c 20 3d 3a 74 79 70 65 3d 20 61 6e 64 20 3d 3a 64 65 73 63 72 69 70 s.=:name=,.=:type=.and.=:descrip
f240 74 69 6f 6e 3d 2e 0a 0a 2a 54 6f 20 63 72 65 61 74 65 20 61 20 74 65 78 74 20 66 69 6c 65 2a 3a tion=...*To.create.a.text.file*:
f260 0a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 28 67 70 74 65 6c 2d ..#+begin_src.emacs-lisp.(gptel-
f280 6d 61 6b 65 2d 74 6f 6f 6c 0a 20 3a 6e 61 6d 65 20 22 63 72 65 61 74 65 5f 66 69 6c 65 22 20 20 make-tool..:name."create_file"..
f2a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 6a 61 76 61 73 63 72 69 70 74 2d 73 ..................;.javascript-s
f2c0 74 79 6c 65 20 20 73 6e 61 6b 65 5f 63 61 73 65 20 6e 61 6d 65 0a 20 3a 66 75 6e 63 74 69 6f 6e tyle..snake_case.name..:function
f2e0 20 28 6c 61 6d 62 64 61 20 28 70 61 74 68 20 66 69 6c 65 6e 61 6d 65 20 63 6f 6e 74 65 6e 74 29 .(lambda.(path.filename.content)
f300 20 20 20 3b 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 72 75 6e 73 0a 20 20 20 20 ...;.the.function.that.runs.....
f320 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 66 75 6c 6c 2d 70 61 74 68 20 28 65 78 70 61 6e .........(let.((full-path.(expan
f340 64 2d 66 69 6c 65 2d 6e 61 6d 65 20 66 69 6c 65 6e 61 6d 65 20 70 61 74 68 29 29 29 0a 20 20 20 d-file-name.filename.path)))....
f360 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...
f380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 63 6f 6e 74 65 6e 74 29 0a ...............(insert.content).
f3a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 72 69 74 65 2d 66 69 6c 65 20 66 75 6c .................(write-file.ful
f3c0 6c 2d 70 61 74 68 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 l-path))................(format.
f3e0 22 43 72 65 61 74 65 64 20 66 69 6c 65 20 25 73 20 69 6e 20 25 73 22 20 66 69 6c 65 6e 61 6d 65 "Created.file.%s.in.%s".filename
f400 20 70 61 74 68 29 29 29 0a 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 43 72 65 61 74 65 20 61 .path)))..:description."Create.a
f420 20 6e 65 77 20 66 69 6c 65 20 77 69 74 68 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 63 6f 6e .new.file.with.the.specified.con
f440 74 65 6e 74 22 0a 20 3a 61 72 67 73 20 28 6c 69 73 74 20 27 28 3a 6e 61 6d 65 20 22 70 61 74 68 tent"..:args.(list.'(:name."path
f460 22 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 61 20 6c 69 73 74 20 6f 66 20 61 72 67 75 6d 65 ".............;.a.list.of.argume
f480 6e 74 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e 73 0a 09 20 20 20 20 20 20 20 3a 74 79 70 65 20 nt.specifications.........:type.
f4a0 73 74 72 69 6e 67 0a 09 20 20 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 54 68 65 string.........:description."The
f4c0 20 64 69 72 65 63 74 6f 72 79 20 77 68 65 72 65 20 74 6f 20 63 72 65 61 74 65 20 74 68 65 20 66 .directory.where.to.create.the.f
f4e0 69 6c 65 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 27 28 3a 6e 61 6d 65 20 22 66 69 6c 65 ile")..............'(:name."file
f500 6e 61 6d 65 22 0a 09 20 20 20 20 20 20 20 3a 74 79 70 65 20 73 74 72 69 6e 67 0a 09 20 20 20 20 name".........:type.string......
f520 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 ...:description."The.name.of.the
f540 20 66 69 6c 65 20 74 6f 20 63 72 65 61 74 65 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 27 .file.to.create")..............'
f560 28 3a 6e 61 6d 65 20 22 63 6f 6e 74 65 6e 74 22 0a 09 20 20 20 20 20 20 20 3a 74 79 70 65 20 73 (:name."content".........:type.s
f580 74 72 69 6e 67 0a 09 20 20 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 54 68 65 20 tring.........:description."The.
f5a0 63 6f 6e 74 65 6e 74 20 74 6f 20 77 72 69 74 65 20 74 6f 20 74 68 65 20 66 69 6c 65 22 29 29 0a content.to.write.to.the.file")).
f5c0 20 3a 63 61 74 65 67 6f 72 79 20 22 66 69 6c 65 73 79 73 74 65 6d 22 29 20 20 20 20 20 20 20 20 .:category."filesystem")........
f5e0 20 20 20 20 20 20 20 20 3b 20 41 6e 20 61 72 62 69 74 72 61 72 79 20 6c 61 62 65 6c 20 66 6f 72 ........;.An.arbitrary.label.for
f600 20 67 72 6f 75 70 69 6e 67 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 57 69 74 68 20 73 6f 6d 65 20 70 .grouping.#+end_src..With.some.p
f620 72 6f 6d 70 74 69 6e 67 2c 20 79 6f 75 20 63 61 6e 20 67 65 74 20 61 6e 20 4c 4c 4d 20 74 6f 20 rompting,.you.can.get.an.LLM.to.
f640 77 72 69 74 65 20 74 68 65 73 65 20 74 6f 6f 6c 73 20 66 6f 72 20 79 6f 75 2e 0a 0a 54 6f 6f 6c write.these.tools.for.you...Tool
f660 73 20 63 61 6e 20 61 6c 73 6f 20 62 65 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 2c 20 75 73 65 20 s.can.also.be.asynchronous,.use.
f680 6f 70 74 69 6f 6e 61 6c 20 61 72 67 75 6d 65 6e 74 73 20 61 6e 64 20 61 72 67 75 6d 65 6e 74 73 optional.arguments.and.arguments
f6a0 20 77 69 74 68 20 6d 6f 72 65 20 73 74 72 75 63 74 75 72 65 20 28 65 6e 75 6d 73 2c 20 61 72 72 .with.more.structure.(enums,.arr
f6c0 61 79 73 2c 20 6f 62 6a 65 63 74 73 20 65 74 63 29 2e 20 20 53 65 65 20 3d 67 70 74 65 6c 2d 6d ays,.objects.etc)...See.=gptel-m
f6e0 61 6b 65 2d 74 6f 6f 6c 3d 20 66 6f 72 20 64 65 74 61 69 6c 73 2e 0a 0a 23 2b 68 74 6d 6c 3a 20 ake-tool=.for.details...#+html:.
f700 3c 2f 64 65 74 61 69 6c 73 3e 0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 74 61 69 6c 73 3e 3c 73 75 6d </details>.#+html:.<details><sum
f720 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 53 65 6c 65 63 74 69 6e 67 20 74 6f 6f 6c 73 0a 23 2b 68 74 6d mary>.****.Selecting.tools.#+htm
f740 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 4f 6e 63 65 20 64 65 66 69 6e 65 64 2c 20 74 6f 6f 6c l:.</summary>.Once.defined,.tool
f760 73 20 63 61 6e 20 62 65 20 73 65 6c 65 63 74 65 64 20 28 67 6c 6f 62 61 6c 6c 79 2c 20 62 75 66 s.can.be.selected.(globally,.buf
f780 66 65 72 2d 6c 6f 63 61 6c 6c 79 20 6f 72 20 66 6f 72 20 74 68 65 20 6e 65 78 74 20 72 65 71 75 fer-locally.or.for.the.next.requ
f7a0 65 73 74 20 6f 6e 6c 79 29 20 66 72 6f 6d 20 67 70 74 65 6c 27 73 20 74 72 61 6e 73 69 65 6e 74 est.only).from.gptel's.transient
f7c0 20 6d 65 6e 75 3a 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 69 6d 67 20 73 72 63 3d 22 68 74 74 70 73 3a .menu:..#+html:.<img.src="https:
f7e0 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 75 73 65 72 2d 61 74 74 61 63 68 6d 65 6e 74 73 2f 61 73 //github.com/user-attachments/as
f800 73 65 74 73 2f 66 64 38 37 38 35 39 36 2d 62 33 31 33 2d 34 33 38 35 2d 62 36 37 35 2d 33 64 36 sets/fd878596-b313-4385-b675-3d6
f820 35 34 36 39 30 39 64 38 62 22 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 20 61 6c 74 3d 22 49 546909d8b".align="center".alt="I
f840 6d 61 67 65 20 73 68 6f 77 69 6e 67 20 67 70 74 65 6c 27 73 20 74 6f 6f 6c 20 73 65 6c 65 63 74 mage.showing.gptel's.tool.select
f860 69 6f 6e 20 6d 65 6e 75 2e 22 3e 0a 0a 46 72 6f 6d 20 68 65 72 65 20 79 6f 75 20 63 61 6e 20 61 ion.menu.">..From.here.you.can.a
f880 6c 73 6f 20 72 65 71 75 69 72 65 20 63 6f 6e 66 69 72 6d 61 74 69 6f 6e 20 66 6f 72 20 61 6c 6c lso.require.confirmation.for.all
f8a0 20 74 6f 6f 6c 20 63 61 6c 6c 73 2c 20 61 6e 64 20 64 65 63 69 64 65 20 69 66 20 74 6f 6f 6c 20 .tool.calls,.and.decide.if.tool.
f8c0 63 61 6c 6c 20 72 65 73 75 6c 74 73 20 73 68 6f 75 6c 64 20 62 65 20 69 6e 63 6c 75 64 65 64 20 call.results.should.be.included.
f8e0 69 6e 20 74 68 65 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 2e 20 20 53 65 65 20 5b 5b 23 61 64 64 in.the.LLM.response...See.[[#add
f900 69 74 69 6f 6e 61 6c 2d 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 5d 5b 41 64 64 69 74 69 6f 6e 61 itional-configuration][Additiona
f920 6c 20 43 6f 6e 66 69 67 75 72 61 74 69 6f 6e 5d 5d 20 66 6f 72 20 64 6f 69 6e 67 20 74 68 65 73 l.Configuration]].for.doing.thes
f940 65 20 74 68 69 6e 67 73 20 76 69 61 20 65 6c 69 73 70 2e 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 e.things.via.elisp...#+html:.</d
f960 65 74 61 69 6c 73 3e 0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 74 61 69 6c 73 3e 3c 73 75 6d 6d 61 72 etails>.#+html:.<details><summar
f980 79 3e 0a 2a 2a 2a 2a 20 4d 6f 64 65 6c 20 43 6f 6e 74 65 78 74 20 50 72 6f 74 6f 63 6f 6c 20 28 y>.****.Model.Context.Protocol.(
f9a0 4d 43 50 29 20 69 6e 74 65 67 72 61 74 69 6f 6e 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 MCP).integration.#+html:.</summa
f9c0 72 79 3e 0a 0a 54 68 65 20 5b 5b 68 74 74 70 73 3a 2f 2f 6d 6f 64 65 6c 63 6f 6e 74 65 78 74 70 ry>..The.[[https://modelcontextp
f9e0 72 6f 74 6f 63 6f 6c 2e 69 6f 2f 69 6e 74 72 6f 64 75 63 74 69 6f 6e 5d 5b 4d 6f 64 65 6c 20 43 rotocol.io/introduction][Model.C
fa00 6f 6e 74 65 78 74 20 50 72 6f 74 6f 63 6f 6c 5d 5d 20 28 4d 43 50 29 20 69 73 20 61 20 70 72 6f ontext.Protocol]].(MCP).is.a.pro
fa20 74 6f 63 6f 6c 20 66 6f 72 20 70 72 6f 76 69 64 69 6e 67 20 72 65 73 6f 75 72 63 65 73 20 61 6e tocol.for.providing.resources.an
fa40 64 20 74 6f 6f 6c 73 20 74 6f 20 4c 4c 4d 73 2c 20 61 6e 64 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 d.tools.to.LLMs,.and.[[https://g
fa60 69 74 68 75 62 2e 63 6f 6d 2f 61 70 70 63 79 70 68 65 72 2f 61 77 65 73 6f 6d 65 2d 6d 63 70 2d ithub.com/appcypher/awesome-mcp-
fa80 73 65 72 76 65 72 73 5d 5b 6d 61 6e 79 20 4d 43 50 20 73 65 72 76 65 72 73 20 65 78 69 73 74 5d servers][many.MCP.servers.exist]
faa0 5d 20 74 68 61 74 20 70 72 6f 76 69 64 65 20 4c 4c 4d 20 74 6f 6f 6c 73 20 66 6f 72 20 66 69 6c ].that.provide.LLM.tools.for.fil
fac0 65 20 61 63 63 65 73 73 2c 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 2c 20 e.access,.database.connections,.
fae0 41 50 49 20 69 6e 74 65 67 72 61 74 69 6f 6e 73 20 65 74 63 2e 20 20 54 68 65 20 5b 5b 6d 63 70 API.integrations.etc...The.[[mcp
fb00 2e 65 6c 5d 5d 20 70 61 63 6b 61 67 65 20 66 6f 72 20 45 6d 61 63 73 20 63 61 6e 20 61 63 74 20 .el]].package.for.Emacs.can.act.
fb20 61 73 20 61 6e 20 4d 43 50 20 63 6c 69 65 6e 74 20 61 6e 64 20 6d 61 6e 61 67 65 20 74 68 65 73 as.an.MCP.client.and.manage.thes
fb40 65 20 74 6f 6f 6c 20 63 61 6c 6c 73 20 66 6f 72 20 67 70 74 65 6c 2e 0a 0a 54 6f 20 75 73 65 20 e.tool.calls.for.gptel...To.use.
fb60 4d 43 50 20 73 65 72 76 65 72 73 20 77 69 74 68 20 67 70 74 65 6c 2c 20 79 6f 75 20 74 68 75 73 MCP.servers.with.gptel,.you.thus
fb80 20 6e 65 65 64 20 74 68 72 65 65 20 70 69 65 63 65 73 3a 0a 0a 31 2e 20 54 68 65 20 5b 5b 68 74 .need.three.pieces:..1..The.[[ht
fba0 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6c 69 7a 71 77 65 72 73 63 6f 74 74 2f 6d 63 tps://github.com/lizqwerscott/mc
fbc0 70 2e 65 6c 5d 5b 6d 63 70 2e 65 6c 5d 5d 20 70 61 63 6b 61 67 65 20 66 6f 72 20 45 6d 61 63 73 p.el][mcp.el]].package.for.Emacs
fbe0 2c 20 5b 5b 68 74 74 70 73 3a 2f 2f 6d 65 6c 70 61 2e 6f 72 67 2f 23 2f 6d 63 70 5d 5b 61 76 61 ,.[[https://melpa.org/#/mcp][ava
fc00 69 6c 61 62 6c 65 20 6f 6e 20 4d 45 4c 50 41 5d 5d 2e 0a 32 2e 20 4d 43 50 20 73 65 72 76 65 72 ilable.on.MELPA]]..2..MCP.server
fc20 73 20 63 6f 6e 66 69 67 75 72 65 64 20 66 6f 72 20 61 6e 64 20 72 75 6e 6e 69 6e 67 20 76 69 61 s.configured.for.and.running.via
fc40 20 6d 63 70 2e 65 6c 2e 0a 33 2e 20 67 70 74 65 6c 20 61 6e 64 20 61 63 63 65 73 73 20 74 6f 20 .mcp.el..3..gptel.and.access.to.
fc60 61 6e 20 4c 4c 4d 0a 0a 67 70 74 65 6c 20 69 6e 63 6c 75 64 65 73 20 3d 67 70 74 65 6c 2d 69 6e an.LLM..gptel.includes.=gptel-in
fc80 74 65 67 72 61 74 69 6f 6e 73 3d 2c 20 61 20 73 6d 61 6c 6c 20 6c 69 62 72 61 72 79 20 74 6f 20 tegrations=,.a.small.library.to.
fca0 6d 61 6b 65 20 74 68 69 73 20 6d 6f 72 65 20 63 6f 6e 76 65 6e 69 65 6e 74 2e 20 20 54 68 69 73 make.this.more.convenient...This
fcc0 20 6c 69 62 72 61 72 79 20 69 73 20 6e 6f 74 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 6c 6f .library.is.not.automatically.lo
fce0 61 64 65 64 20 62 79 20 67 70 74 65 6c 2c 20 73 6f 20 69 66 20 79 6f 75 20 77 6f 75 6c 64 20 6c aded.by.gptel,.so.if.you.would.l
fd00 69 6b 65 20 74 6f 20 75 73 65 20 69 74 20 79 6f 75 20 68 61 76 65 20 74 6f 20 72 65 71 75 69 72 ike.to.use.it.you.have.to.requir
fd20 65 20 69 74 3a 0a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 28 72 e.it:..#+begin_src.emacs-lisp.(r
fd40 65 71 75 69 72 65 20 27 67 70 74 65 6c 2d 69 6e 74 65 67 72 61 74 69 6f 6e 73 29 0a 23 2b 65 6e equire.'gptel-integrations).#+en
fd60 64 5f 73 72 63 0a 0a 4f 6e 63 65 20 6c 6f 61 64 65 64 2c 20 79 6f 75 20 63 61 6e 20 72 75 6e 20 d_src..Once.loaded,.you.can.run.
fd80 74 68 65 20 3d 67 70 74 65 6c 2d 6d 63 70 2d 63 6f 6e 6e 65 63 74 3d 20 61 6e 64 20 3d 67 70 74 the.=gptel-mcp-connect=.and.=gpt
fda0 65 6c 2d 6d 63 70 2d 64 69 73 63 6f 6e 6e 65 63 74 3d 20 63 6f 6d 6d 61 6e 64 73 20 74 6f 20 72 el-mcp-disconnect=.commands.to.r
fdc0 65 67 69 73 74 65 72 20 61 6e 64 20 75 6e 72 65 67 69 73 74 65 72 20 4d 43 50 2d 70 72 6f 76 69 egister.and.unregister.MCP-provi
fde0 64 65 64 20 74 6f 6f 6c 73 20 69 6e 20 67 70 74 65 6c 2e 20 20 54 68 65 73 65 20 77 69 6c 6c 20 ded.tools.in.gptel...These.will.
fe00 61 6c 73 6f 20 73 68 6f 77 20 75 70 20 69 6e 20 74 68 65 20 74 6f 6f 6c 73 20 6d 65 6e 75 20 69 also.show.up.in.the.tools.menu.i
fe20 6e 20 67 70 74 65 6c 2c 20 61 63 63 65 73 73 65 64 20 76 69 61 20 3d 4d 2d 78 20 67 70 74 65 6c n.gptel,.accessed.via.=M-x.gptel
fe40 2d 6d 65 6e 75 3d 20 6f 72 20 3d 4d 2d 78 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 3d 3a 0a 0a 23 2b -menu=.or.=M-x.gptel-tools=:..#+
fe60 68 74 6d 6c 3a 20 3c 69 6d 67 20 73 72 63 3d 22 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 html:.<img.src="https://github.c
fe80 6f 6d 2f 75 73 65 72 2d 61 74 74 61 63 68 6d 65 6e 74 73 2f 61 73 73 65 74 73 2f 32 63 62 62 66 om/user-attachments/assets/2cbbf
fea0 38 61 30 2d 34 39 63 37 2d 34 39 61 35 2d 62 61 32 34 2d 35 31 34 61 64 37 65 30 38 37 39 39 22 8a0-49c7-49a5-ba24-514ad7e08799"
fec0 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 20 61 6c 74 3d 22 49 6d 61 67 65 20 73 68 6f 77 69 .align="center".alt="Image.showi
fee0 6e 67 20 4d 43 50 20 74 6f 6f 6c 20 72 65 67 69 73 74 72 61 74 69 6f 6e 20 63 6f 6d 6d 61 6e 64 ng.MCP.tool.registration.command
ff00 73 20 69 6e 20 67 70 74 65 6c 27 73 20 74 6f 6f 6c 20 73 65 6c 65 63 74 69 6f 6e 20 6d 65 6e 75 s.in.gptel's.tool.selection.menu
ff20 2e 22 3e 0a 0a 4d 43 50 2d 70 72 6f 76 69 64 65 64 20 74 6f 6f 6c 73 20 63 61 6e 20 62 65 20 75 .">..MCP-provided.tools.can.be.u
ff40 73 65 64 20 61 73 20 6e 6f 72 6d 61 6c 20 77 69 74 68 20 67 70 74 65 6c 2e 20 20 48 65 72 65 20 sed.as.normal.with.gptel...Here.
ff60 69 73 20 61 20 73 63 72 65 65 6e 63 61 73 74 20 6f 66 20 74 68 65 20 70 72 6f 63 65 73 73 2e 20 is.a.screencast.of.the.process..
ff80 20 28 49 6e 20 74 68 69 73 20 65 78 61 6d 70 6c 65 20 74 68 65 20 22 67 69 74 68 75 62 22 20 4d .(In.this.example.the."github".M
ffa0 43 50 20 73 65 72 76 65 72 20 69 73 20 69 6e 73 74 61 6c 6c 65 64 20 73 65 70 61 72 61 74 65 6c CP.server.is.installed.separatel
ffc0 79 20 75 73 69 6e 67 20 6e 70 6d 2e 29 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 70 20 61 6c 69 67 6e 3d y.using.npm.)..#+html:.<p.align=
ffe0 22 63 65 6e 74 65 72 22 3e 0a 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 75 73 65 "center">.https://github.com/use
10000 72 2d 61 74 74 61 63 68 6d 65 6e 74 73 2f 61 73 73 65 74 73 2f 66 33 65 61 37 61 63 30 2d 61 33 r-attachments/assets/f3ea7ac0-a3
10020 32 32 2d 34 61 35 39 2d 62 35 62 32 2d 62 33 66 35 39 32 35 35 34 66 38 61 0a 23 2b 68 74 6d 6c 22-4a59-b5b2-b3f592554f8a.#+html
10040 3a 20 3c 2f 70 3e 0a 0a 48 65 72 65 27 73 20 61 6e 20 65 78 61 6d 70 6c 65 20 6f 66 20 75 73 69 :.</p>..Here's.an.example.of.usi
10060 6e 67 20 74 68 65 73 65 20 74 6f 6f 6c 73 3a 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 70 20 61 6c 69 67 ng.these.tools:..#+html:.<p.alig
10080 6e 3d 22 63 65 6e 74 65 72 22 3e 0a 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 75 n="center">.https://github.com/u
100a0 73 65 72 2d 61 74 74 61 63 68 6d 65 6e 74 73 2f 61 73 73 65 74 73 2f 62 34 38 61 36 61 32 34 2d ser-attachments/assets/b48a6a24-
100c0 61 31 33 30 2d 34 64 61 37 2d 61 32 65 65 2d 36 65 61 35 36 38 65 31 30 63 38 35 0a 23 2b 68 74 a130-4da7-a2ee-6ea568e10c85.#+ht
100e0 6d 6c 3a 20 3c 2f 70 3e 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 0a 0a 2a ml:.</p>..#+html:.</details>...*
10100 2a 2a 20 52 65 77 72 69 74 65 2c 20 72 65 66 61 63 74 6f 72 20 6f 72 20 66 69 6c 6c 20 69 6e 20 **.Rewrite,.refactor.or.fill.in.
10120 61 20 72 65 67 69 6f 6e 0a 0a 49 6e 20 61 6e 79 20 62 75 66 66 65 72 3a 20 77 69 74 68 20 61 20 a.region..In.any.buffer:.with.a.
10140 72 65 67 69 6f 6e 20 73 65 6c 65 63 74 65 64 2c 20 79 6f 75 20 63 61 6e 20 6d 6f 64 69 66 79 20 region.selected,.you.can.modify.
10160 74 65 78 74 2c 20 72 65 77 72 69 74 65 20 70 72 6f 73 65 20 6f 72 20 72 65 66 61 63 74 6f 72 20 text,.rewrite.prose.or.refactor.
10180 63 6f 64 65 20 77 69 74 68 20 3d 67 70 74 65 6c 2d 72 65 77 72 69 74 65 3d 2e 20 20 45 78 61 6d code.with.=gptel-rewrite=...Exam
101a0 70 6c 65 20 77 69 74 68 20 70 72 6f 73 65 3a 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 70 20 61 6c 69 67 ple.with.prose:..#+html:.<p.alig
101c0 6e 3d 22 63 65 6e 74 65 72 22 3e 0a 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 75 n="center">.https://github.com/u
101e0 73 65 72 2d 61 74 74 61 63 68 6d 65 6e 74 73 2f 61 73 73 65 74 73 2f 65 33 62 34 33 36 62 33 2d ser-attachments/assets/e3b436b3-
10200 39 62 64 65 2d 34 63 31 66 2d 62 32 63 65 2d 33 66 37 64 66 31 39 38 34 39 33 33 0a 23 2b 68 74 9bde-4c1f-b2ce-3f7df1984933.#+ht
10220 6d 6c 3a 20 3c 2f 70 3e 0a 0a 54 68 65 20 72 65 73 75 6c 74 20 69 73 20 70 72 65 76 69 65 77 65 ml:.</p>..The.result.is.previewe
10240 64 20 6f 76 65 72 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 74 65 78 74 2e 20 20 42 79 20 64 65 d.over.the.original.text...By.de
10260 66 61 75 6c 74 2c 20 74 68 65 20 62 75 66 66 65 72 20 69 73 20 6e 6f 74 20 6d 6f 64 69 66 69 65 fault,.the.buffer.is.not.modifie
10280 64 2e 0a 0a 50 72 65 73 73 69 6e 67 20 3d 52 45 54 3d 20 6f 72 20 63 6c 69 63 6b 69 6e 67 20 69 d...Pressing.=RET=.or.clicking.i
102a0 6e 20 74 68 65 20 72 65 77 72 69 74 74 65 6e 20 72 65 67 69 6f 6e 20 73 68 6f 75 6c 64 20 67 69 n.the.rewritten.region.should.gi
102c0 76 65 20 79 6f 75 20 61 20 6c 69 73 74 20 6f 66 20 6f 70 74 69 6f 6e 73 3a 20 79 6f 75 20 63 61 ve.you.a.list.of.options:.you.ca
102e0 6e 20 2a 69 74 65 72 61 74 65 2a 20 6f 6e 2c 20 2a 64 69 66 66 2a 2c 20 2a 65 64 69 66 66 2a 2c n.*iterate*.on,.*diff*,.*ediff*,
10300 20 2a 6d 65 72 67 65 2a 20 6f 72 20 2a 61 63 63 65 70 74 2a 20 74 68 65 20 72 65 70 6c 61 63 65 .*merge*.or.*accept*.the.replace
10320 6d 65 6e 74 2e 20 20 45 78 61 6d 70 6c 65 20 77 69 74 68 20 63 6f 64 65 3a 0a 0a 23 2b 68 74 6d ment...Example.with.code:..#+htm
10340 6c 3a 20 3c 70 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 0a 68 74 74 70 73 3a 2f 2f 67 69 l:.<p.align="center">.https://gi
10360 74 68 75 62 2e 63 6f 6d 2f 75 73 65 72 2d 61 74 74 61 63 68 6d 65 6e 74 73 2f 61 73 73 65 74 73 thub.com/user-attachments/assets
10380 2f 34 30 36 37 66 64 62 38 2d 38 35 64 33 2d 34 32 36 34 2d 39 62 36 34 2d 64 37 32 37 33 35 33 /4067fdb8-85d3-4264-9b64-d727353
103a0 66 36 38 66 39 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 70 3e 0a 0a 2a 41 63 74 69 6e 67 20 6f 6e 20 74 f68f9.#+html:.</p>..*Acting.on.t
103c0 68 65 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 2a 3a 0a 0a 49 66 20 79 6f 75 20 77 6f 75 6c 64 20 he.LLM.response*:..If.you.would.
103e0 6c 69 6b 65 20 6f 6e 65 20 6f 66 20 74 68 65 73 65 20 74 68 69 6e 67 73 20 74 6f 20 68 61 70 70 like.one.of.these.things.to.happ
10400 65 6e 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2c 20 79 6f 75 20 63 61 6e 20 63 75 73 74 6f 6d en.automatically,.you.can.custom
10420 69 7a 65 20 3d 67 70 74 65 6c 2d 72 65 77 72 69 74 65 2d 64 65 66 61 75 6c 74 2d 61 63 74 69 6f ize.=gptel-rewrite-default-actio
10440 6e 3d 2e 0a 0a 54 68 65 73 65 20 6f 70 74 69 6f 6e 73 20 61 72 65 20 61 6c 73 6f 20 61 76 61 69 n=...These.options.are.also.avai
10460 6c 61 62 6c 65 20 66 72 6f 6d 20 3d 67 70 74 65 6c 2d 72 65 77 72 69 74 65 3d 3a 0a 0a 23 2b 68 lable.from.=gptel-rewrite=:..#+h
10480 74 6d 6c 3a 20 3c 69 6d 67 20 73 72 63 3d 22 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f tml:.<img.src="https://github.co
104a0 6d 2f 75 73 65 72 2d 61 74 74 61 63 68 6d 65 6e 74 73 2f 61 73 73 65 74 73 2f 35 38 39 37 38 35 m/user-attachments/assets/589785
104c0 62 39 2d 61 61 33 66 2d 34 31 34 61 2d 39 38 64 64 2d 64 32 36 62 37 35 30 39 64 65 30 38 22 20 b9-aa3f-414a-98dd-d26b7509de08".
104e0 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 20 2f 3e 0a 0a 41 6e 64 20 79 6f 75 20 63 61 6e 20 63 align="center"./>..And.you.can.c
10500 61 6c 6c 20 74 68 65 6d 20 64 69 72 65 63 74 6c 79 20 77 68 65 6e 20 74 68 65 20 63 75 72 73 6f all.them.directly.when.the.curso
10520 72 20 69 73 20 69 6e 20 74 68 65 20 72 65 77 72 69 74 74 65 6e 20 72 65 67 69 6f 6e 3a 0a 0a 23 r.is.in.the.rewritten.region:..#
10540 2b 68 74 6d 6c 3a 20 3c 69 6d 67 20 73 72 63 3d 22 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e +html:.<img.src="https://github.
10560 63 6f 6d 2f 75 73 65 72 2d 61 74 74 61 63 68 6d 65 6e 74 73 2f 61 73 73 65 74 73 2f 66 35 62 33 com/user-attachments/assets/f5b3
10580 63 61 34 37 2d 65 31 34 36 2d 34 35 66 65 2d 38 35 38 34 2d 66 31 31 30 33 35 66 61 34 64 62 63 ca47-e146-45fe-8584-f11035fa4dbc
105a0 22 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 20 2f 3e 0a 0a 2a 2a 2a 20 45 78 74 72 61 20 4f ".align="center"./>..***.Extra.O
105c0 72 67 20 6d 6f 64 65 20 63 6f 6e 76 65 6e 69 65 6e 63 65 73 0a 0a 67 70 74 65 6c 20 6f 66 66 65 rg.mode.conveniences..gptel.offe
105e0 72 73 20 61 20 66 65 77 20 65 78 74 72 61 20 63 6f 6e 76 65 6e 69 65 6e 63 65 73 20 69 6e 20 4f rs.a.few.extra.conveniences.in.O
10600 72 67 20 6d 6f 64 65 2e 0a 0a 2a 2a 2a 2a 2a 20 4c 69 6d 69 74 20 63 6f 6e 76 65 72 73 61 74 69 rg.mode...*****.Limit.conversati
10620 6f 6e 20 63 6f 6e 74 65 78 74 20 74 6f 20 61 6e 20 4f 72 67 20 68 65 61 64 69 6e 67 0a 0a 59 6f on.context.to.an.Org.heading..Yo
10640 75 20 63 61 6e 20 6c 69 6d 69 74 20 74 68 65 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 20 63 6f 6e u.can.limit.the.conversation.con
10660 74 65 78 74 20 74 6f 20 61 6e 20 4f 72 67 20 68 65 61 64 69 6e 67 20 77 69 74 68 20 74 68 65 20 text.to.an.Org.heading.with.the.
10680 63 6f 6d 6d 61 6e 64 20 3d 67 70 74 65 6c 2d 6f 72 67 2d 73 65 74 2d 74 6f 70 69 63 3d 2e 0a 0a command.=gptel-org-set-topic=...
106a0 28 54 68 69 73 20 73 65 74 73 20 61 6e 20 4f 72 67 20 70 72 6f 70 65 72 74 79 20 28 3d 47 50 54 (This.sets.an.Org.property.(=GPT
106c0 45 4c 5f 54 4f 50 49 43 3d 29 20 75 6e 64 65 72 20 74 68 65 20 68 65 61 64 69 6e 67 2e 20 20 59 EL_TOPIC=).under.the.heading...Y
106e0 6f 75 20 63 61 6e 20 61 6c 73 6f 20 61 64 64 20 74 68 69 73 20 70 72 6f 70 65 72 74 79 20 6d 61 ou.can.also.add.this.property.ma
10700 6e 75 61 6c 6c 79 20 69 6e 73 74 65 61 64 2e 29 0a 20 20 0a 2a 2a 2a 2a 2a 20 55 73 65 20 62 72 nually.instead.)....*****.Use.br
10720 61 6e 63 68 69 6e 67 20 63 6f 6e 74 65 78 74 20 69 6e 20 4f 72 67 20 6d 6f 64 65 20 28 74 72 65 anching.context.in.Org.mode.(tre
10740 65 20 6f 66 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 73 29 0a 0a 59 6f 75 20 63 61 6e 20 68 61 76 e.of.conversations)..You.can.hav
10760 65 20 62 72 61 6e 63 68 69 6e 67 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 73 20 69 6e 20 4f 72 67 e.branching.conversations.in.Org
10780 20 6d 6f 64 65 2c 20 77 68 65 72 65 20 65 61 63 68 20 68 69 65 72 61 72 63 68 69 63 61 6c 20 6f .mode,.where.each.hierarchical.o
107a0 75 74 6c 69 6e 65 20 70 61 74 68 20 74 68 72 6f 75 67 68 20 74 68 65 20 64 6f 63 75 6d 65 6e 74 utline.path.through.the.document
107c0 20 69 73 20 61 20 73 65 70 61 72 61 74 65 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 20 62 72 61 6e .is.a.separate.conversation.bran
107e0 63 68 2e 20 20 54 68 69 73 20 69 73 20 61 6c 73 6f 20 75 73 65 66 75 6c 20 66 6f 72 20 6c 69 6d ch...This.is.also.useful.for.lim
10800 69 74 69 6e 67 20 74 68 65 20 63 6f 6e 74 65 78 74 20 73 69 7a 65 20 6f 66 20 65 61 63 68 20 71 iting.the.context.size.of.each.q
10820 75 65 72 79 2e 20 20 53 65 65 20 74 68 65 20 76 61 72 69 61 62 6c 65 20 3d 67 70 74 65 6c 2d 6f uery...See.the.variable.=gptel-o
10840 72 67 2d 62 72 61 6e 63 68 69 6e 67 2d 63 6f 6e 74 65 78 74 3d 2e 0a 0a 49 66 20 74 68 69 73 20 rg-branching-context=...If.this.
10860 76 61 72 69 61 62 6c 65 20 69 73 20 6e 6f 6e 2d 6e 69 6c 2c 20 79 6f 75 20 73 68 6f 75 6c 64 20 variable.is.non-nil,.you.should.
10880 70 72 6f 62 61 62 6c 79 20 65 64 69 74 20 3d 67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 70 72 65 66 probably.edit.=gptel-prompt-pref
108a0 69 78 2d 61 6c 69 73 74 3d 20 61 6e 64 20 3d 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 70 72 ix-alist=.and.=gptel-response-pr
108c0 65 66 69 78 2d 61 6c 69 73 74 3d 20 73 6f 20 74 68 61 74 20 74 68 65 20 70 72 65 66 69 78 20 73 efix-alist=.so.that.the.prefix.s
108e0 74 72 69 6e 67 73 20 66 6f 72 20 6f 72 67 2d 6d 6f 64 65 20 61 72 65 20 6e 6f 74 20 4f 72 67 20 trings.for.org-mode.are.not.Org.
10900 68 65 61 64 69 6e 67 73 2c 20 65 2e 67 2e 0a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 headings,.e.g...#+begin_src.emac
10920 73 2d 6c 69 73 70 0a 20 20 28 73 65 74 66 20 28 61 6c 69 73 74 2d 67 65 74 20 27 6f 72 67 2d 6d s-lisp...(setf.(alist-get.'org-m
10940 6f 64 65 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 74 29 20 22 ode.gptel-prompt-prefix-alist)."
10960 40 75 73 65 72 5c 6e 22 29 0a 20 20 28 73 65 74 66 20 28 61 6c 69 73 74 2d 67 65 74 20 27 6f 72 @user\n")...(setf.(alist-get.'or
10980 67 2d 6d 6f 64 65 20 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 70 72 65 66 69 78 2d 61 6c 69 g-mode.gptel-response-prefix-ali
109a0 73 74 29 20 22 40 61 73 73 69 73 74 61 6e 74 5c 6e 22 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 4f st)."@assistant\n").#+end_src..O
109c0 74 68 65 72 77 69 73 65 2c 20 74 68 65 20 64 65 66 61 75 6c 74 20 70 72 6f 6d 70 74 20 70 72 65 therwise,.the.default.prompt.pre
109e0 66 69 78 20 77 69 6c 6c 20 6d 61 6b 65 20 73 75 63 63 65 73 73 69 76 65 20 70 72 6f 6d 70 74 73 fix.will.make.successive.prompts
10a00 20 73 69 62 6c 69 6e 67 20 68 65 61 64 69 6e 67 73 2c 20 61 6e 64 20 74 68 65 72 65 66 6f 72 65 .sibling.headings,.and.therefore
10a20 20 6f 6e 20 64 69 66 66 65 72 65 6e 74 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 20 62 72 61 6e 63 .on.different.conversation.branc
10a40 68 65 73 2c 20 77 68 69 63 68 20 70 72 6f 62 61 62 6c 79 20 69 73 6e 27 74 20 77 68 61 74 20 79 hes,.which.probably.isn't.what.y
10a60 6f 75 20 77 61 6e 74 2e 0a 0a 4e 6f 74 65 3a 20 75 73 69 6e 67 20 74 68 69 73 20 6f 70 74 69 6f ou.want...Note:.using.this.optio
10a80 6e 20 72 65 71 75 69 72 65 73 20 4f 72 67 20 39 2e 37 20 6f 72 20 68 69 67 68 65 72 20 74 6f 20 n.requires.Org.9.7.or.higher.to.
10aa0 62 65 20 61 76 61 69 6c 61 62 6c 65 2e 20 20 54 68 65 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 be.available...The.[[https://git
10ac0 68 75 62 2e 63 6f 6d 2f 75 6c 74 72 6f 6e 6f 7a 6d 2f 61 69 2d 6f 72 67 2d 63 68 61 74 2e 65 6c hub.com/ultronozm/ai-org-chat.el
10ae0 5d 5b 61 69 2d 6f 72 67 2d 63 68 61 74 5d 5d 20 70 61 63 6b 61 67 65 20 75 73 65 73 20 67 70 74 ][ai-org-chat]].package.uses.gpt
10b00 65 6c 20 74 6f 20 70 72 6f 76 69 64 65 20 74 68 69 73 20 62 72 61 6e 63 68 69 6e 67 20 63 6f 6e el.to.provide.this.branching.con
10b20 76 65 72 73 61 74 69 6f 6e 20 62 65 68 61 76 69 6f 72 20 66 6f 72 20 6f 6c 64 65 72 20 76 65 72 versation.behavior.for.older.ver
10b40 73 69 6f 6e 73 20 6f 66 20 4f 72 67 2e 0a 20 20 0a 2a 2a 2a 2a 2a 20 53 61 76 65 20 67 70 74 65 sions.of.Org.....*****.Save.gpte
10b60 6c 20 70 61 72 61 6d 65 74 65 72 73 20 74 6f 20 4f 72 67 20 68 65 61 64 69 6e 67 73 20 28 72 65 l.parameters.to.Org.headings.(re
10b80 70 72 6f 64 75 63 69 62 6c 65 20 63 68 61 74 73 29 0a 0a 59 6f 75 20 63 61 6e 20 64 65 63 6c 61 producible.chats)..You.can.decla
10ba0 72 65 20 74 68 65 20 67 70 74 65 6c 20 6d 6f 64 65 6c 2c 20 62 61 63 6b 65 6e 64 2c 20 74 65 6d re.the.gptel.model,.backend,.tem
10bc0 70 65 72 61 74 75 72 65 2c 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 20 61 6e 64 20 6f 74 68 perature,.system.message.and.oth
10be0 65 72 20 70 61 72 61 6d 65 74 65 72 73 20 61 73 20 4f 72 67 20 70 72 6f 70 65 72 74 69 65 73 20 er.parameters.as.Org.properties.
10c00 77 69 74 68 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 3d 67 70 74 65 6c 2d 6f 72 67 2d 73 65 74 2d with.the.command.=gptel-org-set-
10c20 70 72 6f 70 65 72 74 69 65 73 3d 2e 20 20 67 70 74 65 6c 20 71 75 65 72 69 65 73 20 75 6e 64 65 properties=...gptel.queries.unde
10c40 72 20 74 68 65 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 68 65 61 64 69 6e 67 20 77 69 6c 6c r.the.corresponding.heading.will
10c60 20 61 6c 77 61 79 73 20 75 73 65 20 74 68 65 73 65 20 73 65 74 74 69 6e 67 73 2c 20 61 6c 6c 6f .always.use.these.settings,.allo
10c80 77 69 6e 67 20 79 6f 75 20 74 6f 20 63 72 65 61 74 65 20 6d 6f 73 74 6c 79 20 72 65 70 72 6f 64 wing.you.to.create.mostly.reprod
10ca0 75 63 69 62 6c 65 20 4c 4c 4d 20 63 68 61 74 20 6e 6f 74 65 62 6f 6f 6b 73 2c 20 61 6e 64 20 74 ucible.LLM.chat.notebooks,.and.t
10cc0 6f 20 68 61 76 65 20 73 69 6d 75 6c 74 61 6e 65 6f 75 73 20 63 68 61 74 73 20 77 69 74 68 20 64 o.have.simultaneous.chats.with.d
10ce0 69 66 66 65 72 65 6e 74 20 6d 6f 64 65 6c 73 2c 20 6d 6f 64 65 6c 20 73 65 74 74 69 6e 67 73 20 ifferent.models,.model.settings.
10d00 61 6e 64 20 64 69 72 65 63 74 69 76 65 73 20 75 6e 64 65 72 20 64 69 66 66 65 72 65 6e 74 20 4f and.directives.under.different.O
10d20 72 67 20 68 65 61 64 69 6e 67 73 2e 0a 0a 2a 2a 2a 20 49 6e 74 72 6f 73 70 65 63 74 69 6f 6e 20 rg.headings...***.Introspection.
10d40 28 65 78 61 6d 69 6e 65 2c 20 64 65 62 75 67 20 6f 72 20 6d 6f 64 69 66 79 20 72 65 71 75 65 73 (examine,.debug.or.modify.reques
10d60 74 73 29 0a 0a 53 65 74 20 3d 67 70 74 65 6c 2d 65 78 70 65 72 74 2d 63 6f 6d 6d 61 6e 64 73 3d ts)..Set.=gptel-expert-commands=
10d80 20 74 6f 20 3d 74 3d 20 74 6f 20 64 69 73 70 6c 61 79 20 61 64 64 69 74 69 6f 6e 61 6c 20 6f 70 .to.=t=.to.display.additional.op
10da0 74 69 6f 6e 73 20 69 6e 20 67 70 74 65 6c 27 73 20 74 72 61 6e 73 69 65 6e 74 20 6d 65 6e 75 2e tions.in.gptel's.transient.menu.
10dc0 0a 23 2b 68 74 6d 6c 3a 20 3c 69 6d 67 20 77 69 64 74 68 3d 22 38 30 30 22 20 68 65 69 67 68 74 .#+html:.<img.width="800".height
10de0 3d 22 34 30 33 22 20 61 6c 74 3d 22 49 6d 61 67 65 22 20 73 72 63 3d 22 68 74 74 70 73 3a 2f 2f ="403".alt="Image".src="https://
10e00 67 69 74 68 75 62 2e 63 6f 6d 2f 75 73 65 72 2d 61 74 74 61 63 68 6d 65 6e 74 73 2f 61 73 73 65 github.com/user-attachments/asse
10e20 74 73 2f 36 33 36 66 66 37 37 63 2d 37 33 64 39 2d 34 34 39 62 2d 39 64 34 39 2d 62 62 37 39 32 ts/636ff77c-73d9-449b-9d49-bb792
10e40 64 38 61 62 64 34 35 22 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 2f 3e 0a 0a 2a 45 78 61 6d d8abd45".align="center"/>..*Exam
10e60 69 6e 69 6e 67 20 70 72 6f 6d 70 74 73 2a 3a 20 79 6f 75 20 63 61 6e 20 65 78 61 6d 69 6e 65 20 ining.prompts*:.you.can.examine.
10e80 61 6e 64 20 65 64 69 74 20 67 70 74 65 6c 20 72 65 71 75 65 73 74 20 70 61 79 6c 6f 61 64 73 20 and.edit.gptel.request.payloads.
10ea0 62 65 66 6f 72 65 20 73 65 6e 64 69 6e 67 20 74 68 65 6d 2e 0a 0a 2d 20 50 69 63 6b 20 6f 6e 65 before.sending.them...-.Pick.one
10ec0 20 6f 66 20 74 68 65 20 22 64 72 79 20 72 75 6e 22 20 6f 70 74 69 6f 6e 73 20 69 6e 20 74 68 65 .of.the."dry.run".options.in.the
10ee0 20 6d 65 6e 75 20 74 6f 20 70 72 6f 64 75 63 65 20 61 20 62 75 66 66 65 72 20 63 6f 6e 74 61 69 .menu.to.produce.a.buffer.contai
10f00 6e 69 6e 67 20 74 68 65 20 72 65 71 75 65 73 74 20 70 61 79 6c 6f 61 64 2e 0a 2d 20 59 6f 75 20 ning.the.request.payload..-.You.
10f20 63 61 6e 20 65 64 69 74 20 74 68 69 73 20 62 75 66 66 65 72 20 61 73 20 79 6f 75 20 77 6f 75 6c can.edit.this.buffer.as.you.woul
10f40 64 20 6c 69 6b 65 20 61 6e 64 20 73 65 6e 64 20 74 68 65 20 72 65 71 75 65 73 74 2e 0a 2d 20 59 d.like.and.send.the.request..-.Y
10f60 6f 75 20 63 61 6e 20 61 6c 73 6f 20 63 6f 70 79 20 61 20 43 75 72 6c 20 63 6f 6d 6d 61 6e 64 20 ou.can.also.copy.a.Curl.command.
10f80 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20 74 68 65 20 72 65 71 75 65 73 74 20 61 6e 64 corresponding.to.the.request.and
10fa0 20 69 6e 76 6f 6b 65 20 69 74 20 66 72 6f 6d 20 74 68 65 20 73 68 65 6c 6c 2e 0a 0a 2a 45 78 61 .invoke.it.from.the.shell...*Exa
10fc0 6d 69 6e 69 6e 67 20 72 65 73 70 6f 6e 73 65 73 2a 3a 20 59 6f 75 20 63 61 6e 20 74 75 72 6e 20 mining.responses*:.You.can.turn.
10fe0 6f 6e 20 6c 6f 67 67 69 6e 67 20 74 6f 20 65 78 61 6d 69 6e 65 20 74 68 65 20 66 75 6c 6c 20 72 on.logging.to.examine.the.full.r
11000 65 73 70 6f 6e 73 65 20 66 72 6f 6d 20 61 6e 20 4c 4c 4d 2e 0a 0a 2d 20 53 65 74 20 3d 67 70 74 esponse.from.an.LLM...-.Set.=gpt
11020 65 6c 2d 6c 6f 67 2d 6c 65 76 65 6c 3d 20 74 6f 20 3d 69 6e 66 6f 3d 20 6f 72 20 3d 64 65 62 75 el-log-level=.to.=info=.or.=debu
11040 67 3d 2e 0a 2d 20 53 65 6e 64 20 61 20 72 65 71 75 65 73 74 2e 0a 2d 20 4f 70 65 6e 20 74 68 65 g=..-.Send.a.request..-.Open.the
11060 20 6c 6f 67 20 62 75 66 66 65 72 20 66 72 6f 6d 20 67 70 74 65 6c 27 73 20 74 72 61 6e 73 69 65 .log.buffer.from.gptel's.transie
11080 6e 74 20 6d 65 6e 75 2c 20 6f 72 20 73 77 69 74 63 68 20 74 6f 20 74 68 65 20 3d 2a 67 70 74 65 nt.menu,.or.switch.to.the.=*gpte
110a0 6c 2d 6c 6f 67 2a 3d 20 62 75 66 66 65 72 2e 0a 0a 2a 2a 20 46 41 51 0a 2a 2a 2a 20 43 68 61 74 l-log*=.buffer...**.FAQ.***.Chat
110c0 20 62 75 66 66 65 72 20 55 49 0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 74 61 69 6c 73 3e 3c 73 75 6d .buffer.UI.#+html:.<details><sum
110e0 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 49 20 77 61 6e 74 20 74 68 65 20 77 69 6e 64 6f 77 20 74 6f 20 mary>.****.I.want.the.window.to.
11100 73 63 72 6f 6c 6c 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 61 73 20 74 68 65 20 72 65 73 70 scroll.automatically.as.the.resp
11120 6f 6e 73 65 20 69 73 20 69 6e 73 65 72 74 65 64 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 onse.is.inserted.#+html:.</summa
11140 72 79 3e 0a 0a 54 6f 20 62 65 20 6d 69 6e 69 6d 61 6c 6c 79 20 61 6e 6e 6f 79 69 6e 67 2c 20 67 ry>..To.be.minimally.annoying,.g
11160 70 74 65 6c 20 64 6f 65 73 20 6e 6f 74 20 6d 6f 76 65 20 74 68 65 20 63 75 72 73 6f 72 20 62 79 ptel.does.not.move.the.cursor.by
11180 20 64 65 66 61 75 6c 74 2e 20 20 41 64 64 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 6f 20 .default...Add.the.following.to.
111a0 79 6f 75 72 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 74 6f 20 65 6e 61 62 6c 65 20 61 75 74 your.configuration.to.enable.aut
111c0 6f 2d 73 63 72 6f 6c 6c 69 6e 67 2e 0a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d o-scrolling...#+begin_src.emacs-
111e0 6c 69 73 70 0a 28 61 64 64 2d 68 6f 6f 6b 20 27 67 70 74 65 6c 2d 70 6f 73 74 2d 73 74 72 65 61 lisp.(add-hook.'gptel-post-strea
11200 6d 2d 68 6f 6f 6b 20 27 67 70 74 65 6c 2d 61 75 74 6f 2d 73 63 72 6f 6c 6c 29 0a 23 2b 65 6e 64 m-hook.'gptel-auto-scroll).#+end
11220 5f 73 72 63 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 23 2b 68 74 6d 6c 3a _src..#+html:.</details>.#+html:
11240 20 3c 64 65 74 61 69 6c 73 3e 3c 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 49 20 77 61 6e 74 20 .<details><summary>.****.I.want.
11260 74 68 65 20 63 75 72 73 6f 72 20 74 6f 20 6d 6f 76 65 20 74 6f 20 74 68 65 20 6e 65 78 74 20 70 the.cursor.to.move.to.the.next.p
11280 72 6f 6d 70 74 20 61 66 74 65 72 20 74 68 65 20 72 65 73 70 6f 6e 73 65 20 69 73 20 69 6e 73 65 rompt.after.the.response.is.inse
112a0 72 74 65 64 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a 54 6f 20 62 65 20 6d rted.#+html:.</summary>..To.be.m
112c0 69 6e 69 6d 61 6c 6c 79 20 61 6e 6e 6f 79 69 6e 67 2c 20 67 70 74 65 6c 20 64 6f 65 73 20 6e 6f inimally.annoying,.gptel.does.no
112e0 74 20 6d 6f 76 65 20 74 68 65 20 63 75 72 73 6f 72 20 62 79 20 64 65 66 61 75 6c 74 2e 20 20 41 t.move.the.cursor.by.default...A
11300 64 64 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 6f 20 79 6f 75 72 20 63 6f 6e 66 69 67 75 dd.the.following.to.your.configu
11320 72 61 74 69 6f 6e 20 74 6f 20 6d 6f 76 65 20 74 68 65 20 63 75 72 73 6f 72 3a 0a 0a 23 2b 62 65 ration.to.move.the.cursor:..#+be
11340 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 28 61 64 64 2d 68 6f 6f 6b 20 27 67 70 gin_src.emacs-lisp.(add-hook.'gp
11360 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 27 67 70 74 tel-post-response-functions.'gpt
11380 65 6c 2d 65 6e 64 2d 6f 66 2d 72 65 73 70 6f 6e 73 65 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 59 el-end-of-response).#+end_src..Y
113a0 6f 75 20 63 61 6e 20 61 6c 73 6f 20 63 61 6c 6c 20 3d 67 70 74 65 6c 2d 65 6e 64 2d 6f 66 2d 72 ou.can.also.call.=gptel-end-of-r
113c0 65 73 70 6f 6e 73 65 3d 20 61 73 20 61 20 63 6f 6d 6d 61 6e 64 20 61 74 20 61 6e 79 20 74 69 6d esponse=.as.a.command.at.any.tim
113e0 65 2e 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 23 2b 68 74 6d 6c 3a 20 3c e...#+html:.</details>.#+html:.<
11400 64 65 74 61 69 6c 73 3e 3c 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 49 20 77 61 6e 74 20 74 6f details><summary>.****.I.want.to
11420 20 63 68 61 6e 67 65 20 74 68 65 20 66 6f 72 6d 61 74 74 69 6e 67 20 6f 66 20 74 68 65 20 70 72 .change.the.formatting.of.the.pr
11440 6f 6d 70 74 20 61 6e 64 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 0a 23 2b 68 74 6d 6c 3a 20 3c 2f ompt.and.LLM.response.#+html:.</
11460 73 75 6d 6d 61 72 79 3e 0a 0a 46 6f 72 20 64 65 64 69 63 61 74 65 64 20 63 68 61 74 20 62 75 66 summary>..For.dedicated.chat.buf
11480 66 65 72 73 3a 20 63 75 73 74 6f 6d 69 7a 65 20 3d 67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 70 72 fers:.customize.=gptel-prompt-pr
114a0 65 66 69 78 2d 61 6c 69 73 74 3d 20 61 6e 64 20 3d 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d efix-alist=.and.=gptel-response-
114c0 70 72 65 66 69 78 2d 61 6c 69 73 74 3d 2e 20 20 59 6f 75 20 63 61 6e 20 73 65 74 20 61 20 64 69 prefix-alist=...You.can.set.a.di
114e0 66 66 65 72 65 6e 74 20 70 61 69 72 20 66 6f 72 20 65 61 63 68 20 6d 61 6a 6f 72 2d 6d 6f 64 65 fferent.pair.for.each.major-mode
11500 2e 0a 0a 41 6e 79 77 68 65 72 65 20 69 6e 20 45 6d 61 63 73 3a 20 55 73 65 20 3d 67 70 74 65 6c ...Anywhere.in.Emacs:.Use.=gptel
11520 2d 70 72 65 2d 72 65 73 70 6f 6e 73 65 2d 68 6f 6f 6b 3d 20 61 6e 64 20 3d 67 70 74 65 6c 2d 70 -pre-response-hook=.and.=gptel-p
11540 6f 73 74 2d 72 65 73 70 6f 6e 73 65 2d 66 75 6e 63 74 69 6f 6e 73 3d 2c 20 77 68 69 63 68 20 73 ost-response-functions=,.which.s
11560 65 65 2e 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 23 2b 68 74 6d 6c 3a 20 ee...#+html:.</details>.#+html:.
11580 3c 64 65 74 61 69 6c 73 3e 3c 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 48 6f 77 20 64 6f 65 73 <details><summary>.****.How.does
115a0 20 67 70 74 65 6c 20 64 69 73 74 69 6e 67 75 69 73 68 20 62 65 74 77 65 65 6e 20 75 73 65 72 20 .gptel.distinguish.between.user.
115c0 70 72 6f 6d 70 74 73 20 61 6e 64 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 73 3f 0a 23 2b 68 74 6d prompts.and.LLM.responses?.#+htm
115e0 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a 67 70 74 65 6c 20 75 73 65 73 20 5b 5b 68 74 74 70 l:.</summary>..gptel.uses.[[http
11600 73 3a 2f 2f 77 77 77 2e 67 6e 75 2e 6f 72 67 2f 73 6f 66 74 77 61 72 65 2f 65 6d 61 63 73 2f 6d s://www.gnu.org/software/emacs/m
11620 61 6e 75 61 6c 2f 68 74 6d 6c 5f 6e 6f 64 65 2f 65 6c 69 73 70 2f 54 65 78 74 2d 50 72 6f 70 65 anual/html_node/elisp/Text-Prope
11640 72 74 69 65 73 2e 68 74 6d 6c 5d 5b 74 65 78 74 2d 70 72 6f 70 65 72 74 69 65 73 5d 5d 20 74 6f rties.html][text-properties]].to
11660 20 77 61 74 65 72 6d 61 72 6b 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 73 2e 20 20 54 68 75 73 20 .watermark.LLM.responses...Thus.
11680 74 68 69 73 20 74 65 78 74 20 69 73 20 69 6e 74 65 72 70 72 65 74 65 64 20 61 73 20 61 20 72 65 this.text.is.interpreted.as.a.re
116a0 73 70 6f 6e 73 65 20 65 76 65 6e 20 69 66 20 79 6f 75 20 63 6f 70 79 20 69 74 20 69 6e 74 6f 20 sponse.even.if.you.copy.it.into.
116c0 61 6e 6f 74 68 65 72 20 62 75 66 66 65 72 2e 20 20 49 6e 20 72 65 67 75 6c 61 72 20 62 75 66 66 another.buffer...In.regular.buff
116e0 65 72 73 20 28 62 75 66 66 65 72 73 20 77 69 74 68 6f 75 74 20 3d 67 70 74 65 6c 2d 6d 6f 64 65 ers.(buffers.without.=gptel-mode
11700 3d 20 65 6e 61 62 6c 65 64 29 2c 20 79 6f 75 20 63 61 6e 20 74 75 72 6e 20 6f 66 66 20 74 68 69 =.enabled),.you.can.turn.off.thi
11720 73 20 74 72 61 63 6b 69 6e 67 20 62 79 20 75 6e 73 65 74 74 69 6e 67 20 3d 67 70 74 65 6c 2d 74 s.tracking.by.unsetting.=gptel-t
11740 72 61 63 6b 2d 72 65 73 70 6f 6e 73 65 3d 2e 0a 0a 57 68 65 6e 20 72 65 73 74 6f 72 69 6e 67 20 rack-response=...When.restoring.
11760 61 20 63 68 61 74 20 73 74 61 74 65 20 66 72 6f 6d 20 61 20 66 69 6c 65 20 6f 6e 20 64 69 73 6b a.chat.state.from.a.file.on.disk
11780 2c 20 67 70 74 65 6c 20 77 69 6c 6c 20 61 70 70 6c 79 20 74 68 65 73 65 20 70 72 6f 70 65 72 74 ,.gptel.will.apply.these.propert
117a0 69 65 73 20 66 72 6f 6d 20 73 61 76 65 64 20 6d 65 74 61 64 61 74 61 20 69 6e 20 74 68 65 20 66 ies.from.saved.metadata.in.the.f
117c0 69 6c 65 20 77 68 65 6e 20 79 6f 75 20 74 75 72 6e 20 6f 6e 20 3d 67 70 74 65 6c 2d 6d 6f 64 65 ile.when.you.turn.on.=gptel-mode
117e0 3d 2e 0a 0a 67 70 74 65 6c 20 64 6f 65 73 20 2f 6e 6f 74 2f 20 75 73 65 20 61 6e 79 20 70 72 65 =...gptel.does./not/.use.any.pre
11800 66 69 78 20 6f 72 20 73 65 6d 61 6e 74 69 63 2f 73 79 6e 74 61 78 20 65 6c 65 6d 65 6e 74 20 69 fix.or.semantic/syntax.element.i
11820 6e 20 74 68 65 20 62 75 66 66 65 72 20 28 73 75 63 68 20 61 73 20 68 65 61 64 69 6e 67 73 29 20 n.the.buffer.(such.as.headings).
11840 74 6f 20 73 65 70 61 72 61 74 65 20 70 72 6f 6d 70 74 73 20 61 6e 64 20 72 65 73 70 6f 6e 73 65 to.separate.prompts.and.response
11860 73 2e 20 20 54 68 65 20 72 65 61 73 6f 6e 20 66 6f 72 20 74 68 69 73 20 69 73 20 74 68 61 74 20 s...The.reason.for.this.is.that.
11880 67 70 74 65 6c 20 61 69 6d 73 20 74 6f 20 69 6e 74 65 67 72 61 74 65 20 61 73 20 73 65 61 6d 6c gptel.aims.to.integrate.as.seaml
118a0 65 73 73 6c 79 20 61 73 20 70 6f 73 73 69 62 6c 65 20 69 6e 74 6f 20 79 6f 75 72 20 72 65 67 75 essly.as.possible.into.your.regu
118c0 6c 61 72 20 45 6d 61 63 73 20 75 73 61 67 65 3a 20 4c 4c 4d 20 69 6e 74 65 72 61 63 74 69 6f 6e lar.Emacs.usage:.LLM.interaction
118e0 20 69 73 20 6e 6f 74 20 74 68 65 20 6f 62 6a 65 63 74 69 76 65 2c 20 69 74 27 73 20 6a 75 73 74 .is.not.the.objective,.it's.just
11900 20 61 6e 6f 74 68 65 72 20 74 6f 6f 6c 20 61 74 20 79 6f 75 72 20 64 69 73 70 6f 73 61 6c 2e 20 .another.tool.at.your.disposal..
11920 20 53 6f 20 72 65 71 75 69 72 69 6e 67 20 61 20 62 75 6e 63 68 20 6f 66 20 22 75 73 65 72 22 20 .So.requiring.a.bunch.of."user".
11940 61 6e 64 20 22 61 73 73 69 73 74 61 6e 74 22 20 74 61 67 73 20 69 6e 20 74 68 65 20 62 75 66 66 and."assistant".tags.in.the.buff
11960 65 72 20 69 73 20 6e 6f 69 73 79 20 61 6e 64 20 72 65 73 74 72 69 63 74 69 76 65 2e 20 49 66 20 er.is.noisy.and.restrictive..If.
11980 79 6f 75 20 77 61 6e 74 20 74 68 65 73 65 20 64 65 6d 61 72 63 61 74 69 6f 6e 73 2c 20 79 6f 75 you.want.these.demarcations,.you
119a0 20 63 61 6e 20 63 75 73 74 6f 6d 69 7a 65 20 3d 67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 70 72 65 .can.customize.=gptel-prompt-pre
119c0 66 69 78 2d 61 6c 69 73 74 3d 20 61 6e 64 20 3d 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 70 fix-alist=.and.=gptel-response-p
119e0 72 65 66 69 78 2d 61 6c 69 73 74 3d 2e 20 20 4e 6f 74 65 20 74 68 61 74 20 74 68 65 73 65 20 70 refix-alist=...Note.that.these.p
11a00 72 65 66 69 78 65 73 20 61 72 65 20 66 6f 72 20 79 6f 75 72 20 72 65 61 64 61 62 69 6c 69 74 79 refixes.are.for.your.readability
11a20 20 6f 6e 6c 79 20 61 6e 64 20 70 75 72 65 6c 79 20 63 6f 73 6d 65 74 69 63 2e 0a 0a 23 2b 68 74 .only.and.purely.cosmetic...#+ht
11a40 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 2a 2a 2a 20 54 72 61 6e 73 69 65 6e 74 20 6d 65 6e ml:.</details>.***.Transient.men
11a60 75 20 62 65 68 61 76 69 6f 72 0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 74 61 69 6c 73 3e 3c 73 75 6d u.behavior.#+html:.<details><sum
11a80 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 49 20 77 61 6e 74 20 74 6f 20 73 65 74 20 67 70 74 65 6c 20 6f mary>.****.I.want.to.set.gptel.o
11aa0 70 74 69 6f 6e 73 20 62 75 74 20 6f 6e 6c 79 20 66 6f 72 20 74 68 69 73 20 62 75 66 66 65 72 0a ptions.but.only.for.this.buffer.
11ac0 3a 50 52 4f 50 45 52 54 49 45 53 3a 0a 3a 49 44 3a 20 20 20 20 20 20 20 37 34 38 63 62 63 30 30 :PROPERTIES:.:ID:.......748cbc00
11ae0 2d 30 63 39 32 2d 34 37 30 35 2d 38 38 33 39 2d 36 31 39 62 32 63 38 30 65 35 36 36 0a 3a 45 4e -0c92-4705-8839-619b2c80e566.:EN
11b00 44 3a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a 49 6e 20 65 76 65 72 79 20 D:.#+html:.</summary>..In.every.
11b20 6d 65 6e 75 20 75 73 65 64 20 74 6f 20 73 65 74 20 6f 70 74 69 6f 6e 73 2c 20 67 70 74 65 6c 20 menu.used.to.set.options,.gptel.
11b40 70 72 6f 76 69 64 65 73 20 61 20 22 73 63 6f 70 65 22 20 6f 70 74 69 6f 6e 2c 20 62 6f 75 6e 64 provides.a."scope".option,.bound
11b60 20 74 6f 20 74 68 65 20 7e 3d 7e 20 6b 65 79 3a 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 69 6d 67 20 73 .to.the.~=~.key:..#+html:.<img.s
11b80 72 63 3d 22 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 75 73 65 72 2d 61 74 74 61 rc="https://github.com/user-atta
11ba0 63 68 6d 65 6e 74 73 2f 61 73 73 65 74 73 2f 66 39 39 30 34 31 33 34 2d 32 39 30 35 2d 34 62 31 chments/assets/f9904134-2905-4b1
11bc0 64 2d 61 64 33 37 2d 62 36 34 63 37 37 37 61 66 38 61 63 22 20 61 6c 69 67 6e 3d 22 63 65 6e 74 d-ad37-b64c777af8ac".align="cent
11be0 65 72 22 20 2f 3e 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 69 6d 67 20 73 72 63 3d 22 68 74 74 70 73 3a er"./>..#+html:.<img.src="https:
11c00 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 75 73 65 72 2d 61 74 74 61 63 68 6d 65 6e 74 73 2f 61 73 //github.com/user-attachments/as
11c20 73 65 74 73 2f 63 30 39 35 30 30 33 35 2d 62 66 36 35 2d 34 33 61 65 2d 62 36 34 39 2d 38 65 33 sets/c0950035-bf65-43ae-b649-8e3
11c40 62 36 35 31 63 65 33 66 31 22 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 20 2f 3e 0a 0a 23 2b b651ce3f1".align="center"./>..#+
11c60 68 74 6d 6c 3a 20 3c 69 6d 67 20 73 72 63 3d 22 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 html:.<img.src="https://github.c
11c80 6f 6d 2f 75 73 65 72 2d 61 74 74 61 63 68 6d 65 6e 74 73 2f 61 73 73 65 74 73 2f 66 61 33 62 31 om/user-attachments/assets/fa3b1
11ca0 32 34 36 2d 65 30 30 66 2d 34 63 35 65 2d 38 38 63 37 2d 34 36 35 35 37 62 33 35 30 37 65 66 22 246-e00f-4c5e-88c7-46557b3507ef"
11cc0 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 20 2f 3e 0a 0a 59 6f 75 20 63 61 6e 20 66 6c 69 70 .align="center"./>..You.can.flip
11ce0 20 74 68 69 73 20 73 77 69 74 63 68 20 62 65 66 6f 72 65 20 73 65 74 74 69 6e 67 20 74 68 65 20 .this.switch.before.setting.the.
11d00 6f 70 74 69 6f 6e 20 74 6f 20 3d 62 75 66 66 65 72 3d 20 6f 72 20 3d 6f 6e 65 73 68 6f 74 3d 2e option.to.=buffer=.or.=oneshot=.
11d20 20 20 59 6f 75 20 6f 6e 6c 79 20 6e 65 65 64 20 74 6f 20 66 6c 69 70 20 74 68 69 73 20 73 77 69 ..You.only.need.to.flip.this.swi
11d40 74 63 68 20 6f 6e 63 65 2c 20 69 74 27 73 20 61 20 70 65 72 73 69 73 74 65 6e 74 20 73 65 74 74 tch.once,.it's.a.persistent.sett
11d60 69 6e 67 2e 20 20 3d 62 75 66 66 65 72 3d 20 73 65 74 73 20 74 68 65 20 6f 70 74 69 6f 6e 20 62 ing...=buffer=.sets.the.option.b
11d80 75 66 66 65 72 2d 6c 6f 63 61 6c 6c 79 2c 20 3d 6f 6e 65 73 68 6f 74 3d 20 77 69 6c 6c 20 73 65 uffer-locally,.=oneshot=.will.se
11da0 74 20 69 74 20 66 6f 72 20 74 68 65 20 6e 65 78 74 20 67 70 74 65 6c 20 72 65 71 75 65 73 74 20 t.it.for.the.next.gptel.request.
11dc0 6f 6e 6c 79 2e 20 20 54 68 65 20 64 65 66 61 75 6c 74 20 73 63 6f 70 65 20 69 73 20 67 6c 6f 62 only...The.default.scope.is.glob
11de0 61 6c 2e 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 23 2b 68 74 6d 6c 3a 20 al...#+html:.</details>.#+html:.
11e00 3c 64 65 74 61 69 6c 73 3e 3c 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 49 20 77 61 6e 74 20 74 <details><summary>.****.I.want.t
11e20 68 65 20 74 72 61 6e 73 69 65 6e 74 20 6d 65 6e 75 20 6f 70 74 69 6f 6e 73 20 74 6f 20 62 65 20 he.transient.menu.options.to.be.
11e40 73 61 76 65 64 20 73 6f 20 49 20 6f 6e 6c 79 20 6e 65 65 64 20 74 6f 20 73 65 74 20 74 68 65 6d saved.so.I.only.need.to.set.them
11e60 20 6f 6e 63 65 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a 41 6e 79 20 6d 6f .once.#+html:.</summary>..Any.mo
11e80 64 65 6c 20 6f 70 74 69 6f 6e 73 20 79 6f 75 20 73 65 74 20 61 72 65 20 73 61 76 65 64 20 61 63 del.options.you.set.are.saved.ac
11ea0 63 6f 72 64 69 6e 67 20 74 6f 20 74 68 65 20 73 63 6f 70 65 20 28 73 65 65 20 70 72 65 76 69 6f cording.to.the.scope.(see.previo
11ec0 75 73 20 71 75 65 73 74 69 6f 6e 29 2e 20 20 42 75 74 20 74 68 65 20 72 65 64 69 72 65 63 74 69 us.question)...But.the.redirecti
11ee0 6f 6e 20 6f 70 74 69 6f 6e 73 20 69 6e 20 74 68 65 20 6d 65 6e 75 20 61 72 65 20 73 65 74 20 66 on.options.in.the.menu.are.set.f
11f00 6f 72 20 74 68 65 20 6e 65 78 74 20 71 75 65 72 79 20 6f 6e 6c 79 3a 0a 0a 23 2b 68 74 6d 6c 3a or.the.next.query.only:..#+html:
11f20 20 3c 69 6d 67 20 73 72 63 3d 22 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6b 61 .<img.src="https://github.com/ka
11f40 72 74 68 69 6e 6b 2f 67 70 74 65 6c 2f 61 73 73 65 74 73 2f 38 36 30 37 35 33 32 2f 32 65 63 63 rthink/gptel/assets/8607532/2ecc
11f60 36 62 65 39 2d 61 61 35 32 2d 34 32 38 37 2d 61 37 33 39 2d 62 61 30 36 65 31 33 36 39 65 63 32 6be9-aa52-4287-a739-ba06e1369ec2
11f80 22 20 61 6c 74 3d 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 69 ".alt="https://github.com/karthi
11fa0 6e 6b 2f 67 70 74 65 6c 2f 61 73 73 65 74 73 2f 38 36 30 37 35 33 32 2f 32 65 63 63 36 62 65 39 nk/gptel/assets/8607532/2ecc6be9
11fc0 2d 61 61 35 32 2d 34 32 38 37 2d 61 37 33 39 2d 62 61 30 36 65 31 33 36 39 65 63 32 22 3e 0a 0a -aa52-4287-a739-ba06e1369ec2">..
11fe0 59 6f 75 20 63 61 6e 20 6d 61 6b 65 20 74 68 65 6d 20 70 65 72 73 69 73 74 65 6e 74 20 61 63 72 You.can.make.them.persistent.acr
12000 6f 73 73 20 74 68 69 73 20 45 6d 61 63 73 20 73 65 73 73 69 6f 6e 20 62 79 20 70 72 65 73 73 69 oss.this.Emacs.session.by.pressi
12020 6e 67 20 7e 43 2d 78 20 43 2d 73 7e 3a 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 69 6d 67 20 73 72 63 3d ng.~C-x.C-s~:..#+html:.<img.src=
12040 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 69 6e 6b 2f 67 70 74 "https://github.com/karthink/gpt
12060 65 6c 2f 61 73 73 65 74 73 2f 38 36 30 37 35 33 32 2f 62 38 62 63 62 36 61 64 2d 63 39 37 34 2d el/assets/8607532/b8bcb6ad-c974-
12080 34 31 65 31 2d 39 33 33 36 2d 66 64 62 61 30 30 39 38 61 32 66 65 22 20 61 6c 74 3d 22 68 74 74 41e1-9336-fdba0098a2fe".alt="htt
120a0 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 74 65 6c 2f 61 ps://github.com/karthink/gptel/a
120c0 73 73 65 74 73 2f 38 36 30 37 35 33 32 2f 62 38 62 63 62 36 61 64 2d 63 39 37 34 2d 34 31 65 31 ssets/8607532/b8bcb6ad-c974-41e1
120e0 2d 39 33 33 36 2d 66 64 62 61 30 30 39 38 61 32 66 65 22 3e 0a 0a 28 59 6f 75 20 63 61 6e 20 61 -9336-fdba0098a2fe">..(You.can.a
12100 6c 73 6f 20 63 79 63 6c 65 20 74 68 72 6f 75 67 68 20 70 72 65 73 65 74 73 20 79 6f 75 27 76 65 lso.cycle.through.presets.you've
12120 20 73 61 76 65 64 20 77 69 74 68 20 7e 43 2d 78 20 70 7e 20 61 6e 64 20 7e 43 2d 78 20 6e 7e 2e .saved.with.~C-x.p~.and.~C-x.n~.
12140 29 0a 0a 4e 6f 77 20 74 68 65 73 65 20 77 69 6c 6c 20 62 65 20 65 6e 61 62 6c 65 64 20 77 68 65 )..Now.these.will.be.enabled.whe
12160 6e 65 76 65 72 20 79 6f 75 20 73 65 6e 64 20 61 20 71 75 65 72 79 20 66 72 6f 6d 20 74 68 65 20 never.you.send.a.query.from.the.
12180 74 72 61 6e 73 69 65 6e 74 20 6d 65 6e 75 2e 20 20 49 66 20 79 6f 75 20 77 61 6e 74 20 74 6f 20 transient.menu...If.you.want.to.
121a0 75 73 65 20 74 68 65 73 65 20 73 61 76 65 64 20 6f 70 74 69 6f 6e 73 20 77 69 74 68 6f 75 74 20 use.these.saved.options.without.
121c0 69 6e 76 6f 6b 69 6e 67 20 74 68 65 20 74 72 61 6e 73 69 65 6e 74 20 6d 65 6e 75 2c 20 79 6f 75 invoking.the.transient.menu,.you
121e0 20 63 61 6e 20 75 73 65 20 61 20 6b 65 79 62 6f 61 72 64 20 6d 61 63 72 6f 3a 0a 0a 23 2b 62 65 .can.use.a.keyboard.macro:..#+be
12200 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 3b 3b 20 52 65 70 6c 61 63 65 20 77 69 gin_src.emacs-lisp.;;.Replace.wi
12220 74 68 20 79 6f 75 72 20 6b 65 79 20 74 6f 20 69 6e 76 6f 6b 65 20 74 68 65 20 74 72 61 6e 73 69 th.your.key.to.invoke.the.transi
12240 65 6e 74 20 6d 65 6e 75 3a 0a 28 6b 65 79 6d 61 70 2d 67 6c 6f 62 61 6c 2d 73 65 74 20 22 3c 66 ent.menu:.(keymap-global-set."<f
12260 36 3e 22 20 22 43 2d 75 20 43 2d 63 20 3c 72 65 74 75 72 6e 3e 20 3c 72 65 74 75 72 6e 3e 22 29 6>"."C-u.C-c.<return>.<return>")
12280 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 4f 72 20 73 65 65 20 74 68 69 73 20 5b 5b 68 74 74 70 73 3a .#+end_src..Or.see.this.[[https:
122a0 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6b 61 72 74 68 69 6e 6b 2f 67 70 74 65 6c 2f 77 69 6b 69 //github.com/karthink/gptel/wiki
122c0 2f 43 6f 6d 6d 6f 6e 6c 79 2d 72 65 71 75 65 73 74 65 64 2d 66 65 61 74 75 72 65 73 23 73 61 76 /Commonly-requested-features#sav
122e0 65 2d 74 72 61 6e 73 69 65 6e 74 2d 66 6c 61 67 73 5d 5b 77 69 6b 69 20 65 6e 74 72 79 5d 5d 2e e-transient-flags][wiki.entry]].
12300 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 ..#+html:.</details>.#+html:.<de
12320 74 61 69 6c 73 3e 3c 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 55 73 69 6e 67 20 74 68 65 20 74 tails><summary>.****.Using.the.t
12340 72 61 6e 73 69 65 6e 74 20 6d 65 6e 75 20 6c 65 61 76 65 73 20 62 65 68 69 6e 64 20 65 78 74 72 ransient.menu.leaves.behind.extr
12360 61 20 77 69 6e 64 6f 77 73 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a 49 66 a.windows.#+html:.</summary>..If
12380 20 75 73 69 6e 67 20 67 70 74 65 6c 27 73 20 74 72 61 6e 73 69 65 6e 74 20 6d 65 6e 75 73 20 63 .using.gptel's.transient.menus.c
123a0 61 75 73 65 73 20 6e 65 77 2f 65 78 74 72 61 20 77 69 6e 64 6f 77 20 73 70 6c 69 74 73 20 74 6f auses.new/extra.window.splits.to
123c0 20 62 65 20 63 72 65 61 74 65 64 2c 20 63 68 65 63 6b 20 79 6f 75 72 20 76 61 6c 75 65 20 6f 66 .be.created,.check.your.value.of
123e0 20 3d 74 72 61 6e 73 69 65 6e 74 2d 64 69 73 70 6c 61 79 2d 62 75 66 66 65 72 2d 61 63 74 69 6f .=transient-display-buffer-actio
12400 6e 3d 2e 20 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6d 61 67 69 74 2f n=...[[https://github.com/magit/
12420 74 72 61 6e 73 69 65 6e 74 2f 64 69 73 63 75 73 73 69 6f 6e 73 2f 33 35 38 5d 5b 53 65 65 20 74 transient/discussions/358][See.t
12440 68 69 73 20 64 69 73 63 75 73 73 69 6f 6e 5d 5d 20 66 6f 72 20 6d 6f 72 65 20 63 6f 6e 74 65 78 his.discussion]].for.more.contex
12460 74 2e 0a 0a 49 66 20 79 6f 75 20 61 72 65 20 75 73 69 6e 67 20 48 65 6c 6d 2c 20 73 65 65 20 5b t...If.you.are.using.Helm,.see.[
12480 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6d 61 67 69 74 2f 74 72 61 6e 73 69 [https://github.com/magit/transi
124a0 65 6e 74 2f 64 69 73 63 75 73 73 69 6f 6e 73 2f 33 36 31 5d 5b 54 72 61 6e 73 69 65 6e 74 23 33 ent/discussions/361][Transient#3
124c0 36 31 5d 5d 2e 0a 0a 49 6e 20 67 65 6e 65 72 61 6c 2c 20 64 6f 20 6e 6f 74 20 63 75 73 74 6f 6d 61]]...In.general,.do.not.custom
124e0 69 7a 65 20 74 68 69 73 20 54 72 61 6e 73 69 65 6e 74 20 6f 70 74 69 6f 6e 20 75 6e 6c 65 73 73 ize.this.Transient.option.unless
12500 20 79 6f 75 20 6b 6e 6f 77 20 77 68 61 74 20 79 6f 75 27 72 65 20 64 6f 69 6e 67 21 0a 0a 23 2b .you.know.what.you're.doing!..#+
12520 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 74 61 69 6c html:.</details>.#+html:.<detail
12540 73 3e 3c 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 43 61 6e 20 49 20 63 68 61 6e 67 65 20 74 68 s><summary>.****.Can.I.change.th
12560 65 20 74 72 61 6e 73 69 65 6e 74 20 6d 65 6e 75 20 6b 65 79 20 62 69 6e 64 69 6e 67 73 3f 0a 23 e.transient.menu.key.bindings?.#
12580 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a 59 65 73 2c 20 73 65 65 20 3d 74 72 61 +html:.</summary>..Yes,.see.=tra
125a0 6e 73 69 65 6e 74 2d 73 75 66 66 69 78 2d 70 75 74 3d 2e 20 20 54 68 69 73 20 63 68 61 6e 67 65 nsient-suffix-put=...This.change
125c0 73 20 74 68 65 20 6b 65 79 20 74 6f 20 73 65 6c 65 63 74 20 61 20 62 61 63 6b 65 6e 64 2f 6d 6f s.the.key.to.select.a.backend/mo
125e0 64 65 6c 20 66 72 6f 6d 20 22 2d 6d 22 20 74 6f 20 22 4d 22 20 69 6e 20 67 70 74 65 6c 27 73 20 del.from."-m".to."M".in.gptel's.
12600 6d 65 6e 75 3a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 28 74 72 menu:.#+begin_src.emacs-lisp.(tr
12620 61 6e 73 69 65 6e 74 2d 73 75 66 66 69 78 2d 70 75 74 20 27 67 70 74 65 6c 2d 6d 65 6e 75 20 28 ansient-suffix-put.'gptel-menu.(
12640 6b 62 64 20 22 2d 6d 22 29 20 3a 6b 65 79 20 22 4d 22 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 23 kbd."-m").:key."M").#+end_src..#
12660 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 74 61 69 +html:.</details>.#+html:.<detai
12680 6c 73 3e 3c 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 28 44 6f 6f 6d 20 45 6d 61 63 73 29 20 53 ls><summary>.****.(Doom.Emacs).S
126a0 65 6e 64 69 6e 67 20 61 20 71 75 65 72 79 20 66 72 6f 6d 20 74 68 65 20 67 70 74 65 6c 20 6d 65 ending.a.query.from.the.gptel.me
126c0 6e 75 20 66 61 69 6c 73 20 62 65 63 61 75 73 65 20 6f 66 20 61 20 6b 65 79 20 63 6f 6e 66 6c 69 nu.fails.because.of.a.key.confli
126e0 63 74 20 77 69 74 68 20 4f 72 67 20 6d 6f 64 65 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 ct.with.Org.mode.#+html:.</summa
12700 72 79 3e 0a 0a 44 6f 6f 6d 20 62 69 6e 64 73 20 7e 52 45 54 7e 20 69 6e 20 4f 72 67 20 6d 6f 64 ry>..Doom.binds.~RET~.in.Org.mod
12720 65 20 74 6f 20 3d 2b 6f 72 67 2f 64 77 69 6d 2d 61 74 2d 70 6f 69 6e 74 3d 2c 20 77 68 69 63 68 e.to.=+org/dwim-at-point=,.which
12740 20 61 70 70 65 61 72 73 20 74 6f 20 63 6f 6e 66 6c 69 63 74 20 77 69 74 68 20 67 70 74 65 6c 27 .appears.to.conflict.with.gptel'
12760 73 20 74 72 61 6e 73 69 65 6e 74 20 6d 65 6e 75 20 62 69 6e 64 69 6e 67 73 20 66 6f 72 20 73 6f s.transient.menu.bindings.for.so
12780 6d 65 20 72 65 61 73 6f 6e 2e 0a 0a 54 77 6f 20 73 6f 6c 75 74 69 6f 6e 73 3a 0a 2d 20 50 72 65 me.reason...Two.solutions:.-.Pre
127a0 73 73 20 7e 43 2d 6d 7e 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20 72 65 74 75 72 6e 20 6b ss.~C-m~.instead.of.the.return.k
127c0 65 79 2e 0a 2d 20 43 68 61 6e 67 65 20 74 68 65 20 73 65 6e 64 20 6b 65 79 20 66 72 6f 6d 20 72 ey..-.Change.the.send.key.from.r
127e0 65 74 75 72 6e 20 74 6f 20 61 20 6b 65 79 20 6f 66 20 79 6f 75 72 20 63 68 6f 69 63 65 3a 0a 20 eturn.to.a.key.of.your.choice:..
12800 20 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 20 20 28 74 72 61 6e 73 .#+begin_src.emacs-lisp...(trans
12820 69 65 6e 74 2d 73 75 66 66 69 78 2d 70 75 74 20 27 67 70 74 65 6c 2d 6d 65 6e 75 20 28 6b 62 64 ient-suffix-put.'gptel-menu.(kbd
12840 20 22 52 45 54 22 29 20 3a 6b 65 79 20 22 3c 66 38 3e 22 29 0a 20 20 23 2b 65 6e 64 5f 73 72 63 ."RET").:key."<f8>")...#+end_src
12860 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 2a 2a 2a 20 4d 69 73 63 65 6c 6c ..#+html:.</details>.***.Miscell
12880 61 6e 65 6f 75 73 0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 74 61 69 6c 73 3e 3c 73 75 6d 6d 61 72 79 aneous.#+html:.<details><summary
128a0 3e 0a 2a 2a 2a 2a 20 49 20 77 61 6e 74 20 74 6f 20 75 73 65 20 67 70 74 65 6c 20 69 6e 20 61 20 >.****.I.want.to.use.gptel.in.a.
128c0 77 61 79 20 74 68 61 74 27 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 65 64 20 62 79 20 3d 67 70 74 way.that's.not.supported.by.=gpt
128e0 65 6c 2d 73 65 6e 64 3d 20 6f 72 20 74 68 65 20 6f 70 74 69 6f 6e 73 20 6d 65 6e 75 0a 23 2b 68 el-send=.or.the.options.menu.#+h
12900 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a 67 70 74 65 6c 27 73 20 64 65 66 61 75 6c 74 tml:.</summary>..gptel's.default
12920 20 75 73 61 67 65 20 70 61 74 74 65 72 6e 20 69 73 20 73 69 6d 70 6c 65 2c 20 61 6e 64 20 77 69 .usage.pattern.is.simple,.and.wi
12940 6c 6c 20 73 74 61 79 20 74 68 69 73 20 77 61 79 3a 20 52 65 61 64 20 69 6e 70 75 74 20 69 6e 20 ll.stay.this.way:.Read.input.in.
12960 61 6e 79 20 62 75 66 66 65 72 20 61 6e 64 20 69 6e 73 65 72 74 20 74 68 65 20 72 65 73 70 6f 6e any.buffer.and.insert.the.respon
12980 73 65 20 62 65 6c 6f 77 20 69 74 2e 20 20 53 6f 6d 65 20 63 75 73 74 6f 6d 20 62 65 68 61 76 69 se.below.it...Some.custom.behavi
129a0 6f 72 20 69 73 20 70 6f 73 73 69 62 6c 65 20 77 69 74 68 20 74 68 65 20 74 72 61 6e 73 69 65 6e or.is.possible.with.the.transien
129c0 74 20 6d 65 6e 75 20 28 3d 43 2d 75 20 4d 2d 78 20 67 70 74 65 6c 2d 73 65 6e 64 3d 29 2e 0a 0a t.menu.(=C-u.M-x.gptel-send=)...
129e0 46 6f 72 20 6d 6f 72 65 20 70 72 6f 67 72 61 6d 6d 61 62 6c 65 20 75 73 61 67 65 2c 20 67 70 74 For.more.programmable.usage,.gpt
12a00 65 6c 20 70 72 6f 76 69 64 65 73 20 61 20 67 65 6e 65 72 61 6c 20 3d 67 70 74 65 6c 2d 72 65 71 el.provides.a.general.=gptel-req
12a20 75 65 73 74 3d 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 61 63 63 65 70 74 73 20 61 20 63 75 uest=.function.that.accepts.a.cu
12a40 73 74 6f 6d 20 70 72 6f 6d 70 74 20 61 6e 64 20 61 20 63 61 6c 6c 62 61 63 6b 20 74 6f 20 61 63 stom.prompt.and.a.callback.to.ac
12a60 74 20 6f 6e 20 74 68 65 20 72 65 73 70 6f 6e 73 65 2e 20 59 6f 75 20 63 61 6e 20 75 73 65 20 74 t.on.the.response..You.can.use.t
12a80 68 69 73 20 74 6f 20 62 75 69 6c 64 20 63 75 73 74 6f 6d 20 77 6f 72 6b 66 6c 6f 77 73 20 6e 6f his.to.build.custom.workflows.no
12aa0 74 20 73 75 70 70 6f 72 74 65 64 20 62 79 20 3d 67 70 74 65 6c 2d 73 65 6e 64 3d 2e 20 20 53 65 t.supported.by.=gptel-send=...Se
12ac0 65 20 74 68 65 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 3d 67 70 74 65 6c 2d 72 65 e.the.documentation.of.=gptel-re
12ae0 71 75 65 73 74 3d 2c 20 61 6e 64 20 74 68 65 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 quest=,.and.the.[[https://github
12b00 2e 63 6f 6d 2f 6b 61 72 74 68 69 6e 6b 2f 67 70 74 65 6c 2f 77 69 6b 69 2f 44 65 66 69 6e 69 6e .com/karthink/gptel/wiki/Definin
12b20 67 2d 63 75 73 74 6f 6d 2d 67 70 74 65 6c 2d 63 6f 6d 6d 61 6e 64 73 5d 5b 77 69 6b 69 5d 5d 20 g-custom-gptel-commands][wiki]].
12b40 66 6f 72 20 65 78 61 6d 70 6c 65 73 2e 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 for.examples...#+html:.</details
12b60 3e 0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 74 61 69 6c 73 3e 3c 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a >.#+html:.<details><summary>.***
12b80 2a 20 28 43 68 61 74 47 50 54 29 20 49 20 67 65 74 20 74 68 65 20 65 72 72 6f 72 20 22 28 48 54 *.(ChatGPT).I.get.the.error."(HT
12ba0 54 50 2f 32 20 34 32 39 29 20 59 6f 75 20 65 78 63 65 65 64 65 64 20 79 6f 75 72 20 63 75 72 72 TP/2.429).You.exceeded.your.curr
12bc0 65 6e 74 20 71 75 6f 74 61 22 0a 23 2b 68 74 6d 6c 3a 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a 23 2b ent.quota".#+html:</summary>..#+
12be0 62 65 67 69 6e 5f 71 75 6f 74 65 0a 28 48 54 54 50 2f 32 20 34 32 39 29 20 59 6f 75 20 65 78 63 begin_quote.(HTTP/2.429).You.exc
12c00 65 65 64 65 64 20 79 6f 75 72 20 63 75 72 72 65 6e 74 20 71 75 6f 74 61 2c 20 70 6c 65 61 73 65 eeded.your.current.quota,.please
12c20 20 63 68 65 63 6b 20 79 6f 75 72 20 70 6c 61 6e 20 61 6e 64 20 62 69 6c 6c 69 6e 67 20 64 65 74 .check.your.plan.and.billing.det
12c40 61 69 6c 73 2e 0a 23 2b 65 6e 64 5f 71 75 6f 74 65 0a 0a 55 73 69 6e 67 20 74 68 65 20 43 68 61 ails..#+end_quote..Using.the.Cha
12c60 74 47 50 54 20 28 6f 72 20 61 6e 79 20 4f 70 65 6e 41 49 29 20 41 50 49 20 72 65 71 75 69 72 65 tGPT.(or.any.OpenAI).API.require
12c80 73 20 5b 5b 68 74 74 70 73 3a 2f 2f 70 6c 61 74 66 6f 72 6d 2e 6f 70 65 6e 61 69 2e 63 6f 6d 2f s.[[https://platform.openai.com/
12ca0 61 63 63 6f 75 6e 74 2f 62 69 6c 6c 69 6e 67 2f 6f 76 65 72 76 69 65 77 5d 5b 61 64 64 69 6e 67 account/billing/overview][adding
12cc0 20 63 72 65 64 69 74 20 74 6f 20 79 6f 75 72 20 61 63 63 6f 75 6e 74 5d 5d 2e 0a 0a 23 2b 68 74 .credit.to.your.account]]...#+ht
12ce0 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 74 61 69 6c 73 3e ml:.</details>.#+html:.<details>
12d00 3c 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 57 68 79 20 61 6e 6f 74 68 65 72 20 4c 4c 4d 20 63 <summary>.****.Why.another.LLM.c
12d20 6c 69 65 6e 74 3f 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a 4f 74 68 65 72 lient?.#+html:.</summary>..Other
12d40 20 45 6d 61 63 73 20 63 6c 69 65 6e 74 73 20 66 6f 72 20 4c 4c 4d 73 20 70 72 65 73 63 72 69 62 .Emacs.clients.for.LLMs.prescrib
12d60 65 20 74 68 65 20 66 6f 72 6d 61 74 20 6f 66 20 74 68 65 20 69 6e 74 65 72 61 63 74 69 6f 6e 20 e.the.format.of.the.interaction.
12d80 28 61 20 63 6f 6d 69 6e 74 20 73 68 65 6c 6c 2c 20 6f 72 67 2d 62 61 62 65 6c 20 62 6c 6f 63 6b (a.comint.shell,.org-babel.block
12da0 73 2c 20 65 74 63 29 2e 20 20 49 20 77 61 6e 74 65 64 3a 0a 0a 31 2e 20 53 6f 6d 65 74 68 69 6e s,.etc)...I.wanted:..1..Somethin
12dc0 67 20 74 68 61 74 20 69 73 20 61 73 20 66 72 65 65 2d 66 6f 72 6d 20 61 73 20 70 6f 73 73 69 62 g.that.is.as.free-form.as.possib
12de0 6c 65 3a 20 71 75 65 72 79 20 74 68 65 20 6d 6f 64 65 6c 20 75 73 69 6e 67 20 61 6e 79 20 74 65 le:.query.the.model.using.any.te
12e00 78 74 20 69 6e 20 61 6e 79 20 62 75 66 66 65 72 2c 20 61 6e 64 20 72 65 64 69 72 65 63 74 20 74 xt.in.any.buffer,.and.redirect.t
12e20 68 65 20 72 65 73 70 6f 6e 73 65 20 61 73 20 72 65 71 75 69 72 65 64 2e 20 20 55 73 69 6e 67 20 he.response.as.required...Using.
12e40 61 20 64 65 64 69 63 61 74 65 64 20 3d 67 70 74 65 6c 3d 20 62 75 66 66 65 72 20 6a 75 73 74 20 a.dedicated.=gptel=.buffer.just.
12e60 61 64 64 73 20 73 6f 6d 65 20 76 69 73 75 61 6c 20 66 6c 61 69 72 20 74 6f 20 74 68 65 20 69 6e adds.some.visual.flair.to.the.in
12e80 74 65 72 61 63 74 69 6f 6e 2e 0a 32 2e 20 49 6e 74 65 67 72 61 74 69 6f 6e 20 77 69 74 68 20 6f teraction..2..Integration.with.o
12ea0 72 67 2d 6d 6f 64 65 2c 20 6e 6f 74 20 75 73 69 6e 67 20 61 20 77 61 6c 6c 65 64 2d 6f 66 66 20 rg-mode,.not.using.a.walled-off.
12ec0 6f 72 67 2d 62 61 62 65 6c 20 62 6c 6f 63 6b 2c 20 62 75 74 20 61 73 20 72 65 67 75 6c 61 72 20 org-babel.block,.but.as.regular.
12ee0 74 65 78 74 2e 20 20 54 68 69 73 20 77 61 79 20 74 68 65 20 6d 6f 64 65 6c 20 63 61 6e 20 67 65 text...This.way.the.model.can.ge
12f00 6e 65 72 61 74 65 20 63 6f 64 65 20 62 6c 6f 63 6b 73 20 74 68 61 74 20 49 20 63 61 6e 20 72 75 nerate.code.blocks.that.I.can.ru
12f20 6e 2e 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 0a 2a 2a 20 41 64 64 69 74 n...#+html:.</details>..**.Addit
12f40 69 6f 6e 61 6c 20 43 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0a 3a 50 52 4f 50 45 52 54 49 45 53 3a ional.Configuration.:PROPERTIES:
12f60 0a 3a 49 44 3a 20 20 20 20 20 20 20 66 38 38 35 61 64 61 63 2d 35 38 61 33 2d 34 65 62 61 2d 61 .:ID:.......f885adac-58a3-4eba-a
12f80 36 62 37 2d 39 31 65 39 65 37 61 31 37 38 32 39 0a 3a 45 4e 44 3a 0a 23 2b 68 74 6d 6c 3a 20 3c 6b7-91e9e7a17829.:END:.#+html:.<
12fa0 2f 73 75 6d 6d 61 72 79 3e 0a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 /summary>..#+begin_src.emacs-lis
12fc0 70 20 3a 65 78 70 6f 72 74 73 20 6e 6f 6e 65 20 3a 72 65 73 75 6c 74 73 20 6c 69 73 74 0a 28 6c p.:exports.none.:results.list.(l
12fe0 65 74 20 28 28 61 6c 6c 29 29 0a 20 20 28 6d 61 70 61 74 6f 6d 73 20 28 6c 61 6d 62 64 61 20 28 et.((all))...(mapatoms.(lambda.(
13000 73 79 6d 29 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 73 sym)...............(when.(and.(s
13020 74 72 69 6e 67 2d 6d 61 74 63 68 2d 70 20 22 5e 67 70 74 65 6c 2d 5b 5e 2d 5d 22 20 28 73 79 6d tring-match-p."^gptel-[^-]".(sym
13040 62 6f 6c 2d 6e 61 6d 65 20 73 79 6d 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 bol-name.sym))..................
13060 20 20 20 20 20 20 20 20 28 67 65 74 20 73 79 6d 20 27 76 61 72 69 61 62 6c 65 2d 64 6f 63 75 6d ........(get.sym.'variable-docum
13080 65 6e 74 61 74 69 6f 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 entation)).................(push
130a0 20 73 79 6d 20 61 6c 6c 29 29 29 29 0a 20 20 61 6c 6c 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 7c .sym.all))))...all).#+end_src..|
130c0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d -------------------------+------
130e0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
13100 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 7c 0a ------------------------------|.
13120 7c 20 2a 43 6f 6e 6e 65 63 74 69 6f 6e 20 6f 70 74 69 6f 6e 73 2a 20 20 20 20 7c 20 20 20 20 20 |.*Connection.options*....|.....
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 20 20 20 ................................
13160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c ...............................|
13180 0a 7c 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d .|-------------------------+----
131a0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
131c0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
131e0 7c 0a 7c 20 3d 67 70 74 65 6c 2d 75 73 65 2d 63 75 72 6c 3d 20 20 20 20 20 20 20 20 7c 20 55 73 |.|.=gptel-use-curl=........|.Us
13200 65 20 43 75 72 6c 3f 20 28 64 65 66 61 75 6c 74 29 2c 20 66 61 6c 6c 62 61 63 6b 20 74 6f 20 45 e.Curl?.(default),.fallback.to.E
13220 6d 61 63 73 27 20 62 75 69 6c 74 2d 69 6e 20 3d 75 72 6c 3d 2e 20 20 20 20 20 20 20 20 20 20 20 macs'.built-in.=url=............
13240 20 7c 0a 7c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 59 .|.|.........................|.Y
13260 6f 75 20 63 61 6e 20 61 6c 73 6f 20 73 70 65 63 69 66 79 20 74 68 65 20 43 75 72 6c 20 70 61 74 ou.can.also.specify.the.Curl.pat
13280 68 20 68 65 72 65 2e 20 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.here..........................
132a0 20 20 7c 0a 7c 20 3d 67 70 74 65 6c 2d 70 72 6f 78 79 3d 20 20 20 20 20 20 20 20 20 20 20 7c 20 ..|.|.=gptel-proxy=...........|.
132c0 50 72 6f 78 79 20 73 65 72 76 65 72 20 66 6f 72 20 72 65 71 75 65 73 74 73 2c 20 70 61 73 73 65 Proxy.server.for.requests,.passe
132e0 64 20 74 6f 20 63 75 72 6c 20 76 69 61 20 3d 2d 2d 70 72 6f 78 79 3d 2e 20 20 20 20 20 20 20 20 d.to.curl.via.=--proxy=.........
13300 20 20 20 7c 0a 7c 20 3d 67 70 74 65 6c 2d 63 75 72 6c 2d 65 78 74 72 61 2d 61 72 67 73 3d 20 7c ...|.|.=gptel-curl-extra-args=.|
13320 20 45 78 74 72 61 20 61 72 67 75 6d 65 6e 74 73 20 70 61 73 73 65 64 20 74 6f 20 43 75 72 6c 2e .Extra.arguments.passed.to.Curl.
13340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
13360 20 20 20 20 7c 0a 7c 20 3d 67 70 74 65 6c 2d 61 70 69 2d 6b 65 79 3d 20 20 20 20 20 20 20 20 20 ....|.|.=gptel-api-key=.........
13380 7c 20 56 61 72 69 61 62 6c 65 2f 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 72 65 74 75 72 6e 73 |.Variable/function.that.returns
133a0 20 74 68 65 20 41 50 49 20 6b 65 79 20 66 6f 72 20 74 68 65 20 61 63 74 69 76 65 20 62 61 63 6b .the.API.key.for.the.active.back
133c0 65 6e 64 2e 20 7c 0a 7c 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d end..|.|------------------------
133e0 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d -+------------------------------
13400 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
13420 2d 2d 2d 2d 2d 2d 7c 0a 0a 7c 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ------|..|----------------------
13440 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d -+------------------------------
13460 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 7c 0a 7c 20 2a ---------------------------|.|.*
13480 4c 4c 4d 20 72 65 71 75 65 73 74 20 6f 70 74 69 6f 6e 73 2a 20 7c 20 2f 28 4e 6f 74 65 3a 20 6e LLM.request.options*.|./(Note:.n
134a0 6f 74 20 73 75 70 70 6f 72 74 65 64 20 75 6e 69 66 6f 72 6d 6c 79 20 61 63 72 6f 73 73 20 4c 4c ot.supported.uniformly.across.LL
134c0 4d 73 29 2f 20 20 20 20 20 20 20 20 20 20 20 7c 0a 7c 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d Ms)/...........|.|--------------
134e0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------+----------------------
13500 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
13520 2d 2d 2d 7c 0a 7c 20 3d 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 3d 20 20 20 20 20 20 20 7c 20 44 ---|.|.=gptel-backend=.......|.D
13540 65 66 61 75 6c 74 20 4c 4c 4d 20 42 61 63 6b 65 6e 64 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 efault.LLM.Backend..............
13560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 7c 20 3d 67 70 74 65 .......................|.|.=gpte
13580 6c 2d 6d 6f 64 65 6c 3d 20 20 20 20 20 20 20 20 20 7c 20 44 65 66 61 75 6c 74 20 6d 6f 64 65 6c l-model=.........|.Default.model
135a0 20 74 6f 20 75 73 65 2c 20 64 65 70 65 6e 64 73 20 6f 6e 20 74 68 65 20 62 61 63 6b 65 6e 64 2e .to.use,.depends.on.the.backend.
135c0 20 20 20 20 20 20 20 20 20 20 20 7c 0a 7c 20 3d 67 70 74 65 6c 2d 73 74 72 65 61 6d 3d 20 20 20 ...........|.|.=gptel-stream=...
135e0 20 20 20 20 20 7c 20 45 6e 61 62 6c 65 20 73 74 72 65 61 6d 69 6e 67 20 72 65 73 70 6f 6e 73 65 .....|.Enable.streaming.response
13600 73 2c 20 69 66 20 74 68 65 20 62 61 63 6b 65 6e 64 20 73 75 70 70 6f 72 74 73 20 69 74 2e 20 7c s,.if.the.backend.supports.it..|
13620 0a 7c 20 3d 67 70 74 65 6c 2d 64 69 72 65 63 74 69 76 65 73 3d 20 20 20 20 7c 20 41 6c 69 73 74 .|.=gptel-directives=....|.Alist
13640 20 6f 66 20 73 79 73 74 65 6d 20 64 69 72 65 63 74 69 76 65 73 2c 20 63 61 6e 20 73 77 69 74 63 .of.system.directives,.can.switc
13660 68 20 6f 6e 20 74 68 65 20 66 6c 79 2e 20 20 20 20 20 20 7c 0a 7c 20 3d 67 70 74 65 6c 2d 6d 61 h.on.the.fly.......|.|.=gptel-ma
13680 78 2d 74 6f 6b 65 6e 73 3d 20 20 20 20 7c 20 4d 61 78 69 6d 75 6d 20 74 6f 6b 65 6e 20 63 6f 75 x-tokens=....|.Maximum.token.cou
136a0 6e 74 20 28 69 6e 20 71 75 65 72 79 20 2b 20 72 65 73 70 6f 6e 73 65 29 2e 20 20 20 20 20 20 20 nt.(in.query.+.response)........
136c0 20 20 20 20 20 20 20 7c 0a 7c 20 3d 67 70 74 65 6c 2d 74 65 6d 70 65 72 61 74 75 72 65 3d 20 20 .......|.|.=gptel-temperature=..
136e0 20 7c 20 52 61 6e 64 6f 6d 6e 65 73 73 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 65 78 74 2c 20 .|.Randomness.in.response.text,.
13700 30 20 74 6f 20 32 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 7c 20 3d 0.to.2.....................|.|.=
13720 67 70 74 65 6c 2d 63 61 63 68 65 3d 20 20 20 20 20 20 20 20 20 7c 20 43 61 63 68 65 20 70 72 6f gptel-cache=.........|.Cache.pro
13740 6d 70 74 73 2c 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 20 6f 72 20 74 6f 6f 6c 73 20 28 41 mpts,.system.message.or.tools.(A
13760 6e 74 68 72 6f 70 69 63 20 6f 6e 6c 79 29 20 7c 0a 7c 20 3d 67 70 74 65 6c 2d 75 73 65 2d 63 6f nthropic.only).|.|.=gptel-use-co
13780 6e 74 65 78 74 3d 20 20 20 7c 20 48 6f 77 2f 77 68 65 74 68 65 72 20 74 6f 20 69 6e 63 6c 75 64 ntext=...|.How/whether.to.includ
137a0 65 20 61 64 64 69 74 69 6f 6e 61 6c 20 63 6f 6e 74 65 78 74 20 20 20 20 20 20 20 20 20 20 20 20 e.additional.context............
137c0 20 20 20 7c 0a 7c 20 3d 67 70 74 65 6c 2d 75 73 65 2d 74 6f 6f 6c 73 3d 20 20 20 20 20 7c 20 44 ...|.|.=gptel-use-tools=.....|.D
137e0 69 73 61 62 6c 65 2c 20 61 6c 6c 6f 77 20 6f 72 20 66 6f 72 63 65 20 4c 4c 4d 20 74 6f 6f 6c 2d isable,.allow.or.force.LLM.tool-
13800 75 73 65 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 7c 20 3d 67 70 74 65 use....................|.|.=gpte
13820 6c 2d 74 6f 6f 6c 73 3d 20 20 20 20 20 20 20 20 20 7c 20 4c 69 73 74 20 6f 66 20 74 6f 6f 6c 73 l-tools=.........|.List.of.tools
13840 20 74 6f 20 69 6e 63 6c 75 64 65 20 77 69 74 68 20 72 65 71 75 65 73 74 73 20 20 20 20 20 20 20 .to.include.with.requests.......
13860 20 20 20 20 20 20 20 20 20 20 20 7c 0a 7c 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ...........|.|------------------
13880 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d -----+--------------------------
138a0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 7c -------------------------------|
138c0 0a 0a 7c 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ..|-----------------------------
138e0 2d 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --+-----------------------------
13900 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
13920 2d 2d 2d 7c 0a 7c 20 2a 43 68 61 74 20 55 49 20 6f 70 74 69 6f 6e 73 2a 20 20 20 20 20 20 20 20 ---|.|.*Chat.UI.options*........
13940 20 20 20 20 20 7c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .....|..........................
13960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
13980 20 20 20 20 20 20 7c 0a 7c 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ......|.|-----------------------
139a0 2d 2d 2d 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------+-----------------------
139c0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
139e0 2d 2d 2d 2d 2d 2d 2d 2d 2d 7c 0a 7c 20 3d 67 70 74 65 6c 2d 64 65 66 61 75 6c 74 2d 6d 6f 64 65 ---------|.|.=gptel-default-mode
13a00 3d 20 20 20 20 20 20 20 20 20 20 7c 20 4d 61 6a 6f 72 20 6d 6f 64 65 20 66 6f 72 20 64 65 64 69 =..........|.Major.mode.for.dedi
13a20 63 61 74 65 64 20 63 68 61 74 20 62 75 66 66 65 72 73 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 cated.chat.buffers..............
13a40 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 7c 20 3d 67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 70 72 ............|.|.=gptel-prompt-pr
13a60 65 66 69 78 2d 61 6c 69 73 74 3d 20 20 20 7c 20 54 65 78 74 20 69 6e 73 65 72 74 65 64 20 62 65 efix-alist=...|.Text.inserted.be
13a80 66 6f 72 65 20 71 75 65 72 69 65 73 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 fore.queries....................
13aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 7c 20 3d 67 70 74 65 6c 2d 72 65 73 70 6f 6e ...............|.|.=gptel-respon
13ac0 73 65 2d 70 72 65 66 69 78 2d 61 6c 69 73 74 3d 20 7c 20 54 65 78 74 20 69 6e 73 65 72 74 65 64 se-prefix-alist=.|.Text.inserted
13ae0 20 62 65 66 6f 72 65 20 72 65 73 70 6f 6e 73 65 73 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .before.responses...............
13b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 7c 20 3d 67 70 74 65 6c 2d 74 72 61 ..................|.|.=gptel-tra
13b20 63 6b 2d 72 65 73 70 6f 6e 73 65 3d 20 20 20 20 20 20 20 20 7c 20 44 69 73 74 69 6e 67 75 69 73 ck-response=........|.Distinguis
13b40 68 20 62 65 74 77 65 65 6e 20 75 73 65 72 20 6d 65 73 73 61 67 65 73 20 61 6e 64 20 4c 4c 4d 20 h.between.user.messages.and.LLM.
13b60 72 65 73 70 6f 6e 73 65 73 3f 20 20 20 20 20 20 20 20 20 20 20 7c 0a 7c 20 3d 67 70 74 65 6c 2d responses?...........|.|.=gptel-
13b80 74 72 61 63 6b 2d 6d 65 64 69 61 3d 20 20 20 20 20 20 20 20 20 20 20 7c 20 53 65 6e 64 20 74 65 track-media=...........|.Send.te
13ba0 78 74 2c 20 69 6d 61 67 65 73 20 6f 72 20 6f 74 68 65 72 20 6d 65 64 69 61 20 66 72 6f 6d 20 6c xt,.images.or.other.media.from.l
13bc0 69 6e 6b 73 3f 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 7c 20 3d 67 70 74 inks?...................|.|.=gpt
13be0 65 6c 2d 63 6f 6e 66 69 72 6d 2d 74 6f 6f 6c 2d 63 61 6c 6c 73 3d 20 20 20 20 7c 20 43 6f 6e 66 el-confirm-tool-calls=....|.Conf
13c00 69 72 6d 20 61 6c 6c 20 74 6f 6f 6c 20 63 61 6c 6c 73 3f 20 20 20 20 20 20 20 20 20 20 20 20 20 irm.all.tool.calls?.............
13c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 7c 20 3d ...........................|.|.=
13c40 67 70 74 65 6c 2d 69 6e 63 6c 75 64 65 2d 74 6f 6f 6c 2d 72 65 73 75 6c 74 73 3d 20 20 7c 20 49 gptel-include-tool-results=..|.I
13c60 6e 63 6c 75 64 65 20 74 6f 6f 6c 20 72 65 73 75 6c 74 73 20 69 6e 20 74 68 65 20 4c 4c 4d 20 72 nclude.tool.results.in.the.LLM.r
13c80 65 73 70 6f 6e 73 65 3f 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a esponse?......................|.
13ca0 7c 20 3d 67 70 74 65 6c 2d 75 73 65 2d 68 65 61 64 65 72 2d 6c 69 6e 65 3d 20 20 20 20 20 20 20 |.=gptel-use-header-line=.......
13cc0 7c 20 44 69 73 70 6c 61 79 20 73 74 61 74 75 73 20 6d 65 73 73 61 67 65 73 20 69 6e 20 68 65 61 |.Display.status.messages.in.hea
13ce0 64 65 72 2d 6c 69 6e 65 20 28 64 65 66 61 75 6c 74 29 20 6f 72 20 6d 69 6e 69 62 75 66 66 65 72 der-line.(default).or.minibuffer
13d00 20 7c 0a 7c 20 3d 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 .|.|.=gptel-display-buffer-actio
13d20 6e 3d 20 7c 20 50 6c 61 63 65 6d 65 6e 74 20 6f 66 20 74 68 65 20 67 70 74 65 6c 20 63 68 61 74 n=.|.Placement.of.the.gptel.chat
13d40 20 62 75 66 66 65 72 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .buffer.........................
13d60 20 20 20 20 7c 0a 7c 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ....|.|-------------------------
13d80 2d 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ------+-------------------------
13da0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
13dc0 2d 2d 2d 2d 2d 2d 2d 7c 0a 0a 7c 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d -------|..|---------------------
13de0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------+---------------------
13e00 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
13e20 2d 2d 7c 0a 7c 20 2a 4f 72 67 20 6d 6f 64 65 20 55 49 20 6f 70 74 69 6f 6e 73 2a 20 20 20 20 20 --|.|.*Org.mode.UI.options*.....
13e40 20 20 20 20 7c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ....|...........................
13e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 7c 2d ............................|.|-
13e80 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 2d ------------------------------+-
13ea0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
13ec0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 7c 0a 7c 20 3d 67 70 74 65 6c ----------------------|.|.=gptel
13ee0 2d 6f 72 67 2d 62 72 61 6e 63 68 69 6e 67 2d 63 6f 6e 74 65 78 74 3d 20 7c 20 4d 61 6b 65 20 65 -org-branching-context=.|.Make.e
13f00 61 63 68 20 6f 75 74 6c 69 6e 65 20 70 61 74 68 20 61 20 73 65 70 61 72 61 74 65 20 63 6f 6e 76 ach.outline.path.a.separate.conv
13f20 65 72 73 61 74 69 6f 6e 20 62 72 61 6e 63 68 20 7c 0a 7c 20 3d 67 70 74 65 6c 2d 6f 72 67 2d 69 ersation.branch.|.|.=gptel-org-i
13f40 67 6e 6f 72 65 2d 65 6c 65 6d 65 6e 74 73 3d 20 20 20 7c 20 49 67 6e 6f 72 65 20 70 61 72 74 73 gnore-elements=...|.Ignore.parts
13f60 20 6f 66 20 74 68 65 20 62 75 66 66 65 72 20 77 68 65 6e 20 73 65 6e 64 69 6e 67 20 61 20 71 75 .of.the.buffer.when.sending.a.qu
13f80 65 72 79 20 20 20 20 20 20 20 7c 0a 7c 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ery.......|.|-------------------
13fa0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ------------+-------------------
13fc0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
13fe0 2d 2d 2d 2d 7c 0a 0a 7c 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----|..|------------------------
14000 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ------------+-------------------
14020 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
14040 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 7c 0a 7c 20 2a 48 6f 6f 6b 73 20 66 6f 72 20 63 75 73 74 6f 6d 69 ----------|.|.*Hooks.for.customi
14060 7a 61 74 69 6f 6e 2a 20 20 20 20 20 20 20 20 20 20 7c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 zation*..........|..............
14080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
140a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 7c 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ...............|.|--------------
140c0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------------+---------
140e0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
14100 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 7c 0a 7c 20 3d 67 70 74 65 6c 2d 73 --------------------|.|.=gptel-s
14120 61 76 65 2d 73 74 61 74 65 2d 68 6f 6f 6b 3d 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 52 75 6e ave-state-hook=............|.Run
14140 73 20 62 65 66 6f 72 65 20 73 61 76 69 6e 67 20 74 68 65 20 63 68 61 74 20 73 74 61 74 65 20 74 s.before.saving.the.chat.state.t
14160 6f 20 61 20 66 69 6c 65 20 6f 6e 20 64 69 73 6b 20 20 20 20 20 20 20 20 20 7c 0a 7c 20 3d 67 70 o.a.file.on.disk.........|.|.=gp
14180 74 65 6c 2d 70 72 6f 6d 70 74 2d 74 72 61 6e 73 66 6f 72 6d 2d 66 75 6e 63 74 69 6f 6e 73 3d 20 tel-prompt-transform-functions=.
141a0 7c 20 52 75 6e 73 20 69 6e 20 61 20 74 65 6d 70 20 62 75 66 66 65 72 20 74 6f 20 74 72 61 6e 73 |.Runs.in.a.temp.buffer.to.trans
141c0 66 6f 72 6d 20 74 65 78 74 20 62 65 66 6f 72 65 20 73 65 6e 64 69 6e 67 20 20 20 20 20 20 7c 0a form.text.before.sending......|.
141e0 7c 20 3d 67 70 74 65 6c 2d 70 6f 73 74 2d 72 65 71 75 65 73 74 2d 68 6f 6f 6b 3d 20 20 20 20 20 |.=gptel-post-request-hook=.....
14200 20 20 20 20 20 7c 20 52 75 6e 73 20 69 6d 6d 65 64 69 61 74 65 6c 79 20 61 66 74 65 72 20 64 69 .....|.Runs.immediately.after.di
14220 73 70 61 74 63 68 69 6e 67 20 61 20 3d 67 70 74 65 6c 2d 72 65 71 75 65 73 74 3d 2e 20 20 20 20 spatching.a.=gptel-request=.....
14240 20 20 20 7c 0a 7c 20 3d 67 70 74 65 6c 2d 70 72 65 2d 72 65 73 70 6f 6e 73 65 2d 68 6f 6f 6b 3d ...|.|.=gptel-pre-response-hook=
14260 20 20 20 20 20 20 20 20 20 20 7c 20 52 75 6e 73 20 62 65 66 6f 72 65 20 69 6e 73 65 72 74 69 6e ..........|.Runs.before.insertin
14280 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 62 75 66 66 g.the.LLM.response.into.the.buff
142a0 65 72 20 20 20 20 20 20 7c 0a 7c 20 3d 67 70 74 65 6c 2d 70 6f 73 74 2d 72 65 73 70 6f 6e 73 65 er......|.|.=gptel-post-response
142c0 2d 66 75 6e 63 74 69 6f 6e 73 3d 20 20 20 20 7c 20 52 75 6e 73 20 61 66 74 65 72 20 69 6e 73 65 -functions=....|.Runs.after.inse
142e0 72 74 69 6e 67 20 74 68 65 20 66 75 6c 6c 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 20 69 6e 74 6f rting.the.full.LLM.response.into
14300 20 74 68 65 20 62 75 66 66 65 72 20 20 7c 0a 7c 20 3d 67 70 74 65 6c 2d 70 6f 73 74 2d 73 74 72 .the.buffer..|.|.=gptel-post-str
14320 65 61 6d 2d 68 6f 6f 6b 3d 20 20 20 20 20 20 20 20 20 20 20 7c 20 52 75 6e 73 20 61 66 74 65 72 eam-hook=...........|.Runs.after
14340 20 65 61 63 68 20 73 74 72 65 61 6d 69 6e 67 20 69 6e 73 65 72 74 69 6f 6e 20 20 20 20 20 20 20 .each.streaming.insertion.......
14360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 7c 20 3d 67 70 74 65 6c 2d 63 6f 6e ..................|.|.=gptel-con
14380 74 65 78 74 2d 77 72 61 70 2d 66 75 6e 63 74 69 6f 6e 3d 20 20 20 20 20 20 7c 20 54 6f 20 69 6e text-wrap-function=......|.To.in
143a0 63 6c 75 64 65 20 61 64 64 69 74 69 6f 6e 61 6c 20 63 6f 6e 74 65 78 74 20 66 6f 72 6d 61 74 74 clude.additional.context.formatt
143c0 65 64 20 79 6f 75 72 20 77 61 79 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 7c 20 3d 67 70 74 65 ed.your.way............|.|.=gpte
143e0 6c 2d 72 65 77 72 69 74 65 2d 64 65 66 61 75 6c 74 2d 61 63 74 69 6f 6e 3d 20 20 20 20 20 7c 20 l-rewrite-default-action=.....|.
14400 41 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 64 69 66 66 2c 20 65 64 69 66 66 2c 20 6d 65 72 67 65 Automatically.diff,.ediff,.merge
14420 20 6f 72 20 72 65 70 6c 61 63 65 20 72 65 66 61 63 74 6f 72 65 64 20 74 65 78 74 20 7c 0a 7c 20 .or.replace.refactored.text.|.|.
14440 3d 67 70 74 65 6c 2d 70 6f 73 74 2d 72 65 77 72 69 74 65 2d 66 75 6e 63 74 69 6f 6e 73 3d 20 20 =gptel-post-rewrite-functions=..
14460 20 20 20 7c 20 52 75 6e 73 20 61 66 74 65 72 20 61 20 3d 67 70 74 65 6c 2d 72 65 77 72 69 74 65 ...|.Runs.after.a.=gptel-rewrite
14480 3d 20 72 65 71 75 65 73 74 20 73 75 63 63 65 65 64 73 20 20 20 20 20 20 20 20 20 20 20 20 20 20 =.request.succeeds..............
144a0 20 7c 0a 7c 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d .|.|----------------------------
144c0 2d 2d 2d 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------+-----------------------
144e0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
14500 2d 2d 2d 2d 2d 2d 7c 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 0a 2a 2a 2a ------|..#+html:.</details>..***
14520 20 4f 70 74 69 6f 6e 20 70 72 65 73 65 74 73 0a 0a 49 66 20 79 6f 75 20 75 73 65 20 73 65 76 65 .Option.presets..If.you.use.seve
14540 72 61 6c 20 4c 4c 4d 73 20 66 6f 72 20 64 69 66 66 65 72 65 6e 74 20 74 61 73 6b 73 20 77 69 74 ral.LLMs.for.different.tasks.wit
14560 68 20 61 63 63 6f 6d 70 61 6e 79 69 6e 67 20 73 79 73 74 65 6d 20 70 72 6f 6d 70 74 73 20 28 69 h.accompanying.system.prompts.(i
14580 6e 73 74 72 75 63 74 69 6f 6e 73 29 20 61 6e 64 20 74 6f 6f 6c 20 63 6f 6e 66 69 67 75 72 61 74 nstructions).and.tool.configurat
145a0 69 6f 6e 73 2c 20 6d 61 6e 75 61 6c 6c 79 20 61 64 6a 75 73 74 69 6e 67 20 3d 67 70 74 65 6c 3d ions,.manually.adjusting.=gptel=
145c0 20 73 65 74 74 69 6e 67 73 20 65 61 63 68 20 74 69 6d 65 20 63 61 6e 20 62 65 63 6f 6d 65 20 74 .settings.each.time.can.become.t
145e0 65 64 69 6f 75 73 2e 20 20 50 72 65 73 65 74 73 20 61 72 65 20 61 20 62 75 6e 64 6c 65 20 6f 66 edious...Presets.are.a.bundle.of
14600 20 67 70 74 65 6c 20 73 65 74 74 69 6e 67 73 20 2d 2d 20 73 75 63 68 20 61 73 20 74 68 65 20 6d .gptel.settings.--.such.as.the.m
14620 6f 64 65 6c 2c 20 62 61 63 6b 65 6e 64 2c 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 2c 20 61 odel,.backend,.system.message,.a
14640 6e 64 20 65 6e 61 62 6c 65 64 20 74 6f 6f 6c 73 20 2d 2d 20 74 68 61 74 20 79 6f 75 20 63 61 6e nd.enabled.tools.--.that.you.can
14660 20 73 77 69 74 63 68 20 74 6f 20 61 74 20 6f 6e 63 65 2e 0a 0a 4f 6e 63 65 20 64 65 66 69 6e 65 .switch.to.at.once...Once.define
14680 64 2c 20 70 72 65 73 65 74 73 20 63 61 6e 20 62 65 20 61 70 70 6c 69 65 64 20 66 72 6f 6d 20 67 d,.presets.can.be.applied.from.g
146a0 70 74 65 6c 27 73 20 74 72 61 6e 73 69 65 6e 74 20 6d 65 6e 75 3a 0a 0a 23 2b 68 74 6d 6c 3a 20 ptel's.transient.menu:..#+html:.
146c0 3c 69 6d 67 20 73 72 63 3d 22 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 75 73 65 <img.src="https://github.com/use
146e0 72 2d 61 74 74 61 63 68 6d 65 6e 74 73 2f 61 73 73 65 74 73 2f 65 30 63 66 36 61 33 32 2d 64 39 r-attachments/assets/e0cf6a32-d9
14700 39 39 2d 34 31 33 38 2d 38 33 36 39 2d 32 33 35 31 32 66 35 65 39 33 31 31 22 20 61 6c 69 67 6e 99-4138-8369-23512f5e9311".align
14720 3d 22 63 65 6e 74 65 72 22 20 2f 3e 0a 23 2b 68 74 6d 6c 3a 20 3c 62 72 3e 0a 0a 54 6f 20 64 65 ="center"./>.#+html:.<br>..To.de
14740 66 69 6e 65 20 61 20 70 72 65 73 65 74 2c 20 75 73 65 20 74 68 65 20 3d 67 70 74 65 6c 2d 6d 61 fine.a.preset,.use.the.=gptel-ma
14760 6b 65 2d 70 72 65 73 65 74 3d 20 66 75 6e 63 74 69 6f 6e 2c 20 77 68 69 63 68 20 74 61 6b 65 73 ke-preset=.function,.which.takes
14780 20 61 20 6e 61 6d 65 20 61 6e 64 20 6b 65 79 77 6f 72 64 2d 76 61 6c 75 65 20 70 61 69 72 73 20 .a.name.and.keyword-value.pairs.
147a0 6f 66 20 73 65 74 74 69 6e 67 73 2e 0a 0a 50 72 65 73 65 74 73 20 63 61 6e 20 62 65 20 75 73 65 of.settings...Presets.can.be.use
147c0 64 20 74 6f 20 73 65 74 20 69 6e 64 69 76 69 64 75 61 6c 20 6f 70 74 69 6f 6e 73 2e 20 20 48 65 d.to.set.individual.options...He
147e0 72 65 20 69 73 20 61 6e 20 65 78 61 6d 70 6c 65 20 6f 66 20 61 20 70 72 65 73 65 74 20 74 6f 20 re.is.an.example.of.a.preset.to.
14800 73 65 74 20 74 68 65 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 20 28 61 6e 64 20 64 6f 20 6e set.the.system.message.(and.do.n
14820 6f 74 68 69 6e 67 20 65 6c 73 65 29 3a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d othing.else):.#+begin_src.emacs-
14840 6c 69 73 70 0a 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 70 72 65 73 65 74 20 27 65 78 70 6c 61 69 6e lisp.(gptel-make-preset.'explain
14860 0a 20 20 3a 73 79 73 74 65 6d 20 22 45 78 70 6c 61 69 6e 20 77 68 61 74 20 74 68 69 73 20 63 6f ...:system."Explain.what.this.co
14880 64 65 20 64 6f 65 73 20 74 6f 20 61 20 6e 6f 76 69 63 65 20 70 72 6f 67 72 61 6d 6d 65 72 2e 22 de.does.to.a.novice.programmer."
148a0 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 4d 6f 72 65 20 67 65 6e 65 72 61 6c 6c 79 2c 20 79 6f 75 ).#+end_src..More.generally,.you
148c0 20 63 61 6e 20 73 70 65 63 69 66 79 20 61 20 62 75 6e 64 6c 65 20 6f 66 20 6f 70 74 69 6f 6e 73 .can.specify.a.bundle.of.options
148e0 3a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 28 67 70 74 65 6c 2d :.#+begin_src.emacs-lisp.(gptel-
14900 6d 61 6b 65 2d 70 72 65 73 65 74 20 27 67 70 74 34 63 6f 64 69 6e 67 20 20 20 20 20 20 20 20 20 make-preset.'gpt4coding.........
14920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 70 72 65 73 65 74 20 6e 61 6d 65 2c 20 61 20 73 79 ..............;preset.name,.a.sy
14940 6d 62 6f 6c 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 41 20 70 72 65 73 65 74 20 6f 70 mbol...:description."A.preset.op
14960 74 69 6d 69 7a 65 64 20 66 6f 72 20 63 6f 64 69 6e 67 20 74 61 73 6b 73 22 20 3b 66 6f 72 20 79 timized.for.coding.tasks".;for.y
14980 6f 75 72 20 72 65 66 65 72 65 6e 63 65 0a 20 20 3a 62 61 63 6b 65 6e 64 20 22 43 6c 61 75 64 65 our.reference...:backend."Claude
149a0 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 67 70 74 65 6c 20 62 61 63 ".....................;gptel.bac
149c0 6b 65 6e 64 20 6f 72 20 62 61 63 6b 65 6e 64 20 6e 61 6d 65 0a 20 20 3a 6d 6f 64 65 6c 20 27 63 kend.or.backend.name...:model.'c
149e0 6c 61 75 64 65 2d 33 2d 37 2d 73 6f 6e 6e 65 74 2d 32 30 32 35 30 32 31 39 2e 31 0a 20 20 3a 73 laude-3-7-sonnet-20250219.1...:s
14a00 79 73 74 65 6d 20 22 59 6f 75 20 61 72 65 20 61 6e 20 65 78 70 65 72 74 20 63 6f 64 69 6e 67 20 ystem."You.are.an.expert.coding.
14a20 61 73 73 69 73 74 61 6e 74 2e 20 59 6f 75 72 20 72 6f 6c 65 20 69 73 20 74 6f 20 70 72 6f 76 69 assistant..Your.role.is.to.provi
14a40 64 65 20 68 69 67 68 2d 71 75 61 6c 69 74 79 20 63 6f 64 65 20 73 6f 6c 75 74 69 6f 6e 73 2c 20 de.high-quality.code.solutions,.
14a60 72 65 66 61 63 74 6f 72 69 6e 67 73 2c 20 61 6e 64 20 65 78 70 6c 61 6e 61 74 69 6f 6e 73 2e 22 refactorings,.and.explanations."
14a80 0a 20 20 3a 74 6f 6f 6c 73 20 27 28 22 72 65 61 64 5f 62 75 66 66 65 72 22 20 22 6d 6f 64 69 66 ...:tools.'("read_buffer"."modif
14aa0 79 5f 62 75 66 66 65 72 22 29 29 20 3b 67 70 74 65 6c 20 74 6f 6f 6c 73 20 6f 72 20 74 6f 6f 6c y_buffer")).;gptel.tools.or.tool
14ac0 20 6e 61 6d 65 73 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 42 65 73 69 64 65 73 20 61 20 63 6f 75 70 .names.#+end_src..Besides.a.coup
14ae0 6c 65 20 6f 66 20 73 70 65 63 69 61 6c 20 6b 65 79 73 20 28 3d 3a 64 65 73 63 72 69 70 74 69 6f le.of.special.keys.(=:descriptio
14b00 6e 3d 2c 20 3d 3a 70 61 72 65 6e 74 73 3d 20 74 6f 20 69 6e 68 65 72 69 74 20 6f 74 68 65 72 20 n=,.=:parents=.to.inherit.other.
14b20 70 72 65 73 65 74 73 29 2c 20 74 68 65 72 65 20 69 73 20 6e 6f 20 70 72 65 64 65 66 69 6e 65 64 presets),.there.is.no.predefined
14b40 20 6c 69 73 74 20 6f 66 20 6b 65 79 73 2e 20 20 49 6e 73 74 65 61 64 2c 20 74 68 65 20 6b 65 79 .list.of.keys...Instead,.the.key
14b60 20 3d 3a 66 6f 6f 3d 20 63 6f 72 72 65 73 70 6f 6e 64 73 20 74 6f 20 73 65 74 74 69 6e 67 20 3d .=:foo=.corresponds.to.setting.=
14b80 67 70 74 65 6c 2d 66 6f 6f 3d 20 28 70 72 65 66 65 72 72 65 64 29 20 6f 72 20 3d 67 70 74 65 6c gptel-foo=.(preferred).or.=gptel
14ba0 2d 2d 66 6f 6f 3d 2e 20 20 53 6f 20 74 68 65 20 70 72 65 73 65 74 20 63 61 6e 20 69 6e 63 6c 75 --foo=...So.the.preset.can.inclu
14bc0 64 65 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 61 6e 79 20 67 70 74 65 6c 20 6f 70 74 69 6f 6e de.the.value.of.any.gptel.option
14be0 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 70 72 ...For.example,.the.following.pr
14c00 65 73 65 74 20 73 65 74 73 20 3d 67 70 74 65 6c 2d 74 65 6d 70 65 72 61 74 75 72 65 3d 20 61 6e eset.sets.=gptel-temperature=.an
14c20 64 20 3d 67 70 74 65 6c 2d 75 73 65 2d 63 6f 6e 74 65 78 74 3d 3a 0a 0a 23 2b 62 65 67 69 6e 5f d.=gptel-use-context=:..#+begin_
14c40 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 70 72 65 73 65 src.emacs-lisp.(gptel-make-prese
14c60 74 20 27 70 72 6f 6f 66 72 65 61 64 65 72 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 50 t.'proofreader...:description."P
14c80 72 65 73 65 74 20 66 6f 72 20 70 72 6f 6f 66 72 65 61 64 69 6e 67 20 74 61 73 6b 73 22 0a 20 20 reset.for.proofreading.tasks"...
14ca0 3a 62 61 63 6b 65 6e 64 20 22 43 68 61 74 47 50 54 22 0a 20 20 3a 6d 6f 64 65 6c 20 27 67 70 74 :backend."ChatGPT"...:model.'gpt
14cc0 2d 34 2e 31 2d 6d 69 6e 69 0a 20 20 3a 74 6f 6f 6c 73 20 27 28 22 72 65 61 64 5f 62 75 66 66 65 -4.1-mini...:tools.'("read_buffe
14ce0 72 22 20 22 73 70 65 6c 6c 5f 63 68 65 63 6b 22 20 22 67 72 61 6d 6d 61 72 5f 63 68 65 63 6b 22 r"."spell_check"."grammar_check"
14d00 29 0a 20 20 3a 74 65 6d 70 65 72 61 74 75 72 65 20 30 2e 37 20 20 20 20 20 20 20 20 20 20 20 20 )...:temperature.0.7............
14d20 20 20 20 20 20 20 20 20 20 20 3b 73 65 74 73 20 67 70 74 65 6c 2d 74 65 6d 70 65 72 61 74 75 72 ..........;sets.gptel-temperatur
14d40 65 0a 20 20 3a 75 73 65 2d 63 6f 6e 74 65 78 74 20 27 73 79 73 74 65 6d 29 20 20 20 20 20 20 20 e...:use-context.'system).......
14d60 20 20 20 20 20 20 20 20 20 20 3b 73 65 74 73 20 67 70 74 65 6c 2d 75 73 65 2d 63 6f 6e 74 65 78 ..........;sets.gptel-use-contex
14d80 74 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 53 77 69 74 63 68 69 6e 67 20 74 6f 20 61 20 70 72 65 73 t.#+end_src..Switching.to.a.pres
14da0 65 74 20 61 70 70 6c 69 65 73 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 73 65 74 74 69 6e 67 et.applies.the.specified.setting
14dc0 73 20 77 69 74 68 6f 75 74 20 61 66 66 65 63 74 69 6e 67 20 6f 74 68 65 72 20 73 65 74 74 69 6e s.without.affecting.other.settin
14de0 67 73 2e 20 20 44 65 70 65 6e 64 69 6e 67 20 6f 6e 20 74 68 65 20 73 63 6f 70 65 20 6f 70 74 69 gs...Depending.on.the.scope.opti
14e00 6f 6e 20 28 7e 3d 7e 20 69 6e 20 67 70 74 65 6c 27 73 20 74 72 61 6e 73 69 65 6e 74 20 6d 65 6e on.(~=~.in.gptel's.transient.men
14e20 75 29 2c 20 70 72 65 73 65 74 73 20 63 61 6e 20 62 65 20 61 70 70 6c 69 65 64 20 67 6c 6f 62 61 u),.presets.can.be.applied.globa
14e40 6c 6c 79 2c 20 62 75 66 66 65 72 2d 6c 6f 63 61 6c 6c 79 20 6f 72 20 66 6f 72 20 74 68 65 20 6e lly,.buffer-locally.or.for.the.n
14e60 65 78 74 20 72 65 71 75 65 73 74 20 6f 6e 6c 79 2e 0a 0a 2a 2a 2a 2a 20 41 70 70 6c 79 69 6e 67 ext.request.only...****.Applying
14e80 20 70 72 65 73 65 74 73 20 74 6f 20 72 65 71 75 65 73 74 73 20 61 75 74 6f 6d 61 74 69 63 61 6c .presets.to.requests.automatical
14ea0 6c 79 0a 0a 59 6f 75 20 63 61 6e 20 61 70 70 6c 79 20 61 20 70 72 65 73 65 74 20 74 6f 20 61 20 ly..You.can.apply.a.preset.to.a.
14ec0 2f 73 69 6e 67 6c 65 2f 20 71 75 65 72 79 20 62 79 20 69 6e 63 6c 75 64 69 6e 67 20 3d 40 70 72 /single/.query.by.including.=@pr
14ee0 65 73 65 74 2d 6e 61 6d 65 3d 20 69 6e 20 74 68 65 20 70 72 6f 6d 70 74 2c 20 77 68 65 72 65 20 eset-name=.in.the.prompt,.where.
14f00 3d 70 72 65 73 65 74 2d 6e 61 6d 65 3d 20 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 =preset-name=.is.the.name.of.the
14f20 20 70 72 65 73 65 74 2e 20 20 28 54 68 65 20 3d 6f 6e 65 73 68 6f 74 3d 20 73 63 6f 70 65 20 6f .preset...(The.=oneshot=.scope.o
14f40 70 74 69 6f 6e 20 69 6e 20 67 70 74 65 6c 27 73 20 74 72 61 6e 73 69 65 6e 74 20 6d 65 6e 75 73 ption.in.gptel's.transient.menus
14f60 20 69 73 20 61 6e 6f 74 68 65 72 20 77 61 79 20 74 6f 20 64 6f 20 74 68 69 73 2c 20 5b 5b 69 64 .is.another.way.to.do.this,.[[id
14f80 3a 37 34 38 63 62 63 30 30 2d 30 63 39 32 2d 34 37 30 35 2d 38 38 33 39 2d 36 31 39 62 32 63 38 :748cbc00-0c92-4705-8839-619b2c8
14fa0 30 65 35 36 36 5d 5b 73 65 65 20 74 68 65 20 46 41 51 2e 5d 5d 29 0a 0a 46 6f 72 20 65 78 61 6d 0e566][see.the.FAQ.]])..For.exam
14fc0 70 6c 65 2c 20 69 66 20 79 6f 75 20 68 61 76 65 20 61 20 70 72 65 73 65 74 20 6e 61 6d 65 64 20 ple,.if.you.have.a.preset.named.
14fe0 3d 77 65 62 73 65 61 72 63 68 3d 20 64 65 66 69 6e 65 64 20 77 68 69 63 68 20 69 6e 63 6c 75 64 =websearch=.defined.which.includ
15000 65 73 20 74 6f 6f 6c 73 20 66 6f 72 20 77 65 62 20 61 63 63 65 73 73 20 61 6e 64 20 73 65 61 72 es.tools.for.web.access.and.sear
15020 63 68 3a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 28 67 70 74 65 ch:.#+begin_src.emacs-lisp.(gpte
15040 6c 2d 6d 61 6b 65 2d 70 72 65 73 65 74 20 27 77 65 62 73 65 61 72 63 68 0a 20 20 3a 64 65 73 63 l-make-preset.'websearch...:desc
15060 72 69 70 74 69 6f 6e 20 20 22 48 61 69 6b 75 20 77 69 74 68 20 62 61 73 69 63 20 77 65 62 20 73 ription.."Haiku.with.basic.web.s
15080 65 61 72 63 68 20 63 61 70 61 62 69 6c 69 74 79 2e 22 0a 20 20 3a 62 61 63 6b 65 6e 64 20 20 20 earch.capability."...:backend...
150a0 20 20 20 22 43 6c 61 75 64 65 22 0a 20 20 3a 6d 6f 64 65 6c 20 20 20 20 20 20 20 20 27 63 6c 61 ..."Claude"...:model........'cla
150c0 75 64 65 2d 33 2d 35 2d 68 61 69 6b 75 2d 32 30 32 34 31 30 32 32 0a 20 20 3a 74 6f 6f 6c 73 20 ude-3-5-haiku-20241022...:tools.
150e0 20 20 20 20 20 20 20 27 28 22 73 65 61 72 63 68 5f 77 65 62 22 20 22 72 65 61 64 5f 75 72 6c 22 .......'("search_web"."read_url"
15100 20 22 67 65 74 5f 79 6f 75 74 75 62 65 5f 6d 65 74 61 22 29 29 0a 23 2b 65 6e 64 5f 73 72 63 0a ."get_youtube_meta")).#+end_src.
15120 0a 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 71 75 65 72 79 20 69 73 20 73 65 6e 74 20 77 69 74 .The.following.query.is.sent.wit
15140 68 20 74 68 69 73 20 70 72 65 73 65 74 20 61 70 70 6c 69 65 64 3a 0a 0a 23 2b 62 65 67 69 6e 5f h.this.preset.applied:..#+begin_
15160 71 75 6f 74 65 0a 40 77 65 62 73 65 61 72 63 68 20 41 72 65 20 74 68 65 72 65 20 61 6e 79 20 31 quote.@websearch.Are.there.any.1
15180 33 22 20 65 2d 69 6e 6b 20 6d 6f 6e 69 74 6f 72 73 20 6f 6e 20 74 68 65 20 6d 61 72 6b 65 74 3f 3".e-ink.monitors.on.the.market?
151a0 20 20 43 72 65 61 74 65 20 61 0a 74 61 62 6c 65 20 63 6f 6d 70 61 72 69 6e 67 20 74 68 65 6d 2c ..Create.a.table.comparing.them,
151c0 20 73 6f 75 72 63 69 6e 67 20 73 70 65 63 73 20 61 6e 64 20 72 65 76 69 65 77 73 20 66 72 6f 6d .sourcing.specs.and.reviews.from
151e0 20 6f 6e 6c 69 6e 65 20 73 6f 75 72 63 65 73 2e 0a 41 6c 73 6f 20 64 6f 20 74 68 65 20 73 61 6d .online.sources..Also.do.the.sam
15200 65 20 66 6f 72 20 22 74 72 61 6e 73 72 65 66 6c 65 63 74 69 76 65 2d 4c 43 44 22 20 64 69 73 70 e.for."transreflective-LCD".disp
15220 6c 61 79 73 20 2d 2d 20 49 27 6d 20 6e 6f 74 20 73 75 72 65 0a 77 68 61 74 20 65 78 61 63 74 6c lays.--.I'm.not.sure.what.exactl
15240 79 20 74 68 65 79 27 72 65 20 63 61 6c 6c 65 64 20 62 75 74 20 74 68 65 79 27 72 65 20 63 6f 6d y.they're.called.but.they're.com
15260 70 61 72 61 62 6c 65 20 74 6f 20 65 2d 69 6e 6b 2e 0a 23 2b 65 6e 64 5f 71 75 6f 74 65 0a 0a 54 parable.to.e-ink..#+end_quote..T
15280 68 69 73 20 3d 40 70 72 65 73 65 74 2d 6e 61 6d 65 3d 20 63 6f 6f 6b 69 65 20 6f 6e 6c 79 20 61 his.=@preset-name=.cookie.only.a
152a0 70 70 6c 69 65 73 20 74 6f 20 74 68 65 20 66 69 6e 61 6c 20 75 73 65 72 20 74 75 72 6e 20 6f 66 pplies.to.the.final.user.turn.of
152c0 20 74 68 65 20 63 6f 76 65 72 73 61 74 69 6f 6e 20 74 68 61 74 20 69 73 20 73 65 6e 74 2e 20 20 .the.coversation.that.is.sent...
152e0 53 6f 20 74 68 65 20 70 72 65 73 65 6e 63 65 20 6f 66 20 74 68 65 20 63 6f 6f 6b 69 65 20 69 6e So.the.presence.of.the.cookie.in
15300 20 70 61 73 74 20 6d 65 73 73 61 67 65 73 2f 74 75 72 6e 73 20 69 73 20 6e 6f 74 20 73 69 67 6e .past.messages/turns.is.not.sign
15320 69 66 69 63 61 6e 74 2e 20 0a 0a 54 68 65 20 3d 40 70 72 65 73 65 74 2d 6e 61 6d 65 3d 20 63 6f ificant....The.=@preset-name=.co
15340 6f 6b 69 65 20 63 61 6e 20 62 65 20 61 6e 79 77 68 65 72 65 20 69 6e 20 74 68 65 20 70 72 6f 6d okie.can.be.anywhere.in.the.prom
15360 70 74 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c 65 3a 0a 23 2b 62 65 67 69 6e 5f 71 75 6f 74 65 0a pt...For.example:.#+begin_quote.
15380 3c 6c 6f 6e 67 20 70 69 65 63 65 20 6f 66 20 74 65 78 74 3e 0a 0a 57 68 61 74 20 64 6f 20 79 6f <long.piece.of.text>..What.do.yo
153a0 75 20 6d 61 6b 65 20 6f 66 20 74 68 65 20 61 62 6f 76 65 20 64 65 73 63 72 69 70 74 69 6f 6e 2c u.make.of.the.above.description,
153c0 20 40 70 72 6f 6f 66 72 65 61 64 65 72 3f 0a 23 2b 65 6e 64 5f 71 75 6f 74 65 0a 0a 49 6e 20 63 .@proofreader?.#+end_quote..In.c
153e0 68 61 74 20 62 75 66 66 65 72 73 20 74 68 69 73 20 70 72 65 66 69 78 20 77 69 6c 6c 20 62 65 20 hat.buffers.this.prefix.will.be.
15400 6f 66 66 65 72 65 64 20 61 73 20 61 20 63 6f 6d 70 6c 65 74 69 6f 6e 20 61 6e 64 20 66 6f 6e 74 offered.as.a.completion.and.font
15420 69 66 69 65 64 2c 20 6d 61 6b 69 6e 67 20 69 74 20 65 61 73 79 20 74 6f 20 75 73 65 20 61 6e 64 ified,.making.it.easy.to.use.and
15440 20 73 70 6f 74 2e 0a 0a 2a 2a 20 41 6c 74 65 72 6e 61 74 69 76 65 73 0a 0a 4f 74 68 65 72 20 45 .spot...**.Alternatives..Other.E
15460 6d 61 63 73 20 63 6c 69 65 6e 74 73 20 66 6f 72 20 4c 4c 4d 73 20 69 6e 63 6c 75 64 65 0a 0a 2d macs.clients.for.LLMs.include..-
15480 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 61 68 79 61 74 74 2f 6c 6c 6d .[[https://github.com/ahyatt/llm
154a0 5d 5b 6c 6c 6d 5d 5d 3a 20 6c 6c 6d 20 70 72 6f 76 69 64 65 73 20 61 20 75 6e 69 66 6f 72 6d 20 ][llm]]:.llm.provides.a.uniform.
154c0 41 50 49 20 61 63 72 6f 73 73 20 6c 61 6e 67 75 61 67 65 20 6d 6f 64 65 6c 20 70 72 6f 76 69 64 API.across.language.model.provid
154e0 65 72 73 20 66 6f 72 20 62 75 69 6c 64 69 6e 67 20 4c 4c 4d 20 63 6c 69 65 6e 74 73 20 69 6e 20 ers.for.building.LLM.clients.in.
15500 45 6d 61 63 73 2c 20 61 6e 64 20 69 73 20 69 6e 74 65 6e 64 65 64 20 61 73 20 61 20 6c 69 62 72 Emacs,.and.is.intended.as.a.libr
15520 61 72 79 20 66 6f 72 20 75 73 65 20 62 79 20 70 61 63 6b 61 67 65 20 61 75 74 68 6f 72 73 2e 20 ary.for.use.by.package.authors..
15540 20 46 6f 72 20 73 69 6d 69 6c 61 72 20 73 63 72 69 70 74 69 6e 67 20 70 75 72 70 6f 73 65 73 2c .For.similar.scripting.purposes,
15560 20 67 70 74 65 6c 20 70 72 6f 76 69 64 65 73 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 3d 67 70 74 .gptel.provides.the.command.=gpt
15580 65 6c 2d 72 65 71 75 65 73 74 3d 2c 20 77 68 69 63 68 20 73 65 65 2e 0a 2d 20 5b 5b 68 74 74 70 el-request=,.which.see..-.[[http
155a0 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 73 2d 6b 6f 73 74 79 61 65 76 2f 65 6c 6c 61 6d 61 s://github.com/s-kostyaev/ellama
155c0 5d 5b 45 6c 6c 61 6d 61 5d 5d 3a 20 41 20 66 75 6c 6c 2d 66 6c 65 64 67 65 64 20 4c 4c 4d 20 63 ][Ellama]]:.A.full-fledged.LLM.c
155e0 6c 69 65 6e 74 20 62 75 69 6c 74 20 6f 6e 20 6c 6c 6d 2c 20 74 68 61 74 20 73 75 70 70 6f 72 74 lient.built.on.llm,.that.support
15600 73 20 6d 61 6e 79 20 4c 4c 4d 20 70 72 6f 76 69 64 65 72 73 20 28 4f 6c 6c 61 6d 61 2c 20 4f 70 s.many.LLM.providers.(Ollama,.Op
15620 65 6e 20 41 49 2c 20 56 65 72 74 65 78 2c 20 47 50 54 34 41 6c 6c 20 61 6e 64 20 6d 6f 72 65 29 en.AI,.Vertex,.GPT4All.and.more)
15640 2e 20 20 49 74 73 20 75 73 61 67 65 20 64 69 66 66 65 72 73 20 66 72 6f 6d 20 67 70 74 65 6c 20 ...Its.usage.differs.from.gptel.
15660 69 6e 20 74 68 61 74 20 69 74 20 70 72 6f 76 69 64 65 73 20 73 65 70 61 72 61 74 65 20 63 6f 6d in.that.it.provides.separate.com
15680 6d 61 6e 64 73 20 66 6f 72 20 64 6f 7a 65 6e 73 20 6f 66 20 63 6f 6d 6d 6f 6e 20 74 61 73 6b 73 mands.for.dozens.of.common.tasks
156a0 2c 20 6c 69 6b 65 20 67 65 6e 65 72 61 6c 20 63 68 61 74 2c 20 73 75 6d 6d 61 72 69 7a 69 6e 67 ,.like.general.chat,.summarizing
156c0 20 63 6f 64 65 2f 74 65 78 74 2c 20 72 65 66 61 63 74 6f 72 69 6e 67 20 63 6f 64 65 2c 20 69 6d .code/text,.refactoring.code,.im
156e0 70 72 6f 76 69 6e 67 20 67 72 61 6d 6d 61 72 2c 20 74 72 61 6e 73 6c 61 74 69 6f 6e 20 61 6e 64 proving.grammar,.translation.and
15700 20 73 6f 20 6f 6e 2e 0a 2d 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 78 .so.on..-.[[https://github.com/x
15720 65 6e 6f 64 69 75 6d 2f 63 68 61 74 67 70 74 2d 73 68 65 6c 6c 5d 5b 63 68 61 74 67 70 74 2d 73 enodium/chatgpt-shell][chatgpt-s
15740 68 65 6c 6c 5d 5d 3a 20 63 6f 6d 69 6e 74 2d 73 68 65 6c 6c 20 62 61 73 65 64 20 69 6e 74 65 72 hell]]:.comint-shell.based.inter
15760 61 63 74 69 6f 6e 20 77 69 74 68 20 43 68 61 74 47 50 54 2e 20 20 41 6c 73 6f 20 73 75 70 70 6f action.with.ChatGPT...Also.suppo
15780 72 74 73 20 44 41 4c 4c 2d 45 2c 20 65 78 65 63 75 74 61 62 6c 65 20 63 6f 64 65 20 62 6c 6f 63 rts.DALL-E,.executable.code.bloc
157a0 6b 73 20 69 6e 20 74 68 65 20 72 65 73 70 6f 6e 73 65 73 2c 20 61 6e 64 20 6d 6f 72 65 2e 0a 2d ks.in.the.responses,.and.more..-
157c0 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 72 6b 73 6d 2f 6f 72 67 2d 61 .[[https://github.com/rksm/org-a
157e0 69 5d 5b 6f 72 67 2d 61 69 5d 5d 3a 20 49 6e 74 65 72 61 63 74 69 6f 6e 20 74 68 72 6f 75 67 68 i][org-ai]]:.Interaction.through
15800 20 73 70 65 63 69 61 6c 20 3d 23 2b 62 65 67 69 6e 5f 61 69 20 2e 2e 2e 20 23 2b 65 6e 64 5f 61 .special.=#+begin_ai.....#+end_a
15820 69 3d 20 4f 72 67 2d 6d 6f 64 65 20 62 6c 6f 63 6b 73 2e 20 20 41 6c 73 6f 20 73 75 70 70 6f 72 i=.Org-mode.blocks...Also.suppor
15840 74 73 20 44 41 4c 4c 2d 45 2c 20 71 75 65 72 79 69 6e 67 20 43 68 61 74 47 50 54 20 77 69 74 68 ts.DALL-E,.querying.ChatGPT.with
15860 20 74 68 65 20 63 6f 6e 74 65 6e 74 73 20 6f 66 20 70 72 6f 6a 65 63 74 20 66 69 6c 65 73 2c 20 .the.contents.of.project.files,.
15880 61 6e 64 20 6d 6f 72 65 2e 0a 2d 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d and.more..-.[[https://github.com
158a0 2f 6d 69 6c 61 6e 67 6c 61 63 69 65 72 2f 6d 69 6e 75 65 74 2d 61 69 2e 65 6c 5d 5b 4d 69 6e 75 /milanglacier/minuet-ai.el][Minu
158c0 65 74 5d 5d 3a 20 43 6f 64 65 2d 63 6f 6d 70 6c 65 74 69 6f 6e 20 75 73 69 6e 67 20 4c 4c 4d 2e et]]:.Code-completion.using.LLM.
158e0 20 53 75 70 70 6f 72 74 73 20 66 69 6c 6c 2d 69 6e 2d 74 68 65 2d 6d 69 64 64 6c 65 20 28 46 49 .Supports.fill-in-the-middle.(FI
15900 4d 29 20 63 6f 6d 70 6c 65 74 69 6f 6e 20 66 6f 72 20 63 6f 6d 70 61 74 69 62 6c 65 20 6d 6f 64 M).completion.for.compatible.mod
15920 65 6c 73 20 73 75 63 68 20 61 73 20 44 65 65 70 53 65 65 6b 20 61 6e 64 20 43 6f 64 65 73 74 72 els.such.as.DeepSeek.and.Codestr
15940 61 6c 2e 0a 0a 54 68 65 72 65 20 61 72 65 20 73 65 76 65 72 61 6c 20 6d 6f 72 65 3a 20 5b 5b 68 al...There.are.several.more:.[[h
15960 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 69 77 61 68 62 65 2f 63 68 61 74 2e 65 6c ttps://github.com/iwahbe/chat.el
15980 5d 5b 63 68 61 74 2e 65 6c 5d 5d 2c 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f ][chat.el]],.[[https://github.co
159a0 6d 2f 73 74 75 68 6c 6d 75 65 6c 6c 65 72 2f 67 70 74 2e 65 6c 5d 5b 67 70 74 2e 65 6c 5d 5d 2c m/stuhlmueller/gpt.el][gpt.el]],
159c0 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 41 6e 73 65 6c 6d 43 2f 6c 65 .[[https://github.com/AnselmC/le
159e0 2d 67 70 74 2e 65 6c 5d 5b 6c 65 2d 67 70 74 5d 5d 2c 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 -gpt.el][le-gpt]],.[[https://git
15a00 68 75 62 2e 63 6f 6d 2f 73 74 65 76 65 6d 6f 6c 69 74 6f 72 2f 72 6f 62 62 79 5d 5b 72 6f 62 62 hub.com/stevemolitor/robby][robb
15a20 79 5d 5d 2e 0a 0a 2a 2a 2a 20 50 61 63 6b 61 67 65 73 20 75 73 69 6e 67 20 67 70 74 65 6c 0a 0a y]]...***.Packages.using.gptel..
15a40 67 70 74 65 6c 20 69 73 20 61 20 67 65 6e 65 72 61 6c 2d 70 75 72 70 6f 73 65 20 70 61 63 6b 61 gptel.is.a.general-purpose.packa
15a60 67 65 20 66 6f 72 20 63 68 61 74 20 61 6e 64 20 61 64 2d 68 6f 63 20 4c 4c 4d 20 69 6e 74 65 72 ge.for.chat.and.ad-hoc.LLM.inter
15a80 61 63 74 69 6f 6e 2e 20 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 70 61 63 6b 61 67 65 73 20 action...The.following.packages.
15aa0 75 73 65 20 67 70 74 65 6c 20 74 6f 20 70 72 6f 76 69 64 65 20 61 64 64 69 74 69 6f 6e 61 6c 20 use.gptel.to.provide.additional.
15ac0 6f 72 20 73 70 65 63 69 61 6c 69 7a 65 64 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 3a 0a 0a 2a or.specialized.functionality:..*
15ae0 4c 6f 6f 6b 75 70 20 68 65 6c 70 65 72 73 2a 3a 20 43 61 6c 6c 69 6e 67 20 67 70 74 65 6c 20 71 Lookup.helpers*:.Calling.gptel.q
15b00 75 69 63 6b 6c 79 20 66 6f 72 20 6f 6e 65 2d 6f 66 66 20 69 6e 74 65 72 61 63 74 69 6f 6e 73 0a uickly.for.one-off.interactions.
15b20 0a 2d 20 5b 5b 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 .-.[[https://github.com/karthink
15b40 2f 67 70 74 65 6c 2d 71 75 69 63 6b 5d 5b 67 70 74 65 6c 2d 71 75 69 63 6b 5d 5d 3a 20 51 75 69 /gptel-quick][gptel-quick]]:.Qui
15b60 63 6b 6c 79 20 6c 6f 6f 6b 20 75 70 20 74 68 65 20 72 65 67 69 6f 6e 20 6f 72 20 74 65 78 74 20 ckly.look.up.the.region.or.text.
15b80 61 74 20 70 6f 69 6e 74 2e 0a 0a 2a 54 61 73 6b 2d 64 72 69 76 65 6e 20 77 6f 72 6b 66 6c 6f 77 at.point...*Task-driven.workflow
15ba0 73 2a 3a 20 44 69 66 66 65 72 65 6e 74 20 69 6e 74 65 72 66 61 63 65 73 20 74 6f 20 73 70 65 63 s*:.Different.interfaces.to.spec
15bc0 69 66 79 20 74 61 73 6b 73 20 66 6f 72 20 4c 4c 4d 73 2e 0a 0a 54 68 65 73 65 20 64 69 66 66 65 ify.tasks.for.LLMs...These.diffe
15be0 72 20 66 72 6f 6d 20 66 75 6c 6c 20 22 61 67 65 6e 74 69 63 22 20 75 73 65 20 69 6e 20 74 68 61 r.from.full."agentic".use.in.tha
15c00 74 20 74 68 65 20 69 6e 74 65 72 61 63 74 69 6f 6e 73 20 61 72 65 20 22 6f 6e 65 2d 73 68 6f 74 t.the.interactions.are."one-shot
15c20 22 2c 20 6e 6f 74 20 63 68 61 69 6e 65 64 2e 0a 0a 2d 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 ",.not.chained...-.[[https://git
15c40 68 75 62 2e 63 6f 6d 2f 64 6f 6c 6d 65 6e 73 2f 67 70 74 65 6c 2d 61 69 62 6f 2f 5d 5b 67 70 74 hub.com/dolmens/gptel-aibo/][gpt
15c60 65 6c 2d 61 69 62 6f 5d 5d 3a 20 41 20 77 72 69 74 69 6e 67 20 61 73 73 69 73 74 61 6e 74 20 73 el-aibo]]:.A.writing.assistant.s
15c80 79 73 74 65 6d 20 62 75 69 6c 74 20 6f 6e 20 74 6f 70 20 6f 66 20 67 70 74 65 6c 2e 0a 2d 20 5b ystem.built.on.top.of.gptel..-.[
15ca0 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 64 61 65 64 73 69 64 6f 67 2f 65 76 [https://github.com/daedsidog/ev
15cc0 65 64 65 6c 5d 5b 45 76 65 64 65 6c 5d 5d 3a 20 49 6e 73 74 72 75 63 74 65 64 20 4c 4c 4d 20 50 edel][Evedel]]:.Instructed.LLM.P
15ce0 72 6f 67 72 61 6d 6d 65 72 2f 41 73 73 69 73 74 61 6e 74 2e 0a 2d 20 5b 5b 68 74 74 70 73 3a 2f rogrammer/Assistant..-.[[https:/
15d00 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6c 61 6e 63 65 62 65 72 67 65 2f 65 6c 79 73 69 75 6d 5d 5b /github.com/lanceberge/elysium][
15d20 45 6c 79 73 69 75 6d 5d 5d 3a 20 52 65 71 75 65 73 74 20 41 49 2d 67 65 6e 65 72 61 74 65 64 20 Elysium]]:.Request.AI-generated.
15d40 63 68 61 6e 67 65 73 20 61 73 20 79 6f 75 20 63 6f 64 65 2e 0a 2d 20 5b 5b 68 74 74 70 73 3a 2f changes.as.you.code..-.[[https:/
15d60 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 49 53 6f 75 74 68 52 61 69 6e 2f 67 70 74 65 6c 2d 77 61 74 /github.com/ISouthRain/gptel-wat
15d80 63 68 5d 5b 67 70 74 65 6c 2d 77 61 74 63 68 5d 5d 3a 20 41 75 74 6f 6d 61 74 69 63 61 6c 6c 79 ch][gptel-watch]]:.Automatically
15da0 20 63 61 6c 6c 20 67 70 74 65 6c 20 77 68 65 6e 20 74 79 70 69 6e 67 20 6c 69 6e 65 73 20 74 68 .call.gptel.when.typing.lines.th
15dc0 61 74 20 69 6e 64 69 63 61 74 65 20 69 6e 74 65 6e 74 2e 0a 0a 2a 41 67 65 6e 74 69 63 20 75 73 at.indicate.intent...*Agentic.us
15de0 65 2a 3a 20 55 73 65 20 4c 4c 4d 73 20 61 73 20 61 67 65 6e 74 73 2c 20 77 69 74 68 20 74 6f 6f e*:.Use.LLMs.as.agents,.with.too
15e00 6c 2d 75 73 65 0a 0a 2d 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6b 6d l-use..-.[[https://github.com/km
15e20 6f 6e 74 61 67 2f 6d 61 63 68 65 72 5d 5b 4d 61 63 68 65 72 5d 5d 3a 20 50 72 6f 6a 65 63 74 2d ontag/macher][Macher]]:.Project-
15e40 61 77 61 72 65 20 6d 75 6c 74 69 2d 66 69 6c 65 20 4c 4c 4d 20 65 64 69 74 69 6e 67 20 66 6f 72 aware.multi-file.LLM.editing.for
15e60 20 45 6d 61 63 73 2e 0a 0a 2a 54 65 78 74 20 63 6f 6d 70 6c 65 74 69 6f 6e 2a 0a 0a 2d 20 5b 5b .Emacs...*Text.completion*..-.[[
15e80 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 4a 44 4e 64 65 76 65 6c 6f 70 65 72 2f https://github.com/JDNdeveloper/
15ea0 67 70 74 65 6c 2d 61 75 74 6f 63 6f 6d 70 6c 65 74 65 5d 5b 67 70 74 65 6c 2d 61 75 74 6f 63 6f gptel-autocomplete][gptel-autoco
15ec0 6d 70 6c 65 74 65 5d 5d 3a 20 49 6e 6c 69 6e 65 20 63 6f 6d 70 6c 65 74 69 6f 6e 73 20 75 73 69 mplete]]:.Inline.completions.usi
15ee0 6e 67 20 67 70 74 65 6c 2e 0a 0a 2a 49 6e 74 65 67 72 61 74 69 6f 6e 20 77 69 74 68 20 6d 61 6a ng.gptel...*Integration.with.maj
15f00 6f 72 2d 6d 6f 64 65 73 2a 0a 0a 2d 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f or-modes*..-.[[https://github.co
15f20 6d 2f 6a 77 69 65 67 6c 65 79 2f 6f 62 2d 67 70 74 65 6c 5d 5b 6f 62 2d 67 70 74 65 6c 5d 5d 3a m/jwiegley/ob-gptel][ob-gptel]]:
15f40 20 4f 72 67 2d 62 61 62 65 6c 20 62 61 63 6b 65 6e 64 20 66 6f 72 20 72 75 6e 6e 69 6e 67 20 67 .Org-babel.backend.for.running.g
15f60 70 74 65 6c 20 71 75 65 72 69 65 73 2e 0a 2d 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 ptel.queries..-.[[https://github
15f80 2e 63 6f 6d 2f 6b 61 6d 75 73 68 61 64 65 6e 65 73 2f 61 69 2d 62 6c 6f 67 2e 65 6c 5d 5b 61 69 .com/kamushadenes/ai-blog.el][ai
15fa0 2d 62 6c 6f 67 2e 65 6c 5d 5d 3a 20 53 74 72 65 61 6d 6c 69 6e 65 20 67 65 6e 65 72 61 74 69 6f -blog.el]]:.Streamline.generatio
15fc0 6e 20 6f 66 20 62 6c 6f 67 20 70 6f 73 74 73 20 69 6e 20 48 75 67 6f 2e 0a 2d 20 5b 5b 68 74 74 n.of.blog.posts.in.Hugo..-.[[htt
15fe0 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6c 61 6b 6b 69 79 2f 67 70 74 65 6c 2d 63 6f 6d ps://github.com/lakkiy/gptel-com
16000 6d 69 74 5d 5b 67 70 74 65 6c 2d 63 6f 6d 6d 69 74 5d 5d 3a 20 47 65 6e 65 72 61 74 65 20 63 6f mit][gptel-commit]]:.Generate.co
16020 6d 6d 69 74 20 6d 65 73 73 61 67 65 73 20 75 73 69 6e 67 20 67 70 74 65 6c 2e 0a 2d 20 5b 5b 68 mmit.messages.using.gptel..-.[[h
16040 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 64 6f 75 6f 2f 6d 61 67 69 74 2d 67 70 74 ttps://github.com/douo/magit-gpt
16060 63 6f 6d 6d 69 74 5d 5b 6d 61 67 69 74 2d 67 70 74 63 6f 6d 6d 69 74 5d 5d 3a 20 47 65 6e 65 72 commit][magit-gptcommit]]:.Gener
16080 61 74 65 20 63 6f 6d 6d 69 74 20 6d 65 73 73 61 67 65 73 20 77 69 74 68 69 6e 20 6d 61 67 69 74 ate.commit.messages.within.magit
160a0 2d 73 74 61 74 75 73 20 42 75 66 66 65 72 20 75 73 69 6e 67 20 67 70 74 65 6c 2e 0a 2d 20 5b 5b -status.Buffer.using.gptel..-.[[
160c0 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 72 61 67 6e 61 72 64 2f 67 70 74 65 6c https://github.com/ragnard/gptel
160e0 2d 6d 61 67 69 74 2f 5d 5b 67 70 74 65 6c 2d 6d 61 67 69 74 5d 5d 3a 20 47 65 6e 65 72 61 74 65 -magit/][gptel-magit]]:.Generate
16100 20 63 6f 6d 6d 69 74 20 6d 65 73 73 61 67 65 73 20 66 6f 72 20 6d 61 67 69 74 20 75 73 69 6e 67 .commit.messages.for.magit.using
16120 20 67 70 74 65 6c 2e 0a 0a 2a 43 68 61 74 20 69 6e 74 65 72 66 61 63 65 20 61 64 64 6f 6e 73 2a .gptel...*Chat.interface.addons*
16140 0a 0a 2d 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 72 6f 62 31 33 37 2f ..-.[[https://github.com/rob137/
16160 43 6f 72 73 61 69 72 5d 5b 43 6f 72 73 61 69 72 5d 5d 3a 20 48 65 6c 70 73 20 67 61 74 68 65 72 Corsair][Corsair]]:.Helps.gather
16180 20 74 65 78 74 20 74 6f 20 70 6f 70 75 6c 61 74 65 20 4c 4c 4d 20 70 72 6f 6d 70 74 73 20 66 6f .text.to.populate.LLM.prompts.fo
161a0 72 20 67 70 74 65 6c 2e 0a 2d 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f r.gptel..-.[[https://github.com/
161c0 75 6c 74 72 6f 6e 6f 7a 6d 2f 61 69 2d 6f 72 67 2d 63 68 61 74 2e 65 6c 5d 5b 61 69 2d 6f 72 67 ultronozm/ai-org-chat.el][ai-org
161e0 2d 63 68 61 74 5d 5d 3a 20 50 72 6f 76 69 64 65 73 20 62 72 61 6e 63 68 69 6e 67 20 63 6f 6e 76 -chat]]:.Provides.branching.conv
16200 65 72 73 61 74 69 6f 6e 73 20 69 6e 20 4f 72 67 20 62 75 66 66 65 72 73 20 75 73 69 6e 67 20 67 ersations.in.Org.buffers.using.g
16220 70 74 65 6c 2e 20 20 28 4e 6f 74 65 20 74 68 61 74 20 67 70 74 65 6c 20 69 6e 63 6c 75 64 65 73 ptel...(Note.that.gptel.includes
16240 20 74 68 69 73 20 66 65 61 74 75 72 65 20 61 73 20 77 65 6c 6c 20 28 73 65 65 20 3d 67 70 74 65 .this.feature.as.well.(see.=gpte
16260 6c 2d 6f 72 67 2d 62 72 61 6e 63 68 69 6e 67 2d 63 6f 6e 74 65 78 74 3d 29 2c 20 62 75 74 20 72 l-org-branching-context=),.but.r
16280 65 71 75 69 72 65 73 20 61 20 72 65 63 65 6e 74 20 76 65 72 73 69 6f 6e 20 6f 66 20 4f 72 67 20 equires.a.recent.version.of.Org.
162a0 6d 6f 64 65 20 39 2e 37 20 6f 72 20 6c 61 74 65 72 20 74 6f 20 62 65 20 69 6e 73 74 61 6c 6c 65 mode.9.7.or.later.to.be.installe
162c0 64 2e 29 0a 0a 2a 49 6e 74 65 67 72 61 74 69 6f 6e 20 77 69 74 68 20 6f 74 68 65 72 20 70 61 63 d.)..*Integration.with.other.pac
162e0 6b 61 67 65 73 2a 0a 0a 2d 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 61 kages*..-.[[https://github.com/a
16300 72 6d 69 6e 64 61 72 76 69 73 68 2f 63 6f 6e 73 75 6c 74 2d 6f 6d 6e 69 5d 5b 63 6f 6e 73 75 6c rmindarvish/consult-omni][consul
16320 74 2d 6f 6d 6e 69 5d 5d 3a 20 56 65 72 73 61 74 69 6c 65 20 6d 75 6c 74 69 2d 73 6f 75 72 63 65 t-omni]]:.Versatile.multi-source
16340 20 73 65 61 72 63 68 20 70 61 63 6b 61 67 65 2e 20 20 49 74 20 69 6e 63 6c 75 64 65 73 20 67 70 .search.package...It.includes.gp
16360 74 65 6c 20 61 73 20 6f 6e 65 20 6f 66 20 69 74 73 20 6d 61 6e 79 20 73 6f 75 72 63 65 73 2e 0a tel.as.one.of.its.many.sources..
16380 0a 2a 67 70 74 65 6c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6d 61 6e 61 67 65 6d 65 6e 74 .*gptel.configuration.management
163a0 2a 0a 0a 2d 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6a 77 69 65 67 6c *..-.[[https://github.com/jwiegl
163c0 65 79 2f 67 70 74 65 6c 2d 70 72 6f 6d 70 74 73 5d 5b 67 70 74 65 6c 2d 70 72 6f 6d 70 74 73 5d ey/gptel-prompts][gptel-prompts]
163e0 5d 3a 20 53 79 73 74 65 6d 20 70 72 6f 6d 70 74 20 6d 61 6e 61 67 65 72 20 66 6f 72 20 67 70 74 ]:.System.prompt.manager.for.gpt
16400 65 6c 2e 0a 0a 2a 2a 20 43 4f 4d 4d 45 4e 54 20 4f 6c 64 65 72 20 42 72 65 61 6b 69 6e 67 20 43 el...**.COMMENT.Older.Breaking.C
16420 68 61 6e 67 65 73 0a 0a 2d 20 3d 67 70 74 65 6c 2d 70 6f 73 74 2d 72 65 73 70 6f 6e 73 65 2d 68 hanges..-.=gptel-post-response-h
16440 6f 6f 6b 3d 20 68 61 73 20 62 65 65 6e 20 72 65 6e 61 6d 65 64 20 74 6f 20 3d 67 70 74 65 6c 2d ook=.has.been.renamed.to.=gptel-
16460 70 6f 73 74 2d 72 65 73 70 6f 6e 73 65 2d 66 75 6e 63 74 69 6f 6e 73 3d 2c 20 61 6e 64 20 66 75 post-response-functions=,.and.fu
16480 6e 63 74 69 6f 6e 73 20 69 6e 20 74 68 69 73 20 68 6f 6f 6b 20 61 72 65 20 6e 6f 77 20 63 61 6c nctions.in.this.hook.are.now.cal
164a0 6c 65 64 20 77 69 74 68 20 74 77 6f 20 61 72 67 75 6d 65 6e 74 73 3a 20 74 68 65 20 73 74 61 72 led.with.two.arguments:.the.star
164c0 74 20 61 6e 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 t.and.end.buffer.positions.of.th
164e0 65 20 72 65 73 70 6f 6e 73 65 2e 20 20 54 68 69 73 20 73 68 6f 75 6c 64 20 6d 61 6b 65 20 69 74 e.response...This.should.make.it
16500 20 65 61 73 79 20 74 6f 20 61 63 74 20 6f 6e 20 74 68 65 20 72 65 73 70 6f 6e 73 65 20 74 65 78 .easy.to.act.on.the.response.tex
16520 74 20 77 69 74 68 6f 75 74 20 68 61 76 69 6e 67 20 74 6f 20 6c 6f 63 61 74 65 20 69 74 20 66 69 t.without.having.to.locate.it.fi
16540 72 73 74 2e 0a 0a 2d 20 50 6f 73 73 69 62 6c 65 20 62 72 65 61 6b 61 67 65 2c 20 73 65 65 20 23 rst...-.Possible.breakage,.see.#
16560 31 32 30 3a 20 49 66 20 73 74 72 65 61 6d 69 6e 67 20 72 65 73 70 6f 6e 73 65 73 20 73 74 6f 70 120:.If.streaming.responses.stop
16580 20 77 6f 72 6b 69 6e 67 20 66 6f 72 20 79 6f 75 20 61 66 74 65 72 20 75 70 67 72 61 64 69 6e 67 .working.for.you.after.upgrading
165a0 20 74 6f 20 76 30 2e 35 2c 20 74 72 79 20 72 65 69 6e 73 74 61 6c 6c 69 6e 67 20 67 70 74 65 6c .to.v0.5,.try.reinstalling.gptel
165c0 20 61 6e 64 20 64 65 6c 65 74 69 6e 67 20 69 74 73 20 6e 61 74 69 76 65 20 63 6f 6d 70 20 65 6c .and.deleting.its.native.comp.el
165e0 6e 20 63 61 63 68 65 20 69 6e 20 3d 6e 61 74 69 76 65 2d 63 6f 6d 70 2d 65 6c 6e 2d 6c 6f 61 64 n.cache.in.=native-comp-eln-load
16600 2d 70 61 74 68 3d 2e 0a 0a 2d 20 54 68 65 20 75 73 65 72 20 6f 70 74 69 6f 6e 20 3d 67 70 74 65 -path=...-.The.user.option.=gpte
16620 6c 2d 68 6f 73 74 3d 20 69 73 20 64 65 70 72 65 63 61 74 65 64 2e 20 20 49 66 20 74 68 65 20 64 l-host=.is.deprecated...If.the.d
16640 65 66 61 75 6c 74 73 20 64 6f 6e 27 74 20 77 6f 72 6b 20 66 6f 72 20 79 6f 75 2c 20 75 73 65 20 efaults.don't.work.for.you,.use.
16660 3d 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 3d 20 28 77 68 69 63 68 20 73 65 65 29 20 =gptel-make-openai=.(which.see).
16680 74 6f 20 63 75 73 74 6f 6d 69 7a 65 20 73 65 72 76 65 72 20 73 65 74 74 69 6e 67 73 2e 0a 0a 2d to.customize.server.settings...-
166a0 20 3d 67 70 74 65 6c 2d 61 70 69 2d 6b 65 79 2d 66 72 6f 6d 2d 61 75 74 68 2d 73 6f 75 72 63 65 .=gptel-api-key-from-auth-source
166c0 3d 20 6e 6f 77 20 73 65 61 72 63 68 65 73 20 66 6f 72 20 74 68 65 20 41 50 49 20 6b 65 79 20 75 =.now.searches.for.the.API.key.u
166e0 73 69 6e 67 20 74 68 65 20 68 6f 73 74 20 61 64 64 72 65 73 73 20 66 6f 72 20 74 68 65 20 61 63 sing.the.host.address.for.the.ac
16700 74 69 76 65 20 4c 4c 4d 20 62 61 63 6b 65 6e 64 2c 20 2f 69 2e 65 2e 2f 20 22 61 70 69 2e 6f 70 tive.LLM.backend,./i.e./."api.op
16720 65 6e 61 69 2e 63 6f 6d 22 20 77 68 65 6e 20 75 73 69 6e 67 20 43 68 61 74 47 50 54 2e 20 20 59 enai.com".when.using.ChatGPT...Y
16740 6f 75 20 6d 61 79 20 6e 65 65 64 20 74 6f 20 75 70 64 61 74 65 20 79 6f 75 72 20 3d 7e 2f 2e 61 ou.may.need.to.update.your.=~/.a
16760 75 74 68 69 6e 66 6f 3d 2e 0a 0a 2a 2a 20 41 63 6b 6e 6f 77 6c 65 64 67 6d 65 6e 74 73 0a 0a 2d uthinfo=...**.Acknowledgments..-
16780 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 66 65 6c 69 70 65 6f 63 68 6f .[[https://github.com/felipeocho
167a0 61 5d 5b 46 65 6c 69 70 65 20 4f 63 68 6f 61 5d 5d 20 61 6e 64 20 5b 5b 68 74 74 70 73 3a 2f 2f a][Felipe.Ochoa]].and.[[https://
167c0 67 69 74 68 75 62 2e 63 6f 6d 2f 61 6b 73 73 72 69 5d 5b 61 6b 73 73 72 69 5d 5d 20 66 6f 72 20 github.com/akssri][akssri]].for.
167e0 61 64 64 69 6e 67 20 41 57 53 20 42 65 64 72 6f 63 6b 20 73 75 70 70 6f 72 74 20 74 6f 20 67 70 adding.AWS.Bedrock.support.to.gp
16800 74 65 6c 2e 0a 2d 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6a 77 69 65 tel..-.[[https://github.com/jwie
16820 67 6c 65 79 5d 5b 4a 6f 68 6e 20 57 69 65 67 6c 65 79 5d 5d 20 66 6f 72 20 74 68 65 20 64 65 73 gley][John.Wiegley]].for.the.des
16840 69 67 6e 20 6f 66 20 67 70 74 65 6c 27 73 20 70 72 65 73 65 74 73 20 61 6e 64 20 67 70 74 65 6c ign.of.gptel's.presets.and.gptel
16860 2d 72 65 71 75 65 73 74 27 73 20 61 73 79 6e 63 20 70 69 70 65 6c 69 6e 65 2c 20 62 75 74 20 61 -request's.async.pipeline,.but.a
16880 6c 73 6f 20 66 6f 72 20 6c 6f 61 64 73 20 6f 66 20 67 65 6e 65 72 61 6c 20 66 65 65 64 62 61 63 lso.for.loads.of.general.feedbac
168a0 6b 20 61 6e 64 20 61 64 76 69 63 65 2e 0a 2d 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 k.and.advice..-.[[https://github
168c0 2e 63 6f 6d 2f 70 61 62 6c 30 5d 5b 48 65 6e 72 69 6b 20 41 68 6c 67 72 65 6e 5d 5d 20 66 6f 72 .com/pabl0][Henrik.Ahlgren]].for
168e0 20 61 20 6b 65 65 6e 20 65 79 65 20 74 6f 20 64 65 74 61 69 6c 20 61 6e 64 20 70 6f 6c 69 73 68 .a.keen.eye.to.detail.and.polish
16900 20 61 70 70 6c 69 65 64 20 74 6f 20 67 70 74 65 6c 27 73 20 55 49 2e 0a 2d 20 5b 5b 68 74 74 70 .applied.to.gptel's.UI..-.[[http
16920 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 70 73 69 6f 6e 69 63 2d 6b 5d 5b 70 73 69 6f 6e 69 s://github.com/psionic-k][psioni
16940 63 2d 6b 5d 5d 20 66 6f 72 20 65 78 74 65 6e 73 69 76 65 20 74 65 73 74 69 6e 67 20 6f 66 20 74 c-k]].for.extensive.testing.of.t
16960 68 65 20 74 6f 6f 6c 20 75 73 65 20 66 65 61 74 75 72 65 20 61 6e 64 20 74 68 65 20 64 65 73 69 he.tool.use.feature.and.the.desi
16980 67 6e 20 6f 66 20 67 70 74 65 6c 27 73 20 69 6e 2d 62 75 66 66 65 72 20 74 6f 6f 6c 20 75 73 65 gn.of.gptel's.in-buffer.tool.use
169a0 20 72 65 63 6f 72 64 73 2e 0a 2d 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d .records..-.[[https://github.com
169c0 2f 6a 64 74 73 6d 69 74 68 5d 5b 4a 44 20 53 6d 69 74 68 5d 5d 20 66 6f 72 20 66 65 65 64 62 61 /jdtsmith][JD.Smith]].for.feedba
169e0 63 6b 20 61 6e 64 20 63 6f 64 65 20 61 73 73 69 73 74 61 6e 63 65 20 77 69 74 68 20 67 70 74 65 ck.and.code.assistance.with.gpte
16a00 6c 2d 6d 65 6e 75 27 73 20 72 65 64 65 73 69 67 6e 0a 2d 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 l-menu's.redesign.-.[[https://gi
16a20 74 68 75 62 2e 63 6f 6d 2f 6d 65 61 69 6e 5d 5b 41 62 69 6e 20 53 69 6d 6f 6e 5d 5d 20 66 6f 72 thub.com/meain][Abin.Simon]].for
16a40 20 65 78 74 65 6e 73 69 76 65 20 66 65 65 64 62 61 63 6b 20 6f 6e 20 69 6d 70 72 6f 76 69 6e 67 .extensive.feedback.on.improving
16a60 20 67 70 74 65 6c 27 73 20 64 69 72 65 63 74 69 76 65 73 20 61 6e 64 20 55 49 2e 0a 2d 20 5b 5b .gptel's.directives.and.UI..-.[[
16a80 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 61 6c 67 61 6c 5d 5b 41 6c 65 78 69 73 https://github.com/algal][Alexis
16aa0 20 47 61 6c 6c 61 67 68 65 72 5d 5d 20 61 6e 64 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 .Gallagher]].and.[[https://githu
16ac0 62 2e 63 6f 6d 2f 64 31 65 67 6f 61 7a 5d 5b 44 69 65 67 6f 20 41 6c 76 61 72 65 7a 5d 5d 20 66 b.com/d1egoaz][Diego.Alvarez]].f
16ae0 6f 72 20 66 69 78 69 6e 67 20 61 20 6e 61 73 74 79 20 6d 75 6c 74 69 2d 62 79 74 65 20 62 75 67 or.fixing.a.nasty.multi-byte.bug
16b00 20 77 69 74 68 20 3d 75 72 6c 2d 72 65 74 72 69 65 76 65 3d 2e 0a 2d 20 5b 5b 68 74 74 70 73 3a .with.=url-retrieve=..-.[[https:
16b20 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 74 61 72 73 69 75 73 5d 5b 4a 6f 6e 61 73 20 42 65 72 6e //github.com/tarsius][Jonas.Bern
16b40 6f 75 6c 6c 69 5d 5d 20 66 6f 72 20 74 68 65 20 54 72 61 6e 73 69 65 6e 74 20 6c 69 62 72 61 72 oulli]].for.the.Transient.librar
16b60 79 2e 0a 2d 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 64 61 65 64 73 69 y..-.[[https://github.com/daedsi
16b80 64 6f 67 5d 5b 64 61 65 64 73 69 64 6f 67 5d 5d 20 66 6f 72 20 61 64 64 69 6e 67 20 63 6f 6e 74 dog][daedsidog]].for.adding.cont
16ba0 65 78 74 20 73 75 70 70 6f 72 74 20 74 6f 20 67 70 74 65 6c 2e 0a 2d 20 5b 5b 68 74 74 70 73 3a ext.support.to.gptel..-.[[https:
16bc0 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 41 71 75 61 6e 31 34 31 32 5d 5b 41 71 75 61 6e 31 34 31 //github.com/Aquan1412][Aquan141
16be0 32 5d 5d 20 66 6f 72 20 61 64 64 69 6e 67 20 50 72 69 76 61 74 65 47 50 54 20 73 75 70 70 6f 72 2]].for.adding.PrivateGPT.suppor
16c00 74 20 74 6f 20 67 70 74 65 6c 2e 0a 2d 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 t.to.gptel..-.[[https://github.c
16c20 6f 6d 2f 72 30 6d 61 6e 5d 5b 72 30 6d 61 6e 5d 5d 20 66 6f 72 20 69 6d 70 72 6f 76 69 6e 67 20 om/r0man][r0man]].for.improving.
16c40 67 70 74 65 6c 27 73 20 43 75 72 6c 20 69 6e 74 65 67 72 61 74 69 6f 6e 2e 0a 0a 23 20 4c 6f 63 gptel's.Curl.integration...#.Loc
16c60 61 6c 20 56 61 72 69 61 62 6c 65 73 3a 0a 23 20 74 6f 63 2d 6f 72 67 2d 6d 61 78 2d 64 65 70 74 al.Variables:.#.toc-org-max-dept
16c80 68 3a 20 34 0a 23 20 65 76 61 6c 3a 20 28 61 6e 64 20 28 66 62 6f 75 6e 64 70 20 27 74 6f 63 2d h:.4.#.eval:.(and.(fboundp.'toc-
16ca0 6f 72 67 2d 6d 6f 64 65 29 20 28 74 6f 63 2d 6f 72 67 2d 6d 6f 64 65 20 31 29 29 0a 23 20 45 6e org-mode).(toc-org-mode.1)).#.En
16cc0 64 3a 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 00 00 00 00 d:..............................
16ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16d00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16d20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16e00 67 70 74 65 6c 2d 30 2e 39 2e 39 2f 67 70 74 65 6c 2d 6b 61 67 69 2e 65 6c 00 00 00 00 00 00 00 gptel-0.9.9/gptel-kagi.el.......
16e20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16e40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16e60 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
16e80 30 30 31 37 33 33 35 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 33 36 36 32 00 20 30 00 00 00 0017335.00000000000.013662..0...
16ea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16ec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16ee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16f00 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...................
16f20 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...................
16f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16f60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17000 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
17020 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
17040 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
17060 30 32 33 2d 32 30 32 35 20 20 4b 61 72 74 68 69 6b 20 43 68 69 6b 6d 61 67 61 6c 75 72 0a 0a 3b 023-2025..Karthik.Chikmagalur..;
17080 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 20 3c 6b ;.Author:.Karthik.Chikmagalur.<k
170a0 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 20 arthikchikmagalur@gmail.com>.;;.
170c0 4b 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 Keywords:.hypermedia..;;.This.pr
170e0 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 75 20 63 61 6e 20 ogram.is.free.software;.you.can.
17100 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 69 66 79 0a 3b 3b redistribute.it.and/or.modify.;;
17120 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 20 47 4e 55 20 47 .it.under.the.terms.of.the.GNU.G
17140 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 75 62 6c 69 73 68 eneral.Public.License.as.publish
17160 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 20 46 6f 75 6e 64 ed.by.;;.the.Free.Software.Found
17180 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 20 74 68 65 20 4c ation,.either.version.3.of.the.L
171a0 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 69 6f 6e 29 20 61 icense,.or.;;.(at.your.option).a
171c0 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 20 70 72 6f 67 72 ny.later.version...;;.This.progr
171e0 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 6f 70 65 20 74 68 am.is.distributed.in.the.hope.th
17200 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 75 74 20 57 49 54 at.it.will.be.useful,.;;.but.WIT
17220 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 20 65 76 65 6e 20 HOUT.ANY.WARRANTY;.without.even.
17240 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 20 4d 45 52 43 48 the.implied.warranty.of.;;.MERCH
17260 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 41 20 50 41 52 54 ANTABILITY.or.FITNESS.FOR.A.PART
17280 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 3b 20 47 4e 55 20 ICULAR.PURPOSE...See.the.;;.GNU.
172a0 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 20 6d 6f 72 65 20 General.Public.License.for.more.
172c0 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 76 65 20 72 65 63 details...;;.You.should.have.rec
172e0 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 6e 65 72 61 6c 20 eived.a.copy.of.the.GNU.General.
17300 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 74 68 20 74 68 69 Public.License.;;.along.with.thi
17320 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 74 74 70 73 3a 2f s.program...If.not,.see.<https:/
17340 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 3b 3b 3b 20 43 6f /www.gnu.org/licenses/>...;;;.Co
17360 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 64 73 20 73 75 70 mmentary:..;;.This.file.adds.sup
17380 70 6f 72 74 20 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 port.for.the.Kagi.FastGPT.LLM.AP
173a0 49 20 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 I.to.gptel..;;;.Code:.(require.'
173c0 67 70 74 65 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 65 76 gptel).(require.'cl-generic).(ev
173e0 61 6c 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 al-when-compile...(require.'cl-l
17400 69 62 29 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 6c 2d 63 6f ib))..(declare-function.gptel-co
17420 6e 74 65 78 74 2d 2d 77 72 61 70 20 22 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 22 29 0a 0a 3b 3b ntext--wrap."gptel-context")..;;
17440 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 61 67 69 ;.Kagi.(cl-defstruct.(gptel-kagi
17460 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 67 69 29 .(:constructor.gptel--make-kagi)
17480 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 63 .............................(:c
174a0 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 20 opier.nil)......................
174c0 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 29 .......(:include.gptel-backend))
174e0 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 72 65 )..(cl-defmethod.gptel--parse-re
17500 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 20 72 65 sponse.((_backend.gptel-kagi).re
17520 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 70 6c 69 sponse.info)...(let*.((data.(pli
17540 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 20 20 20 st-get.response.:data)).........
17560 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 70 75 74 .(output.(plist-get.data.:output
17580 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 74 2d 67 ))..........(references.(plist-g
175a0 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 69 66 20 28 et.data.:references))).....(if.(
175c0 65 71 20 72 65 66 65 72 65 6e 63 65 73 20 3a 6e 75 6c 6c 29 20 28 73 65 74 71 20 72 65 66 65 72 eq.references.:null).(setq.refer
175e0 65 6e 63 65 73 20 6e 69 6c 29 29 0a 20 20 20 20 28 69 66 20 28 65 71 20 6f 75 74 70 75 74 20 3a ences.nil)).....(if.(eq.output.:
17600 6e 75 6c 6c 29 20 28 73 65 74 71 20 6f 75 74 70 75 74 20 6e 69 6c 29 29 0a 20 20 20 20 28 77 68 null).(setq.output.nil)).....(wh
17620 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 65 en.references.......(setq.refere
17640 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 6c nces.............(cl-loop.with.l
17660 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 63 inker.=......................(pc
17680 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 6d ase.(buffer-local-value.'major-m
176a0 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.............................
176c0 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 69 ....................(plist-get.i
176e0 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 20 nfo.:buffer))...................
17700 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 20 .....('org-mode.................
17720 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 20 ........(lambda.(text.url)......
17740 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 5b .....................(format."[[
17760 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 20 %s][%s]]".url.text)))...........
17780 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 20 .............('markdown-mode....
177a0 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 65 .....................(lambda.(te
177c0 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 20 xt.url).........................
177e0 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 29 ..(format."[%s](%s)".text.url)))
17800 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 62 ........................(_.(lamb
17820 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 20 da.(text.url)...................
17840 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 20 ..........(buttonize............
17860 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 28 ..................text.(lambda.(
17880 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 20 data).(browse-url.data))........
178a0 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 20 ......................url))))...
178c0 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 73 ...................for.ref.acros
178e0 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 20 s.references....................
17900 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 69 ..for.title.=.(plist-get.ref.:ti
17920 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 6e tle)......................for.sn
17940 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 29 ippet.=.(plist-get.ref.:snippet)
17960 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 20 ......................for.url.=.
17980 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 20 (plist-get.ref.:url)............
179a0 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 20 ..........for.n.upfrom.1........
179c0 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 20 ..............collect...........
179e0 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 5d ...........(concat.(format."[%d]
17a00 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 20 .".n)...........................
17a20 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 3a ...(funcall.linker.title.url).":
17a40 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 20 ."..............................
17a60 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 20 (replace-regexp-in-string.......
17a80 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 20 ........................"</?b>".
17aa0 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 20 "*".snippet))...................
17ac0 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 20 ...into.ref-strings.............
17ae0 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 20 .........finally.return.........
17b00 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 70 .............(concat."\n\n".(map
17b20 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 5c concat.#'identity.ref-strings."\
17b40 6e 22 29 29 29 29 29 0a 20 20 20 20 28 63 6f 6e 63 61 74 20 6f 75 74 70 75 74 20 72 65 66 65 72 n"))))).....(concat.output.refer
17b60 65 6e 63 65 73 29 29 29 0a 0a 3b 3b 20 54 4f 44 4f 3a 20 41 64 64 20 73 75 70 70 6f 72 74 20 66 ences)))..;;.TODO:.Add.support.f
17b80 6f 72 20 6d 6f 64 65 6c 2f 62 61 63 6b 65 6e 64 2d 73 70 65 63 69 66 69 63 20 72 65 71 75 65 73 or.model/backend-specific.reques
17ba0 74 2d 70 61 72 61 6d 73 20 61 6e 64 0a 3b 3b 20 67 70 74 65 6c 2d 2d 72 65 71 75 65 73 74 2d 70 t-params.and.;;.gptel--request-p
17bc0 61 72 61 6d 73 0a 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 arams.(cl-defmethod.gptel--reque
17be0 73 74 2d 64 61 74 61 20 28 28 5f 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 6b 61 67 69 29 20 70 st-data.((_backend.gptel-kagi).p
17c00 72 6f 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 rompts)..."JSON.encode.PROMPTS.f
17c20 6f 72 20 4b 61 67 69 2e 22 0a 20 20 28 70 63 61 73 65 2d 65 78 68 61 75 73 74 69 76 65 20 28 67 or.Kagi."...(pcase-exhaustive.(g
17c40 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 6e 61 6d 65 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 29 0a 20 20 ptel--model-name.gptel-model)...
17c60 20 20 28 22 66 61 73 74 67 70 74 22 0a 20 20 20 20 20 60 28 2c 40 70 72 6f 6d 70 74 73 20 3a 77 ..("fastgpt"......`(,@prompts.:w
17c80 65 62 5f 73 65 61 72 63 68 20 74 20 3a 63 61 63 68 65 20 74 29 29 0a 20 20 20 20 28 28 61 6e 64 eb_search.t.:cache.t)).....((and
17ca0 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 22 .model.(guard.(string-prefix-p."
17cc0 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 60 28 2c 40 70 72 6f summarize".model)))......`(,@pro
17ce0 6d 70 74 73 20 3a 65 6e 67 69 6e 65 20 2c 28 73 75 62 73 74 72 69 6e 67 20 6d 6f 64 65 6c 20 31 mpts.:engine.,(substring.model.1
17d00 30 29 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 0)))))..(cl-defmethod.gptel--par
17d20 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 6b 61 67 69 29 se-buffer.((_backend.gptel-kagi)
17d40 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 65 74 20 .&optional._max-entries)...(let.
17d60 28 28 75 72 6c 20 28 6f 72 20 28 74 68 69 6e 67 2d 61 74 2d 70 6f 69 6e 74 20 27 75 72 6c 29 0a ((url.(or.(thing-at-point.'url).
17d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 65 74 2d 74 65 78 74 2d 70 72 6f 70 65 .................(get-text-prope
17da0 72 74 79 20 28 70 6f 69 6e 74 29 20 27 73 68 72 2d 75 72 6c 29 0a 20 20 20 20 20 20 20 20 20 20 rty.(point).'shr-url)...........
17dc0 20 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 .......(get-text-property.(point
17de0 29 20 27 69 6d 61 67 65 2d 75 72 6c 29 29 29 0a 20 20 20 20 20 20 20 20 3b 3b 20 28 66 69 6c 65 ).'image-url))).........;;.(file
17e00 6e 61 6d 65 20 28 74 68 69 6e 67 2d 61 74 2d 70 6f 69 6e 74 20 27 65 78 69 73 74 69 6e 67 2d 66 name.(thing-at-point.'existing-f
17e20 69 6c 65 6e 61 6d 65 29 29 20 3b 6e 6f 20 66 69 6c 65 20 75 70 6c 6f 61 64 20 73 75 70 70 6f 72 ilename)).;no.file.upload.suppor
17e40 74 20 79 65 74 0a 20 20 20 20 20 20 20 20 28 70 72 6f 70 20 28 74 65 78 74 2d 70 72 6f 70 65 72 t.yet.........(prop.(text-proper
17e60 74 79 2d 73 65 61 72 63 68 2d 62 61 63 6b 77 61 72 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ty-search-backward..............
17e80 20 20 27 67 70 74 65 6c 20 27 72 65 73 70 6f 6e 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ..'gptel.'response..............
17ea0 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 78 20 ..(when.(get-char-property.(max.
17ec0 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 20 20 (point-min).(1-.(point))).......
17ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
17f00 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 74 29 29 29 29 ..'gptel)..................t))))
17f20 0a 20 20 20 20 28 69 66 20 28 61 6e 64 20 75 72 6c 20 28 73 74 72 69 6e 67 2d 70 72 65 66 69 78 .....(if.(and.url.(string-prefix
17f40 2d 70 20 22 73 75 6d 6d 61 72 69 7a 65 22 20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 6e 61 6d -p."summarize".(gptel--model-nam
17f60 65 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 29 29 29 0a 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 3a e.gptel-model))).........(list.:
17f80 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 6f 72 20 67 70 74 65 url.url).......(if.(and.(or.gpte
17fa0 6c 2d 6d 6f 64 65 20 67 70 74 65 6c 2d 74 72 61 63 6b 2d 72 65 73 70 6f 6e 73 65 29 0a 20 20 20 l-mode.gptel-track-response)....
17fc0 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 70 2d 6d 61 74 63 68 2d 70 20 70 72 6f 70 29 0a ............(prop-match-p.prop).
17fe0 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 76 61 6c 75 65 ...............(prop-match-value
18000 20 70 72 6f 70 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 75 73 65 72 2d 65 72 72 6f 72 20 22 4e .prop))...........(user-error."N
18020 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 20 20 20 20 20 28 o.user.prompt.found!").........(
18040 6c 65 74 20 28 28 70 72 6f 6d 70 74 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 let.((prompts................(if
18060 20 28 6f 72 20 67 70 74 65 6c 2d 6d 6f 64 65 20 67 70 74 65 6c 2d 74 72 61 63 6b 2d 72 65 73 70 .(or.gptel-mode.gptel-track-resp
18080 6f 6e 73 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 20 28 67 70 onse)....................(or.(gp
180a0 74 65 6c 2d 2d 74 72 69 6d 2d 70 72 65 66 69 78 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 tel--trim-prefixes..............
180c0 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 6f 2d ...........(buffer-substring-no-
180e0 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 67 69 6e 6e 69 6e 67 properties.(prop-match-beginning
18100 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 20 20 20 .prop)..........................
18120 20 20 20 20 20 20 20 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 ...............................(
18140 70 72 6f 70 2d 6d 61 74 63 68 2d 65 6e 64 20 70 72 6f 70 29 29 29 0a 20 20 20 20 20 20 20 20 20 prop-match-end.prop)))..........
18160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .............."")...............
18180 20 20 20 28 73 74 72 69 6e 67 2d 74 72 69 6d 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e ...(string-trim.(buffer-substrin
181a0 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28 70 6f 69 g-no-properties.(point-min).(poi
181c0 6e 74 2d 6d 61 78 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 nt-max))))))...........(pcase-ex
181e0 68 61 75 73 74 69 76 65 20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 6e 61 6d 65 20 67 70 74 65 haustive.(gptel--model-name.gpte
18200 6c 2d 6d 6f 64 65 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 22 66 61 73 74 67 70 74 22 20 l-model).............("fastgpt".
18220 28 73 65 74 71 20 70 72 6f 6d 70 74 73 20 28 6c 69 73 74 20 3a 71 75 65 72 79 20 28 69 66 20 28 (setq.prompts.(list.:query.(if.(
18240 70 72 6f 70 2d 6d 61 74 63 68 2d 70 20 70 72 6f 70 29 20 70 72 6f 6d 70 74 73 20 22 22 29 29 29 prop-match-p.prop).prompts."")))
18260 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 28 61 6e 64 20 6d 6f 64 65 6c 20 28 67 75 61 72 64 ).............((and.model.(guard
18280 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 6d 6f .(string-prefix-p."summarize".mo
182a0 64 65 6c 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 49 66 20 74 68 65 20 65 6e del)))..............;;.If.the.en
182c0 74 69 72 65 20 63 6f 6e 74 65 6e 74 73 20 6f 66 20 74 68 65 20 70 72 6f 6d 70 74 20 6c 6f 6f 6b tire.contents.of.the.prompt.look
182e0 73 20 6c 69 6b 65 20 61 20 75 72 6c 2c 20 73 65 6e 64 20 74 68 65 20 75 72 6c 0a 20 20 20 20 20 s.like.a.url,.send.the.url......
18300 20 20 20 20 20 20 20 20 3b 3b 20 45 6c 73 65 20 73 65 6e 64 20 74 68 65 20 74 65 78 74 20 6f 66 ........;;.Else.send.the.text.of
18320 20 74 68 65 20 72 65 67 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 70 .the.region..............(setq.p
18340 72 6f 6d 70 74 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 2d 6c 65 rompts....................(if-le
18360 74 2a 20 28 28 28 70 72 6f 70 2d 6d 61 74 63 68 2d 70 20 70 72 6f 70 29 29 0a 20 20 20 20 20 20 t*.(((prop-match-p.prop)).......
18380 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 6e 67 69 6e 65 20 28 .......................(engine.(
183a0 73 75 62 73 74 72 69 6e 67 20 6d 6f 64 65 6c 20 31 30 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 substring.model.10)))...........
183c0 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 49 74 27 73 20 61 20 72 65 67 69 6f 6e 20 6f 66 .............;;.It's.a.region.of
183e0 20 74 65 78 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 28 6c 69 .text........................(li
18400 73 74 20 3a 74 65 78 74 20 70 72 6f 6d 70 74 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 st.:text.prompts)...............
18420 20 20 20 20 20 20 20 22 22 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 70 72 6f 6d 70 74 73 29 .......""))))...........prompts)
18440 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 77 72 61 70 2d ))))..(cl-defmethod.gptel--wrap-
18460 75 73 65 72 2d 70 72 6f 6d 70 74 20 28 28 5f 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 6b 61 67 user-prompt.((_backend.gptel-kag
18480 69 29 20 70 72 6f 6d 70 74 73 29 0a 20 20 28 63 6f 6e 64 0a 20 20 20 28 28 70 6c 69 73 74 2d 67 i).prompts)...(cond....((plist-g
184a0 65 74 20 70 72 6f 6d 70 74 73 20 3a 75 72 6c 29 0a 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 49 et.prompts.:url).....(message."I
184c0 67 6e 6f 72 69 6e 67 20 67 70 74 65 6c 20 63 6f 6e 74 65 78 74 20 66 6f 72 20 55 52 4c 20 73 75 gnoring.gptel.context.for.URL.su
184e0 6d 6d 61 72 79 20 72 65 71 75 65 73 74 2e 22 29 29 0a 20 20 20 28 28 70 6c 69 73 74 2d 67 65 74 mmary.request."))....((plist-get
18500 20 70 72 6f 6d 70 74 73 20 3a 71 75 65 72 79 29 0a 20 20 20 20 28 63 6c 2d 63 61 6c 6c 66 20 67 .prompts.:query).....(cl-callf.g
18520 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 77 72 61 70 20 28 70 6c 69 73 74 2d 67 65 74 20 70 72 ptel-context--wrap.(plist-get.pr
18540 6f 6d 70 74 73 20 3a 71 75 65 72 79 29 29 29 0a 20 20 20 28 28 70 6c 69 73 74 2d 67 65 74 20 70 ompts.:query)))....((plist-get.p
18560 72 6f 6d 70 74 73 20 3a 74 65 78 74 29 0a 20 20 20 20 28 63 6c 2d 63 61 6c 6c 66 20 67 70 74 65 rompts.:text).....(cl-callf.gpte
18580 6c 2d 63 6f 6e 74 65 78 74 2d 2d 77 72 61 70 20 28 70 6c 69 73 74 2d 67 65 74 20 70 72 6f 6d 70 l-context--wrap.(plist-get.promp
185a0 74 73 20 3a 74 65 78 74 29 29 29 29 29 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a 28 63 ts.:text)))))..;;;###autoload.(c
185c0 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 6e 61 6d l-defun.gptel-make-kagi.....(nam
185e0 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 20 20 20 e.&key.curl-args.stream.key.....
18600 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 20 20 20 ......(host."kagi.com").........
18620 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 6f 72 69 ..(header.(lambda.().`(("Authori
18640 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 74 65 6c zation"...,(concat."Bot.".(gptel
18660 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 20 28 6d --get-api-key))))))...........(m
18680 6f 64 65 6c 73 20 27 28 28 66 61 73 74 67 70 74 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 odels.'((fastgpt.:capabilities.(
186a0 6e 6f 73 79 73 74 65 6d 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 nosystem)).....................(
186c0 73 75 6d 6d 61 72 69 7a 65 3a 63 65 63 69 6c 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 6e summarize:cecil.:capabilities.(n
186e0 6f 73 79 73 74 65 6d 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 osystem)).....................(s
18700 75 6d 6d 61 72 69 7a 65 3a 61 67 6e 65 73 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 6e 6f ummarize:agnes.:capabilities.(no
18720 73 79 73 74 65 6d 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 75 system)).....................(su
18740 6d 6d 61 72 69 7a 65 3a 64 61 70 68 6e 65 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 6e 6f mmarize:daphne.:capabilities.(no
18760 73 79 73 74 65 6d 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 75 system)).....................(su
18780 6d 6d 61 72 69 7a 65 3a 6d 75 72 69 65 6c 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 6e 6f mmarize:muriel.:capabilities.(no
187a0 73 79 73 74 65 6d 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 74 6f 63 6f 6c 20 22 system))))...........(protocol."
187c0 68 74 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 https")...........(endpoint."/ap
187e0 69 2f 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 i/v0/"))..."Register.a.Kagi.Fast
18800 47 50 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 GPT.backend.for.gptel.with.NAME.
18820 0a 0a 4b 65 79 77 6f 72 64 20 61 72 67 75 6d 65 6e 74 73 3a 0a 0a 43 55 52 4c 2d 41 52 47 53 20 ..Keyword.arguments:..CURL-ARGS.
18840 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 61 64 64 69 74 69 6f 6e (optional).is.a.list.of.addition
18860 61 6c 20 43 75 72 6c 20 61 72 67 75 6d 65 6e 74 73 2e 0a 0a 48 4f 53 54 20 69 73 20 74 68 65 20 al.Curl.arguments...HOST.is.the.
18880 4b 61 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 Kagi.host.(with.port),.defaults.
188a0 74 6f 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 to.\"kagi.com\"...MODELS.is.a.li
188c0 73 74 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 st.of.available.Kagi.models:.onl
188e0 79 20 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 y.fastgpt.is.supported...STREAM.
18900 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 6d 69 6e 67 is.a.boolean.to.toggle.streaming
18920 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 65 2e 20 20 .responses,.defaults.to.false...
18940 4b 61 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 Kagi.does.not.support.a.streamin
18960 67 20 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 g.API.yet...PROTOCOL.(optional).
18980 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 74 70 73 20 62 79 specifies.the.protocol,.https.by
189a0 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 6e 61 6c 29 20 69 .default...ENDPOINT.(optional).i
189c0 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 70 6c 65 74 69 6f s.the.API.endpoint.for.completio
189e0 6e 73 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 ns,.defaults.to.\"/api/v0/fastgp
18a00 74 5c 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 t\"...HEADER.(optional).is.for.a
18a20 64 64 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 dditional.headers.to.send.with.e
18a40 61 63 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 ach.request...It.should.be.an.al
18a60 69 73 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 ist.or.a.function.that.retuns.an
18a80 0a 61 6c 69 73 74 2c 20 6c 69 6b 65 3a 0a 20 28 28 5c 22 43 6f 6e 74 65 6e 74 2d 54 79 70 65 5c .alist,.like:..((\"Content-Type\
18aa0 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 29 0a 0a 4b 45 59 20 "...\"application/json\"))..KEY.
18ac0 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 77 68 6f 73 65 20 76 (optional).is.a.variable.whose.v
18ae0 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 75 6e 63 74 69 6f 6e alue.is.the.API.key,.or.function
18b00 20 74 68 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 .that.returns.the.key...Example:
18b20 0a 2d 2d 2d 2d 2d 2d 2d 0a 0a 20 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 6b 61 67 69 20 5c 22 4b 61 .-------...(gptel-make-kagi.\"Ka
18b40 67 69 5c 22 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 gi\".:key.my-kagi-key)"...(decla
18b60 72 65 20 28 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 re.(indent.1))...stream.........
18b80 20 20 20 20 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 .......................;Silence.
18ba0 62 79 74 65 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 byte-compiler...(let.((backend.(
18bc0 67 70 74 65 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 gptel--make-kagi................
18be0 20 20 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 ...:curl-args.curl-args.........
18c00 20 20 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 ..........:name.name............
18c20 20 20 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 .......:host.host...............
18c40 20 20 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 ....:header.header..............
18c60 20 20 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 .....:key.key...................
18c80 3a 6d 6f 64 65 6c 73 20 28 67 70 74 65 6c 2d 2d 70 72 6f 63 65 73 73 2d 6d 6f 64 65 6c 73 20 6d :models.(gptel--process-models.m
18ca0 6f 64 65 6c 73 29 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 odels)...................:protoc
18cc0 6f 6c 20 70 72 6f 74 6f 63 6f 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 65 ol.protocol...................:e
18ce0 6e 64 70 6f 69 6e 74 20 65 6e 64 70 6f 69 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ndpoint.endpoint................
18d00 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 61 6d 62 64 ...:url...................(lambd
18d20 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 6e 63 61 74 a.().....................(concat
18d40 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 74 0a 20 20 .protocol."://".host.endpoint...
18d60 20 20 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 66 20 28 65 ..........................(if.(e
18d80 71 75 61 6c 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 20 27 66 61 73 74 67 70 74 29 0a 20 20 20 20 20 qual.gptel-model.'fastgpt)......
18da0 20 20 20 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 66 61 73 74 ..........................."fast
18dc0 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 28 70 72 6f 67 gpt"."summarize")))))).....(prog
18de0 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
18e00 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.....
18e20 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
18e40 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 64 29 29 29 al)...................backend)))
18e60 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 3b 20 67 70 74 )..(provide.'gptel-kagi).;;;.gpt
18e80 65 6c 2d 6b 61 67 69 2e 65 6c 20 65 6e 64 73 20 68 65 72 65 0a 0a 3b 3b 20 4c 6f 63 61 6c 20 56 el-kagi.el.ends.here..;;.Local.V
18ea0 61 72 69 61 62 6c 65 73 3a 0a 3b 3b 20 62 79 74 65 2d 63 6f 6d 70 69 6c 65 2d 77 61 72 6e 69 6e ariables:.;;.byte-compile-warnin
18ec0 67 73 3a 20 28 6e 6f 74 20 64 6f 63 73 74 72 69 6e 67 73 29 0a 3b 3b 20 45 6e 64 3a 0a 00 00 00 gs:.(not.docstrings).;;.End:....
18ee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18f00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18f20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18f60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
19000 67 70 74 65 6c 2d 30 2e 39 2e 39 2f 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2e 65 6c 00 00 00 00 gptel-0.9.9/gptel-bedrock.el....
19020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
19040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
19060 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
19080 30 30 37 36 36 33 36 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 34 33 37 31 00 20 30 00 00 00 0076636.00000000000.014371..0...
190a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
190c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
190e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
19100 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...................
19120 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...................
19140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
19160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
19180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
191a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
191c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
191e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
19200 3b 3b 3b 20 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2e 65 6c 20 2d 2d 2d 20 41 57 53 20 42 65 64 ;;;.gptel-bedrock.el.---.AWS.Bed
19220 72 6f 63 6b 20 73 75 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 rock.support.for.gptel..-*-.lexi
19240 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 68 cal-binding:.t;.-*-..;;.Copyrigh
19260 74 20 28 43 29 20 32 30 32 35 20 4b 61 72 74 68 69 6b 20 43 68 69 6b 6d 61 67 61 6c 75 72 0a 0a t.(C).2025.Karthik.Chikmagalur..
19280 3b 3b 20 4b 65 79 77 6f 72 64 73 3a 20 63 6f 6d 6d 2c 20 63 6f 6e 76 65 6e 69 65 6e 63 65 0a 0a ;;.Keywords:.comm,.convenience..
192a0 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 77 61 72 65 ;;.This.program.is.free.software
192c0 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 64 2f 6f 72 ;.you.can.redistribute.it.and/or
192e0 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 73 20 6f 66 .modify.;;.it.under.the.terms.of
19300 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 73 65 20 .the.GNU.General.Public.License.
19320 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 53 6f 66 74 as.published.by.;;.the.Free.Soft
19340 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 69 6f 6e 20 ware.Foundation,.either.version.
19360 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 79 6f 75 72 3.of.the.License,.or.;;.(at.your
19380 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 0a 3b 3b 20 .option).any.later.version...;;.
193a0 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 69 6e 20 74 This.program.is.distributed.in.t
193c0 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 75 6c 2c 0a he.hope.that.it.will.be.useful,.
193e0 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 20 77 69 74 ;;.but.WITHOUT.ANY.WARRANTY;.wit
19400 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 74 79 20 6f hout.even.the.implied.warranty.o
19420 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 45 53 53 20 f.;;.MERCHANTABILITY.or.FITNESS.
19440 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 65 65 20 74 FOR.A.PARTICULAR.PURPOSE...See.t
19460 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 65 6e 73 65 he.;;.GNU.General.Public.License
19480 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 68 6f 75 6c .for.more.details...;;.You.shoul
194a0 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 65 20 47 4e d.have.received.a.copy.of.the.GN
194c0 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 61 6c 6f 6e U.General.Public.License.;;.alon
194e0 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 2c 20 73 65 g.with.this.program...If.not,.se
19500 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 73 65 73 2f e.<https://www.gnu.org/licenses/
19520 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 73 20 66 69 6c >...;;;.Commentary:..;;.This.fil
19540 65 20 61 64 64 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20 41 57 53 20 42 65 64 72 6f 63 6b 20 74 e.adds.support.for.AWS.Bedrock.t
19560 6f 20 67 70 74 65 6c 2e 20 20 44 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 74 68 65 20 o.gptel...Documentation.for.the.
19580 72 65 71 75 65 73 74 20 64 61 74 61 20 61 6e 64 20 74 68 65 0a 3b 3b 20 72 65 73 70 6f 6e 73 65 request.data.and.the.;;.response
195a0 20 70 61 79 6c 6f 61 64 73 20 63 61 6e 20 62 65 20 66 6f 75 6e 64 20 61 74 20 74 68 65 73 65 20 .payloads.can.be.found.at.these.
195c0 74 77 6f 20 6c 69 6e 6b 73 3a 0a 3b 3b 20 2a 20 68 74 74 70 73 3a 2f 2f 64 6f 63 73 2e 61 77 73 two.links:.;;.*.https://docs.aws
195e0 2e 61 6d 61 7a 6f 6e 2e 63 6f 6d 2f 62 65 64 72 6f 63 6b 2f 6c 61 74 65 73 74 2f 41 50 49 52 65 .amazon.com/bedrock/latest/APIRe
19600 66 65 72 65 6e 63 65 2f 41 50 49 5f 72 75 6e 74 69 6d 65 5f 43 6f 6e 76 65 72 73 65 2e 68 74 6d ference/API_runtime_Converse.htm
19620 6c 0a 3b 3b 20 2a 20 68 74 74 70 73 3a 2f 2f 64 6f 63 73 2e 61 77 73 2e 61 6d 61 7a 6f 6e 2e 63 l.;;.*.https://docs.aws.amazon.c
19640 6f 6d 2f 62 65 64 72 6f 63 6b 2f 6c 61 74 65 73 74 2f 41 50 49 52 65 66 65 72 65 6e 63 65 2f 41 om/bedrock/latest/APIReference/A
19660 50 49 5f 72 75 6e 74 69 6d 65 5f 43 6f 6e 76 65 72 73 65 53 74 72 65 61 6d 2e 68 74 6d 6c 0a 0a PI_runtime_ConverseStream.html..
19680 3b 3b 3b 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 ;;;.Code:.(require.'cl-lib).(req
196a0 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 6c 29 0a 28 72 65 71 uire.'map).(require.'gptel).(req
196c0 75 69 72 65 20 27 6d 61 69 6c 2d 70 61 72 73 65 29 0a 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 uire.'mail-parse)..(declare-func
196e0 74 69 6f 6e 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 63 6f 6c 6c 65 63 74 2d 6d 65 64 69 tion.gptel-context--collect-medi
19700 61 20 22 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 a."gptel-context").(declare-func
19720 74 69 6f 6e 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 77 72 61 70 20 22 67 70 74 65 6c 2d tion.gptel-context--wrap."gptel-
19740 63 6f 6e 74 65 78 74 22 29 0a 0a 28 63 6c 2d 64 65 66 73 74 72 75 63 74 20 28 67 70 74 65 6c 2d context")..(cl-defstruct.(gptel-
19760 62 65 64 72 6f 63 6b 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 bedrock.(:constructor.gptel--mak
19780 65 2d 62 65 64 72 6f 63 6b 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 e-bedrock)......................
197a0 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 20 20 ........(:copier.nil)...........
197c0 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 20 67 70 74 ...................(:include.gpt
197e0 65 6c 2d 62 61 63 6b 65 6e 64 29 29 0a 20 20 6d 6f 64 65 6c 2d 72 65 67 69 6f 6e 29 0a 0a 28 64 el-backend))...model-region)..(d
19800 65 66 63 6f 6e 73 74 20 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 70 72 6f 6d 70 74 2d 74 79 efconst.gptel-bedrock--prompt-ty
19820 70 65 0a 20 20 3b 3b 20 46 6f 72 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 70 75 72 70 6f 73 pe...;;.For.documentation.purpos
19840 65 73 20 6f 6e 6c 79 20 2d 2d 20 74 68 69 73 20 64 65 73 63 72 69 62 65 73 20 74 68 65 20 74 79 es.only.--.this.describes.the.ty
19860 70 65 20 6f 66 20 70 72 6f 6d 70 74 20 6f 62 6a 65 63 74 73 20 74 68 61 74 20 67 65 74 20 70 61 pe.of.prompt.objects.that.get.pa
19880 73 73 65 64 0a 20 20 3b 3b 20 61 72 6f 75 6e 64 2e 20 68 74 74 70 73 3a 2f 2f 64 6f 63 73 2e 61 ssed...;;.around..https://docs.a
198a0 77 73 2e 61 6d 61 7a 6f 6e 2e 63 6f 6d 2f 62 65 64 72 6f 63 6b 2f 6c 61 74 65 73 74 2f 41 50 49 ws.amazon.com/bedrock/latest/API
198c0 52 65 66 65 72 65 6e 63 65 2f 41 50 49 5f 72 75 6e 74 69 6d 65 5f 4d 65 73 73 61 67 65 2e 68 74 Reference/API_runtime_Message.ht
198e0 6d 6c 0a 20 20 27 28 70 6c 69 73 74 0a 20 20 20 20 3a 72 6f 6c 65 20 28 6d 65 6d 62 65 72 20 22 ml...'(plist.....:role.(member."
19900 75 73 65 72 22 20 22 61 73 73 69 73 74 61 6e 74 22 29 0a 20 20 20 20 3a 63 6f 6e 74 65 6e 74 20 user"."assistant").....:content.
19920 28 61 72 72 61 79 20 28 6f 72 20 28 70 6c 69 73 74 20 3a 74 65 78 74 20 73 74 72 69 6e 67 29 0a (array.(or.(plist.:text.string).
19940 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 6c 69 73 74 20 3a ........................(plist.:
19960 69 6d 61 67 65 20 28 3a 66 6f 72 6d 61 74 20 28 6d 65 6d 62 65 72 20 22 70 6e 67 22 20 22 6a 70 image.(:format.(member."png"."jp
19980 65 67 22 20 22 67 69 66 22 20 22 77 65 62 70 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 eg"."gif"."webp")...............
199a0 20 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 73 6f 75 72 63 65 .........................:source
199c0 20 28 70 6c 69 73 74 20 3a 62 79 74 65 73 20 73 74 72 69 6e 67 29 29 29 20 3b 20 62 79 74 65 73 .(plist.:bytes.string))).;.bytes
199e0 20 69 73 20 62 36 34 20 65 6e 63 6f 64 65 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .is.b64.encoded.................
19a00 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 20 3a 64 6f 63 75 6d 65 6e 74 20 28 3a 66 6f 72 6d 61 ........(plist.:document.(:forma
19a20 74 20 28 6d 65 6d 62 65 72 20 22 70 64 66 22 20 22 63 73 76 22 20 22 64 6f 63 22 20 22 64 6f 63 t.(member."pdf"."csv"."doc"."doc
19a40 78 22 20 22 78 6c 73 22 20 22 78 6c 73 78 22 20 22 68 74 6d 6c 22 20 22 74 78 74 22 20 22 6d 64 x"."xls"."xlsx"."html"."txt"."md
19a60 22 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 ")..............................
19a80 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6e 61 6d 65 20 73 74 72 69 6e 67 0a 20 20 20 20 20 20 .............:name.string.......
19aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
19ac0 20 20 20 20 3a 73 6f 75 72 63 65 20 28 70 6c 69 73 74 20 3a 62 79 74 65 73 20 73 74 72 69 6e 67 ....:source.(plist.:bytes.string
19ae0 29 29 29 20 3b 20 62 79 74 65 73 20 69 73 20 62 36 34 20 65 6e 63 6f 64 65 64 0a 20 20 20 20 20 ))).;.bytes.is.b64.encoded......
19b00 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 20 3a 74 6f 6f 6c 55 ...................(plist.:toolU
19b20 73 65 20 28 70 6c 69 73 74 20 3a 69 6e 70 75 74 20 61 6e 79 20 3a 6e 61 6d 65 20 73 74 72 69 6e se.(plist.:input.any.:name.strin
19b40 67 20 3a 74 6f 6f 6c 55 73 65 49 64 20 73 74 72 69 6e 67 29 29 0a 20 20 20 20 20 20 20 20 20 20 g.:toolUseId.string))...........
19b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 20 3a 74 6f 6f 6c 52 65 73 75 6c 74 ..............(plist.:toolResult
19b80 20 28 70 6c 69 73 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 .(plist.........................
19ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 74 6f 6f 6c 55 73 65 49 64 20 73 ....................:toolUseId.s
19bc0 74 72 69 6e 67 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 tring...........................
19be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 73 74 61 74 75 73 20 28 6d 65 6d 62 65 ..................:status.(membe
19c00 72 20 22 73 75 63 63 65 73 73 22 20 22 65 72 72 6f 72 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 r."success"."error")............
19c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
19c40 20 3b 3b 20 41 57 53 20 61 6c 6c 6f 77 73 20 6d 6f 72 65 20 72 65 73 75 6c 74 20 74 79 70 65 73 .;;.AWS.allows.more.result.types
19c60 20 69 6e 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 .in.............................
19c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 54 6f 6f 6c 52 65 73 75 6c 74 43 6f 6e ................;;.ToolResultCon
19ca0 74 65 6e 74 42 6c 6f 63 6b 2c 20 62 75 74 20 77 65 20 6f 6e 6c 79 20 73 65 6e 64 20 74 65 78 74 tentBlock,.but.we.only.send.text
19cc0 20 72 65 73 75 6c 74 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 .results........................
19ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 6f 6e 74 65 6e 74 20 28 61 .....................:content.(a
19d00 72 72 61 79 20 28 70 6c 69 73 74 20 3a 74 65 78 74 20 73 74 72 69 6e 67 29 29 29 29 29 29 29 29 rray.(plist.:text.string))))))))
19d20 0a 0a 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 ..(cl-defmethod.gptel--request-d
19d40 61 74 61 20 28 28 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 29 20 70 72 6f ata.((backend.gptel-bedrock).pro
19d60 6d 70 74 73 29 0a 20 20 22 50 72 65 70 61 72 65 20 72 65 71 75 65 73 74 20 64 61 74 61 20 66 6f mpts)..."Prepare.request.data.fo
19d80 72 20 41 57 53 20 42 65 64 72 6f 63 6b 20 42 41 43 4b 45 4e 44 20 66 72 6f 6d 20 50 52 4f 4d 50 r.AWS.Bedrock.BACKEND.from.PROMP
19da0 54 53 2e 22 0a 20 20 3b 3b 20 46 69 72 73 74 2c 20 62 75 69 6c 64 20 74 68 65 20 63 6f 72 65 20 TS."...;;.First,.build.the.core.
19dc0 42 65 64 72 6f 63 6b 20 72 65 71 75 65 73 74 20 64 61 74 61 20 73 74 72 75 63 74 75 72 65 2e 0a Bedrock.request.data.structure..
19de0 20 20 28 6c 65 74 20 28 28 62 61 73 65 2d 72 65 71 75 65 73 74 2d 64 61 74 61 0a 20 20 20 20 20 ..(let.((base-request-data......
19e00 20 20 20 20 28 6e 63 6f 6e 63 0a 20 20 20 20 20 20 20 20 20 20 60 28 3a 6d 65 73 73 61 67 65 73 ....(nconc...........`(:messages
19e20 20 5b 2c 40 70 72 6f 6d 70 74 73 5d 20 3a 69 6e 66 65 72 65 6e 63 65 43 6f 6e 66 69 67 20 28 3a .[,@prompts].:inferenceConfig.(:
19e40 6d 61 78 54 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 maxTokens.,(or.gptel-max-tokens.
19e60 35 30 30 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 2d 73 79 500)))...........(when.gptel--sy
19e80 73 74 65 6d 2d 6d 65 73 73 61 67 65 20 60 28 3a 73 79 73 74 65 6d 20 5b 28 3a 74 65 78 74 20 2c stem-message.`(:system.[(:text.,
19ea0 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 29 5d 29 29 0a 20 20 20 20 20 20 gptel--system-message)])).......
19ec0 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 65 20 60 28 3a 74 ....(when.gptel-temperature.`(:t
19ee0 65 6d 70 65 72 61 74 75 72 65 20 2c 67 70 74 65 6c 2d 74 65 6d 70 65 72 61 74 75 72 65 29 29 0a emperature.,gptel-temperature)).
19f00 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 61 6e 64 20 67 70 74 65 6c 2d 75 73 65 2d 74 ..........(when.(and.gptel-use-t
19f20 6f 6f 6c 73 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 60 28 ools.gptel-tools).............`(
19f40 3a 74 6f 6f 6c 43 6f 6e 66 69 67 20 28 3a 74 6f 6f 6c 43 68 6f 69 63 65 20 2c 28 69 66 20 28 65 :toolConfig.(:toolChoice.,(if.(e
19f60 71 20 67 70 74 65 6c 2d 75 73 65 2d 74 6f 6f 6c 73 20 27 66 6f 72 63 65 29 20 27 28 3a 61 6e 79 q.gptel-use-tools.'force).'(:any
19f80 20 27 28 29 29 20 27 28 3a 61 75 74 6f 20 27 28 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 .'()).'(:auto.'())).............
19fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 74 6f 6f 6c 73 20 2c 28 67 70 74 65 6c 2d 2d 70 ...............:tools.,(gptel--p
19fc0 61 72 73 65 2d 74 6f 6f 6c 73 20 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 29 29 arse-tools.backend.gptel-tools))
19fe0 29 29 29 29 29 0a 0a 20 20 20 20 3b 3b 20 46 69 6e 61 6c 6c 79 2c 20 6d 65 72 67 65 20 61 6c 6c )))))......;;.Finally,.merge.all
1a000 20 70 6f 74 65 6e 74 69 61 6c 20 3a 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 20 73 6f 75 72 63 .potential.:request-params.sourc
1a020 65 73 2e 0a 20 20 20 20 28 67 70 74 65 6c 2d 2d 6d 65 72 67 65 2d 70 6c 69 73 74 73 0a 20 20 20 es......(gptel--merge-plists....
1a040 20 20 62 61 73 65 2d 72 65 71 75 65 73 74 2d 64 61 74 61 20 20 20 20 20 20 20 20 20 20 20 20 20 ..base-request-data.............
1a060 20 20 3b 20 54 68 65 20 63 6f 72 65 20 64 61 74 61 20 77 65 20 6a 75 73 74 20 62 75 69 6c 74 0a ..;.The.core.data.we.just.built.
1a080 20 20 20 20 20 67 70 74 65 6c 2d 2d 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 20 20 20 20 20 20 .....gptel--request-params......
1a0a0 20 20 20 20 20 3b 20 47 6c 6f 62 61 6c 2f 62 75 66 66 65 72 2d 6c 6f 63 61 6c 20 67 70 74 65 6c .....;.Global/buffer-local.gptel
1a0c0 2d 2d 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 0a 20 20 20 20 20 28 67 70 74 65 6c 2d 62 61 63 --request-params......(gptel-bac
1a0e0 6b 65 6e 64 2d 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 20 62 61 63 6b 65 6e 64 29 20 3b 20 46 kend-request-params.backend).;.F
1a100 72 6f 6d 20 60 67 70 74 65 6c 2d 6d 61 6b 65 2d 62 65 64 72 6f 63 6b 60 20 63 61 6c 6c 0a 20 20 rom.`gptel-make-bedrock`.call...
1a120 20 20 20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 20 ...(gptel--model-request-params.
1a140 67 70 74 65 6c 2d 6d 6f 64 65 6c 29 29 29 29 20 3b 20 46 72 6f 6d 20 74 68 65 20 6d 6f 64 65 6c gptel-model)))).;.From.the.model
1a160 27 73 20 70 72 6f 70 65 72 74 69 65 73 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 67 70 74 's.properties..(cl-defmethod.gpt
1a180 65 6c 2d 2d 70 61 72 73 65 2d 74 6f 6f 6c 73 20 28 28 5f 62 61 63 6b 65 6e 64 20 67 70 74 65 6c el--parse-tools.((_backend.gptel
1a1a0 2d 62 65 64 72 6f 63 6b 29 20 74 6f 6f 6c 73 29 0a 20 20 22 50 61 72 73 65 20 54 4f 4f 4c 53 20 -bedrock).tools)..."Parse.TOOLS.
1a1c0 61 6e 64 20 72 65 74 75 72 6e 20 61 20 6c 69 73 74 20 6f 66 20 54 6f 6f 6c 53 70 65 63 69 66 69 and.return.a.list.of.ToolSpecifi
1a1e0 63 61 74 69 6f 6e 20 6f 62 6a 65 63 74 73 2e 0a 0a 54 4f 4f 4c 53 20 69 73 20 61 20 6c 69 73 74 cation.objects...TOOLS.is.a.list
1a200 20 6f 66 20 60 67 70 74 65 6c 2d 74 6f 6f 6c 27 20 73 74 72 75 63 74 73 2c 20 77 68 69 63 68 20 .of.`gptel-tool'.structs,.which.
1a220 73 65 65 2e 22 0a 20 20 20 3b 3b 20 68 74 74 70 73 3a 2f 2f 64 6f 63 73 2e 61 77 73 2e 61 6d 61 see."....;;.https://docs.aws.ama
1a240 7a 6f 6e 2e 63 6f 6d 2f 62 65 64 72 6f 63 6b 2f 6c 61 74 65 73 74 2f 41 50 49 52 65 66 65 72 65 zon.com/bedrock/latest/APIRefere
1a260 6e 63 65 2f 41 50 49 5f 72 75 6e 74 69 6d 65 5f 54 6f 6f 6c 53 70 65 63 69 66 69 63 61 74 69 6f nce/API_runtime_ToolSpecificatio
1a280 6e 2e 68 74 6d 6c 0a 20 20 20 28 6c 65 74 20 28 28 64 65 66 61 75 6c 74 2d 6f 75 74 70 75 74 73 n.html....(let.((default-outputs
1a2a0 20 28 63 6c 2d 63 61 6c 6c 2d 6e 65 78 74 2d 6d 65 74 68 6f 64 29 29 29 20 3b 3b 20 75 73 65 20 .(cl-call-next-method))).;;.use.
1a2c0 6f 70 65 6e 61 69 20 74 6f 6f 6c 2d 70 61 72 73 65 0a 20 20 20 20 20 28 63 6c 2d 6d 61 70 20 27 openai.tool-parse......(cl-map.'
1a2e0 76 65 63 74 6f 72 0a 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 74 6f 6f 6c 20 73 70 65 63 29 vector.......(lambda.(tool.spec)
1a300 0a 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 3a 74 6f 6f 6c 53 70 65 63 0a 20 20 20 20 20 20 20 .........(list.:toolSpec........
1a320 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 20 3a 6e 61 6d .......(list................:nam
1a340 65 20 28 67 70 74 65 6c 2d 74 6f 6f 6c 2d 6e 61 6d 65 20 74 6f 6f 6c 29 0a 20 20 20 20 20 20 20 e.(gptel-tool-name.tool)........
1a360 20 20 20 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 28 67 70 74 65 6c 2d 74 6f 6f 6c ........:description.(gptel-tool
1a380 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 74 6f 6f 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 -description.tool)..............
1a3a0 20 20 3a 69 6e 70 75 74 53 63 68 65 6d 61 20 28 6c 69 73 74 20 3a 6a 73 6f 6e 20 28 70 6c 69 73 ..:inputSchema.(list.:json.(plis
1a3c0 74 2d 67 65 74 20 28 70 6c 69 73 74 2d 67 65 74 20 73 70 65 63 20 3a 66 75 6e 63 74 69 6f 6e 29 t-get.(plist-get.spec.:function)
1a3e0 20 3a 70 61 72 61 6d 65 74 65 72 73 29 29 29 29 29 0a 20 20 20 20 20 20 28 65 6e 73 75 72 65 2d .:parameters))))).......(ensure-
1a400 6c 69 73 74 20 74 6f 6f 6c 73 29 20 64 65 66 61 75 6c 74 2d 6f 75 74 70 75 74 73 29 29 29 0a 0a list.tools).default-outputs)))..
1a420 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
1a440 6e 73 65 20 28 28 5f 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 29 20 72 65 nse.((_backend.gptel-bedrock).re
1a460 73 70 6f 6e 73 65 20 69 6e 66 6f 29 0a 20 20 22 50 61 72 73 65 20 61 20 42 65 64 72 6f 63 6b 20 sponse.info)..."Parse.a.Bedrock.
1a480 28 6e 6f 6e 2d 73 74 72 65 61 6d 69 6e 67 29 20 52 45 53 50 4f 4e 53 45 20 61 6e 64 20 72 65 74 (non-streaming).RESPONSE.and.ret
1a4a0 75 72 6e 20 72 65 73 70 6f 6e 73 65 20 74 65 78 74 2e 0a 0a 4d 75 74 61 74 65 20 73 74 61 74 65 urn.response.text...Mutate.state
1a4c0 20 49 4e 46 4f 20 77 69 74 68 20 72 65 73 70 6f 6e 73 65 20 6d 65 74 61 64 61 74 61 2e 22 0a 20 .INFO.with.response.metadata."..
1a4e0 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 73 74 6f 70 2d 72 65 61 73 6f 6e 20 28 70 .(plist-put.info.:stop-reason.(p
1a500 6c 69 73 74 2d 67 65 74 20 72 65 73 70 6f 6e 73 65 20 3a 73 74 6f 70 52 65 61 73 6f 6e 29 29 0a list-get.response.:stopReason)).
1a520 20 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 69 6e 70 75 74 2d 74 6f 6b 65 6e 73 0a ..(plist-put.info.:input-tokens.
1a540 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 70 2d 6e 65 73 74 65 64 2d 65 6c 74 20 72 65 73 .............(map-nested-elt.res
1a560 70 6f 6e 73 65 20 27 28 3a 75 73 61 67 65 20 3a 69 6e 70 75 74 54 6f 6b 65 6e 73 29 29 29 0a 20 ponse.'(:usage.:inputTokens)))..
1a580 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 6f 75 74 70 75 74 2d 74 6f 6b 65 6e 73 0a .(plist-put.info.:output-tokens.
1a5a0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 70 2d 6e 65 73 74 65 64 2d 65 6c 74 20 72 65 73 .............(map-nested-elt.res
1a5c0 70 6f 6e 73 65 20 27 28 3a 75 73 61 67 65 20 3a 6f 75 74 70 75 74 54 6f 6b 65 6e 73 29 29 29 0a ponse.'(:usage.:outputTokens))).
1a5e0 0a 20 20 28 6c 65 74 2a 20 28 28 6d 65 73 73 61 67 65 20 28 6d 61 70 2d 6e 65 73 74 65 64 2d 65 ...(let*.((message.(map-nested-e
1a600 6c 74 20 72 65 73 70 6f 6e 73 65 20 27 28 3a 6f 75 74 70 75 74 20 3a 6d 65 73 73 61 67 65 29 29 lt.response.'(:output.:message))
1a620 29 0a 20 20 20 20 20 20 20 20 20 28 63 6f 6e 74 65 6e 74 2d 73 74 72 73 20 28 74 68 72 65 61 64 )..........(content-strs.(thread
1a640 2d 6c 61 73 74 20 28 70 6c 69 73 74 2d 67 65 74 20 6d 65 73 73 61 67 65 20 3a 63 6f 6e 74 65 6e -last.(plist-get.message.:conten
1a660 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 20 20 20 20 t)..............................
1a680 20 20 20 20 20 20 20 28 6d 61 70 63 61 72 20 28 6c 61 6d 62 64 61 20 28 63 62 6c 6f 63 6b 29 20 .......(mapcar.(lambda.(cblock).
1a6a0 28 70 6c 69 73 74 2d 67 65 74 20 63 62 6c 6f 63 6b 20 3a 74 65 78 74 29 29 29 0a 20 20 20 20 20 (plist-get.cblock.:text)))......
1a6c0 20 20 20 20 20 20 20 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 ...............................(
1a6e0 64 65 6c 71 20 6e 69 6c 29 29 29 29 0a 20 20 20 20 28 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d delq.nil)))).....(gptel-bedrock-
1a700 2d 72 65 63 6f 72 64 2d 74 6f 6f 6c 2d 75 73 65 20 6d 65 73 73 61 67 65 20 69 6e 66 6f 29 0a 20 -record-tool-use.message.info)..
1a720 20 20 20 28 61 6e 64 20 63 6f 6e 74 65 6e 74 2d 73 74 72 73 20 28 61 70 70 6c 79 20 23 27 63 6f ...(and.content-strs.(apply.#'co
1a740 6e 63 61 74 20 63 6f 6e 74 65 6e 74 2d 73 74 72 73 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 ncat.content-strs))))..(defun.gp
1a760 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 72 65 63 6f 72 64 2d 74 6f 6f 6c 2d 75 73 65 20 28 6d 65 tel-bedrock--record-tool-use.(me
1a780 73 73 61 67 65 20 69 6e 66 6f 29 0a 20 20 22 49 66 20 4d 45 53 53 41 47 45 20 68 61 73 20 74 6f ssage.info)..."If.MESSAGE.has.to
1a7a0 6f 6c 20 75 73 65 20 72 65 71 75 65 73 74 73 2c 20 73 61 76 65 20 74 68 6f 73 65 20 74 6f 20 49 ol.use.requests,.save.those.to.I
1a7c0 4e 46 4f 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 63 6f 6e 74 65 6e 74 20 28 70 6c 69 73 74 2d 67 NFO."...(let*.((content.(plist-g
1a7e0 65 74 20 6d 65 73 73 61 67 65 20 3a 63 6f 6e 74 65 6e 74 29 29 0a 20 20 20 20 20 20 20 20 20 28 et.message.:content))..........(
1a800 74 6f 6f 6c 2d 75 73 65 2d 62 6c 6f 63 6b 73 20 28 63 6c 2d 72 65 6d 6f 76 65 2d 69 66 2d 6e 6f tool-use-blocks.(cl-remove-if-no
1a820 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 28 6c 61 t............................(la
1a840 6d 62 64 61 20 28 63 62 6c 6f 63 6b 29 20 28 70 6c 69 73 74 2d 67 65 74 20 63 62 6c 6f 63 6b 20 mbda.(cblock).(plist-get.cblock.
1a860 3a 74 6f 6f 6c 55 73 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 :toolUse))......................
1a880 20 20 20 20 20 20 63 6f 6e 74 65 6e 74 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 74 6f 6f 6c 2d ......content))).....(when.tool-
1a8a0 75 73 65 2d 62 6c 6f 63 6b 73 0a 20 20 20 20 20 20 28 63 6c 2d 63 61 6c 6c 66 20 76 63 6f 6e 63 use-blocks.......(cl-callf.vconc
1a8c0 61 74 20 28 70 6c 69 73 74 2d 67 65 74 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 64 at.(plist-get.(plist-get.info.:d
1a8e0 61 74 61 29 20 3a 6d 65 73 73 61 67 65 73 29 20 28 6c 69 73 74 20 6d 65 73 73 61 67 65 29 29 0a ata).:messages).(list.message)).
1a900 0a 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 74 6f 6f 6c 2d 75 73 65 .......(plist-put.info.:tool-use
1a920 0a 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 6d 62 64 ..................(mapcar.(lambd
1a940 61 20 28 62 6c 6f 63 6b 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 a.(block).......................
1a960 20 20 20 20 20 28 6c 65 74 20 28 28 74 6f 6f 6c 2d 75 73 65 20 28 70 6c 69 73 74 2d 67 65 74 20 .....(let.((tool-use.(plist-get.
1a980 62 6c 6f 63 6b 20 3a 74 6f 6f 6c 55 73 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 block.:toolUse)))...............
1a9a0 20 20 20 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 ...............(list............
1a9c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6e 61 6d 65 20 28 70 6c 69 73 74 2d ...................:name.(plist-
1a9e0 67 65 74 20 74 6f 6f 6c 2d 75 73 65 20 3a 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 get.tool-use.:name).............
1aa00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 61 72 67 73 20 28 70 6c 69 73 74 2d 67 ..................:args.(plist-g
1aa20 65 74 20 74 6f 6f 6c 2d 75 73 65 20 3a 69 6e 70 75 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 et.tool-use.:input).............
1aa40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 69 64 20 28 70 6c 69 73 74 2d 67 65 74 ..................:id.(plist-get
1aa60 20 74 6f 6f 6c 2d 75 73 65 20 3a 74 6f 6f 6c 55 73 65 49 64 29 29 29 29 0a 20 20 20 20 20 20 20 .tool-use.:toolUseId))))........
1aa80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 6f 6c 2d 75 73 65 2d 62 6c 6f 63 6b ..................tool-use-block
1aaa0 73 29 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 s)))))..(cl-defmethod.gptel--par
1aac0 73 65 2d 6c 69 73 74 20 28 28 5f 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b se-list.((_backend.gptel-bedrock
1aae0 29 20 70 72 6f 6d 70 74 2d 73 74 72 69 6e 67 73 29 0a 20 20 22 43 72 65 61 74 65 20 61 20 6c 69 ).prompt-strings)..."Create.a.li
1ab00 73 74 20 6f 66 20 70 72 6f 6d 70 74 20 6f 62 6a 65 63 74 73 20 66 72 6f 6d 20 50 52 4f 4d 50 54 st.of.prompt.objects.from.PROMPT
1ab20 2d 53 54 52 49 4e 47 53 2e 0a 0a 41 73 73 75 6d 65 73 20 74 68 69 73 20 69 73 20 61 20 63 6f 6e -STRINGS...Assumes.this.is.a.con
1ab40 76 65 72 73 61 74 69 6f 6e 20 77 69 74 68 20 61 6c 74 65 72 6e 61 74 69 6e 67 20 72 6f 6c 65 73 versation.with.alternating.roles
1ab60 2e 22 0a 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 74 65 78 74 20 69 6e 20 70 72 6f 6d 70 74 ."...(cl-loop.for.text.in.prompt
1ab80 2d 73 74 72 69 6e 67 73 0a 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 72 6f 6c 65 20 3d 20 74 -strings............for.role.=.t
1aba0 20 74 68 65 6e 20 28 6e 6f 74 20 72 6f 6c 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 69 66 20 74 .then.(not.role)............if.t
1abc0 65 78 74 20 63 6f 6c 6c 65 63 74 0a 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 3a 72 6f ext.collect............(list.:ro
1abe0 6c 65 20 28 69 66 20 72 6f 6c 65 20 22 75 73 65 72 22 20 22 61 73 73 69 73 74 61 6e 74 22 29 0a le.(if.role."user"."assistant").
1ac00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 6f 6e 74 65 6e 74 20 60 5b 28 3a 74 65 .................:content.`[(:te
1ac20 78 74 20 2c 74 65 78 74 29 5d 29 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 67 70 74 xt.,text)])))..(cl-defmethod.gpt
1ac40 65 6c 2d 2d 77 72 61 70 2d 75 73 65 72 2d 70 72 6f 6d 70 74 20 28 28 5f 62 61 63 6b 65 6e 64 20 el--wrap-user-prompt.((_backend.
1ac60 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 29 20 70 72 6f 6d 70 74 73 20 26 6f 70 74 69 6f 6e 61 6c gptel-bedrock).prompts.&optional
1ac80 20 69 6e 6a 65 63 74 2d 6d 65 64 69 61 29 0a 20 20 22 49 6e 6a 65 63 74 20 63 6f 6e 74 65 78 74 .inject-media)..."Inject.context
1aca0 20 69 6e 74 6f 20 61 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 2e 0a 0a 50 52 4f 4d 50 54 53 20 69 .into.a.conversation...PROMPTS.i
1acc0 73 20 6c 69 73 74 20 6f 66 20 70 72 6f 6d 70 74 20 6f 62 6a 65 63 74 73 2e 20 20 49 66 20 49 4e s.list.of.prompt.objects...If.IN
1ace0 4a 45 43 54 2d 4d 45 44 49 41 20 69 73 20 6e 6f 6e 2d 6e 69 6c 0a 69 6e 6a 65 63 74 20 74 68 65 JECT-MEDIA.is.non-nil.inject.the
1ad00 20 6d 65 64 69 61 20 66 69 6c 65 73 20 66 72 6f 6d 20 63 6f 6e 74 65 78 74 20 69 6e 74 6f 20 74 .media.files.from.context.into.t
1ad20 68 65 20 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20 74 68 65 0a 63 6f 6e 76 65 72 73 61 74 69 6f 6e he.beginning.of.the.conversation
1ad40 3b 20 6f 74 68 65 72 77 69 73 65 20 69 6e 6a 65 63 74 20 74 68 65 20 63 6f 6e 74 65 78 74 20 69 ;.otherwise.inject.the.context.i
1ad60 6e 74 6f 20 74 68 65 20 6c 61 73 74 20 70 72 6f 6d 70 74 2e 22 0a 20 20 28 69 66 20 69 6e 6a 65 nto.the.last.prompt."...(if.inje
1ad80 63 74 2d 6d 65 64 69 61 0a 20 20 20 20 20 20 28 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 69 ct-media.......(gptel-bedrock--i
1ada0 6e 6a 65 63 74 2d 6d 65 64 69 61 2d 63 6f 6e 74 65 78 74 20 70 72 6f 6d 70 74 73 29 0a 20 20 20 nject-media-context.prompts)....
1adc0 20 28 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 69 6e 6a 65 63 74 2d 74 65 78 74 2d 63 6f 6e .(gptel-bedrock--inject-text-con
1ade0 74 65 78 74 20 70 72 6f 6d 70 74 73 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 62 65 text.prompts)))..(defun.gptel-be
1ae00 64 72 6f 63 6b 2d 2d 69 6e 6a 65 63 74 2d 6d 65 64 69 61 2d 63 6f 6e 74 65 78 74 20 28 70 72 6f drock--inject-media-context.(pro
1ae20 6d 70 74 73 29 0a 20 20 22 49 6e 6a 65 63 74 20 6d 65 64 69 61 20 66 69 6c 65 73 20 66 72 6f 6d mpts)..."Inject.media.files.from
1ae40 20 63 6f 6e 74 65 78 74 20 69 6e 74 6f 20 61 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 2e 0a 4d 65 .context.into.a.conversation..Me
1ae60 64 69 61 20 66 69 6c 65 73 20 77 69 6c 6c 20 62 65 20 61 64 64 65 64 20 61 74 20 74 68 65 20 62 dia.files.will.be.added.at.the.b
1ae80 65 67 69 6e 6e 69 6e 67 20 6f 66 20 74 68 65 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 2e 0a 50 52 eginning.of.the.conversation..PR
1aea0 4f 4d 50 54 53 20 73 68 6f 75 6c 64 20 62 65 20 61 20 6e 6f 6e 2d 65 6d 70 74 79 20 6c 69 73 74 OMPTS.should.be.a.non-empty.list
1aec0 20 6f 66 20 70 72 6f 6d 70 74 20 6f 62 6a 65 63 74 73 2e 22 0a 20 20 28 77 68 65 6e 2d 6c 65 74 .of.prompt.objects."...(when-let
1aee0 2a 20 28 28 6d 65 64 69 61 2d 6c 69 73 74 20 28 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 63 *.((media-list.(gptel-context--c
1af00 6f 6c 6c 65 63 74 2d 6d 65 64 69 61 29 29 29 0a 20 20 20 20 28 63 6c 2d 63 61 6c 6c 66 32 20 76 ollect-media))).....(cl-callf2.v
1af20 63 6f 6e 63 61 74 20 28 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 70 61 72 73 65 2d 6d 75 6c concat.(gptel-bedrock--parse-mul
1af40 74 69 70 61 72 74 20 6d 65 64 69 61 2d 6c 69 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 tipart.media-list)..............
1af60 20 20 28 70 6c 69 73 74 2d 67 65 74 20 28 63 61 72 20 70 72 6f 6d 70 74 73 29 20 3a 63 6f 6e 74 ..(plist-get.(car.prompts).:cont
1af80 65 6e 74 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 69 ent))))..(defun.gptel-bedrock--i
1afa0 6e 6a 65 63 74 2d 74 65 78 74 2d 63 6f 6e 74 65 78 74 20 28 70 72 6f 6d 70 74 73 29 0a 20 20 22 nject-text-context.(prompts)..."
1afc0 49 6e 6a 65 63 74 20 74 65 78 74 20 63 6f 6e 74 65 78 74 20 69 6e 74 6f 20 74 68 65 20 6c 61 73 Inject.text.context.into.the.las
1afe0 74 20 70 72 6f 6d 70 74 20 6f 62 6a 65 63 74 20 66 72 6f 6d 20 61 20 63 6f 6e 76 65 72 73 61 74 t.prompt.object.from.a.conversat
1b000 69 6f 6e 2e 0a 50 52 4f 4d 50 54 53 20 73 68 6f 75 6c 64 20 62 65 20 61 20 6e 6f 6e 2d 65 6d 70 ion..PROMPTS.should.be.a.non-emp
1b020 74 79 20 6c 69 73 74 20 6f 66 20 70 72 6f 6d 70 74 20 6f 62 6a 65 63 74 73 2e 22 0a 20 20 28 63 ty.list.of.prompt.objects."...(c
1b040 6c 2d 61 73 73 65 72 74 20 70 72 6f 6d 70 74 73 20 6e 69 6c 20 22 45 78 70 65 63 74 65 64 20 61 l-assert.prompts.nil."Expected.a
1b060 20 6e 6f 6e 2d 65 6d 70 74 79 20 6c 69 73 74 20 6f 66 20 70 72 6f 6d 70 74 73 22 29 0a 20 20 28 .non-empty.list.of.prompts")...(
1b080 77 68 65 6e 2d 6c 65 74 2a 20 28 28 77 72 61 70 70 65 64 20 28 67 70 74 65 6c 2d 63 6f 6e 74 65 when-let*.((wrapped.(gptel-conte
1b0a0 78 74 2d 2d 77 72 61 70 20 6e 69 6c 29 29 29 0a 20 20 20 20 28 63 6c 2d 63 61 6c 6c 66 32 20 76 xt--wrap.nil))).....(cl-callf2.v
1b0c0 63 6f 6e 63 61 74 20 60 5b 28 3a 74 65 78 74 20 2c 77 72 61 70 70 65 64 29 5d 0a 20 20 20 20 20 concat.`[(:text.,wrapped)]......
1b0e0 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 67 65 74 20 28 63 61 72 20 28 6c 61 73 74 20 ..........(plist-get.(car.(last.
1b100 70 72 6f 6d 70 74 73 29 29 20 3a 63 6f 6e 74 65 6e 74 29 29 29 29 0a 0a 28 64 65 66 76 61 72 2d prompts)).:content))))..(defvar-
1b120 6c 6f 63 61 6c 20 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 73 74 72 65 61 6d 2d 63 75 72 73 local.gptel-bedrock--stream-curs
1b140 6f 72 20 6e 69 6c 0a 20 20 22 4d 61 72 6b 65 72 20 74 6f 20 69 6e 64 69 63 61 74 65 20 6c 61 73 or.nil..."Marker.to.indicate.las
1b160 74 20 70 6f 69 6e 74 20 70 61 72 73 65 64 2e 22 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 t.point.parsed.")..(cl-defmethod
1b180 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
1b1a0 6b 65 6e 64 20 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 29 20 69 6e 66 6f 29 0a 20 20 22 50 61 72 kend.gptel-bedrock).info)..."Par
1b1c0 73 65 20 61 6e 20 41 57 53 20 42 65 64 72 6f 63 6b 20 73 74 72 65 61 6d 69 6e 67 20 72 65 73 70 se.an.AWS.Bedrock.streaming.resp
1b1e0 6f 6e 73 65 20 66 72 6f 6d 20 74 68 65 20 43 6f 6e 76 65 72 73 65 53 74 72 65 61 6d 20 41 50 49 onse.from.the.ConverseStream.API
1b200 2e 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 74 68 65 ..INFO.is.a.plist.containing.the
1b220 20 72 65 71 75 65 73 74 20 63 6f 6e 74 65 78 74 2e 22 0a 20 20 28 63 6c 2d 62 6c 6f 63 6b 20 66 .request.context."...(cl-block.f
1b240 6e 0a 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 3b 3b 20 45 n.....(save-excursion.......;;.E
1b260 61 63 68 20 73 74 72 65 61 6d 69 6e 67 20 72 65 71 75 65 73 74 20 75 73 65 73 20 61 20 66 72 65 ach.streaming.request.uses.a.fre
1b280 73 68 20 62 75 66 66 65 72 2c 20 73 6f 20 74 68 65 20 63 75 72 73 6f 72 20 73 74 61 72 74 73 20 sh.buffer,.so.the.cursor.starts.
1b2a0 6f 75 74 20 6e 75 6c 6c 2e 20 57 65 20 6b 65 65 70 20 69 74 20 75 6e 73 65 74 0a 20 20 20 20 20 out.null..We.keep.it.unset......
1b2c0 20 3b 3b 20 75 6e 74 69 6c 20 77 65 20 68 61 76 65 20 72 65 63 65 69 76 65 64 20 61 6c 6c 20 74 .;;.until.we.have.received.all.t
1b2e0 68 65 20 68 65 61 64 65 72 73 0a 20 20 20 20 20 20 28 77 68 65 6e 20 28 6e 75 6c 6c 20 67 70 74 he.headers.......(when.(null.gpt
1b300 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 73 74 72 65 61 6d 2d 63 75 72 73 6f 72 29 0a 20 20 20 20 20 el-bedrock--stream-cursor)......
1b320 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 0a 20 20 20 20 20 ...(goto-char.(point-min))......
1b340 20 20 20 28 75 6e 6c 65 73 73 20 28 73 65 61 72 63 68 2d 66 6f 72 77 61 72 64 20 22 5c 72 5c 6e ...(unless.(search-forward."\r\n
1b360 5c 72 5c 6e 22 20 6e 69 6c 20 74 29 20 28 63 6c 2d 72 65 74 75 72 6e 2d 66 72 6f 6d 20 66 6e 29 \r\n".nil.t).(cl-return-from.fn)
1b380 29 0a 20 20 20 20 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 ).........(save-restriction.....
1b3a0 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 70 6f 69 6e 74 2d 6d ......(narrow-to-region.(point-m
1b3c0 69 6e 29 20 28 70 6f 69 6e 74 29 29 20 3b 20 52 65 71 75 69 72 65 64 20 62 79 20 6d 61 69 6c 2d in).(point)).;.Required.by.mail-
1b3e0 66 65 74 63 68 2d 66 69 65 6c 64 0a 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 63 6f 6e fetch-field...........(let.((con
1b400 74 65 6e 74 2d 74 79 70 65 20 28 6d 61 69 6c 2d 68 65 61 64 65 72 2d 70 61 72 73 65 2d 63 6f 6e tent-type.(mail-header-parse-con
1b420 74 65 6e 74 2d 74 79 70 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 tent-type.......................
1b440 20 20 20 20 20 20 20 20 20 28 6d 61 69 6c 2d 66 65 74 63 68 2d 66 69 65 6c 64 20 22 43 6f 6e 74 .........(mail-fetch-field."Cont
1b460 65 6e 74 2d 54 79 70 65 22 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 61 73 ent-Type")))).............(cl-as
1b480 73 65 72 74 20 63 6f 6e 74 65 6e 74 2d 74 79 70 65 20 6e 69 6c 20 22 4e 6f 20 43 6f 6e 74 65 6e sert.content-type.nil."No.Conten
1b4a0 74 2d 54 79 70 65 20 68 65 61 64 65 72 20 66 6f 75 6e 64 22 29 0a 20 20 20 20 20 20 20 20 20 20 t-Type.header.found")...........
1b4c0 20 20 28 63 6c 2d 61 73 73 65 72 74 20 28 73 74 72 69 6e 67 2d 65 71 75 61 6c 20 28 63 61 72 20 ..(cl-assert.(string-equal.(car.
1b4e0 63 6f 6e 74 65 6e 74 2d 74 79 70 65 29 20 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 76 6e 64 2e 61 content-type)."application/vnd.a
1b500 6d 61 7a 6f 6e 2e 65 76 65 6e 74 73 74 72 65 61 6d 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 mazon.eventstream").............
1b520 20 20 20 20 20 20 20 20 20 20 20 74 20 22 55 6e 65 78 70 65 63 74 65 64 20 43 6f 6e 74 65 6e 74 ...........t."Unexpected.Content
1b540 2d 54 79 70 65 20 25 53 2c 20 65 78 70 65 63 74 65 64 20 25 53 22 29 29 29 0a 20 20 20 20 20 20 -Type.%S,.expected.%S"))).......
1b560 20 20 28 73 65 74 71 20 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 73 74 72 65 61 6d 2d 63 75 ..(setq.gptel-bedrock--stream-cu
1b580 72 73 6f 72 20 28 70 6f 69 6e 74 2d 6d 61 72 6b 65 72 29 29 0a 0a 20 20 20 20 20 20 20 20 3b 3b rsor.(point-marker))..........;;
1b5a0 20 3a 61 63 63 75 6d 75 6c 61 74 65 64 2d 65 76 65 6e 74 73 20 63 6f 6e 74 61 69 6e 73 20 74 68 .:accumulated-events.contains.th
1b5c0 65 20 65 76 65 6e 74 73 20 66 72 6f 6d 20 61 6e 20 69 6e 2d 70 72 6f 67 72 65 73 73 20 6d 65 73 e.events.from.an.in-progress.mes
1b5e0 73 61 67 65 2c 20 66 72 6f 6d 20 74 68 65 0a 20 20 20 20 20 20 20 20 3b 3b 20 6d 65 73 73 61 67 sage,.from.the.........;;.messag
1b600 65 53 74 61 72 74 20 6f 6e 77 61 72 64 73 2e 20 57 69 74 68 20 65 61 63 68 20 6d 65 73 73 61 67 eStart.onwards..With.each.messag
1b620 65 53 74 6f 70 20 69 74 20 67 65 74 73 20 63 6c 65 61 72 65 64 0a 20 20 20 20 20 20 20 20 28 70 eStop.it.gets.cleared.........(p
1b640 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 61 63 63 75 6d 75 6c 61 74 65 64 2d 65 76 65 6e 74 list-put.info.:accumulated-event
1b660 73 20 6e 69 6c 29 29 0a 0a 20 20 20 20 20 20 3b 3b 20 53 74 61 72 74 20 6f 66 20 6d 61 69 6e 20 s.nil))........;;.Start.of.main.
1b680 72 6f 75 74 69 6e 65 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 61 63 63 2d 63 65 6c 6c 20 28 63 routine.......(let.((acc-cell.(c
1b6a0 64 72 20 28 70 6c 69 73 74 2d 6d 65 6d 62 65 72 20 69 6e 66 6f 20 3a 61 63 63 75 6d 75 6c 61 74 dr.(plist-member.info.:accumulat
1b6c0 65 64 2d 65 76 65 6e 74 73 29 29 29 20 73 74 72 69 6e 67 73 20 70 72 6f 6d 70 74 73 29 0a 20 20 ed-events))).strings.prompts)...
1b6e0 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d ......(goto-char.gptel-bedrock--
1b700 73 74 72 65 61 6d 2d 63 75 72 73 6f 72 29 0a 20 20 20 20 20 20 20 20 28 77 68 69 6c 65 2d 6c 65 stream-cursor).........(while-le
1b720 74 20 28 28 65 76 65 6e 74 20 28 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 70 61 72 73 65 2d t.((event.(gptel-bedrock--parse-
1b740 73 74 72 65 61 6d 2d 6d 65 73 73 61 67 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 stream-message)))...........(let
1b760 20 28 28 65 76 65 6e 74 2d 74 79 70 65 20 28 61 73 73 6f 63 2d 64 65 66 61 75 6c 74 20 22 3a 65 .((event-type.(assoc-default.":e
1b780 76 65 6e 74 2d 74 79 70 65 22 20 28 70 6c 69 73 74 2d 67 65 74 20 65 76 65 6e 74 20 3a 68 65 61 vent-type".(plist-get.event.:hea
1b7a0 64 65 72 73 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 6d 65 6d 62 ders)))).............(when.(memb
1b7c0 65 72 20 65 76 65 6e 74 2d 74 79 70 65 20 27 28 22 6d 65 73 73 61 67 65 53 74 61 72 74 22 20 22 er.event-type.'("messageStart"."
1b7e0 63 6f 6e 74 65 6e 74 42 6c 6f 63 6b 53 74 61 72 74 22 20 22 63 6f 6e 74 65 6e 74 42 6c 6f 63 6b contentBlockStart"."contentBlock
1b800 44 65 6c 74 61 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 Delta"..........................
1b820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 63 6f 6e 74 65 6e 74 42 6c 6f 63 6b 53 74 6f 70 22 .............."contentBlockStop"
1b840 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 65 76 65 6e 74 20 28 63 61 ))...............(push.event.(ca
1b860 72 20 61 63 63 2d 63 65 6c 6c 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 63 61 73 65 r.acc-cell))).............(pcase
1b880 20 65 76 65 6e 74 2d 74 79 70 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 22 6d 65 74 61 .event-type...............("meta
1b8a0 64 61 74 61 22 0a 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 data"................(plist-put.
1b8c0 69 6e 66 6f 20 3a 69 6e 70 75 74 2d 74 6f 6b 65 6e 73 20 28 6d 61 70 2d 6e 65 73 74 65 64 2d 65 info.:input-tokens.(map-nested-e
1b8e0 6c 74 20 65 76 65 6e 74 20 27 28 3a 70 61 79 6c 6f 61 64 20 3a 75 73 61 67 65 20 3a 69 6e 70 75 lt.event.'(:payload.:usage.:inpu
1b900 74 54 6f 6b 65 6e 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 tTokens)))................(plist
1b920 2d 70 75 74 20 69 6e 66 6f 20 3a 6f 75 74 70 75 74 2d 74 6f 6b 65 6e 73 20 28 6d 61 70 2d 6e 65 -put.info.:output-tokens.(map-ne
1b940 73 74 65 64 2d 65 6c 74 20 65 76 65 6e 74 20 27 28 3a 70 61 79 6c 6f 61 64 20 3a 75 73 61 67 65 sted-elt.event.'(:payload.:usage
1b960 20 3a 6f 75 74 70 75 74 54 6f 6b 65 6e 73 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 .:outputTokens))))..............
1b980 20 28 22 63 6f 6e 74 65 6e 74 42 6c 6f 63 6b 44 65 6c 74 61 22 0a 20 20 20 20 20 20 20 20 20 20 .("contentBlockDelta"...........
1b9a0 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 20 28 28 64 65 6c 74 61 2d 74 65 78 74 20 28 6d 61 70 .....(when-let.((delta-text.(map
1b9c0 2d 6e 65 73 74 65 64 2d 65 6c 74 20 65 76 65 6e 74 20 27 28 3a 70 61 79 6c 6f 61 64 20 3a 64 65 -nested-elt.event.'(:payload.:de
1b9e0 6c 74 61 20 3a 74 65 78 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 lta.:text))))..................(
1ba00 70 75 73 68 20 64 65 6c 74 61 2d 74 65 78 74 20 73 74 72 69 6e 67 73 29 29 29 0a 20 20 20 20 20 push.delta-text.strings)))......
1ba20 20 20 20 20 20 20 20 20 20 28 22 6d 65 73 73 61 67 65 53 74 6f 70 22 0a 20 20 20 20 20 20 20 20 .........("messageStop".........
1ba40 20 20 20 20 20 20 20 28 70 75 73 68 20 28 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 61 73 73 .......(push.(gptel-bedrock--ass
1ba60 65 6d 62 6c 65 2d 63 6f 6e 74 65 6e 74 2d 62 6c 6f 63 6b 73 20 28 6e 72 65 76 65 72 73 65 20 28 emble-content-blocks.(nreverse.(
1ba80 63 61 72 20 61 63 63 2d 63 65 6c 6c 29 29 29 20 70 72 6f 6d 70 74 73 29 0a 20 20 20 20 20 20 20 car.acc-cell))).prompts)........
1baa0 20 20 20 20 20 20 20 20 28 73 65 74 66 20 28 63 61 72 20 61 63 63 2d 63 65 6c 6c 29 20 6e 69 6c ........(setf.(car.acc-cell).nil
1bac0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f )................(plist-put.info
1bae0 20 3a 73 74 6f 70 2d 72 65 61 73 6f 6e 20 28 6d 61 70 2d 6e 65 73 74 65 64 2d 65 6c 74 20 65 76 .:stop-reason.(map-nested-elt.ev
1bb00 65 6e 74 20 27 28 3a 70 61 79 6c 6f 61 64 20 3a 73 74 6f 70 52 65 61 73 6f 6e 29 29 29 0a 20 20 ent.'(:payload.:stopReason)))...
1bb20 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 6d 65 .............(plist-put.info.:me
1bb40 73 73 61 67 65 2d 63 6f 6d 70 6c 65 74 65 20 74 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 6d ssage-complete.t))))).........(m
1bb60 6f 76 65 2d 6d 61 72 6b 65 72 20 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 73 74 72 65 61 6d ove-marker.gptel-bedrock--stream
1bb80 2d 63 75 72 73 6f 72 20 28 70 6f 69 6e 74 29 29 0a 0a 20 20 20 20 20 20 20 20 28 64 6f 6c 69 73 -cursor.(point))..........(dolis
1bba0 74 20 28 6d 65 73 73 61 67 65 20 70 72 6f 6d 70 74 73 29 20 28 67 70 74 65 6c 2d 62 65 64 72 6f t.(message.prompts).(gptel-bedro
1bbc0 63 6b 2d 2d 72 65 63 6f 72 64 2d 74 6f 6f 6c 2d 75 73 65 20 6d 65 73 73 61 67 65 20 69 6e 66 6f ck--record-tool-use.message.info
1bbe0 29 29 0a 20 20 20 20 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 )).........(apply.#'concat.(nrev
1bc00 65 72 73 65 20 73 74 72 69 6e 67 73 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c erse.strings))))))..(defun.gptel
1bc20 2d 62 65 64 72 6f 63 6b 2d 2d 70 61 72 73 65 2d 73 74 72 65 61 6d 2d 6d 65 73 73 61 67 65 20 28 -bedrock--parse-stream-message.(
1bc40 29 0a 20 20 22 50 61 72 73 65 20 41 57 53 20 42 65 64 72 6f 63 6b 20 65 76 65 6e 74 2d 73 74 72 )..."Parse.AWS.Bedrock.event-str
1bc60 65 61 6d 20 6d 65 73 73 61 67 65 20 73 74 61 72 74 69 6e 67 20 61 74 20 63 75 72 72 65 6e 74 20 eam.message.starting.at.current.
1bc80 70 6f 73 69 74 69 6f 6e 2e 0a 50 6f 69 6e 74 20 73 68 6f 75 6c 64 20 62 65 20 61 74 20 74 68 65 position..Point.should.be.at.the
1bca0 20 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20 61 6e 20 65 76 65 6e 74 20 69 6e 20 74 68 65 20 60 76 .beginning.of.an.event.in.the.`v
1bcc0 6e 64 2e 61 6d 61 7a 6f 6e 2e 65 76 65 6e 74 2d 73 74 72 65 61 6d 27 0a 66 6f 72 6d 61 74 2e 20 nd.amazon.event-stream'.format..
1bce0 20 52 65 74 75 72 6e 73 20 70 6c 69 73 74 20 77 69 74 68 20 3a 68 65 61 64 65 72 73 20 61 6e 64 .Returns.plist.with.:headers.and
1bd00 20 3a 70 61 79 6c 6f 61 64 20 6b 65 79 73 20 69 66 20 73 75 63 63 65 73 73 66 75 6c 2c 20 6e 69 .:payload.keys.if.successful,.ni
1bd20 6c 20 69 66 0a 69 6e 63 6f 6d 70 6c 65 74 65 2e 22 0a 20 20 3b 3b 20 68 74 74 70 73 3a 2f 2f 67 l.if.incomplete."...;;.https://g
1bd40 69 74 68 75 62 2e 63 6f 6d 2f 61 77 73 6c 61 62 73 2f 61 77 73 2d 63 2d 65 76 65 6e 74 2d 73 74 ithub.com/awslabs/aws-c-event-st
1bd60 72 65 61 6d 20 68 61 73 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68 69 73 20 66 ream.has.documentation.of.this.f
1bd80 6f 72 6d 61 74 0a 20 20 3b 3b 20 54 68 65 20 66 6f 72 6d 61 74 20 63 6f 6e 73 69 73 74 73 20 6f ormat...;;.The.format.consists.o
1bda0 66 20 74 68 72 65 65 20 6d 61 69 6e 20 73 65 63 74 69 6f 6e 73 3a 20 50 72 65 6c 75 64 65 2c 20 f.three.main.sections:.Prelude,.
1bdc0 44 61 74 61 2c 20 61 6e 64 20 4d 65 73 73 61 67 65 20 43 52 43 2e 0a 20 20 3b 3b 20 31 2e 20 50 Data,.and.Message.CRC....;;.1..P
1bde0 72 65 6c 75 64 65 20 28 31 32 20 62 79 74 65 73 29 0a 20 20 3b 3b 20 20 20 20 61 2e 20 54 6f 74 relude.(12.bytes)...;;....a..Tot
1be00 61 6c 20 42 79 74 65 20 4c 65 6e 67 74 68 20 28 34 20 62 79 74 65 73 29 3a 20 53 70 65 63 69 66 al.Byte.Length.(4.bytes):.Specif
1be20 69 65 73 20 74 68 65 20 74 6f 74 61 6c 20 6c 65 6e 67 74 68 20 6f 66 20 74 68 65 20 6d 65 73 73 ies.the.total.length.of.the.mess
1be40 61 67 65 2e 0a 20 20 3b 3b 20 20 20 20 62 2e 20 48 65 61 64 65 72 73 20 42 79 74 65 20 4c 65 6e age....;;....b..Headers.Byte.Len
1be60 67 74 68 20 28 34 20 62 79 74 65 73 29 3a 20 49 6e 64 69 63 61 74 65 73 20 74 68 65 20 6c 65 6e gth.(4.bytes):.Indicates.the.len
1be80 67 74 68 20 6f 66 20 74 68 65 20 68 65 61 64 65 72 73 20 73 65 63 74 69 6f 6e 2e 0a 20 20 3b 3b gth.of.the.headers.section....;;
1bea0 20 20 20 20 63 2e 20 50 72 65 6c 75 64 65 20 43 52 43 20 28 34 20 62 79 74 65 73 29 3a 20 41 20 ....c..Prelude.CRC.(4.bytes):.A.
1bec0 43 52 43 20 76 61 6c 75 65 20 66 6f 72 20 76 61 6c 69 64 61 74 69 6e 67 20 74 68 65 20 69 6e 74 CRC.value.for.validating.the.int
1bee0 65 67 72 69 74 79 20 6f 66 20 74 68 65 20 70 72 65 6c 75 64 65 2e 0a 20 20 3b 3b 20 32 2e 20 44 egrity.of.the.prelude....;;.2..D
1bf00 61 74 61 20 28 76 61 72 69 61 62 6c 65 20 6c 65 6e 67 74 68 29 0a 20 20 3b 3b 20 20 20 20 61 2e ata.(variable.length)...;;....a.
1bf20 20 48 65 61 64 65 72 73 3a 20 41 6e 20 61 72 72 61 79 20 6f 66 20 70 61 63 6b 65 64 20 68 65 61 .Headers:.An.array.of.packed.hea
1bf40 64 65 72 73 2e 20 45 61 63 68 20 68 65 61 64 65 72 20 68 61 73 20 61 20 73 70 65 63 69 66 69 63 ders..Each.header.has.a.specific
1bf60 20 66 6f 72 6d 61 74 20 64 6f 63 75 6d 65 6e 74 65 64 20 69 6e 0a 20 20 3b 3b 20 20 20 20 20 20 .format.documented.in...;;......
1bf80 20 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 70 61 72 73 65 2d 68 65 61 64 65 72 73 0a 20 20 .gptel-bedrock--parse-headers...
1bfa0 3b 3b 20 20 20 20 62 2e 20 50 61 79 6c 6f 61 64 3a 20 54 68 65 20 6d 61 69 6e 20 6d 65 73 73 61 ;;....b..Payload:.The.main.messa
1bfc0 67 65 20 63 6f 6e 74 65 6e 74 2c 20 61 6c 73 6f 20 6f 66 20 76 61 72 69 61 62 6c 65 20 6c 65 6e ge.content,.also.of.variable.len
1bfe0 67 74 68 2e 20 4c 65 6e 67 74 68 20 63 61 6e 20 62 65 20 63 6f 6d 70 75 74 65 64 20 66 72 6f 6d gth..Length.can.be.computed.from
1c000 0a 20 20 3b 3b 20 20 20 20 20 20 20 74 68 65 20 70 72 65 6c 75 64 65 20 66 69 65 6c 64 73 20 62 ...;;.......the.prelude.fields.b
1c020 79 20 73 75 62 74 72 61 63 74 69 6e 67 20 74 68 65 20 70 72 65 6c 75 64 65 20 6c 65 6e 67 74 68 y.subtracting.the.prelude.length
1c040 2c 20 68 65 61 64 65 72 73 20 6c 65 6e 67 74 68 2c 20 61 6e 64 20 6d 65 73 73 61 67 65 20 43 52 ,.headers.length,.and.message.CR
1c060 43 0a 20 20 3b 3b 20 20 20 20 20 20 20 6c 65 6e 67 74 68 20 66 72 6f 6d 20 74 68 65 20 74 6f 74 C...;;.......length.from.the.tot
1c080 61 6c 2e 0a 20 20 3b 3b 20 33 2e 20 4d 65 73 73 61 67 65 20 43 52 43 20 28 34 20 62 79 74 65 73 al....;;.3..Message.CRC.(4.bytes
1c0a0 29 3a 20 41 20 34 2d 62 79 74 65 20 43 52 43 20 74 6f 20 76 61 6c 69 64 61 74 65 20 74 68 65 20 ):.A.4-byte.CRC.to.validate.the.
1c0c0 69 6e 74 65 67 72 69 74 79 20 6f 66 20 74 68 65 20 65 6e 74 69 72 65 20 6d 65 73 73 61 67 65 2e integrity.of.the.entire.message.
1c0e0 0a 0a 20 20 3b 3b 20 28 70 6f 69 6e 74 2d 6d 61 78 29 20 69 73 20 74 68 65 20 70 6f 73 69 74 69 ....;;.(point-max).is.the.positi
1c100 6f 6e 20 61 66 74 65 72 20 74 68 65 20 6c 61 73 74 20 63 68 61 72 61 63 74 65 72 2c 20 68 65 6e on.after.the.last.character,.hen
1c120 63 65 20 74 68 65 20 75 73 65 20 6f 66 20 3e 3d 20 61 6e 64 20 6e 6f 74 20 3e 20 62 65 6c 6f 77 ce.the.use.of.>=.and.not.>.below
1c140 0a 20 20 28 77 68 65 6e 20 28 3e 3d 20 28 2d 20 28 70 6f 69 6e 74 2d 6d 61 78 29 20 28 70 6f 69 ...(when.(>=.(-.(point-max).(poi
1c160 6e 74 29 29 20 31 32 29 0a 20 20 20 20 28 6c 65 74 2a 20 28 28 70 72 65 6c 75 64 65 2d 73 74 61 nt)).12).....(let*.((prelude-sta
1c180 72 74 20 28 70 6f 69 6e 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 70 72 65 6c 75 64 65 2d rt.(point))............(prelude-
1c1a0 6c 65 6e 67 74 68 20 31 32 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 70 72 65 6c 75 64 65 2d 65 length.12)............(prelude-e
1c1c0 6e 64 20 28 2b 20 70 72 65 6c 75 64 65 2d 73 74 61 72 74 20 70 72 65 6c 75 64 65 2d 6c 65 6e 67 nd.(+.prelude-start.prelude-leng
1c1e0 74 68 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 70 72 65 6c 75 64 65 20 28 62 75 66 66 65 72 th))............(prelude.(buffer
1c200 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 70 72 65 6c 75 64 65 -substring-no-properties.prelude
1c220 2d 73 74 61 72 74 20 70 72 65 6c 75 64 65 2d 65 6e 64 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 -start.prelude-end))............
1c240 28 74 6f 74 61 6c 2d 6c 65 6e 67 74 68 20 28 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 62 79 (total-length.(gptel-bedrock--by
1c260 74 65 73 2d 74 6f 2d 69 6e 74 33 32 20 28 73 75 62 73 74 72 69 6e 67 20 70 72 65 6c 75 64 65 20 tes-to-int32.(substring.prelude.
1c280 30 20 34 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 68 65 61 64 65 72 73 2d 6c 65 6e 67 74 0.4)))............(headers-lengt
1c2a0 68 20 28 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 62 79 74 65 73 2d 74 6f 2d 69 6e 74 33 32 h.(gptel-bedrock--bytes-to-int32
1c2c0 20 28 73 75 62 73 74 72 69 6e 67 20 70 72 65 6c 75 64 65 20 34 20 38 29 29 29 0a 20 20 20 20 20 .(substring.prelude.4.8)))......
1c2e0 20 20 20 20 20 20 28 68 65 61 64 65 72 73 2d 73 74 61 72 74 20 70 72 65 6c 75 64 65 2d 65 6e 64 ......(headers-start.prelude-end
1c300 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 68 65 61 64 65 72 73 2d 65 6e 64 20 28 2b 20 68 65 61 )............(headers-end.(+.hea
1c320 64 65 72 73 2d 73 74 61 72 74 20 68 65 61 64 65 72 73 2d 6c 65 6e 67 74 68 29 29 0a 20 20 20 20 ders-start.headers-length)).....
1c340 20 20 20 20 20 20 20 68 65 61 64 65 72 73 20 70 61 79 6c 6f 61 64 29 0a 20 20 20 20 20 20 3b 3b .......headers.payload).......;;
1c360 20 57 65 20 64 6f 6e 27 74 20 76 61 6c 69 64 61 74 65 20 65 69 74 68 65 72 20 43 52 43 20 62 65 .We.don't.validate.either.CRC.be
1c380 63 61 75 73 65 20 69 73 6e 27 74 20 74 68 61 74 20 77 68 61 74 20 74 68 65 20 6e 65 74 77 6f 72 cause.isn't.that.what.the.networ
1c3a0 6b 69 6e 67 20 73 74 61 63 6b 20 69 73 20 66 6f 72 3f 0a 0a 20 20 20 20 20 20 28 77 68 65 6e 20 king.stack.is.for?........(when.
1c3c0 28 3e 3d 20 28 70 6f 69 6e 74 2d 6d 61 78 29 20 28 2b 20 70 72 65 6c 75 64 65 2d 73 74 61 72 74 (>=.(point-max).(+.prelude-start
1c3e0 20 74 6f 74 61 6c 2d 6c 65 6e 67 74 68 29 29 0a 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 .total-length)).........(goto-ch
1c400 61 72 20 68 65 61 64 65 72 73 2d 73 74 61 72 74 29 0a 20 20 20 20 20 20 20 20 28 73 65 74 71 20 ar.headers-start).........(setq.
1c420 68 65 61 64 65 72 73 20 28 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 70 61 72 73 65 2d 68 65 headers.(gptel-bedrock--parse-he
1c440 61 64 65 72 73 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 20 28 70 6f 69 6e 74 29 20 aders.(buffer-substring.(point).
1c460 68 65 61 64 65 72 73 2d 65 6e 64 29 29 29 0a 20 20 20 20 20 20 20 20 28 63 6c 2d 61 73 73 65 72 headers-end))).........(cl-asser
1c480 74 20 28 65 71 75 61 6c 20 28 61 73 73 6f 63 2d 64 65 66 61 75 6c 74 20 22 3a 6d 65 73 73 61 67 t.(equal.(assoc-default.":messag
1c4a0 65 2d 74 79 70 65 22 20 68 65 61 64 65 72 73 29 20 22 65 76 65 6e 74 22 29 0a 20 20 20 20 20 20 e-type".headers)."event").......
1c4c0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 20 22 55 6e 6b 6e 6f 77 6e 20 6d 65 73 73 61 67 65 20 .............t."Unknown.message.
1c4e0 74 79 70 65 20 25 53 3b 20 65 78 70 65 63 74 65 64 20 25 53 22 29 0a 20 20 20 20 20 20 20 20 28 type.%S;.expected.%S").........(
1c500 63 6c 2d 61 73 73 65 72 74 20 28 65 71 75 61 6c 20 28 61 73 73 6f 63 2d 64 65 66 61 75 6c 74 20 cl-assert.(equal.(assoc-default.
1c520 22 3a 63 6f 6e 74 65 6e 74 2d 74 79 70 65 22 20 68 65 61 64 65 72 73 29 20 22 61 70 70 6c 69 63 ":content-type".headers)."applic
1c540 61 74 69 6f 6e 2f 6a 73 6f 6e 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ation/json")....................
1c560 74 20 22 55 6e 65 78 70 65 63 74 65 64 20 63 6f 6e 74 65 6e 74 2d 74 79 70 65 20 25 53 20 69 73 t."Unexpected.content-type.%S.is
1c580 20 6e 6f 74 20 25 53 22 29 0a 0a 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 68 65 .not.%S")..........(goto-char.he
1c5a0 61 64 65 72 73 2d 65 6e 64 29 0a 20 20 20 20 20 20 20 20 28 73 65 74 71 20 70 61 79 6c 6f 61 64 aders-end).........(setq.payload
1c5c0 20 28 67 70 74 65 6c 2d 2d 6a 73 6f 6e 2d 72 65 61 64 29 29 0a 20 20 20 20 20 20 20 20 28 6c 65 .(gptel--json-read)).........(le
1c5e0 74 2a 20 28 28 6d 65 73 73 61 67 65 2d 63 72 63 20 34 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 t*.((message-crc.4).............
1c600 20 20 20 28 70 61 79 6c 6f 61 64 2d 6c 65 6e 67 74 68 20 28 2d 20 74 6f 74 61 6c 2d 6c 65 6e 67 ...(payload-length.(-.total-leng
1c620 74 68 20 68 65 61 64 65 72 73 2d 6c 65 6e 67 74 68 20 70 72 65 6c 75 64 65 2d 6c 65 6e 67 74 68 th.headers-length.prelude-length
1c640 20 6d 65 73 73 61 67 65 2d 63 72 63 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 61 73 .message-crc)))...........(cl-as
1c660 73 65 72 74 20 28 3d 20 28 2d 20 28 70 6f 69 6e 74 29 20 68 65 61 64 65 72 73 2d 65 6e 64 29 20 sert.(=.(-.(point).headers-end).
1c680 70 61 79 6c 6f 61 64 2d 6c 65 6e 67 74 68 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 payload-length).................
1c6a0 20 20 20 20 20 74 20 22 55 6e 65 78 70 65 63 74 65 64 20 70 61 79 6c 6f 61 64 20 6c 65 6e 67 74 .....t."Unexpected.payload.lengt
1c6c0 68 20 25 64 3b 20 65 78 70 65 63 74 65 64 20 25 64 2e 22 29 29 0a 0a 20 20 20 20 20 20 20 20 28 h.%d;.expected.%d."))..........(
1c6e0 67 6f 74 6f 2d 63 68 61 72 20 28 2b 20 70 72 65 6c 75 64 65 2d 73 74 61 72 74 20 74 6f 74 61 6c goto-char.(+.prelude-start.total
1c700 2d 6c 65 6e 67 74 68 29 29 0a 20 20 20 20 20 20 20 20 60 28 3a 68 65 61 64 65 72 73 20 2c 68 65 -length)).........`(:headers.,he
1c720 61 64 65 72 73 20 3a 70 61 79 6c 6f 61 64 20 2c 70 61 79 6c 6f 61 64 29 29 29 29 29 0a 0a 28 64 aders.:payload.,payload)))))..(d
1c740 65 66 75 6e 20 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 70 61 72 73 65 2d 68 65 61 64 65 72 efun.gptel-bedrock--parse-header
1c760 73 20 28 68 65 61 64 65 72 73 2d 64 61 74 61 29 0a 20 20 22 50 61 72 73 65 20 48 45 41 44 45 52 s.(headers-data)..."Parse.HEADER
1c780 53 2d 44 41 54 41 20 69 6e 74 6f 20 61 6c 69 73 74 20 6f 66 20 28 4e 41 4d 45 20 2e 20 56 41 4c S-DATA.into.alist.of.(NAME...VAL
1c7a0 55 45 29 2e 0a 4b 65 79 73 20 61 72 65 20 73 74 72 69 6e 67 2d 76 61 6c 75 65 64 2c 20 6c 6f 77 UE)..Keys.are.string-valued,.low
1c7c0 65 72 2d 63 61 73 65 64 20 6e 61 6d 65 73 2e 22 0a 20 20 3b 3b 20 48 65 61 64 65 72 20 77 69 72 er-cased.names."...;;.Header.wir
1c7e0 65 20 66 6f 72 6d 61 74 3a 0a 20 20 3b 3b 20 20 20 31 2e 20 48 65 61 64 65 72 20 4e 61 6d 65 20 e.format:...;;...1..Header.Name.
1c800 42 79 74 65 20 4c 65 6e 67 74 68 20 28 31 20 62 79 74 65 29 3a 20 53 70 65 63 69 66 69 65 73 20 Byte.Length.(1.byte):.Specifies.
1c820 74 68 65 20 6c 65 6e 67 74 68 20 6f 66 20 74 68 65 20 68 65 61 64 65 72 20 6e 61 6d 65 2e 0a 20 the.length.of.the.header.name...
1c840 20 3b 3b 20 20 20 32 2e 20 48 65 61 64 65 72 20 4e 61 6d 65 20 28 53 74 72 69 6e 67 29 20 28 56 .;;...2..Header.Name.(String).(V
1c860 61 72 69 61 62 6c 65 20 6c 65 6e 67 74 68 29 3a 20 43 6f 6e 74 61 69 6e 73 20 74 68 65 20 6e 61 ariable.length):.Contains.the.na
1c880 6d 65 20 6f 66 20 74 68 65 20 68 65 61 64 65 72 2e 0a 20 20 3b 3b 20 20 20 33 2e 20 48 65 61 64 me.of.the.header....;;...3..Head
1c8a0 65 72 20 56 61 6c 75 65 20 54 79 70 65 20 28 31 20 62 79 74 65 29 3a 20 49 64 65 6e 74 69 66 69 er.Value.Type.(1.byte):.Identifi
1c8c0 65 73 20 74 68 65 20 74 79 70 65 20 6f 66 20 74 68 65 20 68 65 61 64 65 72 20 76 61 6c 75 65 2e es.the.type.of.the.header.value.
1c8e0 0a 20 20 3b 3b 20 20 20 34 2e 20 56 61 6c 75 65 20 53 74 72 69 6e 67 20 42 79 74 65 20 4c 65 6e ...;;...4..Value.String.Byte.Len
1c900 67 74 68 20 28 32 20 62 79 74 65 73 29 3a 20 49 6e 64 69 63 61 74 65 73 20 74 68 65 20 6c 65 6e gth.(2.bytes):.Indicates.the.len
1c920 67 74 68 20 6f 66 20 74 68 65 20 76 61 6c 75 65 20 73 74 72 69 6e 67 2e 0a 20 20 3b 3b 20 20 20 gth.of.the.value.string....;;...
1c940 35 2e 20 56 61 6c 75 65 20 28 56 61 72 69 61 62 6c 65 20 6c 65 6e 67 74 68 29 3a 20 48 6f 6c 64 5..Value.(Variable.length):.Hold
1c960 73 20 74 68 65 20 61 63 74 75 61 6c 20 76 61 6c 75 65 20 62 79 74 65 73 0a 20 20 28 6c 65 74 20 s.the.actual.value.bytes...(let.
1c980 28 28 70 6f 73 20 30 29 20 28 6d 61 78 20 28 6c 65 6e 67 74 68 20 68 65 61 64 65 72 73 2d 64 61 ((pos.0).(max.(length.headers-da
1c9a0 74 61 29 29 20 68 65 61 64 65 72 73 29 0a 20 20 20 20 28 63 6c 2d 66 6c 65 74 20 28 28 70 6f 73 ta)).headers).....(cl-flet.((pos
1c9c0 2b 2b 20 28 29 20 28 70 72 6f 67 31 20 70 6f 73 20 28 63 6c 2d 69 6e 63 66 20 70 6f 73 29 29 29 ++.().(prog1.pos.(cl-incf.pos)))
1c9e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 2b 2b 70 6f 73 20 28 6e 29 20 28 63 6c 2d 69 6e ...............(++pos.(n).(cl-in
1ca00 63 66 20 70 6f 73 20 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 74 66 38 20 28 cf.pos.n))...............(utf8.(
1ca20 75 6e 69 62 79 74 65 2d 73 74 72 69 6e 67 29 20 28 64 65 63 6f 64 65 2d 63 6f 64 69 6e 67 2d 73 unibyte-string).(decode-coding-s
1ca40 74 72 69 6e 67 20 75 6e 69 62 79 74 65 2d 73 74 72 69 6e 67 20 27 75 74 66 2d 38 20 74 29 29 29 tring.unibyte-string.'utf-8.t)))
1ca60 0a 20 20 20 20 20 20 28 77 68 69 6c 65 20 28 3c 20 70 6f 73 20 6d 61 78 29 0a 20 20 20 20 20 20 .......(while.(<.pos.max).......
1ca80 20 20 28 6c 65 74 2a 20 28 28 6e 61 6d 65 2d 6c 65 6e 20 28 61 72 65 66 20 68 65 61 64 65 72 73 ..(let*.((name-len.(aref.headers
1caa0 2d 64 61 74 61 20 28 70 6f 73 2b 2b 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 -data.(pos++)))................(
1cac0 6e 61 6d 65 20 28 73 75 62 73 74 72 69 6e 67 20 68 65 61 64 65 72 73 2d 64 61 74 61 20 70 6f 73 name.(substring.headers-data.pos
1cae0 20 28 2b 2b 70 6f 73 20 6e 61 6d 65 2d 6c 65 6e 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 .(++pos.name-len))).............
1cb00 20 20 20 28 74 79 70 65 20 28 61 72 65 66 20 68 65 61 64 65 72 73 2d 64 61 74 61 20 28 70 6f 73 ...(type.(aref.headers-data.(pos
1cb20 2b 2b 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 76 61 6c 75 65 2d 6c 65 6e 20 ++)))................(value-len.
1cb40 28 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 62 79 74 65 73 2d 74 6f 2d 69 6e 74 31 36 20 28 (gptel-bedrock--bytes-to-int16.(
1cb60 73 75 62 73 74 72 69 6e 67 20 68 65 61 64 65 72 73 2d 64 61 74 61 20 70 6f 73 20 28 2b 2b 70 6f substring.headers-data.pos.(++po
1cb80 73 20 32 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 76 61 6c 75 65 0a 20 20 s.2))))................(value...
1cba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 63 61 73 65 20 74 79 70 65 0a 20 20 20 20 20 20 ..............(pcase.type.......
1cbc0 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 48 65 61 64 65 72 20 74 79 70 65 73 20 66 72 6f 6d ............;;.Header.types.from
1cbe0 20 68 74 74 70 73 3a 2f 2f 61 77 73 6c 61 62 73 2e 67 69 74 68 75 62 2e 69 6f 2f 61 77 73 2d 63 .https://awslabs.github.io/aws-c
1cc00 72 74 2d 70 79 74 68 6f 6e 2f 61 70 69 2f 65 76 65 6e 74 73 74 72 65 61 6d 2e 68 74 6d 6c 0a 20 rt-python/api/eventstream.html..
1cc20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 30 20 74 29 0a 20 20 20 20 20 20 20 20 20 .................(0.t)..........
1cc40 20 20 20 20 20 20 20 20 20 28 31 20 3a 6a 73 6f 6e 2d 66 61 6c 73 65 29 0a 20 20 20 20 20 20 20 .........(1.:json-false)........
1cc60 20 20 20 20 20 20 20 20 20 20 20 28 32 20 28 6c 65 74 20 28 28 72 65 73 20 28 61 72 65 66 20 68 ...........(2.(let.((res.(aref.h
1cc80 65 61 64 65 72 73 2d 64 61 74 61 20 28 70 6f 73 2b 2b 29 29 29 29 20 3b 20 69 6e 74 38 0a 20 20 eaders-data.(pos++)))).;.int8...
1cca0 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 28 3e 20 72 65 73 20 .....................(if.(>.res.
1ccc0 31 32 37 29 20 28 2d 20 72 65 73 20 32 35 36 29 20 72 65 73 29 29 29 0a 20 20 20 20 20 20 20 20 127).(-.res.256).res))).........
1cce0 20 20 20 20 20 20 20 20 20 20 28 33 20 28 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 62 79 74 ..........(3.(gptel-bedrock--byt
1cd00 65 73 2d 74 6f 2d 69 6e 74 31 36 20 28 73 75 62 73 74 72 69 6e 67 20 68 65 61 64 65 72 73 2d 64 es-to-int16.(substring.headers-d
1cd20 61 74 61 20 70 6f 73 20 28 2b 2b 70 6f 73 20 32 29 29 29 29 20 3b 20 69 6e 74 31 36 0a 20 20 20 ata.pos.(++pos.2)))).;.int16....
1cd40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 34 20 28 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b ...............(4.(gptel-bedrock
1cd60 2d 2d 62 79 74 65 73 2d 74 6f 2d 69 6e 74 33 32 20 28 73 75 62 73 74 72 69 6e 67 20 68 65 61 64 --bytes-to-int32.(substring.head
1cd80 65 72 73 2d 64 61 74 61 20 70 6f 73 20 28 2b 2b 70 6f 73 20 34 29 29 29 29 20 3b 20 69 6e 74 33 ers-data.pos.(++pos.4)))).;.int3
1cda0 32 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 35 20 28 67 70 74 65 6c 2d 62 65 2...................(5.(gptel-be
1cdc0 64 72 6f 63 6b 2d 2d 62 79 74 65 73 2d 74 6f 2d 69 6e 74 36 34 20 28 73 75 62 73 74 72 69 6e 67 drock--bytes-to-int64.(substring
1cde0 20 68 65 61 64 65 72 73 2d 64 61 74 61 20 70 6f 73 20 28 2b 2b 70 6f 73 20 38 29 29 29 29 20 3b .headers-data.pos.(++pos.8)))).;
1ce00 20 69 6e 74 36 34 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 36 20 28 73 75 62 .int64...................(6.(sub
1ce20 73 74 72 69 6e 67 20 68 65 61 64 65 72 73 2d 64 61 74 61 20 70 6f 73 20 28 2b 2b 70 6f 73 20 76 string.headers-data.pos.(++pos.v
1ce40 61 6c 75 65 2d 6c 65 6e 29 29 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 alue-len))).....................
1ce60 20 20 20 20 3b 20 72 61 77 20 62 79 74 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ....;.raw.bytes.................
1ce80 20 20 28 37 20 28 75 74 66 38 20 28 73 75 62 73 74 72 69 6e 67 20 68 65 61 64 65 72 73 2d 64 61 ..(7.(utf8.(substring.headers-da
1cea0 74 61 20 70 6f 73 20 28 2b 2b 70 6f 73 20 76 61 6c 75 65 2d 6c 65 6e 29 29 29 29 20 20 20 20 20 ta.pos.(++pos.value-len)))).....
1cec0 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 75 74 66 38 20 73 74 72 69 6e 67 0a 20 20 20 20 20 .............;.utf8.string......
1cee0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 38 20 28 64 65 63 6f 64 65 2d 74 69 6d 65 20 20 20 20 .............(8.(decode-time....
1cf00 20 20 20 3b 20 36 34 20 62 69 74 20 69 6e 74 20 77 69 74 68 20 73 65 63 6f 6e 64 73 20 73 69 6e ...;.64.bit.int.with.seconds.sin
1cf20 63 65 20 74 68 65 20 55 6e 69 78 20 65 70 6f 63 68 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ce.the.Unix.epoch...............
1cf40 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 62 79 74 65 73 2d 74 6f ........(gptel-bedrock--bytes-to
1cf60 2d 69 6e 74 36 34 20 28 73 75 62 73 74 72 69 6e 67 20 68 65 61 64 65 72 73 2d 64 61 74 61 20 70 -int64.(substring.headers-data.p
1cf80 6f 73 20 28 2b 2b 70 6f 73 20 38 29 29 29 20 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 os.(++pos.8))).t))..............
1cfa0 20 20 20 20 20 28 39 20 28 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 62 79 74 65 73 2d 74 6f .....(9.(gptel-bedrock--bytes-to
1cfc0 2d 75 75 69 64 20 3b 20 31 36 20 62 79 74 65 20 55 55 49 44 0a 20 20 20 20 20 20 20 20 20 20 20 -uuid.;.16.byte.UUID............
1cfe0 20 20 20 20 20 20 20 20 20 20 20 28 73 75 62 73 74 72 69 6e 67 20 68 65 61 64 65 72 73 2d 64 61 ...........(substring.headers-da
1d000 74 61 20 70 6f 73 20 28 2b 2b 70 6f 73 20 31 36 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 ta.pos.(++pos.16))))............
1d020 20 20 20 20 20 20 20 28 5f 20 28 65 72 72 6f 72 20 22 55 6e 6b 6e 6f 77 6e 20 68 65 61 64 65 72 .......(_.(error."Unknown.header
1d040 20 74 79 70 65 3a 20 25 64 22 20 74 79 70 65 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 .type:.%d".type)))))...........(
1d060 70 75 73 68 20 28 63 6f 6e 73 20 28 64 6f 77 6e 63 61 73 65 20 28 75 74 66 38 20 6e 61 6d 65 29 push.(cons.(downcase.(utf8.name)
1d080 29 20 76 61 6c 75 65 29 20 68 65 61 64 65 72 73 29 29 29 0a 20 20 20 20 20 20 28 63 6c 2d 61 73 ).value).headers))).......(cl-as
1d0a0 73 65 72 74 20 28 3d 20 70 6f 73 20 6d 61 78 29 20 74 20 22 48 65 61 64 65 72 73 20 64 69 64 20 sert.(=.pos.max).t."Headers.did.
1d0c0 6e 6f 74 20 70 61 72 73 65 20 63 6c 65 61 6e 6c 79 2e 20 70 6f 73 3d 25 64 20 20 68 65 61 64 65 not.parse.cleanly..pos=%d..heade
1d0e0 72 2d 6c 65 6e 3d 25 64 22 29 0a 20 20 20 20 20 20 68 65 61 64 65 72 73 29 29 29 0a 0a 28 64 65 r-len=%d").......headers)))..(de
1d100 66 75 6e 20 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 62 79 74 65 73 2d 74 6f 2d 69 6e 74 31 fun.gptel-bedrock--bytes-to-int1
1d120 36 20 28 62 79 74 65 73 29 0a 20 20 22 43 6f 6e 76 65 72 74 20 32 2d 62 79 74 65 20 73 74 72 69 6.(bytes)..."Convert.2-byte.stri
1d140 6e 67 20 42 59 54 45 53 20 74 6f 20 62 69 67 2d 65 6e 64 69 61 6e 20 73 69 67 6e 65 64 20 69 6e ng.BYTES.to.big-endian.signed.in
1d160 74 65 67 65 72 2e 22 0a 20 20 28 6c 65 74 20 28 28 62 30 20 28 6c 6f 67 61 6e 64 20 28 61 72 65 teger."...(let.((b0.(logand.(are
1d180 66 20 62 79 74 65 73 20 30 29 20 32 35 35 29 29 0a 20 20 20 20 20 20 20 20 28 62 31 20 28 6c 6f f.bytes.0).255)).........(b1.(lo
1d1a0 67 61 6e 64 20 28 61 72 65 66 20 62 79 74 65 73 20 31 29 20 32 35 35 29 29 29 0a 20 20 20 20 28 gand.(aref.bytes.1).255))).....(
1d1c0 6c 65 74 20 28 28 72 65 73 75 6c 74 20 28 2b 20 28 61 73 68 20 62 30 20 38 29 20 62 31 29 29 29 let.((result.(+.(ash.b0.8).b1)))
1d1e0 0a 20 20 20 20 20 20 28 69 66 20 28 3e 3d 20 62 30 20 23 78 38 30 29 20 28 2d 20 72 65 73 75 6c .......(if.(>=.b0.#x80).(-.resul
1d200 74 20 28 61 73 68 20 31 20 31 36 29 29 20 72 65 73 75 6c 74 29 29 29 29 0a 0a 28 64 65 66 75 6e t.(ash.1.16)).result))))..(defun
1d220 20 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 62 79 74 65 73 2d 74 6f 2d 69 6e 74 33 32 20 28 .gptel-bedrock--bytes-to-int32.(
1d240 62 79 74 65 73 29 0a 20 20 22 43 6f 6e 76 65 72 74 20 34 2d 62 79 74 65 20 73 74 72 69 6e 67 20 bytes)..."Convert.4-byte.string.
1d260 42 59 54 45 53 20 74 6f 20 62 69 67 2d 65 6e 64 69 61 6e 20 73 69 67 6e 65 64 20 69 6e 74 65 67 BYTES.to.big-endian.signed.integ
1d280 65 72 2e 22 0a 20 20 28 6c 65 74 20 28 28 62 30 20 28 6c 6f 67 61 6e 64 20 28 61 72 65 66 20 62 er."...(let.((b0.(logand.(aref.b
1d2a0 79 74 65 73 20 30 29 20 32 35 35 29 29 0a 20 20 20 20 20 20 20 20 28 62 31 20 28 6c 6f 67 61 6e ytes.0).255)).........(b1.(logan
1d2c0 64 20 28 61 72 65 66 20 62 79 74 65 73 20 31 29 20 32 35 35 29 29 0a 20 20 20 20 20 20 20 20 28 d.(aref.bytes.1).255)).........(
1d2e0 62 32 20 28 6c 6f 67 61 6e 64 20 28 61 72 65 66 20 62 79 74 65 73 20 32 29 20 32 35 35 29 29 0a b2.(logand.(aref.bytes.2).255)).
1d300 20 20 20 20 20 20 20 20 28 62 33 20 28 6c 6f 67 61 6e 64 20 28 61 72 65 66 20 62 79 74 65 73 20 ........(b3.(logand.(aref.bytes.
1d320 33 29 20 32 35 35 29 29 29 0a 20 20 20 20 28 6c 65 74 20 28 28 72 65 73 75 6c 74 20 28 2b 20 28 3).255))).....(let.((result.(+.(
1d340 61 73 68 20 62 30 20 32 34 29 20 28 61 73 68 20 62 31 20 31 36 29 20 28 61 73 68 20 62 32 20 38 ash.b0.24).(ash.b1.16).(ash.b2.8
1d360 29 20 62 33 29 29 29 0a 20 20 20 20 20 20 28 69 66 20 28 3e 3d 20 62 30 20 23 78 38 30 29 20 28 ).b3))).......(if.(>=.b0.#x80).(
1d380 2d 20 72 65 73 75 6c 74 20 28 61 73 68 20 31 20 33 32 29 29 20 72 65 73 75 6c 74 29 29 29 29 0a -.result.(ash.1.32)).result)))).
1d3a0 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 62 79 74 65 73 2d 74 6f 2d .(defun.gptel-bedrock--bytes-to-
1d3c0 69 6e 74 36 34 20 28 62 79 74 65 73 29 0a 20 20 22 43 6f 6e 76 65 72 74 20 38 2d 62 79 74 65 20 int64.(bytes)..."Convert.8-byte.
1d3e0 73 74 72 69 6e 67 20 42 59 54 45 53 20 74 6f 20 62 69 67 2d 65 6e 64 69 61 6e 20 73 69 67 6e 65 string.BYTES.to.big-endian.signe
1d400 64 20 69 6e 74 65 67 65 72 2e 22 0a 20 20 28 6c 65 74 20 28 28 62 30 20 28 6c 6f 67 61 6e 64 20 d.integer."...(let.((b0.(logand.
1d420 28 61 72 65 66 20 62 79 74 65 73 20 30 29 20 32 35 35 29 29 0a 20 20 20 20 20 20 20 20 28 62 31 (aref.bytes.0).255)).........(b1
1d440 20 28 6c 6f 67 61 6e 64 20 28 61 72 65 66 20 62 79 74 65 73 20 31 29 20 32 35 35 29 29 0a 20 20 .(logand.(aref.bytes.1).255))...
1d460 20 20 20 20 20 20 28 62 32 20 28 6c 6f 67 61 6e 64 20 28 61 72 65 66 20 62 79 74 65 73 20 32 29 ......(b2.(logand.(aref.bytes.2)
1d480 20 32 35 35 29 29 0a 20 20 20 20 20 20 20 20 28 62 33 20 28 6c 6f 67 61 6e 64 20 28 61 72 65 66 .255)).........(b3.(logand.(aref
1d4a0 20 62 79 74 65 73 20 33 29 20 32 35 35 29 29 0a 20 20 20 20 20 20 20 20 28 62 34 20 28 6c 6f 67 .bytes.3).255)).........(b4.(log
1d4c0 61 6e 64 20 28 61 72 65 66 20 62 79 74 65 73 20 34 29 20 32 35 35 29 29 0a 20 20 20 20 20 20 20 and.(aref.bytes.4).255))........
1d4e0 20 28 62 35 20 28 6c 6f 67 61 6e 64 20 28 61 72 65 66 20 62 79 74 65 73 20 35 29 20 32 35 35 29 .(b5.(logand.(aref.bytes.5).255)
1d500 29 0a 20 20 20 20 20 20 20 20 28 62 36 20 28 6c 6f 67 61 6e 64 20 28 61 72 65 66 20 62 79 74 65 ).........(b6.(logand.(aref.byte
1d520 73 20 36 29 20 32 35 35 29 29 0a 20 20 20 20 20 20 20 20 28 62 37 20 28 6c 6f 67 61 6e 64 20 28 s.6).255)).........(b7.(logand.(
1d540 61 72 65 66 20 62 79 74 65 73 20 37 29 20 32 35 35 29 29 29 0a 20 20 20 20 28 6c 65 74 20 28 28 aref.bytes.7).255))).....(let.((
1d560 72 65 73 75 6c 74 2d 75 36 33 20 28 2b 20 28 61 73 68 20 28 6c 6f 67 61 6e 64 20 62 30 20 23 78 result-u63.(+.(ash.(logand.b0.#x
1d580 37 66 29 20 35 36 29 20 28 61 73 68 20 62 31 20 34 38 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 7f).56).(ash.b1.48).............
1d5a0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 73 68 20 62 32 20 34 30 29 20 28 61 73 68 20 62 33 .............(ash.b2.40).(ash.b3
1d5c0 20 33 32 29 20 28 61 73 68 20 62 34 20 32 34 29 20 28 61 73 68 20 62 35 20 31 36 29 20 28 61 73 .32).(ash.b4.24).(ash.b5.16).(as
1d5e0 68 20 62 36 20 38 29 20 62 37 29 29 29 0a 20 20 20 20 20 20 28 69 66 20 28 3e 3d 20 62 30 20 23 h.b6.8).b7))).......(if.(>=.b0.#
1d600 78 38 30 29 0a 20 20 20 20 20 20 20 20 20 20 28 2d 20 72 65 73 75 6c 74 2d 75 36 33 20 28 61 73 x80)...........(-.result-u63.(as
1d620 68 20 31 20 36 33 29 29 0a 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 2d 75 36 33 29 29 29 29 0a h.1.63)).........result-u63)))).
1d640 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 62 79 74 65 73 2d 74 6f 2d .(defun.gptel-bedrock--bytes-to-
1d660 75 75 69 64 20 28 62 79 74 65 73 29 0a 20 20 22 43 6f 6e 76 65 72 74 20 61 20 31 36 2d 62 79 74 uuid.(bytes)..."Convert.a.16-byt
1d680 65 20 75 6e 69 62 79 74 65 20 42 59 54 45 53 20 74 6f 20 61 20 33 36 20 63 68 61 72 61 63 74 65 e.unibyte.BYTES.to.a.36.characte
1d6a0 72 20 55 55 49 44 20 73 74 72 69 6e 67 2e 22 0a 20 20 28 75 6e 6c 65 73 73 20 28 61 6e 64 20 28 r.UUID.string."...(unless.(and.(
1d6c0 73 74 72 69 6e 67 70 20 62 79 74 65 73 29 20 28 3d 20 28 6c 65 6e 67 74 68 20 62 79 74 65 73 29 stringp.bytes).(=.(length.bytes)
1d6e0 20 31 36 29 29 0a 20 20 20 20 28 65 72 72 6f 72 20 22 49 6e 70 75 74 20 6d 75 73 74 20 62 65 20 .16)).....(error."Input.must.be.
1d700 61 20 31 36 2d 62 79 74 65 20 75 6e 69 62 79 74 65 20 73 74 72 69 6e 67 22 29 29 0a 20 20 28 6c a.16-byte.unibyte.string"))...(l
1d720 65 74 20 28 28 68 65 78 20 28 6d 61 70 63 6f 6e 63 61 74 20 28 6c 61 6d 62 64 61 20 28 69 29 20 et.((hex.(mapconcat.(lambda.(i).
1d740 28 66 6f 72 6d 61 74 20 22 25 30 32 78 22 20 28 61 72 65 66 20 62 79 74 65 73 20 69 29 29 29 20 (format."%02x".(aref.bytes.i))).
1d760 28 6e 75 6d 62 65 72 2d 73 65 71 75 65 6e 63 65 20 30 20 31 35 29 20 22 22 29 29 29 0a 20 20 20 (number-sequence.0.15)."")))....
1d780 20 28 66 6f 72 6d 61 74 20 22 25 73 2d 25 73 2d 25 73 2d 25 73 2d 25 73 22 0a 20 20 20 20 20 20 .(format."%s-%s-%s-%s-%s".......
1d7a0 20 20 20 20 20 20 28 73 75 62 73 74 72 69 6e 67 20 68 65 78 20 30 20 38 29 0a 20 20 20 20 20 20 ......(substring.hex.0.8).......
1d7c0 20 20 20 20 20 20 28 73 75 62 73 74 72 69 6e 67 20 68 65 78 20 38 20 31 32 29 0a 20 20 20 20 20 ......(substring.hex.8.12)......
1d7e0 20 20 20 20 20 20 20 28 73 75 62 73 74 72 69 6e 67 20 68 65 78 20 31 32 20 31 36 29 0a 20 20 20 .......(substring.hex.12.16)....
1d800 20 20 20 20 20 20 20 20 20 28 73 75 62 73 74 72 69 6e 67 20 68 65 78 20 31 36 20 32 30 29 0a 20 .........(substring.hex.16.20)..
1d820 20 20 20 20 20 20 20 20 20 20 20 28 73 75 62 73 74 72 69 6e 67 20 68 65 78 20 32 30 20 33 32 29 ...........(substring.hex.20.32)
1d840 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 61 73 73 65 6d )))..(defun.gptel-bedrock--assem
1d860 62 6c 65 2d 63 6f 6e 74 65 6e 74 2d 62 6c 6f 63 6b 73 20 28 65 76 65 6e 74 73 29 0a 20 20 22 42 ble-content-blocks.(events)..."B
1d880 75 69 6c 64 20 61 20 63 6f 6d 70 6c 65 74 65 64 20 70 72 6f 6d 70 74 20 6f 62 6a 65 63 74 20 63 uild.a.completed.prompt.object.c
1d8a0 6f 6e 74 61 69 6e 65 64 20 66 72 6f 6d 20 45 56 45 4e 54 53 2e 0a 45 56 45 4e 54 53 20 73 68 6f ontained.from.EVENTS..EVENTS.sho
1d8c0 75 6c 64 20 62 65 20 61 20 6c 69 73 74 20 6f 66 20 6d 65 73 73 61 67 65 53 74 61 72 74 2c 20 63 uld.be.a.list.of.messageStart,.c
1d8e0 6f 6e 74 65 6e 74 42 6c 6f 63 6b 53 74 61 72 74 2c 0a 63 6f 6e 74 65 6e 74 42 6c 6f 63 6b 44 65 ontentBlockStart,.contentBlockDe
1d900 6c 74 61 2c 20 61 6e 64 20 63 6f 6e 74 65 6e 74 42 6c 6f 63 6b 53 74 6f 70 20 73 74 72 65 61 6d lta,.and.contentBlockStop.stream
1d920 20 6d 65 73 73 61 67 65 73 20 61 73 0a 72 65 74 75 72 6e 65 64 20 62 79 20 60 67 70 74 65 6c 2d .messages.as.returned.by.`gptel-
1d940 62 65 64 72 6f 63 6b 2d 2d 70 61 72 73 65 2d 73 74 72 65 61 6d 2d 6d 65 73 73 61 67 65 27 2c 20 bedrock--parse-stream-message',.
1d960 69 6e 20 74 68 65 20 6f 72 64 65 72 0a 72 65 63 65 69 76 65 64 2e 22 0a 20 20 28 6c 65 74 20 28 in.the.order.received."...(let.(
1d980 28 62 6c 6f 63 6b 73 20 28 6d 61 6b 65 2d 68 61 73 68 2d 74 61 62 6c 65 20 3a 74 65 73 74 20 23 (blocks.(make-hash-table.:test.#
1d9a0 27 65 71 6c 29 29 0a 20 20 20 20 20 20 20 20 72 6f 6c 65 20 63 6f 6e 74 65 6e 74 73 29 0a 20 20 'eql)).........role.contents)...
1d9c0 20 20 28 64 6f 6c 69 73 74 20 28 65 76 65 6e 74 20 65 76 65 6e 74 73 29 0a 20 20 20 20 20 20 28 ..(dolist.(event.events).......(
1d9e0 6c 65 74 2a 20 28 28 68 65 61 64 65 72 73 20 28 70 6c 69 73 74 2d 67 65 74 20 65 76 65 6e 74 20 let*.((headers.(plist-get.event.
1da00 3a 68 65 61 64 65 72 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 61 79 6c 6f 61 64 :headers))..............(payload
1da20 20 28 70 6c 69 73 74 2d 67 65 74 20 65 76 65 6e 74 20 3a 70 61 79 6c 6f 61 64 29 29 0a 20 20 20 .(plist-get.event.:payload))....
1da40 20 20 20 20 20 20 20 20 20 20 28 65 76 65 6e 74 2d 74 79 70 65 20 28 61 73 73 6f 63 2d 64 65 66 ..........(event-type.(assoc-def
1da60 61 75 6c 74 20 22 3a 65 76 65 6e 74 2d 74 79 70 65 22 20 68 65 61 64 65 72 73 29 29 29 0a 20 20 ault.":event-type".headers)))...
1da80 20 20 20 20 20 20 28 70 63 61 73 65 20 65 76 65 6e 74 2d 74 79 70 65 0a 20 20 20 20 20 20 20 20 ......(pcase.event-type.........
1daa0 20 20 28 22 6d 65 73 73 61 67 65 53 74 61 72 74 22 20 28 73 65 74 71 20 72 6f 6c 65 20 28 70 6c ..("messageStart".(setq.role.(pl
1dac0 69 73 74 2d 67 65 74 20 70 61 79 6c 6f 61 64 20 3a 72 6f 6c 65 29 29 29 0a 20 20 20 20 20 20 20 ist-get.payload.:role)))........
1dae0 20 20 20 28 22 63 6f 6e 74 65 6e 74 42 6c 6f 63 6b 53 74 61 72 74 22 0a 20 20 20 20 20 20 20 20 ...("contentBlockStart".........
1db00 20 20 20 28 70 75 74 68 61 73 68 20 28 70 6c 69 73 74 2d 67 65 74 20 70 61 79 6c 6f 61 64 20 3a ...(puthash.(plist-get.payload.:
1db20 63 6f 6e 74 65 6e 74 42 6c 6f 63 6b 49 6e 64 65 78 29 20 28 6c 69 73 74 20 65 76 65 6e 74 29 20 contentBlockIndex).(list.event).
1db40 62 6c 6f 63 6b 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 22 63 6f 6e 74 65 6e 74 42 6c 6f 63 blocks))...........("contentBloc
1db60 6b 44 65 6c 74 61 22 0a 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 65 76 65 6e 74 20 28 kDelta"............(push.event.(
1db80 67 65 74 68 61 73 68 20 28 70 6c 69 73 74 2d 67 65 74 20 70 61 79 6c 6f 61 64 20 3a 63 6f 6e 74 gethash.(plist-get.payload.:cont
1dba0 65 6e 74 42 6c 6f 63 6b 49 6e 64 65 78 29 20 62 6c 6f 63 6b 73 29 29 29 0a 20 20 20 20 20 20 20 entBlockIndex).blocks)))........
1dbc0 20 20 20 28 22 63 6f 6e 74 65 6e 74 42 6c 6f 63 6b 53 74 6f 70 22 0a 20 20 20 20 20 20 20 20 20 ...("contentBlockStop"..........
1dbe0 20 20 28 6c 65 74 2a 20 28 28 62 6c 6f 63 6b 2d 69 6e 64 65 78 20 28 70 6c 69 73 74 2d 67 65 74 ..(let*.((block-index.(plist-get
1dc00 20 70 61 79 6c 6f 61 64 20 3a 63 6f 6e 74 65 6e 74 42 6c 6f 63 6b 49 6e 64 65 78 29 29 0a 20 20 .payload.:contentBlockIndex))...
1dc20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 6c 6f 63 6b 2d 65 76 65 6e 74 73 20 28 6e ................(block-events.(n
1dc40 72 65 76 65 72 73 65 20 28 67 65 74 68 61 73 68 20 62 6c 6f 63 6b 2d 69 6e 64 65 78 20 62 6c 6f reverse.(gethash.block-index.blo
1dc60 63 6b 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 74 61 72 74 20 cks)))...................(start.
1dc80 28 63 61 72 20 62 6c 6f 63 6b 2d 65 76 65 6e 74 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 (car.block-events)).............
1dca0 20 20 20 20 20 20 28 64 65 6c 74 61 73 20 28 63 64 72 20 62 6c 6f 63 6b 2d 65 76 65 6e 74 73 29 ......(deltas.(cdr.block-events)
1dcc0 29 29 0a 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 74 6f 6f 6c ))..............(when-let.((tool
1dce0 2d 75 73 65 20 28 6d 61 70 2d 6e 65 73 74 65 64 2d 65 6c 74 20 73 74 61 72 74 20 27 28 3a 70 61 -use.(map-nested-elt.start.'(:pa
1dd00 79 6c 6f 61 64 20 3a 73 74 61 72 74 20 3a 74 6f 6f 6c 55 73 65 29 29 29 29 0a 20 20 20 20 20 20 yload.:start.:toolUse)))).......
1dd20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 69 64 20 28 70 6c 69 73 74 2d 67 65 74 20 74 6f .........(let.((id.(plist-get.to
1dd40 6f 6c 2d 75 73 65 20 3a 74 6f 6f 6c 55 73 65 49 64 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 ol-use.:toolUseId)).............
1dd60 20 20 20 20 20 20 20 20 20 28 6e 61 6d 65 20 28 70 6c 69 73 74 2d 67 65 74 20 74 6f 6f 6c 2d 75 .........(name.(plist-get.tool-u
1dd80 73 65 20 3a 6e 61 6d 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 se.:name))......................
1dda0 28 69 6e 70 75 74 20 28 67 70 74 65 6c 2d 2d 6a 73 6f 6e 2d 72 65 61 64 2d 73 74 72 69 6e 67 0a (input.(gptel--json-read-string.
1ddc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 .............................(ma
1dde0 70 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 20 20 20 20 pconcat.........................
1de00 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 64 65 6c 74 61 29 20 28 6d 61 70 2d 6e 65 73 74 65 ......(lambda.(delta).(map-neste
1de20 64 2d 65 6c 74 20 64 65 6c 74 61 20 27 28 3a 70 61 79 6c 6f 61 64 20 3a 64 65 6c 74 61 20 3a 74 d-elt.delta.'(:payload.:delta.:t
1de40 6f 6f 6c 55 73 65 20 3a 69 6e 70 75 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 oolUse.:input)))................
1de60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 6c 74 61 73 29 29 29 29 0a 20 20 20 20 20 20 ...............deltas)))).......
1de80 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ...........(push................
1dea0 20 20 20 28 6c 69 73 74 20 3a 74 6f 6f 6c 55 73 65 20 28 6c 69 73 74 20 3a 69 6e 70 75 74 20 69 ...(list.:toolUse.(list.:input.i
1dec0 6e 70 75 74 20 3a 6e 61 6d 65 20 6e 61 6d 65 20 3a 74 6f 6f 6c 55 73 65 49 64 20 69 64 29 29 0a nput.:name.name.:toolUseId.id)).
1dee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 65 6e 74 73 29 29 29 0a 20 20 ..................contents)))...
1df00 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 20 28 28 74 65 78 74 73 20 28 64 65 ...........(when-let.((texts.(de
1df20 6c 71 20 6e 69 6c 20 28 6d 61 70 63 61 72 20 28 6c 61 6d 62 64 61 20 28 64 29 20 28 6d 61 70 2d lq.nil.(mapcar.(lambda.(d).(map-
1df40 6e 65 73 74 65 64 2d 65 6c 74 20 64 20 27 28 3a 70 61 79 6c 6f 61 64 20 3a 64 65 6c 74 61 20 3a nested-elt.d.'(:payload.:delta.:
1df60 74 65 78 74 29 29 29 20 64 65 6c 74 61 73 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 text))).deltas))))..............
1df80 20 20 28 70 75 73 68 20 28 6c 69 73 74 20 3a 74 65 78 74 20 28 61 70 70 6c 79 20 23 27 63 6f 6e ..(push.(list.:text.(apply.#'con
1dfa0 63 61 74 20 74 65 78 74 73 29 29 20 63 6f 6e 74 65 6e 74 73 29 29 0a 20 20 20 20 20 20 20 20 20 cat.texts)).contents))..........
1dfc0 20 20 20 20 3b 3b 20 43 75 72 72 65 6e 74 6c 79 20 77 65 20 64 69 73 63 61 72 64 20 61 6e 79 20 ....;;.Currently.we.discard.any.
1dfe0 72 65 61 73 6f 6e 69 6e 67 20 63 6f 6e 74 65 6e 74 20 62 75 74 20 74 68 69 73 20 77 6f 75 6c 64 reasoning.content.but.this.would
1e000 20 62 65 20 74 68 65 20 73 70 6f 74 20 74 6f 20 68 61 6e 64 6c 65 20 69 74 0a 20 20 20 20 20 20 .be.the.spot.to.handle.it.......
1e020 20 20 20 20 20 20 20 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 5f 20 28 65 72 72 6f 72 20 22 55 .......))...........(_.(error."U
1e040 6e 65 78 70 65 63 74 65 64 20 65 76 65 6e 74 2d 74 79 70 65 20 25 53 22 20 65 76 65 6e 74 2d 74 nexpected.event-type.%S".event-t
1e060 79 70 65 29 29 29 29 29 0a 20 20 20 20 28 6c 69 73 74 20 3a 72 6f 6c 65 20 72 6f 6c 65 20 3a 63 ype))))).....(list.:role.role.:c
1e080 6f 6e 74 65 6e 74 20 28 76 63 6f 6e 63 61 74 20 28 6e 72 65 76 65 72 73 65 20 63 6f 6e 74 65 6e ontent.(vconcat.(nreverse.conten
1e0a0 74 73 29 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 ts)))))..(cl-defmethod.gptel--pa
1e0c0 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 62 65 64 72 rse-buffer.((_backend.gptel-bedr
1e0e0 6f 63 6b 29 20 26 6f 70 74 69 6f 6e 61 6c 20 6d 61 78 2d 65 6e 74 72 69 65 73 29 0a 20 20 22 50 ock).&optional.max-entries)..."P
1e100 61 72 73 65 20 63 75 72 72 65 6e 74 20 62 75 66 66 65 72 20 61 6e 64 20 72 65 74 75 72 6e 20 61 arse.current.buffer.and.return.a
1e120 20 6c 69 73 74 20 6f 66 20 70 72 6f 6d 70 74 20 6f 62 6a 65 63 74 73 20 66 6f 72 20 42 65 64 72 .list.of.prompt.objects.for.Bedr
1e140 6f 63 6b 2e 0a 0a 4d 41 58 2d 45 4e 54 52 49 45 53 20 69 73 20 74 68 65 20 6d 61 78 69 6d 75 6d ock...MAX-ENTRIES.is.the.maximum
1e160 20 6e 75 6d 62 65 72 20 6f 66 20 70 72 6f 6d 70 74 73 20 74 6f 20 69 6e 63 6c 75 64 65 2e 22 0a .number.of.prompts.to.include.".
1e180 20 20 28 75 6e 6c 65 73 73 20 6d 61 78 2d 65 6e 74 72 69 65 73 20 28 73 65 74 71 20 6d 61 78 2d ..(unless.max-entries.(setq.max-
1e1a0 65 6e 74 72 69 65 73 20 6d 6f 73 74 2d 70 6f 73 69 74 69 76 65 2d 66 69 78 6e 75 6d 29 29 0a 20 entries.most-positive-fixnum))..
1e1c0 20 28 6c 65 74 20 28 28 70 72 6f 6d 70 74 73 20 6e 69 6c 29 20 28 70 72 65 76 2d 70 74 20 28 70 .(let.((prompts.nil).(prev-pt.(p
1e1e0 6f 69 6e 74 29 29 0a 20 20 20 20 20 20 20 20 28 69 6e 63 6c 75 64 65 2d 6d 65 64 69 61 20 28 61 oint)).........(include-media.(a
1e200 6e 64 20 67 70 74 65 6c 2d 74 72 61 63 6b 2d 6d 65 64 69 61 20 28 67 70 74 65 6c 2d 2d 6d 6f 64 nd.gptel-track-media.(gptel--mod
1e220 65 6c 2d 63 61 70 61 62 6c 65 2d 70 20 27 6d 65 64 69 61 29 29 29 29 0a 20 20 20 20 28 63 6c 2d el-capable-p.'media)))).....(cl-
1e240 66 6c 65 74 20 28 28 63 61 70 74 75 72 65 2d 70 72 6f 6d 70 74 20 28 72 6f 6c 65 20 62 65 67 20 flet.((capture-prompt.(role.beg.
1e260 65 6e 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 63 6f 6e end).................(let*.((con
1e280 74 65 6e 74 20 28 69 66 20 69 6e 63 6c 75 64 65 2d 6d 65 64 69 61 0a 20 20 20 20 20 20 20 20 20 tent.(if.include-media..........
1e2a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 62 ........................(gptel-b
1e2c0 65 64 72 6f 63 6b 2d 2d 70 61 72 73 65 2d 6d 75 6c 74 69 70 61 72 74 0a 20 20 20 20 20 20 20 20 edrock--parse-multipart.........
1e2e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c ..........................(gptel
1e300 2d 2d 70 61 72 73 65 2d 6d 65 64 69 61 2d 6c 69 6e 6b 73 20 6d 61 6a 6f 72 2d 6d 6f 64 65 20 62 --parse-media-links.major-mode.b
1e320 65 67 20 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 eg.end))........................
1e340 20 20 20 20 20 20 20 20 20 20 60 5b 28 3a 74 65 78 74 20 2c 28 67 70 74 65 6c 2d 2d 74 72 69 6d ..........`[(:text.,(gptel--trim
1e360 2d 70 72 65 66 69 78 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -prefixes.......................
1e380 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 73 75 62 .....................(buffer-sub
1e3a0 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 5d string-no-properties.beg.end)))]
1e3c0 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 70 72 6f 6d 70 ))........................(promp
1e3e0 74 20 28 6c 69 73 74 20 3a 72 6f 6c 65 20 72 6f 6c 65 20 3a 63 6f 6e 74 65 6e 74 20 63 6f 6e 74 t.(list.:role.role.:content.cont
1e400 65 6e 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 70 ent)))...................(push.p
1e420 72 6f 6d 70 74 20 70 72 6f 6d 70 74 73 29 29 29 29 0a 0a 20 20 20 20 20 20 28 69 66 20 28 6f 72 rompt.prompts))))........(if.(or
1e440 20 67 70 74 65 6c 2d 6d 6f 64 65 20 67 70 74 65 6c 2d 74 72 61 63 6b 2d 72 65 73 70 6f 6e 73 65 .gptel-mode.gptel-track-response
1e460 29 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 69 6c 65 20 28 61 6e 64 20 28 3e 20 6d 61 78 2d 65 )...........(while.(and.(>.max-e
1e480 6e 74 72 69 65 73 20 30 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ntries.0).......................
1e4a0 28 2f 3d 20 70 72 65 76 2d 70 74 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 0a 20 20 20 20 20 20 20 (/=.prev-pt.(point-min))........
1e4c0 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 72 65 76 69 ...............(goto-char.(previ
1e4e0 6f 75 73 2d 73 69 6e 67 6c 65 2d 70 72 6f 70 65 72 74 79 2d 63 68 61 6e 67 65 0a 20 20 20 20 20 ous-single-property-change......
1e500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6f .............................(po
1e520 69 6e 74 29 20 27 67 70 74 65 6c 20 6e 69 6c 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 29 29 0a 20 int).'gptel.nil.(point-min))))..
1e540 20 20 20 20 20 20 20 20 20 20 20 28 63 61 70 74 75 72 65 2d 70 72 6f 6d 70 74 20 28 70 63 61 73 ...........(capture-prompt.(pcas
1e560 65 20 28 67 65 74 2d 63 68 61 72 2d 70 72 6f 70 65 72 74 79 20 28 70 6f 69 6e 74 29 20 27 67 70 e.(get-char-property.(point).'gp
1e580 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 20 20 tel)............................
1e5a0 20 20 20 28 27 72 65 73 70 6f 6e 73 65 20 22 61 73 73 69 73 74 61 6e 74 22 29 0a 20 20 20 20 20 ...('response."assistant")......
1e5c0 20 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 27 6e 69 6c 20 22 .........................('nil."
1e5e0 75 73 65 72 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 20 user")).........................
1e600 20 20 20 20 28 70 6f 69 6e 74 29 20 70 72 65 76 2d 70 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 ....(point).prev-pt)............
1e620 20 28 73 65 74 71 20 70 72 65 76 2d 70 74 20 28 70 6f 69 6e 74 29 29 0a 20 20 20 20 20 20 20 20 .(setq.prev-pt.(point)).........
1e640 20 20 20 20 28 63 6c 2d 64 65 63 66 20 6d 61 78 2d 65 6e 74 72 69 65 73 29 29 0a 20 20 20 20 20 ....(cl-decf.max-entries))......
1e660 20 20 20 28 63 61 70 74 75 72 65 2d 70 72 6f 6d 70 74 20 22 75 73 65 72 22 20 28 70 6f 69 6e 74 ...(capture-prompt."user".(point
1e680 2d 6d 69 6e 29 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 29 0a 20 20 20 20 20 20 70 72 6f 6d 70 74 -min).(point-max))).......prompt
1e6a0 73 29 29 29 0a 0a 28 64 65 66 63 6f 6e 73 74 20 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 69 s)))..(defconst.gptel-bedrock--i
1e6c0 6d 61 67 65 2d 66 6f 72 6d 61 74 73 0a 20 20 27 28 28 22 69 6d 61 67 65 2f 6a 70 67 22 20 2e 20 mage-formats...'(("image/jpg"...
1e6e0 22 6a 70 65 67 22 29 0a 20 20 20 20 28 22 69 6d 61 67 65 2f 6a 70 65 67 22 20 2e 20 22 6a 70 65 "jpeg").....("image/jpeg"..."jpe
1e700 67 22 29 0a 20 20 20 20 28 22 69 6d 61 67 65 2f 70 6e 67 22 20 2e 20 22 70 6e 67 22 29 0a 20 20 g").....("image/png"..."png")...
1e720 20 20 28 22 69 6d 61 67 65 2f 67 69 66 22 20 2e 20 22 67 69 66 22 29 0a 20 20 20 20 28 22 69 6d ..("image/gif"..."gif").....("im
1e740 61 67 65 2f 77 65 62 70 22 20 2e 20 22 77 65 62 70 22 29 29 0a 20 20 22 4d 61 70 20 6f 66 20 6d age/webp"..."webp"))..."Map.of.m
1e760 69 6d 65 20 74 79 70 65 20 74 6f 20 69 6d 61 67 65 20 66 6f 72 6d 61 74 73 20 61 73 20 75 73 65 ime.type.to.image.formats.as.use
1e780 64 20 69 6e 20 41 57 53 27 73 20 49 6d 61 67 65 42 6c 6f 63 6b 2e 22 29 0a 0a 28 64 65 66 63 6f d.in.AWS's.ImageBlock.")..(defco
1e7a0 6e 73 74 20 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 64 6f 63 2d 66 6f 72 6d 61 74 73 0a 20 nst.gptel-bedrock--doc-formats..
1e7c0 20 27 28 28 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 70 64 66 22 20 2e 20 22 70 64 66 22 29 0a 20 .'(("application/pdf"..."pdf")..
1e7e0 20 20 20 28 22 74 65 78 74 2f 63 73 76 22 20 2e 20 22 63 73 76 22 29 0a 20 20 20 20 28 22 61 70 ...("text/csv"..."csv").....("ap
1e800 70 6c 69 63 61 74 69 6f 6e 2f 6d 73 77 6f 72 64 22 20 2e 20 22 64 6f 63 22 29 0a 20 20 20 20 28 plication/msword"..."doc").....(
1e820 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 76 6e 64 2e 6f 70 65 6e 78 6d 6c 66 6f 72 6d 61 74 73 2d "application/vnd.openxmlformats-
1e840 6f 66 66 69 63 65 64 6f 63 75 6d 65 6e 74 2e 77 6f 72 64 70 72 6f 63 65 73 73 69 6e 67 6d 6c 2e officedocument.wordprocessingml.
1e860 64 6f 63 75 6d 65 6e 74 22 20 2e 20 22 64 6f 63 78 22 29 0a 20 20 20 20 28 22 61 70 70 6c 69 63 document"..."docx").....("applic
1e880 61 74 69 6f 6e 2f 76 6e 64 2e 6d 73 2d 65 78 63 65 6c 22 20 2e 20 22 78 6c 73 22 29 0a 20 20 20 ation/vnd.ms-excel"..."xls")....
1e8a0 20 28 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 76 6e 64 2e 6f 70 65 6e 78 6d 6c 66 6f 72 6d 61 74 .("application/vnd.openxmlformat
1e8c0 73 2d 6f 66 66 69 63 65 64 6f 63 75 6d 65 6e 74 2e 73 70 72 65 61 64 73 68 65 65 74 6d 6c 2e 73 s-officedocument.spreadsheetml.s
1e8e0 68 65 65 74 22 20 2e 20 22 78 6c 73 78 22 29 0a 20 20 20 20 28 22 74 65 78 74 2f 68 74 6d 6c 22 heet"..."xlsx").....("text/html"
1e900 20 2e 20 22 68 74 6d 6c 22 29 0a 20 20 20 20 28 22 74 65 78 74 2f 70 6c 61 69 6e 22 20 2e 20 22 ..."html").....("text/plain"..."
1e920 74 78 74 22 29 0a 20 20 20 20 28 22 74 65 78 74 2f 6d 61 72 6b 64 6f 77 6e 22 20 2e 20 22 6d 64 txt").....("text/markdown"..."md
1e940 22 29 29 0a 20 20 22 4d 61 70 20 6f 66 20 6d 69 6d 65 20 74 79 70 65 20 74 6f 20 64 6f 63 75 6d "))..."Map.of.mime.type.to.docum
1e960 65 6e 74 20 66 6f 72 6d 61 74 73 20 61 73 20 75 73 65 64 20 69 6e 20 41 57 53 27 73 20 44 6f 63 ent.formats.as.used.in.AWS's.Doc
1e980 75 6d 65 6e 74 42 6c 6f 63 6b 2e 22 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 62 65 64 72 umentBlock.")..(defun.gptel-bedr
1e9a0 6f 63 6b 2d 2d 70 61 72 73 65 2d 6d 75 6c 74 69 70 61 72 74 20 28 70 61 72 74 73 29 0a 20 20 22 ock--parse-multipart.(parts)..."
1e9c0 43 6f 6e 76 65 72 74 20 61 20 6d 75 6c 74 69 70 61 72 74 20 70 72 6f 6d 70 74 20 50 41 52 54 53 Convert.a.multipart.prompt.PARTS
1e9e0 20 74 6f 20 74 68 65 20 41 57 53 20 42 65 64 72 6f 63 6b 20 41 50 49 20 66 6f 72 6d 61 74 2e 0a .to.the.AWS.Bedrock.API.format..
1ea00 0a 54 68 65 20 69 6e 70 75 74 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 74 65 78 74 20 61 6e 64 .The.input.is.a.list.of.text.and
1ea20 20 6d 65 64 69 61 20 70 6c 69 73 74 73 20 6f 66 20 74 68 65 20 66 6f 72 6d 3a 0a 20 28 28 3a 74 .media.plists.of.the.form:..((:t
1ea40 65 78 74 20 5c 22 73 6f 6d 65 20 74 65 78 74 5c 22 29 0a 20 20 28 3a 6d 65 64 69 61 20 5c 22 2f ext.\"some.text\")...(:media.\"/
1ea60 70 61 74 68 2f 74 6f 2f 6d 65 64 69 61 2e 70 6e 67 5c 22 20 3a 6d 69 6d 65 20 5c 22 69 6d 61 67 path/to/media.png\".:mime.\"imag
1ea80 65 2f 70 6e 67 5c 22 29 0a 20 20 28 3a 74 65 78 74 20 5c 22 4d 6f 72 65 20 74 65 78 74 5c 22 29 e/png\")...(:text.\"More.text\")
1eaa0 29 2e 0a 0a 54 68 65 20 6f 75 74 70 75 74 20 69 73 20 61 20 76 65 63 74 6f 72 20 6f 66 20 65 6e )...The.output.is.a.vector.of.en
1eac0 74 72 69 65 73 20 69 6e 20 42 65 64 72 6f 63 6b 20 41 50 49 20 66 6f 72 6d 61 74 2e 22 0a 20 20 tries.in.Bedrock.API.format."...
1eae0 28 74 68 72 65 61 64 2d 6c 61 73 74 20 70 61 72 74 73 0a 20 20 20 20 28 63 6c 2d 6d 61 70 6c 69 (thread-last.parts.....(cl-mapli
1eb00 73 74 0a 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 74 61 69 6c 29 0a 20 20 20 20 20 20 20 28 6c st......(lambda.(tail)........(l
1eb20 65 74 2a 20 28 28 70 61 72 74 20 28 63 61 72 20 74 61 69 6c 29 29 0a 20 20 20 20 20 20 20 20 20 et*.((part.(car.tail))..........
1eb40 20 20 20 20 20 28 74 65 78 74 20 28 70 6c 69 73 74 2d 67 65 74 20 70 61 72 74 20 3a 74 65 78 74 .....(text.(plist-get.part.:text
1eb60 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 69 6d 65 20 28 70 6c 69 73 74 2d 67 65 ))...............(mime.(plist-ge
1eb80 74 20 70 61 72 74 20 3a 6d 69 6d 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 65 t.part.:mime))...............(me
1eba0 64 69 61 20 28 70 6c 69 73 74 2d 67 65 74 20 70 61 72 74 20 3a 6d 65 64 69 61 29 29 0a 20 20 20 dia.(plist-get.part.:media))....
1ebc0 20 20 20 20 20 20 20 20 20 20 20 28 74 65 78 74 66 69 6c 65 20 28 70 6c 69 73 74 2d 67 65 74 20 ...........(textfile.(plist-get.
1ebe0 70 61 72 74 20 3a 74 65 78 74 66 69 6c 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 part.:textfile))...............f
1ec00 6f 72 6d 61 74 29 0a 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 ormat)..........(cond...........
1ec20 28 74 65 78 74 20 28 77 68 65 6e 20 28 6f 72 20 28 65 71 20 70 61 72 74 20 28 63 61 72 20 70 61 (text.(when.(or.(eq.part.(car.pa
1ec40 72 74 73 29 29 20 28 6e 75 6c 6c 20 28 63 64 72 20 74 61 69 6c 29 29 29 0a 20 20 20 20 20 20 20 rts)).(null.(cdr.tail)))........
1ec60 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 74 65 78 74 20 28 67 70 74 65 6c 2d 2d 74 72 ...........(setq.text.(gptel--tr
1ec80 69 6d 2d 70 72 65 66 69 78 65 73 20 74 65 78 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 im-prefixes.text))).............
1eca0 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 74 65 78 74 ....(unless.(string-empty-p.text
1ecc0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 60 28 3a 74 65 78 74 20 2c 74 65 78 )...................`(:text.,tex
1ece0 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 6d 65 64 69 61 0a 20 20 20 20 20 20 20 20 20 20 t)))...........(media...........
1ed00 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 28 73 65 74 71 20 66 6f 72 6d 61 74 .(cond.............((setq.format
1ed20 20 28 61 73 73 6f 63 20 6d 69 6d 65 20 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 69 6d 61 67 .(assoc.mime.gptel-bedrock--imag
1ed40 65 2d 66 6f 72 6d 61 74 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 60 28 3a 69 6d 61 67 e-formats))..............`(:imag
1ed60 65 20 28 3a 66 6f 72 6d 61 74 20 2c 28 63 64 72 20 66 6f 72 6d 61 74 29 20 3a 73 6f 75 72 63 65 e.(:format.,(cdr.format).:source
1ed80 20 28 3a 62 79 74 65 73 20 2c 28 67 70 74 65 6c 2d 2d 62 61 73 65 36 34 2d 65 6e 63 6f 64 65 20 .(:bytes.,(gptel--base64-encode.
1eda0 6d 65 64 69 61 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 28 73 65 74 71 20 66 6f media))))).............((setq.fo
1edc0 72 6d 61 74 20 28 61 73 73 6f 63 20 6d 69 6d 65 20 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d rmat.(assoc.mime.gptel-bedrock--
1ede0 64 6f 63 2d 66 6f 72 6d 61 74 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 60 28 3a 64 6f doc-formats))..............`(:do
1ee00 63 75 6d 65 6e 74 20 28 3a 66 6f 72 6d 61 74 20 2c 28 63 64 72 20 66 6f 72 6d 61 74 29 0a 20 20 cument.(:format.,(cdr.format)...
1ee20 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 6e 61 6d 65 20 2c 28 ........................:name.,(
1ee40 66 69 6c 65 2d 6e 61 6d 65 2d 6e 6f 6e 64 69 72 65 63 74 6f 72 79 20 6d 65 64 69 61 29 0a 20 20 file-name-nondirectory.media)...
1ee60 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 73 6f 75 72 63 65 20 ........................:source.
1ee80 28 3a 62 79 74 65 73 20 2c 28 67 70 74 65 6c 2d 2d 62 61 73 65 36 34 2d 65 6e 63 6f 64 65 20 6d (:bytes.,(gptel--base64-encode.m
1eea0 65 64 69 61 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 74 20 28 65 72 72 6f 72 20 edia))))).............(t.(error.
1eec0 22 55 6e 73 75 70 70 6f 72 74 65 64 20 4d 49 4d 45 20 74 79 70 65 20 25 73 20 66 6f 72 20 41 57 "Unsupported.MIME.type.%s.for.AW
1eee0 53 20 42 65 64 72 6f 63 6b 22 20 6d 69 6d 65 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 74 S.Bedrock".mime))))...........(t
1ef00 65 78 74 66 69 6c 65 20 60 28 3a 74 65 78 74 20 2c 28 77 69 74 68 2d 74 65 6d 70 2d 62 75 66 66 extfile.`(:text.,(with-temp-buff
1ef20 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 20 20 20 20 20 20 20 er..............................
1ef40 20 20 28 67 70 74 65 6c 2d 2d 69 6e 73 65 72 74 2d 66 69 6c 65 2d 73 74 72 69 6e 67 20 74 65 78 ..(gptel--insert-file-string.tex
1ef60 74 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 20 20 20 20 20 20 tfile)..........................
1ef80 20 20 20 20 20 20 28 62 75 66 66 65 72 2d 73 74 72 69 6e 67 29 29 29 29 29 29 29 29 0a 20 20 20 ......(buffer-string))))))))....
1efa0 20 28 64 65 6c 71 20 6e 69 6c 29 0a 20 20 20 20 28 76 63 6f 6e 63 61 74 29 29 29 0a 0a 3b 3b 20 .(delq.nil).....(vconcat)))..;;.
1efc0 67 70 74 65 6c 2d 2d 69 6e 6a 65 63 74 2d 70 72 6f 6d 70 74 20 6e 6f 74 20 6e 65 65 64 65 64 20 gptel--inject-prompt.not.needed.
1efe0 73 69 6e 63 65 20 74 68 65 20 64 65 66 61 75 6c 74 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e since.the.default.implementation
1f000 20 77 6f 72 6b 73 20 68 65 72 65 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c .works.here..(cl-defmethod.gptel
1f020 2d 2d 70 61 72 73 65 2d 74 6f 6f 6c 2d 72 65 73 75 6c 74 73 20 28 28 5f 62 61 63 6b 65 6e 64 20 --parse-tool-results.((_backend.
1f040 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 29 20 74 6f 6f 6c 2d 75 73 65 2d 72 65 71 75 65 73 74 73 gptel-bedrock).tool-use-requests
1f060 29 0a 20 20 22 52 65 74 75 72 6e 20 61 20 62 61 63 6b 65 6e 64 2d 61 70 70 72 6f 70 72 69 61 74 )..."Return.a.backend-appropriat
1f080 65 20 70 72 6f 6d 70 74 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 6f 6f 6c 20 63 61 6c 6c 20 72 65 e.prompt.containing.tool.call.re
1f0a0 73 75 6c 74 73 2e 0a 0a 54 4f 4f 4c 2d 55 53 45 2d 52 45 51 55 45 53 54 53 20 69 73 20 61 20 6c sults...TOOL-USE-REQUESTS.is.a.l
1f0c0 69 73 74 20 6f 66 20 72 65 71 75 65 73 74 20 70 6c 69 73 74 73 20 74 68 61 74 20 68 61 76 65 20 ist.of.request.plists.that.have.
1f0e0 62 65 65 6e 0a 63 6f 6d 70 6c 65 74 65 64 2e 20 20 52 65 74 75 72 6e 73 20 61 20 73 69 6e 67 6c been.completed...Returns.a.singl
1f100 65 20 70 72 6f 6d 70 74 20 6f 62 6a 65 63 74 20 74 6f 20 69 6e 6a 65 63 74 20 69 6e 74 6f 20 74 e.prompt.object.to.inject.into.t
1f120 68 65 0a 63 6f 6e 76 65 72 73 61 74 69 6f 6e 2e 22 0a 20 20 28 6c 69 73 74 0a 20 20 20 3a 72 6f he.conversation."...(list....:ro
1f140 6c 65 20 22 75 73 65 72 22 0a 20 20 20 3a 63 6f 6e 74 65 6e 74 0a 20 20 20 28 76 63 6f 6e 63 61 le."user"....:content....(vconca
1f160 74 0a 20 20 20 20 28 6d 61 70 63 61 72 0a 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 74 6f 6f 6c t.....(mapcar......(lambda.(tool
1f180 2d 63 61 6c 6c 29 0a 20 20 20 20 20 20 20 60 28 3a 74 6f 6f 6c 52 65 73 75 6c 74 20 28 3a 74 6f -call)........`(:toolResult.(:to
1f1a0 6f 6c 55 73 65 49 64 20 2c 28 70 6c 69 73 74 2d 67 65 74 20 74 6f 6f 6c 2d 63 61 6c 6c 20 3a 69 olUseId.,(plist-get.tool-call.:i
1f1c0 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 3a 73 74 61 74 75 73 d).......................:status
1f1e0 20 22 73 75 63 63 65 73 73 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ."success"......................
1f200 20 3a 63 6f 6e 74 65 6e 74 20 5b 28 3a 74 65 78 74 20 2c 28 70 6c 69 73 74 2d 67 65 74 20 74 6f .:content.[(:text.,(plist-get.to
1f220 6f 6c 2d 63 61 6c 6c 20 3a 72 65 73 75 6c 74 29 29 5d 29 29 29 0a 20 20 20 20 20 74 6f 6f 6c 2d ol-call.:result))])))......tool-
1f240 75 73 65 2d 72 65 71 75 65 73 74 73 29 29 29 29 0a 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d use-requests))))..(defvar.gptel-
1f260 62 65 64 72 6f 63 6b 2d 2d 61 77 73 2d 70 72 6f 66 69 6c 65 2d 63 61 63 68 65 20 6e 69 6c 0a 20 bedrock--aws-profile-cache.nil..
1f280 20 22 43 61 63 68 65 20 66 6f 72 20 41 57 53 20 70 72 6f 66 69 6c 65 20 63 72 65 64 65 6e 74 69 ."Cache.for.AWS.profile.credenti
1f2a0 61 6c 73 20 69 6e 20 74 68 65 20 66 6f 72 6d 20 6f 66 20 28 50 52 4f 46 49 4c 45 20 2e 20 43 52 als.in.the.form.of.(PROFILE...CR
1f2c0 45 44 53 29 2e 22 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 66 EDS).")..(defun.gptel-bedrock--f
1f2e0 65 74 63 68 2d 61 77 73 2d 70 72 6f 66 69 6c 65 2d 63 72 65 64 65 6e 74 69 61 6c 73 20 28 70 72 etch-aws-profile-credentials.(pr
1f300 6f 66 69 6c 65 20 26 6f 70 74 69 6f 6e 61 6c 20 63 6c 65 61 72 2d 63 61 63 68 65 29 0a 20 20 22 ofile.&optional.clear-cache)..."
1f320 46 65 74 63 68 20 26 20 63 61 63 68 65 20 41 57 53 20 63 72 65 64 65 6e 74 69 61 6c 73 20 66 6f Fetch.&.cache.AWS.credentials.fo
1f340 72 20 50 52 4f 46 49 4c 45 20 75 73 69 6e 67 20 61 77 73 2d 63 6c 69 2e 0a 0a 4e 6f 6e 2d 6e 69 r.PROFILE.using.aws-cli...Non-ni
1f360 6c 20 43 4c 45 41 52 2d 43 41 43 48 45 20 77 69 6c 6c 20 72 65 66 72 65 73 68 20 63 72 65 64 65 l.CLEAR-CACHE.will.refresh.crede
1f380 6e 74 69 61 6c 73 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 63 72 65 64 73 2d 6a 73 6f 6e 0a 20 20 ntials."...(let*.((creds-json...
1f3a0 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 63 65 6c 6c 20 28 6f 72 20 28 61 73 73 6f 63 20 .........(let.((cell.(or.(assoc.
1f3c0 70 72 6f 66 69 6c 65 20 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 61 77 73 2d 70 72 6f 66 69 profile.gptel-bedrock--aws-profi
1f3e0 6c 65 2d 63 61 63 68 65 20 23 27 73 74 72 69 6e 67 3d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 le-cache.#'string=).............
1f400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 61 72 20 28 70 75 73 68 20 28 63 6f 6e 73 20 ...............(car.(push.(cons.
1f420 70 72 6f 66 69 6c 65 20 6e 69 6c 29 20 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 61 77 73 2d profile.nil).gptel-bedrock--aws-
1f440 70 72 6f 66 69 6c 65 2d 63 61 63 68 65 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 profile-cache)))))..............
1f460 28 6f 72 20 28 61 6e 64 20 28 6e 6f 74 20 63 6c 65 61 72 2d 63 61 63 68 65 29 20 28 63 64 72 20 (or.(and.(not.clear-cache).(cdr.
1f480 63 65 6c 6c 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 66 20 28 63 cell))..................(setf.(c
1f4a0 64 72 20 63 65 6c 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 dr.cell)........................
1f4c0 28 77 69 74 68 2d 74 65 6d 70 2d 62 75 66 66 65 72 0a 09 09 20 20 20 20 20 20 20 20 20 20 20 28 (with-temp-buffer..............(
1f4e0 75 6e 6c 65 73 73 20 28 7a 65 72 6f 70 20 28 63 61 6c 6c 2d 70 72 6f 63 65 73 73 20 22 61 77 73 unless.(zerop.(call-process."aws
1f500 22 20 6e 69 6c 20 74 20 6e 69 6c 20 22 63 6f 6e 66 69 67 75 72 65 22 20 22 65 78 70 6f 72 74 2d ".nil.t.nil."configure"."export-
1f520 63 72 65 64 65 6e 74 69 61 6c 73 22 0a 09 09 09 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 credentials"....................
1f540 20 20 28 66 6f 72 6d 61 74 20 22 2d 2d 70 72 6f 66 69 6c 65 3d 25 73 22 20 70 72 6f 66 69 6c 65 ..(format."--profile=%s".profile
1f560 29 29 29 0a 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 73 65 72 2d 65 72 72 6f 72 20 22 )))................(user-error."
1f580 46 61 69 6c 65 64 20 74 6f 20 67 65 74 20 41 57 53 20 63 72 65 64 65 6e 74 69 61 6c 73 20 66 72 Failed.to.get.AWS.credentials.fr
1f5a0 6f 6d 20 70 72 6f 66 69 6c 65 22 29 29 0a 09 09 20 20 20 20 20 20 20 20 20 28 6a 73 6f 6e 2d 70 om.profile"))............(json-p
1f5c0 61 72 73 65 2d 73 74 72 69 6e 67 20 28 62 75 66 66 65 72 2d 73 74 72 69 6e 67 29 29 29 29 29 29 arse-string.(buffer-string))))))
1f5e0 29 0a 09 20 28 65 78 70 69 72 61 74 69 6f 6e 20 28 69 66 2d 6c 65 74 20 28 65 78 70 20 28 67 65 )...(expiration.(if-let.(exp.(ge
1f600 74 68 61 73 68 20 22 45 78 70 69 72 61 74 69 6f 6e 22 20 63 72 65 64 73 2d 6a 73 6f 6e 29 29 0a thash."Expiration".creds-json)).
1f620 09 09 09 20 20 20 20 20 28 64 61 74 65 2d 74 6f 2d 74 69 6d 65 20 65 78 70 29 29 29 29 0a 20 20 ........(date-to-time.exp))))...
1f640 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 28 28 74 69 6d 65 2d 6c 65 73 73 2d 70 20 28 63 75 72 ..(cond.......((time-less-p.(cur
1f660 72 65 6e 74 2d 74 69 6d 65 29 20 65 78 70 69 72 61 74 69 6f 6e 29 0a 20 20 20 20 20 20 20 28 6c rent-time).expiration)........(l
1f680 65 74 20 28 28 61 63 63 65 73 73 2d 6b 65 79 20 28 67 65 74 68 61 73 68 20 22 41 63 63 65 73 73 et.((access-key.(gethash."Access
1f6a0 4b 65 79 49 64 22 20 63 72 65 64 73 2d 6a 73 6f 6e 29 29 0a 09 20 20 20 20 20 28 73 65 63 72 65 KeyId".creds-json)).......(secre
1f6c0 74 2d 6b 65 79 20 28 67 65 74 68 61 73 68 20 22 53 65 63 72 65 74 41 63 63 65 73 73 4b 65 79 22 t-key.(gethash."SecretAccessKey"
1f6e0 20 63 72 65 64 73 2d 6a 73 6f 6e 29 29 0a 09 20 20 20 20 20 28 73 65 73 73 69 6f 6e 2d 74 6f 6b .creds-json)).......(session-tok
1f700 65 6e 20 28 67 65 74 68 61 73 68 20 22 53 65 73 73 69 6f 6e 54 6f 6b 65 6e 22 20 63 72 65 64 73 en.(gethash."SessionToken".creds
1f720 2d 6a 73 6f 6e 29 29 29 0a 09 20 28 63 6c 2d 76 61 6c 75 65 73 20 61 63 63 65 73 73 2d 6b 65 79 -json)))...(cl-values.access-key
1f740 20 73 65 63 72 65 74 2d 6b 65 79 20 73 65 73 73 69 6f 6e 2d 74 6f 6b 65 6e 29 29 29 0a 20 20 20 .secret-key.session-token)))....
1f760 20 20 20 28 28 6e 6f 74 20 63 6c 65 61 72 2d 63 61 63 68 65 29 0a 20 20 20 20 20 20 20 28 67 70 ...((not.clear-cache)........(gp
1f780 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 66 65 74 63 68 2d 61 77 73 2d 70 72 6f 66 69 6c 65 2d 63 tel-bedrock--fetch-aws-profile-c
1f7a0 72 65 64 65 6e 74 69 61 6c 73 20 70 72 6f 66 69 6c 65 20 74 29 29 0a 20 20 20 20 20 20 28 74 20 redentials.profile.t)).......(t.
1f7c0 28 75 73 65 72 2d 65 72 72 6f 72 20 22 41 57 53 20 63 72 65 64 65 6e 74 69 61 6c 73 20 65 78 70 (user-error."AWS.credentials.exp
1f7e0 69 72 65 64 20 66 6f 72 20 70 72 6f 66 69 6c 65 3a 20 25 73 22 20 70 72 6f 66 69 6c 65 29 29 29 ired.for.profile:.%s".profile)))
1f800 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 67 65 74 2d 63 72 ))..(defun.gptel-bedrock--get-cr
1f820 65 64 65 6e 74 69 61 6c 73 20 28 29 0a 20 20 22 52 65 74 75 72 6e 20 74 68 65 20 41 57 53 20 63 edentials.()..."Return.the.AWS.c
1f840 72 65 64 65 6e 74 69 61 6c 73 20 74 6f 20 75 73 65 20 66 6f 72 20 74 68 65 20 72 65 71 75 65 73 redentials.to.use.for.the.reques
1f860 74 2e 0a 0a 52 65 74 75 72 6e 73 20 61 20 6c 69 73 74 20 6f 66 20 32 2d 33 20 65 6c 65 6d 65 6e t...Returns.a.list.of.2-3.elemen
1f880 74 73 2c 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 77 68 65 74 68 65 72 20 61 20 73 65 73 73 69 ts,.depending.on.whether.a.sessi
1f8a0 6f 6e 0a 74 6f 6b 65 6e 20 69 73 20 6e 65 65 64 65 64 2c 20 77 69 74 68 20 74 68 69 73 20 66 6f on.token.is.needed,.with.this.fo
1f8c0 72 6d 3a 20 28 41 57 53 5f 41 43 43 45 53 53 5f 4b 45 59 5f 49 44 20 41 57 53 5f 53 45 43 52 45 rm:.(AWS_ACCESS_KEY_ID.AWS_SECRE
1f8e0 54 5f 41 43 43 45 53 53 5f 4b 45 59 0a 41 57 53 5f 53 45 53 53 49 4f 4e 5f 54 4f 4b 45 4e 29 2e T_ACCESS_KEY.AWS_SESSION_TOKEN).
1f900 0a 0a 43 6f 6e 76 65 6e 69 65 6e 74 20 74 6f 20 75 73 65 20 77 69 74 68 20 60 63 6c 2d 6d 75 6c ..Convenient.to.use.with.`cl-mul
1f920 74 69 70 6c 65 2d 76 61 6c 75 65 2d 62 69 6e 64 27 22 0a 20 20 28 6c 65 74 20 28 28 6b 65 79 2d tiple-value-bind'"...(let.((key-
1f940 69 64 20 28 67 65 74 65 6e 76 20 22 41 57 53 5f 41 43 43 45 53 53 5f 4b 45 59 5f 49 44 22 29 29 id.(getenv."AWS_ACCESS_KEY_ID"))
1f960 0a 20 20 20 20 20 20 20 20 28 73 65 63 72 65 74 2d 6b 65 79 20 28 67 65 74 65 6e 76 20 22 41 57 .........(secret-key.(getenv."AW
1f980 53 5f 53 45 43 52 45 54 5f 41 43 43 45 53 53 5f 4b 45 59 22 29 29 0a 20 20 20 20 20 20 20 20 28 S_SECRET_ACCESS_KEY")).........(
1f9a0 74 6f 6b 65 6e 20 28 67 65 74 65 6e 76 20 22 41 57 53 5f 53 45 53 53 49 4f 4e 5f 54 4f 4b 45 4e token.(getenv."AWS_SESSION_TOKEN
1f9c0 22 29 29 0a 09 28 70 72 6f 66 69 6c 65 20 28 67 65 74 65 6e 76 20 22 41 57 53 5f 50 52 4f 46 49 "))..(profile.(getenv."AWS_PROFI
1f9e0 4c 45 22 29 29 29 0a 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 28 28 61 6e 64 20 6b 65 79 LE"))).....(cond.......((and.key
1fa00 2d 69 64 20 73 65 63 72 65 74 2d 6b 65 79 29 20 28 63 6c 2d 76 61 6c 75 65 73 20 6b 65 79 2d 69 -id.secret-key).(cl-values.key-i
1fa20 64 20 73 65 63 72 65 74 2d 6b 65 79 20 74 6f 6b 65 6e 29 29 0a 20 20 20 20 20 20 28 28 61 6e 64 d.secret-key.token)).......((and
1fa40 20 70 72 6f 66 69 6c 65 29 20 28 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 66 65 74 63 68 2d .profile).(gptel-bedrock--fetch-
1fa60 61 77 73 2d 70 72 6f 66 69 6c 65 2d 63 72 65 64 65 6e 74 69 61 6c 73 20 70 72 6f 66 69 6c 65 29 aws-profile-credentials.profile)
1fa80 29 0a 20 20 20 20 20 20 28 74 20 28 75 73 65 72 2d 65 72 72 6f 72 20 22 4d 69 73 73 69 6e 67 20 ).......(t.(user-error."Missing.
1faa0 41 57 53 20 63 72 65 64 65 6e 74 69 61 6c 73 3b 20 63 75 72 72 65 6e 74 6c 79 20 6f 6e 6c 79 20 AWS.credentials;.currently.only.
1fac0 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 73 20 61 72 65 20 73 75 70 70 6f 72 environment.variables.are.suppor
1fae0 74 65 64 22 29 29 29 29 29 0a 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b ted")))))..(defvar.gptel-bedrock
1fb00 2d 2d 6d 6f 64 65 6c 2d 69 64 73 0a 20 20 3b 3b 20 68 74 74 70 73 3a 2f 2f 64 6f 63 73 2e 61 77 --model-ids...;;.https://docs.aw
1fb20 73 2e 61 6d 61 7a 6f 6e 2e 63 6f 6d 2f 62 65 64 72 6f 63 6b 2f 6c 61 74 65 73 74 2f 75 73 65 72 s.amazon.com/bedrock/latest/user
1fb40 67 75 69 64 65 2f 6d 6f 64 65 6c 73 2d 73 75 70 70 6f 72 74 65 64 2e 68 74 6d 6c 0a 20 20 27 28 guide/models-supported.html...'(
1fb60 28 63 6c 61 75 64 65 2d 73 6f 6e 6e 65 74 2d 34 2d 32 30 32 35 30 35 31 34 20 20 20 20 2e 20 22 (claude-sonnet-4-20250514......"
1fb80 61 6e 74 68 72 6f 70 69 63 2e 63 6c 61 75 64 65 2d 73 6f 6e 6e 65 74 2d 34 2d 32 30 32 35 30 35 anthropic.claude-sonnet-4-202505
1fba0 31 34 2d 76 31 3a 30 22 29 0a 20 20 20 20 28 63 6c 61 75 64 65 2d 6f 70 75 73 2d 34 2d 32 30 32 14-v1:0").....(claude-opus-4-202
1fbc0 35 30 35 31 34 20 20 20 20 20 20 2e 20 22 61 6e 74 68 72 6f 70 69 63 2e 63 6c 61 75 64 65 2d 6f 50514........"anthropic.claude-o
1fbe0 70 75 73 2d 34 2d 32 30 32 35 30 35 31 34 2d 76 31 3a 30 22 29 0a 20 20 20 20 28 63 6c 61 75 64 pus-4-20250514-v1:0").....(claud
1fc00 65 2d 33 2d 37 2d 73 6f 6e 6e 65 74 2d 32 30 32 35 30 32 31 39 20 20 2e 20 22 61 6e 74 68 72 6f e-3-7-sonnet-20250219...."anthro
1fc20 70 69 63 2e 63 6c 61 75 64 65 2d 33 2d 37 2d 73 6f 6e 6e 65 74 2d 32 30 32 35 30 32 31 39 2d 76 pic.claude-3-7-sonnet-20250219-v
1fc40 31 3a 30 22 29 0a 20 20 20 20 28 63 6c 61 75 64 65 2d 33 2d 35 2d 73 6f 6e 6e 65 74 2d 32 30 32 1:0").....(claude-3-5-sonnet-202
1fc60 34 31 30 32 32 20 20 2e 20 22 61 6e 74 68 72 6f 70 69 63 2e 63 6c 61 75 64 65 2d 33 2d 35 2d 73 41022...."anthropic.claude-3-5-s
1fc80 6f 6e 6e 65 74 2d 32 30 32 34 31 30 32 32 2d 76 32 3a 30 22 29 0a 20 20 20 20 28 63 6c 61 75 64 onnet-20241022-v2:0").....(claud
1fca0 65 2d 33 2d 35 2d 73 6f 6e 6e 65 74 2d 32 30 32 34 30 36 32 30 20 20 2e 20 22 61 6e 74 68 72 6f e-3-5-sonnet-20240620...."anthro
1fcc0 70 69 63 2e 63 6c 61 75 64 65 2d 33 2d 35 2d 73 6f 6e 6e 65 74 2d 32 30 32 34 30 36 32 30 2d 76 pic.claude-3-5-sonnet-20240620-v
1fce0 31 3a 30 22 29 0a 20 20 20 20 28 63 6c 61 75 64 65 2d 33 2d 35 2d 68 61 69 6b 75 2d 32 30 32 34 1:0").....(claude-3-5-haiku-2024
1fd00 31 30 32 32 20 20 20 2e 20 22 61 6e 74 68 72 6f 70 69 63 2e 63 6c 61 75 64 65 2d 33 2d 35 2d 68 1022....."anthropic.claude-3-5-h
1fd20 61 69 6b 75 2d 32 30 32 34 31 30 32 32 2d 76 31 3a 30 22 29 0a 20 20 20 20 28 63 6c 61 75 64 65 aiku-20241022-v1:0").....(claude
1fd40 2d 33 2d 6f 70 75 73 2d 32 30 32 34 30 32 32 39 20 20 20 20 20 20 2e 20 22 61 6e 74 68 72 6f 70 -3-opus-20240229........"anthrop
1fd60 69 63 2e 63 6c 61 75 64 65 2d 33 2d 6f 70 75 73 2d 32 30 32 34 30 32 32 39 2d 76 31 3a 30 22 29 ic.claude-3-opus-20240229-v1:0")
1fd80 0a 20 20 20 20 28 63 6c 61 75 64 65 2d 33 2d 73 6f 6e 6e 65 74 2d 32 30 32 34 30 32 32 39 20 20 .....(claude-3-sonnet-20240229..
1fda0 20 20 2e 20 22 61 6e 74 68 72 6f 70 69 63 2e 63 6c 61 75 64 65 2d 33 2d 73 6f 6e 6e 65 74 2d 32 ...."anthropic.claude-3-sonnet-2
1fdc0 30 32 34 30 32 32 39 2d 76 31 3a 30 22 29 0a 20 20 20 20 28 63 6c 61 75 64 65 2d 33 2d 68 61 69 0240229-v1:0").....(claude-3-hai
1fde0 6b 75 2d 32 30 32 34 30 33 30 37 20 20 20 20 20 2e 20 22 61 6e 74 68 72 6f 70 69 63 2e 63 6c 61 ku-20240307......."anthropic.cla
1fe00 75 64 65 2d 33 2d 68 61 69 6b 75 2d 32 30 32 34 30 33 30 37 2d 76 31 3a 30 22 29 0a 20 20 20 20 ude-3-haiku-20240307-v1:0").....
1fe20 28 6d 69 73 74 72 61 6c 2d 37 62 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 20 22 (mistral-7b...................."
1fe40 6d 69 73 74 72 61 6c 2e 6d 69 73 74 72 61 6c 2d 37 62 2d 69 6e 73 74 72 75 63 74 2d 76 30 3a 32 mistral.mistral-7b-instruct-v0:2
1fe60 22 29 0a 20 20 20 20 28 6d 69 73 74 72 61 6c 2d 38 78 37 62 20 20 20 20 20 20 20 20 20 20 20 20 ").....(mistral-8x7b............
1fe80 20 20 20 20 2e 20 22 6d 69 73 74 72 61 6c 2e 6d 69 78 74 72 61 6c 2d 38 78 37 62 2d 69 6e 73 74 ......"mistral.mixtral-8x7b-inst
1fea0 72 75 63 74 2d 76 30 3a 31 22 29 0a 20 20 20 20 28 6d 69 73 74 72 61 6c 2d 6c 61 72 67 65 2d 32 ruct-v0:1").....(mistral-large-2
1fec0 34 30 32 20 20 20 20 20 20 20 20 20 20 2e 20 22 6d 69 73 74 72 61 6c 2e 6d 69 73 74 72 61 6c 2d 402............"mistral.mistral-
1fee0 6c 61 72 67 65 2d 32 34 30 32 2d 76 31 3a 30 22 29 0a 20 20 20 20 28 6d 69 73 74 72 61 6c 2d 6c large-2402-v1:0").....(mistral-l
1ff00 61 72 67 65 2d 32 34 30 37 20 20 20 20 20 20 20 20 20 20 2e 20 22 6d 69 73 74 72 61 6c 2e 6d 69 arge-2407............"mistral.mi
1ff20 73 74 72 61 6c 2d 6c 61 72 67 65 2d 32 34 30 37 2d 76 31 3a 30 22 29 0a 20 20 20 20 28 6d 69 73 stral-large-2407-v1:0").....(mis
1ff40 74 72 61 6c 2d 73 6d 61 6c 6c 2d 32 34 30 32 20 20 20 20 20 20 20 20 20 20 2e 20 22 6d 69 73 74 tral-small-2402............"mist
1ff60 72 61 6c 2e 6d 69 73 74 72 61 6c 2d 73 6d 61 6c 6c 2d 32 34 30 32 2d 76 31 3a 30 22 29 0a 20 20 ral.mistral-small-2402-v1:0")...
1ff80 20 20 28 6c 6c 61 6d 61 2d 33 2d 38 62 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2e ..(llama-3-8b...................
1ffa0 20 22 6d 65 74 61 2e 6c 6c 61 6d 61 33 2d 38 62 2d 69 6e 73 74 72 75 63 74 2d 76 31 3a 30 22 29 ."meta.llama3-8b-instruct-v1:0")
1ffc0 0a 20 20 20 20 28 6c 6c 61 6d 61 2d 33 2d 37 30 62 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .....(llama-3-70b...............
1ffe0 20 20 2e 20 22 6d 65 74 61 2e 6c 6c 61 6d 61 33 2d 37 30 62 2d 69 6e 73 74 72 75 63 74 2d 76 31 ...."meta.llama3-70b-instruct-v1
20000 3a 30 22 29 0a 20 20 20 20 28 6c 6c 61 6d 61 2d 33 2d 31 2d 38 62 20 20 20 20 20 20 20 20 20 20 :0").....(llama-3-1-8b..........
20020 20 20 20 20 20 20 2e 20 22 6d 65 74 61 2e 6c 6c 61 6d 61 33 2d 31 2d 38 62 2d 69 6e 73 74 72 75 ........"meta.llama3-1-8b-instru
20040 63 74 2d 76 31 3a 30 22 29 0a 20 20 20 20 28 6c 6c 61 6d 61 2d 33 2d 31 2d 37 30 62 20 20 20 20 ct-v1:0").....(llama-3-1-70b....
20060 20 20 20 20 20 20 20 20 20 20 20 2e 20 22 6d 65 74 61 2e 6c 6c 61 6d 61 33 2d 31 2d 37 30 62 2d ............."meta.llama3-1-70b-
20080 69 6e 73 74 72 75 63 74 2d 76 31 3a 30 22 29 0a 20 20 20 20 28 6c 6c 61 6d 61 2d 33 2d 31 2d 34 instruct-v1:0").....(llama-3-1-4
200a0 30 35 62 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 20 22 6d 65 74 61 2e 6c 6c 61 6d 61 33 2d 05b................"meta.llama3-
200c0 31 2d 34 30 35 62 2d 69 6e 73 74 72 75 63 74 2d 76 31 3a 30 22 29 0a 20 20 20 20 28 6c 6c 61 6d 1-405b-instruct-v1:0").....(llam
200e0 61 2d 33 2d 32 2d 31 62 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 20 22 6d 65 74 61 2e a-3-2-1b.................."meta.
20100 6c 6c 61 6d 61 33 2d 32 2d 31 62 2d 69 6e 73 74 72 75 63 74 2d 76 31 3a 30 22 29 0a 20 20 20 20 llama3-2-1b-instruct-v1:0").....
20120 28 6c 6c 61 6d 61 2d 33 2d 32 2d 33 62 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 20 22 (llama-3-2-3b.................."
20140 6d 65 74 61 2e 6c 6c 61 6d 61 33 2d 32 2d 33 62 2d 69 6e 73 74 72 75 63 74 2d 76 31 3a 30 22 29 meta.llama3-2-3b-instruct-v1:0")
20160 0a 20 20 20 20 28 6c 6c 61 6d 61 2d 33 2d 32 2d 31 31 62 20 20 20 20 20 20 20 20 20 20 20 20 20 .....(llama-3-2-11b.............
20180 20 20 2e 20 22 6d 65 74 61 2e 6c 6c 61 6d 61 33 2d 32 2d 31 31 62 2d 69 6e 73 74 72 75 63 74 2d ...."meta.llama3-2-11b-instruct-
201a0 76 31 3a 30 22 29 0a 20 20 20 20 28 6c 6c 61 6d 61 2d 33 2d 32 2d 39 30 62 20 20 20 20 20 20 20 v1:0").....(llama-3-2-90b.......
201c0 20 20 20 20 20 20 20 20 2e 20 22 6d 65 74 61 2e 6c 6c 61 6d 61 33 2d 32 2d 39 30 62 2d 69 6e 73 .........."meta.llama3-2-90b-ins
201e0 74 72 75 63 74 2d 76 31 3a 30 22 29 0a 20 20 20 20 28 6c 6c 61 6d 61 2d 33 2d 33 2d 37 30 62 20 truct-v1:0").....(llama-3-3-70b.
20200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 20 22 6d 65 74 61 2e 6c 6c 61 6d 61 33 2d 33 2d 37 ................"meta.llama3-3-7
20220 30 62 2d 69 6e 73 74 72 75 63 74 2d 76 31 3a 30 22 29 29 0a 20 20 22 4d 61 70 20 6f 66 20 6d 6f 0b-instruct-v1:0"))..."Map.of.mo
20240 64 65 6c 20 6e 61 6d 65 20 74 6f 20 62 65 64 72 6f 63 6b 20 69 64 2e 0a 0a 49 44 73 20 63 61 6e del.name.to.bedrock.id...IDs.can
20260 20 62 65 20 61 64 64 65 64 20 6f 72 20 72 65 70 6c 61 63 65 64 20 62 79 20 63 61 6c 6c 69 6e 67 .be.added.or.replaced.by.calling
20280 0a 5c 28 70 75 73 68 20 28 6d 6f 64 65 6c 2d 6e 61 6d 65 20 2e 20 5c 22 6d 6f 64 65 6c 2d 69 64 .\(push.(model-name...\"model-id
202a0 5c 22 29 20 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 6d 6f 64 65 6c 2d 69 64 73 29 2e 22 29 \").gptel-bedrock--model-ids).")
202c0 0a 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d 2d 62 65 64 72 6f 63 6b 2d 6d 6f 64 65 6c 73 0a ..(defvar.gptel--bedrock-models.
202e0 20 20 28 6d 61 70 63 61 72 20 23 27 63 61 72 20 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 6d ..(mapcar.#'car.gptel-bedrock--m
20300 6f 64 65 6c 2d 69 64 73 29 0a 20 20 22 4c 69 73 74 20 6f 66 20 61 76 61 69 6c 61 62 6c 65 20 41 odel-ids)..."List.of.available.A
20320 57 53 20 42 65 64 72 6f 63 6b 20 6d 6f 64 65 6c 73 20 61 6e 64 20 61 73 73 6f 63 69 61 74 65 64 WS.Bedrock.models.and.associated
20340 20 70 72 6f 70 65 72 74 69 65 73 2e 22 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 62 65 64 .properties.")..(defun.gptel-bed
20360 72 6f 63 6b 2d 2d 67 65 74 2d 6d 6f 64 65 6c 2d 69 64 20 28 6d 6f 64 65 6c 20 26 6f 70 74 69 6f rock--get-model-id.(model.&optio
20380 6e 61 6c 20 72 65 67 69 6f 6e 29 0a 20 20 22 52 65 74 75 72 6e 20 74 68 65 20 42 65 64 72 6f 63 nal.region)..."Return.the.Bedroc
203a0 6b 20 6d 6f 64 65 6c 20 49 44 20 66 6f 72 20 4d 4f 44 45 4c 2e 0a 0a 52 45 47 49 4f 4e 20 69 73 k.model.ID.for.MODEL...REGION.is
203c0 20 6f 6e 65 20 6f 66 20 61 70 61 63 2c 20 65 75 20 6f 72 20 75 73 2e 22 0a 20 20 28 63 6f 6e 63 .one.of.apac,.eu.or.us."...(conc
203e0 61 74 0a 20 20 20 28 77 68 65 6e 20 72 65 67 69 6f 6e 0a 20 20 20 20 20 28 6f 72 20 28 6d 65 6d at....(when.region......(or.(mem
20400 62 65 72 20 72 65 67 69 6f 6e 20 27 28 61 70 61 63 20 65 75 20 75 73 29 29 0a 09 20 28 65 72 72 ber.region.'(apac.eu.us))...(err
20420 6f 72 20 22 55 6e 6b 6e 6f 77 6e 20 42 65 64 72 6f 63 6b 20 72 65 67 69 6f 6e 20 25 73 22 20 72 or."Unknown.Bedrock.region.%s".r
20440 65 67 69 6f 6e 29 29 0a 20 20 20 20 20 28 63 6f 6e 63 61 74 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d egion))......(concat.(symbol-nam
20460 65 20 72 65 67 69 6f 6e 29 20 22 2e 22 29 29 0a 20 20 20 28 6f 72 20 28 61 6c 69 73 74 2d 67 65 e.region)."."))....(or.(alist-ge
20480 74 20 6d 6f 64 65 6c 20 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 6d 6f 64 65 6c 2d 69 64 73 t.model.gptel-bedrock--model-ids
204a0 20 6e 69 6c 20 6e 69 6c 20 23 27 65 71 29 0a 20 20 20 20 20 20 20 28 65 72 72 6f 72 20 22 55 6e .nil.nil.#'eq)........(error."Un
204c0 6b 6e 6f 77 6e 20 42 65 64 72 6f 63 6b 20 6d 6f 64 65 6c 3a 20 25 73 22 20 6d 6f 64 65 6c 29 29 known.Bedrock.model:.%s".model))
204e0 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 63 75 72 6c 2d 61 ))..(defun.gptel-bedrock--curl-a
20500 72 67 73 20 28 72 65 67 69 6f 6e 29 0a 20 20 22 47 65 6e 65 72 61 74 65 20 74 68 65 20 63 75 72 rgs.(region)..."Generate.the.cur
20520 6c 20 61 72 67 75 6d 65 6e 74 73 20 74 6f 20 67 65 74 20 61 20 62 65 64 72 6f 63 6b 20 72 65 71 l.arguments.to.get.a.bedrock.req
20540 75 65 73 74 20 73 69 67 6e 65 64 20 66 6f 72 20 75 73 65 20 69 6e 20 52 45 47 49 4f 4e 2e 22 0a uest.signed.for.use.in.REGION.".
20560 20 20 3b 3b 20 68 74 74 70 73 3a 2f 2f 63 75 72 6c 2e 73 65 2f 64 6f 63 73 2f 6d 61 6e 70 61 67 ..;;.https://curl.se/docs/manpag
20580 65 2e 68 74 6d 6c 23 2d 2d 61 77 73 2d 73 69 67 76 34 0a 20 20 28 63 6c 2d 6d 75 6c 74 69 70 6c e.html#--aws-sigv4...(cl-multipl
205a0 65 2d 76 61 6c 75 65 2d 62 69 6e 64 20 28 6b 65 79 2d 69 64 20 73 65 63 72 65 74 20 74 6f 6b 65 e-value-bind.(key-id.secret.toke
205c0 6e 29 20 28 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 67 65 74 2d 63 72 65 64 65 6e 74 69 61 n).(gptel-bedrock--get-credentia
205e0 6c 73 29 0a 20 20 20 20 28 6e 63 6f 6e 63 0a 20 20 20 20 20 28 6c 69 73 74 0a 20 20 20 20 20 20 ls).....(nconc......(list.......
20600 22 2d 2d 75 73 65 72 22 20 28 66 6f 72 6d 61 74 20 22 25 73 3a 25 73 22 20 6b 65 79 2d 69 64 20 "--user".(format."%s:%s".key-id.
20620 73 65 63 72 65 74 29 0a 20 20 20 20 20 20 22 2d 2d 61 77 73 2d 73 69 67 76 34 22 20 28 66 6f 72 secret)......."--aws-sigv4".(for
20640 6d 61 74 20 22 61 77 73 3a 61 6d 7a 3a 25 73 3a 62 65 64 72 6f 63 6b 22 20 72 65 67 69 6f 6e 29 mat."aws:amz:%s:bedrock".region)
20660 29 0a 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 6d 65 6d 71 20 73 79 73 74 65 6d 2d 74 79 70 65 )......(unless.(memq.system-type
20680 20 27 28 77 69 6e 64 6f 77 73 2d 6e 74 20 6d 73 2d 64 6f 73 29 29 0a 20 20 20 20 20 20 20 3b 3b .'(windows-nt.ms-dos))........;;
206a0 20 57 69 74 68 6f 75 74 20 74 68 69 73 20 63 75 72 6c 20 73 77 61 6c 6c 6f 77 73 20 74 68 65 20 .Without.this.curl.swallows.the.
206c0 6f 75 74 70 75 74 0a 20 20 20 20 20 20 20 28 6c 69 73 74 20 22 2d 2d 6f 75 74 70 75 74 22 20 22 output........(list."--output"."
206e0 2f 64 65 76 2f 73 74 64 6f 75 74 22 29 29 0a 20 20 20 20 20 28 77 68 65 6e 20 74 6f 6b 65 6e 0a /dev/stdout"))......(when.token.
20700 20 20 20 20 20 20 20 28 6c 69 73 74 20 28 66 6f 72 6d 61 74 20 22 2d 48 78 2d 61 6d 7a 2d 73 65 .......(list.(format."-Hx-amz-se
20720 63 75 72 69 74 79 2d 74 6f 6b 65 6e 3a 20 25 73 22 20 74 6f 6b 65 6e 29 29 29 29 29 29 0a 0a 28 curity-token:.%s".token))))))..(
20740 64 65 66 75 6e 20 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 63 75 72 6c 2d 76 65 72 73 69 6f defun.gptel-bedrock--curl-versio
20760 6e 20 28 29 0a 20 20 22 43 68 65 63 6b 20 43 75 72 6c 20 76 65 72 73 69 6f 6e 20 72 65 71 75 69 n.()..."Check.Curl.version.requi
20780 72 65 64 20 66 6f 72 20 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2e 22 0a 20 20 28 6c 65 74 2a 20 red.for.gptel-bedrock."...(let*.
207a0 28 28 6f 75 74 70 75 74 20 28 73 68 65 6c 6c 2d 63 6f 6d 6d 61 6e 64 2d 74 6f 2d 73 74 72 69 6e ((output.(shell-command-to-strin
207c0 67 20 22 63 75 72 6c 20 2d 2d 76 65 72 73 69 6f 6e 22 29 29 0a 20 20 20 20 20 20 20 20 20 28 76 g."curl.--version"))..........(v
207e0 65 72 73 69 6f 6e 20 28 61 6e 64 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 20 22 5e 63 75 72 6c ersion.(and.(string-match."^curl
20800 20 5c 5c 28 5b 30 2d 39 2e 5d 2b 5c 5c 29 22 20 6f 75 74 70 75 74 29 0a 20 20 20 20 20 20 20 20 .\\([0-9.]+\\)".output).........
20820 20 20 20 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 6f ...............(match-string.1.o
20840 75 74 70 75 74 29 29 29 29 0a 20 20 20 20 76 65 72 73 69 6f 6e 29 29 0a 0a 3b 3b 3b 23 23 23 61 utput)))).....version))..;;;###a
20860 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 62 65 64 utoload.(cl-defun.gptel-make-bed
20880 72 6f 63 6b 0a 20 20 20 20 28 6e 61 6d 65 20 26 6b 65 79 0a 20 20 20 20 20 20 20 20 20 20 72 65 rock.....(name.&key...........re
208a0 67 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 65 6c 73 20 67 70 74 65 6c 2d 2d 62 65 gion...........(models.gptel--be
208c0 64 72 6f 63 6b 2d 6d 6f 64 65 6c 73 29 0a 09 20 20 28 6d 6f 64 65 6c 2d 72 65 67 69 6f 6e 20 6e drock-models)....(model-region.n
208e0 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 65 61 6d 20 63 75 72 6c 2d 61 72 67 73 20 72 il)...........stream.curl-args.r
20900 65 71 75 65 73 74 2d 70 61 72 61 6d 73 0a 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 74 6f 63 6f equest-params...........(protoco
20920 6c 20 22 68 74 74 70 73 22 29 29 0a 20 20 22 52 65 67 69 73 74 65 72 20 61 6e 20 41 57 53 20 42 l."https"))..."Register.an.AWS.B
20940 65 64 72 6f 63 6b 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 edrock.backend.for.gptel.with.NA
20960 4d 45 2e 0a 0a 4b 65 79 77 6f 72 64 20 61 72 67 75 6d 65 6e 74 73 3a 0a 0a 52 45 47 49 4f 4e 20 ME...Keyword.arguments:..REGION.
20980 2d 20 41 57 53 20 72 65 67 69 6f 6e 20 6e 61 6d 65 20 28 65 2e 67 2e 20 5c 22 75 73 2d 65 61 73 -.AWS.region.name.(e.g..\"us-eas
209a0 74 2d 31 5c 22 29 0a 4d 4f 44 45 4c 53 20 2d 20 54 68 65 20 6c 69 73 74 20 6f 66 20 6d 6f 64 65 t-1\").MODELS.-.The.list.of.mode
209c0 6c 73 20 73 75 70 70 6f 72 74 65 64 20 62 79 20 74 68 69 73 20 62 61 63 6b 65 6e 64 0a 4d 4f 44 ls.supported.by.this.backend.MOD
209e0 45 4c 2d 52 45 47 49 4f 4e 20 2d 20 6f 6e 65 20 6f 66 20 61 70 61 63 2c 20 65 75 2c 20 75 73 20 EL-REGION.-.one.of.apac,.eu,.us.
20a00 6f 72 20 6e 69 6c 0a 43 55 52 4c 2d 41 52 47 53 20 2d 20 61 64 64 69 74 69 6f 6e 61 6c 20 63 75 or.nil.CURL-ARGS.-.additional.cu
20a20 72 6c 20 61 72 67 73 0a 53 54 52 45 41 4d 20 2d 20 57 68 65 74 68 65 72 20 74 6f 20 75 73 65 20 rl.args.STREAM.-.Whether.to.use.
20a40 73 74 72 65 61 6d 69 6e 67 20 72 65 73 70 6f 6e 73 65 73 20 6f 72 20 6e 6f 74 2e 0a 52 45 51 55 streaming.responses.or.not..REQU
20a60 45 53 54 2d 50 41 52 41 4d 53 20 2d 20 61 20 70 6c 69 73 74 20 6f 66 20 61 64 64 69 74 69 6f 6e EST-PARAMS.-.a.plist.of.addition
20a80 61 6c 20 48 54 54 50 20 72 65 71 75 65 73 74 0a 70 61 72 61 6d 65 74 65 72 73 20 28 61 73 20 70 al.HTTP.request.parameters.(as.p
20aa0 6c 69 73 74 20 6b 65 79 73 29 20 61 6e 64 20 76 61 6c 75 65 73 20 73 75 70 70 6f 72 74 65 64 20 list.keys).and.values.supported.
20ac0 62 79 20 74 68 65 20 41 50 49 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 69 6e 64 65 6e 74 20 by.the.API."...(declare.(indent.
20ae0 31 29 29 0a 20 20 28 75 6e 6c 65 73 73 20 28 61 6e 64 20 67 70 74 65 6c 2d 75 73 65 2d 63 75 72 1))...(unless.(and.gptel-use-cur
20b00 6c 20 28 76 65 72 73 69 6f 6e 3c 3d 20 22 38 2e 39 22 20 28 67 70 74 65 6c 2d 62 65 64 72 6f 63 l.(version<=."8.9".(gptel-bedroc
20b20 6b 2d 2d 63 75 72 6c 2d 76 65 72 73 69 6f 6e 29 29 29 0a 20 20 20 20 28 65 72 72 6f 72 20 22 42 k--curl-version))).....(error."B
20b40 65 64 72 6f 63 6b 2d 62 61 63 6b 65 6e 64 20 72 65 71 75 69 72 65 73 20 63 75 72 6c 20 3e 3d 20 edrock-backend.requires.curl.>=.
20b60 38 2e 39 2c 20 62 75 74 20 67 70 74 65 6c 2d 75 73 65 2d 63 75 72 6c 20 3a 3d 20 25 73 2c 20 63 8.9,.but.gptel-use-curl.:=.%s,.c
20b80 75 72 6c 2d 76 65 72 73 69 6f 6e 20 3a 3d 20 25 73 22 0a 20 20 20 20 20 20 20 20 20 20 20 67 70 url-version.:=.%s"............gp
20ba0 74 65 6c 2d 75 73 65 2d 63 75 72 6c 20 28 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 63 75 72 tel-use-curl.(gptel-bedrock--cur
20bc0 6c 2d 76 65 72 73 69 6f 6e 29 29 29 0a 20 20 28 6c 65 74 20 28 28 68 6f 73 74 20 28 66 6f 72 6d l-version)))...(let.((host.(form
20be0 61 74 20 22 62 65 64 72 6f 63 6b 2d 72 75 6e 74 69 6d 65 2e 25 73 2e 61 6d 61 7a 6f 6e 61 77 73 at."bedrock-runtime.%s.amazonaws
20c00 2e 63 6f 6d 22 20 72 65 67 69 6f 6e 29 29 29 0a 20 20 20 20 28 73 65 74 66 20 28 61 6c 69 73 74 .com".region))).....(setf.(alist
20c20 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 20 -get.name.gptel--known-backends.
20c40 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 28 67 70 74 65 nil.nil.#'equal)...........(gpte
20c60 6c 2d 2d 6d 61 6b 65 2d 62 65 64 72 6f 63 6b 0a 20 20 20 20 20 20 20 20 20 20 20 3a 6e 61 6d 65 l--make-bedrock............:name
20c80 20 6e 61 6d 65 0a 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 .name............:host.host.....
20ca0 20 20 20 20 20 20 20 3a 68 65 61 64 65 72 20 6e 69 6c 20 20 20 20 20 20 20 20 20 20 20 3b 20 78 .......:header.nil...........;.x
20cc0 2d 61 6d 7a 2d 73 65 63 75 72 69 74 79 2d 74 6f 6b 65 6e 20 69 73 20 73 65 74 20 69 6e 20 63 75 -amz-security-token.is.set.in.cu
20ce0 72 6c 2d 61 72 67 73 20 69 66 20 6e 65 65 64 65 64 0a 20 20 20 20 20 20 20 20 20 20 20 3a 6d 6f rl-args.if.needed............:mo
20d00 64 65 6c 73 20 28 67 70 74 65 6c 2d 2d 70 72 6f 63 65 73 73 2d 6d 6f 64 65 6c 73 20 6d 6f 64 65 dels.(gptel--process-models.mode
20d20 6c 73 29 0a 09 20 20 20 3a 6d 6f 64 65 6c 2d 72 65 67 69 6f 6e 20 6d 6f 64 65 6c 2d 72 65 67 69 ls).....:model-region.model-regi
20d40 6f 6e 0a 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 6c on............:protocol.protocol
20d60 0a 20 20 20 20 20 20 20 20 20 20 20 3a 65 6e 64 70 6f 69 6e 74 20 22 22 20 3b 20 55 72 6c 20 69 ............:endpoint."".;.Url.i
20d80 73 20 64 79 6e 61 6d 69 63 61 6c 6c 79 20 63 6f 6e 73 74 72 75 63 74 65 64 20 62 61 73 65 64 20 s.dynamically.constructed.based.
20da0 6f 6e 20 6f 74 68 65 72 20 61 72 67 73 0a 20 20 20 20 20 20 20 20 20 20 20 3a 73 74 72 65 61 6d on.other.args............:stream
20dc0 20 73 74 72 65 61 6d 0a 20 20 20 20 20 20 20 20 20 20 20 3a 63 6f 64 69 6e 67 2d 73 79 73 74 65 .stream............:coding-syste
20de0 6d 20 28 61 6e 64 20 73 74 72 65 61 6d 20 27 62 69 6e 61 72 79 29 0a 20 20 20 20 20 20 20 20 20 m.(and.stream.'binary)..........
20e00 20 20 3a 63 75 72 6c 2d 61 72 67 73 20 28 6c 61 6d 62 64 61 20 28 29 20 28 61 70 70 65 6e 64 20 ..:curl-args.(lambda.().(append.
20e20 63 75 72 6c 2d 61 72 67 73 20 28 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 63 75 72 6c 2d 61 curl-args.(gptel-bedrock--curl-a
20e40 72 67 73 20 72 65 67 69 6f 6e 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 3a 72 65 71 75 65 73 rgs.region)))............:reques
20e60 74 2d 70 61 72 61 6d 73 20 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 0a 20 20 20 20 20 20 20 20 t-params.request-params.........
20e80 20 20 20 3a 75 72 6c 0a 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 29 0a 20 20 ...:url............(lambda.()...
20ea0 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."://
20ec0 22 20 68 6f 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 2f 6d 6f ".host......................"/mo
20ee0 64 65 6c 2f 22 20 28 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 67 65 74 2d 6d 6f 64 65 6c 2d del/".(gptel-bedrock--get-model-
20f00 69 64 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 20 6d 6f 64 65 6c 2d 72 65 67 69 6f 6e 29 0a 20 20 20 id.gptel-model.model-region)....
20f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 2f 22 20 28 69 66 20 73 74 72 65 61 6d .................."/".(if.stream
20f40 20 22 63 6f 6e 76 65 72 73 65 2d 73 74 72 65 61 6d 22 20 22 63 6f 6e 76 65 72 73 65 22 29 29 29 ."converse-stream"."converse")))
20f60 29 29 29 29 0a 0a 28 70 72 6f 76 69 64 65 20 27 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 29 0a 3b ))))..(provide.'gptel-bedrock).;
20f80 3b 3b 20 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2e 65 6c 20 65 6e 64 73 20 68 65 72 65 0a 00 00 ;;.gptel-bedrock.el.ends.here...
20fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
20fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
20fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
21000 67 70 74 65 6c 2d 30 2e 39 2e 39 2f 67 70 74 65 6c 2d 6f 6c 6c 61 6d 61 2e 65 6c 00 00 00 00 00 gptel-0.9.9/gptel-ollama.el.....
21020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
21040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
21060 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
21080 30 30 33 33 37 37 34 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 34 32 32 31 00 20 30 00 00 00 0033774.00000000000.014221..0...
210a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
210c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
210e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
21100 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...................
21120 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...................
21140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
21160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
21180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
211a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
211c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
211e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
21200 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
21220 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
21240 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.(
21260 43 29 20 32 30 32 33 2d 32 30 32 35 20 20 4b 61 72 74 68 69 6b 20 43 68 69 6b 6d 61 67 61 6c 75 C).2023-2025..Karthik.Chikmagalu
21280 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 61 6c 75 r..;;.Author:.Karthik.Chikmagalu
212a0 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 6f 6d 3e r.<karthikchikmagalur@gmail.com>
212c0 0a 3b 3b 20 4b 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 .;;.Keywords:.hypermedia..;;.Thi
212e0 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 75 20 s.program.is.free.software;.you.
21300 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 69 66 can.redistribute.it.and/or.modif
21320 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 20 47 y.;;.it.under.the.terms.of.the.G
21340 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 75 62 NU.General.Public.License.as.pub
21360 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 20 46 lished.by.;;.the.Free.Software.F
21380 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 20 74 oundation,.either.version.3.of.t
213a0 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 69 6f he.License,.or.;;.(at.your.optio
213c0 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 20 70 n).any.later.version...;;.This.p
213e0 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 6f 70 rogram.is.distributed.in.the.hop
21400 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 75 74 e.that.it.will.be.useful,.;;.but
21420 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 20 65 .WITHOUT.ANY.WARRANTY;.without.e
21440 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 20 4d ven.the.implied.warranty.of.;;.M
21460 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 41 20 ERCHANTABILITY.or.FITNESS.FOR.A.
21480 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 3b 20 PARTICULAR.PURPOSE...See.the.;;.
214a0 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 20 6d GNU.General.Public.License.for.m
214c0 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 76 65 ore.details...;;.You.should.have
214e0 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 6e 65 .received.a.copy.of.the.GNU.Gene
21500 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 74 68 ral.Public.License.;;.along.with
21520 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 74 74 .this.program...If.not,.see.<htt
21540 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 3b 3b ps://www.gnu.org/licenses/>...;;
21560 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 64 73 ;.Commentary:..;;.This.file.adds
21580 20 73 75 70 70 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 .support.for.the.Ollama.LLM.API.
215a0 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 67 70 to.gptel..;;;.Code:.(require.'gp
215c0 74 65 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 0a 28 64 65 63 tel).(require.'cl-generic)..(dec
215e0 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 73 6f 6e 22 20 28 lare-function.json-read."json".(
21600 29 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 63 6f 6e 74 65 )).(declare-function.gptel-conte
21620 78 74 2d 2d 77 72 61 70 20 22 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 22 29 0a 28 64 65 63 6c 61 xt--wrap."gptel-context").(decla
21640 72 65 2d 66 75 6e 63 74 69 6f 6e 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 63 6f 6c 6c 65 re-function.gptel-context--colle
21660 63 74 2d 6d 65 64 69 61 20 22 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 22 29 0a 28 64 65 66 76 61 ct-media."gptel-context").(defva
21680 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 61 6d 61 0a r.json-object-type)..;;;.Ollama.
216a0 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 28 3a 63 6f (cl-defstruct.(gptel-ollama.(:co
216c0 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 29 0a 20 20 nstructor.gptel--make-ollama)...
216e0 20 20 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 6f 70 69 ..........................(:copi
21700 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 20 20 20 20 er.nil).........................
21720 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 29 29 0a 0a ....(:include.gptel-backend)))..
21740 3b 3b 20 46 49 58 4d 45 28 66 73 6d 29 20 52 65 6d 6f 76 65 20 74 68 69 73 20 76 61 72 69 61 62 ;;.FIXME(fsm).Remove.this.variab
21760 6c 65 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 74 le.(defvar-local.gptel--ollama-t
21780 6f 6b 65 6e 2d 63 6f 75 6e 74 20 30 0a 20 20 22 54 6f 6b 65 6e 20 63 6f 75 6e 74 20 66 6f 72 20 oken-count.0..."Token.count.for.
217a0 6f 6c 6c 61 6d 61 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 73 2e 0a 0a 54 68 69 73 20 76 61 72 69 ollama.conversations...This.vari
217c0 61 62 6c 65 20 68 6f 6c 64 73 20 74 68 65 20 74 6f 74 61 6c 20 74 6f 6b 65 6e 20 63 6f 75 6e 74 able.holds.the.total.token.count
217e0 20 66 6f 72 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 73 20 77 69 74 68 0a 4f 6c 6c 61 6d 61 20 6d .for.conversations.with.Ollama.m
21800 6f 64 65 6c 73 2e 0a 0a 49 6e 74 65 6e 64 65 64 20 66 6f 72 20 69 6e 74 65 72 6e 61 6c 20 75 73 odels...Intended.for.internal.us
21820 65 20 6f 6e 6c 79 2e 22 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 63 e.only.")..(cl-defmethod.gptel-c
21840 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 74 url--parse-stream.((_backend.gpt
21860 65 6c 2d 6f 6c 6c 61 6d 61 29 20 69 6e 66 6f 29 0a 20 20 22 50 61 72 73 65 20 72 65 73 70 6f 6e el-ollama).info)..."Parse.respon
21880 73 65 20 73 74 72 65 61 6d 20 66 6f 72 20 74 68 65 20 4f 6c 6c 61 6d 61 20 41 50 49 2e 22 0a 20 se.stream.for.the.Ollama.API."..
218a0 20 28 77 68 65 6e 20 28 61 6e 64 20 28 62 6f 62 70 29 20 28 72 65 2d 73 65 61 72 63 68 2d 66 6f .(when.(and.(bobp).(re-search-fo
218c0 72 77 61 72 64 20 22 5e 7b 22 20 6e 69 6c 20 74 29 29 0a 20 20 20 20 28 66 6f 72 77 61 72 64 2d rward."^{".nil.t)).....(forward-
218e0 6c 69 6e 65 20 30 29 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 line.0))...(let*.((content-strs)
21900 20 28 63 6f 6e 74 65 6e 74 29 20 28 70 74 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 28 63 6f .(content).(pt.(point))).....(co
21920 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 69 6c 65 20 ndition-case.nil.........(while.
21940 28 73 65 74 71 20 63 6f 6e 74 65 6e 74 20 28 67 70 74 65 6c 2d 2d 6a 73 6f 6e 2d 72 65 61 64 29 (setq.content.(gptel--json-read)
21960 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 70 74 20 28 70 6f 69 6e 74 29 29 0a 20 20 )...........(setq.pt.(point))...
21980 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 64 6f 6e 65 20 28 6d 61 70 2d 65 6c 74 20 63 6f 6e ........(let.((done.(map-elt.con
219a0 74 65 6e 74 20 3a 64 6f 6e 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 tent.:done)).................(re
219c0 73 70 6f 6e 73 65 20 28 6d 61 70 2d 6e 65 73 74 65 64 2d 65 6c 74 20 63 6f 6e 74 65 6e 74 20 27 sponse.(map-nested-elt.content.'
219e0 28 3a 6d 65 73 73 61 67 65 20 3a 63 6f 6e 74 65 6e 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 (:message.:content))))..........
21a00 20 20 20 28 77 68 65 6e 20 28 61 6e 64 20 72 65 73 70 6f 6e 73 65 20 28 6e 6f 74 20 28 65 71 20 ...(when.(and.response.(not.(eq.
21a20 72 65 73 70 6f 6e 73 65 20 3a 6e 75 6c 6c 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 response.:null)))...............
21a40 28 70 75 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 29 0a 20 20 (push.response.content-strs))...
21a60 20 20 20 20 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 ..........(unless.(eq.done.:json
21a80 2d 66 61 6c 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 -false)...............(with-curr
21aa0 65 6e 74 2d 62 75 66 66 65 72 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 62 75 66 66 ent-buffer.(plist-get.info.:buff
21ac0 65 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 69 6e 63 66 20 67 70 74 er).................(cl-incf.gpt
21ae0 65 6c 2d 2d 6f 6c 6c 61 6d 61 2d 74 6f 6b 65 6e 2d 63 6f 75 6e 74 0a 20 20 20 20 20 20 20 20 20 el--ollama-token-count..........
21b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 2b 20 28 6f 72 20 28 6d 61 70 2d 65 6c 74 20 ................(+.(or.(map-elt.
21b20 63 6f 6e 74 65 6e 74 20 3a 70 72 6f 6d 70 74 5f 65 76 61 6c 5f 63 6f 75 6e 74 29 20 30 29 0a 20 content.:prompt_eval_count).0)..
21b40 20 20 20 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 6f 72 20 28 ...........................(or.(
21b60 6d 61 70 2d 65 6c 74 20 63 6f 6e 74 65 6e 74 20 3a 65 76 61 6c 5f 63 6f 75 6e 74 29 20 30 29 29 map-elt.content.:eval_count).0))
21b80 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 72 20 28 70 6f 69 ))...............(goto-char.(poi
21ba0 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 67 6f 74 6f 2d 63 nt-max))))).......(error.(goto-c
21bc0 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 20 28 6e har.pt))).....(apply.#'concat.(n
21be0 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 2d 64 65 reverse.content-strs))))..(cl-de
21c00 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 20 28 28 fmethod.gptel--parse-response.((
21c20 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 70 6f 6e 73 65 20 _backend.gptel-ollama).response.
21c40 69 6e 66 6f 29 0a 20 20 22 50 61 72 73 65 20 61 20 6f 6e 65 2d 73 68 6f 74 20 52 45 53 50 4f 4e info)..."Parse.a.one-shot.RESPON
21c60 53 45 20 66 72 6f 6d 20 74 68 65 20 4f 6c 6c 61 6d 61 20 41 50 49 20 61 6e 64 20 72 65 74 75 72 SE.from.the.Ollama.API.and.retur
21c80 6e 20 74 65 78 74 2e 0a 0a 53 74 6f 72 65 20 72 65 73 70 6f 6e 73 65 20 6d 65 74 61 64 61 74 61 n.text...Store.response.metadata
21ca0 20 69 6e 20 73 74 61 74 65 20 49 4e 46 4f 2e 22 0a 20 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e .in.state.INFO."...(plist-put.in
21cc0 66 6f 20 3a 73 74 6f 70 2d 72 65 61 73 6f 6e 20 28 70 6c 69 73 74 2d 67 65 74 20 72 65 73 70 6f fo.:stop-reason.(plist-get.respo
21ce0 6e 73 65 20 3a 64 6f 6e 65 5f 72 65 61 73 6f 6e 29 29 0a 20 20 28 70 6c 69 73 74 2d 70 75 74 20 nse.:done_reason))...(plist-put.
21d00 69 6e 66 6f 20 3a 6f 75 74 70 75 74 2d 74 6f 6b 65 6e 73 20 28 70 6c 69 73 74 2d 67 65 74 20 72 info.:output-tokens.(plist-get.r
21d20 65 73 70 6f 6e 73 65 20 3a 65 76 61 6c 5f 63 6f 75 6e 74 29 29 0a 20 20 28 6c 65 74 2a 20 28 28 esponse.:eval_count))...(let*.((
21d40 6d 65 73 73 61 67 65 20 28 70 6c 69 73 74 2d 67 65 74 20 72 65 73 70 6f 6e 73 65 20 3a 6d 65 73 message.(plist-get.response.:mes
21d60 73 61 67 65 29 29 0a 20 20 20 20 20 20 20 20 20 28 63 6f 6e 74 65 6e 74 20 28 70 6c 69 73 74 2d sage))..........(content.(plist-
21d80 67 65 74 20 6d 65 73 73 61 67 65 20 3a 63 6f 6e 74 65 6e 74 29 29 29 0a 20 20 20 20 28 77 68 65 get.message.:content))).....(whe
21da0 6e 2d 6c 65 74 2a 20 28 28 74 6f 6f 6c 2d 63 61 6c 6c 73 20 28 70 6c 69 73 74 2d 67 65 74 20 6d n-let*.((tool-calls.(plist-get.m
21dc0 65 73 73 61 67 65 20 3a 74 6f 6f 6c 5f 63 61 6c 6c 73 29 29 29 0a 20 20 20 20 20 20 3b 3b 20 46 essage.:tool_calls))).......;;.F
21de0 69 72 73 74 20 61 64 64 20 74 68 65 20 74 6f 6f 6c 20 63 61 6c 6c 20 74 6f 20 74 68 65 20 70 72 irst.add.the.tool.call.to.the.pr
21e00 6f 6d 70 74 73 20 6c 69 73 74 0a 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 64 61 74 61 20 28 70 ompts.list.......(let*.((data.(p
21e20 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 64 61 74 61 29 29 0a 20 20 20 20 20 20 20 20 20 20 list-get.info.:data))...........
21e40 20 20 20 28 70 72 6f 6d 70 74 73 20 28 70 6c 69 73 74 2d 67 65 74 20 64 61 74 61 20 3a 6d 65 73 ...(prompts.(plist-get.data.:mes
21e60 73 61 67 65 73 29 29 29 0a 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 64 61 74 61 sages))).........(plist-put.data
21e80 20 3a 6d 65 73 73 61 67 65 73 20 28 76 63 6f 6e 63 61 74 20 70 72 6f 6d 70 74 73 20 60 28 2c 6d .:messages.(vconcat.prompts.`(,m
21ea0 65 73 73 61 67 65 29 29 29 29 0a 20 20 20 20 20 20 3b 3b 20 54 68 65 6e 20 63 61 70 74 75 72 65 essage)))).......;;.Then.capture
21ec0 20 74 68 65 20 74 6f 6f 6c 20 63 61 6c 6c 20 64 61 74 61 20 66 6f 72 20 72 75 6e 6e 69 6e 67 20 .the.tool.call.data.for.running.
21ee0 74 68 65 20 74 6f 6f 6c 0a 20 20 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 0a 20 20 20 20 20 20 20 66 the.tool.......(cl-loop........f
21f00 6f 72 20 74 6f 6f 6c 2d 63 61 6c 6c 20 61 63 72 6f 73 73 20 74 6f 6f 6c 2d 63 61 6c 6c 73 20 20 or.tool-call.across.tool-calls..
21f20 3b 72 65 70 6c 61 63 65 20 22 3a 61 72 67 75 6d 65 6e 74 73 22 20 77 69 74 68 20 22 3a 61 72 67 ;replace.":arguments".with.":arg
21f40 73 22 0a 20 20 20 20 20 20 20 66 6f 72 20 63 61 6c 6c 2d 73 70 65 63 20 3d 20 28 63 6f 70 79 2d s"........for.call-spec.=.(copy-
21f60 73 65 71 75 65 6e 63 65 20 28 70 6c 69 73 74 2d 67 65 74 20 74 6f 6f 6c 2d 63 61 6c 6c 20 3a 66 sequence.(plist-get.tool-call.:f
21f80 75 6e 63 74 69 6f 6e 29 29 0a 20 20 20 20 20 20 20 64 6f 20 28 70 6c 69 73 74 2d 70 75 74 20 63 unction))........do.(plist-put.c
21fa0 61 6c 6c 2d 73 70 65 63 20 3a 61 72 67 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 all-spec.:args..................
21fc0 20 20 20 20 28 70 6c 69 73 74 2d 67 65 74 20 63 61 6c 6c 2d 73 70 65 63 20 3a 61 72 67 75 6d 65 ....(plist-get.call-spec.:argume
21fe0 6e 74 73 29 29 0a 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 63 61 6c 6c 2d 73 70 65 nts))........(plist-put.call-spe
22000 63 20 3a 61 72 67 75 6d 65 6e 74 73 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 63 6f 6c 6c 65 63 74 c.:arguments.nil)........collect
22020 20 63 61 6c 6c 2d 73 70 65 63 20 69 6e 74 6f 20 74 6f 6f 6c 2d 75 73 65 0a 20 20 20 20 20 20 20 .call-spec.into.tool-use........
22040 66 69 6e 61 6c 6c 79 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 74 6f 6f 6c 2d 75 73 finally.(plist-put.info.:tool-us
22060 65 20 74 6f 6f 6c 2d 75 73 65 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 28 61 6e 64 20 63 6f 6e e.tool-use))).....(when.(and.con
22080 74 65 6e 74 20 28 6e 6f 74 20 28 6f 72 20 28 65 71 20 63 6f 6e 74 65 6e 74 20 3a 6e 75 6c 6c 29 tent.(not.(or.(eq.content.:null)
220a0 20 28 73 74 72 69 6e 67 2d 65 6d 70 74 79 2d 70 20 63 6f 6e 74 65 6e 74 29 29 29 29 0a 20 20 20 .(string-empty-p.content))))....
220c0 20 20 20 63 6f 6e 74 65 6e 74 29 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 67 70 74 ...content)))..(cl-defmethod.gpt
220e0 65 6c 2d 2d 72 65 71 75 65 73 74 2d 64 61 74 61 20 28 28 62 61 63 6b 65 6e 64 20 67 70 74 65 6c el--request-data.((backend.gptel
22100 2d 6f 6c 6c 61 6d 61 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 -ollama).prompts)..."JSON.encode
22120 20 50 52 4f 4d 50 54 53 20 66 6f 72 20 73 65 6e 64 69 6e 67 20 74 6f 20 4f 6c 6c 61 6d 61 2e 22 .PROMPTS.for.sending.to.Ollama."
22140 0a 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 0a 20 ...(when.gptel--system-message..
22160 20 20 20 28 70 75 73 68 20 28 6c 69 73 74 20 3a 72 6f 6c 65 20 22 73 79 73 74 65 6d 22 0a 20 20 ...(push.(list.:role."system"...
22180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 6f 6e 74 65 6e 74 20 67 70 74 65 6c 2d 2d 73 79 ..............:content.gptel--sy
221a0 73 74 65 6d 2d 6d 65 73 73 61 67 65 29 0a 20 20 20 20 20 20 20 20 20 20 70 72 6f 6d 70 74 73 29 stem-message)...........prompts)
221c0 29 0a 20 20 28 6c 65 74 2a 20 28 28 70 72 6f 6d 70 74 73 2d 70 6c 69 73 74 0a 20 20 20 20 20 20 )...(let*.((prompts-plist.......
221e0 20 20 20 20 28 67 70 74 65 6c 2d 2d 6d 65 72 67 65 2d 70 6c 69 73 74 73 0a 20 20 20 20 20 20 20 ....(gptel--merge-plists........
22200 20 20 20 20 60 28 3a 6d 6f 64 65 6c 20 2c 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 6e 61 6d 65 ....`(:model.,(gptel--model-name
22220 20 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 3a 6d 65 73 73 .gptel-model)..............:mess
22240 61 67 65 73 20 5b 2c 40 70 72 6f 6d 70 74 73 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 73 ages.[,@prompts]..............:s
22260 74 72 65 61 6d 20 2c 28 6f 72 20 67 70 74 65 6c 2d 73 74 72 65 61 6d 20 3a 6a 73 6f 6e 2d 66 61 tream.,(or.gptel-stream.:json-fa
22280 6c 73 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 2c 40 28 61 6e 64 20 67 70 74 65 6c 2d 2d lse)..............,@(and.gptel--
222a0 73 63 68 65 6d 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 60 28 3a 66 6f 72 6d 61 74 schema.................`(:format
222c0 20 2c 28 67 70 74 65 6c 2d 2d 70 72 65 70 72 6f 63 65 73 73 2d 73 63 68 65 6d 61 0a 20 20 20 20 .,(gptel--preprocess-schema.....
222e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d ........................(gptel--
22300 64 69 73 70 61 74 63 68 2d 73 63 68 65 6d 61 2d 74 79 70 65 20 67 70 74 65 6c 2d 2d 73 63 68 65 dispatch-schema-type.gptel--sche
22320 6d 61 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 2d 72 65 71 75 65 73 ma)))))............gptel--reques
22340 74 2d 70 61 72 61 6d 73 0a 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 t-params............(gptel-backe
22360 6e 64 2d 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 nd-request-params.gptel-backend)
22380 0a 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 72 65 71 75 65 73 ............(gptel--model-reques
223a0 74 2d 70 61 72 61 6d 73 20 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 29 29 29 0a 20 20 20 20 20 20 20 t-params..gptel-model)))........
223c0 20 20 3b 3b 20 74 68 65 20 69 6e 69 74 69 61 6c 20 6f 70 74 69 6f 6e 73 20 28 69 66 20 61 6e 79 ..;;.the.initial.options.(if.any
223e0 29 20 66 72 6f 6d 20 72 65 71 75 65 73 74 20 70 61 72 61 6d 73 0a 20 20 20 20 20 20 20 20 20 28 ).from.request.params..........(
22400 6f 70 74 69 6f 6e 73 2d 70 6c 69 73 74 20 28 70 6c 69 73 74 2d 67 65 74 20 70 72 6f 6d 70 74 73 options-plist.(plist-get.prompts
22420 2d 70 6c 69 73 74 20 3a 6f 70 74 69 6f 6e 73 29 29 29 0a 0a 20 20 20 20 28 77 68 65 6e 20 28 61 -plist.:options)))......(when.(a
22440 6e 64 20 67 70 74 65 6c 2d 75 73 65 2d 74 6f 6f 6c 73 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 29 0a nd.gptel-use-tools.gptel-tools).
22460 20 20 20 20 20 20 3b 3b 20 54 4f 44 4f 28 74 6f 6f 6c 29 3a 20 46 69 6e 64 20 6f 75 74 20 68 6f ......;;.TODO(tool):.Find.out.ho
22480 77 20 74 6f 20 66 6f 72 63 65 20 74 6f 6f 6c 20 75 73 65 20 66 6f 72 20 4f 6c 6c 61 6d 61 0a 20 w.to.force.tool.use.for.Ollama..
224a0 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 20 3a 74 .....(plist-put.prompts-plist.:t
224c0 6f 6f 6c 73 0a 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 70 61 ools..................(gptel--pa
224e0 72 73 65 2d 74 6f 6f 6c 73 20 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 29 29 0a rse-tools.backend.gptel-tools)).
22500 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 20 3a ......(plist-put.prompts-plist.:
22520 73 74 72 65 61 6d 20 3a 6a 73 6f 6e 2d 66 61 6c 73 65 29 29 0a 20 20 20 20 3b 3b 20 69 66 20 74 stream.:json-false)).....;;.if.t
22540 68 65 20 74 65 6d 70 65 72 61 74 75 72 65 20 61 6e 64 20 6d 61 78 2d 74 6f 6b 65 6e 73 20 61 72 he.temperature.and.max-tokens.ar
22560 65 6e 27 74 20 73 65 74 20 61 73 0a 20 20 20 20 3b 3b 20 62 61 63 6b 65 6e 64 2f 6d 6f 64 65 6c en't.set.as.....;;.backend/model
22580 2d 73 70 65 63 69 66 69 63 2c 20 75 73 65 20 74 68 65 20 67 6c 6f 62 61 6c 20 73 65 74 74 69 6e -specific,.use.the.global.settin
225a0 67 73 0a 20 20 20 20 28 77 68 65 6e 20 28 61 6e 64 20 67 70 74 65 6c 2d 74 65 6d 70 65 72 61 74 gs.....(when.(and.gptel-temperat
225c0 75 72 65 20 28 6e 6f 74 20 28 70 6c 69 73 74 2d 67 65 74 20 6f 70 74 69 6f 6e 73 2d 70 6c 69 73 ure.(not.(plist-get.options-plis
225e0 74 20 3a 74 65 6d 70 65 72 61 74 75 72 65 29 29 29 0a 20 20 20 20 20 20 28 73 65 74 71 20 6f 70 t.:temperature))).......(setq.op
22600 74 69 6f 6e 73 2d 70 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 tions-plist.............(plist-p
22620 75 74 20 6f 70 74 69 6f 6e 73 2d 70 6c 69 73 74 20 3a 74 65 6d 70 65 72 61 74 75 72 65 20 67 70 ut.options-plist.:temperature.gp
22640 74 65 6c 2d 74 65 6d 70 65 72 61 74 75 72 65 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 28 61 6e tel-temperature))).....(when.(an
22660 64 20 67 70 74 65 6c 2d 6d 61 78 2d 74 6f 6b 65 6e 73 20 28 6e 6f 74 20 28 70 6c 69 73 74 2d 67 d.gptel-max-tokens.(not.(plist-g
22680 65 74 20 6f 70 74 69 6f 6e 73 2d 70 6c 69 73 74 20 3a 6e 75 6d 5f 70 72 65 64 69 63 74 29 29 29 et.options-plist.:num_predict)))
226a0 0a 20 20 20 20 20 20 28 73 65 74 71 20 6f 70 74 69 6f 6e 73 2d 70 6c 69 73 74 0a 20 20 20 20 20 .......(setq.options-plist......
226c0 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 6f 70 74 69 6f 6e 73 2d 70 6c 69 73 74 20 .......(plist-put.options-plist.
226e0 3a 6e 75 6d 5f 70 72 65 64 69 63 74 20 67 70 74 65 6c 2d 6d 61 78 2d 74 6f 6b 65 6e 73 29 29 29 :num_predict.gptel-max-tokens)))
22700 0a 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 20 3a 6f .....(plist-put.prompts-plist.:o
22720 70 74 69 6f 6e 73 20 6f 70 74 69 6f 6e 73 2d 70 6c 69 73 74 29 29 29 0a 0a 3b 3b 20 4e 4f 54 45 ptions.options-plist)))..;;.NOTE
22740 3a 20 4e 6f 20 60 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 74 6f 6f 6c 73 27 20 6d 65 74 68 6f 64 :.No.`gptel--parse-tools'.method
22760 20 72 65 71 75 69 72 65 64 20 66 6f 72 20 67 70 74 65 6c 2d 6f 6c 6c 61 6d 61 2c 20 73 69 6e 63 .required.for.gptel-ollama,.sinc
22780 65 20 74 68 69 73 20 69 73 0a 3b 3b 20 68 61 6e 64 6c 65 64 20 62 79 20 69 74 73 20 64 65 66 67 e.this.is.;;.handled.by.its.defg
227a0 65 6e 65 72 69 63 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 0a 0a 28 63 6c 2d 64 65 66 6d 65 eneric.implementation..(cl-defme
227c0 74 68 6f 64 20 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 74 6f 6f 6c 2d 72 65 73 75 6c 74 73 20 28 thod.gptel--parse-tool-results.(
227e0 28 5f 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 6f 6c 6c 61 6d 61 29 20 74 6f 6f 6c 2d 75 73 65 (_backend.gptel-ollama).tool-use
22800 29 0a 20 20 22 52 65 74 75 72 6e 20 61 20 70 72 6f 6d 70 74 20 63 6f 6e 74 61 69 6e 69 6e 67 20 )..."Return.a.prompt.containing.
22820 74 6f 6f 6c 20 63 61 6c 6c 20 72 65 73 75 6c 74 73 20 69 6e 20 54 4f 4f 4c 2d 55 53 45 2e 22 0a tool.call.results.in.TOOL-USE.".
22840 20 20 28 6d 61 70 63 61 72 20 28 6c 61 6d 62 64 61 20 28 74 6f 6f 6c 2d 63 61 6c 6c 29 0a 20 20 ..(mapcar.(lambda.(tool-call)...
22860 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 3a 72 6f 6c 65 20 22 74 6f 6f 6c 22 20 3a 63 6f ..........(list.:role."tool".:co
22880 6e 74 65 6e 74 20 28 70 6c 69 73 74 2d 67 65 74 20 74 6f 6f 6c 2d 63 61 6c 6c 20 3a 72 65 73 75 ntent.(plist-get.tool-call.:resu
228a0 6c 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 74 6f 6f 6c 2d 75 73 65 29 29 0a 0a 3b 3b 20 4e lt)))...........tool-use))..;;.N
228c0 4f 54 45 3a 20 4e 6f 20 60 67 70 74 65 6c 2d 2d 69 6e 6a 65 63 74 2d 70 72 6f 6d 70 74 27 20 6d OTE:.No.`gptel--inject-prompt'.m
228e0 65 74 68 6f 64 20 72 65 71 75 69 72 65 64 20 66 6f 72 20 67 70 74 65 6c 2d 6f 6c 6c 61 6d 61 2c ethod.required.for.gptel-ollama,
22900 20 73 69 6e 63 65 20 74 68 69 73 20 69 73 0a 3b 3b 20 68 61 6e 64 6c 65 64 20 62 79 20 69 74 73 .since.this.is.;;.handled.by.its
22920 20 64 65 66 67 65 6e 65 72 69 63 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 0a 0a 28 63 6c 2d .defgeneric.implementation..(cl-
22940 64 65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 6c 69 73 74 20 28 28 62 61 defmethod.gptel--parse-list.((ba
22960 63 6b 65 6e 64 20 67 70 74 65 6c 2d 6f 6c 6c 61 6d 61 29 20 70 72 6f 6d 70 74 2d 6c 69 73 74 29 ckend.gptel-ollama).prompt-list)
22980 0a 20 20 28 69 66 20 28 63 6f 6e 73 70 20 28 63 61 72 20 70 72 6f 6d 70 74 2d 6c 69 73 74 29 29 ...(if.(consp.(car.prompt-list))
229a0 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 66 75 6c 6c 2d 70 72 6f 6d 70 74 29 29 20 20 20 20 20 .......(let.((full-prompt)).....
229c0 20 20 20 20 20 20 20 20 20 3b 20 41 64 76 61 6e 63 65 64 20 66 6f 72 6d 61 74 2c 20 6c 69 73 74 .........;.Advanced.format,.list
229e0 20 6f 66 20 6c 69 73 74 73 0a 20 20 20 20 20 20 20 20 28 64 6f 6c 69 73 74 20 28 65 6e 74 72 79 .of.lists.........(dolist.(entry
22a00 20 70 72 6f 6d 70 74 2d 6c 69 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 63 61 73 65 20 65 .prompt-list)...........(pcase.e
22a20 6e 74 72 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 60 28 70 72 6f 6d 70 74 20 2e 20 2c 6d 73 ntry.............(`(prompt...,ms
22a40 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 6c 69 73 74 20 3a 72 6f 6c g)..............(push.(list.:rol
22a60 65 20 22 75 73 65 72 22 20 3a 63 6f 6e 74 65 6e 74 20 28 6f 72 20 28 63 61 72 2d 73 61 66 65 20 e."user".:content.(or.(car-safe.
22a80 6d 73 67 29 20 6d 73 67 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 75 msg).msg))....................fu
22aa0 6c 6c 2d 70 72 6f 6d 70 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 60 28 72 65 73 70 6f ll-prompt)).............(`(respo
22ac0 6e 73 65 20 2e 20 2c 6d 73 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 nse...,msg)..............(push.(
22ae0 6c 69 73 74 20 3a 72 6f 6c 65 20 22 61 73 73 69 73 74 61 6e 74 22 20 3a 63 6f 6e 74 65 6e 74 20 list.:role."assistant".:content.
22b00 28 6f 72 20 28 63 61 72 2d 73 61 66 65 20 6d 73 67 29 20 6d 73 67 29 29 0a 20 20 20 20 20 20 20 (or.(car-safe.msg).msg))........
22b20 20 20 20 20 20 20 20 20 20 20 20 20 66 75 6c 6c 2d 70 72 6f 6d 70 74 29 29 0a 20 20 20 20 20 20 ............full-prompt)).......
22b40 20 20 20 20 20 20 28 60 28 74 6f 6f 6c 20 2e 20 2c 63 61 6c 6c 29 0a 20 20 20 20 20 20 20 20 20 ......(`(tool...,call)..........
22b60 20 20 20 20 28 70 75 73 68 20 28 6c 69 73 74 20 3a 72 6f 6c 65 20 22 61 73 73 69 73 74 61 6e 74 ....(push.(list.:role."assistant
22b80 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 3a 63 6f 6e 74 "..........................:cont
22ba0 65 6e 74 20 22 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 ent.""..........................
22bc0 3a 74 6f 6f 6c 5f 63 61 6c 6c 73 20 60 5b 28 3a 66 75 6e 63 74 69 6f 6e 20 28 3a 6e 61 6d 65 20 :tool_calls.`[(:function.(:name.
22be0 2c 28 70 6c 69 73 74 2d 67 65 74 20 63 61 6c 6c 20 3a 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 ,(plist-get.call.:name).........
22c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
22c20 20 20 20 20 20 20 20 20 20 20 20 3a 61 72 67 75 6d 65 6e 74 73 20 2c 28 70 6c 69 73 74 2d 67 65 ...........:arguments.,(plist-ge
22c40 74 20 63 61 6c 6c 20 3a 61 72 67 73 29 29 29 5d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 t.call.:args)))])...............
22c60 20 20 20 20 20 66 75 6c 6c 2d 70 72 6f 6d 70 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 .....full-prompt)..............(
22c80 70 75 73 68 20 28 63 61 72 20 28 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 74 6f 6f 6c 2d 72 65 73 push.(car.(gptel--parse-tool-res
22ca0 75 6c 74 73 20 62 61 63 6b 65 6e 64 20 28 6c 69 73 74 20 28 63 64 72 20 65 6e 74 72 79 29 29 29 ults.backend.(list.(cdr.entry)))
22cc0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 75 6c 6c 2d 70 72 6f 6d 70 74 )....................full-prompt
22ce0 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 6e 72 65 76 65 72 73 65 20 66 75 6c 6c 2d 70 72 6f 6d )))).........(nreverse.full-prom
22d00 70 74 29 29 0a 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 74 65 78 74 20 69 6e 20 70 72 pt)).....(cl-loop.for.text.in.pr
22d20 6f 6d 70 74 2d 6c 69 73 74 20 20 20 20 3b 20 53 69 6d 70 6c 65 20 66 6f 72 6d 61 74 2c 20 6c 69 ompt-list....;.Simple.format,.li
22d40 73 74 20 6f 66 20 73 74 72 69 6e 67 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 72 st.of.strings..............for.r
22d60 6f 6c 65 20 3d 20 74 20 74 68 65 6e 20 28 6e 6f 74 20 72 6f 6c 65 29 0a 20 20 20 20 20 20 20 20 ole.=.t.then.(not.role).........
22d80 20 20 20 20 20 69 66 20 74 65 78 74 20 63 6f 6c 6c 65 63 74 0a 20 20 20 20 20 20 20 20 20 20 20 .....if.text.collect............
22da0 20 20 28 6c 69 73 74 20 3a 72 6f 6c 65 20 28 69 66 20 72 6f 6c 65 20 22 75 73 65 72 22 20 22 61 ..(list.:role.(if.role."user"."a
22dc0 73 73 69 73 74 61 6e 74 22 29 20 3a 63 6f 6e 74 65 6e 74 20 74 65 78 74 29 29 29 29 0a 0a 28 63 ssistant").:content.text))))..(c
22de0 6c 2d 64 65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 62 75 66 66 65 72 20 l-defmethod.gptel--parse-buffer.
22e00 28 28 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 6f 6c 6c 61 6d 61 29 20 26 6f 70 74 69 6f 6e 61 ((backend.gptel-ollama).&optiona
22e20 6c 20 6d 61 78 2d 65 6e 74 72 69 65 73 29 0a 20 20 28 6c 65 74 20 28 28 70 72 6f 6d 70 74 73 29 l.max-entries)...(let.((prompts)
22e40 20 28 70 72 65 76 2d 70 74 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 28 69 66 20 28 6f 72 20 .(prev-pt.(point))).....(if.(or.
22e60 67 70 74 65 6c 2d 6d 6f 64 65 20 67 70 74 65 6c 2d 74 72 61 63 6b 2d 72 65 73 70 6f 6e 73 65 29 gptel-mode.gptel-track-response)
22e80 0a 20 20 20 20 20 20 20 20 28 77 68 69 6c 65 20 28 61 6e 64 20 28 6f 72 20 28 6e 6f 74 20 6d 61 .........(while.(and.(or.(not.ma
22ea0 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 29 0a 20 x-entries).(>=.max-entries.0))..
22ec0 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 61 72 20 28 70 ...................(goto-char.(p
22ee0 72 65 76 69 6f 75 73 2d 73 69 6e 67 6c 65 2d 70 72 6f 70 65 72 74 79 2d 63 68 61 6e 67 65 0a 20 revious-single-property-change..
22f00 20 20 20 20 20 20 20 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 ...............................(
22f20 70 6f 69 6e 74 29 20 27 67 70 74 65 6c 20 6e 69 6c 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 29 0a point).'gptel.nil.(point-min))).
22f40 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 3d 20 28 70 6f 69 ....................(not.(=.(poi
22f60 6e 74 29 20 70 72 65 76 2d 70 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 63 61 73 65 20 nt).prev-pt)))...........(pcase.
22f80 28 67 65 74 2d 63 68 61 72 2d 70 72 6f 70 65 72 74 79 20 28 70 6f 69 6e 74 29 20 27 67 70 74 65 (get-char-property.(point).'gpte
22fa0 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 27 72 65 73 70 6f 6e 73 65 0a 20 20 20 20 20 20 l).............('response.......
22fc0 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 63 6f 6e 74 65 6e 74 20 28 67 70 74 .......(when-let*.((content.(gpt
22fe0 65 6c 2d 2d 74 72 69 6d 2d 70 72 65 66 69 78 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 el--trim-prefixes...............
23000 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 73 75 62 .....................(buffer-sub
23020 73 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 20 28 70 6f 69 6e 74 29 20 70 72 65 string-no-properties.(point).pre
23040 76 2d 70 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 6c v-pt))))................(push.(l
23060 69 73 74 20 3a 72 6f 6c 65 20 22 61 73 73 69 73 74 61 6e 74 22 20 3a 63 6f 6e 74 65 6e 74 20 63 ist.:role."assistant".:content.c
23080 6f 6e 74 65 6e 74 29 20 70 72 6f 6d 70 74 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 ontent).prompts))).............(
230a0 60 28 74 6f 6f 6c 20 2e 20 2c 5f 69 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 61 76 `(tool...,_id)..............(sav
230c0 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 e-excursion................(cond
230e0 69 74 69 6f 6e 2d 63 61 73 65 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ition-case.nil..................
23100 20 20 28 6c 65 74 2a 20 28 28 74 6f 6f 6c 2d 63 61 6c 6c 20 28 72 65 61 64 20 28 63 75 72 72 65 ..(let*.((tool-call.(read.(curre
23120 6e 74 2d 62 75 66 66 65 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 nt-buffer)))....................
23140 20 20 20 20 20 20 20 28 6e 61 6d 65 20 28 70 6c 69 73 74 2d 67 65 74 20 74 6f 6f 6c 2d 63 61 6c .......(name.(plist-get.tool-cal
23160 6c 20 3a 6e 61 6d 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 l.:name)).......................
23180 20 20 20 20 28 61 72 67 75 6d 65 6e 74 73 20 28 70 6c 69 73 74 2d 67 65 74 20 74 6f 6f 6c 2d 63 ....(arguments.(plist-get.tool-c
231a0 61 6c 6c 20 3a 61 72 67 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 all.:args)))....................
231c0 20 20 28 70 6c 69 73 74 2d 70 75 74 20 74 6f 6f 6c 2d 63 61 6c 6c 20 3a 72 65 73 75 6c 74 0a 20 ..(plist-put.tool-call.:result..
231e0 20 20 20 20 20 20 20 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 ...............................(
23200 73 74 72 69 6e 67 2d 74 72 69 6d 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 2d 6e 6f string-trim.(buffer-substring-no
23220 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 20 -properties.....................
23240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6f 69 6e 74 ..........................(point
23260 29 20 70 72 65 76 2d 70 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ).prev-pt)))....................
23280 20 20 28 70 75 73 68 20 28 63 61 72 20 28 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 74 6f 6f 6c 2d ..(push.(car.(gptel--parse-tool-
232a0 72 65 73 75 6c 74 73 20 62 61 63 6b 65 6e 64 20 28 6c 69 73 74 20 74 6f 6f 6c 2d 63 61 6c 6c 29 results.backend.(list.tool-call)
232c0 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 70 72 ))............................pr
232e0 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 28 70 75 73 ompts)......................(pus
23300 68 20 28 6c 69 73 74 20 3a 72 6f 6c 65 20 22 61 73 73 69 73 74 61 6e 74 22 0a 20 20 20 20 20 20 h.(list.:role."assistant".......
23320 20 20 20 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 63 6f 6e 74 ...........................:cont
23340 65 6e 74 20 22 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 ent.""..........................
23360 20 20 20 20 20 20 20 20 3a 74 6f 6f 6c 5f 63 61 6c 6c 73 20 60 5b 28 3a 66 75 6e 63 74 69 6f 6e ........:tool_calls.`[(:function
23380 20 28 3a 6e 61 6d 65 20 2c 6e 61 6d 65 20 3a 61 72 67 75 6d 65 6e 74 73 20 2c 61 72 67 75 6d 65 .(:name.,name.:arguments.,argume
233a0 6e 74 73 29 29 5d 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 nts))]).........................
233c0 20 20 20 70 72 6f 6d 70 74 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 ...prompts))..................((
233e0 65 6e 64 2d 6f 66 2d 66 69 6c 65 20 69 6e 76 61 6c 69 64 2d 72 65 61 64 2d 73 79 6e 74 61 78 29 end-of-file.invalid-read-syntax)
23400 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 28 66 6f 72 ...................(message.(for
23420 6d 61 74 20 22 43 6f 75 6c 64 20 6e 6f 74 20 70 61 72 73 65 20 74 6f 6f 6c 2d 63 61 6c 6c 20 6f mat."Could.not.parse.tool-call.o
23440 6e 20 6c 69 6e 65 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 n.line.%s"......................
23460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 6e 65 2d 6e 75 6d 62 65 72 2d 61 74 2d 70 6f ..............(line-number-at-po
23480 73 20 28 70 6f 69 6e 74 29 29 29 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 27 69 s.(point)))))))).............('i
234a0 67 6e 6f 72 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 27 6e 69 6c 0a 20 20 20 20 20 20 20 gnore).............('nil........
234c0 20 20 20 20 20 20 28 69 66 20 67 70 74 65 6c 2d 74 72 61 63 6b 2d 6d 65 64 69 61 0a 20 20 20 20 ......(if.gptel-track-media.....
234e0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 63 6f 6e 74 65 6e .............(when-let*.((conten
23500 74 20 28 67 70 74 65 6c 2d 2d 6f 6c 6c 61 6d 61 2d 70 61 72 73 65 2d 6d 75 6c 74 69 70 61 72 74 t.(gptel--ollama-parse-multipart
23520 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 ................................
23540 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 6d 65 64 69 61 2d 6c 69 6e 6b ........(gptel--parse-media-link
23560 73 20 6d 61 6a 6f 72 2d 6d 6f 64 65 20 28 70 6f 69 6e 74 29 20 70 72 65 76 2d 70 74 29 29 29 29 s.major-mode.(point).prev-pt))))
23580 0a 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 3e 20 28 6c 65 ....................(when.(>.(le
235a0 6e 67 74 68 20 63 6f 6e 74 65 6e 74 29 20 30 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ngth.content).0)................
235c0 20 20 20 20 20 20 28 70 75 73 68 20 28 61 70 70 65 6e 64 20 27 28 3a 72 6f 6c 65 20 22 75 73 65 ......(push.(append.'(:role."use
235e0 72 22 29 20 63 6f 6e 74 65 6e 74 29 20 70 72 6f 6d 70 74 73 29 29 29 0a 20 20 20 20 20 20 20 20 r").content).prompts))).........
23600 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 63 6f 6e 74 65 6e 74 20 28 67 70 74 .......(when-let*.((content.(gpt
23620 65 6c 2d 2d 74 72 69 6d 2d 70 72 65 66 69 78 65 73 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 el--trim-prefixes.(buffer-substr
23640 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...............
23660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
23680 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6f 69 6e 74 29 20 70 72 65 76 2d 70 74 29 29 29 29 .............(point).prev-pt))))
236a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 6c 69 73 74 20 3a 72 ..................(push.(list.:r
236c0 6f 6c 65 20 22 75 73 65 72 22 20 3a 63 6f 6e 74 65 6e 74 20 63 6f 6e 74 65 6e 74 29 20 70 72 6f ole."user".:content.content).pro
236e0 6d 70 74 73 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 70 72 65 76 2d 70 mpts)))))...........(setq.prev-p
23700 74 20 28 70 6f 69 6e 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 6d 61 78 2d 65 6e t.(point))...........(and.max-en
23720 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 29 0a 20 20 tries.(cl-decf.max-entries)))...
23740 20 20 20 20 28 6c 65 74 20 28 28 63 6f 6e 74 65 6e 74 20 28 73 74 72 69 6e 67 2d 74 72 69 6d 20 ....(let.((content.(string-trim.
23760 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.
23780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
237a0 20 20 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 0a 20 ...(point-min).(point-max)))))..
237c0 20 20 20 20 20 20 20 28 70 75 73 68 20 28 6c 69 73 74 20 3a 72 6f 6c 65 20 22 75 73 65 72 22 20 .......(push.(list.:role."user".
237e0 3a 63 6f 6e 74 65 6e 74 20 63 6f 6e 74 65 6e 74 29 20 70 72 6f 6d 70 74 73 29 29 29 0a 20 20 20 :content.content).prompts)))....
23800 20 70 72 6f 6d 70 74 73 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 6f 6c 6c 61 6d 61 .prompts))..(defun.gptel--ollama
23820 2d 70 61 72 73 65 2d 6d 75 6c 74 69 70 61 72 74 20 28 70 61 72 74 73 29 0a 20 20 22 43 6f 6e 76 -parse-multipart.(parts)..."Conv
23840 65 72 74 20 61 20 6d 75 6c 74 69 70 61 72 74 20 70 72 6f 6d 70 74 20 50 41 52 54 53 20 74 6f 20 ert.a.multipart.prompt.PARTS.to.
23860 74 68 65 20 4f 6c 6c 61 6d 61 20 41 50 49 20 66 6f 72 6d 61 74 2e 0a 0a 54 68 65 20 69 6e 70 75 the.Ollama.API.format...The.inpu
23880 74 20 69 73 20 61 6e 20 61 6c 69 73 74 20 6f 66 20 74 68 65 20 66 6f 72 6d 0a 20 28 28 3a 74 65 t.is.an.alist.of.the.form..((:te
238a0 78 74 20 5c 22 73 6f 6d 65 20 74 65 78 74 5c 22 29 0a 20 20 28 3a 6d 65 64 69 61 20 5c 22 2f 70 xt.\"some.text\")...(:media.\"/p
238c0 61 74 68 2f 74 6f 2f 6d 65 64 69 61 2e 70 6e 67 5c 22 20 3a 6d 69 6d 65 20 5c 22 69 6d 61 67 65 ath/to/media.png\".:mime.\"image
238e0 2f 70 6e 67 5c 22 29 0a 20 20 28 3a 74 65 78 74 20 5c 22 4d 6f 72 65 20 74 65 78 74 5c 22 29 29 /png\")...(:text.\"More.text\"))
23900 2e 0a 0a 54 68 65 20 6f 75 74 70 75 74 20 69 73 20 61 20 76 65 63 74 6f 72 20 6f 66 20 65 6e 74 ...The.output.is.a.vector.of.ent
23920 72 69 65 73 20 69 6e 20 61 20 62 61 63 6b 65 6e 64 2d 61 70 70 72 6f 70 72 69 61 74 65 0a 66 6f ries.in.a.backend-appropriate.fo
23940 72 6d 61 74 2e 22 0a 20 20 28 63 6c 2d 6c 6f 6f 70 0a 20 20 20 66 6f 72 20 70 61 72 74 20 69 6e rmat."...(cl-loop....for.part.in
23960 20 70 61 72 74 73 0a 20 20 20 66 6f 72 20 6e 20 75 70 66 72 6f 6d 20 31 0a 20 20 20 77 69 74 68 .parts....for.n.upfrom.1....with
23980 20 6c 61 73 74 20 3d 20 28 6c 65 6e 67 74 68 20 70 61 72 74 73 29 0a 20 20 20 66 6f 72 20 74 65 .last.=.(length.parts)....for.te
239a0 78 74 20 3d 20 28 70 6c 69 73 74 2d 67 65 74 20 70 61 72 74 20 3a 74 65 78 74 29 0a 20 20 20 66 xt.=.(plist-get.part.:text)....f
239c0 6f 72 20 6d 65 64 69 61 20 3d 20 28 70 6c 69 73 74 2d 67 65 74 20 70 61 72 74 20 3a 6d 65 64 69 or.media.=.(plist-get.part.:medi
239e0 61 29 0a 20 20 20 69 66 20 74 65 78 74 20 64 6f 0a 20 20 20 28 61 6e 64 20 28 6f 72 20 28 3d 20 a)....if.text.do....(and.(or.(=.
23a00 6e 20 31 29 20 28 3d 20 6e 20 6c 61 73 74 29 29 20 28 73 65 74 71 20 74 65 78 74 20 28 67 70 74 n.1).(=.n.last)).(setq.text.(gpt
23a20 65 6c 2d 2d 74 72 69 6d 2d 70 72 65 66 69 78 65 73 20 74 65 78 74 29 29 29 20 61 6e 64 0a 20 20 el--trim-prefixes.text))).and...
23a40 20 69 66 20 74 65 78 74 0a 20 20 20 63 6f 6c 6c 65 63 74 20 74 65 78 74 20 69 6e 74 6f 20 74 65 .if.text....collect.text.into.te
23a60 78 74 2d 61 72 72 61 79 20 65 6e 64 0a 20 20 20 65 6c 73 65 20 69 66 20 6d 65 64 69 61 0a 20 20 xt-array.end....else.if.media...
23a80 20 63 6f 6c 6c 65 63 74 20 28 67 70 74 65 6c 2d 2d 62 61 73 65 36 34 2d 65 6e 63 6f 64 65 20 6d .collect.(gptel--base64-encode.m
23aa0 65 64 69 61 29 20 69 6e 74 6f 20 6d 65 64 69 61 2d 61 72 72 61 79 0a 20 20 20 65 6c 73 65 20 69 edia).into.media-array....else.i
23ac0 66 20 28 70 6c 69 73 74 2d 67 65 74 20 70 61 72 74 20 3a 74 65 78 74 66 69 6c 65 29 0a 20 20 20 f.(plist-get.part.:textfile)....
23ae0 63 6f 6c 6c 65 63 74 0a 20 20 20 28 77 69 74 68 2d 74 65 6d 70 2d 62 75 66 66 65 72 0a 20 20 20 collect....(with-temp-buffer....
23b00 20 20 28 67 70 74 65 6c 2d 2d 69 6e 73 65 72 74 2d 66 69 6c 65 2d 73 74 72 69 6e 67 20 28 70 6c ..(gptel--insert-file-string.(pl
23b20 69 73 74 2d 67 65 74 20 70 61 72 74 20 3a 74 65 78 74 66 69 6c 65 29 29 0a 20 20 20 20 20 28 62 ist-get.part.:textfile))......(b
23b40 75 66 66 65 72 2d 73 74 72 69 6e 67 29 29 0a 20 20 20 69 6e 74 6f 20 74 65 78 74 2d 61 72 72 61 uffer-string))....into.text-arra
23b60 79 0a 20 20 20 66 69 6e 61 6c 6c 79 20 72 65 74 75 72 6e 0a 20 20 20 60 28 2c 40 28 61 6e 64 20 y....finally.return....`(,@(and.
23b80 74 65 78 74 2d 61 72 72 61 79 20 20 28 6c 69 73 74 20 3a 63 6f 6e 74 65 6e 74 20 28 6d 61 70 63 text-array..(list.:content.(mapc
23ba0 6f 6e 63 61 74 20 23 27 69 64 65 6e 74 69 74 79 20 74 65 78 74 2d 61 72 72 61 79 20 22 20 22 29 oncat.#'identity.text-array.".")
23bc0 29 29 0a 20 20 20 20 20 2c 40 28 61 6e 64 20 6d 65 64 69 61 2d 61 72 72 61 79 20 28 6c 69 73 74 ))......,@(and.media-array.(list
23be0 20 3a 69 6d 61 67 65 73 20 20 28 76 63 6f 6e 63 61 74 20 6d 65 64 69 61 2d 61 72 72 61 79 29 29 .:images..(vconcat.media-array))
23c00 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 77 72 61 70 2d ))))..(cl-defmethod.gptel--wrap-
23c20 75 73 65 72 2d 70 72 6f 6d 70 74 20 28 28 5f 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 6f 6c 6c user-prompt.((_backend.gptel-oll
23c40 61 6d 61 29 20 70 72 6f 6d 70 74 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ama).prompts....................
23c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 26 6f 70 74 69 6f 6e 61 6c 20 69 6e ....................&optional.in
23c80 6a 65 63 74 2d 6d 65 64 69 61 29 0a 20 20 22 57 72 61 70 20 74 68 65 20 6c 61 73 74 20 75 73 65 ject-media)..."Wrap.the.last.use
23ca0 72 20 70 72 6f 6d 70 74 20 69 6e 20 50 52 4f 4d 50 54 53 20 77 69 74 68 20 74 68 65 20 63 6f 6e r.prompt.in.PROMPTS.with.the.con
23cc0 74 65 78 74 20 73 74 72 69 6e 67 2e 0a 0a 49 66 20 49 4e 4a 45 43 54 2d 4d 45 44 49 41 20 69 73 text.string...If.INJECT-MEDIA.is
23ce0 20 6e 6f 6e 2d 6e 69 6c 20 77 72 61 70 20 69 74 20 77 69 74 68 20 62 61 73 65 36 34 2d 65 6e 63 .non-nil.wrap.it.with.base64-enc
23d00 6f 64 65 64 20 6d 65 64 69 61 0a 66 69 6c 65 73 20 69 6e 20 74 68 65 20 63 6f 6e 74 65 78 74 2e oded.media.files.in.the.context.
23d20 22 0a 20 20 28 69 66 20 69 6e 6a 65 63 74 2d 6d 65 64 69 61 0a 20 20 20 20 20 20 3b 3b 20 57 72 "...(if.inject-media.......;;.Wr
23d40 61 70 20 74 68 65 20 66 69 72 73 74 20 75 73 65 72 20 70 72 6f 6d 70 74 20 77 69 74 68 20 69 6e ap.the.first.user.prompt.with.in
23d60 63 6c 75 64 65 64 20 6d 65 64 69 61 20 66 69 6c 65 73 2f 63 6f 6e 74 65 78 74 73 0a 20 20 20 20 cluded.media.files/contexts.....
23d80 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 6d 65 64 69 61 2d 6c 69 73 74 20 28 67 70 74 65 6c ..(when-let*.((media-list.(gptel
23da0 2d 63 6f 6e 74 65 78 74 2d 2d 63 6f 6c 6c 65 63 74 2d 6d 65 64 69 61 29 29 0a 20 20 20 20 20 20 -context--collect-media)).......
23dc0 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 65 64 69 61 2d 70 72 6f 63 65 73 73 65 64 20 28 67 70 ............(media-processed.(gp
23de0 74 65 6c 2d 2d 6f 6c 6c 61 6d 61 2d 70 61 72 73 65 2d 6d 75 6c 74 69 70 61 72 74 20 6d 65 64 69 tel--ollama-parse-multipart.medi
23e00 61 2d 6c 69 73 74 29 29 29 0a 20 20 20 20 20 20 20 20 28 63 6c 2d 63 61 6c 6c 66 20 28 6c 61 6d a-list))).........(cl-callf.(lam
23e20 62 64 61 20 28 69 6d 61 67 65 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 bda.(images)....................
23e40 20 28 76 63 6f 6e 63 61 74 20 28 70 6c 69 73 74 2d 67 65 74 20 6d 65 64 69 61 2d 70 72 6f 63 65 .(vconcat.(plist-get.media-proce
23e60 73 73 65 64 20 3a 69 6d 61 67 65 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ssed.:images)...................
23e80 20 20 20 20 20 20 20 20 20 20 20 69 6d 61 67 65 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 ...........images)).............
23ea0 28 70 6c 69 73 74 2d 67 65 74 20 28 63 61 72 20 70 72 6f 6d 70 74 73 29 20 3a 69 6d 61 67 65 73 (plist-get.(car.prompts).:images
23ec0 29 29 29 0a 20 20 20 20 3b 3b 20 57 72 61 70 20 74 68 65 20 6c 61 73 74 20 75 73 65 72 20 70 72 ))).....;;.Wrap.the.last.user.pr
23ee0 6f 6d 70 74 20 77 69 74 68 20 69 6e 63 6c 75 64 65 64 20 74 65 78 74 20 63 6f 6e 74 65 78 74 73 ompt.with.included.text.contexts
23f00 0a 20 20 20 20 28 63 6c 2d 63 61 6c 6c 66 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 77 72 .....(cl-callf.gptel-context--wr
23f20 61 70 20 28 70 6c 69 73 74 2d 67 65 74 20 28 63 61 72 20 28 6c 61 73 74 20 70 72 6f 6d 70 74 73 ap.(plist-get.(car.(last.prompts
23f40 29 29 20 3a 63 6f 6e 74 65 6e 74 29 29 29 29 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a )).:content))))..;;;###autoload.
23f60 28 63 6c 2d 64 65 66 75 6e 20 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 6c 6c 61 6d 61 0a 20 20 20 20 (cl-defun.gptel-make-ollama.....
23f80 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 65 79 20 (name.&key.curl-args.header.key.
23fa0 6d 6f 64 65 6c 73 20 73 74 72 65 61 6d 20 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 0a 20 20 20 models.stream.request-params....
23fc0 20 20 20 20 20 20 20 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 .......(host."localhost:11434").
23fe0 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 22 29 0a 20 20 20 20 ..........(protocol."http").....
24000 20 20 20 20 20 20 28 65 6e 64 70 6f 69 6e 74 20 22 2f 61 70 69 2f 63 68 61 74 22 29 29 0a 20 20 ......(endpoint."/api/chat"))...
24020 22 52 65 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 "Register.an.Ollama.backend.for.
24040 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 65 gptel.with.NAME...Keyword.argume
24060 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 20 nts:..CURL-ARGS.(optional).is.a.
24080 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 74 list.of.additional.Curl.argument
240a0 73 2e 0a 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 s...HOST.is.where.Ollama.runs.(w
240c0 69 74 68 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 ith.port),.defaults.to.localhost
240e0 3a 31 31 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 :11434..MODELS.is.a.list.of.avai
24100 6c 61 62 6c 65 20 6d 6f 64 65 6c 20 6e 61 6d 65 73 2c 20 61 73 20 73 79 6d 62 6f 6c 73 2e 0a 41 lable.model.names,.as.symbols..A
24120 64 64 69 74 69 6f 6e 61 6c 6c 79 2c 20 79 6f 75 20 63 61 6e 20 73 70 65 63 69 66 79 20 73 75 70 dditionally,.you.can.specify.sup
24140 70 6f 72 74 65 64 20 4c 4c 4d 20 63 61 70 61 62 69 6c 69 74 69 65 73 20 6c 69 6b 65 0a 76 69 73 ported.LLM.capabilities.like.vis
24160 69 6f 6e 20 6f 72 20 74 6f 6f 6c 2d 75 73 65 20 62 79 20 61 70 70 65 6e 64 69 6e 67 20 61 20 70 ion.or.tool-use.by.appending.a.p
24180 6c 69 73 74 20 74 6f 20 74 68 65 20 6d 6f 64 65 6c 20 77 69 74 68 20 6d 6f 72 65 0a 69 6e 66 6f list.to.the.model.with.more.info
241a0 72 6d 61 74 69 6f 6e 2c 20 69 6e 20 74 68 65 20 66 6f 72 6d 0a 0a 20 28 6d 6f 64 65 6c 2d 6e 61 rmation,.in.the.form...(model-na
241c0 6d 65 20 2e 20 70 6c 69 73 74 29 0a 0a 43 75 72 72 65 6e 74 6c 79 20 72 65 63 6f 67 6e 69 7a 65 me...plist)..Currently.recognize
241e0 64 20 70 6c 69 73 74 20 6b 65 79 73 20 61 72 65 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 2c 20 3a d.plist.keys.are.:description,.:
24200 63 61 70 61 62 69 6c 69 74 69 65 73 0a 61 6e 64 20 3a 6d 69 6d 65 2d 74 79 70 65 73 2e 20 20 41 capabilities.and.:mime-types...A
24220 6e 20 65 78 61 6d 70 6c 65 20 6f 66 20 61 20 6d 6f 64 65 6c 20 73 70 65 63 69 66 69 63 61 74 69 n.example.of.a.model.specificati
24240 6f 6e 20 69 6e 63 6c 75 64 69 6e 67 0a 62 6f 74 68 20 6b 69 6e 64 73 20 6f 66 20 73 70 65 63 73 on.including.both.kinds.of.specs
24260 3a 0a 0a 3a 6d 6f 64 65 6c 73 0a 5c 5c 3d 27 28 6d 69 73 74 72 61 6c 3a 6c 61 74 65 73 74 20 20 :..:models.\\='(mistral:latest..
24280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 53 69 6d 70 6c 65 20 73 70 ......................;Simple.sp
242a0 65 63 73 0a 20 20 6f 70 65 6e 68 65 72 6d 65 73 3a 6c 61 74 65 73 74 0a 20 20 28 6c 6c 61 76 61 ecs...openhermes:latest...(llava
242c0 3a 31 33 62 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :13b............................
242e0 3b 46 75 6c 6c 20 73 70 65 63 0a 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 0a 20 20 20 5c 22 ;Full.spec....:description....\"
24300 4c 6c 61 76 61 20 31 2e 36 3a 20 4c 61 72 67 65 20 4c 61 6e 75 61 67 65 20 61 6e 64 20 56 69 73 Llava.1.6:.Large.Lanuage.and.Vis
24320 69 6f 6e 20 41 73 73 69 73 74 61 6e 74 5c 22 0a 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 ion.Assistant\"....:capabilities
24340 20 28 6d 65 64 69 61 29 0a 20 20 20 3a 6d 69 6d 65 2d 74 79 70 65 73 20 28 5c 22 69 6d 61 67 65 .(media)....:mime-types.(\"image
24360 2f 6a 70 65 67 5c 22 20 5c 22 69 6d 61 67 65 2f 70 6e 67 5c 22 29 29 29 0a 0a 0a 53 54 52 45 41 /jpeg\".\"image/png\")))...STREA
24380 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 6d 69 M.is.a.boolean.to.toggle.streami
243a0 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 65 2e ng.responses,.defaults.to.false.
243c0 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 73 20 ..PROTOCOL.(optional).specifies.
243e0 74 68 65 20 70 72 6f 74 6f 63 6f 6c 2c 20 68 74 74 70 20 62 79 20 64 65 66 61 75 6c 74 2e 0a 0a the.protocol,.http.by.default...
24400 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 49 20 65 ENDPOINT.(optional).is.the.API.e
24420 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 75 6c 74 ndpoint.for.completions,.default
24440 73 20 74 6f 0a 5c 22 2f 61 70 69 2f 67 65 6e 65 72 61 74 65 5c 22 2e 0a 0a 48 45 41 44 45 52 20 s.to.\"/api/generate\"...HEADER.
24460 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 65 61 (optional).is.for.additional.hea
24480 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 2e 20 ders.to.send.with.each.request..
244a0 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 63 .It.should.be.an.alist.or.a.func
244c0 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 3a tion.that.retuns.an.alist,.like:
244e0 0a 20 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
24500 74 69 6f 6e 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 tion/json\"))..KEY.(optional).is
24520 20 61 20 76 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 .a.variable.whose.value.is.the.A
24540 50 49 20 6b 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 PI.key,.or.function.that.returns
24560 20 74 68 65 20 6b 65 79 2e 20 20 54 68 69 73 20 69 73 20 74 79 70 69 63 61 6c 6c 79 20 6e 6f 74 .the.key...This.is.typically.not
24580 20 72 65 71 75 69 72 65 64 0a 66 6f 72 20 6c 6f 63 61 6c 20 6d 6f 64 65 6c 73 20 6c 69 6b 65 20 .required.for.local.models.like.
245a0 4f 6c 6c 61 6d 61 2e 0a 0a 52 45 51 55 45 53 54 2d 50 41 52 41 4d 53 20 28 6f 70 74 69 6f 6e 61 Ollama...REQUEST-PARAMS.(optiona
245c0 6c 29 20 69 73 20 61 20 70 6c 69 73 74 20 6f 66 20 61 64 64 69 74 69 6f 6e 61 6c 20 48 54 54 50 l).is.a.plist.of.additional.HTTP
245e0 20 72 65 71 75 65 73 74 0a 70 61 72 61 6d 65 74 65 72 73 20 28 61 73 20 70 6c 69 73 74 20 6b 65 .request.parameters.(as.plist.ke
24600 79 73 29 20 61 6e 64 20 76 61 6c 75 65 73 20 73 75 70 70 6f 72 74 65 64 20 62 79 20 74 68 65 20 ys).and.values.supported.by.the.
24620 41 50 49 2e 20 20 55 73 65 0a 74 68 65 73 65 20 74 6f 20 73 65 74 20 70 61 72 61 6d 65 74 65 72 API...Use.these.to.set.parameter
24640 73 20 74 68 61 74 20 67 70 74 65 6c 20 64 6f 65 73 20 6e 6f 74 20 70 72 6f 76 69 64 65 20 75 73 s.that.gptel.does.not.provide.us
24660 65 72 20 6f 70 74 69 6f 6e 73 0a 66 6f 72 2e 0a 0a 45 78 61 6d 70 6c 65 3a 0a 2d 2d 2d 2d 2d 2d er.options.for...Example:.------
24680 2d 0a 0a 20 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 6c 6c 61 6d 61 0a 20 20 20 5c 22 4f 6c 6c 61 -...(gptel-make-ollama....\"Olla
246a0 6d 61 5c 22 0a 20 20 20 3a 68 6f 73 74 20 5c 22 6c 6f 63 61 6c 68 6f 73 74 3a 31 31 34 33 34 5c ma\"....:host.\"localhost:11434\
246c0 22 0a 20 20 20 3a 6d 6f 64 65 6c 73 20 5c 5c 3d 27 28 6d 69 73 74 72 61 6c 3a 6c 61 74 65 73 74 "....:models.\\='(mistral:latest
246e0 29 0a 20 20 20 3a 73 74 72 65 61 6d 20 74 29 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 69 6e 64 )....:stream.t)"...(declare.(ind
24700 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 6c 2d ent.1))...(let.((backend.(gptel-
24720 2d 6d 61 6b 65 2d 6f 6c 6c 61 6d 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a -make-ollama...................:
24740 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.............
24760 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................
24780 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...................
247a0 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..................
247c0 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
247e0 65 6c 73 20 28 67 70 74 65 6c 2d 2d 70 72 6f 63 65 73 73 2d 6d 6f 64 65 6c 73 20 6d 6f 64 65 6c els.(gptel--process-models.model
24800 73 29 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 s)...................:protocol.p
24820 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 64 70 6f rotocol...................:endpo
24840 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 20 20 3a int.endpoint...................:
24860 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 20 20 20 stream.stream...................
24880 3a 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 20 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 0a 20 :request-params.request-params..
248a0 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 74 6f 63 .................:url.(if.protoc
248c0 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 20 28 63 ol............................(c
248e0 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 70 6f 69 oncat.protocol."://".host.endpoi
24900 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 28 63 6f nt)..........................(co
24920 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 70 72 6f ncat.host.endpoint))))).....(pro
24940 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 2d 67 65 g1.backend.......(setf.(alist-ge
24960 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 20 20 20 t.name.gptel--known-backends....
24980 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 27 65 71 ....................nil.nil.#'eq
249a0 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 64 29 29 ual)...................backend))
249c0 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 3b 3b 20 ))..(provide.'gptel-ollama).;;;.
249e0 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 00 00 00 gptel-ollama.el.ends.here.......
24a00 67 70 74 65 6c 2d 30 2e 39 2e 39 2f 67 70 74 65 6c 2d 63 75 72 6c 2e 65 6c 00 00 00 00 00 00 00 gptel-0.9.9/gptel-curl.el.......
24a20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
24a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
24a60 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
24a80 30 30 35 34 33 31 35 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 33 37 31 33 00 20 30 00 00 00 0054315.00000000000.013713..0...
24aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
24ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
24ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
24b00 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...................
24b20 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...................
24b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
24b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
24b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
24ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
24bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
24be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
24c00 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
24c20 72 74 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 rt.for.gptel.........-*-.lexical
24c40 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.(
24c60 43 29 20 32 30 32 33 2d 32 30 32 35 20 20 4b 61 72 74 68 69 6b 20 43 68 69 6b 6d 61 67 61 6c 75 C).2023-2025..Karthik.Chikmagalu
24c80 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 61 6c 75 r..;;.Author:.Karthik.Chikmagalu
24ca0 72 3b 3b 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 6f r;;.<karthikchikmagalur@gmail.co
24cc0 6d 3e 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 0a 3b 3b 20 m>.;;.Keywords:.convenience..;;.
24ce0 53 50 44 58 2d 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 SPDX-License-Identifier:.GPL-3.0
24d00 2d 6f 72 2d 6c 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 -or-later..;;.This.program.is.fr
24d20 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 74 72 69 62 75 74 ee.software;.you.can.redistribut
24d40 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 6e 64 65 72 20 74 e.it.and/or.modify.;;.it.under.t
24d60 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 6c 20 50 75 62 6c he.terms.of.the.GNU.General.Publ
24d80 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 0a 3b 3b 20 74 68 ic.License.as.published.by.;;.th
24da0 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 2c 20 65 69 74 68 e.Free.Software.Foundation,.eith
24dc0 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 65 2c 20 6f 72 0a er.version.3.of.the.License,.or.
24de0 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 74 65 72 20 76 65 ;;.(at.your.option).any.later.ve
24e00 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 20 64 69 73 74 72 rsion...;;.This.program.is.distr
24e20 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 20 77 69 6c 6c 20 ibuted.in.the.hope.that.it.will.
24e40 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 41 4e 59 20 57 41 be.useful,.;;.but.WITHOUT.ANY.WA
24e60 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 6d 70 6c 69 65 64 RRANTY;.without.even.the.implied
24e80 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 49 4c 49 54 59 20 .warranty.of.;;.MERCHANTABILITY.
24ea0 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 52 20 50 55 52 50 or.FITNESS.FOR.A.PARTICULAR.PURP
24ec0 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 61 6c 20 50 75 62 OSE...See.the.;;.GNU.General.Pub
24ee0 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 6c 73 2e 0a 0a 3b lic.License.for.more.details...;
24f00 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 20 61 20 63 6f 70 ;.You.should.have.received.a.cop
24f20 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 63 20 4c 69 63 65 y.of.the.GNU.General.Public.Lice
24f40 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 67 72 61 6d 2e 20 nse.;;.along.with.this.program..
24f60 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 67 6e 75 2e 6f 72 .If.not,.see.<https://www.gnu.or
24f80 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 61 72 79 3a 0a 0a g/licenses/>...;;;.Commentary:..
24fa0 3b 3b 20 43 75 72 6c 20 73 75 70 70 6f 72 74 20 66 6f 72 20 67 70 74 65 6c 2e 20 20 55 74 69 6c ;;.Curl.support.for.gptel...Util
24fc0 69 74 79 20 66 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 ity.functions...;;;.Code:..(requ
24fe0 69 72 65 20 27 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 ire.'gptel)..(eval-when-compile.
25000 20 20 28 72 65 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 ..(require.'cl-lib)...(require.'
25020 73 75 62 72 2d 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 subr-x)).(require.'map)..(declar
25040 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 20 28 29 29 0a e-function.json-read."json".()).
25060 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 64 65 63 6c (defvar.json-object-type)..(decl
25080 61 72 65 2d 66 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 are-function.gptel--stream-conve
250a0 72 74 2d 6d 61 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 rt-markdown->org."gptel-org")..(
250c0 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 63 75 72 6c 2d 65 78 74 72 61 2d 61 72 67 73 20 defcustom.gptel-curl-extra-args.
250e0 6e 69 6c 0a 20 20 22 45 78 74 72 61 20 61 72 67 75 6d 65 6e 74 73 20 74 6f 20 70 61 73 73 20 74 nil..."Extra.arguments.to.pass.t
25100 6f 20 43 75 72 6c 20 77 68 65 6e 20 73 65 6e 64 69 6e 67 20 71 75 65 72 69 65 73 2e 0a 0a 54 68 o.Curl.when.sending.queries...Th
25120 69 73 20 73 68 6f 75 6c 64 20 62 65 20 61 20 6c 69 73 74 20 6f 66 20 73 74 72 69 6e 67 73 2c 20 is.should.be.a.list.of.strings,.
25140 65 61 63 68 20 6f 6e 65 20 61 20 43 75 72 6c 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 0a 61 72 67 each.one.a.Curl.command.line.arg
25160 75 6d 65 6e 74 2e 20 20 4e 6f 74 65 20 74 68 61 74 20 74 68 65 73 65 20 73 68 6f 75 6c 64 20 6e ument...Note.that.these.should.n
25180 6f 74 20 63 6f 6e 66 6c 69 63 74 20 77 69 74 68 20 74 68 65 20 6f 70 74 69 6f 6e 73 0a 69 6e 20 ot.conflict.with.the.options.in.
251a0 60 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 63 6f 6d 6d 6f 6e 2d 61 72 67 73 27 2c 20 77 68 69 63 68 `gptel-curl--common-args',.which
251c0 20 67 70 74 65 6c 20 72 65 71 75 69 72 65 73 20 66 6f 72 20 63 6f 72 72 65 63 74 0a 66 75 6e 63 .gptel.requires.for.correct.func
251e0 74 69 6f 6e 69 6e 67 2e 0a 0a 49 66 20 79 6f 75 20 77 61 6e 74 20 74 6f 20 73 70 65 63 69 66 79 tioning...If.you.want.to.specify
25200 20 65 78 74 72 61 20 61 72 67 75 6d 65 6e 74 73 20 6f 6e 6c 79 20 77 68 65 6e 20 75 73 69 6e 67 .extra.arguments.only.when.using
25220 20 61 20 73 70 65 63 69 66 69 63 0a 67 70 74 65 6c 20 62 61 63 6b 65 6e 64 2c 20 75 73 65 20 74 .a.specific.gptel.backend,.use.t
25240 68 65 20 60 3a 63 75 72 6c 2d 61 72 67 73 27 20 73 6c 6f 74 20 6f 66 20 74 68 65 20 62 61 63 6b he.`:curl-args'.slot.of.the.back
25260 65 6e 64 20 69 6e 73 74 65 61 64 2e 0a 53 65 65 20 60 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 27 end.instead..See.`gptel-backend'
25280 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 28 72 65 70 ."...:group.'gptel...:type.'(rep
252a0 65 61 74 20 73 74 72 69 6e 67 29 29 0a 0a 28 64 65 66 63 6f 6e 73 74 20 67 70 74 65 6c 2d 63 75 eat.string))..(defconst.gptel-cu
252c0 72 6c 2d 2d 63 6f 6d 6d 6f 6e 2d 61 72 67 73 0a 20 20 28 69 66 20 28 6d 65 6d 71 20 73 79 73 74 rl--common-args...(if.(memq.syst
252e0 65 6d 2d 74 79 70 65 20 27 28 77 69 6e 64 6f 77 73 2d 6e 74 20 6d 73 2d 64 6f 73 29 29 0a 20 20 em-type.'(windows-nt.ms-dos))...
25300 20 20 20 20 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 ....'("--disable"."--location"."
25320 2d 2d 73 69 6c 65 6e 74 22 20 22 2d 58 50 4f 53 54 22 0a 20 20 20 20 20 20 20 20 22 2d 79 37 32 --silent"."-XPOST"........."-y72
25340 30 30 22 20 22 2d 59 31 22 20 22 2d 44 2d 22 29 0a 20 20 20 20 27 28 22 2d 2d 64 69 73 61 62 6c 00"."-Y1"."-D-").....'("--disabl
25360 65 22 20 22 2d 2d 6c 6f 63 61 74 69 6f 6e 22 20 22 2d 2d 73 69 6c 65 6e 74 22 20 22 2d 2d 63 6f e"."--location"."--silent"."--co
25380 6d 70 72 65 73 73 65 64 22 0a 20 20 20 20 20 20 22 2d 58 50 4f 53 54 22 20 22 2d 79 37 32 30 30 mpressed"......."-XPOST"."-y7200
253a0 22 20 22 2d 59 31 22 20 22 2d 44 2d 22 29 29 0a 20 20 22 41 72 67 75 6d 65 6e 74 73 20 61 6c 77 "."-Y1"."-D-"))..."Arguments.alw
253c0 61 79 73 20 70 61 73 73 65 64 20 74 6f 20 43 75 72 6c 20 66 6f 72 20 67 70 74 65 6c 20 71 75 65 ays.passed.to.Curl.for.gptel.que
253e0 72 69 65 73 2e 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 ries.")..(defun.gptel-curl--get-
25400 61 72 67 73 20 28 69 6e 66 6f 20 74 6f 6b 65 6e 29 0a 20 20 22 50 72 6f 64 75 63 65 20 6c 69 73 args.(info.token)..."Produce.lis
25420 74 20 6f 66 20 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 t.of.arguments.for.calling.Curl.
25440 0a 0a 52 45 51 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 ..REQUEST-DATA.is.the.data.to.se
25460 6e 64 2c 20 54 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 nd,.TOKEN.is.a.unique.identifier
25480 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 64 61 74 61 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 ."...(let*.((data.(plist-get.inf
254a0 6f 20 3a 64 61 74 61 29 29 0a 20 20 20 20 20 20 20 20 20 3b 3b 20 57 65 20 68 61 76 65 20 74 6f o.:data))..........;;.We.have.to
254c0 20 6c 65 74 2d 62 69 6e 64 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 77 6f 20 76 61 72 69 .let-bind.the.following.two.vari
254e0 61 62 6c 65 73 20 73 69 6e 63 65 20 74 68 65 69 72 20 64 79 6e 61 6d 69 63 0a 20 20 20 20 20 20 ables.since.their.dynamic.......
25500 20 20 20 3b 3b 20 76 61 6c 75 65 73 20 61 72 65 20 75 73 65 64 20 66 6f 72 20 6b 65 79 20 6c 6f ...;;.values.are.used.for.key.lo
25520 6f 6b 75 70 20 61 6e 64 20 75 72 6c 20 72 65 73 6f 6c 6f 75 74 69 6f 6e 0a 20 20 20 20 20 20 20 okup.and.url.resoloution........
25540 20 20 28 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 6f ..(gptel-backend.(plist-get.info
25560 20 3a 62 61 63 6b 65 6e 64 29 29 0a 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 73 74 72 65 .:backend))..........(gptel-stre
25580 61 6d 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 73 74 72 65 61 6d 29 29 0a 20 20 20 am.(plist-get.info.:stream))....
255a0 20 20 20 20 20 20 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 67 ......(url.(let.((backend-url.(g
255c0 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 29 ptel-backend-url.gptel-backend))
255e0 29 0a 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
25600 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)...................
25620 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 67 65 ..(with-current-buffer.(plist-ge
25640 74 20 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 20 20 t.info.:buffer).................
25660 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 29 0a 20 20 20 ......(funcall.backend-url))....
25680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 61 63 6b 65 6e 64 2d 75 72 6c 29 29 29 0a 20 20 ...............backend-url)))...
256a0 20 20 20 20 20 20 20 28 64 61 74 61 2d 6a 73 6f 6e 20 28 64 65 63 6f 64 65 2d 63 6f 64 69 6e 67 .......(data-json.(decode-coding
256c0 2d 73 74 72 69 6e 67 20 28 67 70 74 65 6c 2d 2d 6a 73 6f 6e 2d 65 6e 63 6f 64 65 20 64 61 74 61 -string.(gptel--json-encode.data
256e0 29 20 27 75 74 66 2d 38 20 74 29 29 0a 20 20 20 20 20 20 20 20 20 28 68 65 61 64 65 72 73 0a 20 ).'utf-8.t))..........(headers..
25700 20 20 20 20 20 20 20 20 20 28 61 70 70 65 6e 64 20 27 28 28 22 43 6f 6e 74 65 6e 74 2d 54 79 70 .........(append.'(("Content-Typ
25720 65 22 20 2e 20 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 6a 73 6f 6e 22 29 29 0a 20 20 20 20 20 20 e"..."application/json")).......
25740 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 68 65 61 64 65 72 20 ............(when-let*.((header.
25760 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 68 65 61 64 65 72 20 67 70 74 65 6c 2d 62 61 63 6b (gptel-backend-header.gptel-back
25780 65 6e 64 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 end))).....................(if.(
257a0 66 75 6e 63 74 69 6f 6e 70 20 68 65 61 64 65 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 functionp.header)...............
257c0 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 68 65 61 64 65 72 29 20 68 65 61 64 65 ..........(funcall.header).heade
257e0 72 29 29 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 6c 6f 67 2d 6c 65 76 65 6c r))))).....(when.gptel-log-level
25800 0a 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 76 65 6c .......(when.(eq.gptel-log-level
25820 20 27 64 65 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 .'debug).........(gptel--log.(gp
25840 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 20 20 20 20 20 tel--json-encode................
25860 20 20 20 20 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 ......(mapcar.(lambda.(pair).(co
25880 6e 73 20 28 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 ns.(intern.(car.pair)).(cdr.pair
258a0 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 20 ))).............................
258c0 20 68 65 61 64 65 72 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 .headers))....................."
258e0 72 65 71 75 65 73 74 20 68 65 61 64 65 72 73 22 29 29 0a 20 20 20 20 20 20 28 67 70 74 65 6c 2d request.headers")).......(gptel-
25900 2d 6c 6f 67 20 64 61 74 61 2d 6a 73 6f 6e 20 22 72 65 71 75 65 73 74 20 62 6f 64 79 22 29 29 0a -log.data-json."request.body")).
25920 20 20 20 20 28 61 70 70 65 6e 64 0a 20 20 20 20 20 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 63 6f 6d ....(append......gptel-curl--com
25940 6d 6f 6e 2d 61 72 67 73 0a 20 20 20 20 20 67 70 74 65 6c 2d 63 75 72 6c 2d 65 78 74 72 61 2d 61 mon-args......gptel-curl-extra-a
25960 72 67 73 0a 20 20 20 20 20 28 61 6e 64 2d 6c 65 74 2a 20 28 28 63 75 72 6c 2d 61 72 67 73 20 28 rgs......(and-let*.((curl-args.(
25980 67 70 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 gptel-backend-curl-args.gptel-ba
259a0 63 6b 65 6e 64 29 29 29 0a 20 20 20 20 20 20 20 28 69 66 20 28 66 75 6e 63 74 69 6f 6e 70 20 63 ckend)))........(if.(functionp.c
259c0 75 72 6c 2d 61 72 67 73 29 20 28 66 75 6e 63 61 6c 6c 20 63 75 72 6c 2d 61 72 67 73 29 20 63 75 url-args).(funcall.curl-args).cu
259e0 72 6c 2d 61 72 67 73 29 29 0a 20 20 20 20 20 28 6c 69 73 74 20 28 66 6f 72 6d 61 74 20 22 2d 77 rl-args))......(list.(format."-w
25a00 28 25 73 20 2e 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 (%s...%%{size_header})".token)).
25a20 20 20 20 20 20 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 .....(if.(length<.data-json.gpte
25a40 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 29 0a 20 20 20 20 l-curl-file-size-threshold).....
25a60 20 20 20 20 20 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 .....(list.(format."-d%s".data-j
25a80 73 6f 6e 29 29 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 son))........(letrec............
25aa0 28 28 74 65 6d 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 ((temp-filename.(make-temp-file.
25ac0 22 67 70 74 65 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 "gptel-curl-data".nil.".json".da
25ae0 74 61 2d 6a 73 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 ta-json)).............(cleanup-f
25b00 6e 20 28 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 n.(lambda.(&rest._).............
25b20 20 20 20 20 20 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 ..............(when.(file-exists
25b40 2d 70 20 74 65 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 -p.temp-filename)...............
25b60 20 20 20 20 20 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 ..............(delete-file.temp-
25b80 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 20 20 20 filename).......................
25ba0 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 6f 73 74 2d 72 ......(remove-hook.'gptel-post-r
25bc0 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 29 29 29 esponse-functions.cleanup-fn))))
25be0 29 0a 20 20 20 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 )..........(add-hook.'gptel-post
25c00 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 6e 29 0a -response-functions.cleanup-fn).
25c20 20 20 20 20 20 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 .........(list."--data-binary"..
25c40 20 20 20 20 20 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 ..............(format."@%s".temp
25c60 2d 66 69 6c 65 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 -filename))))......(when.(not.(s
25c80 74 72 69 6e 67 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 tring-empty-p.gptel-proxy)).....
25ca0 20 20 20 28 6c 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 ...(list."--proxy".gptel-proxy..
25cc0 20 20 20 20 20 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 ............"--proxy-negotiate".
25ce0 20 20 20 20 20 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 ............."--proxy-user".":")
25d00 29 0a 20 20 20 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 )......(cl-loop.for.(key...val).
25d20 69 6e 20 68 65 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 in.headers...............collect
25d40 20 28 66 6f 72 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 .(format."-H%s:.%s".key.val))...
25d60 20 20 20 28 6c 69 73 74 20 75 72 6c 29 29 29 29 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 ...(list.url))))..;;;###autoload
25d80 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 6f 6e 73 65 20 .(defun.gptel-curl-get-response.
25da0 28 66 73 6d 29 0a 20 20 22 46 65 74 63 68 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 70 72 6f 6d 70 (fsm)..."Fetch.response.to.promp
25dc0 74 20 69 6e 20 73 74 61 74 65 20 46 53 4d 20 66 72 6f 6d 20 74 68 65 20 4c 4c 4d 20 75 73 69 6e t.in.state.FSM.from.the.LLM.usin
25de0 67 20 43 75 72 6c 2e 0a 0a 46 53 4d 20 69 73 20 74 68 65 20 73 74 61 74 65 20 6d 61 63 68 69 6e g.Curl...FSM.is.the.state.machin
25e00 65 20 64 72 69 76 69 6e 67 20 74 68 69 73 20 72 65 71 75 65 73 74 2e 0a 0a 46 53 4d 20 69 73 20 e.driving.this.request...FSM.is.
25e20 74 68 65 20 73 74 61 74 65 20 6d 61 63 68 69 6e 65 20 64 72 69 76 69 6e 67 20 74 68 69 73 20 72 the.state.machine.driving.this.r
25e40 65 71 75 65 73 74 2e 20 20 49 74 73 20 49 4e 46 4f 20 73 6c 6f 74 0a 63 6f 6e 74 61 69 6e 73 20 equest...Its.INFO.slot.contains.
25e60 74 68 65 20 64 61 74 61 20 72 65 71 75 69 72 65 64 20 66 6f 72 20 73 65 74 74 69 6e 67 20 75 70 the.data.required.for.setting.up
25e80 20 74 68 65 20 72 65 71 75 65 73 74 2e 20 20 49 4e 46 4f 20 69 73 20 61 0a 70 6c 69 73 74 20 77 .the.request...INFO.is.a.plist.w
25ea0 69 74 68 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 6b 65 79 73 2c 20 61 6d 6f 6e 67 20 6f 74 ith.the.following.keys,.among.ot
25ec0 68 65 72 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 hers:.-.:data.....(the.data.bein
25ee0 67 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 g.sent).-.:buffer...(the.gptel.b
25f00 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 61 74 20 77 68 uffer).-.:position.(marker.at.wh
25f20 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 2e 0a 2d 20 3a ich.to.insert.the.response)..-.:
25f40 63 61 6c 6c 62 61 63 6b 20 28 6f 70 74 69 6f 6e 61 6c 2c 20 74 68 65 20 72 65 71 75 65 73 74 20 callback.(optional,.the.request.
25f60 63 61 6c 6c 62 61 63 6b 29 0a 0a 43 61 6c 6c 20 43 41 4c 4c 42 41 43 4b 20 77 69 74 68 20 74 68 callback)..Call.CALLBACK.with.th
25f80 65 20 72 65 73 70 6f 6e 73 65 20 61 6e 64 20 49 4e 46 4f 20 61 66 74 65 72 77 61 72 64 73 2e 20 e.response.and.INFO.afterwards..
25fa0 20 49 66 20 6f 6d 69 74 74 65 64 0a 74 68 65 20 72 65 73 70 6f 6e 73 65 20 69 73 20 69 6e 73 65 .If.omitted.the.response.is.inse
25fc0 72 74 65 64 20 69 6e 74 6f 20 74 68 65 20 63 75 72 72 65 6e 74 20 62 75 66 66 65 72 20 61 66 74 rted.into.the.current.buffer.aft
25fe0 65 72 20 70 6f 69 6e 74 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 74 6f 6b 65 6e 20 28 6d 64 35 20 er.point."...(let*.((token.(md5.
26000 28 66 6f 72 6d 61 74 20 22 25 73 25 73 25 73 25 73 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 (format."%s%s%s%s"..............
26020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 61 6e 64 6f 6d 29 20 28 65 6d 61 63 73 2d ................(random).(emacs-
26040 70 69 64 29 20 28 75 73 65 72 2d 66 75 6c 6c 2d 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 20 20 pid).(user-full-name)...........
26060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 63 65 6e 74 2d 6b 65 79 73 29 ...................(recent-keys)
26080 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 69 6e 66 6f 20 28 67 70 74 65 6c 2d 66 73 6d 2d 69 6e )))..........(info.(gptel-fsm-in
260a0 66 6f 20 66 73 6d 29 29 0a 20 20 20 20 20 20 20 20 20 28 62 61 63 6b 65 6e 64 20 28 70 6c 69 73 fo.fsm))..........(backend.(plis
260c0 74 2d 67 65 74 20 69 6e 66 6f 20 3a 62 61 63 6b 65 6e 64 29 29 0a 20 20 20 20 20 20 20 20 20 28 t-get.info.:backend))..........(
260e0 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 20 69 6e 66 6f 20 args.(gptel-curl--get-args.info.
26100 74 6f 6b 65 6e 29 29 0a 20 20 20 20 20 20 20 20 20 28 73 74 72 65 61 6d 20 28 70 6c 69 73 74 2d token))..........(stream.(plist-
26120 67 65 74 20 69 6e 66 6f 20 3a 73 74 72 65 61 6d 29 29 0a 20 20 20 20 20 20 20 20 20 28 70 72 6f get.info.:stream))..........(pro
26140 63 65 73 73 20 28 61 70 70 6c 79 20 23 27 73 74 61 72 74 2d 70 72 6f 63 65 73 73 20 22 67 70 74 cess.(apply.#'start-process."gpt
26160 65 6c 2d 63 75 72 6c 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 el-curl"........................
26180 20 20 28 67 70 74 65 6c 2d 2d 74 65 6d 70 2d 62 75 66 66 65 72 20 22 20 2a 67 70 74 65 6c 2d 63 ..(gptel--temp-buffer.".*gptel-c
261a0 75 72 6c 2a 22 29 20 28 67 70 74 65 6c 2d 2d 63 75 72 6c 2d 70 61 74 68 29 20 61 72 67 73 29 29 url*").(gptel--curl-path).args))
261c0 29 0a 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 76 65 6c 20 ).....(when.(eq.gptel-log-level.
261e0 27 64 65 62 75 67 29 0a 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 6c 6f 67 20 28 6d 61 70 63 6f 'debug).......(gptel--log.(mapco
26200 6e 63 61 74 20 23 27 73 68 65 6c 6c 2d 71 75 6f 74 65 2d 61 72 67 75 6d 65 6e 74 20 28 63 6f 6e ncat.#'shell-quote-argument.(con
26220 73 20 28 67 70 74 65 6c 2d 2d 63 75 72 6c 2d 70 61 74 68 29 20 61 72 67 73 29 20 22 20 5c 5c 5c s.(gptel--curl-path).args).".\\\
26240 6e 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 n")..................."request.C
26260 75 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 url.command".'no-json)).....(wit
26280 68 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 h-current-buffer.(process-buffer
262a0 20 70 72 6f 63 65 73 73 29 0a 20 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 28 28 65 .process).......(cond........((e
262c0 71 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 63 6f 64 69 6e 67 2d 73 79 73 74 65 6d 20 62 q.(gptel-backend-coding-system.b
262e0 61 63 6b 65 6e 64 29 20 27 62 69 6e 61 72 79 29 0a 20 20 20 20 20 20 20 20 3b 3b 20 73 65 74 2d ackend).'binary).........;;.set-
26300 62 75 66 66 65 72 2d 66 69 6c 65 2d 63 6f 64 69 6e 67 2d 73 79 73 74 65 6d 20 69 73 20 6e 6f 74 buffer-file-coding-system.is.not
26320 20 6e 65 65 64 65 64 20 73 69 6e 63 65 20 77 65 20 64 6f 6e 27 74 20 73 61 76 65 20 74 68 69 73 .needed.since.we.don't.save.this
26340 20 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 28 73 65 74 2d 62 75 66 66 65 72 2d 6d 75 6c 74 .buffer.........(set-buffer-mult
26360 69 62 79 74 65 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 28 73 65 74 2d 70 72 6f 63 65 73 73 2d ibyte.nil).........(set-process-
26380 63 6f 64 69 6e 67 2d 73 79 73 74 65 6d 20 70 72 6f 63 65 73 73 20 27 62 69 6e 61 72 79 20 27 62 coding-system.process.'binary.'b
263a0 69 6e 61 72 79 29 29 0a 20 20 20 20 20 20 20 28 74 0a 09 3b 3b 20 44 6f 6e 27 74 20 74 72 79 20 inary))........(t..;;.Don't.try.
263c0 74 6f 20 63 6f 6e 76 65 72 74 20 63 72 2d 6c 66 20 74 6f 20 63 72 20 6f 6e 20 57 69 6e 64 6f 77 to.convert.cr-lf.to.cr.on.Window
263e0 73 20 73 6f 20 74 68 61 74 20 63 75 72 6c 27 73 20 22 68 65 61 64 65 72 20 73 69 7a 65 0a 09 3b s.so.that.curl's."header.size..;
26400 3b 20 69 6e 20 62 79 74 65 73 22 20 73 74 61 79 73 20 63 6f 72 72 65 63 74 2e 20 45 78 70 6c 69 ;.in.bytes".stays.correct..Expli
26420 63 69 74 6c 79 20 73 65 74 20 75 74 66 2d 38 20 66 6f 72 20 6e 6f 6e 2d 77 69 6e 20 73 79 73 74 citly.set.utf-8.for.non-win.syst
26440 65 6d 73 20 74 6f 6f 2c 0a 09 3b 3b 20 66 6f 72 20 63 61 73 65 73 20 77 68 65 6e 20 62 75 66 66 ems.too,..;;.for.cases.when.buff
26460 65 72 20 63 6f 64 69 6e 67 20 73 79 73 74 65 6d 20 69 73 20 6e 6f 74 20 73 65 74 20 74 6f 20 75 er.coding.system.is.not.set.to.u
26480 74 66 2d 38 2e 0a 09 28 73 65 74 2d 70 72 6f 63 65 73 73 2d 63 6f 64 69 6e 67 2d 73 79 73 74 65 tf-8...(set-process-coding-syste
264a0 6d 20 70 72 6f 63 65 73 73 20 27 75 74 66 2d 38 2d 75 6e 69 78 20 27 75 74 66 2d 38 2d 75 6e 69 m.process.'utf-8-unix.'utf-8-uni
264c0 78 29 29 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 79 2d 6f 6e x))).......(set-process-query-on
264e0 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 20 20 28 69 -exit-flag.process.nil).......(i
26500 66 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 74 6f 6b 65 6e 29 20 20 20 20 20 20 20 f.(plist-get.info.:token).......
26520 3b 6e 6f 74 20 74 68 65 20 66 69 72 73 74 20 72 75 6e 2c 20 73 65 74 20 6f 6e 6c 79 20 74 68 65 ;not.the.first.run,.set.only.the
26540 20 74 6f 6b 65 6e 0a 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 .token...........(plist-put.info
26560 20 3a 74 6f 6b 65 6e 20 74 6f 6b 65 6e 29 0a 20 20 20 20 20 20 20 20 28 73 65 74 66 20 28 67 70 .:token.token).........(setf.(gp
26580 74 65 6c 2d 66 73 6d 2d 69 6e 66 6f 20 66 73 6d 29 20 20 20 20 20 20 3b 66 69 73 74 20 72 75 6e tel-fsm-info.fsm)......;fist.run
265a0 2c 20 73 65 74 20 61 6c 6c 20 70 72 6f 63 65 73 73 20 70 61 72 61 6d 65 74 65 72 73 0a 20 20 20 ,.set.all.process.parameters....
265c0 20 20 20 20 20 20 20 20 20 20 20 28 6e 63 6f 6e 63 20 28 6c 69 73 74 20 3a 74 6f 6b 65 6e 20 74 ...........(nconc.(list.:token.t
265e0 6f 6b 65 6e 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 oken............................
26600 3a 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 20 20 20 20 20 :transformer....................
26620 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 ........(when.(with-current-buff
26640 65 72 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 62 75 66 66 65 72 29 0a 20 20 20 20 er.(plist-get.info.:buffer).....
26660 20 20 20 20 20 20 20 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 ...............................(
26680 61 6e 64 20 28 64 65 72 69 76 65 64 2d 6d 6f 64 65 2d 70 20 27 6f 72 67 2d 6d 6f 64 65 29 0a 20 and.(derived-mode-p.'org-mode)..
266a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
266c0 20 20 20 20 20 20 20 67 70 74 65 6c 2d 6f 72 67 2d 63 6f 6e 76 65 72 74 2d 72 65 73 70 6f 6e 73 .......gptel-org-convert-respons
266e0 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 20 20 20 20 20 20 e)).............................
26700 20 28 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 6e .(gptel--stream-convert-markdown
26720 2d 3e 6f 72 67 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 ->org...........................
26740 20 20 20 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 ....(plist-get.info.:position)))
26760 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 )......................(unless.(
26780 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 63 61 6c 6c 62 61 63 6b 29 0a 20 20 20 20 20 20 plist-get.info.:callback).......
267a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 3a 63 61 6c 6c 62 61 63 6b .................(list.:callback
267c0 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 20 20 20 .(if.stream.....................
267e0 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 6c 2d 63 .......................#'gptel-c
26800 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 20 20 20 url--stream-insert-response.....
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 20 20 20 20 20 20 20 20 ................................
26840 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 29 29 29 .....#'gptel--insert-response)))
26860 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 66 6f 29 29 29 0a 20 20 ......................info)))...
26880 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 28 70 72 6f 67 6e 20 ....(if.stream...........(progn.
268a0 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 73 73 20 23 27 (set-process-sentinel.process.#'
268c0 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 70 29 0a 20 20 20 20 gptel-curl--stream-cleanup).....
268e0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 2d 70 72 6f 63 65 73 73 2d 66 69 6c 74 65 72 .............(set-process-filter
26900 20 70 72 6f 63 65 73 73 20 23 27 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 73 74 72 65 61 6d 2d 66 69 .process.#'gptel-curl--stream-fi
26920 6c 74 65 72 29 29 0a 20 20 20 20 20 20 20 20 28 73 65 74 2d 70 72 6f 63 65 73 73 2d 73 65 6e 74 lter)).........(set-process-sent
26940 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 2d 2d 73 65 6e 74 69 inel.process.#'gptel-curl--senti
26960 6e 65 6c 29 29 0a 20 20 20 20 20 20 28 73 65 74 66 20 28 61 6c 69 73 74 2d 67 65 74 20 70 72 6f nel)).......(setf.(alist-get.pro
26980 63 65 73 73 20 67 70 74 65 6c 2d 2d 72 65 71 75 65 73 74 2d 61 6c 69 73 74 29 0a 20 20 20 20 20 cess.gptel--request-alist)......
269a0 20 20 20 20 20 20 20 28 63 6f 6e 73 20 66 73 6d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .......(cons.fsm................
269c0 20 20 20 23 27 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 ...#'(lambda.().................
269e0 20 20 20 20 20 20 3b 3b 20 43 6c 65 61 6e 20 75 70 20 43 75 72 6c 20 70 72 6f 63 65 73 73 0a 20 ......;;.Clean.up.Curl.process..
26a00 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 2d 70 72 6f 63 65 73 .....................(set-proces
26a20 73 2d 73 65 6e 74 69 6e 65 6c 20 70 72 6f 63 65 73 73 20 23 27 69 67 6e 6f 72 65 29 0a 20 20 20 s-sentinel.process.#'ignore)....
26a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 65 6c 65 74 65 2d 70 72 6f 63 65 ...................(delete-proce
26a60 73 73 20 70 72 6f 63 65 73 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ss.process).....................
26a80 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 65 72 20 70 ..(kill-buffer.(process-buffer.p
26aa0 72 6f 63 65 73 73 29 29 29 29 29 29 29 29 0a 0a 3b 3b 20 3b 3b 20 41 68 65 61 64 2d 4f 66 2d 54 rocess))))))))..;;.;;.Ahead-Of-T
26ac0 69 6d 65 20 64 69 73 70 61 74 63 68 20 63 6f 64 65 20 66 6f 72 20 74 68 65 20 70 61 72 73 65 72 ime.dispatch.code.for.the.parser
26ae0 73 0a 3b 3b 20 3a 70 61 72 73 65 72 20 3b 20 46 49 58 4d 45 20 60 63 6c 2d 2d 67 65 6e 65 72 69 s.;;.:parser.;.FIXME.`cl--generi
26b00 63 2d 2a 27 20 61 72 65 20 69 6e 74 65 72 6e 61 6c 20 66 75 6e 63 74 69 6f 6e 73 0a 3b 3b 20 28 c-*'.are.internal.functions.;;.(
26b20 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 3b 3b 20 20 cl--generic-method-function.;;..
26b40 28 69 66 20 73 74 72 65 61 6d 0a 3b 3b 20 20 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 0a 3b 3b 20 20 (if.stream.;;......(cl-loop.;;..
26b60 20 20 20 20 20 66 6f 72 20 74 79 70 65 20 69 6e 0a 3b 3b 20 20 20 20 20 20 20 28 63 6c 2d 2d 63 .....for.type.in.;;.......(cl--c
26b80 6c 61 73 73 2d 61 6c 6c 70 61 72 65 6e 74 73 20 28 67 65 74 20 28 74 79 70 65 2d 6f 66 20 62 61 lass-allparents.(get.(type-of.ba
26ba0 63 6b 65 6e 64 29 20 27 63 6c 2d 2d 63 6c 61 73 73 29 29 0a 3b 3b 20 20 20 20 20 20 20 77 69 74 ckend).'cl--class)).;;.......wit
26bc0 68 20 6d 65 74 68 6f 64 73 20 3d 20 28 63 6c 2d 2d 67 65 6e 65 72 69 63 2d 6d 65 74 68 6f 64 2d h.methods.=.(cl--generic-method-
26be0 74 61 62 6c 65 0a 3b 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 table.;;.......................(
26c00 63 6c 2d 2d 67 65 6e 65 72 69 63 20 27 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 70 61 72 73 65 2d 73 cl--generic.'gptel-curl--parse-s
26c20 74 72 65 61 6d 29 29 0a 3b 3b 20 20 20 20 20 20 20 77 68 65 6e 20 28 63 6c 2d 2d 67 65 6e 65 72 tream)).;;.......when.(cl--gener
26c40 69 63 2d 6d 65 6d 62 65 72 2d 6d 65 74 68 6f 64 20 60 28 2c 74 79 70 65 20 74 29 20 6e 69 6c 20 ic-member-method.`(,type.t).nil.
26c60 6d 65 74 68 6f 64 73 29 0a 3b 3b 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 63 61 72 20 69 74 methods).;;.......return.(car.it
26c80 29 29 0a 3b 3b 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 0a 3b 3b 20 20 20 20 20 66 6f 72 20 74 79 70 )).;;....(cl-loop.;;.....for.typ
26ca0 65 20 69 6e 0a 3b 3b 20 20 20 20 20 28 63 6c 2d 2d 63 6c 61 73 73 2d 61 6c 6c 70 61 72 65 6e 74 e.in.;;.....(cl--class-allparent
26cc0 73 20 28 67 65 74 20 28 74 79 70 65 2d 6f 66 20 62 61 63 6b 65 6e 64 29 20 27 63 6c 2d 2d 63 6c s.(get.(type-of.backend).'cl--cl
26ce0 61 73 73 29 29 0a 3b 3b 20 20 20 20 20 77 69 74 68 20 6d 65 74 68 6f 64 73 20 3d 20 28 63 6c 2d ass)).;;.....with.methods.=.(cl-
26d00 2d 67 65 6e 65 72 69 63 2d 6d 65 74 68 6f 64 2d 74 61 62 6c 65 0a 3b 3b 20 20 20 20 20 20 20 20 -generic-method-table.;;........
26d20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 2d 67 65 6e 65 72 69 63 20 27 67 70 74 65 6c .............(cl--generic.'gptel
26d40 2d 2d 70 61 72 73 65 2d 72 65 73 70 6f 6e 73 65 29 29 0a 3b 3b 20 20 20 20 20 77 68 65 6e 20 28 --parse-response)).;;.....when.(
26d60 63 6c 2d 2d 67 65 6e 65 72 69 63 2d 6d 65 6d 62 65 72 2d 6d 65 74 68 6f 64 20 60 28 2c 74 79 70 cl--generic-member-method.`(,typ
26d80 65 20 74 20 74 29 20 6e 69 6c 20 6d 65 74 68 6f 64 73 29 0a 3b 3b 20 20 20 20 20 72 65 74 75 72 e.t.t).nil.methods).;;.....retur
26da0 6e 20 28 63 61 72 20 69 74 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 63 75 72 6c n.(car.it))))..(defun.gptel-curl
26dc0 2d 2d 6c 6f 67 2d 72 65 73 70 6f 6e 73 65 20 28 70 72 6f 63 2d 62 75 66 20 70 72 6f 63 2d 69 6e --log-response.(proc-buf.proc-in
26de0 66 6f 29 0a 20 20 22 50 61 72 73 65 20 72 65 73 70 6f 6e 73 65 20 62 75 66 66 65 72 20 50 52 4f fo)..."Parse.response.buffer.PRO
26e00 43 2d 42 55 46 20 61 6e 64 20 6c 6f 67 20 72 65 73 70 6f 6e 73 65 2e 0a 0a 50 52 4f 43 2d 49 4e C-BUF.and.log.response...PROC-IN
26e20 46 4f 20 69 73 20 74 68 65 20 70 6c 69 73 74 20 63 6f 6e 74 61 69 6e 69 6e 67 20 70 72 6f 63 65 FO.is.the.plist.containing.proce
26e40 73 73 20 6d 65 74 61 64 61 74 61 2e 22 0a 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 ss.metadata."...(with-current-bu
26e60 66 66 65 72 20 70 72 6f 63 2d 62 75 66 0a 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f ffer.proc-buf.....(save-excursio
26e80 6e 0a 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 0a n.......(goto-char.(point-min)).
26ea0 20 20 20 20 20 20 28 77 68 65 6e 20 28 72 65 2d 73 65 61 72 63 68 2d 66 6f 72 77 61 72 64 20 22 ......(when.(re-search-forward."
26ec0 0d 3f 5c 6e 0d 3f 5c 6e 22 20 6e 69 6c 20 74 29 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 .?\n.?\n".nil.t).........(when.(
26ee0 65 71 20 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 eq.gptel-log-level.'debug)......
26f00 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 6c 6f 67 20 28 67 70 74 65 6c 2d 2d 6a 73 6f 6e 2d 65 6e .....(gptel--log.(gptel--json-en
26f20 63 6f 64 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 code........................(buf
26f40 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 20 fer-substring-no-properties.....
26f60 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 2d 6d 69 6e 29 20 ....................(point-min).
26f80 28 31 2d 20 28 70 6f 69 6e 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (1-.(point))))..................
26fa0 20 20 20 20 20 22 72 65 73 70 6f 6e 73 65 20 68 65 61 64 65 72 73 22 29 29 0a 20 20 20 20 20 20 ....."response.headers")).......
26fc0 20 20 28 6c 65 74 20 28 28 70 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 ..(let.((p.(point)))...........(
26fe0 77 68 65 6e 20 28 73 65 61 72 63 68 2d 66 6f 72 77 61 72 64 20 28 70 6c 69 73 74 2d 67 65 74 20 when.(search-forward.(plist-get.
27000 70 72 6f 63 2d 69 6e 66 6f 20 3a 74 6f 6b 65 6e 29 20 6e 69 6c 20 74 29 0a 20 20 20 20 20 20 20 proc-info.:token).nil.t)........
27020 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 31 2d 20 28 6d 61 74 63 68 2d 62 65 67 69 6e .....(goto-char.(1-.(match-begin
27040 6e 69 6e 67 20 30 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 6c 6f ning.0))).............(gptel--lo
27060 67 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 g.(buffer-substring-no-propertie
27080 73 20 70 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 20 20 20 s.p.(point))....................
270a0 20 20 20 20 20 22 72 65 73 70 6f 6e 73 65 20 62 6f 64 79 22 29 29 29 29 29 29 29 0a 0a 3b 3b 20 ....."response.body")))))))..;;.
270c0 54 4f 44 4f 3a 20 53 65 70 61 72 61 74 65 20 75 73 65 72 2d 6d 65 73 73 61 67 69 6e 67 20 66 72 TODO:.Separate.user-messaging.fr
270e0 6f 6d 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 63 75 om.this.function.(defun.gptel-cu
27100 72 6c 2d 2d 73 74 72 65 61 6d 2d 63 6c 65 61 6e 75 70 20 28 70 72 6f 63 65 73 73 20 5f 73 74 61 rl--stream-cleanup.(process._sta
27120 74 75 73 29 0a 20 20 22 50 72 6f 63 65 73 73 20 73 65 6e 74 69 6e 65 6c 20 66 6f 72 20 67 70 74 tus)..."Process.sentinel.for.gpt
27140 65 6c 20 63 75 72 6c 20 72 65 71 75 65 73 74 73 2e 0a 0a 50 52 4f 43 45 53 53 20 61 6e 64 20 5f el.curl.requests...PROCESS.and._
27160 53 54 41 54 55 53 20 61 72 65 20 70 72 6f 63 65 73 73 20 70 61 72 61 6d 65 74 65 72 73 2e 22 0a STATUS.are.process.parameters.".
27180 20 20 28 6c 65 74 20 28 28 70 72 6f 63 2d 62 75 66 20 28 70 72 6f 63 65 73 73 2d 62 75 66 66 65 ..(let.((proc-buf.(process-buffe
271a0 72 20 70 72 6f 63 65 73 73 29 29 29 0a 20 20 20 20 28 6c 65 74 2a 20 28 28 66 73 6d 20 28 63 61 r.process))).....(let*.((fsm.(ca
271c0 72 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 2d 72 65 71 75 r.(alist-get.process.gptel--requ
271e0 65 73 74 2d 61 6c 69 73 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 66 6f 20 28 67 est-alist)))............(info.(g
27200 70 74 65 6c 2d 66 73 6d 2d 69 6e 66 6f 20 66 73 6d 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 ptel-fsm-info.fsm))............(
27220 68 74 74 70 2d 73 74 61 74 75 73 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 68 74 74 http-status.(plist-get.info.:htt
27240 70 2d 73 74 61 74 75 73 29 29 29 0a 20 20 20 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 6c 6f p-status))).......(when.gptel-lo
27260 67 2d 6c 65 76 65 6c 20 28 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 6c 6f 67 2d 72 65 73 70 6f 6e 73 g-level.(gptel-curl--log-respons
27280 65 20 70 72 6f 63 2d 62 75 66 20 69 6e 66 6f 29 29 20 3b 6c 6f 67 67 69 6e 67 0a 20 20 20 20 20 e.proc-buf.info)).;logging......
272a0 20 28 69 66 20 28 6d 65 6d 62 65 72 20 68 74 74 70 2d 73 74 61 74 75 73 20 27 28 22 32 30 30 22 .(if.(member.http-status.'("200"
272c0 20 22 31 30 30 22 29 29 20 3b 46 69 6e 69 73 68 20 68 61 6e 64 6c 69 6e 67 20 72 65 73 70 6f 6e ."100")).;Finish.handling.respon
272e0 73 65 0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20 52 75 6e 20 74 68 65 20 63 61 6c 6c 62 61 63 6b se...........;;.Run.the.callback
27300 20 6f 6e 65 20 6c 61 73 74 20 74 69 6d 65 20 74 6f 20 73 69 67 6e 61 6c 20 74 68 61 74 20 74 68 .one.last.time.to.signal.that.th
27320 65 20 70 72 6f 63 65 73 73 20 68 61 73 20 65 6e 64 65 64 0a 20 20 20 20 20 20 20 20 20 20 28 77 e.process.has.ended...........(w
27340 69 74 68 2d 64 65 6d 6f 74 65 64 2d 65 72 72 6f 72 73 20 22 67 70 74 65 6c 20 63 61 6c 6c 62 61 ith-demoted-errors."gptel.callba
27360 63 6b 20 65 72 72 6f 72 3a 20 25 53 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 ck.error:.%S".............(funca
27380 6c 6c 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 63 61 6c 6c 62 61 63 6b 29 20 74 20 ll.(plist-get.info.:callback).t.
273a0 69 6e 66 6f 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 75 66 info)).........(with-current-buf
273c0 66 65 72 20 70 72 6f 63 2d 62 75 66 20 20 20 3b 20 4f 72 20 43 61 70 74 75 72 65 20 65 72 72 6f fer.proc-buf...;.Or.Capture.erro
273e0 72 20 6d 65 73 73 61 67 65 0a 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 r.message...........(goto-char.(
27400 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 72 63 68 2d 62 61 point-max))...........(search-ba
27420 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 6b 65 6e 29 29 0a ckward.(plist-get.info.:token)).
27440 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 20 20 20 20 20 20 ..........(backward-char).......
27460 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 68 65 61 64 65 72 ....(pcase-let*.((`(,_...,header
27480 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 65 72 29 29 29 0a -size).(read.(current-buffer))).
274a0 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 73 70 6f 6e 73 65 .......................(response
274c0 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 73 69 7a 65 29 0a .(progn.(goto-char.header-size).
274e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
27500 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 20 28 67 70 74 ........(condition-case.nil.(gpt
27520 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 20 20 20 20 20 20 el--json-read)..................
27540 20 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 72 72 6f 72 20 .........................(error.
27560 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 20 20 20 20 20 20 'json-read-error))))............
27580 20 20 20 20 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 2d 64 61 74 61 0a 20 20 20 20 20 20 20 20 ............(error-data.........
275a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 20 28 28 70 6c 69 73 74 70 20 72 ................(cond.((plistp.r
275c0 65 73 70 6f 6e 73 65 29 20 28 70 6c 69 73 74 2d 67 65 74 20 72 65 73 70 6f 6e 73 65 20 3a 65 72 esponse).(plist-get.response.:er
275e0 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 20 20 20 20 20 20 20 ror))...........................
27600 20 20 20 20 28 28 61 72 72 61 79 70 20 72 65 73 70 6f 6e 73 65 29 0a 20 20 20 20 20 20 20 20 20 ....((arrayp.response)..........
27620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 73 6f 6d 65 20 28 ......................(cl-some.(
27640 6c 61 6d 62 64 61 20 28 65 6c 29 20 28 70 6c 69 73 74 2d 67 65 74 20 65 6c 20 3a 65 72 72 6f 72 lambda.(el).(plist-get.el.:error
27660 29 29 20 72 65 73 70 6f 6e 73 65 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f )).response))))).............(co
27680 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 2d 64 61 74 61 0a 20 20 20 20 nd..............(error-data.....
276a0 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 65 72 72 6f 72 ..........(plist-put.info.:error
276c0 20 65 72 72 6f 72 2d 64 61 74 61 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 65 71 20 .error-data))..............((eq.
276e0 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 20 20 20 20 response.'json-read-error)......
27700 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 65 72 72 6f 72 20 .........(plist-put.info.:error.
27720 22 4d 61 6c 66 6f 72 6d 65 64 20 4a 53 4f 4e 20 69 6e 20 72 65 73 70 6f 6e 73 65 2e 22 29 29 0a "Malformed.JSON.in.response.")).
27740 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 .............(t.(plist-put.info.
27760 3a 65 72 72 6f 72 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 :error."Could.not.parse.HTTP.res
27780 70 6f 6e 73 65 2e 22 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 64 65 6d 6f 74 ponse."))))).........(with-demot
277a0 65 64 2d 65 72 72 6f 72 73 20 22 67 70 74 65 6c 20 63 61 6c 6c 62 61 63 6b 20 65 72 72 6f 72 3a ed-errors."gptel.callback.error:
277c0 20 25 53 22 0a 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 28 70 6c 69 73 74 2d 67 .%S"...........(funcall.(plist-g
277e0 65 74 20 69 6e 66 6f 20 3a 63 61 6c 6c 62 61 63 6b 29 20 6e 69 6c 20 69 6e 66 6f 29 29 29 0a 20 et.info.:callback).nil.info)))..
27800 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 66 73 6d 2d 74 72 61 6e 73 69 74 69 6f 6e 20 66 73 6d 29 .....(gptel--fsm-transition.fsm)
27820 29 20 20 20 20 20 20 3b 20 4d 6f 76 65 20 74 6f 20 6e 65 78 74 20 73 74 61 74 65 0a 20 20 20 20 )......;.Move.to.next.state.....
27840 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 2d 2d (setf.(alist-get.process.gptel--
27860 72 65 71 75 65 73 74 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 request-alist.nil.'remove).nil).
27880 20 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 ....(kill-buffer.proc-buf)))..(d
278a0 65 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 efun.gptel-curl--stream-insert-r
278c0 65 73 70 6f 6e 73 65 20 28 72 65 73 70 6f 6e 73 65 20 69 6e 66 6f 20 26 6f 70 74 69 6f 6e 61 6c esponse.(response.info.&optional
278e0 20 72 61 77 29 0a 20 20 22 49 6e 73 65 72 74 20 73 74 72 65 61 6d 69 6e 67 20 52 45 53 50 4f 4e .raw)..."Insert.streaming.RESPON
27900 53 45 20 66 72 6f 6d 20 61 6e 20 4c 4c 4d 20 69 6e 74 6f 20 74 68 65 20 67 70 74 65 6c 20 62 75 SE.from.an.LLM.into.the.gptel.bu
27920 66 66 65 72 2e 0a 0a 49 4e 46 4f 20 69 73 20 61 20 6d 75 74 61 62 6c 65 20 70 6c 69 73 74 20 63 ffer...INFO.is.a.mutable.plist.c
27940 6f 6e 74 61 69 6e 69 6e 67 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 72 65 6c 65 76 61 6e 74 20 74 ontaining.information.relevant.t
27960 6f 20 74 68 69 73 20 62 75 66 66 65 72 2e 0a 53 65 65 20 60 67 70 74 65 6c 2d 2d 75 72 6c 2d 67 o.this.buffer..See.`gptel--url-g
27980 65 74 2d 72 65 73 70 6f 6e 73 65 27 20 66 6f 72 20 64 65 74 61 69 6c 73 2e 0a 0a 4f 70 74 69 6f et-response'.for.details...Optio
279a0 6e 61 6c 20 52 41 57 20 64 69 73 61 62 6c 65 73 20 74 65 78 74 20 70 72 6f 70 65 72 74 69 65 73 nal.RAW.disables.text.properties
279c0 20 61 6e 64 20 74 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 2e 22 0a 20 20 28 70 63 61 73 65 20 72 .and.transformation."...(pcase.r
279e0 65 73 70 6f 6e 73 65 0a 20 20 20 20 28 28 70 72 65 64 20 73 74 72 69 6e 67 70 29 0a 20 20 20 20 esponse.....((pred.stringp).....
27a00 20 28 6c 65 74 20 28 28 73 74 61 72 74 2d 6d 61 72 6b 65 72 20 28 70 6c 69 73 74 2d 67 65 74 20 .(let.((start-marker.(plist-get.
27a20 69 6e 66 6f 20 3a 70 6f 73 69 74 69 6f 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 74 72 61 info.:position))............(tra
27a40 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 74 72 cking-marker.(plist-get.info.:tr
27a60 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 74 72 61 6e acking-marker))............(tran
27a80 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 74 72 61 6e 73 66 6f sformer.(plist-get.info.:transfo
27aa0 72 6d 65 72 29 29 29 0a 20 20 20 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 rmer)))........(with-current-buf
27ac0 66 65 72 20 28 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 fer.(marker-buffer.start-marker)
27ae0 0a 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 20 ..........(save-excursion.......
27b00 20 20 20 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 .....(unless.tracking-marker....
27b20 20 20 20 20 20 20 20 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 ..........(goto-char.start-marke
27b40 72 29 0a 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 28 62 6f 62 r)..............(unless.(or.(bob
27b60 70 29 20 28 70 6c 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 p).(plist-get.info.:in-place))..
27b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 67 70 74 65 6c 2d 72 65 73 70 ..............(insert.gptel-resp
27ba0 6f 6e 73 65 2d 73 65 70 61 72 61 74 6f 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 onse-separator)................(
27bc0 77 68 65 6e 20 67 70 74 65 6c 2d 6d 6f 64 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 when.gptel-mode.................
27be0 20 3b 3b 20 50 75 74 20 70 72 65 66 69 78 20 62 65 66 6f 72 65 20 41 49 20 72 65 73 70 6f 6e 73 .;;.Put.prefix.before.AI.respons
27c00 65 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 28 67 70 74 e...................(insert.(gpt
27c20 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 70 72 65 66 69 78 2d 73 74 72 69 6e 67 29 29 29 0a 20 20 20 el-response-prefix-string)))....
27c40 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 76 65 2d 6d 61 72 6b 65 72 20 73 74 61 72 74 2d 6d ............(move-marker.start-m
27c60 61 72 6b 65 72 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 arker.(point)))..............(se
27c80 74 71 20 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 20 28 73 65 74 2d 6d 61 72 6b 65 72 20 28 tq.tracking-marker.(set-marker.(
27ca0 6d 61 6b 65 2d 6d 61 72 6b 65 72 29 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 make-marker).(point)))..........
27cc0 20 20 20 20 28 73 65 74 2d 6d 61 72 6b 65 72 2d 69 6e 73 65 72 74 69 6f 6e 2d 74 79 70 65 20 74 ....(set-marker-insertion-type.t
27ce0 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 racking-marker.t)..............(
27d00 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 20 plist-put.info.:tracking-marker.
27d20 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 67 6f tracking-marker))............(go
27d40 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 20 20 to-char.tracking-marker)........
27d60 20 20 20 20 28 75 6e 6c 65 73 73 20 72 61 77 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 ....(unless.raw..............(wh
27d80 65 6e 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 20 28 73 en.transformer................(s
27da0 65 74 71 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 etq.response.(funcall.transforme
27dc0 72 20 72 65 73 70 6f 6e 73 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 64 64 2d r.response)))..............(add-
27de0 74 65 78 74 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 30 20 text-properties...............0.
27e00 28 6c 65 6e 67 74 68 20 72 65 73 70 6f 6e 73 65 29 20 27 28 67 70 74 65 6c 20 72 65 73 70 6f 6e (length.response).'(gptel.respon
27e20 73 65 20 66 72 6f 6e 74 2d 73 74 69 63 6b 79 20 28 67 70 74 65 6c 29 29 0a 20 20 20 20 20 20 20 se.front-sticky.(gptel))........
27e40 20 20 20 20 20 20 20 72 65 73 70 6f 6e 73 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 .......response))............;;.
27e60 28 72 75 6e 2d 68 6f 6f 6b 73 20 27 67 70 74 65 6c 2d 70 72 65 2d 73 74 72 65 61 6d 2d 68 6f 6f (run-hooks.'gptel-pre-stream-hoo
27e80 6b 29 0a 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 k)............(insert.response).
27ea0 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 6f 73 ...........(run-hooks.'gptel-pos
27ec0 74 2d 73 74 72 65 61 6d 2d 68 6f 6f 6b 29 29 29 29 29 0a 20 20 20 20 28 60 28 72 65 61 73 6f 6e t-stream-hook))))).....(`(reason
27ee0 69 6e 67 20 2e 20 2c 74 65 78 74 29 0a 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 64 69 73 70 6c 61 ing...,text)......(gptel--displa
27f00 79 2d 72 65 61 73 6f 6e 69 6e 67 2d 73 74 72 65 61 6d 20 74 65 78 74 20 69 6e 66 6f 29 29 0a 20 y-reasoning-stream.text.info))..
27f20 20 20 20 28 60 28 74 6f 6f 6c 2d 63 61 6c 6c 20 2e 20 2c 74 6f 6f 6c 2d 63 61 6c 6c 73 29 0a 20 ...(`(tool-call...,tool-calls)..
27f40 20 20 20 20 28 67 70 74 65 6c 2d 2d 64 69 73 70 6c 61 79 2d 74 6f 6f 6c 2d 63 61 6c 6c 73 20 74 ....(gptel--display-tool-calls.t
27f60 6f 6f 6c 2d 63 61 6c 6c 73 20 69 6e 66 6f 29 29 0a 20 20 20 20 28 60 28 74 6f 6f 6c 2d 72 65 73 ool-calls.info)).....(`(tool-res
27f80 75 6c 74 20 2e 20 2c 74 6f 6f 6c 2d 72 65 73 75 6c 74 73 29 0a 20 20 20 20 20 28 67 70 74 65 6c ult...,tool-results)......(gptel
27fa0 2d 2d 64 69 73 70 6c 61 79 2d 74 6f 6f 6c 2d 72 65 73 75 6c 74 73 20 74 6f 6f 6c 2d 72 65 73 75 --display-tool-results.tool-resu
27fc0 6c 74 73 20 69 6e 66 6f 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 63 75 72 6c 2d lts.info))))..(defun.gptel-curl-
27fe0 2d 73 74 72 65 61 6d 2d 66 69 6c 74 65 72 20 28 70 72 6f 63 65 73 73 20 6f 75 74 70 75 74 29 0a -stream-filter.(process.output).
28000 20 20 28 6c 65 74 2a 20 28 28 66 73 6d 20 28 63 61 72 20 28 61 6c 69 73 74 2d 67 65 74 20 70 72 ..(let*.((fsm.(car.(alist-get.pr
28020 6f 63 65 73 73 20 67 70 74 65 6c 2d 2d 72 65 71 75 65 73 74 2d 61 6c 69 73 74 29 29 29 0a 20 20 ocess.gptel--request-alist)))...
28040 20 20 20 20 20 20 20 28 70 72 6f 63 2d 69 6e 66 6f 20 28 67 70 74 65 6c 2d 66 73 6d 2d 69 6e 66 .......(proc-info.(gptel-fsm-inf
28060 6f 20 66 73 6d 29 29 0a 20 20 20 20 20 20 20 20 20 28 63 61 6c 6c 62 61 63 6b 20 28 6f 72 20 28 o.fsm))..........(callback.(or.(
28080 70 6c 69 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 plist-get.proc-info.:callback)..
280a0 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 6c 2d 63 75 ......................#'gptel-cu
280c0 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 29 29 29 0a 20 20 rl--stream-insert-response)))...
280e0 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 72 6f 63 65 73 73 2d ..(with-current-buffer.(process-
28100 62 75 66 66 65 72 20 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 buffer.process).......;;.Insert.
28120 6f 75 74 70 75 74 0a 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 output.......(save-excursion....
28140 20 20 20 20 20 28 67 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 .....(goto-char.(process-mark.pr
28160 6f 63 65 73 73 29 29 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 ocess)).........(insert.output).
28180 20 20 20 20 20 20 20 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 ........(set-marker.(process-mar
281a0 6b 20 70 72 6f 63 65 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 k.process).(point)))............
281c0 20 20 3b 3b 20 46 69 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 ..;;.Find.HTTP.status.......(unl
281e0 65 73 73 20 28 70 6c 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 ess.(plist-get.proc-info.:http-s
28200 74 61 74 75 73 29 0a 20 20 20 20 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 tatus).........(save-excursion..
28220 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 69 6e 29 29 .........(goto-char.(point-min))
28240 0a 20 20 20 20 20 20 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 ...........(when-let*.(((not.(=.
28260 28 6c 69 6e 65 2d 65 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 (line-end-position).(point-max))
28280 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 68 74 74 70 2d 6d )).......................(http-m
282a0 73 67 20 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 sg.(buffer-substring.(line-begin
282c0 6e 69 6e 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 ning-position)..................
282e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
28300 20 28 6c 69 6e 65 2d 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 .(line-end-position)))..........
28320 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 0a 20 20 20 20 20 20 .............(http-status.......
28340 20 20 20 20 20 20 20 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 .................(save-match-dat
28360 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 20 20 28 61 6e 64 20 a..........................(and.
28380 28 73 74 72 69 6e 67 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 (string-match."HTTP/[.0-9]+.+\\(
283a0 5b 30 2d 39 5d 2b 5c 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 [0-9]+\\)".http-msg)............
283c0 20 20 20 20 20 20 20 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 ...................(match-string
283e0 20 31 20 68 74 74 70 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 .1.http-msg))))).............(pl
28400 69 73 74 2d 70 75 74 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 ist-put.proc-info.:http-status.h
28420 74 74 70 2d 73 74 61 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 ttp-status).............(plist-p
28440 75 74 20 70 72 6f 63 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 ut.proc-info.:status.(string-tri
28460 6d 20 68 74 74 70 2d 6d 73 67 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d m.http-msg)).............(gptel-
28480 2d 66 73 6d 2d 74 72 61 6e 73 69 74 69 6f 6e 20 66 73 6d 29 29 29 29 0a 20 20 20 20 20 20 0a 20 -fsm-transition.fsm)))).........
284a0 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 68 74 74 70 2d 6d 73 67 20 28 70 6c 69 73 .....(when-let*.((http-msg.(plis
284c0 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 20 20 20 20 20 t-get.proc-info.:status)).......
284e0 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 69 73 74 2d ............(http-status.(plist-
28500 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 29 0a 20 20 get.proc-info.:http-status)))...
28520 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 61 6e 64 20 ......;;.Find.data.chunk(s).and.
28540 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 45 20 48 61 run.callback.........;;.FIXME.Ha
28560 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 20 69 73 20 ndle.the.case.where.HTTP.100.is.
28580 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 55 47 20 23 followed.by.HTTP.(not.200).BUG.#
285a0 31 39 34 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 6d 65 6d 62 65 72 20 68 74 74 70 2d 73 194.........(when.(member.http-s
285c0 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 20 20 20 20 20 20 20 tatus.'("200"."100"))...........
285e0 28 6c 65 74 20 28 28 72 65 73 70 6f 6e 73 65 20 28 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 70 61 72 (let.((response.(gptel-curl--par
28600 73 65 2d 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 se-stream.......................
28620 20 20 20 20 20 28 70 6c 69 73 74 2d 67 65 74 20 70 72 6f 63 2d 69 6e 66 6f 20 3a 62 61 63 6b 65 .....(plist-get.proc-info.:backe
28640 6e 64 29 20 70 72 6f 63 2d 69 6e 66 6f 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 nd).proc-info)).................
28660 28 72 65 61 73 6f 6e 69 6e 67 2d 62 6c 6f 63 6b 20 28 70 6c 69 73 74 2d 67 65 74 20 70 72 6f 63 (reasoning-block.(plist-get.proc
28680 2d 69 6e 66 6f 20 3a 72 65 61 73 6f 6e 69 6e 67 2d 62 6c 6f 63 6b 29 29 29 0a 20 20 20 20 20 20 -info.:reasoning-block))).......
286a0 20 20 20 20 20 20 3b 3b 20 44 65 70 65 6e 64 69 6e 67 20 6f 6e 20 74 68 65 20 41 50 49 2c 20 74 ......;;.Depending.on.the.API,.t
286c0 68 65 72 65 20 61 72 65 20 74 77 6f 20 6d 6f 64 65 73 20 74 68 61 74 20 72 65 61 73 6f 6e 69 6e here.are.two.modes.that.reasonin
286e0 67 20 6f 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 63 68 61 69 6e 2d 6f 66 2d 74 68 6f g.or.............;;.chain-of-tho
28700 75 67 68 74 20 63 6f 6e 74 65 6e 74 20 61 70 70 65 61 72 73 3a 20 61 73 20 70 61 72 74 20 6f 66 ught.content.appears:.as.part.of
28720 20 74 68 65 20 6d 61 69 6e 20 72 65 73 70 6f 6e 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b .the.main.response.............;
28740 3b 20 62 75 74 20 73 75 72 72 6f 75 6e 64 65 64 20 62 79 20 3c 74 68 69 6e 6b 3e 2e 2e 2e 3c 2f ;.but.surrounded.by.<think>...</
28760 74 68 69 6e 6b 3e 20 74 61 67 73 2c 20 6f 72 20 61 73 20 61 20 73 65 70 61 72 61 74 65 0a 20 20 think>.tags,.or.as.a.separate...
28780 20 20 20 20 20 20 20 20 20 20 3b 3b 20 4a 53 4f 4e 20 66 69 65 6c 64 20 69 6e 20 74 68 65 20 72 ..........;;.JSON.field.in.the.r
287a0 65 73 70 6f 6e 73 65 20 73 74 72 65 61 6d 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 0a 20 esponse.stream..............;;..
287c0 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 54 68 65 73 65 20 63 61 73 65 73 20 61 72 65 20 68 61 ...........;;.These.cases.are.ha
287e0 6e 64 6c 65 64 20 75 73 69 6e 67 20 74 77 6f 20 50 52 4f 43 2d 49 4e 46 4f 20 6b 65 79 73 3a 0a ndled.using.two.PROC-INFO.keys:.
28800 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 3a 72 ............;;.............;;.:r
28820 65 61 73 6f 6e 69 6e 67 2d 62 6c 6f 63 6b 20 69 73 20 6e 69 6c 20 62 65 66 6f 72 65 20 63 68 65 easoning-block.is.nil.before.che
28840 63 6b 69 6e 67 20 66 6f 72 20 72 65 61 73 6f 6e 69 6e 67 2c 20 27 69 6e 20 77 68 65 6e 0a 20 20 cking.for.reasoning,.'in.when...
28860 20 20 20 20 20 20 20 20 20 20 3b 3b 20 69 6e 20 61 20 72 65 61 73 6f 6e 69 6e 67 20 62 6c 6f 63 ..........;;.in.a.reasoning.bloc
28880 6b 2c 20 74 20 77 68 65 6e 20 77 65 20 72 65 61 63 68 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 k,.t.when.we.reach.the.end.of.th
288a0 65 20 62 6c 6f 63 6b 2c 20 61 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 27 64 6f 6e e.block,.and.............;;.'don
288c0 65 20 61 66 74 65 72 77 61 72 64 73 20 6f 72 20 69 66 20 6e 6f 20 72 65 61 73 6f 6e 69 6e 67 20 e.afterwards.or.if.no.reasoning.
288e0 62 6c 6f 63 6b 20 69 73 20 66 6f 75 6e 64 2e 20 20 54 68 69 73 0a 20 20 20 20 20 20 20 20 20 20 block.is.found...This...........
28900 20 20 3b 3b 20 61 70 70 6c 69 65 73 20 74 6f 20 62 6f 74 68 20 74 68 65 20 6d 6f 64 65 73 20 61 ..;;.applies.to.both.the.modes.a
28920 62 6f 76 65 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 0a 20 20 20 20 20 20 20 20 20 20 20 bove..............;;............
28940 20 3b 3b 20 3a 72 65 61 73 6f 6e 69 6e 67 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 72 65 61 73 .;;.:reasoning.contains.the.reas
28960 6f 6e 69 6e 67 20 74 65 78 74 20 70 61 72 73 65 64 20 66 72 6f 6d 20 74 68 65 20 73 65 70 61 72 oning.text.parsed.from.the.separ
28980 61 74 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 4a 53 4f 4e 20 66 69 65 6c 64 2e 0a 20 ate.............;;.JSON.field...
289a0 20 20 20 20 20 20 20 20 20 20 20 3b 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 4e 4f 54 ...........;;.............;;.NOT
289c0 45 3a 20 57 65 20 61 73 73 75 6d 65 20 68 65 72 65 20 74 68 61 74 20 74 68 65 20 72 65 61 73 6f E:.We.assume.here.that.the.reaso
289e0 6e 69 6e 67 20 62 6c 6f 63 6b 20 61 6c 77 61 79 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b ning.block.always.............;;
28a00 20 70 72 65 63 65 64 65 73 20 74 68 65 20 6d 61 69 6e 20 72 65 73 70 6f 6e 73 65 20 62 6c 6f 63 .precedes.the.main.response.bloc
28a20 6b 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 65 71 20 72 65 61 73 6f k..............(unless.(eq.reaso
28a40 6e 69 6e 67 2d 62 6c 6f 63 6b 20 27 64 6f 6e 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ning-block.'done)...............
28a60 28 6c 65 74 20 28 28 72 65 61 73 6f 6e 69 6e 67 20 28 70 6c 69 73 74 2d 67 65 74 20 70 72 6f 63 (let.((reasoning.(plist-get.proc
28a80 2d 69 6e 66 6f 20 3a 72 65 61 73 6f 6e 69 6e 67 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 -info.:reasoning))).............
28aa0 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 28 28 73 74 72 ....(cond..................((str
28ac0 69 6e 67 70 20 72 65 61 73 6f 6e 69 6e 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ingp.reasoning).................
28ae0 20 20 3b 3b 20 4f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 73 65 70 61 72 61 74 65 20 4a 53 4f 4e ..;;.Obtained.from.separate.JSON
28b00 20 66 69 65 6c 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 .field.in.response..............
28b20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 63 61 6c 6c 62 61 63 6b 20 28 63 6f 6e 73 20 27 72 65 .....(funcall.callback.(cons.'re
28b40 61 73 6f 6e 69 6e 67 20 72 65 61 73 6f 6e 69 6e 67 29 20 70 72 6f 63 2d 69 6e 66 6f 29 0a 20 20 asoning.reasoning).proc-info)...
28b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 72 65 61 73 6f 6e 69 6e ................(unless.reasonin
28b80 67 2d 62 6c 6f 63 6b 20 3b 52 65 63 6f 72 64 20 74 68 61 74 20 77 65 27 72 65 20 69 6e 20 61 20 g-block.;Record.that.we're.in.a.
28ba0 72 65 61 73 6f 6e 69 6e 67 20 62 6c 6f 63 6b 20 28 23 37 30 39 29 0a 20 20 20 20 20 20 20 20 20 reasoning.block.(#709)..........
28bc0 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 2d 69 6e 66 6f 20 ...........(plist-put.proc-info.
28be0 3a 72 65 61 73 6f 6e 69 6e 67 2d 62 6c 6f 63 6b 20 27 69 6e 29 29 0a 20 20 20 20 20 20 20 20 20 :reasoning-block.'in))..........
28c00 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 70 72 6f 63 2d 69 6e 66 6f 20 3a 72 .........(plist-put.proc-info.:r
28c20 65 61 73 6f 6e 69 6e 67 20 6e 69 6c 29 29 20 3b 52 65 73 65 74 20 66 6f 72 20 6e 65 78 74 20 70 easoning.nil)).;Reset.for.next.p
28c40 61 72 73 69 6e 67 20 72 6f 75 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 arsing.round..................((
28c60 73 74 72 69 6e 67 2d 62 6c 61 6e 6b 2d 70 20 72 65 73 70 6f 6e 73 65 29 29 20 3b 44 65 66 65 72 string-blank-p.response)).;Defer
28c80 20 63 68 65 63 6b 69 6e 67 20 69 66 20 72 65 73 70 6f 6e 73 65 20 69 73 20 62 6c 61 6e 6b 0a 20 .checking.if.response.is.blank..
28ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 61 6e 64 20 28 6e 75 6c 6c 20 72 65 61 73 ................((and.(null.reas
28cc0 6f 6e 69 6e 67 2d 62 6c 6f 63 6b 29 20 28 6c 65 6e 67 74 68 3e 20 72 65 73 70 6f 6e 73 65 20 30 oning-block).(length>.response.0
28ce0 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 4f 62 74 61 69 6e 65 64 ))...................;;.Obtained
28d00 20 66 72 6f 6d 20 6d 61 69 6e 20 72 65 73 70 6f 6e 73 65 20 73 74 72 65 61 6d 3a 20 72 65 61 73 .from.main.response.stream:.reas
28d20 6f 6e 69 6e 67 20 62 6c 6f 63 6b 20 73 74 61 72 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 oning.block.start...............
28d40 20 20 20 20 28 69 66 2d 6c 65 74 2a 20 20 28 28 69 64 78 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 ....(if-let*..((idx.(string-matc
28d60 68 2d 70 20 22 3c 74 68 69 6e 6b 3e 22 20 72 65 73 70 6f 6e 73 65 29 29 29 0a 20 20 20 20 20 20 h-p."<think>".response))).......
28d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 67 6e 0a 20 20 20 20 20 20 20 20 20 ................(progn..........
28da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 3e 20 69 64 78 20 30 29 20 3b ...............(when.(>.idx.0).;
28dc0 43 6f 6c 6c 65 63 74 20 6c 65 61 64 69 6e 67 20 77 68 69 74 65 73 70 61 63 65 20 62 65 66 6f 72 Collect.leading.whitespace.befor
28de0 65 20 3c 74 68 69 6e 6b 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 e.<think>.......................
28e00 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 63 61 6c 6c 62 61 63 6b 20 28 73 75 62 73 74 72 69 6e 67 ....(funcall.callback.(substring
28e20 20 72 65 73 70 6f 6e 73 65 20 30 20 69 64 78 29 20 70 72 6f 63 2d 69 6e 66 6f 29 0a 20 20 20 20 .response.0.idx).proc-info).....
28e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 72 65 73 70 ......................(setq.resp
28e60 6f 6e 73 65 20 28 73 75 62 73 74 72 69 6e 67 20 72 65 73 70 6f 6e 73 65 20 69 64 78 29 29 29 0a onse.(substring.response.idx))).
28e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 72 65 ........................(setq.re
28ea0 73 70 6f 6e 73 65 20 28 63 6f 6e 73 20 27 72 65 61 73 6f 6e 69 6e 67 20 72 65 73 70 6f 6e 73 65 sponse.(cons.'reasoning.response
28ec0 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 28 70 6c 69 73 )).........................(plis
28ee0 74 2d 70 75 74 20 70 72 6f 63 2d 69 6e 66 6f 20 3a 72 65 61 73 6f 6e 69 6e 67 2d 62 6c 6f 63 6b t-put.proc-info.:reasoning-block
28f00 20 27 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 28 70 6c 69 73 .'in)).....................(plis
28f20 74 2d 70 75 74 20 70 72 6f 63 2d 69 6e 66 6f 20 3a 72 65 61 73 6f 6e 69 6e 67 2d 62 6c 6f 63 6b t-put.proc-info.:reasoning-block
28f40 20 27 64 6f 6e 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 61 6e 64 .'done)))..................((and
28f60 20 28 6e 6f 74 20 28 65 71 20 72 65 61 73 6f 6e 69 6e 67 2d 62 6c 6f 63 6b 20 74 29 29 20 28 6c .(not.(eq.reasoning-block.t)).(l
28f80 65 6e 67 74 68 3e 20 72 65 73 70 6f 6e 73 65 20 30 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 ength>.response.0)).............
28fa0 20 20 20 20 20 20 28 69 66 2d 6c 65 74 2a 20 28 28 69 64 78 20 28 73 74 72 69 6e 67 2d 6d 61 74 ......(if-let*.((idx.(string-mat
28fc0 63 68 2d 70 20 22 3c 2f 74 68 69 6e 6b 3e 22 20 72 65 73 70 6f 6e 73 65 29 29 29 0a 20 20 20 20 ch-p."</think>".response))).....
28fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 67 6e 0a 20 20 20 20 20 20 20 ..................(progn........
29000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 63 61 6c 6c 62 61 .................(funcall.callba
29020 63 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 ck..............................
29040 20 20 20 20 28 63 6f 6e 73 20 27 72 65 61 73 6f 6e 69 6e 67 20 28 73 75 62 73 74 72 69 6e 67 20 ....(cons.'reasoning.(substring.
29060 72 65 73 70 6f 6e 73 65 20 6e 69 6c 20 28 2b 20 69 64 78 20 38 29 29 29 0a 20 20 20 20 20 20 20 response.nil.(+.idx.8)))........
29080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 2d 69 ..........................proc-i
290a0 6e 66 6f 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 nfo).........................(se
290c0 74 71 20 72 65 61 73 6f 6e 69 6e 67 2d 62 6c 6f 63 6b 20 74 29 20 3b 53 69 67 6e 61 6c 20 65 6e tq.reasoning-block.t).;Signal.en
290e0 64 20 6f 66 20 72 65 61 73 6f 6e 69 6e 67 20 73 74 72 65 61 6d 0a 20 20 20 20 20 20 20 20 20 20 d.of.reasoning.stream...........
29100 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 70 72 6f 63 2d 69 6e ..............(plist-put.proc-in
29120 66 6f 20 3a 72 65 61 73 6f 6e 69 6e 67 2d 62 6c 6f 63 6b 20 74 29 0a 20 20 20 20 20 20 20 20 20 fo.:reasoning-block.t)..........
29140 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 20 28 73 ...............(setq.response.(s
29160 75 62 73 74 72 69 6e 67 20 72 65 73 70 6f 6e 73 65 20 28 2b 20 69 64 78 20 38 29 29 29 29 0a 20 ubstring.response.(+.idx.8))))..
29180 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 72 65 73 70 6f 6e 73 ...................(setq.respons
291a0 65 20 28 63 6f 6e 73 20 27 72 65 61 73 6f 6e 69 6e 67 20 72 65 73 70 6f 6e 73 65 29 29 29 29 29 e.(cons.'reasoning.response)))))
291c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 65 71 20 72 65 61 73 6f .................(when.(eq.reaso
291e0 6e 69 6e 67 2d 62 6c 6f 63 6b 20 74 29 20 3b 45 6e 64 20 6f 66 20 72 65 61 73 6f 6e 69 6e 67 20 ning-block.t).;End.of.reasoning.
29200 62 6c 6f 63 6b 0a 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 block...................(funcall
29220 20 63 61 6c 6c 62 61 63 6b 20 27 28 72 65 61 73 6f 6e 69 6e 67 20 2e 20 74 29 20 70 72 6f 63 2d .callback.'(reasoning...t).proc-
29240 69 6e 66 6f 29 0a 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 info)...................(plist-p
29260 75 74 20 70 72 6f 63 2d 69 6e 66 6f 20 3a 72 65 61 73 6f 6e 69 6e 67 2d 62 6c 6f 63 6b 20 27 64 ut.proc-info.:reasoning-block.'d
29280 6f 6e 65 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 65 71 75 one)))).............(unless.(equ
292a0 61 6c 20 72 65 73 70 6f 6e 73 65 20 22 22 29 20 3b 52 65 73 70 6f 6e 73 65 20 63 61 6c 6c 62 61 al.response."").;Response.callba
292c0 63 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 63 61 6c 6c 62 61 ck...............(funcall.callba
292e0 63 6b 20 72 65 73 70 6f 6e 73 65 20 70 72 6f 63 2d 69 6e 66 6f 29 29 29 29 29 29 29 29 0a 0a 28 ck.response.proc-info))))))))..(
29300 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 2d 70 61 72 73 65 2d cl-defgeneric.gptel-curl--parse-
29320 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 29 0a 20 20 22 53 74 stream.(backend.proc-info)..."St
29340 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 6c 2e 0a 0a 49 6d 70 ream.parser.for.gptel-curl...Imp
29360 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 74 69 6f 6e 20 72 75 lementations.of.this.function.ru
29380 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 66 69 6c 74 65 72 20 n.as.part.of.the.process.filter.
293a0 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 20 72 65 74 75 72 6e for.the.active.query,.and.return
293c0 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 68 65 20 4c 4c 4d 2e .partial.responses.from.the.LLM.
293e0 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 65 6e 64 20 69 6e 20 ..BACKEND.is.the.LLM.backend.in.
29400 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 74 20 77 69 74 68 20 use...PROC-INFO.is.a.plist.with.
29420 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 74 68 65 72 20 63 6f process.information.and.other.co
29440 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 65 74 2d 72 65 73 70 ntext..See.`gptel-curl--get-resp
29460 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 0a 0a 28 64 65 66 75 onse'.for.its.contents.")..(defu
29480 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 72 6f 63 65 73 73 20 n.gptel-curl--sentinel.(process.
294a0 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 6e 65 6c 20 66 6f 72 _status)..."Process.sentinel.for
294c0 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 4f 43 45 53 53 20 61 .gptel.curl.requests...PROCESS.a
294e0 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 72 61 6d 65 74 65 72 nd._STATUS.are.process.parameter
29500 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 6f 63 65 73 73 2d 62 s."...(let.((proc-buf.(process-b
29520 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 6e 2d 6c 65 74 2a 20 uffer.process))).....(when-let*.
29540 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 63 65 73 73 29 20 27 (((eq.(process-status.process).'
29560 65 78 69 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 73 6d 20 28 63 61 72 exit)).................(fsm.(car
29580 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 2d 72 65 71 75 65 .(alist-get.process.gptel--reque
295a0 73 74 2d 61 6c 69 73 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f st-alist))).................(pro
295c0 63 2d 69 6e 66 6f 20 28 67 70 74 65 6c 2d 66 73 6d 2d 69 6e 66 6f 20 66 73 6d 29 29 0a 20 20 20 c-info.(gptel-fsm-info.fsm))....
295e0 20 20 20 20 20 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 .............(proc-callback.(pli
29600 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 29 29 0a 20 20 st-get.proc-info.:callback)))...
29620 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 67 70 74 65 6c ....(when.gptel-log-level.(gptel
29640 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 66 20 70 72 6f -curl--log-response.proc-buf.pro
29660 63 2d 69 6e 66 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 c-info)).;logging.......(pcase-l
29680 65 74 20 28 28 60 28 2c 72 65 73 70 6f 6e 73 65 20 2c 68 74 74 70 2d 73 74 61 74 75 73 20 2c 68 et.((`(,response.,http-status.,h
296a0 74 74 70 2d 6d 73 67 20 2c 65 72 72 6f 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ttp-msg.,error).................
296c0 20 20 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 ...(with-current-buffer.proc-buf
296e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 63 75 72 ......................(gptel-cur
29700 6c 2d 2d 70 61 72 73 65 2d 72 65 73 70 6f 6e 73 65 20 70 72 6f 63 2d 69 6e 66 6f 29 29 29 29 0a l--parse-response.proc-info)))).
29720 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 70 72 6f 63 2d 69 6e 66 6f 20 3a 68 74 ........(plist-put.proc-info.:ht
29740 74 70 2d 73 74 61 74 75 73 20 68 74 74 70 2d 73 74 61 74 75 73 29 0a 20 20 20 20 20 20 20 20 28 tp-status.http-status).........(
29760 70 6c 69 73 74 2d 70 75 74 20 70 72 6f 63 2d 69 6e 66 6f 20 3a 73 74 61 74 75 73 20 68 74 74 70 plist-put.proc-info.:status.http
29780 2d 6d 73 67 29 0a 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 66 73 6d 2d 74 72 61 6e 73 69 -msg).........(gptel--fsm-transi
297a0 74 69 6f 6e 20 66 73 6d 29 20 20 20 20 20 3b 57 41 49 54 20 2d 3e 20 54 59 50 45 0a 20 20 20 20 tion.fsm).....;WAIT.->.TYPE.....
297c0 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 2d ....(when.error.(plist-put.proc-
297e0 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 77 68 65 info.:error.error)).........(whe
29800 6e 20 72 65 73 70 6f 6e 73 65 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 4c 6f 6f n.response..................;Loo
29820 6b 20 66 6f 72 20 61 20 72 65 61 73 6f 6e 69 6e 67 20 62 6c 6f 63 6b 0a 20 20 20 20 20 20 20 20 k.for.a.reasoning.block.........
29840 20 20 28 69 66 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 2d 70 20 22 5e 5c 5c 73 2d 2a 3c 74 68 ..(if.(string-match-p."^\\s-*<th
29860 69 6e 6b 3e 22 20 72 65 73 70 6f 6e 73 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 ink>".response)...............(w
29880 68 65 6e 2d 6c 65 74 2a 20 28 28 69 64 78 20 28 73 74 72 69 6e 67 2d 73 65 61 72 63 68 20 22 3c hen-let*.((idx.(string-search."<
298a0 2f 74 68 69 6e 6b 3e 22 20 72 65 73 70 6f 6e 73 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 /think>".response)))............
298c0 20 20 20 20 20 28 77 69 74 68 2d 64 65 6d 6f 74 65 64 2d 65 72 72 6f 72 73 20 22 67 70 74 65 6c .....(with-demoted-errors."gptel
298e0 20 63 61 6c 6c 62 61 63 6b 20 65 72 72 6f 72 3a 20 25 53 22 0a 20 20 20 20 20 20 20 20 20 20 20 .callback.error:.%S"............
29900 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 70 72 6f 63 2d 63 61 6c 6c 62 61 63 6b 0a 20 20 .......(funcall.proc-callback...
29920 20 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 73 20 27 .........................(cons.'
29940 72 65 61 73 6f 6e 69 6e 67 20 28 73 75 62 73 74 72 69 6e 67 20 72 65 73 70 6f 6e 73 65 20 6e 69 reasoning.(substring.response.ni
29960 6c 20 28 2b 20 69 64 78 20 38 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 l.(+.idx.8)))...................
29980 20 20 20 20 20 20 20 20 20 70 72 6f 63 2d 69 6e 66 6f 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 .........proc-info))............
299a0 20 20 20 20 20 28 73 65 74 71 20 72 65 73 70 6f 6e 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 .....(setq.response.............
299c0 20 20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 2d 74 72 69 6d 2d 6c 65 66 74 20 28 73 75 62 ..........(string-trim-left.(sub
299e0 73 74 72 69 6e 67 20 72 65 73 70 6f 6e 73 65 20 28 2b 20 69 64 78 20 38 29 29 29 29 29 0a 20 20 string.response.(+.idx.8)))))...
29a00 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 72 65 61 73 6f 6e 69 6e 67 ..........(when-let*.((reasoning
29a20 20 28 70 6c 69 73 74 2d 67 65 74 20 70 72 6f 63 2d 69 6e 66 6f 20 3a 72 65 61 73 6f 6e 69 6e 67 .(plist-get.proc-info.:reasoning
29a40 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 28 28 73 74 72 )).........................((str
29a60 69 6e 67 70 20 72 65 61 73 6f 6e 69 6e 67 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ingp.reasoning)))...............
29a80 28 66 75 6e 63 61 6c 6c 20 70 72 6f 63 2d 63 61 6c 6c 62 61 63 6b 20 28 63 6f 6e 73 20 27 72 65 (funcall.proc-callback.(cons.'re
29aa0 61 73 6f 6e 69 6e 67 20 72 65 61 73 6f 6e 69 6e 67 29 20 70 72 6f 63 2d 69 6e 66 6f 29 29 29 29 asoning.reasoning).proc-info))))
29ac0 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 6f 72 20 72 65 73 70 6f 6e 73 65 20 28 6e 6f 74 .........(when.(or.response.(not
29ae0 20 28 6d 65 6d 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 .(member.http-status.'("200"."10
29b00 30 22 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 64 65 6d 6f 74 65 64 2d 65 0"))))...........(with-demoted-e
29b20 72 72 6f 72 73 20 22 67 70 74 65 6c 20 63 61 6c 6c 62 61 63 6b 20 65 72 72 6f 72 3a 20 25 53 22 rrors."gptel.callback.error:.%S"
29b40 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 70 72 6f 63 2d 63 61 6c 6c 62 .............(funcall.proc-callb
29b60 61 63 6b 20 72 65 73 70 6f 6e 73 65 20 70 72 6f 63 2d 69 6e 66 6f 29 29 29 29 0a 20 20 20 20 20 ack.response.proc-info))))......
29b80 20 28 67 70 74 65 6c 2d 2d 66 73 6d 2d 74 72 61 6e 73 69 74 69 6f 6e 20 66 73 6d 29 29 20 20 20 .(gptel--fsm-transition.fsm))...
29ba0 20 20 20 3b 54 59 50 45 20 2d 3e 20 6e 65 78 74 0a 20 20 20 20 28 73 65 74 66 20 28 61 6c 69 73 ...;TYPE.->.next.....(setf.(alis
29bc0 74 2d 67 65 74 20 70 72 6f 63 65 73 73 20 67 70 74 65 6c 2d 2d 72 65 71 75 65 73 74 2d 61 6c 69 t-get.process.gptel--request-ali
29be0 73 74 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 st.nil.'remove).nil).....(kill-b
29c00 75 66 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 uffer.proc-buf)))..(defun.gptel-
29c20 63 75 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 curl--parse-response.(proc-info)
29c40 0a 20 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 ..."Parse.the.buffer.BUF.with.cu
29c60 72 6c 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 rl's.response...PROC-INFO.is.a.p
29c80 6c 69 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 list.with.contextual.information
29ca0 2e 22 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 ."...(let.((token.(plist-get.pro
29cc0 63 2d 69 6e 66 6f 20 3a 74 6f 6b 65 6e 29 29 29 0a 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 c-info.:token))).....(goto-char.
29ce0 28 70 6f 69 6e 74 2d 6d 61 78 29 29 0a 20 20 20 20 28 73 65 61 72 63 68 2d 62 61 63 6b 77 61 72 (point-max)).....(search-backwar
29d00 64 20 74 6f 6b 65 6e 29 0a 20 20 20 20 28 62 61 63 6b 77 61 72 64 2d 63 68 61 72 29 0a 20 20 20 d.token).....(backward-char)....
29d20 20 28 70 63 61 73 65 2d 6c 65 74 2a 20 28 28 60 28 2c 5f 20 2e 20 2c 68 65 61 64 65 72 2d 73 69 .(pcase-let*.((`(,_...,header-si
29d40 7a 65 29 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 20 20 ze).(read.(current-buffer))))...
29d60 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 0a 0a 20 20 20 ....(goto-char.(point-min)).....
29d80 20 20 20 28 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 ...(if-let*.((http-msg.(string-t
29da0 72 69 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 28 rim............................(
29dc0 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 67 buffer-substring.(line-beginning
29de0 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 20 -position)......................
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 28 6c 69 6e 65 2d 65 6e ........................(line-en
29e20 64 2d 70 6f 73 69 74 69 6f 6e 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 d-position)))).................(
29e40 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 20 20 20 20 28 73 61 http-status..................(sa
29e60 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 20 20 20 20 20 20 20 ve-match-data...................
29e80 20 28 61 6e 64 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 20 22 48 54 54 50 2f 5b 2e 30 2d 39 5d .(and.(string-match."HTTP/[.0-9]
29ea0 2b 20 2b 5c 5c 28 5b 30 2d 39 5d 2b 5c 5c 29 22 20 68 74 74 70 2d 6d 73 67 29 0a 20 20 20 20 20 +.+\\([0-9]+\\)".http-msg)......
29ec0 20 20 20 20 20 20 20 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 ...................(match-string
29ee0 20 31 20 68 74 74 70 2d 6d 73 67 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .1.http-msg)))).................
29f00 28 72 65 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 (response.(progn.(goto-char.head
29f20 65 72 2d 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 er-size)........................
29f40 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...
29f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
29f80 20 20 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 ...(gptel--json-read)...........
29fa0 20 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 72 72 6f 72 20 .........................(error.
29fc0 27 6a 73 6f 6e 2d 72 65 61 64 2d 65 72 72 6f 72 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 'json-read-error)))))...........
29fe0 28 63 6f 6e 64 0a 20 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 (cond............;;.FIXME.Handle
2a000 20 74 68 65 20 63 61 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 .the.case.where.HTTP.100.is.foll
2a020 6f 77 65 64 20 62 79 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 owed.by.HTTP.(not.200).BUG.#194.
2a040 20 20 20 20 20 20 20 20 20 20 20 28 28 6d 65 6d 62 65 72 20 68 74 74 70 2d 73 74 61 74 75 73 20 ...........((member.http-status.
2a060 27 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 28 6c 69 73 '("200"."100")).............(lis
2a080 74 20 28 61 6e 64 2d 6c 65 74 2a 20 28 28 72 65 73 70 20 28 67 70 74 65 6c 2d 2d 70 61 72 73 65 t.(and-let*.((resp.(gptel--parse
2a0a0 2d 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 20 20 -response.......................
2a0c0 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 70 72 6f 63 2d 69 6e ..............(plist-get.proc-in
2a0e0 66 6f 20 3a 62 61 63 6b 65 6e 64 29 20 72 65 73 70 6f 6e 73 65 20 70 72 6f 63 2d 69 6e 66 6f 29 fo.:backend).response.proc-info)
2a100 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 28 )..............................(
2a120 28 6e 6f 74 20 28 73 74 72 69 6e 67 2d 62 6c 61 6e 6b 2d 70 20 72 65 73 70 29 29 29 29 0a 20 20 (not.(string-blank-p.resp))))...
2a140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 2d 74 72 69 6d 20 72 ..................(string-trim.r
2a160 65 73 70 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 74 74 70 2d 73 74 61 esp))...................http-sta
2a180 74 75 73 20 68 74 74 70 2d 6d 73 67 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 28 61 6e 64 2d tus.http-msg))............((and-
2a1a0 6c 65 74 2a 20 28 28 65 72 72 6f 72 2d 64 61 74 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 let*.((error-data...............
2a1c0 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 20 28 28 70 6c 69 73 74 70 20 72 65 73 70 6f 6e 73 ..........(cond.((plistp.respons
2a1e0 65 29 20 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 29 0a e).(plist-get.response.:error)).
2a200 20 20 20 20 20 20 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 ..............................((
2a220 61 72 72 61 79 70 20 72 65 73 70 6f 6e 73 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 arrayp.response)................
2a240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 73 6f 6d 65 20 28 6c 61 6d 62 64 61 ................(cl-some.(lambda
2a260 20 28 65 6c 29 20 28 70 6c 69 73 74 2d 67 65 74 20 65 6c 20 3a 65 72 72 6f 72 29 29 20 72 65 73 .(el).(plist-get.el.:error)).res
2a280 70 6f 6e 73 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 6e ponse)))))...............(list.n
2a2a0 69 6c 20 68 74 74 70 2d 73 74 61 74 75 73 20 68 74 74 70 2d 6d 73 67 20 65 72 72 6f 72 2d 64 61 il.http-status.http-msg.error-da
2a2c0 74 61 29 29 29 0a 20 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 ta)))............((eq.response.'
2a2e0 6a 73 6f 6e 2d 72 65 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 json-read-error).............(li
2a300 73 74 20 6e 69 6c 20 68 74 74 70 2d 73 74 61 74 75 73 20 28 63 6f 6e 63 61 74 20 22 28 22 20 68 st.nil.http-status.(concat."(".h
2a320 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 65 73 ttp-msg.").Malformed.JSON.in.res
2a340 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 6c 66 ponse.")..................."Malf
2a360 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 20 20 ormed.JSON.in.response")).......
2a380 20 20 20 20 20 28 74 20 28 6c 69 73 74 20 6e 69 6c 20 68 74 74 70 2d 73 74 61 74 75 73 20 28 63 .....(t.(list.nil.http-status.(c
2a3a0 6f 6e 63 61 74 20 22 28 22 20 68 74 74 70 2d 6d 73 67 20 22 29 20 43 6f 75 6c 64 20 6e 6f 74 20 oncat."(".http-msg.").Could.not.
2a3c0 70 61 72 73 65 20 48 54 54 50 20 72 65 73 70 6f 6e 73 65 2e 22 29 0a 20 20 20 20 20 20 20 20 20 parse.HTTP.response.")..........
2a3e0 20 20 20 20 20 20 20 20 20 20 20 22 43 6f 75 6c 64 20 6e 6f 74 20 70 61 72 73 65 20 48 54 54 50 ..........."Could.not.parse.HTTP
2a400 20 72 65 73 70 6f 6e 73 65 2e 22 29 29 29 0a 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 6e 69 6c .response."))).........(list.nil
2a420 20 68 74 74 70 2d 73 74 61 74 75 73 20 28 63 6f 6e 63 61 74 20 22 28 22 20 68 74 74 70 2d 6d 73 .http-status.(concat."(".http-ms
2a440 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 20 72 65 73 70 6f 6e g.").Could.not.parse.HTTP.respon
2a460 73 65 2e 22 29 0a 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 se.")..............."Could.not.p
2a480 61 72 73 65 20 48 54 54 50 20 72 65 73 70 6f 6e 73 65 2e 22 29 29 29 29 29 0a 0a 28 70 72 6f 76 arse.HTTP.response.")))))..(prov
2a4a0 69 64 65 20 27 67 70 74 65 6c 2d 63 75 72 6c 29 0a 3b 3b 3b 20 67 70 74 65 6c 2d 63 75 72 6c 2e ide.'gptel-curl).;;;.gptel-curl.
2a4c0 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 00 00 00 00 00 00 el.ends.here....................
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 67 70 74 65 6c 2d 30 2e 39 2e 39 2f 67 70 74 65 6c 2d 67 68 2e 65 6c 00 00 00 00 00 00 00 00 00 gptel-0.9.9/gptel-gh.el.........
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 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
2a680 30 30 33 35 31 35 30 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 33 33 34 30 00 20 30 00 00 00 0035150.00000000000.013340..0...
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 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...................
2a720 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...................
2a740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a7a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a7c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a7e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a800 3b 3b 3b 20 67 70 74 65 6c 2d 67 68 2e 65 6c 20 2d 2d 2d 20 20 47 69 74 68 75 62 20 43 6f 70 69 ;;;.gptel-gh.el.---..Github.Copi
2a820 6c 6f 74 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 20 6c lot.AI.suppport.for.gptel..-*-.l
2a840 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 54 68 69 73 20 exical-binding:.t;.-*-..;;.This.
2a860 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 75 20 63 61 program.is.free.software;.you.ca
2a880 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 69 66 79 0a n.redistribute.it.and/or.modify.
2a8a0 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 20 47 4e 55 ;;.it.under.the.terms.of.the.GNU
2a8c0 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 75 62 6c 69 .General.Public.License.as.publi
2a8e0 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 20 46 6f 75 shed.by.;;.the.Free.Software.Fou
2a900 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 20 74 68 65 ndation,.either.version.3.of.the
2a920 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 69 6f 6e 29 .License,.or.;;.(at.your.option)
2a940 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 20 70 72 6f .any.later.version...;;.This.pro
2a960 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 6f 70 65 20 gram.is.distributed.in.the.hope.
2a980 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 75 74 20 57 that.it.will.be.useful,.;;.but.W
2a9a0 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 20 65 76 65 ITHOUT.ANY.WARRANTY;.without.eve
2a9c0 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 20 4d 45 52 n.the.implied.warranty.of.;;.MER
2a9e0 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 41 20 50 41 CHANTABILITY.or.FITNESS.FOR.A.PA
2aa00 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 3b 20 47 4e RTICULAR.PURPOSE...See.the.;;.GN
2aa20 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 20 6d 6f 72 U.General.Public.License.for.mor
2aa40 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 76 65 20 72 e.details...;;.You.should.have.r
2aa60 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 6e 65 72 61 eceived.a.copy.of.the.GNU.Genera
2aa80 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 74 68 20 74 l.Public.License.;;.along.with.t
2aaa0 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 74 74 70 73 his.program...If.not,.see.<https
2aac0 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 3b 3b 3b 20 ://www.gnu.org/licenses/>...;;;.
2aae0 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 64 73 20 73 Commentary:..;;.This.file.adds.s
2ab00 75 70 70 6f 72 74 20 66 6f 72 20 47 69 74 68 75 62 20 43 6f 70 69 6c 6f 74 20 41 50 49 20 74 6f upport.for.Github.Copilot.API.to
2ab20 20 67 70 74 65 6c 0a 0a 3b 3b 3b 20 43 6f 64 65 3a 0a 0a 28 65 76 61 6c 2d 77 68 65 6e 2d 63 6f .gptel..;;;.Code:..(eval-when-co
2ab40 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 28 72 65 71 75 mpile...(require.'cl-lib)).(requ
2ab60 69 72 65 20 27 6d 61 70 29 0a 28 72 65 71 75 69 72 65 20 27 67 70 74 65 6c 29 0a 28 72 65 71 75 ire.'map).(require.'gptel).(requ
2ab80 69 72 65 20 27 62 72 6f 77 73 65 2d 75 72 6c 29 0a 0a 3b 3b 3b 20 47 69 74 68 75 62 20 43 6f 70 ire.'browse-url)..;;;.Github.Cop
2aba0 69 6c 6f 74 0a 28 64 65 66 63 6f 6e 73 74 20 67 70 74 65 6c 2d 2d 67 68 2d 6d 6f 64 65 6c 73 0a ilot.(defconst.gptel--gh-models.
2abc0 20 20 27 28 28 67 70 74 2d 34 6f 0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 0a 20 20 ..'((gpt-4o......:description...
2abe0 20 20 20 22 41 64 76 61 6e 63 65 64 20 6d 6f 64 65 6c 20 66 6f 72 20 63 6f 6d 70 6c 65 78 20 74 ..."Advanced.model.for.complex.t
2ac00 61 73 6b 73 3b 20 63 68 65 61 70 65 72 20 26 20 66 61 73 74 65 72 20 74 68 61 6e 20 47 50 54 2d asks;.cheaper.&.faster.than.GPT-
2ac20 54 75 72 62 6f 22 0a 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 6d 65 64 69 61 Turbo"......:capabilities.(media
2ac40 20 74 6f 6f 6c 2d 75 73 65 20 6a 73 6f 6e 20 75 72 6c 29 0a 20 20 20 20 20 3a 6d 69 6d 65 2d 74 .tool-use.json.url)......:mime-t
2ac60 79 70 65 73 20 28 22 69 6d 61 67 65 2f 6a 70 65 67 22 20 22 69 6d 61 67 65 2f 70 6e 67 22 20 22 ypes.("image/jpeg"."image/png"."
2ac80 69 6d 61 67 65 2f 67 69 66 22 20 22 69 6d 61 67 65 2f 77 65 62 70 22 29 0a 20 20 20 20 20 3a 63 image/gif"."image/webp")......:c
2aca0 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 31 32 38 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 32 2e ontext-window.128.:input-cost.2.
2acc0 35 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 31 30 20 3a 63 75 74 6f 66 66 2d 64 61 74 65 20 22 5.:output-cost.10.:cutoff-date."
2ace0 32 30 32 33 2d 31 30 22 29 0a 20 20 20 20 28 67 70 74 2d 34 6f 2d 63 6f 70 69 6c 6f 74 0a 20 20 2023-10").....(gpt-4o-copilot...
2ad00 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 43 68 65 61 70 20 6d 6f 64 65 6c 20 66 6f 72 ...:description."Cheap.model.for
2ad20 20 66 61 73 74 20 74 61 73 6b 73 3b 20 63 68 65 61 70 65 72 20 26 20 6d 6f 72 65 20 63 61 70 61 .fast.tasks;.cheaper.&.more.capa
2ad40 62 6c 65 20 74 68 61 6e 20 47 50 54 2d 33 2e 35 20 54 75 72 62 6f 22 0a 20 20 20 20 20 3a 63 6f ble.than.GPT-3.5.Turbo"......:co
2ad60 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 31 32 38 0a 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 ntext-window.128......:input-cos
2ad80 74 20 30 2e 31 35 0a 20 20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 30 2e 36 30 0a 20 20 t.0.15......:output-cost.0.60...
2ada0 20 20 20 3a 63 75 74 6f 66 66 2d 64 61 74 65 20 22 32 30 32 33 2d 31 30 22 29 0a 20 20 20 20 28 ...:cutoff-date."2023-10").....(
2adc0 67 70 74 2d 34 2e 31 0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 46 6c 61 67 73 gpt-4.1......:description."Flags
2ade0 68 69 70 20 6d 6f 64 65 6c 20 66 6f 72 20 63 6f 6d 70 6c 65 78 20 74 61 73 6b 73 22 0a 20 20 20 hip.model.for.complex.tasks"....
2ae00 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 6d 65 64 69 61 20 74 6f 6f 6c 2d 75 73 65 20 ..:capabilities.(media.tool-use.
2ae20 6a 73 6f 6e 20 75 72 6c 29 0a 20 20 20 20 20 3a 6d 69 6d 65 2d 74 79 70 65 73 20 28 22 69 6d 61 json.url)......:mime-types.("ima
2ae40 67 65 2f 6a 70 65 67 22 20 22 69 6d 61 67 65 2f 70 6e 67 22 20 22 69 6d 61 67 65 2f 67 69 66 22 ge/jpeg"."image/png"."image/gif"
2ae60 20 22 69 6d 61 67 65 2f 77 65 62 70 22 29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e ."image/webp")......:context-win
2ae80 64 6f 77 20 31 32 38 0a 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 32 2e 30 0a 20 20 20 dow.128......:input-cost.2.0....
2aea0 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 38 2e 30 0a 20 20 20 20 20 3a 63 75 74 6f 66 66 2d ..:output-cost.8.0......:cutoff-
2aec0 64 61 74 65 20 22 32 30 32 34 2d 30 35 22 29 0a 20 20 20 20 28 67 70 74 2d 35 0a 20 20 20 20 20 date."2024-05").....(gpt-5......
2aee0 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 46 6c 61 67 73 68 69 70 20 6d 6f 64 65 6c 20 66 6f 72 :description."Flagship.model.for
2af00 20 63 6f 64 69 6e 67 2c 20 72 65 61 73 6f 6e 69 6e 67 2c 20 61 6e 64 20 61 67 65 6e 74 69 63 20 .coding,.reasoning,.and.agentic.
2af20 74 61 73 6b 73 20 61 63 72 6f 73 73 20 64 6f 6d 61 69 6e 73 22 0a 20 20 20 20 20 3a 63 61 70 61 tasks.across.domains"......:capa
2af40 62 69 6c 69 74 69 65 73 20 28 6d 65 64 69 61 20 74 6f 6f 6c 2d 75 73 65 20 6a 73 6f 6e 20 75 72 bilities.(media.tool-use.json.ur
2af60 6c 29 0a 20 20 20 20 20 3a 6d 69 6d 65 2d 74 79 70 65 73 20 28 22 69 6d 61 67 65 2f 6a 70 65 67 l)......:mime-types.("image/jpeg
2af80 22 20 22 69 6d 61 67 65 2f 70 6e 67 22 20 22 69 6d 61 67 65 2f 67 69 66 22 20 22 69 6d 61 67 65 "."image/png"."image/gif"."image
2afa0 2f 77 65 62 70 22 29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 31 32 38 /webp")......:context-window.128
2afc0 0a 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 31 2e 32 35 0a 20 20 20 20 20 3a 6f 75 74 ......:input-cost.1.25......:out
2afe0 70 75 74 2d 63 6f 73 74 20 31 30 0a 20 20 20 20 20 3a 63 75 74 6f 66 66 2d 64 61 74 65 20 22 32 put-cost.10......:cutoff-date."2
2b000 30 32 34 2d 30 39 22 29 0a 20 20 20 20 28 67 70 74 2d 35 2d 6d 69 6e 69 0a 20 20 20 20 20 3a 64 024-09").....(gpt-5-mini......:d
2b020 65 73 63 72 69 70 74 69 6f 6e 20 22 46 61 73 74 65 72 2c 20 6d 6f 72 65 20 63 6f 73 74 2d 65 66 escription."Faster,.more.cost-ef
2b040 66 69 63 69 65 6e 74 20 76 65 72 73 69 6f 6e 20 6f 66 20 47 50 54 2d 35 22 0a 20 20 20 20 20 3a ficient.version.of.GPT-5"......:
2b060 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 6d 65 64 69 61 20 74 6f 6f 6c 2d 75 73 65 20 6a 73 6f capabilities.(media.tool-use.jso
2b080 6e 20 75 72 6c 29 0a 20 20 20 20 20 3a 6d 69 6d 65 2d 74 79 70 65 73 20 28 22 69 6d 61 67 65 2f n.url)......:mime-types.("image/
2b0a0 6a 70 65 67 22 20 22 69 6d 61 67 65 2f 70 6e 67 22 20 22 69 6d 61 67 65 2f 67 69 66 22 20 22 69 jpeg"."image/png"."image/gif"."i
2b0c0 6d 61 67 65 2f 77 65 62 70 22 29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 mage/webp")......:context-window
2b0e0 20 34 30 30 0a 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 30 2e 32 35 0a 20 20 20 20 20 .400......:input-cost.0.25......
2b100 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 32 2e 30 0a 20 20 20 20 20 3a 63 75 74 6f 66 66 2d 64 61 :output-cost.2.0......:cutoff-da
2b120 74 65 20 22 32 30 32 34 2d 30 39 22 29 0a 20 20 20 20 28 6f 31 0a 20 20 20 20 20 3a 64 65 73 63 te."2024-09").....(o1......:desc
2b140 72 69 70 74 69 6f 6e 20 22 52 65 61 73 6f 6e 69 6e 67 20 6d 6f 64 65 6c 20 64 65 73 69 67 6e 65 ription."Reasoning.model.designe
2b160 64 20 74 6f 20 73 6f 6c 76 65 20 68 61 72 64 20 70 72 6f 62 6c 65 6d 73 20 61 63 72 6f 73 73 20 d.to.solve.hard.problems.across.
2b180 64 6f 6d 61 69 6e 73 22 0a 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 72 65 61 domains"......:capabilities.(rea
2b1a0 73 6f 6e 69 6e 67 20 74 6f 6f 6c 2d 75 73 65 29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 soning.tool-use)......:context-w
2b1c0 69 6e 64 6f 77 20 32 30 30 0a 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 31 35 0a 20 20 indow.200......:input-cost.15...
2b1e0 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 36 30 0a 20 20 20 20 20 3a 63 75 74 6f 66 66 2d ...:output-cost.60......:cutoff-
2b200 64 61 74 65 20 22 32 30 32 33 2d 31 30 22 0a 20 20 20 20 20 3a 72 65 71 75 65 73 74 2d 70 61 72 date."2023-10"......:request-par
2b220 61 6d 73 20 28 3a 73 74 72 65 61 6d 20 3a 6a 73 6f 6e 2d 66 61 6c 73 65 29 29 0a 20 20 20 20 28 ams.(:stream.:json-false)).....(
2b240 6f 33 0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 57 65 6c 6c 2d 72 6f 75 6e 64 o3......:description."Well-round
2b260 65 64 20 61 6e 64 20 70 6f 77 65 72 66 75 6c 20 6d 6f 64 65 6c 20 61 63 72 6f 73 73 20 64 6f 6d ed.and.powerful.model.across.dom
2b280 61 69 6e 73 22 0a 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 72 65 61 73 6f 6e ains"......:capabilities.(reason
2b2a0 69 6e 67 20 6d 65 64 69 61 20 74 6f 6f 6c 2d 75 73 65 20 6a 73 6f 6e 20 75 72 6c 29 0a 20 20 20 ing.media.tool-use.json.url)....
2b2c0 20 20 3a 6d 69 6d 65 2d 74 79 70 65 73 20 28 22 69 6d 61 67 65 2f 6a 70 65 67 22 20 22 69 6d 61 ..:mime-types.("image/jpeg"."ima
2b2e0 67 65 2f 70 6e 67 22 20 22 69 6d 61 67 65 2f 67 69 66 22 20 22 69 6d 61 67 65 2f 77 65 62 70 22 ge/png"."image/gif"."image/webp"
2b300 29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 32 30 30 0a 20 20 20 20 20 )......:context-window.200......
2b320 3a 69 6e 70 75 74 2d 63 6f 73 74 20 31 30 0a 20 20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 :input-cost.10......:output-cost
2b340 20 34 30 0a 20 20 20 20 20 3a 63 75 74 6f 66 66 2d 64 61 74 65 20 22 32 30 32 34 2d 30 35 22 29 .40......:cutoff-date."2024-05")
2b360 0a 20 20 20 20 28 6f 33 2d 6d 69 6e 69 0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 .....(o3-mini......:description.
2b380 22 48 69 67 68 20 69 6e 74 65 6c 6c 69 67 65 6e 63 65 20 61 74 20 74 68 65 20 73 61 6d 65 20 63 "High.intelligence.at.the.same.c
2b3a0 6f 73 74 20 61 6e 64 20 6c 61 74 65 6e 63 79 20 74 61 72 67 65 74 73 20 6f 66 20 6f 31 2d 6d 69 ost.and.latency.targets.of.o1-mi
2b3c0 6e 69 22 0a 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 72 65 61 73 6f 6e 69 6e ni"......:capabilities.(reasonin
2b3e0 67 20 74 6f 6f 6c 2d 75 73 65 29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 g.tool-use)......:context-window
2b400 20 32 30 30 0a 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 33 0a 20 20 20 20 20 3a 6f 75 .200......:input-cost.3......:ou
2b420 74 70 75 74 2d 63 6f 73 74 20 31 32 0a 20 20 20 20 20 3a 63 75 74 6f 66 66 2d 64 61 74 65 20 22 tput-cost.12......:cutoff-date."
2b440 32 30 32 33 2d 31 30 22 29 0a 20 20 20 20 28 6f 34 2d 6d 69 6e 69 0a 20 20 20 20 20 3a 64 65 73 2023-10").....(o4-mini......:des
2b460 63 72 69 70 74 69 6f 6e 20 22 46 61 73 74 2c 20 65 66 66 65 63 74 69 76 65 20 72 65 61 73 6f 6e cription."Fast,.effective.reason
2b480 69 6e 67 20 77 69 74 68 20 65 66 66 69 63 69 65 6e 74 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 69 ing.with.efficient.performance.i
2b4a0 6e 20 63 6f 64 69 6e 67 20 61 6e 64 20 76 69 73 75 61 6c 20 74 61 73 6b 73 22 0a 20 20 20 20 20 n.coding.and.visual.tasks"......
2b4c0 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 72 65 61 73 6f 6e 69 6e 67 20 6d 65 64 69 61 20 74 :capabilities.(reasoning.media.t
2b4e0 6f 6f 6c 2d 75 73 65 20 6a 73 6f 6e 20 75 72 6c 29 0a 20 20 20 20 20 3a 6d 69 6d 65 2d 74 79 70 ool-use.json.url)......:mime-typ
2b500 65 73 20 28 22 69 6d 61 67 65 2f 6a 70 65 67 22 20 22 69 6d 61 67 65 2f 70 6e 67 22 20 22 69 6d es.("image/jpeg"."image/png"."im
2b520 61 67 65 2f 67 69 66 22 20 22 69 6d 61 67 65 2f 77 65 62 70 22 29 0a 20 20 20 20 20 3a 63 6f 6e age/gif"."image/webp")......:con
2b540 74 65 78 74 2d 77 69 6e 64 6f 77 20 32 30 30 0a 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 text-window.200......:input-cost
2b560 20 31 2e 31 30 0a 20 20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 34 2e 34 30 0a 20 20 20 .1.10......:output-cost.4.40....
2b580 20 20 3a 63 75 74 6f 66 66 2d 64 61 74 65 20 22 32 30 32 34 2d 30 35 22 29 0a 20 20 20 20 28 63 ..:cutoff-date."2024-05").....(c
2b5a0 6c 61 75 64 65 2d 33 2e 35 2d 73 6f 6e 6e 65 74 0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 laude-3.5-sonnet......:descripti
2b5c0 6f 6e 20 22 48 69 67 68 65 73 74 20 6c 65 76 65 6c 20 6f 66 20 69 6e 74 65 6c 6c 69 67 65 6e 63 on."Highest.level.of.intelligenc
2b5e0 65 20 61 6e 64 20 63 61 70 61 62 69 6c 69 74 79 22 0a 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69 e.and.capability"......:capabili
2b600 74 69 65 73 20 28 6d 65 64 69 61 20 74 6f 6f 6c 2d 75 73 65 20 63 61 63 68 65 29 0a 20 20 20 20 ties.(media.tool-use.cache).....
2b620 20 3a 6d 69 6d 65 2d 74 79 70 65 73 20 28 22 69 6d 61 67 65 2f 6a 70 65 67 22 20 22 69 6d 61 67 .:mime-types.("image/jpeg"."imag
2b640 65 2f 70 6e 67 22 20 22 69 6d 61 67 65 2f 67 69 66 22 20 22 69 6d 61 67 65 2f 77 65 62 70 22 20 e/png"."image/gif"."image/webp".
2b660 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 70 64 66 22 29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 "application/pdf")......:context
2b680 2d 77 69 6e 64 6f 77 20 32 30 30 0a 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 33 0a 20 -window.200......:input-cost.3..
2b6a0 20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 31 35 0a 20 20 20 20 20 3a 63 75 74 6f 66 66 ....:output-cost.15......:cutoff
2b6c0 2d 64 61 74 65 20 22 32 30 32 34 2d 30 34 22 29 0a 20 20 20 20 28 63 6c 61 75 64 65 2d 33 2e 37 -date."2024-04").....(claude-3.7
2b6e0 2d 73 6f 6e 6e 65 74 0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 48 79 62 72 69 -sonnet......:description."Hybri
2b700 64 20 6d 6f 64 65 6c 20 63 61 70 61 62 6c 65 20 6f 66 20 73 74 61 6e 64 61 72 64 20 74 68 69 6e d.model.capable.of.standard.thin
2b720 6b 69 6e 67 20 61 6e 64 20 65 78 74 65 6e 64 65 64 20 74 68 69 6e 6b 69 6e 67 20 6d 6f 64 65 73 king.and.extended.thinking.modes
2b740 22 0a 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 6d 65 64 69 61 20 74 6f 6f 6c "......:capabilities.(media.tool
2b760 2d 75 73 65 20 63 61 63 68 65 29 0a 20 20 20 20 20 3a 6d 69 6d 65 2d 74 79 70 65 73 20 28 22 69 -use.cache)......:mime-types.("i
2b780 6d 61 67 65 2f 6a 70 65 67 22 20 22 69 6d 61 67 65 2f 70 6e 67 22 20 22 69 6d 61 67 65 2f 67 69 mage/jpeg"."image/png"."image/gi
2b7a0 66 22 20 22 69 6d 61 67 65 2f 77 65 62 70 22 20 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 70 64 66 f"."image/webp"."application/pdf
2b7c0 22 29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 32 30 30 0a 20 20 20 20 ")......:context-window.200.....
2b7e0 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 33 0a 20 20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 .:input-cost.3......:output-cost
2b800 20 31 35 0a 20 20 20 20 20 3a 63 75 74 6f 66 66 2d 64 61 74 65 20 22 32 30 32 35 2d 30 32 22 29 .15......:cutoff-date."2025-02")
2b820 0a 20 20 20 20 28 63 6c 61 75 64 65 2d 33 2e 37 2d 73 6f 6e 6e 65 74 2d 74 68 6f 75 67 68 74 0a .....(claude-3.7-sonnet-thought.
2b840 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 43 6c 61 75 64 65 20 33 2e 37 20 53 6f .....:description."Claude.3.7.So
2b860 6e 6e 65 74 20 54 68 69 6e 6b 69 6e 67 22 0a 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 nnet.Thinking"......:capabilitie
2b880 73 20 28 6d 65 64 69 61 20 63 61 63 68 65 29 0a 20 20 20 20 20 3a 6d 69 6d 65 2d 74 79 70 65 73 s.(media.cache)......:mime-types
2b8a0 20 28 22 69 6d 61 67 65 2f 6a 70 65 67 22 20 22 69 6d 61 67 65 2f 70 6e 67 22 20 22 69 6d 61 67 .("image/jpeg"."image/png"."imag
2b8c0 65 2f 67 69 66 22 20 22 69 6d 61 67 65 2f 77 65 62 70 22 20 22 61 70 70 6c 69 63 61 74 69 6f 6e e/gif"."image/webp"."application
2b8e0 2f 70 64 66 22 29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 32 30 30 0a /pdf")......:context-window.200.
2b900 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 33 0a 20 20 20 20 20 3a 6f 75 74 70 75 74 2d .....:input-cost.3......:output-
2b920 63 6f 73 74 20 31 35 0a 20 20 20 20 20 3a 63 75 74 6f 66 66 2d 64 61 74 65 20 22 32 30 32 35 2d cost.15......:cutoff-date."2025-
2b940 30 32 22 29 0a 20 20 20 20 28 63 6c 61 75 64 65 2d 73 6f 6e 6e 65 74 2d 34 0a 20 20 20 20 20 3a 02").....(claude-sonnet-4......:
2b960 64 65 73 63 72 69 70 74 69 6f 6e 20 22 48 69 67 68 2d 70 65 72 66 6f 72 6d 61 6e 63 65 20 6d 6f description."High-performance.mo
2b980 64 65 6c 20 77 69 74 68 20 65 78 63 65 70 74 69 6f 6e 61 6c 20 72 65 61 73 6f 6e 69 6e 67 20 61 del.with.exceptional.reasoning.a
2b9a0 6e 64 20 65 66 66 69 63 69 65 6e 63 79 22 0a 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 nd.efficiency"......:capabilitie
2b9c0 73 20 28 6d 65 64 69 61 20 74 6f 6f 6c 2d 75 73 65 20 63 61 63 68 65 29 0a 20 20 20 20 20 3a 6d s.(media.tool-use.cache)......:m
2b9e0 69 6d 65 2d 74 79 70 65 73 20 28 22 69 6d 61 67 65 2f 6a 70 65 67 22 20 22 69 6d 61 67 65 2f 70 ime-types.("image/jpeg"."image/p
2ba00 6e 67 22 20 22 69 6d 61 67 65 2f 67 69 66 22 20 22 69 6d 61 67 65 2f 77 65 62 70 22 20 22 61 70 ng"."image/gif"."image/webp"."ap
2ba20 70 6c 69 63 61 74 69 6f 6e 2f 70 64 66 22 29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 plication/pdf")......:context-wi
2ba40 6e 64 6f 77 20 32 30 30 0a 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 33 0a 20 20 20 20 ndow.200......:input-cost.3.....
2ba60 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 31 35 0a 20 20 20 20 20 3a 63 75 74 6f 66 66 2d 64 61 .:output-cost.15......:cutoff-da
2ba80 74 65 20 22 32 30 32 35 2d 30 33 22 29 0a 20 20 20 20 28 63 6c 61 75 64 65 2d 6f 70 75 73 2d 34 te."2025-03").....(claude-opus-4
2baa0 0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 4d 6f 73 74 20 63 61 70 61 62 6c 65 ......:description."Most.capable
2bac0 20 6d 6f 64 65 6c 20 66 6f 72 20 63 6f 6d 70 6c 65 78 20 72 65 61 73 6f 6e 69 6e 67 20 61 6e 64 .model.for.complex.reasoning.and
2bae0 20 61 64 76 61 6e 63 65 64 20 63 6f 64 69 6e 67 22 0a 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69 .advanced.coding"......:capabili
2bb00 74 69 65 73 20 28 6d 65 64 69 61 20 74 6f 6f 6c 2d 75 73 65 20 63 61 63 68 65 29 0a 20 20 20 20 ties.(media.tool-use.cache).....
2bb20 20 3a 6d 69 6d 65 2d 74 79 70 65 73 20 28 22 69 6d 61 67 65 2f 6a 70 65 67 22 20 22 69 6d 61 67 .:mime-types.("image/jpeg"."imag
2bb40 65 2f 70 6e 67 22 20 22 69 6d 61 67 65 2f 67 69 66 22 20 22 69 6d 61 67 65 2f 77 65 62 70 22 20 e/png"."image/gif"."image/webp".
2bb60 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 70 64 66 22 29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 "application/pdf")......:context
2bb80 2d 77 69 6e 64 6f 77 20 32 30 30 0a 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 31 35 0a -window.200......:input-cost.15.
2bba0 20 20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 37 35 0a 20 20 20 20 20 3a 63 75 74 6f 66 .....:output-cost.75......:cutof
2bbc0 66 2d 64 61 74 65 20 22 32 30 32 35 2d 30 33 22 29 0a 20 20 20 20 28 63 6c 61 75 64 65 2d 6f 70 f-date."2025-03").....(claude-op
2bbe0 75 73 2d 34 31 0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 4d 6f 73 74 20 63 61 us-41......:description."Most.ca
2bc00 70 61 62 6c 65 20 6d 6f 64 65 6c 20 66 6f 72 20 63 6f 6d 70 6c 65 78 20 72 65 61 73 6f 6e 69 6e pable.model.for.complex.reasonin
2bc20 67 20 61 6e 64 20 61 64 76 61 6e 63 65 64 20 63 6f 64 69 6e 67 22 0a 20 20 20 20 20 3a 63 61 70 g.and.advanced.coding"......:cap
2bc40 61 62 69 6c 69 74 69 65 73 20 28 6d 65 64 69 61 20 74 6f 6f 6c 2d 75 73 65 20 63 61 63 68 65 29 abilities.(media.tool-use.cache)
2bc60 0a 20 20 20 20 20 3a 6d 69 6d 65 2d 74 79 70 65 73 20 28 22 69 6d 61 67 65 2f 6a 70 65 67 22 20 ......:mime-types.("image/jpeg".
2bc80 22 69 6d 61 67 65 2f 70 6e 67 22 20 22 69 6d 61 67 65 2f 67 69 66 22 20 22 69 6d 61 67 65 2f 77 "image/png"."image/gif"."image/w
2bca0 65 62 70 22 20 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 70 64 66 22 29 0a 20 20 20 20 20 3a 63 6f ebp"."application/pdf")......:co
2bcc0 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 32 30 30 0a 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 ntext-window.200......:input-cos
2bce0 74 20 31 35 0a 20 20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 37 35 0a 20 20 20 20 20 3a t.15......:output-cost.75......:
2bd00 63 75 74 6f 66 66 2d 64 61 74 65 20 22 32 30 32 35 2d 30 33 22 29 0a 20 20 20 20 28 67 65 6d 69 cutoff-date."2025-03").....(gemi
2bd20 6e 69 2d 32 2e 30 2d 66 6c 61 73 68 2d 30 30 31 0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 ni-2.0-flash-001......:descripti
2bd40 6f 6e 20 22 4e 65 78 74 20 67 65 6e 2c 20 68 69 67 68 20 73 70 65 65 64 2c 20 6d 75 6c 74 69 6d on."Next.gen,.high.speed,.multim
2bd60 6f 64 61 6c 20 66 6f 72 20 61 20 64 69 76 65 72 73 65 20 76 61 72 69 65 74 79 20 6f 66 20 74 61 odal.for.a.diverse.variety.of.ta
2bd80 73 6b 73 22 0a 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 6a 73 6f 6e 20 6d 65 sks"......:capabilities.(json.me
2bda0 64 69 61 29 0a 20 20 20 20 20 3a 6d 69 6d 65 2d 74 79 70 65 73 20 28 22 69 6d 61 67 65 2f 70 6e dia)......:mime-types.("image/pn
2bdc0 67 22 20 22 69 6d 61 67 65 2f 6a 70 65 67 22 20 22 69 6d 61 67 65 2f 77 65 62 70 22 20 22 69 6d g"."image/jpeg"."image/webp"."im
2bde0 61 67 65 2f 68 65 69 63 22 20 22 69 6d 61 67 65 2f 68 65 69 66 22 0a 20 20 20 20 20 20 20 20 20 age/heic"."image/heif"..........
2be00 20 20 20 20 20 20 20 20 20 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 70 64 66 22 20 22 74 65 78 74 ........."application/pdf"."text
2be20 2f 70 6c 61 69 6e 22 20 22 74 65 78 74 2f 63 73 76 22 20 22 74 65 78 74 2f 68 74 6d 6c 22 29 0a /plain"."text/csv"."text/html").
2be40 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 31 30 30 30 0a 20 20 20 20 20 3a .....:context-window.1000......:
2be60 69 6e 70 75 74 2d 63 6f 73 74 20 30 2e 31 30 0a 20 20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 input-cost.0.10......:output-cos
2be80 74 20 30 2e 34 30 0a 20 20 20 20 20 3a 63 75 74 6f 66 66 2d 64 61 74 65 20 22 32 30 32 34 2d 30 t.0.40......:cutoff-date."2024-0
2bea0 38 22 29 0a 20 20 20 20 28 67 65 6d 69 6e 69 2d 32 2e 35 2d 70 72 6f 0a 20 20 20 20 20 3a 64 65 8").....(gemini-2.5-pro......:de
2bec0 73 63 72 69 70 74 69 6f 6e 20 22 4e 65 78 74 20 67 65 6e 2c 20 68 69 67 68 20 73 70 65 65 64 2c scription."Next.gen,.high.speed,
2bee0 20 6d 75 6c 74 69 6d 6f 64 61 6c 20 66 6f 72 20 61 20 64 69 76 65 72 73 65 20 76 61 72 69 65 74 .multimodal.for.a.diverse.variet
2bf00 79 20 6f 66 20 74 61 73 6b 73 22 0a 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 y.of.tasks"......:capabilities.(
2bf20 74 6f 6f 6c 2d 75 73 65 20 6a 73 6f 6e 20 6d 65 64 69 61 29 0a 20 20 20 20 20 3a 6d 69 6d 65 2d tool-use.json.media)......:mime-
2bf40 74 79 70 65 73 20 28 22 69 6d 61 67 65 2f 70 6e 67 22 20 22 69 6d 61 67 65 2f 6a 70 65 67 22 20 types.("image/png"."image/jpeg".
2bf60 22 69 6d 61 67 65 2f 77 65 62 70 22 20 22 69 6d 61 67 65 2f 68 65 69 63 22 20 22 69 6d 61 67 65 "image/webp"."image/heic"."image
2bf80 2f 68 65 69 66 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 61 70 70 6c 69 63 /heif"..................."applic
2bfa0 61 74 69 6f 6e 2f 70 64 66 22 20 22 74 65 78 74 2f 70 6c 61 69 6e 22 20 22 74 65 78 74 2f 63 73 ation/pdf"."text/plain"."text/cs
2bfc0 76 22 20 22 74 65 78 74 2f 68 74 6d 6c 22 29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 v"."text/html")......:context-wi
2bfe0 6e 64 6f 77 20 31 30 30 30 0a 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 30 2e 31 30 0a ndow.1000......:input-cost.0.10.
2c000 20 20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 30 2e 34 30 0a 20 20 20 20 20 3a 63 75 74 .....:output-cost.0.40......:cut
2c020 6f 66 66 2d 64 61 74 65 20 22 32 30 32 34 2d 30 38 22 29 29 29 0a 0a 28 63 6c 2d 64 65 66 73 74 off-date."2024-08")))..(cl-defst
2c040 72 75 63 74 20 28 67 70 74 65 6c 2d 2d 67 68 20 28 3a 69 6e 63 6c 75 64 65 20 67 70 74 65 6c 2d ruct.(gptel--gh.(:include.gptel-
2c060 6f 70 65 6e 61 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 openai).........................
2c080 20 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 .(:copier.nil)..................
2c0a0 20 20 20 20 20 20 20 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 ........(:constructor.gptel--mak
2c0c0 65 2d 67 68 29 29 0a 20 20 74 6f 6b 65 6e 20 67 69 74 68 75 62 2d 74 6f 6b 65 6e 20 73 65 73 73 e-gh))...token.github-token.sess
2c0e0 69 6f 6e 69 64 20 6d 61 63 68 69 6e 65 69 64 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 ionid.machineid)..(defcustom.gpt
2c100 65 6c 2d 67 68 2d 67 69 74 68 75 62 2d 74 6f 6b 65 6e 2d 66 69 6c 65 20 28 65 78 70 61 6e 64 2d el-gh-github-token-file.(expand-
2c120 66 69 6c 65 2d 6e 61 6d 65 20 22 2e 63 61 63 68 65 2f 63 6f 70 69 6c 6f 74 2d 63 68 61 74 2f 67 file-name.".cache/copilot-chat/g
2c140 69 74 68 75 62 2d 74 6f 6b 65 6e 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ithub-token"....................
2c160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
2c180 20 20 20 20 20 75 73 65 72 2d 65 6d 61 63 73 2d 64 69 72 65 63 74 6f 72 79 29 0a 20 20 22 46 69 .....user-emacs-directory)..."Fi
2c1a0 6c 65 20 77 68 65 72 65 20 74 68 65 20 47 69 74 48 75 62 20 74 6f 6b 65 6e 20 69 73 20 73 74 6f le.where.the.GitHub.token.is.sto
2c1c0 72 65 64 2e 22 0a 20 20 3a 74 79 70 65 20 27 73 74 72 69 6e 67 0a 20 20 3a 67 72 6f 75 70 20 27 red."...:type.'string...:group.'
2c1e0 67 70 74 65 6c 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 67 68 2d 74 6f 6b 65 gptel)..(defcustom.gptel-gh-toke
2c200 6e 2d 66 69 6c 65 20 28 65 78 70 61 6e 64 2d 66 69 6c 65 2d 6e 61 6d 65 20 22 2e 63 61 63 68 65 n-file.(expand-file-name.".cache
2c220 2f 63 6f 70 69 6c 6f 74 2d 63 68 61 74 2f 74 6f 6b 65 6e 22 0a 20 20 20 20 20 20 20 20 20 20 20 /copilot-chat/token"............
2c240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
2c260 20 20 20 20 20 20 75 73 65 72 2d 65 6d 61 63 73 2d 64 69 72 65 63 74 6f 72 79 29 0a 20 20 22 46 ......user-emacs-directory)..."F
2c280 69 6c 65 20 77 68 65 72 65 20 74 68 65 20 63 68 61 74 20 74 6f 6b 65 6e 20 69 73 20 63 61 63 68 ile.where.the.chat.token.is.cach
2c2a0 65 64 2e 22 0a 20 20 3a 74 79 70 65 20 27 73 74 72 69 6e 67 0a 20 20 3a 67 72 6f 75 70 20 27 67 ed."...:type.'string...:group.'g
2c2c0 70 74 65 6c 29 0a 0a 28 64 65 66 63 6f 6e 73 74 20 67 70 74 65 6c 2d 2d 67 68 2d 61 75 74 68 2d ptel)..(defconst.gptel--gh-auth-
2c2e0 63 6f 6d 6d 6f 6e 2d 68 65 61 64 65 72 73 0a 20 20 60 28 28 22 65 64 69 74 6f 72 2d 70 6c 75 67 common-headers...`(("editor-plug
2c300 69 6e 2d 76 65 72 73 69 6f 6e 22 20 2e 20 22 67 70 74 65 6c 2f 2a 22 29 0a 20 20 20 20 28 22 65 in-version"..."gptel/*").....("e
2c320 64 69 74 6f 72 2d 76 65 72 73 69 6f 6e 22 20 2e 20 2c 28 63 6f 6e 63 61 74 20 22 65 6d 61 63 73 ditor-version"...,(concat."emacs
2c340 2f 22 20 65 6d 61 63 73 2d 76 65 72 73 69 6f 6e 29 29 29 29 0a 0a 28 64 65 66 63 6f 6e 73 74 20 /".emacs-version))))..(defconst.
2c360 67 70 74 65 6c 2d 2d 67 68 2d 63 6c 69 65 6e 74 2d 69 64 20 22 49 76 31 2e 62 35 30 37 61 30 38 gptel--gh-client-id."Iv1.b507a08
2c380 63 38 37 65 63 66 65 39 38 22 29 0a 0a 3b 3b 20 68 74 74 70 73 3a 2f 2f 65 6e 2e 77 69 6b 69 70 c87ecfe98")..;;.https://en.wikip
2c3a0 65 64 69 61 2e 6f 72 67 2f 77 69 6b 69 2f 55 6e 69 76 65 72 73 61 6c 6c 79 5f 75 6e 69 71 75 65 edia.org/wiki/Universally_unique
2c3c0 5f 69 64 65 6e 74 69 66 69 65 72 23 56 65 72 73 69 6f 6e 5f 34 5f 28 72 61 6e 64 6f 6d 29 0a 28 _identifier#Version_4_(random).(
2c3e0 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 67 68 2d 75 75 69 64 20 28 29 0a 20 20 22 47 65 6e 65 72 defun.gptel--gh-uuid.()..."Gener
2c400 61 74 65 20 61 20 55 55 49 44 20 76 34 2d 31 2e 22 0a 20 20 28 66 6f 72 6d 61 74 20 22 25 30 34 ate.a.UUID.v4-1."...(format."%04
2c420 78 25 30 34 78 2d 25 30 34 78 2d 34 25 30 33 78 2d 38 25 30 33 78 2d 25 30 34 78 25 30 34 78 25 x%04x-%04x-4%03x-8%03x-%04x%04x%
2c440 30 34 78 22 0a 20 20 20 20 20 20 20 20 20 20 28 72 61 6e 64 6f 6d 20 23 78 31 30 30 30 30 29 20 04x"...........(random.#x10000).
2c460 28 72 61 6e 64 6f 6d 20 23 78 31 30 30 30 30 29 0a 20 20 20 20 20 20 20 20 20 20 28 72 61 6e 64 (random.#x10000)...........(rand
2c480 6f 6d 20 23 78 31 30 30 30 30 29 0a 20 20 20 20 20 20 20 20 20 20 28 72 61 6e 64 6f 6d 20 23 78 om.#x10000)...........(random.#x
2c4a0 31 30 30 30 29 0a 20 20 20 20 20 20 20 20 20 20 28 72 61 6e 64 6f 6d 20 23 78 31 30 30 30 29 0a 1000)...........(random.#x1000).
2c4c0 20 20 20 20 20 20 20 20 20 20 28 72 61 6e 64 6f 6d 20 23 78 31 30 30 30 30 29 20 28 72 61 6e 64 ..........(random.#x10000).(rand
2c4e0 6f 6d 20 23 78 31 30 30 30 30 29 20 28 72 61 6e 64 6f 6d 20 23 78 31 30 30 30 30 29 29 29 0a 0a om.#x10000).(random.#x10000)))..
2c500 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 67 68 2d 6d 61 63 68 69 6e 65 2d 69 64 20 28 29 0a 20 (defun.gptel--gh-machine-id.()..
2c520 20 22 47 65 6e 65 72 61 74 65 20 61 20 6d 61 63 68 69 6e 65 20 49 44 2e 22 0a 20 20 28 6c 65 74 ."Generate.a.machine.ID."...(let
2c540 20 28 28 68 65 78 2d 63 68 61 72 73 20 22 30 31 32 33 34 35 36 37 38 39 61 62 63 64 65 66 22 29 .((hex-chars."0123456789abcdef")
2c560 0a 20 20 20 20 20 20 20 20 28 6c 65 6e 67 74 68 20 36 35 29 0a 20 20 20 20 20 20 20 20 68 65 78 .........(length.65).........hex
2c580 29 0a 20 20 20 20 28 64 6f 74 69 6d 65 73 20 28 5f 20 6c 65 6e 67 74 68 29 0a 20 20 20 20 20 20 ).....(dotimes.(_.length).......
2c5a0 28 73 65 74 71 20 68 65 78 20 28 6e 63 6f 6e 63 20 68 65 78 20 28 6c 69 73 74 20 28 61 72 65 66 (setq.hex.(nconc.hex.(list.(aref
2c5c0 20 68 65 78 2d 63 68 61 72 73 20 28 72 61 6e 64 6f 6d 20 31 36 29 29 29 29 29 29 0a 20 20 20 20 .hex-chars.(random.16)))))).....
2c5e0 28 61 70 70 6c 79 20 23 27 73 74 72 69 6e 67 20 68 65 78 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 (apply.#'string.hex)))..(defun.g
2c600 70 74 65 6c 2d 2d 67 68 2d 72 65 73 74 6f 72 65 20 28 66 69 6c 65 29 0a 20 20 22 52 65 73 74 6f ptel--gh-restore.(file)..."Resto
2c620 72 65 20 73 61 76 65 64 20 6f 62 6a 65 63 74 20 66 72 6f 6d 20 46 49 4c 45 2e 22 0a 20 20 28 77 re.saved.object.from.FILE."...(w
2c640 68 65 6e 20 28 66 69 6c 65 2d 65 78 69 73 74 73 2d 70 20 66 69 6c 65 29 0a 20 20 20 20 3b 3b 20 hen.(file-exists-p.file).....;;.
2c660 57 65 20 73 65 74 20 74 68 65 20 63 6f 64 69 6e 67 20 73 79 73 74 65 6d 20 74 6f 20 60 75 74 66 We.set.the.coding.system.to.`utf
2c680 2d 38 2d 61 75 74 6f 2d 64 6f 73 27 20 77 68 65 6e 20 72 65 61 64 69 6e 67 20 73 6f 20 74 68 61 -8-auto-dos'.when.reading.so.tha
2c6a0 74 0a 20 20 20 20 3b 3b 20 66 69 6c 65 73 20 77 69 74 68 20 43 52 20 45 4f 4c 20 63 61 6e 20 73 t.....;;.files.with.CR.EOL.can.s
2c6c0 74 69 6c 6c 20 62 65 20 72 65 61 64 20 70 72 6f 70 65 72 6c 79 0a 20 20 20 20 28 6c 65 74 20 28 till.be.read.properly.....(let.(
2c6e0 28 63 6f 64 69 6e 67 2d 73 79 73 74 65 6d 2d 66 6f 72 2d 72 65 61 64 20 27 75 74 66 2d 38 2d 61 (coding-system-for-read.'utf-8-a
2c700 75 74 6f 2d 64 6f 73 29 29 0a 20 20 20 20 20 20 28 77 69 74 68 2d 74 65 6d 70 2d 62 75 66 66 65 uto-dos)).......(with-temp-buffe
2c720 72 0a 20 20 20 20 20 20 20 20 28 73 65 74 2d 62 75 66 66 65 72 2d 6d 75 6c 74 69 62 79 74 65 20 r.........(set-buffer-multibyte.
2c740 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 2d 66 69 6c 65 2d 63 6f 6e 74 65 6e nil).........(insert-file-conten
2c760 74 73 2d 6c 69 74 65 72 61 6c 6c 79 20 66 69 6c 65 29 0a 20 20 20 20 20 20 20 20 28 67 6f 74 6f ts-literally.file).........(goto
2c780 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 20 20 28 72 65 61 64 -char.(point-min)).........(read
2c7a0 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 .(current-buffer))))))..(defun.g
2c7c0 70 74 65 6c 2d 2d 67 68 2d 73 61 76 65 20 28 66 69 6c 65 20 6f 62 6a 29 0a 20 20 22 53 61 76 65 ptel--gh-save.(file.obj)..."Save
2c7e0 20 4f 42 4a 20 74 6f 20 46 49 4c 45 2e 22 0a 20 20 28 6c 65 74 20 28 28 70 72 69 6e 74 2d 6c 65 .OBJ.to.FILE."...(let.((print-le
2c800 6e 67 74 68 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 28 70 72 69 6e 74 2d 6c 65 76 65 6c 20 6e ngth.nil).........(print-level.n
2c820 69 6c 29 0a 20 20 20 20 20 20 20 20 28 63 6f 64 69 6e 67 2d 73 79 73 74 65 6d 2d 66 6f 72 2d 77 il).........(coding-system-for-w
2c840 72 69 74 65 20 27 75 74 66 2d 38 2d 75 6e 69 78 29 29 0a 20 20 20 20 28 6d 61 6b 65 2d 64 69 72 rite.'utf-8-unix)).....(make-dir
2c860 65 63 74 6f 72 79 20 28 66 69 6c 65 2d 6e 61 6d 65 2d 64 69 72 65 63 74 6f 72 79 20 66 69 6c 65 ectory.(file-name-directory.file
2c880 29 20 74 29 0a 20 20 20 20 28 77 72 69 74 65 2d 72 65 67 69 6f 6e 20 28 70 72 69 6e 31 2d 74 6f ).t).....(write-region.(prin1-to
2c8a0 2d 73 74 72 69 6e 67 20 6f 62 6a 29 20 6e 69 6c 20 66 69 6c 65 20 6e 69 6c 20 3a 73 69 6c 65 6e -string.obj).nil.file.nil.:silen
2c8c0 74 29 0a 20 20 20 20 6f 62 6a 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 67 68 2d 6c 6f t).....obj))..(defun.gptel-gh-lo
2c8e0 67 69 6e 20 28 29 0a 20 20 22 4c 6f 67 69 6e 20 74 6f 20 47 69 74 48 75 62 20 43 6f 70 69 6c 6f gin.()..."Login.to.GitHub.Copilo
2c900 74 20 41 50 49 2e 0a 0a 54 68 69 73 20 77 69 6c 6c 20 70 72 6f 6d 70 74 20 79 6f 75 20 74 6f 20 t.API...This.will.prompt.you.to.
2c920 61 75 74 68 6f 72 69 7a 65 20 69 6e 20 61 20 62 72 6f 77 73 65 72 20 61 6e 64 20 73 74 6f 72 65 authorize.in.a.browser.and.store
2c940 20 74 68 65 20 74 6f 6b 65 6e 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 28 .the.token."...(interactive)...(
2c960 70 63 61 73 65 2d 6c 65 74 20 28 28 28 6d 61 70 20 3a 64 65 76 69 63 65 5f 63 6f 64 65 20 3a 75 pcase-let.(((map.:device_code.:u
2c980 73 65 72 5f 63 6f 64 65 20 3a 76 65 72 69 66 69 63 61 74 69 6f 6e 5f 75 72 69 29 0a 20 20 20 20 ser_code.:verification_uri).....
2c9a0 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 75 72 6c 2d 72 65 74 72 69 65 76 65 0a ...........(gptel--url-retrieve.
2c9c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 68 74 74 70 73 3a 2f 2f 67 69 74 68 ..................."https://gith
2c9e0 75 62 2e 63 6f 6d 2f 6c 6f 67 69 6e 2f 64 65 76 69 63 65 2f 63 6f 64 65 22 0a 20 20 20 20 20 20 ub.com/login/device/code".......
2ca00 20 20 20 20 20 20 20 20 20 20 20 3a 6d 65 74 68 6f 64 20 27 70 6f 73 74 0a 20 20 20 20 20 20 20 ...........:method.'post........
2ca20 20 20 20 20 20 20 20 20 20 20 3a 68 65 61 64 65 72 73 20 67 70 74 65 6c 2d 2d 67 68 2d 61 75 74 ..........:headers.gptel--gh-aut
2ca40 68 2d 63 6f 6d 6d 6f 6e 2d 68 65 61 64 65 72 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 h-common-headers................
2ca60 20 20 3a 64 61 74 61 20 60 28 20 3a 63 6c 69 65 6e 74 5f 69 64 20 2c 67 70 74 65 6c 2d 2d 67 68 ..:data.`(.:client_id.,gptel--gh
2ca80 2d 63 6c 69 65 6e 74 2d 69 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -client-id......................
2caa0 20 20 20 20 20 3a 73 63 6f 70 65 20 22 72 65 61 64 3a 75 73 65 72 22 29 29 29 29 0a 20 20 20 20 .....:scope."read:user")))).....
2cac0 28 67 75 69 2d 73 65 74 2d 73 65 6c 65 63 74 69 6f 6e 20 27 43 4c 49 50 42 4f 41 52 44 20 75 73 (gui-set-selection.'CLIPBOARD.us
2cae0 65 72 5f 63 6f 64 65 29 0a 20 20 20 20 28 72 65 61 64 2d 66 72 6f 6d 2d 6d 69 6e 69 62 75 66 66 er_code).....(read-from-minibuff
2cb00 65 72 0a 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 59 6f 75 72 20 6f 6e 65 2d 74 69 6d 65 20 63 er......(format."Your.one-time.c
2cb20 6f 64 65 20 25 73 20 69 73 20 63 6f 70 69 65 64 2e 20 5c 0a 50 72 65 73 73 20 45 4e 54 45 52 20 ode.%s.is.copied..\.Press.ENTER.
2cb40 74 6f 20 6f 70 65 6e 20 47 69 74 48 75 62 20 69 6e 20 79 6f 75 72 20 62 72 6f 77 73 65 72 2e 20 to.open.GitHub.in.your.browser..
2cb60 5c 0a 49 66 20 79 6f 75 72 20 62 72 6f 77 73 65 72 20 64 6f 65 73 20 6e 6f 74 20 6f 70 65 6e 20 \.If.your.browser.does.not.open.
2cb80 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2c 20 62 72 6f 77 73 65 20 74 6f 20 25 73 2e 22 0a 20 20 automatically,.browse.to.%s."...
2cba0 20 20 20 20 20 20 20 20 20 20 20 75 73 65 72 5f 63 6f 64 65 20 76 65 72 69 66 69 63 61 74 69 6f ...........user_code.verificatio
2cbc0 6e 5f 75 72 69 29 29 0a 20 20 20 20 28 62 72 6f 77 73 65 2d 75 72 6c 20 76 65 72 69 66 69 63 61 n_uri)).....(browse-url.verifica
2cbe0 74 69 6f 6e 5f 75 72 69 29 0a 20 20 20 20 28 72 65 61 64 2d 66 72 6f 6d 2d 6d 69 6e 69 62 75 66 tion_uri).....(read-from-minibuf
2cc00 66 65 72 20 22 50 72 65 73 73 20 45 4e 54 45 52 20 61 66 74 65 72 20 61 75 74 68 6f 72 69 7a 69 fer."Press.ENTER.after.authorizi
2cc20 6e 67 2e 22 29 0a 20 20 20 20 28 74 68 72 65 61 64 2d 6c 61 73 74 0a 20 20 20 20 20 20 28 70 6c ng.").....(thread-last.......(pl
2cc40 69 73 74 2d 67 65 74 0a 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 75 72 6c 2d 72 65 74 72 69 ist-get........(gptel--url-retri
2cc60 65 76 65 0a 20 20 20 20 20 20 20 20 20 20 20 22 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 eve............"https://github.c
2cc80 6f 6d 2f 6c 6f 67 69 6e 2f 6f 61 75 74 68 2f 61 63 63 65 73 73 5f 74 6f 6b 65 6e 22 0a 20 20 20 om/login/oauth/access_token"....
2cca0 20 20 20 20 20 20 3a 6d 65 74 68 6f 64 20 27 70 6f 73 74 0a 20 20 20 20 20 20 20 20 20 3a 68 65 ......:method.'post..........:he
2ccc0 61 64 65 72 73 20 67 70 74 65 6c 2d 2d 67 68 2d 61 75 74 68 2d 63 6f 6d 6d 6f 6e 2d 68 65 61 64 aders.gptel--gh-auth-common-head
2cce0 65 72 73 0a 20 20 20 20 20 20 20 20 20 3a 64 61 74 61 20 60 28 20 3a 63 6c 69 65 6e 74 5f 69 64 ers..........:data.`(.:client_id
2cd00 20 2c 67 70 74 65 6c 2d 2d 67 68 2d 63 6c 69 65 6e 74 2d 69 64 0a 20 20 20 20 20 20 20 20 20 20 .,gptel--gh-client-id...........
2cd20 20 20 20 20 20 20 20 20 3a 64 65 76 69 63 65 5f 63 6f 64 65 20 2c 64 65 76 69 63 65 5f 63 6f 64 ........:device_code.,device_cod
2cd40 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 67 72 61 6e 74 5f 74 79 70 65 20 e...................:grant_type.
2cd60 22 75 72 6e 3a 69 65 74 66 3a 70 61 72 61 6d 73 3a 6f 61 75 74 68 3a 67 72 61 6e 74 2d 74 79 70 "urn:ietf:params:oauth:grant-typ
2cd80 65 3a 64 65 76 69 63 65 5f 63 6f 64 65 22 29 29 0a 20 20 20 20 20 20 20 3a 61 63 63 65 73 73 5f e:device_code"))........:access_
2cda0 74 6f 6b 65 6e 29 0a 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 67 68 2d 73 61 76 65 20 67 70 74 token).......(gptel--gh-save.gpt
2cdc0 65 6c 2d 67 68 2d 67 69 74 68 75 62 2d 74 6f 6b 65 6e 2d 66 69 6c 65 29 0a 20 20 20 20 20 20 28 el-gh-github-token-file).......(
2cde0 73 65 74 66 20 28 67 70 74 65 6c 2d 2d 67 68 2d 67 69 74 68 75 62 2d 74 6f 6b 65 6e 20 67 70 74 setf.(gptel--gh-github-token.gpt
2ce00 65 6c 2d 62 61 63 6b 65 6e 64 29 29 29 29 0a 20 20 28 69 66 20 28 61 6e 64 20 28 67 70 74 65 6c el-backend))))...(if.(and.(gptel
2ce20 2d 2d 67 68 2d 67 69 74 68 75 62 2d 74 6f 6b 65 6e 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 --gh-github-token.gptel-backend)
2ce40 0a 20 20 20 20 20 20 20 20 20 20 20 28 6e 6f 74 20 28 73 74 72 69 6e 67 2d 65 6d 70 74 79 2d 70 ............(not.(string-empty-p
2ce60 0a 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 67 68 2d 67 69 74 ..................(gptel--gh-git
2ce80 68 75 62 2d 74 6f 6b 65 6e 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 29 29 29 0a 20 20 20 20 hub-token.gptel-backend)))).....
2cea0 20 20 28 6d 65 73 73 61 67 65 20 22 53 75 63 63 65 73 73 66 75 6c 6c 79 20 6c 6f 67 67 65 64 20 ..(message."Successfully.logged.
2cec0 69 6e 20 74 6f 20 47 69 74 48 75 62 20 43 6f 70 69 6c 6f 74 22 29 0a 20 20 20 20 28 75 73 65 72 in.to.GitHub.Copilot").....(user
2cee0 2d 65 72 72 6f 72 20 22 45 72 72 6f 72 3a 20 59 6f 75 20 6d 69 67 68 74 20 6e 6f 74 20 68 61 76 -error."Error:.You.might.not.hav
2cf00 65 20 61 63 63 65 73 73 20 74 6f 20 47 69 74 48 75 62 20 43 6f 70 69 6c 6f 74 20 43 68 61 74 21 e.access.to.GitHub.Copilot.Chat!
2cf20 22 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 67 68 2d 72 65 6e 65 77 2d 74 6f 6b ")))..(defun.gptel--gh-renew-tok
2cf40 65 6e 20 28 29 0a 20 20 22 52 65 6e 65 77 20 73 65 73 73 69 6f 6e 20 74 6f 6b 65 6e 2e 22 0a 20 en.()..."Renew.session.token."..
2cf60 20 28 6c 65 74 20 28 28 74 6f 6b 65 6e 0a 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 75 .(let.((token..........(gptel--u
2cf80 72 6c 2d 72 65 74 72 69 65 76 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 22 68 74 74 70 73 3a rl-retrieve.............."https:
2cfa0 2f 2f 61 70 69 2e 67 69 74 68 75 62 2e 63 6f 6d 2f 63 6f 70 69 6c 6f 74 5f 69 6e 74 65 72 6e 61 //api.github.com/copilot_interna
2cfc0 6c 2f 76 32 2f 74 6f 6b 65 6e 22 0a 20 20 20 20 20 20 20 20 20 20 20 3a 6d 65 74 68 6f 64 20 27 l/v2/token"............:method.'
2cfe0 67 65 74 0a 20 20 20 20 20 20 20 20 20 20 20 3a 68 65 61 64 65 72 73 20 60 28 28 22 61 75 74 68 get............:headers.`(("auth
2d000 6f 72 69 7a 61 74 69 6f 6e 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 orization"......................
2d020 20 20 2e 20 2c 28 66 6f 72 6d 61 74 20 22 74 6f 6b 65 6e 20 25 73 22 20 28 67 70 74 65 6c 2d 2d ....,(format."token.%s".(gptel--
2d040 67 68 2d 67 69 74 68 75 62 2d 74 6f 6b 65 6e 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 29 29 gh-github-token.gptel-backend)))
2d060 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2c 40 67 70 74 65 6c 2d 2d .......................,@gptel--
2d080 67 68 2d 61 75 74 68 2d 63 6f 6d 6d 6f 6e 2d 68 65 61 64 65 72 73 29 29 29 29 0a 20 20 20 20 28 gh-auth-common-headers)))).....(
2d0a0 69 66 20 28 6e 6f 74 20 28 70 6c 69 73 74 2d 67 65 74 20 74 6f 6b 65 6e 20 3a 74 6f 6b 65 6e 29 if.(not.(plist-get.token.:token)
2d0c0 29 0a 20 20 20 20 20 20 20 20 28 70 72 6f 67 6e 0a 20 20 20 20 20 20 20 20 20 20 28 73 65 74 66 ).........(progn...........(setf
2d0e0 20 28 67 70 74 65 6c 2d 2d 67 68 2d 67 69 74 68 75 62 2d 74 6f 6b 65 6e 20 67 70 74 65 6c 2d 62 .(gptel--gh-github-token.gptel-b
2d100 61 63 6b 65 6e 64 29 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 28 75 73 65 72 2d 65 72 72 ackend).nil)...........(user-err
2d120 6f 72 20 22 45 72 72 6f 72 3a 20 59 6f 75 20 6d 69 67 68 74 20 6e 6f 74 20 68 61 76 65 20 61 63 or."Error:.You.might.not.have.ac
2d140 63 65 73 73 20 74 6f 20 47 69 74 48 75 62 20 43 6f 70 69 6c 6f 74 20 43 68 61 74 21 22 29 29 0a cess.to.GitHub.Copilot.Chat!")).
2d160 20 20 20 20 20 20 28 74 68 72 65 61 64 2d 6c 61 73 74 0a 20 20 20 20 20 20 20 20 28 67 70 74 65 ......(thread-last.........(gpte
2d180 6c 2d 2d 67 68 2d 73 61 76 65 20 67 70 74 65 6c 2d 67 68 2d 74 6f 6b 65 6e 2d 66 69 6c 65 20 74 l--gh-save.gptel-gh-token-file.t
2d1a0 6f 6b 65 6e 29 0a 20 20 20 20 20 20 20 20 28 73 65 74 66 20 28 67 70 74 65 6c 2d 2d 67 68 2d 74 oken).........(setf.(gptel--gh-t
2d1c0 6f 6b 65 6e 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e oken.gptel-backend))))))..(defun
2d1e0 20 67 70 74 65 6c 2d 2d 67 68 2d 61 75 74 68 20 28 29 0a 20 20 22 41 75 74 68 65 6e 74 69 63 61 .gptel--gh-auth.()..."Authentica
2d200 74 65 20 77 69 74 68 20 47 69 74 48 75 62 20 43 6f 70 69 6c 6f 74 20 41 50 49 2e 0a 0a 57 65 20 te.with.GitHub.Copilot.API...We.
2d220 66 69 72 73 74 20 6e 65 65 64 20 67 69 74 68 75 62 20 61 75 74 68 6f 72 69 7a 61 74 69 6f 6e 20 first.need.github.authorization.
2d240 28 67 69 74 68 75 62 20 74 6f 6b 65 6e 29 2e 0a 54 68 65 6e 20 77 65 20 6e 65 65 64 20 61 20 73 (github.token)..Then.we.need.a.s
2d260 65 73 73 69 6f 6e 20 74 6f 6b 65 6e 2e 22 0a 20 20 28 75 6e 6c 65 73 73 20 28 67 70 74 65 6c 2d ession.token."...(unless.(gptel-
2d280 2d 67 68 2d 67 69 74 68 75 62 2d 74 6f 6b 65 6e 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 0a -gh-github-token.gptel-backend).
2d2a0 20 20 20 20 28 6c 65 74 20 28 28 74 6f 6b 65 6e 20 28 67 70 74 65 6c 2d 2d 67 68 2d 72 65 73 74 ....(let.((token.(gptel--gh-rest
2d2c0 6f 72 65 20 67 70 74 65 6c 2d 67 68 2d 67 69 74 68 75 62 2d 74 6f 6b 65 6e 2d 66 69 6c 65 29 29 ore.gptel-gh-github-token-file))
2d2e0 29 0a 20 20 20 20 20 20 28 69 66 20 74 6f 6b 65 6e 0a 20 20 20 20 20 20 20 20 20 20 28 73 65 74 ).......(if.token...........(set
2d300 66 20 28 67 70 74 65 6c 2d 2d 67 68 2d 67 69 74 68 75 62 2d 74 6f 6b 65 6e 20 67 70 74 65 6c 2d f.(gptel--gh-github-token.gptel-
2d320 62 61 63 6b 65 6e 64 29 20 74 6f 6b 65 6e 29 0a 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 67 backend).token).........(gptel-g
2d340 68 2d 6c 6f 67 69 6e 29 29 29 29 0a 0a 20 20 28 77 68 65 6e 20 28 6e 75 6c 6c 20 28 67 70 74 65 h-login))))....(when.(null.(gpte
2d360 6c 2d 2d 67 68 2d 74 6f 6b 65 6e 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 29 0a 20 20 20 20 l--gh-token.gptel-backend)).....
2d380 3b 3b 20 74 72 79 20 74 6f 20 6c 6f 61 64 20 74 6f 6b 65 6e 20 66 72 6f 6d 20 60 67 70 74 65 6c ;;.try.to.load.token.from.`gptel
2d3a0 2d 67 68 2d 74 6f 6b 65 6e 2d 66 69 6c 65 27 0a 20 20 20 20 28 73 65 74 66 20 28 67 70 74 65 6c -gh-token-file'.....(setf.(gptel
2d3c0 2d 2d 67 68 2d 74 6f 6b 65 6e 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 0a 20 20 20 20 20 20 --gh-token.gptel-backend).......
2d3e0 20 20 20 20 28 67 70 74 65 6c 2d 2d 67 68 2d 72 65 73 74 6f 72 65 20 67 70 74 65 6c 2d 67 68 2d ....(gptel--gh-restore.gptel-gh-
2d400 74 6f 6b 65 6e 2d 66 69 6c 65 29 29 29 0a 0a 20 20 28 70 63 61 73 65 2d 6c 65 74 20 28 28 28 6d token-file)))....(pcase-let.(((m
2d420 61 70 20 3a 74 6f 6b 65 6e 20 3a 65 78 70 69 72 65 73 5f 61 74 29 0a 20 20 20 20 20 20 20 20 20 ap.:token.:expires_at)..........
2d440 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 67 68 2d 74 6f 6b 65 6e 20 67 70 74 65 6c 2d 62 61 63 ......(gptel--gh-token.gptel-bac
2d460 6b 65 6e 64 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 28 6f 72 20 28 6e 75 6c 6c 20 74 6f 6b 65 kend))).....(when.(or.(null.toke
2d480 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 65 78 70 69 72 65 73 5f 61 74 n)...............(and.expires_at
2d4a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 3e 20 28 72 6f 75 6e 64 20 28 66 ....................(>.(round.(f
2d4c0 6c 6f 61 74 2d 74 69 6d 65 20 28 63 75 72 72 65 6e 74 2d 74 69 6d 65 29 29 29 0a 20 20 20 20 20 loat-time.(current-time)))......
2d4e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 78 70 69 72 65 73 5f 61 74 29 29 29 0a 20 .................expires_at)))..
2d500 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 67 68 2d 72 65 6e 65 77 2d 74 6f 6b 65 6e 29 29 29 29 0a .....(gptel--gh-renew-token)))).
2d520 0a 3b 3b 3b 23 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 .;;;###autoload.(cl-defun.gptel-
2d540 6d 61 6b 65 2d 67 68 2d 63 6f 70 69 6c 6f 74 0a 20 20 20 20 28 6e 61 6d 65 20 26 6b 65 79 20 63 make-gh-copilot.....(name.&key.c
2d560 75 72 6c 2d 61 72 67 73 20 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 0a 20 20 20 20 20 20 20 20 url-args.request-params.........
2d580 20 20 28 68 65 61 64 65 72 20 28 6c 61 6d 62 64 61 20 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 ..(header.(lambda.()............
2d5a0 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 67 68 2d 61 75 74 68 29 0a 20 20 20 20 20 20 .........(gptel--gh-auth).......
2d5c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 60 28 28 22 6f 70 65 6e 61 69 2d 69 6e 74 65 6e 74 22 ..............`(("openai-intent"
2d5e0 20 2e 20 22 63 6f 6e 76 65 72 73 61 74 69 6f 6e 2d 70 61 6e 65 6c 22 29 0a 20 20 20 20 20 20 20 ..."conversation-panel")........
2d600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 22 61 75 74 68 6f 72 69 7a 61 74 69 6f 6e 22 20 ...............("authorization".
2d620 2e 20 2c 28 63 6f 6e 63 61 74 20 22 42 65 61 72 65 72 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 ..,(concat."Bearer."............
2d640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
2d660 28 70 6c 69 73 74 2d 67 65 74 20 28 67 70 74 65 6c 2d 2d 67 68 2d 74 6f 6b 65 6e 20 67 70 74 65 (plist-get.(gptel--gh-token.gpte
2d680 6c 2d 62 61 63 6b 65 6e 64 29 20 3a 74 6f 6b 65 6e 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 l-backend).:token)))............
2d6a0 20 20 20 20 20 20 20 20 20 20 20 28 22 78 2d 72 65 71 75 65 73 74 2d 69 64 22 20 2e 20 2c 28 67 ...........("x-request-id"...,(g
2d6c0 70 74 65 6c 2d 2d 67 68 2d 75 75 69 64 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ptel--gh-uuid)).................
2d6e0 20 20 20 20 20 20 28 22 76 73 63 6f 64 65 2d 73 65 73 73 69 6f 6e 69 64 22 20 2e 20 2c 28 6f 72 ......("vscode-sessionid"...,(or
2d700 20 28 67 70 74 65 6c 2d 2d 67 68 2d 73 65 73 73 69 6f 6e 69 64 20 67 70 74 65 6c 2d 62 61 63 6b .(gptel--gh-sessionid.gptel-back
2d720 65 6e 64 29 20 22 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 end)."")).......................
2d740 28 22 76 73 63 6f 64 65 2d 6d 61 63 68 69 6e 65 69 64 22 20 2e 20 2c 28 6f 72 20 28 67 70 74 65 ("vscode-machineid"...,(or.(gpte
2d760 6c 2d 2d 67 68 2d 6d 61 63 68 69 6e 65 69 64 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 20 22 l--gh-machineid.gptel-backend)."
2d780 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 2c 40 28 77 68 65 ")).......................,@(whe
2d7a0 6e 20 28 61 6e 64 20 67 70 74 65 6c 2d 74 72 61 63 6b 2d 6d 65 64 69 61 0a 20 20 20 20 20 20 20 n.(and.gptel-track-media........
2d7c0 20 20 20 20 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
2d7e0 65 6c 2d 2d 6d 6f 64 65 6c 2d 63 61 70 61 62 6c 65 2d 70 20 27 6d 65 64 69 61 29 29 0a 20 20 20 el--model-capable-p.'media))....
2d800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 60 28 28 22 63 6f 70 69 6c .......................`(("copil
2d820 6f 74 2d 76 69 73 69 6f 6e 2d 72 65 71 75 65 73 74 22 20 2e 20 22 74 72 75 65 22 29 29 29 0a 20 ot-vision-request"..."true")))..
2d840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 22 63 6f 70 69 6c 6f 74 2d 69 .....................("copilot-i
2d860 6e 74 65 67 72 61 74 69 6f 6e 2d 69 64 22 20 2e 20 22 76 73 63 6f 64 65 2d 63 68 61 74 22 29 29 ntegration-id"..."vscode-chat"))
2d880 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 68 6f 73 74 20 22 61 70 69 2e 67 69 74 68 75 62 63 6f ))...........(host."api.githubco
2d8a0 70 69 6c 6f 74 2e 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 pilot.com")...........(protocol.
2d8c0 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 69 6e 74 20 22 2f 63 "https")...........(endpoint."/c
2d8e0 68 61 74 2f 63 6f 6d 70 6c 65 74 69 6f 6e 73 22 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 74 72 hat/completions")...........(str
2d900 65 61 6d 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 65 6c 73 20 67 70 74 65 6c 2d 2d eam.t)...........(models.gptel--
2d920 67 68 2d 6d 6f 64 65 6c 73 29 29 0a 20 20 22 52 65 67 69 73 74 65 72 20 61 20 47 69 74 68 75 62 gh-models))..."Register.a.Github
2d940 20 43 6f 70 69 6c 6f 74 20 63 68 61 74 20 62 61 63 6b 65 6e 64 20 66 6f 72 20 67 70 74 65 6c 20 .Copilot.chat.backend.for.gptel.
2d960 77 69 74 68 20 4e 41 4d 45 2e 0a 0a 4b 65 79 77 6f 72 64 20 61 72 67 75 6d 65 6e 74 73 3a 0a 0a with.NAME...Keyword.arguments:..
2d980 43 55 52 4c 2d 41 52 47 53 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 61 20 6c 69 73 74 20 6f CURL-ARGS.(optional).is.a.list.o
2d9a0 66 20 61 64 64 69 74 69 6f 6e 61 6c 20 43 75 72 6c 20 61 72 67 75 6d 65 6e 74 73 2e 0a 0a 48 4f f.additional.Curl.arguments...HO
2d9c0 53 54 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 74 68 65 20 41 50 49 20 68 6f 73 74 2c 20 74 ST.(optional).is.the.API.host,.t
2d9e0 79 70 69 63 61 6c 6c 79 20 5c 22 61 70 69 2e 67 69 74 68 75 62 63 6f 70 69 6c 6f 74 2e 63 6f 6d ypically.\"api.githubcopilot.com
2da00 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
2da20 6c 65 20 6d 6f 64 65 6c 20 6e 61 6d 65 73 2c 20 61 73 20 73 79 6d 62 6f 6c 73 2e 0a 41 64 64 69 le.model.names,.as.symbols..Addi
2da40 74 69 6f 6e 61 6c 6c 79 2c 20 79 6f 75 20 63 61 6e 20 73 70 65 63 69 66 79 20 73 75 70 70 6f 72 tionally,.you.can.specify.suppor
2da60 74 65 64 20 4c 4c 4d 20 63 61 70 61 62 69 6c 69 74 69 65 73 20 6c 69 6b 65 0a 76 69 73 69 6f 6e ted.LLM.capabilities.like.vision
2da80 20 6f 72 20 74 6f 6f 6c 2d 75 73 65 20 62 79 20 61 70 70 65 6e 64 69 6e 67 20 61 20 70 6c 69 73 .or.tool-use.by.appending.a.plis
2daa0 74 20 74 6f 20 74 68 65 20 6d 6f 64 65 6c 20 77 69 74 68 20 6d 6f 72 65 0a 69 6e 66 6f 72 6d 61 t.to.the.model.with.more.informa
2dac0 74 69 6f 6e 2c 20 69 6e 20 74 68 65 20 66 6f 72 6d 0a 0a 20 28 6d 6f 64 65 6c 2d 6e 61 6d 65 20 tion,.in.the.form...(model-name.
2dae0 2e 20 70 6c 69 73 74 29 0a 0a 46 6f 72 20 61 20 6c 69 73 74 20 6f 66 20 63 75 72 72 65 6e 74 6c ..plist)..For.a.list.of.currentl
2db00 79 20 72 65 63 6f 67 6e 69 7a 65 64 20 70 6c 69 73 74 20 6b 65 79 73 2c 20 73 65 65 0a 60 67 70 y.recognized.plist.keys,.see.`gp
2db20 74 65 6c 2d 2d 6f 70 65 6e 61 69 2d 6d 6f 64 65 6c 73 27 2e 20 20 41 6e 20 65 78 61 6d 70 6c 65 tel--openai-models'...An.example
2db40 20 6f 66 20 61 20 6d 6f 64 65 6c 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e 0a 69 6e 63 6c 75 64 .of.a.model.specification.includ
2db60 69 6e 67 20 62 6f 74 68 20 6b 69 6e 64 73 20 6f 66 20 73 70 65 63 73 3a 0a 0a 3a 6d 6f 64 65 6c ing.both.kinds.of.specs:..:model
2db80 73 0a 5c 5c 3d 27 28 67 70 74 2d 33 2e 35 2d 74 75 72 62 6f 20 20 20 20 20 20 20 20 20 20 20 20 s.\\='(gpt-3.5-turbo............
2dba0 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 53 69 6d 70 6c 65 20 73 70 65 63 73 0a 20 20 67 70 74 .............;Simple.specs...gpt
2dbc0 2d 34 2d 74 75 72 62 6f 0a 20 20 28 67 70 74 2d 34 6f 2d 6d 69 6e 69 20 20 20 20 20 20 20 20 20 -4-turbo...(gpt-4o-mini.........
2dbe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 46 75 6c 6c 20 73 70 65 63 0a 20 20 20 3a .................;Full.spec....:
2dc00 64 65 73 63 72 69 70 74 69 6f 6e 0a 20 20 20 5c 22 41 66 66 6f 72 64 61 62 6c 65 20 61 6e 64 20 description....\"Affordable.and.
2dc20 69 6e 74 65 6c 6c 69 67 65 6e 74 20 73 6d 61 6c 6c 20 6d 6f 64 65 6c 20 66 6f 72 20 6c 69 67 68 intelligent.small.model.for.ligh
2dc40 74 77 65 69 67 68 74 20 74 61 73 6b 73 5c 22 0a 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 tweight.tasks\"....:capabilities
2dc60 20 28 6d 65 64 69 61 20 74 6f 6f 6c 20 6a 73 6f 6e 20 75 72 6c 29 0a 20 20 20 3a 6d 69 6d 65 2d .(media.tool.json.url)....:mime-
2dc80 74 79 70 65 73 0a 20 20 20 28 5c 22 69 6d 61 67 65 2f 6a 70 65 67 5c 22 20 5c 22 69 6d 61 67 65 types....(\"image/jpeg\".\"image
2dca0 2f 70 6e 67 5c 22 20 5c 22 69 6d 61 67 65 2f 67 69 66 5c 22 20 5c 22 69 6d 61 67 65 2f 77 65 62 /png\".\"image/gif\".\"image/web
2dcc0 70 5c 22 29 29 29 0a 0a 44 65 66 61 75 6c 74 73 20 74 6f 20 61 20 6c 69 73 74 20 6f 66 20 6d 6f p\")))..Defaults.to.a.list.of.mo
2dce0 64 65 6c 73 20 73 75 70 70 6f 72 74 65 64 20 62 79 20 47 69 74 48 75 62 20 43 6f 70 69 6c 6f 74 dels.supported.by.GitHub.Copilot
2dd00 2e 0a 0a 53 54 52 45 41 4d 20 69 73 20 61 20 62 6f 6f 6c 65 61 6e 20 74 6f 20 74 6f 67 67 6c 65 ...STREAM.is.a.boolean.to.toggle
2dd20 20 73 74 72 65 61 6d 69 6e 67 20 72 65 73 70 6f 6e 73 65 73 2c 20 64 65 66 61 75 6c 74 73 20 74 .streaming.responses,.defaults.t
2dd40 6f 0a 66 61 6c 73 65 2e 0a 0a 50 52 4f 54 4f 43 4f 4c 20 28 6f 70 74 69 6f 6e 61 6c 29 20 73 70 o.false...PROTOCOL.(optional).sp
2dd60 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
2dd80 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.
2dda0 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
2ddc0 2c 20 64 65 66 61 75 6c 74 73 20 74 6f 0a 5c 22 2f 63 68 61 74 2f 63 6f 6d 70 6c 65 74 69 6f 6e ,.defaults.to.\"/chat/completion
2dde0 73 5c 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 s\"...HEADER.(optional).is.for.a
2de00 64 64 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 dditional.headers.to.send.with.e
2de20 61 63 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 ach.request...It.should.be.an.al
2de40 69 73 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 72 6e 73 20 61 ist.or.a.function.that.returns.a
2de60 6e 0a 61 6c 69 73 74 2c 20 6c 69 6b 65 3a 0a 20 28 28 5c 22 43 6f 6e 74 65 6e 74 2d 54 79 70 65 n.alist,.like:..((\"Content-Type
2de80 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 29 0a 0a 44 65 66 \"...\"application/json\"))..Def
2dea0 61 75 6c 74 73 20 74 6f 20 68 65 61 64 65 72 73 20 72 65 71 75 69 72 65 64 20 62 79 20 47 69 74 aults.to.headers.required.by.Git
2dec0 48 75 62 20 43 6f 70 69 6c 6f 74 2e 0a 0a 52 45 51 55 45 53 54 2d 50 41 52 41 4d 53 20 28 6f 70 Hub.Copilot...REQUEST-PARAMS.(op
2dee0 74 69 6f 6e 61 6c 29 20 69 73 20 61 20 70 6c 69 73 74 20 6f 66 20 61 64 64 69 74 69 6f 6e 61 6c tional).is.a.plist.of.additional
2df00 20 48 54 54 50 20 72 65 71 75 65 73 74 0a 70 61 72 61 6d 65 74 65 72 73 20 28 61 73 20 70 6c 69 .HTTP.request.parameters.(as.pli
2df20 73 74 20 6b 65 79 73 29 20 61 6e 64 20 76 61 6c 75 65 73 20 73 75 70 70 6f 72 74 65 64 20 62 79 st.keys).and.values.supported.by
2df40 20 74 68 65 20 41 50 49 2e 20 20 55 73 65 0a 74 68 65 73 65 20 74 6f 20 73 65 74 20 70 61 72 61 .the.API...Use.these.to.set.para
2df60 6d 65 74 65 72 73 20 74 68 61 74 20 67 70 74 65 6c 20 64 6f 65 73 20 6e 6f 74 20 70 72 6f 76 69 meters.that.gptel.does.not.provi
2df80 64 65 20 75 73 65 72 20 6f 70 74 69 6f 6e 73 0a 66 6f 72 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 de.user.options.for."...(declare
2dfa0 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 6b 65 6e 64 20 28 67 .(indent.1))...(let.((backend.(g
2dfc0 70 74 65 6c 2d 2d 6d 61 6b 65 2d 67 68 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ptel--make-gh...................
2dfe0 3a 6e 61 6d 65 20 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 68 6f :name.name...................:ho
2e000 73 74 20 68 6f 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 68 65 61 64 65 st.host...................:heade
2e020 72 20 68 65 61 64 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6d 6f 64 65 r.header...................:mode
2e040 6c 73 20 28 67 70 74 65 6c 2d 2d 70 72 6f 63 65 73 73 2d 6d 6f 64 65 6c 73 20 6d 6f 64 65 6c 73 ls.(gptel--process-models.models
2e060 29 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 )...................:protocol.pr
2e080 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 64 70 6f 69 otocol...................:endpoi
2e0a0 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 20 20 3a 73 nt.endpoint...................:s
2e0c0 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 20 20 20 3a tream.stream...................:
2e0e0 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 20 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 0a 20 20 request-params.request-params...
2e100 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 2d ................:curl-args.curl-
2e120 61 72 67 73 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 63 6f 6e args...................:url.(con
2e140 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 74 cat.protocol."://".host.endpoint
2e160 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6d 61 63 68 69 6e 65 69 64 20 28 )...................:machineid.(
2e180 67 70 74 65 6c 2d 2d 67 68 2d 6d 61 63 68 69 6e 65 2d 69 64 29 29 29 29 0a 20 20 20 20 28 73 65 gptel--gh-machine-id)))).....(se
2e1a0 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 2d tf.(alist-get.name.gptel--known-
2e1c0 62 61 63 6b 65 6e 64 73 20 6e 69 6c 20 6e 69 6c 20 23 27 65 71 75 61 6c 29 20 62 61 63 6b 65 6e backends.nil.nil.#'equal).backen
2e1e0 64 29 0a 20 20 20 20 62 61 63 6b 65 6e 64 29 29 0a 0a 28 70 72 6f 76 69 64 65 20 27 67 70 74 65 d).....backend))..(provide.'gpte
2e200 6c 2d 67 68 29 0a 3b 3b 3b 20 67 70 74 65 6c 2d 67 68 2e 65 6c 20 65 6e 64 73 20 68 65 72 65 0a l-gh).;;;.gptel-gh.el.ends.here.
2e220 0a 3b 3b 20 4c 6f 63 61 6c 20 56 61 72 69 61 62 6c 65 73 3a 0a 3b 3b 20 62 79 74 65 2d 63 6f 6d .;;.Local.Variables:.;;.byte-com
2e240 70 69 6c 65 2d 77 61 72 6e 69 6e 67 73 3a 20 28 6e 6f 74 20 64 6f 63 73 74 72 69 6e 67 73 29 0a pile-warnings:.(not.docstrings).
2e260 3b 3b 20 45 6e 64 3a 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 ;;.End:.........................
2e280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e2a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e2c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e2e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e3a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e3c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e3e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e400 67 70 74 65 6c 2d 30 2e 39 2e 39 2f 67 70 74 65 6c 2d 69 6e 74 65 67 72 61 74 69 6f 6e 73 2e 65 gptel-0.9.9/gptel-integrations.e
2e420 6c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 l...............................
2e440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e460 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
2e480 30 30 33 31 32 35 35 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 35 34 35 32 00 20 30 00 00 00 0031255.00000000000.015452..0...
2e4a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e4c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e4e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e500 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...................
2e520 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...................
2e540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e5a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e5c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e5e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e600 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 49 6e 74 65 67 ;;;.gptel-transient.el.---.Integ
2e620 72 61 74 69 6f 6e 73 20 66 6f 72 20 67 70 74 65 6c 20 20 2d 2a 2d 20 6c 65 78 69 63 61 6c 2d 62 rations.for.gptel..-*-.lexical-b
2e640 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 29 inding:.t;.-*-..;;.Copyright.(C)
2e660 20 32 30 32 35 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 .2025..Karthik.Chikmagalur..;;.A
2e680 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 74 uthor:.Karthik.Chikmagalur.<kart
2e6a0 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 65 79 hikchikmagalur@gmail.com>.;;.Key
2e6c0 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 63 65 words:.convenience..;;.SPDX-Lice
2e6e0 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 65 72 nse-Identifier:.GPL-3.0-or-later
2e700 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 77 61 ..;;.This.program.is.free.softwa
2e720 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 64 2f re;.you.can.redistribute.it.and/
2e740 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 73 20 or.modify.;;.it.under.the.terms.
2e760 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 73 of.the.GNU.General.Public.Licens
2e780 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 53 6f e.as.published.by.;;.the.Free.So
2e7a0 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 69 6f ftware.Foundation,.either.versio
2e7c0 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 79 6f n.3.of.the.License,.or.;;.(at.yo
2e7e0 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 0a 3b ur.option).any.later.version...;
2e800 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 69 6e ;.This.program.is.distributed.in
2e820 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 75 6c .the.hope.that.it.will.be.useful
2e840 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 20 77 ,.;;.but.WITHOUT.ANY.WARRANTY;.w
2e860 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 74 79 ithout.even.the.implied.warranty
2e880 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 45 53 .of.;;.MERCHANTABILITY.or.FITNES
2e8a0 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 65 65 S.FOR.A.PARTICULAR.PURPOSE...See
2e8c0 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 65 6e .the.;;.GNU.General.Public.Licen
2e8e0 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 68 6f se.for.more.details...;;.You.sho
2e900 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 65 20 uld.have.received.a.copy.of.the.
2e920 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 61 6c GNU.General.Public.License.;;.al
2e940 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 2c 20 ong.with.this.program...If.not,.
2e960 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 73 65 see.<https://www.gnu.org/license
2e980 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 49 6e 74 65 67 72 s/>...;;;.Commentary:..;;.Integr
2e9a0 61 74 69 6f 6e 73 20 77 69 74 68 20 72 65 6c 61 74 65 64 20 70 61 63 6b 61 67 65 73 20 66 6f 72 ations.with.related.packages.for
2e9c0 20 67 70 74 65 6c 2e 20 20 54 6f 20 75 73 65 20 74 68 65 73 65 2c 20 72 75 6e 0a 3b 3b 0a 3b 3b .gptel...To.use.these,.run.;;.;;
2e9e0 20 28 72 65 71 75 69 72 65 20 27 67 70 74 65 6c 2d 69 6e 74 65 67 72 61 74 69 6f 6e 73 29 0a 3b .(require.'gptel-integrations).;
2ea00 3b 0a 3b 3b 20 46 6f 72 20 4d 43 50 20 69 6e 74 65 67 72 61 74 69 6f 6e 3a 0a 3b 3b 20 2d 20 52 ;.;;.For.MCP.integration:.;;.-.R
2ea20 75 6e 20 4d 2d 78 20 60 67 70 74 65 6c 2d 6d 63 70 2d 63 6f 6e 6e 65 63 74 27 20 61 6e 64 20 4d un.M-x.`gptel-mcp-connect'.and.M
2ea40 2d 78 20 60 67 70 74 65 6c 2d 6d 63 70 2d 64 69 73 63 6f 6e 6e 65 63 74 27 2c 20 4f 52 0a 3b 3b -x.`gptel-mcp-disconnect',.OR.;;
2ea60 20 2d 20 55 73 65 20 67 70 74 65 6c 27 73 20 74 6f 6f 6c 73 20 6d 65 6e 75 2c 20 4d 2d 78 20 60 .-.Use.gptel's.tools.menu,.M-x.`
2ea80 67 70 74 65 6c 2d 74 6f 6f 6c 73 27 2c 20 4f 52 0a 3b 3b 20 2d 20 41 63 63 65 73 73 20 74 6f 6f gptel-tools',.OR.;;.-.Access.too
2eaa0 6c 73 20 66 72 6f 6d 20 60 67 70 74 65 6c 2d 6d 65 6e 75 27 0a 0a 3b 3b 3b 20 43 6f 64 65 3a 0a ls.from.`gptel-menu'..;;;.Code:.
2eac0 28 72 65 71 75 69 72 65 20 27 67 70 74 65 6c 29 0a 28 72 65 71 75 69 72 65 20 27 63 6c 2d 6c 69 (require.'gptel).(require.'cl-li
2eae0 62 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 69 72 65 20 27 b).(eval-when-compile.(require.'
2eb00 74 72 61 6e 73 69 65 6e 74 29 29 0a 0a 3b 3b 3b 3b 20 4d 43 50 20 69 6e 74 65 67 72 61 74 69 6f transient))..;;;;.MCP.integratio
2eb20 6e 20 2d 20 72 65 71 75 69 72 65 73 20 74 68 65 20 6d 63 70 20 70 61 63 6b 61 67 65 0a 28 64 65 n.-.requires.the.mcp.package.(de
2eb40 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 6d 63 70 2d 68 75 62 2d 67 65 74 2d 61 6c 6c 2d 74 clare-function.mcp-hub-get-all-t
2eb60 6f 6f 6c 20 22 6d 63 70 2d 68 75 62 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e ool."mcp-hub").(declare-function
2eb80 20 6d 63 70 2d 68 75 62 2d 67 65 74 2d 73 65 72 76 65 72 73 20 22 6d 63 70 2d 68 75 62 22 29 0a .mcp-hub-get-servers."mcp-hub").
2eba0 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 6d 63 70 2d 68 75 62 2d 73 74 61 72 74 2d (declare-function.mcp-hub-start-
2ebc0 61 6c 6c 2d 73 65 72 76 65 72 20 22 6d 63 70 2d 68 75 62 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 all-server."mcp-hub").(declare-f
2ebe0 75 6e 63 74 69 6f 6e 20 6d 63 70 2d 73 74 6f 70 2d 73 65 72 76 65 72 20 22 6d 63 70 22 29 0a 28 unction.mcp-stop-server."mcp").(
2ec00 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 6d 63 70 2d 68 75 62 20 22 6d 63 70 2d 68 75 declare-function.mcp-hub."mcp-hu
2ec20 62 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 6d 63 70 2d 2d 73 74 61 74 75 b").(declare-function.mcp--statu
2ec40 73 20 22 6d 63 70 2d 68 75 62 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 6d s."mcp-hub").(declare-function.m
2ec60 63 70 2d 2d 74 6f 6f 6c 73 20 22 6d 63 70 2d 68 75 62 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 cp--tools."mcp-hub").(declare-fu
2ec80 6e 63 74 69 6f 6e 20 6d 63 70 2d 6d 61 6b 65 2d 74 65 78 74 2d 74 6f 6f 6c 20 22 6d 63 70 2d 68 nction.mcp-make-text-tool."mcp-h
2eca0 75 62 22 29 0a 28 64 65 66 76 61 72 20 6d 63 70 2d 68 75 62 2d 73 65 72 76 65 72 73 29 0a 28 64 ub").(defvar.mcp-hub-servers).(d
2ecc0 65 66 76 61 72 20 6d 63 70 2d 73 65 72 76 65 72 2d 63 6f 6e 6e 65 63 74 69 6f 6e 73 29 0a 0a 28 efvar.mcp-server-connections)..(
2ece0 64 65 66 75 6e 20 67 70 74 65 6c 2d 6d 63 70 2d 63 6f 6e 6e 65 63 74 20 28 26 6f 70 74 69 6f 6e defun.gptel-mcp-connect.(&option
2ed00 61 6c 20 73 65 72 76 65 72 73 20 73 65 72 76 65 72 2d 63 61 6c 6c 62 61 63 6b 20 69 6e 74 65 72 al.servers.server-callback.inter
2ed20 61 63 74 69 76 65 29 0a 20 20 22 41 64 64 20 67 70 74 65 6c 20 74 6f 6f 6c 73 20 66 72 6f 6d 20 active)..."Add.gptel.tools.from.
2ed40 4d 43 50 20 73 65 72 76 65 72 73 20 75 73 69 6e 67 20 74 68 65 20 6d 63 70 20 70 61 63 6b 61 67 MCP.servers.using.the.mcp.packag
2ed60 65 2e 0a 0a 4d 43 50 20 73 65 72 76 65 72 73 20 61 72 65 20 73 74 61 72 74 65 64 20 69 66 20 72 e...MCP.servers.are.started.if.r
2ed80 65 71 75 69 72 65 64 2e 20 20 53 45 52 56 45 52 53 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 73 equired...SERVERS.is.a.list.of.s
2eda0 65 72 76 65 72 0a 6e 61 6d 65 73 20 28 73 74 72 69 6e 67 73 29 20 74 6f 20 63 6f 6e 6e 65 63 74 erver.names.(strings).to.connect
2edc0 20 74 6f 2e 20 20 49 66 20 6e 69 6c 2c 20 61 6c 6c 20 6b 6e 6f 77 6e 20 73 65 72 76 65 72 73 20 .to...If.nil,.all.known.servers.
2ede0 61 72 65 0a 63 6f 6e 73 69 64 65 72 65 64 2e 0a 0a 49 66 20 49 4e 54 45 52 41 43 54 49 56 45 20 are.considered...If.INTERACTIVE.
2ee00 69 73 20 6e 6f 6e 2d 6e 69 6c 20 28 6f 72 20 63 61 6c 6c 65 64 20 69 6e 74 65 72 61 63 74 69 76 is.non-nil.(or.called.interactiv
2ee20 65 6c 79 29 2c 20 67 75 69 64 65 20 74 68 65 20 75 73 65 72 0a 74 68 72 6f 75 67 68 20 73 65 74 ely),.guide.the.user.through.set
2ee40 74 69 6e 67 20 75 70 20 6d 63 70 2c 20 61 6e 64 20 71 75 65 72 79 20 66 6f 72 20 73 65 72 76 65 ting.up.mcp,.and.query.for.serve
2ee60 72 73 20 74 6f 20 72 65 74 72 69 65 76 65 20 74 6f 6f 6c 73 20 66 72 6f 6d 2e 0a 0a 43 61 6c 6c rs.to.retrieve.tools.from...Call
2ee80 20 53 45 52 56 45 52 2d 43 41 4c 4c 42 41 43 4b 20 61 66 74 65 72 20 73 74 61 72 74 69 6e 67 20 .SERVER-CALLBACK.after.starting.
2eea0 4d 43 50 20 73 65 72 76 65 72 73 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 20 28 6c 69 MCP.servers."...(interactive.(li
2eec0 73 74 20 6e 69 6c 20 6e 69 6c 20 74 29 29 0a 20 20 28 69 66 20 28 6c 6f 63 61 74 65 2d 6c 69 62 st.nil.nil.t))...(if.(locate-lib
2eee0 72 61 72 79 20 22 6d 63 70 2d 68 75 62 22 29 0a 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 72 rary."mcp-hub").......(unless.(r
2ef00 65 71 75 69 72 65 20 27 6d 63 70 2d 68 75 62 20 6e 69 6c 20 74 29 0a 20 20 20 20 20 20 20 20 28 equire.'mcp-hub.nil.t).........(
2ef20 75 73 65 72 2d 65 72 72 6f 72 20 22 43 6f 75 6c 64 20 6e 6f 74 20 6c 6f 61 64 20 60 6d 63 70 2d user-error."Could.not.load.`mcp-
2ef40 68 75 62 27 21 20 20 50 6c 65 61 73 65 20 69 6e 73 74 61 6c 6c 5c 0a 20 6f 72 20 63 6f 6e 66 69 hub'!..Please.install\..or.confi
2ef60 67 75 72 65 20 74 68 65 20 6d 63 70 20 70 61 63 6b 61 67 65 22 29 29 0a 20 20 20 20 28 75 73 65 gure.the.mcp.package")).....(use
2ef80 72 2d 65 72 72 6f 72 20 22 43 6f 75 6c 64 20 6e 6f 74 20 66 69 6e 64 20 6d 63 70 21 20 20 50 6c r-error."Could.not.find.mcp!..Pl
2efa0 65 61 73 65 20 69 6e 73 74 61 6c 6c 20 6f 72 20 63 6f 6e 66 69 67 75 72 65 20 74 68 65 20 6d 63 ease.install.or.configure.the.mc
2efc0 70 20 70 61 63 6b 61 67 65 22 29 29 0a 20 20 28 69 66 20 28 6e 75 6c 6c 20 6d 63 70 2d 68 75 62 p.package"))...(if.(null.mcp-hub
2efe0 2d 73 65 72 76 65 72 73 29 0a 20 20 20 20 20 20 28 75 73 65 72 2d 65 72 72 6f 72 20 22 4e 6f 20 -servers).......(user-error."No.
2f000 4d 43 50 20 73 65 72 76 65 72 73 20 61 76 61 69 6c 61 62 6c 65 21 20 20 50 6c 65 61 73 65 20 63 MCP.servers.available!..Please.c
2f020 6f 6e 66 69 67 75 72 65 20 60 6d 63 70 2d 68 75 62 2d 73 65 72 76 65 72 73 27 22 29 0a 20 20 20 onfigure.`mcp-hub-servers'")....
2f040 20 28 73 65 74 71 20 73 65 72 76 65 72 73 0a 20 20 20 20 20 20 20 20 20 20 28 69 66 20 73 65 72 .(setq.servers...........(if.ser
2f060 76 65 72 73 0a 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 6d 62 vers...............(mapcar.(lamb
2f080 64 61 20 28 73 29 20 28 61 73 73 6f 63 20 73 20 6d 63 70 2d 68 75 62 2d 73 65 72 76 65 72 73 29 da.(s).(assoc.s.mcp-hub-servers)
2f0a0 29 20 73 65 72 76 65 72 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d 63 70 2d 68 75 62 2d 73 ).servers).............mcp-hub-s
2f0c0 65 72 76 65 72 73 29 29 0a 20 20 20 20 28 6c 65 74 20 28 28 75 6e 72 65 67 69 73 74 65 72 65 64 ervers)).....(let.((unregistered
2f0e0 2d 73 65 72 76 65 72 73 20 3b 41 76 61 69 6c 61 62 6c 65 20 73 65 72 76 65 72 73 20 6d 69 6e 75 -servers.;Available.servers.minu
2f100 73 20 73 65 72 76 65 72 73 20 61 6c 72 65 61 64 79 20 72 65 67 69 73 74 65 72 65 64 20 77 69 74 s.servers.already.registered.wit
2f120 68 20 67 70 74 65 6c 0a 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 h.gptel............(cl-loop.for.
2f140 73 65 72 76 65 72 20 69 6e 20 73 65 72 76 65 72 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 server.in.servers...............
2f160 20 20 20 20 20 20 77 69 74 68 20 72 65 67 69 73 74 65 72 65 64 2d 6e 61 6d 65 73 20 3d 0a 20 20 ......with.registered-names.=...
2f180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 28 ..................(cl-loop.for.(
2f1a0 63 61 74 20 2e 20 5f 74 6f 6f 6c 73 29 20 69 6e 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 74 6f cat..._tools).in.gptel--known-to
2f1c0 6f 6c 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 ols.............................
2f1e0 20 69 66 20 28 73 74 72 69 6e 67 2d 70 72 65 66 69 78 2d 70 20 22 6d 63 70 2d 22 20 63 61 74 29 .if.(string-prefix-p."mcp-".cat)
2f200 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 63 6f ..............................co
2f220 6c 6c 65 63 74 20 28 73 75 62 73 74 72 69 6e 67 20 63 61 74 20 34 29 29 0a 20 20 20 20 20 20 20 llect.(substring.cat.4))........
2f240 20 20 20 20 20 20 20 20 20 20 20 20 20 75 6e 6c 65 73 73 20 28 6d 65 6d 62 65 72 20 28 63 61 72 .............unless.(member.(car
2f260 20 73 65 72 76 65 72 29 20 72 65 67 69 73 74 65 72 65 64 2d 6e 61 6d 65 73 29 0a 20 20 20 20 20 .server).registered-names)......
2f280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6c 6c 65 63 74 20 73 65 72 76 65 72 29 29 29 ...............collect.server)))
2f2a0 0a 20 20 20 20 20 20 28 69 66 20 75 6e 72 65 67 69 73 74 65 72 65 64 2d 73 65 72 76 65 72 73 0a .......(if.unregistered-servers.
2f2c0 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 73 65 72 76 65 72 73 0a 20 20 20 20 20 20 ..........(let*.((servers.......
2f2e0 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 69 6e 74 65 72 61 63 74 69 76 65 0a 20 20 20 20 ............(if.interactive.....
2f300 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 70 69 63 6b 73 0a 20 ..................(let.((picks..
2f320 20 20 20 20 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 6d ............................(com
2f340 70 6c 65 74 69 6e 67 2d 72 65 61 64 2d 6d 75 6c 74 69 70 6c 65 0a 20 20 20 20 20 20 20 20 20 20 pleting-read-multiple...........
2f360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 41 64 64 20 74 6f 6f 6c 73 20 66 ...................."Add.tools.f
2f380 72 6f 6d 20 4d 43 50 20 73 65 72 76 65 72 73 20 28 73 65 70 61 72 61 74 65 20 77 69 74 68 20 5c rom.MCP.servers.(separate.with.\
2f3a0 22 2c 5c 22 29 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 ",\"):."........................
2f3c0 20 20 20 20 20 20 20 28 63 6f 6e 73 20 27 28 22 41 4c 4c 22 29 20 75 6e 72 65 67 69 73 74 65 72 .......(cons.'("ALL").unregister
2f3e0 65 64 2d 73 65 72 76 65 72 73 29 20 6e 69 6c 20 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 ed-servers).nil.t)))............
2f400 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 6d 65 6d 62 65 72 20 22 41 4c 4c 22 20 70 .............(if.(member."ALL".p
2f420 69 63 6b 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 icks)...........................
2f440 20 20 75 6e 72 65 67 69 73 74 65 72 65 64 2d 73 65 72 76 65 72 73 0a 20 20 20 20 20 20 20 20 20 ..unregistered-servers..........
2f460 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 6d 62 64 61 .................(mapcar.(lambda
2f480 20 28 73 29 20 28 61 73 73 6f 63 20 73 20 6d 63 70 2d 68 75 62 2d 73 65 72 76 65 72 73 29 29 20 .(s).(assoc.s.mcp-hub-servers)).
2f4a0 70 69 63 6b 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 6e 72 picks))).....................unr
2f4c0 65 67 69 73 74 65 72 65 64 2d 73 65 72 76 65 72 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 egistered-servers)).............
2f4e0 20 20 20 20 20 28 73 65 72 76 65 72 2d 61 63 74 69 76 65 2d 70 0a 20 20 20 20 20 20 20 20 20 20 .....(server-active-p...........
2f500 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 73 65 72 76 65 72 29 0a 20 20 20 20 20 20 20 ........(lambda.(server)........
2f520 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 73 65 72 76 65 72 .............(when-let*.((server
2f540 20 28 67 65 74 68 61 73 68 20 28 63 61 72 20 73 65 72 76 65 72 29 20 6d 63 70 2d 73 65 72 76 65 .(gethash.(car.server).mcp-serve
2f560 72 2d 63 6f 6e 6e 65 63 74 69 6f 6e 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 r-connections)))................
2f580 20 20 20 20 20 20 20 28 65 71 75 61 6c 20 28 6d 63 70 2d 2d 73 74 61 74 75 73 20 73 65 72 76 65 .......(equal.(mcp--status.serve
2f5a0 72 29 20 27 63 6f 6e 6e 65 63 74 65 64 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 r).'connected))))...............
2f5c0 20 20 20 28 69 6e 61 63 74 69 76 65 2d 73 65 72 76 65 72 73 20 28 63 6c 2d 72 65 6d 6f 76 65 2d ...(inactive-servers.(cl-remove-
2f5e0 69 66 20 73 65 72 76 65 72 2d 61 63 74 69 76 65 2d 70 20 73 65 72 76 65 72 73 29 29 0a 20 20 20 if.server-active-p.servers))....
2f600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 64 64 2d 61 6c 6c 2d 74 6f 6f 6c 73 0a 20 20 20 ..............(add-all-tools....
2f620 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 6f 70 74 69 6f 6e 61 ...............(lambda.(&optiona
2f640 6c 20 73 65 72 76 65 72 2d 6e 61 6d 65 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 l.server-names).................
2f660 20 20 20 20 22 52 65 67 69 73 74 65 72 20 61 6e 64 20 61 64 64 20 74 6f 6f 6c 73 20 66 72 6f 6d ...."Register.and.add.tools.from
2f680 20 73 65 72 76 65 72 73 2e 20 20 52 65 70 6f 72 74 20 66 61 69 6c 75 72 65 73 2e 22 0a 20 20 20 .servers...Report.failures."....
2f6a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 74 6f 6f 6c 73 20 28 67 .................(let.((tools.(g
2f6c0 70 74 65 6c 2d 6d 63 70 2d 2d 67 65 74 2d 74 6f 6f 6c 73 20 73 65 72 76 65 72 2d 6e 61 6d 65 73 ptel-mcp--get-tools.server-names
2f6e0 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 28 6e 6f ))...........................(no
2f700 77 2d 61 63 74 69 76 65 20 28 63 6c 2d 72 65 6d 6f 76 65 2d 69 66 2d 6e 6f 74 20 73 65 72 76 65 w-active.(cl-remove-if-not.serve
2f720 72 2d 61 63 74 69 76 65 2d 70 20 6d 63 70 2d 68 75 62 2d 73 65 72 76 65 72 73 29 29 29 0a 20 20 r-active-p.mcp-hub-servers)))...
2f740 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 20 28 6c 61 6d 62 64 ....................(mapc.(lambd
2f760 61 20 28 74 6f 6f 6c 29 20 28 61 70 70 6c 79 20 23 27 67 70 74 65 6c 2d 6d 61 6b 65 2d 74 6f 6f a.(tool).(apply.#'gptel-make-too
2f780 6c 20 74 6f 6f 6c 29 29 20 74 6f 6f 6c 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 l.tool)).tools).................
2f7a0 20 20 20 20 20 20 28 67 70 74 65 6c 2d 6d 63 70 2d 2d 61 63 74 69 76 61 74 65 2d 74 6f 6f 6c 73 ......(gptel-mcp--activate-tools
2f7c0 20 74 6f 6f 6c 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 28 69 .tools).......................(i
2f7e0 66 2d 6c 65 74 2a 20 28 28 66 61 69 6c 65 64 20 28 63 6c 2d 73 65 74 2d 64 69 66 66 65 72 65 6e f-let*.((failed.(cl-set-differen
2f800 63 65 20 69 6e 61 63 74 69 76 65 2d 73 65 72 76 65 72 73 20 6e 6f 77 2d 61 63 74 69 76 65 0a 20 ce.inactive-servers.now-active..
2f820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
2f840 20 20 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 65 73 74 20 ..........................:test.
2f860 23 27 65 71 75 61 6c 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 #'equal)))......................
2f880 20 20 20 20 20 28 70 72 6f 67 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .....(progn.....................
2f8a0 20 20 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 49 6e 61 63 74 69 76 65 2d 62 65 66 6f 72 ........(message."Inactive-befor
2f8c0 65 3a 20 25 53 2c 20 4e 6f 77 2d 41 63 74 69 76 65 3a 20 25 53 22 20 69 6e 61 63 74 69 76 65 2d e:.%S,.Now-Active:.%S".inactive-
2f8e0 73 65 72 76 65 72 73 20 6e 6f 77 2d 61 63 74 69 76 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 servers.now-active).............
2f900 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 28 73 75 62 73 74 69 ................(message.(substi
2f920 74 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 tute-command-keys...............
2f940 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 25 64 2f 25 64 20 73 ........................"%d/%d.s
2f960 65 72 76 65 72 25 73 20 66 61 69 6c 65 64 20 74 6f 20 73 74 61 72 74 3a 20 25 73 2e 20 20 52 75 erver%s.failed.to.start:.%s...Ru
2f980 6e 20 5c 5c 5b 6d 63 70 2d 68 75 62 5d 20 74 6f 20 69 6e 76 65 73 74 69 67 61 74 65 2e 22 29 0a n.\\[mcp-hub].to.investigate.").
2f9a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
2f9c0 20 20 20 20 20 28 6c 65 6e 67 74 68 20 66 61 69 6c 65 64 29 20 28 6c 65 6e 67 74 68 20 69 6e 61 .....(length.failed).(length.ina
2f9e0 63 74 69 76 65 2d 73 65 72 76 65 72 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ctive-servers)..................
2fa00 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 3d 20 28 6c 65 6e 67 ....................(if.(=.(leng
2fa20 74 68 20 66 61 69 6c 65 64 29 20 31 29 20 22 22 20 22 73 22 29 0a 20 20 20 20 20 20 20 20 20 20 th.failed).1).""."s")...........
2fa40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 70 63 ...........................(mapc
2fa60 6f 6e 63 61 74 20 23 27 63 61 72 20 66 61 69 6c 65 64 20 22 2c 20 22 29 29 29 0a 20 20 20 20 20 oncat.#'car.failed.",.")))......
2fa80 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 61 64 64 65 64 20 ...................(let.((added.
2faa0 28 6f 72 20 73 65 72 76 65 72 2d 6e 61 6d 65 73 20 28 6d 61 70 63 61 72 20 23 27 63 61 72 20 6e (or.server-names.(mapcar.#'car.n
2fac0 6f 77 2d 61 63 74 69 76 65 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ow-active))))...................
2fae0 20 20 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 41 64 64 65 64 20 25 64 20 74 6f 6f 6c 73 ........(message."Added.%d.tools
2fb00 20 66 72 6f 6d 20 25 64 20 4d 43 50 20 73 65 72 76 65 72 25 73 3a 20 25 73 22 0a 20 20 20 20 20 .from.%d.MCP.server%s:.%s"......
2fb20 20 20 20 20 20 20 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 ..............................(l
2fb40 65 6e 67 74 68 20 74 6f 6f 6c 73 29 20 28 6c 65 6e 67 74 68 20 61 64 64 65 64 29 0a 20 20 20 20 ength.tools).(length.added).....
2fb60 20 20 20 20 20 20 20 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 ...............................(
2fb80 69 66 20 28 3d 20 28 6c 65 6e 67 74 68 20 61 64 64 65 64 29 20 31 29 20 22 22 20 22 73 22 29 0a if.(=.(length.added).1).""."s").
2fba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
2fbc0 20 20 20 28 6d 61 70 63 6f 6e 63 61 74 20 23 27 69 64 65 6e 74 69 74 79 20 61 64 64 65 64 20 22 ...(mapconcat.#'identity.added."
2fbe0 2c 20 22 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 28 77 ,.")))).......................(w
2fc00 68 65 6e 20 28 66 75 6e 63 74 69 6f 6e 70 20 73 65 72 76 65 72 2d 63 61 6c 6c 62 61 63 6b 29 20 hen.(functionp.server-callback).
2fc20 28 66 75 6e 63 61 6c 6c 20 73 65 72 76 65 72 2d 63 61 6c 6c 62 61 63 6b 29 29 29 29 29 29 0a 0a (funcall.server-callback))))))..
2fc40 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 69 6e 61 63 74 69 76 65 2d 73 65 72 76 65 72 73 ............(if.inactive-servers
2fc60 20 20 20 20 20 20 20 20 3b 73 74 61 72 74 20 73 65 72 76 65 72 73 0a 20 20 20 20 20 20 20 20 20 ........;start.servers..........
2fc80 20 20 20 20 20 20 20 28 6d 63 70 2d 68 75 62 2d 73 74 61 72 74 2d 61 6c 6c 2d 73 65 72 76 65 72 .......(mcp-hub-start-all-server
2fca0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 64 64 2d 61 6c 6c 2d 74 6f 6f 6c 73 20 ..................add-all-tools.
2fcc0 28 6d 61 70 63 61 72 20 23 27 63 61 72 20 69 6e 61 63 74 69 76 65 2d 73 65 72 76 65 72 73 29 29 (mapcar.#'car.inactive-servers))
2fce0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 61 64 64 2d 61 6c 6c 2d ...............(funcall.add-all-
2fd00 74 6f 6f 6c 73 20 28 6d 61 70 63 61 72 20 23 27 63 61 72 20 73 65 72 76 65 72 73 29 29 29 29 0a tools.(mapcar.#'car.servers)))).
2fd20 20 20 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 41 6c 6c 20 4d 43 50 20 74 6f 6f 6c 73 20 ........(message."All.MCP.tools.
2fd40 61 72 65 20 61 6c 72 65 61 64 79 20 61 76 61 69 6c 61 62 6c 65 20 74 6f 20 67 70 74 65 6c 21 22 are.already.available.to.gptel!"
2fd60 29 0a 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 73 65 72 76 65 ).........(when.(functionp.serve
2fd80 72 2d 63 61 6c 6c 62 61 63 6b 29 20 28 66 75 6e 63 61 6c 6c 20 73 65 72 76 65 72 2d 63 61 6c 6c r-callback).(funcall.server-call
2fda0 62 61 63 6b 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 6d 63 70 2d 64 69 73 back))))))..(defun.gptel-mcp-dis
2fdc0 63 6f 6e 6e 65 63 74 20 28 26 6f 70 74 69 6f 6e 61 6c 20 73 65 72 76 65 72 73 20 69 6e 74 65 72 connect.(&optional.servers.inter
2fde0 61 63 74 69 76 65 29 0a 20 20 22 55 6e 72 65 67 69 73 74 65 72 20 67 70 74 65 6c 20 74 6f 6f 6c active)..."Unregister.gptel.tool
2fe00 73 20 70 72 6f 76 69 64 65 64 20 62 79 20 4d 43 50 20 73 65 72 76 65 72 73 20 75 73 69 6e 67 20 s.provided.by.MCP.servers.using.
2fe20 74 68 65 20 6d 63 70 20 70 61 63 6b 61 67 65 2e 0a 0a 53 45 52 56 45 52 53 20 69 73 20 61 20 6c the.mcp.package...SERVERS.is.a.l
2fe40 69 73 74 20 6f 66 20 73 65 72 76 65 72 20 6e 61 6d 65 73 20 28 73 74 72 69 6e 67 73 29 20 74 6f ist.of.server.names.(strings).to
2fe60 20 64 69 73 63 6f 6e 6e 65 63 74 20 66 72 6f 6d 2e 0a 0a 49 66 20 49 4e 54 45 52 41 43 54 49 56 .disconnect.from...If.INTERACTIV
2fe80 45 20 69 73 20 6e 6f 6e 2d 6e 69 6c 2c 20 71 75 65 72 79 20 74 68 65 20 75 73 65 72 20 61 62 6f E.is.non-nil,.query.the.user.abo
2fea0 75 74 20 77 68 69 63 68 20 74 6f 6f 6c 73 20 74 6f 20 72 65 6d 6f 76 65 2e 22 0a 20 20 28 69 6e ut.which.tools.to.remove."...(in
2fec0 74 65 72 61 63 74 69 76 65 20 28 6c 69 73 74 20 6e 69 6c 20 74 29 29 0a 20 20 28 69 66 2d 6c 65 teractive.(list.nil.t))...(if-le
2fee0 74 2a 20 28 28 6e 61 6d 65 73 2d 61 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 t*.((names-alist..............(c
2ff00 6c 2d 6c 6f 6f 70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 63 61 74 65 67 6f l-loop...............for.(catego
2ff20 72 79 20 2e 20 5f 74 6f 6f 6c 73 29 20 69 6e 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 74 6f 6f ry..._tools).in.gptel--known-too
2ff40 6c 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61 6e 64 20 28 73 74 72 69 6e 67 ls...............if.(and.(string
2ff60 2d 6d 61 74 63 68 20 22 5e 6d 63 70 2d 5c 5c 28 2e 2a 5c 5c 29 22 20 63 61 74 65 67 6f 72 79 29 -match."^mcp-\\(.*\\)".category)
2ff80 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 28 6e 75 6c 6c .......................(or.(null
2ffa0 20 73 65 72 76 65 72 73 29 20 3b 43 6f 6e 73 69 64 65 72 20 61 6c 6c 20 69 66 20 6e 69 6c 0a 20 .servers).;Consider.all.if.nil..
2ffc0 20 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 65 6d 62 65 72 .........................(member
2ffe0 20 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 20 31 20 63 61 74 65 67 6f 72 79 29 20 73 65 72 76 65 .(match-string.1.category).serve
30000 72 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6c 6c 65 63 74 20 28 63 6f 6e rs)))...............collect.(con
30020 73 20 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 20 31 20 63 61 74 65 67 6f 72 79 29 20 63 61 74 65 s.(match-string.1.category).cate
30040 67 6f 72 79 29 29 29 29 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 72 65 6d 6f 76 65 2d 66 6e 20 gory)))).......(let.((remove-fn.
30060 28 6c 61 6d 62 64 61 20 28 63 61 74 2d 6e 61 6d 65 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 (lambda.(cat-names).............
30080 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 74 6f 6f 6c 73 20 3b .............(setq.gptel-tools.;
300a0 52 65 6d 6f 76 65 20 66 72 6f 6d 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 0a 20 20 20 20 20 20 20 20 Remove.from.gptel-tools.........
300c0 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 6c 2d 64 65 6c 65 74 .......................(cl-delet
300e0 65 2d 69 66 20 28 6c 61 6d 62 64 61 20 28 74 6f 6f 6c 29 20 28 6d 65 6d 62 65 72 20 28 67 70 74 e-if.(lambda.(tool).(member.(gpt
30100 65 6c 2d 74 6f 6f 6c 2d 63 61 74 65 67 6f 72 79 20 74 6f 6f 6c 29 0a 20 20 20 20 20 20 20 20 20 el-tool-category.tool)..........
30120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
30140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 2d 6e 61 6d 65 73 29 ......................cat-names)
30160 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 )...............................
30180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 29 29 0a 20 20 20 ...............gptel-tools))....
301a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 70 63 20 28 6c 61 6d ......................(mapc.(lam
301c0 62 64 61 20 28 63 61 74 65 67 6f 72 79 29 20 3b 52 65 6d 6f 76 65 20 66 72 6f 6d 20 72 65 67 69 bda.(category).;Remove.from.regi
301e0 73 74 72 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 stry............................
30200 20 20 20 20 20 20 28 73 65 74 66 20 28 61 6c 69 73 74 2d 67 65 74 20 63 61 74 65 67 6f 72 79 20 ......(setf.(alist-get.category.
30220 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 74 6f 6f 6c 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 gptel--known-tools..............
30240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
30260 20 20 20 20 20 6e 69 6c 20 74 20 23 27 65 71 75 61 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 .....nil.t.#'equal).............
30280 20 20 20 20 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 29 29 ...........................nil))
302a0 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 ................................
302c0 63 61 74 2d 6e 61 6d 65 73 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 69 66 20 69 6e 74 65 72 61 cat-names)))).........(if.intera
302e0 63 74 69 76 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 73 ctive.............(when-let*.((s
30300 65 72 76 65 72 2d 6e 61 6d 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 erver-names.....................
30320 20 20 20 20 20 28 63 6f 6d 70 6c 65 74 69 6e 67 2d 72 65 61 64 2d 6d 75 6c 74 69 70 6c 65 0a 20 .....(completing-read-multiple..
30340 20 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 52 65 6d 6f 76 65 ........................."Remove
30360 20 4d 43 50 20 73 65 72 76 65 72 20 74 6f 6f 6c 73 20 66 6f 72 20 28 73 65 70 61 72 61 74 65 20 .MCP.server.tools.for.(separate.
30380 77 69 74 68 20 5c 22 2c 5c 22 29 3a 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 with.\",\"):."..................
303a0 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 20 27 28 22 41 4c 4c 22 20 2e 20 6e 69 6c 29 20 6e 61 .........(cons.'("ALL"...nil).na
303c0 6d 65 73 2d 61 6c 69 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 mes-alist)......................
303e0 20 20 20 20 20 6e 69 6c 20 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 .....nil.t)))...............(whe
30400 6e 20 28 6d 65 6d 62 65 72 20 22 41 4c 4c 22 20 73 65 72 76 65 72 2d 6e 61 6d 65 73 29 0a 20 20 n.(member."ALL".server-names)...
30420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 73 65 72 76 65 72 2d 6e 61 6d 65 73 ..............(setq.server-names
30440 20 28 6d 61 70 63 61 72 20 23 27 63 61 72 20 6e 61 6d 65 73 2d 61 6c 69 73 74 29 29 29 0a 20 20 .(mapcar.#'car.names-alist)))...
30460 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 72 65 6d 6f 76 65 2d 66 6e 20 20 ............(funcall.remove-fn..
30480 20 20 20 20 20 20 3b 72 65 6d 6f 76 65 20 73 65 6c 65 63 74 65 64 20 74 6f 6f 6c 20 63 61 74 65 ......;remove.selected.tool.cate
304a0 67 6f 72 69 65 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 6d gories........................(m
304c0 61 70 63 61 72 20 28 6c 61 6d 62 64 61 20 28 73 29 20 28 63 64 72 20 28 61 73 73 6f 63 20 73 20 apcar.(lambda.(s).(cdr.(assoc.s.
304e0 6e 61 6d 65 73 2d 61 6c 69 73 74 29 29 29 20 73 65 72 76 65 72 2d 6e 61 6d 65 73 29 29 0a 20 20 names-alist))).server-names))...
30500 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 79 2d 6f 72 2d 6e 2d 70 0a 20 20 20 20 20 20 ............(if.(y-or-n-p.......
30520 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 52 65 6d 6f 76 65 64 20 4d 43 .............(format."Removed.MC
30540 50 20 74 6f 6f 6c 73 20 66 72 6f 6d 20 25 64 20 73 65 72 76 65 72 25 73 2e 20 20 41 6c 73 6f 20 P.tools.from.%d.server%s...Also.
30560 73 68 75 74 20 64 6f 77 6e 20 4d 43 50 20 73 65 72 76 65 72 73 3f 22 0a 20 20 20 20 20 20 20 20 shut.down.MCP.servers?".........
30580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 6e 67 74 68 20 73 65 72 76 65 ...................(length.serve
305a0 72 2d 6e 61 6d 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 20 20 r-names)........................
305c0 20 20 20 20 28 69 66 20 28 3d 20 28 6c 65 6e 67 74 68 20 73 65 72 76 65 72 2d 6e 61 6d 65 73 29 ....(if.(=.(length.server-names)
305e0 20 31 29 20 22 22 20 22 73 22 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .1).""."s")))...................
30600 28 70 72 6f 67 6e 20 28 6d 61 70 63 20 23 27 6d 63 70 2d 73 74 6f 70 2d 73 65 72 76 65 72 20 73 (progn.(mapc.#'mcp-stop-server.s
30620 65 72 76 65 72 2d 6e 61 6d 65 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 erver-names)....................
30640 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 53 68 75 74 20 64 6f 77 6e 20 4d 43 50 20 73 65 ......(message."Shut.down.MCP.se
30660 72 76 65 72 73 3a 20 25 53 22 20 73 65 72 76 65 72 2d 6e 61 6d 65 73 29 29 0a 20 20 20 20 20 20 rvers:.%S".server-names)).......
30680 20 20 20 20 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 52 65 6d 6f 76 65 64 20 4d 43 50 20 ..........(message."Removed.MCP.
306a0 74 6f 6f 6c 73 20 66 6f 72 3a 20 25 53 22 20 73 65 72 76 65 72 2d 6e 61 6d 65 73 29 29 29 0a 20 tools.for:.%S".server-names)))..
306c0 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 72 65 6d 6f 76 65 2d 66 6e 20 28 6d 61 70 .........(funcall.remove-fn.(map
306e0 63 61 72 20 23 27 63 64 72 20 6e 61 6d 65 73 2d 61 6c 69 73 74 29 29 29 29 0a 20 20 20 20 3b 3b car.#'cdr.names-alist)))).....;;
30700 20 4e 6f 20 4d 43 50 20 74 6f 6f 6c 73 2c 20 61 73 6b 20 74 6f 20 73 68 75 74 20 64 6f 77 6e 20 .No.MCP.tools,.ask.to.shut.down.
30720 73 65 72 76 65 72 73 0a 20 20 20 20 28 69 66 20 28 63 6c 2d 6c 6f 6f 70 0a 20 20 20 20 20 20 20 servers.....(if.(cl-loop........
30740 20 20 66 6f 72 20 76 20 62 65 69 6e 67 20 74 68 65 20 68 61 73 68 2d 76 61 6c 75 65 73 20 6f 66 ..for.v.being.the.hash-values.of
30760 20 6d 63 70 2d 73 65 72 76 65 72 2d 63 6f 6e 6e 65 63 74 69 6f 6e 73 0a 20 20 20 20 20 20 20 20 .mcp-server-connections.........
30780 20 6e 65 76 65 72 20 76 29 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 69 6e 74 65 72 61 63 74 .never.v).........(when.interact
307a0 69 76 65 20 28 6d 65 73 73 61 67 65 20 22 4e 6f 20 4d 43 50 20 73 65 72 76 65 72 73 20 61 63 74 ive.(message."No.MCP.servers.act
307c0 69 76 65 21 22 29 29 0a 20 20 20 20 20 20 28 77 68 65 6e 20 28 6f 72 20 28 6e 6f 74 20 69 6e 74 ive!")).......(when.(or.(not.int
307e0 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 28 79 2d 6f 72 2d eractive).................(y-or-
30800 6e 2d 70 20 22 4e 6f 20 4d 43 50 20 74 6f 6f 6c 73 20 69 6e 20 67 70 74 65 6c 21 20 20 53 68 75 n-p."No.MCP.tools.in.gptel!..Shu
30820 74 20 64 6f 77 6e 20 61 6c 6c 20 4d 43 50 20 73 65 72 76 65 72 73 3f 20 22 29 29 0a 20 20 20 20 t.down.all.MCP.servers?.")).....
30840 20 20 20 20 28 64 6f 6c 69 73 74 20 28 73 65 72 76 65 72 20 6d 63 70 2d 68 75 62 2d 73 65 72 76 ....(dolist.(server.mcp-hub-serv
30860 65 72 73 29 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 67 65 74 68 61 73 68 20 28 63 ers)...........(when.(gethash.(c
30880 61 72 20 73 65 72 76 65 72 29 20 6d 63 70 2d 73 65 72 76 65 72 2d 63 6f 6e 6e 65 63 74 69 6f 6e ar.server).mcp-server-connection
308a0 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 63 70 2d 73 74 6f 70 2d 73 65 72 76 65 72 20 s).............(mcp-stop-server.
308c0 28 63 61 72 20 73 65 72 76 65 72 29 29 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 (car.server))))))))..(defun.gpte
308e0 6c 2d 6d 63 70 2d 2d 67 65 74 2d 74 6f 6f 6c 73 20 28 26 6f 70 74 69 6f 6e 61 6c 20 73 65 72 76 l-mcp--get-tools.(&optional.serv
30900 65 72 2d 6e 61 6d 65 73 29 0a 20 20 22 52 65 74 75 72 6e 20 74 6f 6f 6c 73 20 66 72 6f 6d 20 72 er-names)..."Return.tools.from.r
30920 75 6e 6e 69 6e 67 20 4d 43 50 20 73 65 72 76 65 72 73 2e 0a 0a 53 45 52 56 45 52 2d 4e 41 4d 45 unning.MCP.servers...SERVER-NAME
30940 53 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 73 65 72 76 65 72 20 6e 61 6d 65 73 20 74 6f 20 61 S.is.a.list.of.server.names.to.a
30960 64 64 20 74 6f 6f 6c 73 20 66 72 6f 6d 2e 20 20 41 64 64 20 74 6f 6f 6c 73 0a 66 72 6f 6d 20 61 dd.tools.from...Add.tools.from.a
30980 6c 6c 20 63 6f 6e 6e 65 63 74 65 64 20 73 65 72 76 65 72 73 20 69 66 20 69 74 20 69 73 20 6e 69 ll.connected.servers.if.it.is.ni
309a0 6c 2e 22 0a 20 20 28 75 6e 6c 65 73 73 20 73 65 72 76 65 72 2d 6e 61 6d 65 73 0a 20 20 20 20 28 l."...(unless.server-names.....(
309c0 73 65 74 71 20 73 65 72 76 65 72 2d 6e 61 6d 65 73 20 28 68 61 73 68 2d 74 61 62 6c 65 2d 6b 65 setq.server-names.(hash-table-ke
309e0 79 73 20 6d 63 70 2d 73 65 72 76 65 72 2d 63 6f 6e 6e 65 63 74 69 6f 6e 73 29 29 29 0a 20 20 28 ys.mcp-server-connections)))...(
30a00 6c 65 74 20 28 28 73 65 72 76 65 72 73 20 28 6d 61 70 63 61 72 20 28 6c 61 6d 62 64 61 20 28 6e let.((servers.(mapcar.(lambda.(n
30a20 29 20 28 67 65 74 68 61 73 68 20 6e 20 6d 63 70 2d 73 65 72 76 65 72 2d 63 6f 6e 6e 65 63 74 69 ).(gethash.n.mcp-server-connecti
30a40 6f 6e 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 20 20 20 73 ons))..........................s
30a60 65 72 76 65 72 2d 6e 61 6d 65 73 29 29 29 0a 20 20 20 20 28 63 6c 2d 6d 61 70 63 61 6e 0a 20 20 erver-names))).....(cl-mapcan...
30a80 20 20 20 28 6c 61 6d 62 64 61 20 28 6e 61 6d 65 20 73 65 72 76 65 72 29 0a 20 20 20 20 20 20 20 ...(lambda.(name.server)........
30aa0 28 77 68 65 6e 20 28 61 6e 64 20 73 65 72 76 65 72 20 28 65 71 75 61 6c 20 28 6d 63 70 2d 2d 73 (when.(and.server.(equal.(mcp--s
30ac0 74 61 74 75 73 20 73 65 72 76 65 72 29 20 27 63 6f 6e 6e 65 63 74 65 64 29 29 0a 20 20 20 20 20 tatus.server).'connected))......
30ae0 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 74 6f 6f 6c 73 20 28 6d 63 70 2d 2d 74 6f 6f ....(when-let*.((tools.(mcp--too
30b00 6c 73 20 73 65 72 76 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 ls.server)).....................
30b20 20 28 74 6f 6f 6c 2d 6e 61 6d 65 73 20 28 6d 61 70 63 61 72 20 23 27 28 6c 61 6d 62 64 61 20 28 .(tool-names.(mapcar.#'(lambda.(
30b40 74 6f 6f 6c 29 20 28 70 6c 69 73 74 2d 67 65 74 20 74 6f 6f 6c 20 3a 6e 61 6d 65 29 29 20 74 6f tool).(plist-get.tool.:name)).to
30b60 6f 6c 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 70 63 61 72 20 28 6c 61 6d 62 64 ols)))............(mapcar.(lambd
30b80 61 20 28 74 6f 6f 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 a.(tool-name)...................
30ba0 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 28 6d 63 70 2d 6d 61 6b 65 2d 74 65 78 74 2d 74 6f 6f ...(plist-put.(mcp-make-text-too
30bc0 6c 20 6e 61 6d 65 20 74 6f 6f 6c 2d 6e 61 6d 65 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 l.name.tool-name.t).............
30be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 61 74 65 67 6f 72 79 20 28 66 ....................:category.(f
30c00 6f 72 6d 61 74 20 22 6d 63 70 2d 25 73 22 20 6e 61 6d 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 ormat."mcp-%s".name)))..........
30c20 20 20 20 20 20 20 20 20 20 20 74 6f 6f 6c 2d 6e 61 6d 65 73 29 29 29 29 0a 20 20 20 20 20 73 65 ..........tool-names))))......se
30c40 72 76 65 72 2d 6e 61 6d 65 73 20 73 65 72 76 65 72 73 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 rver-names.servers)))..(defun.gp
30c60 74 65 6c 2d 6d 63 70 2d 2d 61 63 74 69 76 61 74 65 2d 74 6f 6f 6c 73 20 28 26 6f 70 74 69 6f 6e tel-mcp--activate-tools.(&option
30c80 61 6c 20 74 6f 6f 6c 73 29 0a 20 20 22 41 63 74 69 76 61 74 65 20 54 4f 4f 4c 53 20 6f 72 20 61 al.tools)..."Activate.TOOLS.or.a
30ca0 6c 6c 20 4d 43 50 20 74 6f 6f 6c 73 20 69 6e 20 63 75 72 72 65 6e 74 20 67 70 74 65 6c 20 73 65 ll.MCP.tools.in.current.gptel.se
30cc0 73 73 69 6f 6e 2e 22 0a 20 20 28 75 6e 6c 65 73 73 20 74 6f 6f 6c 73 20 28 73 65 74 71 20 74 6f ssion."...(unless.tools.(setq.to
30ce0 6f 6c 73 20 28 67 70 74 65 6c 2d 6d 63 70 2d 2d 67 65 74 2d 74 6f 6f 6c 73 29 29 29 0a 20 20 28 ols.(gptel-mcp--get-tools)))...(
30d00 64 6f 6c 69 73 74 20 28 74 6f 6f 6c 20 74 6f 6f 6c 73 29 0a 20 20 20 20 28 63 6c 2d 70 75 73 68 dolist.(tool.tools).....(cl-push
30d20 6e 65 77 20 28 67 70 74 65 6c 2d 67 65 74 2d 74 6f 6f 6c 20 28 6c 69 73 74 20 28 70 6c 69 73 74 new.(gptel-get-tool.(list.(plist
30d40 2d 67 65 74 20 74 6f 6f 6c 20 3a 63 61 74 65 67 6f 72 79 29 0a 20 20 20 20 20 20 20 20 20 20 20 -get.tool.:category)............
30d60 20 20 20 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 6c 69 73 ...........................(plis
30d80 74 2d 67 65 74 20 74 6f 6f 6c 20 3a 6e 61 6d 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 t-get.tool.:name))).............
30da0 20 20 20 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 29 29 29 0a 0a 28 77 69 74 68 2d 65 76 61 6c 2d 61 ....gptel-tools)))..(with-eval-a
30dc0 66 74 65 72 2d 6c 6f 61 64 20 27 67 70 74 65 6c 2d 74 72 61 6e 73 69 65 6e 74 0a 20 20 28 74 72 fter-load.'gptel-transient...(tr
30de0 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 75 66 ansient-define-suffix.gptel--suf
30e00 66 69 78 2d 6d 63 70 2d 63 6f 6e 6e 65 63 74 20 28 29 0a 20 20 20 20 22 52 65 67 69 73 74 65 72 fix-mcp-connect.()....."Register
30e20 20 74 6f 6f 6c 73 20 70 72 6f 76 69 64 65 64 20 62 79 20 4d 43 50 20 73 65 72 76 65 72 73 2e 22 .tools.provided.by.MCP.servers."
30e40 0a 20 20 20 20 3a 6b 65 79 20 22 4d 2b 22 0a 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 .....:key."M+".....:description.
30e60 22 41 64 64 20 4d 43 50 20 73 65 72 76 65 72 20 74 6f 6f 6c 73 22 0a 20 20 20 20 3a 74 72 61 6e "Add.MCP.server.tools".....:tran
30e80 73 69 65 6e 74 20 74 0a 20 20 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 20 20 3b 3b sient.t.....(interactive).....;;
30ea0 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 20 73 74 6f 72 65 73 20 69 74 73 20 73 74 61 74 65 20 69 6e .gptel-tools.stores.its.state.in
30ec0 20 69 74 73 20 73 63 6f 70 65 20 73 6c 6f 74 2e 20 20 52 65 74 61 69 6e 20 74 68 65 20 73 63 6f .its.scope.slot...Retain.the.sco
30ee0 70 65 20 62 75 74 0a 20 20 20 20 3b 3b 20 75 70 64 61 74 65 20 69 74 20 77 69 74 68 20 74 68 65 pe.but.....;;.update.it.with.the
30f00 20 6e 65 77 6c 79 20 73 65 6c 65 63 74 65 64 20 74 6f 6f 6c 73 2e 20 20 54 68 65 6e 20 73 65 74 .newly.selected.tools...Then.set
30f20 20 75 70 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 2e 0a 20 20 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d .up.gptel-tools......(condition-
30f40 63 61 73 65 20 65 72 72 0a 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 6d 63 70 2d 63 6f 6e 6e case.err.........(gptel-mcp-conn
30f60 65 63 74 0a 20 20 20 20 20 20 20 20 20 6e 69 6c 20 28 6c 61 6d 62 64 61 20 28 29 20 28 77 68 65 ect..........nil.(lambda.().(whe
30f80 6e 2d 6c 65 74 2a 20 28 28 74 72 61 6e 73 69 65 6e 74 2d 2d 70 72 65 66 69 78 29 0a 20 20 20 20 n-let*.((transient--prefix).....
30fa0 20 20 20 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 65 71 20 ...........................((eq.
30fc0 28 6f 72 65 66 20 74 72 61 6e 73 69 65 6e 74 2d 2d 70 72 65 66 69 78 20 63 6f 6d 6d 61 6e 64 29 (oref.transient--prefix.command)
30fe0 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 ................................
31000 20 20 20 20 20 27 67 70 74 65 6c 2d 74 6f 6f 6c 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 .....'gptel-tools)))............
31020 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 73 74 61 74 65 20 28 74 72 61 6e 73 69 65 6e ..........(let.((state.(transien
31040 74 2d 73 63 6f 70 65 20 27 67 70 74 65 6c 2d 74 6f 6f 6c 73 29 29 29 0a 20 20 20 20 20 20 20 20 t-scope.'gptel-tools))).........
31060 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 73 74 61 74 65 20 ...............(plist-put.state.
31080 3a 74 6f 6f 6c 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 :tools..........................
310a0 20 20 20 20 20 20 20 20 20 28 64 65 6c 65 74 65 2d 64 75 70 73 0a 20 20 20 20 20 20 20 20 20 20 .........(delete-dups...........
310c0 20 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 6e 63 6f 6e 63 20 .........................(nconc.
310e0 28 6d 61 70 63 61 72 20 28 6c 61 6d 62 64 61 20 28 74 6f 6f 6c 29 0a 20 20 20 20 20 20 20 20 20 (mapcar.(lambda.(tool)..........
31100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
31120 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 28 67 70 74 65 6c 2d 74 6f 6f 6c 2d 63 61 74 ...........(list.(gptel-tool-cat
31140 65 67 6f 72 79 20 74 6f 6f 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 egory.tool).....................
31160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
31180 20 20 20 20 20 20 28 67 70 74 65 6c 2d 74 6f 6f 6c 2d 6e 61 6d 65 20 74 6f 6f 6c 29 29 29 0a 20 ......(gptel-tool-name.tool)))..
311a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
311c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 29 0a 20 20 .................gptel-tools)...
311e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
31200 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 67 65 74 20 73 74 61 74 65 20 3a 74 6f 6f 6c 73 29 ........(plist-get.state.:tools)
31220 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 74 72 61 6e )))........................(tran
31240 73 69 65 6e 74 2d 73 65 74 75 70 20 27 67 70 74 65 6c 2d 74 6f 6f 6c 73 20 6e 69 6c 20 6e 69 6c sient-setup.'gptel-tools.nil.nil
31260 20 3a 73 63 6f 70 65 20 73 74 61 74 65 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 74 29 0a 20 20 .:scope.state))))..........t)...
31280 20 20 20 20 28 75 73 65 72 2d 65 72 72 6f 72 20 28 6d 65 73 73 61 67 65 20 22 25 73 22 20 28 63 ....(user-error.(message."%s".(c
312a0 61 64 72 20 65 72 72 29 29 29 29 29 0a 0a 20 20 28 74 72 61 6e 73 69 65 6e 74 2d 64 65 66 69 6e adr.err)))))....(transient-defin
312c0 65 2d 73 75 66 66 69 78 20 67 70 74 65 6c 2d 2d 73 75 66 66 69 78 2d 6d 63 70 2d 64 69 73 63 6f e-suffix.gptel--suffix-mcp-disco
312e0 6e 6e 65 63 74 20 28 29 0a 20 20 20 20 22 52 65 6d 6f 76 65 20 74 6f 6f 6c 73 20 70 72 6f 76 69 nnect.()....."Remove.tools.provi
31300 64 65 64 20 62 79 20 4d 43 50 20 73 65 72 76 65 72 73 20 66 72 6f 6d 20 67 70 74 65 6c 2e 22 0a ded.by.MCP.servers.from.gptel.".
31320 20 20 20 20 3a 6b 65 79 20 22 4d 2d 22 0a 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 28 ....:key."M-".....:description.(
31340 6c 61 6d 62 64 61 20 28 29 20 28 69 66 20 28 63 6c 2d 73 6f 6d 65 20 28 6c 61 6d 62 64 61 20 28 lambda.().(if.(cl-some.(lambda.(
31360 63 61 74 29 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 2d 70 20 22 5e 6d 63 70 2d 22 20 63 61 74 cat).(string-match-p."^mcp-".cat
31380 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 20 ))..............................
313a0 20 20 20 20 20 20 20 28 6d 61 70 2d 6b 65 79 73 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 74 6f .......(map-keys.gptel--known-to
313c0 6f 6c 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 20 20 20 20 ols))...........................
313e0 20 22 52 65 6d 6f 76 65 20 4d 43 50 20 73 65 72 76 65 72 20 74 6f 6f 6c 73 22 0a 20 20 20 20 20 ."Remove.MCP.server.tools"......
31400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 53 68 75 74 20 64 6f 77 6e 20 4d ...................."Shut.down.M
31420 43 50 20 73 65 72 76 65 72 73 22 29 29 0a 20 20 20 20 3a 74 72 61 6e 73 69 65 6e 74 20 74 0a 20 CP.servers")).....:transient.t..
31440 20 20 20 3a 69 6e 61 70 74 2d 69 66 0a 20 20 20 20 28 6c 61 6d 62 64 61 20 28 29 20 28 6f 72 20 ...:inapt-if.....(lambda.().(or.
31460 28 6e 6f 74 20 28 62 6f 75 6e 64 70 20 27 6d 63 70 2d 68 75 62 2d 73 65 72 76 65 72 73 29 29 0a (not.(boundp.'mcp-hub-servers)).
31480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 75 6c 6c 20 6d 63 70 2d 68 75 62 2d 73 65 72 76 ..............(null.mcp-hub-serv
314a0 65 72 73 29 0a 20 20 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 ers)...............(cl-loop.....
314c0 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 76 20 62 65 69 6e 67 20 74 68 65 20 68 61 73 68 2d ...........for.v.being.the.hash-
314e0 76 61 6c 75 65 73 20 6f 66 20 6d 63 70 2d 73 65 72 76 65 72 2d 63 6f 6e 6e 65 63 74 69 6f 6e 73 values.of.mcp-server-connections
31500 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 76 65 72 20 76 29 29 29 0a 20 20 20 20 28 ................never.v))).....(
31520 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 20 20 28 63 61 6c 6c 2d 69 6e 74 65 72 61 63 74 69 interactive).....(call-interacti
31540 76 65 6c 79 20 23 27 67 70 74 65 6c 2d 6d 63 70 2d 64 69 73 63 6f 6e 6e 65 63 74 29 0a 20 20 20 vely.#'gptel-mcp-disconnect)....
31560 20 3b 3b 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 20 73 74 6f 72 65 73 20 69 74 73 20 73 74 61 74 65 .;;.gptel-tools.stores.its.state
31580 20 69 6e 20 69 74 73 20 73 63 6f 70 65 20 73 6c 6f 74 2e 20 20 52 65 74 61 69 6e 20 74 68 65 20 .in.its.scope.slot...Retain.the.
315a0 73 63 6f 70 65 20 62 75 74 0a 20 20 20 20 3b 3b 20 72 65 6d 6f 76 65 20 74 6f 6f 6c 73 20 66 72 scope.but.....;;.remove.tools.fr
315c0 6f 6d 20 69 74 20 74 68 61 74 20 6e 6f 20 6c 6f 6e 67 65 72 20 65 78 69 73 74 2c 20 74 68 65 6e om.it.that.no.longer.exist,.then
315e0 20 73 65 74 20 75 70 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 0a 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 .set.up.gptel-tools.....(cl-loop
31600 20 77 69 74 68 20 73 74 61 74 65 20 3d 20 28 74 72 61 6e 73 69 65 6e 74 2d 73 63 6f 70 65 20 27 .with.state.=.(transient-scope.'
31620 67 70 74 65 6c 2d 74 6f 6f 6c 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 77 69 74 68 20 74 gptel-tools)..............with.t
31640 6f 6f 6c 73 20 3d 20 28 70 6c 69 73 74 2d 67 65 74 20 73 74 61 74 65 20 3a 74 6f 6f 6c 73 29 0a ools.=.(plist-get.state.:tools).
31660 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 74 6f 6f 6c 2d 73 70 65 63 20 69 6e 20 74 6f .............for.tool-spec.in.to
31680 6f 6c 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 61 70 2d 6e 65 73 74 65 64 2d ols..............if.(map-nested-
316a0 65 6c 74 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 74 6f 6f 6c 73 20 74 6f 6f 6c 2d 73 70 65 63 elt.gptel--known-tools.tool-spec
316c0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6c 6c 65 63 74 20 74 6f 6f 6c 2d 73 70 65 63 )..............collect.tool-spec
316e0 20 69 6e 74 6f 20 76 61 6c 69 64 2d 74 6f 6f 6c 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 66 .into.valid-tools..............f
31700 69 6e 61 6c 6c 79 20 64 6f 20 28 70 6c 69 73 74 2d 70 75 74 20 73 74 61 74 65 20 3a 74 6f 6f 6c inally.do.(plist-put.state.:tool
31720 73 20 76 61 6c 69 64 2d 74 6f 6f 6c 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 72 61 s.valid-tools)..............(tra
31740 6e 73 69 65 6e 74 2d 73 65 74 75 70 20 27 67 70 74 65 6c 2d 74 6f 6f 6c 73 20 6e 69 6c 20 6e 69 nsient-setup.'gptel-tools.nil.ni
31760 6c 20 3a 73 63 6f 70 65 20 73 74 61 74 65 29 29 29 0a 0a 20 20 28 74 72 61 6e 73 69 65 6e 74 2d l.:scope.state)))....(transient-
31780 72 65 6d 6f 76 65 2d 73 75 66 66 69 78 20 27 67 70 74 65 6c 2d 74 6f 6f 6c 73 20 27 28 30 20 32 remove-suffix.'gptel-tools.'(0.2
317a0 29 29 0a 20 20 28 74 72 61 6e 73 69 65 6e 74 2d 61 70 70 65 6e 64 2d 73 75 66 66 69 78 20 27 67 ))...(transient-append-suffix.'g
317c0 70 74 65 6c 2d 74 6f 6f 6c 73 20 27 28 30 20 2d 31 29 0a 20 20 20 20 5b 22 22 0a 20 20 20 20 20 ptel-tools.'(0.-1).....[""......
317e0 28 67 70 74 65 6c 2d 2d 73 75 66 66 69 78 2d 6d 63 70 2d 63 6f 6e 6e 65 63 74 29 0a 20 20 20 20 (gptel--suffix-mcp-connect).....
31800 20 28 67 70 74 65 6c 2d 2d 73 75 66 66 69 78 2d 6d 63 70 2d 64 69 73 63 6f 6e 6e 65 63 74 29 5d .(gptel--suffix-mcp-disconnect)]
31820 29 29 0a 0a 28 70 72 6f 76 69 64 65 20 27 67 70 74 65 6c 2d 69 6e 74 65 67 72 61 74 69 6f 6e 73 ))..(provide.'gptel-integrations
31840 29 0a 3b 3b 3b 20 67 70 74 65 6c 2d 69 6e 74 65 67 72 61 74 69 6f 6e 73 2e 65 6c 20 65 6e 64 73 ).;;;.gptel-integrations.el.ends
31860 20 68 65 72 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 62 79 .here..;;.Local.Variables:.;;.by
31880 74 65 2d 63 6f 6d 70 69 6c 65 2d 77 61 72 6e 69 6e 67 73 3a 20 28 6e 6f 74 20 6e 6f 72 75 6e 74 te-compile-warnings:.(not.norunt
318a0 69 6d 65 29 0a 3b 3b 20 45 6e 64 3a 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ime).;;.End:....................
318c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
318e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
31900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
31920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
31940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
31960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
31980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
319a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
319c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
319e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
31a00 67 70 74 65 6c 2d 30 2e 39 2e 39 2f 67 70 74 65 6c 2e 65 6c 00 00 00 00 00 00 00 00 00 00 00 00 gptel-0.9.9/gptel.el............
31a20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
31a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
31a60 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
31a80 30 35 32 35 34 36 37 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 32 37 36 33 00 20 30 00 00 00 0525467.00000000000.012763..0...
31aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
31ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
31ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
31b00 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...................
31b20 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...................
31b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
31b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
31b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
31ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
31bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
31be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
31c00 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
31c20 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
31c40 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
31c60 68 74 20 28 43 29 20 32 30 32 33 2d 32 30 32 35 20 20 4b 61 72 74 68 69 6b 20 43 68 69 6b 6d 61 ht.(C).2023-2025..Karthik.Chikma
31c80 67 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 galur..;;.Author:.Karthik.Chikma
31ca0 67 61 6c 75 72 20 3c 6b 61 72 74 68 69 6b 2e 63 68 69 6b 6d 61 67 61 6c 75 72 40 67 6d 61 69 6c galur.<karthik.chikmagalur@gmail
31cc0 2e 63 6f 6d 3e 0a 3b 3b 20 56 65 72 73 69 6f 6e 3a 20 30 2e 39 2e 39 0a 3b 3b 20 50 61 63 6b 61 .com>.;;.Version:.0.9.9.;;.Packa
31ce0 67 65 2d 52 65 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 ge-Requires:.((emacs."27.1").(tr
31d00 61 6e 73 69 65 6e 74 20 22 30 2e 37 2e 34 22 29 20 28 63 6f 6d 70 61 74 20 22 33 30 2e 31 2e 30 ansient."0.7.4").(compat."30.1.0
31d20 2e 30 22 29 29 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 2c 20 .0")).;;.Keywords:.convenience,.
31d40 74 6f 6f 6c 73 0a 3b 3b 20 55 52 4c 3a 20 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d tools.;;.URL:.https://github.com
31d60 2f 6b 61 72 74 68 69 6e 6b 2f 67 70 74 65 6c 0a 0a 3b 3b 20 53 50 44 58 2d 4c 69 63 65 6e 73 65 /karthink/gptel..;;.SPDX-License
31d80 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 65 72 0a 0a 3b -Identifier:.GPL-3.0-or-later..;
31da0 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 77 61 72 65 3b ;.This.program.is.free.software;
31dc0 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 64 2f 6f 72 20 .you.can.redistribute.it.and/or.
31de0 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 73 20 6f 66 20 modify.;;.it.under.the.terms.of.
31e00 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 20 61 the.GNU.General.Public.License.a
31e20 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 53 6f 66 74 77 s.published.by.;;.the.Free.Softw
31e40 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 69 6f 6e 20 33 are.Foundation,.either.version.3
31e60 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 79 6f 75 72 20 .of.the.License,.or.;;.(at.your.
31e80 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 0a 3b 3b 20 54 option).any.later.version...;;.T
31ea0 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 69 6e 20 74 68 his.program.is.distributed.in.th
31ec0 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 75 6c 2c 0a 3b e.hope.that.it.will.be.useful,.;
31ee0 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 20 77 69 74 68 ;.but.WITHOUT.ANY.WARRANTY;.with
31f00 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 74 79 20 6f 66 out.even.the.implied.warranty.of
31f20 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 45 53 53 20 46 .;;.MERCHANTABILITY.or.FITNESS.F
31f40 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 65 65 20 74 68 OR.A.PARTICULAR.PURPOSE...See.th
31f60 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 65 6e 73 65 20 e.;;.GNU.General.Public.License.
31f80 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 68 6f 75 6c 64 for.more.details...;;.You.should
31fa0 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 65 20 47 4e 55 .have.received.a.copy.of.the.GNU
31fc0 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 61 6c 6f 6e 67 .General.Public.License.;;.along
31fe0 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 2c 20 73 65 65 .with.this.program...If.not,.see
32000 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 73 65 73 2f 3e .<https://www.gnu.org/licenses/>
32020 2e 0a 0a 3b 3b 20 54 68 69 73 20 66 69 6c 65 20 69 73 20 4e 4f 54 20 70 61 72 74 20 6f 66 20 47 ...;;.This.file.is.NOT.part.of.G
32040 4e 55 20 45 6d 61 63 73 2e 0a 0a 3b 3b 3b 20 43 6f 6d 6d 65 6e 74 61 72 79 3a 0a 0a 3b 3b 20 67 NU.Emacs...;;;.Commentary:..;;.g
32060 70 74 65 6c 20 69 73 20 61 20 73 69 6d 70 6c 65 20 4c 61 72 67 65 20 4c 61 6e 67 75 61 67 65 20 ptel.is.a.simple.Large.Language.
32080 4d 6f 64 65 6c 20 63 68 61 74 20 63 6c 69 65 6e 74 2c 20 77 69 74 68 20 73 75 70 70 6f 72 74 20 Model.chat.client,.with.support.
320a0 66 6f 72 20 6d 75 6c 74 69 70 6c 65 0a 3b 3b 20 6d 6f 64 65 6c 73 20 61 6e 64 20 62 61 63 6b 65 for.multiple.;;.models.and.backe
320c0 6e 64 73 2e 0a 3b 3b 0a 3b 3b 20 49 74 20 77 6f 72 6b 73 20 69 6e 20 74 68 65 20 73 70 69 72 69 nds..;;.;;.It.works.in.the.spiri
320e0 74 20 6f 66 20 45 6d 61 63 73 2c 20 61 76 61 69 6c 61 62 6c 65 20 61 74 20 61 6e 79 20 74 69 6d t.of.Emacs,.available.at.any.tim
32100 65 20 61 6e 64 20 69 6e 20 61 6e 79 20 62 75 66 66 65 72 2e 0a 3b 3b 0a 3b 3b 20 67 70 74 65 6c e.and.in.any.buffer..;;.;;.gptel
32120 20 73 75 70 70 6f 72 74 73 3a 0a 3b 3b 0a 3b 3b 20 2d 20 54 68 65 20 73 65 72 76 69 63 65 73 20 .supports:.;;.;;.-.The.services.
32140 43 68 61 74 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 ChatGPT,.Azure,.Gemini,.Anthropi
32160 63 20 41 49 2c 20 54 6f 67 65 74 68 65 72 2e 61 69 2c 20 50 65 72 70 6c 65 78 69 74 79 2c 0a 3b c.AI,.Together.ai,.Perplexity,.;
32180 3b 20 20 20 41 49 2f 4d 4c 20 41 50 49 2c 20 41 6e 79 73 63 61 6c 65 2c 20 4f 70 65 6e 52 6f 75 ;...AI/ML.API,.Anyscale,.OpenRou
321a0 74 65 72 2c 20 47 72 6f 71 2c 20 50 72 69 76 61 74 65 47 50 54 2c 20 44 65 65 70 53 65 65 6b 2c ter,.Groq,.PrivateGPT,.DeepSeek,
321c0 20 43 65 72 65 62 72 61 73 2c 20 47 69 74 68 75 62 20 4d 6f 64 65 6c 73 2c 0a 3b 3b 20 20 20 47 .Cerebras,.Github.Models,.;;...G
321e0 69 74 48 75 62 20 43 6f 70 69 6c 6f 74 20 63 68 61 74 2c 20 41 57 53 20 42 65 64 72 6f 63 6b 2c itHub.Copilot.chat,.AWS.Bedrock,
32200 20 4e 6f 76 69 74 61 20 41 49 2c 20 78 41 49 2c 20 53 61 6d 62 61 6e 6f 76 61 2c 20 4d 69 73 74 .Novita.AI,.xAI,.Sambanova,.Mist
32220 72 61 6c 20 4c 65 0a 3b 3b 20 20 20 43 68 61 74 20 61 6e 64 20 4b 61 67 69 20 28 46 61 73 74 47 ral.Le.;;...Chat.and.Kagi.(FastG
32240 50 54 20 26 20 53 75 6d 6d 61 72 69 7a 65 72 29 2e 0a 3b 3b 20 2d 20 4c 6f 63 61 6c 20 6d 6f 64 PT.&.Summarizer)..;;.-.Local.mod
32260 65 6c 73 20 76 69 61 20 4f 6c 6c 61 6d 61 2c 20 4c 6c 61 6d 61 2e 63 70 70 2c 20 4c 6c 61 6d 61 els.via.Ollama,.Llama.cpp,.Llama
32280 66 69 6c 65 73 20 6f 72 20 47 50 54 34 41 6c 6c 0a 3b 3b 0a 3b 3b 20 41 64 64 69 74 69 6f 6e 61 files.or.GPT4All.;;.;;.Additiona
322a0 6c 6c 79 2c 20 61 6e 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 lly,.any.LLM.service.(local.or.r
322c0 65 6d 6f 74 65 29 20 74 68 61 74 20 70 72 6f 76 69 64 65 73 20 61 6e 0a 3b 3b 20 4f 70 65 6e 41 emote).that.provides.an.;;.OpenA
322e0 49 2d 63 6f 6d 70 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 I-compatible.API.is.supported..;
32300 3b 0a 3b 3b 20 46 65 61 74 75 72 65 73 3a 0a 3b 3b 0a 3b 3b 20 2d 20 49 6e 74 65 72 61 63 74 20 ;.;;.Features:.;;.;;.-.Interact.
32320 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 20 45 6d 61 63 73 with.LLMs.from.anywhere.in.Emacs
32340 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 75 66 66 65 72 2c .(any.buffer,.shell,.minibuffer,
32360 0a 3b 3b 20 20 20 77 68 65 72 65 76 65 72 29 2e 0a 3b 3b 20 2d 20 4c 4c 4d 20 72 65 73 70 6f 6e .;;...wherever)..;;.-.LLM.respon
32380 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 6d 61 72 6b 75 ses.are.in.Markdown.or.Org.marku
323a0 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 6f 6e 73 20 61 p..;;.-.Supports.conversations.a
323c0 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 73 69 6f 6e 73 nd.multiple.independent.sessions
323e0 2e 0a 3b 3b 20 2d 20 53 75 70 70 6f 72 74 73 20 74 6f 6f 6c 2d 75 73 65 20 74 6f 20 65 71 75 69 ..;;.-.Supports.tool-use.to.equi
32400 70 20 4c 4c 4d 73 20 77 69 74 68 20 61 67 65 6e 74 69 63 20 63 61 70 61 62 69 6c 69 74 69 65 73 p.LLMs.with.agentic.capabilities
32420 2e 0a 3b 3b 20 2d 20 53 75 70 70 6f 72 74 73 20 4d 6f 64 65 6c 20 43 6f 6e 74 65 78 74 20 50 72 ..;;.-.Supports.Model.Context.Pr
32440 6f 74 6f 63 6f 6c 20 28 4d 43 50 29 20 69 6e 74 65 67 72 61 74 69 6f 6e 20 75 73 69 6e 67 20 74 otocol.(MCP).integration.using.t
32460 68 65 20 6d 63 70 2e 65 6c 20 70 61 63 6b 61 67 65 2e 0a 3b 3b 20 2d 20 53 75 70 70 6f 72 74 73 he.mcp.el.package..;;.-.Supports
32480 20 6d 75 6c 74 69 2d 6d 6f 64 61 6c 20 6d 6f 64 65 6c 73 20 28 73 65 6e 64 20 69 6d 61 67 65 73 .multi-modal.models.(send.images
324a0 2c 20 64 6f 63 75 6d 65 6e 74 73 29 2e 0a 3b 3b 20 2d 20 53 75 70 70 6f 72 74 73 20 22 72 65 61 ,.documents)..;;.-.Supports."rea
324c0 73 6f 6e 69 6e 67 22 20 63 6f 6e 74 65 6e 74 20 69 6e 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 73 soning".content.in.LLM.responses
324e0 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 72 20 4d 61 72 ..;;.-.Save.chats.as.regular.Mar
32500 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 73 75 6d 65 20 kdown/Org/Text.files.and.resume.
32520 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 20 62 61 63 6b them.later..;;.-.You.can.go.back
32540 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 6d 70 74 73 20 .and.edit.your.previous.prompts.
32560 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 63 6f 6e 74 69 or.LLM.responses.when.;;...conti
32580 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 65 20 77 69 6c nuing.a.conversation...These.wil
325a0 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 0a 3b 3b 20 2d l.be.fed.back.to.the.model..;;.-
325c0 20 52 65 64 69 72 65 63 74 20 70 72 6f 6d 70 74 73 20 61 6e 64 20 72 65 73 70 6f 6e 73 65 73 20 .Redirect.prompts.and.responses.
325e0 65 61 73 69 6c 79 0a 3b 3b 20 2d 20 52 65 77 72 69 74 65 2c 20 72 65 66 61 63 74 6f 72 20 6f 72 easily.;;.-.Rewrite,.refactor.or
32600 20 66 69 6c 6c 20 69 6e 20 72 65 67 69 6f 6e 73 20 69 6e 20 62 75 66 66 65 72 73 2e 0a 3b 3b 20 .fill.in.regions.in.buffers..;;.
32620 2d 20 57 72 69 74 65 20 79 6f 75 72 20 6f 77 6e 20 63 6f 6d 6d 61 6e 64 73 20 66 6f 72 20 63 75 -.Write.your.own.commands.for.cu
32640 73 74 6f 6d 20 74 61 73 6b 73 20 77 69 74 68 20 61 20 73 69 6d 70 6c 65 20 41 50 49 2e 0a 3b 3b stom.tasks.with.a.simple.API..;;
32660 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 20 41 7a .;;.Requirements.for.ChatGPT,.Az
32680 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 59 6f 75 ure,.Gemini.or.Kagi:.;;.;;.-.You
326a0 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 20 20 53 .need.an.appropriate.API.key...S
326c0 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 79 27 20 et.the.variable.`gptel-api-key'.
326e0 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 69 6f 6e to.the.;;...key.or.to.a.function
32700 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 20 74 68 .of.no.arguments.that.returns.th
32720 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 20 60 61 e.key...(It.tries.to.;;...use.`a
32740 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 20 43 68 uth-source'.by.default).;;.;;.Ch
32760 61 74 47 50 54 20 69 73 20 63 6f 6e 66 69 67 75 72 65 64 20 6f 75 74 20 6f 66 20 74 68 65 20 62 atGPT.is.configured.out.of.the.b
32780 6f 78 2e 20 20 46 6f 72 20 74 68 65 20 6f 74 68 65 72 20 73 6f 75 72 63 65 73 3a 0a 3b 3b 0a 3b ox...For.the.other.sources:.;;.;
327a0 3b 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 ;.-.For.Azure:.define.a.gptel-ba
327c0 63 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 ckend.with.`gptel-make-azure',.w
327e0 68 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 hich.see..;;.-.For.Gemini:.defin
32800 65 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 e.a.gptel-backend.with.`gptel-ma
32820 6b 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 ke-gemini',.which.see..;;.-.For.
32840 41 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 Anthropic.(Claude):.define.a.gpt
32860 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 65 2d 61 6e 74 68 el-backend.with.`gptel-make-anth
32880 72 6f 70 69 63 27 2c 0a 3b 3b 20 20 20 77 68 69 63 68 20 73 65 65 2e 0a 3b 3b 20 2d 20 46 6f 72 ropic',.;;...which.see..;;.-.For
328a0 20 41 49 2f 4d 4c 20 41 50 49 2c 20 54 6f 67 65 74 68 65 72 2e 61 69 2c 20 41 6e 79 73 63 61 6c .AI/ML.API,.Together.ai,.Anyscal
328c0 65 2c 20 47 72 6f 71 2c 20 4f 70 65 6e 52 6f 75 74 65 72 2c 20 44 65 65 70 53 65 65 6b 2c 20 43 e,.Groq,.OpenRouter,.DeepSeek,.C
328e0 65 72 65 62 72 61 73 20 6f 72 0a 3b 3b 20 20 20 47 69 74 68 75 62 20 4d 6f 64 65 6c 73 3a 20 64 erebras.or.;;...Github.Models:.d
32900 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 20 60 67 70 74 65 efine.a.gptel-backend.with.`gpte
32920 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 27 2c 20 77 68 69 63 68 20 73 65 65 2e 0a 3b 3b 20 2d 20 l-make-openai',.which.see..;;.-.
32940 46 6f 72 20 50 72 69 76 61 74 65 47 50 54 3a 20 64 65 66 69 6e 65 20 61 20 62 61 63 6b 65 6e 64 For.PrivateGPT:.define.a.backend
32960 20 77 69 74 68 20 60 67 70 74 65 6c 2d 6d 61 6b 65 2d 70 72 69 76 61 74 65 67 70 74 27 2c 20 77 .with.`gptel-make-privategpt',.w
32980 68 69 63 68 20 73 65 65 2e 0a 3b 3b 20 2d 20 46 6f 72 20 50 65 72 70 6c 65 78 69 74 79 3a 20 64 hich.see..;;.-.For.Perplexity:.d
329a0 65 66 69 6e 65 20 61 20 62 61 63 6b 65 6e 64 20 77 69 74 68 20 60 67 70 74 65 6c 2d 6d 61 6b 65 efine.a.backend.with.`gptel-make
329c0 2d 70 65 72 70 6c 65 78 69 74 79 27 2c 20 77 68 69 63 68 20 73 65 65 2e 0a 3b 3b 20 2d 20 46 6f -perplexity',.which.see..;;.-.Fo
329e0 72 20 44 65 65 70 73 65 65 6b 3a 20 64 65 66 69 6e 65 20 61 20 62 61 63 6b 65 6e 64 20 77 69 74 r.Deepseek:.define.a.backend.wit
32a00 68 20 60 67 70 74 65 6c 2d 6d 61 6b 65 2d 64 65 65 70 73 65 65 6b 27 2c 20 77 68 69 63 68 20 73 h.`gptel-make-deepseek',.which.s
32a20 65 65 2e 0a 3b 3b 20 2d 20 46 6f 72 20 4b 61 67 69 3a 20 64 65 66 69 6e 65 20 61 20 67 70 74 65 ee..;;.-.For.Kagi:.define.a.gpte
32a40 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 6b 61 67 69 27 l-backend.with.`gptel-make-kagi'
32a60 2c 20 77 68 69 63 68 20 73 65 65 2e 0a 3b 3b 0a 3b 3b 20 46 6f 72 20 6c 6f 63 61 6c 20 6d 6f 64 ,.which.see..;;.;;.For.local.mod
32a80 65 6c 73 20 75 73 69 6e 67 20 4f 6c 6c 61 6d 61 2c 20 4c 6c 61 6d 61 2e 63 70 70 20 6f 72 20 47 els.using.Ollama,.Llama.cpp.or.G
32aa0 50 54 34 41 6c 6c 3a 0a 3b 3b 0a 3b 3b 20 2d 20 54 68 65 20 6d 6f 64 65 6c 20 68 61 73 20 74 6f PT4All:.;;.;;.-.The.model.has.to
32ac0 20 62 65 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 61 6e 20 61 63 63 65 73 73 69 62 6c 65 20 61 64 64 .be.running.on.an.accessible.add
32ae0 72 65 73 73 20 28 6f 72 20 6c 6f 63 61 6c 68 6f 73 74 29 0a 3b 3b 20 2d 20 44 65 66 69 6e 65 20 ress.(or.localhost).;;.-.Define.
32b00 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 65 a.gptel-backend.with.`gptel-make
32b20 2d 6f 6c 6c 61 6d 61 27 20 6f 72 20 60 67 70 74 65 6c 2d 6d 61 6b 65 2d 67 70 74 34 61 6c 6c 27 -ollama'.or.`gptel-make-gpt4all'
32b40 2c 0a 3b 3b 20 20 20 77 68 69 63 68 20 73 65 65 2e 0a 3b 3b 20 2d 20 4c 6c 61 6d 61 2e 63 70 70 ,.;;...which.see..;;.-.Llama.cpp
32b60 20 6f 72 20 4c 6c 61 6d 61 66 69 6c 65 73 3a 20 44 65 66 69 6e 65 20 61 20 67 70 74 65 6c 2d 62 .or.Llamafiles:.Define.a.gptel-b
32b80 61 63 6b 65 6e 64 20 77 69 74 68 20 60 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 27 2e ackend.with.`gptel-make-openai'.
32ba0 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 41 44 4d .;;.;;.Consult.the.package.READM
32bc0 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 77 69 74 E.for.examples.and.more.help.wit
32be0 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 0a 3b 3b h.configuring.;;.backends..;;.;;
32c00 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 65 64 20 .Usage:.;;.;;.gptel.can.be.used.
32c20 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 65 64 20 in.any.buffer.or.in.a.dedicated.
32c40 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 69 6f 6e chat.buffer...The.;;.interaction
32c60 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 75 65 72 .model.is.simple:.Type.in.a.quer
32c80 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 20 69 6e y.and.the.response.will.be.;;.in
32ca0 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 75 65 20 serted.below...You.can.continue.
32cc0 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 6c 6f 77 the.conversation.by.typing.below
32ce0 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 65 20 74 .the.;;.response..;;.;;.To.use.t
32d00 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 6c 6c 20 his.in.any.buffer:.;;.;;.-.Call.
32d20 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 62 75 66 66 65 72 27 `gptel-send'.to.send.the.buffer'
32d40 73 20 74 65 78 74 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 s.text.up.to.the.cursor...Select
32d60 20 61 0a 3b 3b 20 20 20 72 65 67 69 6f 6e 20 74 6f 20 73 65 6e 64 20 6f 6e 6c 79 20 74 68 65 20 .a.;;...region.to.send.only.the.
32d80 72 65 67 69 6f 6e 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 region..;;.;;.-.You.can.select.p
32da0 72 65 76 69 6f 75 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 revious.prompts.and.responses.to
32dc0 20 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 .continue.the.conversation..;;.;
32de0 3b 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 ;.-.Call.`gptel-send'.with.a.pre
32e00 66 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 fix.argument.to.access.a.menu.wh
32e20 65 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 ere.you.can.set.;;...your.backen
32e40 64 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 d,.model.and.other.parameters,.o
32e60 72 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 r.to.redirect.the.;;...prompt/re
32e80 73 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 sponse..;;.;;.To.use.this.in.a.d
32ea0 65 64 69 63 61 74 65 64 20 62 75 66 66 65 72 3a 0a 3b 3b 20 0a 3b 3b 20 2d 20 4d 2d 78 20 67 70 edicated.buffer:.;;..;;.-.M-x.gp
32ec0 74 65 6c 3a 20 53 74 61 72 74 20 61 20 63 68 61 74 20 73 65 73 73 69 6f 6e 2e 0a 3b 3b 0a 3b 3b tel:.Start.a.chat.session..;;.;;
32ee0 20 2d 20 49 6e 20 74 68 65 20 63 68 61 74 20 73 65 73 73 69 6f 6e 3a 20 50 72 65 73 73 20 60 43 .-.In.the.chat.session:.Press.`C
32f00 2d 63 20 52 45 54 27 20 28 60 67 70 74 65 6c 2d 73 65 6e 64 27 29 20 74 6f 20 73 65 6e 64 20 79 -c.RET'.(`gptel-send').to.send.y
32f20 6f 75 72 20 70 72 6f 6d 70 74 2e 0a 3b 3b 20 20 20 55 73 65 20 61 20 70 72 65 66 69 78 20 61 72 our.prompt..;;...Use.a.prefix.ar
32f40 67 75 6d 65 6e 74 20 28 60 43 2d 75 20 43 2d 63 20 52 45 54 27 29 20 74 6f 20 61 63 63 65 73 73 gument.(`C-u.C-c.RET').to.access
32f60 20 61 20 6d 65 6e 75 2e 20 20 49 6e 20 74 68 69 73 20 6d 65 6e 75 20 79 6f 75 0a 3b 3b 20 20 20 .a.menu...In.this.menu.you.;;...
32f80 63 61 6e 20 73 65 74 20 63 68 61 74 20 70 61 72 61 6d 65 74 65 72 73 20 6c 69 6b 65 20 74 68 65 can.set.chat.parameters.like.the
32fa0 20 73 79 73 74 65 6d 20 64 69 72 65 63 74 69 76 65 73 2c 20 61 63 74 69 76 65 20 62 61 63 6b 65 .system.directives,.active.backe
32fc0 6e 64 20 6f 72 0a 3b 3b 20 20 20 6d 6f 64 65 6c 2c 20 6f 72 20 63 68 6f 6f 73 65 20 74 6f 20 72 nd.or.;;...model,.or.choose.to.r
32fe0 65 64 69 72 65 63 74 20 74 68 65 20 69 6e 70 75 74 20 6f 72 20 6f 75 74 70 75 74 20 65 6c 73 65 edirect.the.input.or.output.else
33000 77 68 65 72 65 20 28 73 75 63 68 20 61 73 20 74 6f 20 74 68 65 0a 3b 3b 20 20 20 6b 69 6c 6c 20 where.(such.as.to.the.;;...kill.
33020 72 69 6e 67 20 6f 72 20 74 68 65 20 65 63 68 6f 20 61 72 65 61 29 2e 0a 3b 3b 0a 3b 3b 20 2d 20 ring.or.the.echo.area)..;;.;;.-.
33040 59 6f 75 20 63 61 6e 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 You.can.save.this.buffer.to.a.fi
33060 6c 65 2e 20 20 57 68 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 le...When.opening.this.file,.tur
33080 6e 20 6f 6e 0a 3b 3b 20 20 20 60 67 70 74 65 6c 2d 6d 6f 64 65 27 20 62 65 66 6f 72 65 20 65 64 n.on.;;...`gptel-mode'.before.ed
330a0 69 74 69 6e 67 20 69 74 20 74 6f 20 72 65 73 74 6f 72 65 20 74 68 65 20 63 6f 6e 76 65 72 73 61 iting.it.to.restore.the.conversa
330c0 74 69 6f 6e 20 73 74 61 74 65 20 61 6e 64 0a 3b 3b 20 20 20 63 6f 6e 74 69 6e 75 65 20 63 68 61 tion.state.and.;;...continue.cha
330e0 74 74 69 6e 67 2e 0a 3b 3b 0a 3b 3b 20 2d 20 54 6f 20 69 6e 63 6c 75 64 65 20 6d 65 64 69 61 20 tting..;;.;;.-.To.include.media.
33100 66 69 6c 65 73 20 77 69 74 68 20 79 6f 75 72 20 72 65 71 75 65 73 74 2c 20 79 6f 75 20 63 61 6e files.with.your.request,.you.can
33120 20 61 64 64 20 74 68 65 6d 20 74 6f 20 74 68 65 20 63 6f 6e 74 65 78 74 0a 3b 3b 20 20 20 28 64 .add.them.to.the.context.;;...(d
33140 65 73 63 72 69 62 65 64 20 6e 65 78 74 29 2c 20 6f 72 20 69 6e 63 6c 75 64 65 20 74 68 65 6d 20 escribed.next),.or.include.them.
33160 61 73 20 6c 69 6e 6b 73 20 69 6e 20 4f 72 67 20 6f 72 20 4d 61 72 6b 64 6f 77 6e 20 6d 6f 64 65 as.links.in.Org.or.Markdown.mode
33180 20 63 68 61 74 0a 3b 3b 20 20 20 62 75 66 66 65 72 73 2e 20 20 53 65 6e 64 69 6e 67 20 6d 65 64 .chat.;;...buffers...Sending.med
331a0 69 61 20 69 73 20 64 69 73 61 62 6c 65 64 20 62 79 20 64 65 66 61 75 6c 74 2c 20 79 6f 75 20 63 ia.is.disabled.by.default,.you.c
331c0 61 6e 20 74 75 72 6e 20 69 74 20 6f 6e 20 67 6c 6f 62 61 6c 6c 79 0a 3b 3b 20 20 20 76 69 61 20 an.turn.it.on.globally.;;...via.
331e0 60 67 70 74 65 6c 2d 74 72 61 63 6b 2d 6d 65 64 69 61 27 2c 20 6f 72 20 6c 6f 63 61 6c 6c 79 20 `gptel-track-media',.or.locally.
33200 69 6e 20 61 20 63 68 61 74 20 62 75 66 66 65 72 20 76 69 61 20 74 68 65 20 68 65 61 64 65 72 20 in.a.chat.buffer.via.the.header.
33220 6c 69 6e 65 2e 0a 3b 3b 20 0a 3b 3b 20 49 6e 63 6c 75 64 65 20 6d 6f 72 65 20 63 6f 6e 74 65 78 line..;;..;;.Include.more.contex
33240 74 20 77 69 74 68 20 72 65 71 75 65 73 74 73 3a 0a 3b 3b 0a 3b 3b 20 49 66 20 79 6f 75 20 77 61 t.with.requests:.;;.;;.If.you.wa
33260 6e 74 20 74 6f 20 70 72 6f 76 69 64 65 20 74 68 65 20 4c 4c 4d 20 77 69 74 68 20 6d 6f 72 65 20 nt.to.provide.the.LLM.with.more.
33280 63 6f 6e 74 65 78 74 2c 20 79 6f 75 20 63 61 6e 20 61 64 64 20 61 72 62 69 74 72 61 72 79 0a 3b context,.you.can.add.arbitrary.;
332a0 3b 20 72 65 67 69 6f 6e 73 2c 20 62 75 66 66 65 72 73 2c 20 66 69 6c 65 73 20 6f 72 20 64 69 72 ;.regions,.buffers,.files.or.dir
332c0 65 63 74 6f 72 69 65 73 20 74 6f 20 74 68 65 20 71 75 65 72 79 20 77 69 74 68 20 60 67 70 74 65 ectories.to.the.query.with.`gpte
332e0 6c 2d 61 64 64 27 2e 20 20 54 6f 20 61 64 64 0a 3b 3b 20 74 65 78 74 20 6f 72 20 6d 65 64 69 61 l-add'...To.add.;;.text.or.media
33300 20 66 69 6c 65 73 2c 20 63 61 6c 6c 20 60 67 70 74 65 6c 2d 61 64 64 27 20 69 6e 20 44 69 72 65 .files,.call.`gptel-add'.in.Dire
33320 64 20 6f 72 20 75 73 65 20 74 68 65 20 64 65 64 69 63 61 74 65 64 0a 3b 3b 20 60 67 70 74 65 6c d.or.use.the.dedicated.;;.`gptel
33340 2d 61 64 64 2d 66 69 6c 65 27 2e 0a 3b 3b 0a 3b 3b 20 59 6f 75 20 63 61 6e 20 61 6c 73 6f 20 61 -add-file'..;;.;;.You.can.also.a
33360 64 64 20 63 6f 6e 74 65 78 74 20 66 72 6f 6d 20 67 70 74 65 6c 27 73 20 6d 65 6e 75 20 69 6e 73 dd.context.from.gptel's.menu.ins
33380 74 65 61 64 20 28 60 67 70 74 65 6c 2d 73 65 6e 64 27 20 77 69 74 68 20 61 0a 3b 3b 20 70 72 65 tead.(`gptel-send'.with.a.;;.pre
333a0 66 69 78 20 61 72 67 29 2c 20 61 73 20 77 65 6c 6c 20 61 73 20 65 78 61 6d 69 6e 65 20 6f 72 20 fix.arg),.as.well.as.examine.or.
333c0 6d 6f 64 69 66 79 20 63 6f 6e 74 65 78 74 2e 0a 3b 3b 0a 3b 3b 20 57 68 65 6e 20 63 6f 6e 74 65 modify.context..;;.;;.When.conte
333e0 78 74 20 69 73 20 61 76 61 69 6c 61 62 6c 65 2c 20 67 70 74 65 6c 20 77 69 6c 6c 20 69 6e 63 6c xt.is.available,.gptel.will.incl
33400 75 64 65 20 69 74 20 77 69 74 68 20 65 61 63 68 20 4c 4c 4d 20 71 75 65 72 79 2e 0a 3b 3b 0a 3b ude.it.with.each.LLM.query..;;.;
33420 3b 20 4c 4c 4d 20 54 6f 6f 6c 20 75 73 65 3a 0a 3b 3b 0a 3b 3b 20 67 70 74 65 6c 20 73 75 70 70 ;.LLM.Tool.use:.;;.;;.gptel.supp
33440 6f 72 74 73 20 22 74 6f 6f 6c 20 63 61 6c 6c 69 6e 67 22 20 62 65 68 61 76 69 6f 72 2c 20 77 68 orts."tool.calling".behavior,.wh
33460 65 72 65 20 4c 4c 4d 73 20 63 61 6e 20 73 70 65 63 69 66 79 20 61 72 67 75 6d 65 6e 74 73 20 77 ere.LLMs.can.specify.arguments.w
33480 69 74 68 0a 3b 3b 20 77 68 69 63 68 20 74 6f 20 63 61 6c 6c 20 70 72 6f 76 69 64 65 64 20 22 74 ith.;;.which.to.call.provided."t
334a0 6f 6f 6c 73 22 20 28 65 6c 69 73 70 20 66 75 6e 63 74 69 6f 6e 73 29 2e 20 20 54 68 65 20 72 65 ools".(elisp.functions)...The.re
334c0 73 75 6c 74 73 20 6f 66 20 72 75 6e 6e 69 6e 67 20 74 68 65 0a 3b 3b 20 74 6f 6f 6c 73 20 61 72 sults.of.running.the.;;.tools.ar
334e0 65 20 66 65 64 20 62 61 63 6b 20 74 6f 20 74 68 65 20 4c 4c 4d 2c 20 67 69 76 69 6e 67 20 69 74 e.fed.back.to.the.LLM,.giving.it
33500 20 63 61 70 61 62 69 6c 69 74 69 65 73 20 61 6e 64 20 6b 6e 6f 77 6c 65 64 67 65 20 62 65 79 6f .capabilities.and.knowledge.beyo
33520 6e 64 0a 3b 3b 20 77 68 61 74 20 69 73 20 61 76 61 69 6c 61 62 6c 65 20 6f 75 74 20 6f 66 20 74 nd.;;.what.is.available.out.of.t
33540 68 65 20 62 6f 78 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 74 6f 6f 6c 73 20 63 61 6e 20 he.box...For.example,.tools.can.
33560 70 65 72 66 6f 72 6d 20 77 65 62 0a 3b 3b 20 73 65 61 72 63 68 65 73 20 6f 72 20 41 50 49 20 6c perform.web.;;.searches.or.API.l
33580 6f 6f 6b 75 70 73 2c 20 6d 6f 64 69 66 79 20 66 69 6c 65 73 20 61 6e 64 20 64 69 72 65 63 74 6f ookups,.modify.files.and.directo
335a0 72 69 65 73 2c 20 61 6e 64 20 73 6f 20 6f 6e 2e 0a 3b 3b 0a 3b 3b 20 54 6f 6f 6c 73 20 63 61 6e ries,.and.so.on..;;.;;.Tools.can
335c0 20 62 65 20 73 70 65 63 69 66 69 65 64 20 76 69 61 20 60 67 70 74 65 6c 2d 6d 61 6b 65 2d 74 6f .be.specified.via.`gptel-make-to
335e0 6f 6c 27 2c 20 6f 72 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 6f 74 68 65 72 0a 3b 3b 20 72 ol',.or.obtained.from.other.;;.r
33600 65 70 6f 73 69 74 6f 72 69 65 73 2c 20 6f 72 20 66 72 6f 6d 20 4d 6f 64 65 6c 20 43 6f 6e 74 65 epositories,.or.from.Model.Conte
33620 78 74 20 50 72 6f 74 6f 63 6f 6c 20 28 4d 43 50 29 20 73 65 72 76 65 72 73 20 75 73 69 6e 67 20 xt.Protocol.(MCP).servers.using.
33640 74 68 65 20 6d 63 70 2e 65 6c 0a 3b 3b 20 70 61 63 6b 61 67 65 2e 20 20 53 65 65 20 74 68 65 20 the.mcp.el.;;.package...See.the.
33660 52 45 41 44 4d 45 20 66 6f 72 20 64 65 74 61 69 6c 73 2e 0a 3b 3b 0a 3b 3b 20 54 6f 6f 6c 73 20 README.for.details..;;.;;.Tools.
33680 63 61 6e 20 62 65 20 69 6e 63 6c 75 64 65 64 20 77 69 74 68 20 4c 4c 4d 20 71 75 65 72 69 65 73 can.be.included.with.LLM.queries
336a0 20 75 73 69 6e 67 20 67 70 74 65 6c 27 73 20 6d 65 6e 75 2c 20 6f 72 20 66 72 6f 6d 0a 3b 3b 20 .using.gptel's.menu,.or.from.;;.
336c0 60 67 70 74 65 6c 2d 74 6f 6f 6c 73 27 2e 0a 3b 3b 0a 3b 3b 20 52 65 77 72 69 74 65 20 69 6e 74 `gptel-tools'..;;.;;.Rewrite.int
336e0 65 72 66 61 63 65 0a 3b 3b 0a 3b 3b 20 49 6e 20 61 6e 79 20 62 75 66 66 65 72 3a 20 77 69 74 68 erface.;;.;;.In.any.buffer:.with
33700 20 61 20 72 65 67 69 6f 6e 20 73 65 6c 65 63 74 65 64 2c 20 79 6f 75 20 63 61 6e 20 72 65 77 72 .a.region.selected,.you.can.rewr
33720 69 74 65 20 70 72 6f 73 65 2c 20 72 65 66 61 63 74 6f 72 20 63 6f 64 65 0a 3b 3b 20 6f 72 20 66 ite.prose,.refactor.code.;;.or.f
33740 69 6c 6c 20 69 6e 20 74 68 65 20 72 65 67 69 6f 6e 2e 20 20 54 68 69 73 20 69 73 20 61 63 63 65 ill.in.the.region...This.is.acce
33760 73 73 69 62 6c 65 20 76 69 61 20 60 67 70 74 65 6c 2d 72 65 77 72 69 74 65 27 2c 20 61 6e 64 20 ssible.via.`gptel-rewrite',.and.
33780 61 6c 73 6f 20 66 72 6f 6d 0a 3b 3b 20 74 68 65 20 60 67 70 74 65 6c 2d 73 65 6e 64 27 20 6d 65 also.from.;;.the.`gptel-send'.me
337a0 6e 75 2e 0a 3b 3b 0a 3b 3b 20 50 72 65 73 65 74 73 0a 3b 3b 0a 3b 3b 20 44 65 66 69 6e 65 20 61 nu..;;.;;.Presets.;;.;;.Define.a
337c0 20 62 75 6e 64 6c 65 20 6f 66 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 28 6d 6f 64 65 6c 2c .bundle.of.configuration.(model,
337e0 20 62 61 63 6b 65 6e 64 2c 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 2c 20 74 6f 6f 6c 73 20 .backend,.system.message,.tools.
33800 65 74 63 29 0a 3b 3b 20 61 73 20 61 20 22 70 72 65 73 65 74 22 20 74 68 61 74 20 63 61 6e 20 62 etc).;;.as.a."preset".that.can.b
33820 65 20 61 70 70 6c 69 65 64 20 74 6f 67 65 74 68 65 72 2c 20 6d 61 6b 69 6e 67 20 69 74 20 65 61 e.applied.together,.making.it.ea
33840 73 79 20 74 6f 20 73 77 69 74 63 68 20 62 65 74 77 65 65 6e 0a 3b 3b 20 74 61 73 6b 73 20 69 6e sy.to.switch.between.;;.tasks.in
33860 20 67 70 74 65 6c 2e 20 20 50 72 65 73 65 74 73 20 63 61 6e 20 62 65 20 73 61 76 65 64 20 61 6e .gptel...Presets.can.be.saved.an
33880 64 20 61 70 70 6c 69 65 64 20 66 72 6f 6d 20 67 70 74 65 6c 27 73 20 74 72 61 6e 73 69 65 6e 74 d.applied.from.gptel's.transient
338a0 0a 3b 3b 20 6d 65 6e 75 2e 20 20 59 6f 75 20 63 61 6e 20 61 6c 73 6f 20 69 6e 63 6c 75 64 65 20 .;;.menu...You.can.also.include.
338c0 61 20 63 6f 6f 6b 69 65 20 6f 66 20 74 68 65 20 66 6f 72 6d 20 22 40 70 72 65 73 65 74 2d 6e 61 a.cookie.of.the.form."@preset-na
338e0 6d 65 22 20 69 6e 20 74 68 65 20 70 72 6f 6d 70 74 0a 3b 3b 20 74 6f 20 73 65 6e 64 20 61 20 72 me".in.the.prompt.;;.to.send.a.r
33900 65 71 75 65 73 74 20 77 69 74 68 20 61 20 70 72 65 73 65 74 20 61 70 70 6c 69 65 64 2e 20 20 54 equest.with.a.preset.applied...T
33920 68 69 73 20 66 65 61 74 75 72 65 20 77 6f 72 6b 73 20 65 76 65 72 79 77 68 65 72 65 2c 20 62 75 his.feature.works.everywhere,.bu
33940 74 0a 3b 3b 20 70 72 65 73 65 74 20 63 6f 6f 6b 69 65 73 20 61 72 65 20 61 6c 73 6f 20 66 6f 6e t.;;.preset.cookies.are.also.fon
33960 74 69 66 69 65 64 20 69 6e 20 63 68 61 74 20 62 75 66 66 65 72 73 2e 0a 3b 3b 0a 3b 3b 20 67 70 tified.in.chat.buffers..;;.;;.gp
33980 74 65 6c 20 69 6e 20 4f 72 67 20 6d 6f 64 65 3a 0a 3b 3b 0a 3b 3b 20 67 70 74 65 6c 20 6f 66 66 tel.in.Org.mode:.;;.;;.gptel.off
339a0 65 72 73 20 61 20 66 65 77 20 65 78 74 72 61 20 63 6f 6e 76 65 6e 69 65 6e 63 65 73 20 69 6e 20 ers.a.few.extra.conveniences.in.
339c0 4f 72 67 20 6d 6f 64 65 3a 0a 3b 3b 0a 3b 3b 20 2d 20 59 6f 75 20 63 61 6e 20 6c 69 6d 69 74 20 Org.mode:.;;.;;.-.You.can.limit.
339e0 74 68 65 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 20 63 6f 6e 74 65 78 74 20 74 6f 20 61 6e 20 4f the.conversation.context.to.an.O
33a00 72 67 20 68 65 61 64 69 6e 67 20 77 69 74 68 0a 3b 3b 20 20 20 60 67 70 74 65 6c 2d 6f 72 67 2d rg.heading.with.;;...`gptel-org-
33a20 73 65 74 2d 74 6f 70 69 63 27 2e 0a 3b 3b 20 20 20 0a 3b 3b 20 2d 20 59 6f 75 20 63 61 6e 20 68 set-topic'..;;....;;.-.You.can.h
33a40 61 76 65 20 62 72 61 6e 63 68 69 6e 67 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 73 20 69 6e 20 4f ave.branching.conversations.in.O
33a60 72 67 20 6d 6f 64 65 2c 20 77 68 65 72 65 20 65 61 63 68 20 68 69 65 72 61 72 63 68 69 63 61 6c rg.mode,.where.each.hierarchical
33a80 0a 3b 3b 20 20 20 6f 75 74 6c 69 6e 65 20 70 61 74 68 20 74 68 72 6f 75 67 68 20 74 68 65 20 64 .;;...outline.path.through.the.d
33aa0 6f 63 75 6d 65 6e 74 20 69 73 20 61 20 73 65 70 61 72 61 74 65 20 63 6f 6e 76 65 72 73 61 74 69 ocument.is.a.separate.conversati
33ac0 6f 6e 20 62 72 61 6e 63 68 2e 0a 3b 3b 20 20 20 53 65 65 20 74 68 65 20 76 61 72 69 61 62 6c 65 on.branch..;;...See.the.variable
33ae0 20 60 67 70 74 65 6c 2d 6f 72 67 2d 62 72 61 6e 63 68 69 6e 67 2d 63 6f 6e 74 65 78 74 27 2e 0a .`gptel-org-branching-context'..
33b00 3b 3b 20 20 20 0a 3b 3b 20 2d 20 59 6f 75 20 63 61 6e 20 64 65 63 6c 61 72 65 20 74 68 65 20 67 ;;....;;.-.You.can.declare.the.g
33b20 70 74 65 6c 20 6d 6f 64 65 6c 2c 20 62 61 63 6b 65 6e 64 2c 20 74 65 6d 70 65 72 61 74 75 72 65 ptel.model,.backend,.temperature
33b40 2c 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 20 61 6e 64 0a 3b 3b 20 20 20 6f 74 68 65 72 20 ,.system.message.and.;;...other.
33b60 70 61 72 61 6d 65 74 65 72 73 20 61 73 20 4f 72 67 20 70 72 6f 70 65 72 74 69 65 73 20 77 69 74 parameters.as.Org.properties.wit
33b80 68 20 74 68 65 20 63 6f 6d 6d 61 6e 64 0a 3b 3b 20 20 20 60 67 70 74 65 6c 2d 6f 72 67 2d 73 65 h.the.command.;;...`gptel-org-se
33ba0 74 2d 70 72 6f 70 65 72 74 69 65 73 27 2e 20 20 67 70 74 65 6c 20 71 75 65 72 69 65 73 20 75 6e t-properties'...gptel.queries.un
33bc0 64 65 72 20 74 68 65 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 68 65 61 64 69 6e 67 0a 3b 3b der.the.corresponding.heading.;;
33be0 20 20 20 77 69 6c 6c 20 61 6c 77 61 79 73 20 75 73 65 20 74 68 65 73 65 20 73 65 74 74 69 6e 67 ...will.always.use.these.setting
33c00 73 2c 20 61 6c 6c 6f 77 69 6e 67 20 79 6f 75 20 74 6f 20 63 72 65 61 74 65 20 6d 6f 73 74 6c 79 s,.allowing.you.to.create.mostly
33c20 20 72 65 70 72 6f 64 75 63 69 62 6c 65 0a 3b 3b 20 20 20 4c 4c 4d 20 63 68 61 74 20 6e 6f 74 65 .reproducible.;;...LLM.chat.note
33c40 62 6f 6f 6b 73 2e 0a 3b 3b 0a 3b 3b 20 46 69 6e 61 6c 6c 79 2c 20 67 70 74 65 6c 20 6f 66 66 65 books..;;.;;.Finally,.gptel.offe
33c60 72 73 20 61 20 67 65 6e 65 72 61 6c 20 70 75 72 70 6f 73 65 20 41 50 49 20 66 6f 72 20 77 72 69 rs.a.general.purpose.API.for.wri
33c80 74 69 6e 67 20 4c 4c 4d 20 69 6e 65 72 61 63 74 69 6f 6e 73 20 74 68 61 74 0a 3b 3b 20 73 75 69 ting.LLM.ineractions.that.;;.sui
33ca0 74 20 79 6f 75 72 20 77 6f 72 6b 66 6c 6f 77 2e 20 20 53 65 65 20 60 67 70 74 65 6c 2d 72 65 71 t.your.workflow...See.`gptel-req
33cc0 75 65 73 74 27 2c 20 61 6e 64 20 60 67 70 74 65 6c 2d 66 73 6d 27 20 66 6f 72 20 6d 6f 72 65 20 uest',.and.`gptel-fsm'.for.more.
33ce0 61 64 76 61 6e 63 65 64 0a 3b 3b 20 75 73 61 67 65 2e 0a 0a 3b 3b 3b 20 43 6f 64 65 3a 0a 28 64 advanced.;;.usage...;;;.Code:.(d
33d00 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 65 20 22 6d eclare-function.markdown-mode."m
33d20 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 74 69 6f 6e arkdown-mode").(declare-function
33d40 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 74 65 6c 2d .gptel-curl-get-response."gptel-
33d60 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 65 6c 2d 6d curl").(declare-function.gptel-m
33d80 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 61 72 65 2d enu."gptel-transient").(declare-
33da0 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 20 22 67 70 function.gptel-system-prompt."gp
33dc0 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 63 74 69 6f tel-transient").(declare-functio
33de0 6e 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 20 22 67 70 74 65 6c 2d 74 72 61 6e 73 69 65 6e 74 22 29 n.gptel-tools."gptel-transient")
33e00 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 70 75 6c 73 65 2d 6d 6f 6d 65 6e 74 61 .(declare-function.pulse-momenta
33e20 72 79 2d 68 69 67 68 6c 69 67 68 74 2d 72 65 67 69 6f 6e 20 22 70 75 6c 73 65 22 29 0a 0a 28 64 ry-highlight-region."pulse")..(d
33e40 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 65 64 69 66 66 2d 6d 61 6b 65 2d 63 6c 6f 6e 65 eclare-function.ediff-make-clone
33e60 64 2d 62 75 66 66 65 72 20 22 65 64 69 66 66 2d 75 74 69 6c 22 29 0a 28 64 65 63 6c 61 72 65 2d d-buffer."ediff-util").(declare-
33e80 66 75 6e 63 74 69 6f 6e 20 65 64 69 66 66 2d 72 65 67 69 6f 6e 73 2d 69 6e 74 65 72 6e 61 6c 20 function.ediff-regions-internal.
33ea0 22 65 64 69 66 66 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 68 6c 2d 6c 69 "ediff").(declare-function.hl-li
33ec0 6e 65 2d 68 69 67 68 6c 69 67 68 74 20 22 68 6c 2d 6c 69 6e 65 22 29 0a 0a 28 64 65 63 6c 61 72 ne-highlight."hl-line")..(declar
33ee0 65 2d 66 75 6e 63 74 69 6f 6e 20 6f 72 67 2d 65 73 63 61 70 65 2d 63 6f 64 65 2d 69 6e 2d 73 74 e-function.org-escape-code-in-st
33f00 72 69 6e 67 20 22 6f 72 67 2d 73 72 63 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f ring."org-src").(declare-functio
33f20 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 2d 62 75 66 66 65 n.gptel-org--create-prompt-buffe
33f40 72 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 6e 63 74 69 6f 6e r."gptel-org").(declare-function
33f60 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 6c 2d 6f 72 67 22 .gptel-org-set-topic."gptel-org"
33f80 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 6f 72 67 2d 2d 73 ).(declare-function.gptel-org--s
33fa0 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 63 6c 61 72 65 2d ave-state."gptel-org").(declare-
33fc0 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 65 2d 73 74 61 74 function.gptel-org--restore-stat
33fe0 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 6e 63 74 69 6f 6e e."gptel-org").(declare-function
34000 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 6e 2d .gptel--stream-convert-markdown-
34020 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 2d 66 75 6e 63 74 >org."gptel-org").(declare-funct
34040 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 6e 2d 3e 6f 72 67 ion.gptel--convert-markdown->org
34060 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 6c 65 74 65 2d 66 ."gptel-org").(define-obsolete-f
34080 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 2d 74 6f 70 69 63 unction-alias...'gptel-set-topic
340a0 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 2e 35 22 29 0a 0a .'gptel-org-set-topic."0.7.5")..
340c0 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 69 72 65 20 27 73 (eval-when-compile...(require.'s
340e0 75 62 72 2d 78 29 29 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 ubr-x)).(require.'cl-lib).(requi
34100 72 65 20 27 63 6f 6d 70 61 74 20 6e 69 6c 20 74 29 0a 28 72 65 71 75 69 72 65 20 27 75 72 6c 29 re.'compat.nil.t).(require.'url)
34120 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 74 65 78 74 2d 70 .(require.'map).(require.'text-p
34140 72 6f 70 65 72 74 79 2d 73 65 61 72 63 68 29 0a 28 72 65 71 75 69 72 65 20 27 63 6c 2d 67 65 6e roperty-search).(require.'cl-gen
34160 65 72 69 63 29 0a 28 72 65 71 75 69 72 65 20 27 67 70 74 65 6c 2d 6f 70 65 6e 61 69 29 0a 0a 0c eric).(require.'gptel-openai)...
34180 0a 3b 3b 3b 20 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 .;;;.User.options..(defgroup.gpt
341a0 65 6c 20 6e 69 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 el.nil..."Interact.with.LLMs.fro
341c0 6d 20 61 6e 79 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 m.anywhere.in.Emacs."...:group.'
341e0 68 79 70 65 72 6d 65 64 69 61 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 70 72 hypermedia)..(defcustom.gptel-pr
34200 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 74 6f 20 75 73 65 oxy.""..."Path.to.a.proxy.to.use
34220 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 61 73 73 65 64 20 .for.gptel.interactions..Passed.
34240 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 6f 72 20 65 78 61 to.curl.via.--proxy.arg,.for.exa
34260 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 30 5c 22 0a 4c 65 mple.\"proxy.yourorg.com:80\".Le
34280 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 75 73 65 20 61 20 ave.it.empty.if.you.don't.use.a.
342a0 70 72 6f 78 79 2e 22 0a 20 20 3a 74 79 70 65 20 27 73 74 72 69 6e 67 29 0a 0a 28 64 65 66 63 75 proxy."...:type.'string)..(defcu
342c0 73 74 6f 6d 20 67 70 74 65 6c 2d 61 70 69 2d 6b 65 79 20 23 27 67 70 74 65 6c 2d 61 70 69 2d 6b stom.gptel-api-key.#'gptel-api-k
342e0 65 79 2d 66 72 6f 6d 2d 61 75 74 68 2d 73 6f 75 72 63 65 0a 20 20 22 41 6e 20 41 50 49 20 6b 65 ey-from-auth-source..."An.API.ke
34300 79 20 28 73 74 72 69 6e 67 29 20 66 6f 72 20 74 68 65 20 64 65 66 61 75 6c 74 20 4c 4c 4d 20 62 y.(string).for.the.default.LLM.b
34320 61 63 6b 65 6e 64 2e 0a 0a 4f 70 65 6e 41 49 20 62 79 20 64 65 66 61 75 6c 74 2e 0a 0a 43 61 6e ackend...OpenAI.by.default...Can
34340 20 61 6c 73 6f 20 62 65 20 61 20 66 75 6e 63 74 69 6f 6e 20 6f 66 20 6e 6f 20 61 72 67 75 6d 65 .also.be.a.function.of.no.argume
34360 6e 74 73 20 74 68 61 74 20 72 65 74 75 72 6e 73 20 61 6e 20 41 50 49 0a 6b 65 79 20 28 6d 6f 72 nts.that.returns.an.API.key.(mor
34380 65 20 73 65 63 75 72 65 29 20 66 6f 72 20 74 68 65 20 61 63 74 69 76 65 20 62 61 63 6b 65 6e 64 e.secure).for.the.active.backend
343a0 2e 22 0a 20 20 3a 74 79 70 65 20 27 28 63 68 6f 69 63 65 0a 20 20 20 20 20 20 20 20 20 20 28 73 ."...:type.'(choice...........(s
343c0 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 20 20 20 20 20 20 tring.:tag."API.key")...........
343e0 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 68 61 74 20 72 65 (function.:tag."Function.that.re
34400 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 66 63 75 73 74 6f turns.the.API.key")))..(defcusto
34420 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 20 72 65 73 70 6f m.gptel-stream.t..."Stream.respo
34440 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 61 72 65 20 72 65 nses.from.the.LLM.as.they.are.re
34460 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 6e 6f 72 65 64 20 ceived...This.option.is.ignored.
34480 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 75 70 70 6f 72 74 unless.-.the.LLM.backend.support
344a0 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 20 69 6e 20 75 73 s.streaming,.and.-.Curl.is.in.us
344c0 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 57 68 65 6e 20 73 e.(see.`gptel-use-curl')..When.s
344e0 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 20 74 68 65 20 66 et.to.nil,.Emacs.waits.for.the.f
34500 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 74 0a 61 6c 6c 20 ull.response.and.inserts.it.all.
34520 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 6e 63 68 72 6f 6e at.once...This.wait.is.asynchron
34540 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 0a 20 20 3a 74 79 ous...\='tis.a.bit.silly."...:ty
34560 70 65 20 27 62 6f 6f 6c 65 61 6e 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 75 pe.'boolean)..(defcustom.gptel-u
34580 73 65 2d 63 75 72 6c 20 28 61 6e 64 20 28 65 78 65 63 75 74 61 62 6c 65 2d 66 69 6e 64 20 22 63 se-curl.(and.(executable-find."c
345a0 75 72 6c 22 29 20 74 29 0a 20 20 22 57 68 65 74 68 65 72 20 67 70 74 65 6c 20 73 68 6f 75 6c 64 url").t)..."Whether.gptel.should
345c0 20 70 72 65 66 65 72 20 43 75 72 6c 20 77 68 65 6e 20 61 76 61 69 6c 61 62 6c 65 2e 0a 0a 43 61 .prefer.Curl.when.available...Ca
345e0 6e 20 62 65 20 73 65 74 20 74 6f 20 74 2c 20 6e 69 6c 2c 20 6f 72 20 61 20 73 74 72 69 6e 67 20 n.be.set.to.t,.nil,.or.a.string.
34600 70 61 74 68 20 74 6f 20 74 68 65 20 63 75 72 6c 20 65 78 65 63 75 74 61 62 6c 65 2e 22 0a 20 20 path.to.the.curl.executable."...
34620 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.
34640 3a 74 61 67 20 22 44 6f 20 6e 6f 74 20 75 73 65 20 43 75 72 6c 22 20 6e 69 6c 29 0a 20 20 20 20 :tag."Do.not.use.Curl".nil).....
34660 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 20 22 55 73 65 20 43 75 72 6c 22 20 74 29 0a ......(const.:tag."Use.Curl".t).
34680 20 20 20 20 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 ..........(string.:tag."Specify.
346a0 70 61 74 68 20 74 6f 20 74 68 65 20 43 75 72 6c 20 65 78 65 63 75 74 61 62 6c 65 22 29 29 29 0a path.to.the.Curl.executable"))).
346c0 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 6f 72 67 2d 63 6f 6e 76 65 72 74 2d 72 65 .(defcustom.gptel-org-convert-re
346e0 73 70 6f 6e 73 65 20 74 0a 20 20 22 57 68 65 74 68 65 72 20 67 70 74 65 6c 20 73 68 6f 75 6c 64 sponse.t..."Whether.gptel.should
34700 20 63 6f 6e 76 65 72 74 20 4d 61 72 6b 64 6f 77 6e 20 72 65 73 70 6f 6e 73 65 73 20 74 6f 20 4f .convert.Markdown.responses.to.O
34720 72 67 20 6d 61 72 6b 75 70 2e 0a 0a 54 68 69 73 20 6f 6e 6c 79 20 61 66 66 65 63 74 73 20 72 65 rg.markup...This.only.affects.re
34740 71 75 65 73 74 73 20 6f 72 69 67 69 6e 61 74 69 6e 67 20 66 72 6f 6d 20 4f 72 67 20 6d 6f 64 65 quests.originating.from.Org.mode
34760 20 62 75 66 66 65 72 73 2e 22 0a 20 20 3a 74 79 70 65 20 27 62 6f 6f 6c 65 61 6e 29 0a 0a 28 64 .buffers."...:type.'boolean)..(d
34780 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 63 75 72 6c 2d 66 69 6c 65 2d 73 69 7a 65 2d 74 68 efcustom.gptel-curl-file-size-th
347a0 72 65 73 68 6f 6c 64 0a 20 20 28 69 66 20 28 6d 65 6d 71 20 73 79 73 74 65 6d 2d 74 79 70 65 20 reshold...(if.(memq.system-type.
347c0 27 28 77 69 6e 64 6f 77 73 2d 6e 74 20 6d 73 2d 64 6f 73 29 29 20 23 78 36 66 66 65 20 31 33 30 '(windows-nt.ms-dos)).#x6ffe.130
347e0 30 30 30 29 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 6e 67 000)..."Size.threshold.for.using
34800 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 69 65 .file.input.with.Curl...Specifie
34820 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 74 6f s.the.size.threshold.for.when.to
34840 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 64 61 .use.a.temporary.file.to.pass.da
34860 74 61 20 74 6f 0a 43 75 72 6c 20 69 6e 20 67 70 74 65 6c 20 71 75 65 72 69 65 73 2e 20 20 49 66 ta.to.Curl.in.gptel.queries...If
34880 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 6e 74 .the.size.of.the.data.to.be.sent
348a0 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 61 74 .exceeds.this.threshold,.the.dat
348c0 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 6c 65 a.is.written.to.a.temporary.file
348e0 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 60 2d .and.passed.to.Curl.using.the.`-
34900 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 6c 65 -data-binary'.option.with.a.file
34920 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 74 61 .reference...Otherwise,.the.data
34940 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 6e 64 .is.passed.directly.as.a.command
34960 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 61 6e -line.argument...The.value.is.an
34980 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 65 72 .integer.representing.the.number
349a0 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 75 65 .of.bytes...Adjusting.this.value
349c0 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 20 74 .may.be.necessary.depending.on.t
349e0 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 20 73 he.environment.and.the.typical.s
34a00 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 67 70 ize.of.the.data.being.sent.in.gp
34a20 74 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 79 20 tel.queries..A.larger.value.may.
34a40 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 67 20 improve.performance.by.avoiding.
34a60 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 72 61 the.overhead.of.creating.tempora
34a80 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 64 73 ry.files.for.small.data.payloads
34aa0 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 20 6e ,.while.a.smaller.value.may.be.n
34ac0 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 6d 65 eeded.if.the.command-line.argume
34ae0 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 61 74 nt.size.is.limited.by.the.operat
34b00 69 6e 67 20 73 79 73 74 65 6d 2e 0a 0a 54 68 65 20 64 65 66 61 75 6c 74 20 6f 66 20 23 78 38 30 ing.system...The.default.of.#x80
34b20 30 30 20 66 6f 72 20 77 69 6e 64 6f 77 73 20 63 6f 6d 65 73 20 66 72 6f 6d 20 4d 69 63 72 6f 73 00.for.windows.comes.from.Micros
34b40 6f 66 74 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 0a 6c 6f 63 61 74 65 64 20 68 65 72 65 3a 0a oft.documentation.located.here:.
34b60 68 74 74 70 73 3a 2f 2f 6c 65 61 72 6e 2e 6d 69 63 72 6f 73 6f 66 74 2e 63 6f 6d 2f 65 6e 2d 75 https://learn.microsoft.com/en-u
34b80 73 2f 77 69 6e 64 6f 77 73 2f 77 69 6e 33 32 2f 61 70 69 2f 70 72 6f 63 65 73 73 74 68 72 65 61 s/windows/win32/api/processthrea
34ba0 64 73 61 70 69 2f 6e 66 2d 70 72 6f 63 65 73 73 74 68 72 65 61 64 73 61 70 69 2d 63 72 65 61 74 dsapi/nf-processthreadsapi-creat
34bc0 65 70 72 6f 63 65 73 73 61 0a 0a 49 74 20 69 73 20 73 65 74 20 74 6f 20 28 23 78 38 30 30 30 20 eprocessa..It.is.set.to.(#x8000.
34be0 2d 20 23 78 31 30 30 30 20 2d 20 32 29 20 74 6f 20 61 63 63 6f 75 6e 74 20 66 6f 72 20 6f 74 68 -.#x1000.-.2).to.account.for.oth
34c00 65 72 20 28 6e 6f 6e 2d 64 61 74 61 29 20 43 75 72 6c 0a 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20 er.(non-data).Curl.command.line.
34c20 61 72 67 75 6d 65 6e 74 73 2e 22 0a 20 20 3a 74 79 70 65 20 27 6e 61 74 6e 75 6d 29 0a 0a 28 64 arguments."...:type.'natnum)..(d
34c40 65 66 69 6e 65 2d 6f 62 73 6f 6c 65 74 65 2d 76 61 72 69 61 62 6c 65 2d 61 6c 69 61 73 20 27 67 efine-obsolete-variable-alias.'g
34c60 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 66 69 6c 74 65 72 2d 68 6f 6f 6b 0a 20 20 27 67 70 74 65 6c ptel-prompt-filter-hook...'gptel
34c80 2d 70 72 6f 6d 70 74 2d 74 72 61 6e 73 66 6f 72 6d 2d 66 75 6e 63 74 69 6f 6e 73 20 22 30 2e 39 -prompt-transform-functions."0.9
34ca0 2e 39 22 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 74 72 .9")..(defcustom.gptel-prompt-tr
34cc0 61 6e 73 66 6f 72 6d 2d 66 75 6e 63 74 69 6f 6e 73 0a 20 20 27 28 67 70 74 65 6c 2d 2d 74 72 61 ansform-functions...'(gptel--tra
34ce0 6e 73 66 6f 72 6d 2d 61 70 70 6c 79 2d 70 72 65 73 65 74 20 67 70 74 65 6c 2d 2d 74 72 61 6e 73 nsform-apply-preset.gptel--trans
34d00 66 6f 72 6d 2d 61 64 64 2d 63 6f 6e 74 65 78 74 29 0a 20 20 22 48 61 6e 64 6c 65 72 73 20 74 6f form-add-context)..."Handlers.to
34d20 20 61 75 67 6d 65 6e 74 20 6f 72 20 74 72 61 6e 73 66 6f 72 6d 20 61 20 71 75 65 72 79 20 62 65 .augment.or.transform.a.query.be
34d40 66 6f 72 65 20 73 65 6e 64 69 6e 67 20 69 74 2e 0a 0a 54 68 69 73 20 68 6f 6f 6b 20 69 73 20 63 fore.sending.it...This.hook.is.c
34d60 61 6c 6c 65 64 20 69 6e 20 61 20 74 65 6d 70 6f 72 61 72 79 20 62 75 66 66 65 72 20 63 6f 6e 74 alled.in.a.temporary.buffer.cont
34d80 61 69 6e 69 6e 67 20 74 68 65 20 74 65 78 74 20 74 6f 0a 62 65 20 73 65 6e 74 2c 20 77 69 74 68 aining.the.text.to.be.sent,.with
34da0 20 74 68 65 20 63 75 72 73 6f 72 20 61 74 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20 70 72 .the.cursor.at.the.end.of.the.pr
34dc0 6f 6d 70 74 2e 20 20 59 6f 75 20 63 61 6e 20 75 73 65 0a 69 74 20 74 6f 20 6d 6f 64 69 66 79 20 ompt...You.can.use.it.to.modify.
34de0 74 68 65 20 62 75 66 66 65 72 20 6f 72 20 62 75 66 66 65 72 2d 6c 6f 63 61 6c 20 76 61 72 69 61 the.buffer.or.buffer-local.varia
34e00 62 6c 65 73 20 61 73 20 72 65 71 75 69 72 65 64 2e 0a 0a 53 69 6e 63 65 20 74 68 65 73 65 20 66 bles.as.required...Since.these.f
34e20 75 6e 63 74 69 6f 6e 73 20 6d 6f 64 69 66 79 20 74 68 65 20 70 72 6f 6d 70 74 20 63 6f 6e 73 74 unctions.modify.the.prompt.const
34e40 72 75 63 74 69 6f 6e 20 62 75 66 66 65 72 2c 20 74 68 65 20 6f 72 64 65 72 0a 69 6e 20 77 68 69 ruction.buffer,.the.order.in.whi
34e60 63 68 20 74 68 65 79 20 72 75 6e 20 69 73 20 73 69 67 6e 69 66 69 63 61 6e 74 21 20 20 49 6e 20 ch.they.run.is.significant!..In.
34e80 70 61 72 74 69 63 75 6c 61 72 2c 20 79 6f 75 20 6d 61 79 20 77 61 6e 74 20 74 6f 20 61 64 64 0a particular,.you.may.want.to.add.
34ea0 79 6f 75 72 20 66 75 6e 63 74 69 6f 6e 20 62 65 66 6f 72 65 20 28 74 68 65 20 64 65 66 61 75 6c your.function.before.(the.defaul
34ec0 74 29 20 6f 72 20 61 66 74 65 72 0a 60 67 70 74 65 6c 2d 2d 74 72 61 6e 73 66 6f 72 6d 2d 61 64 t).or.after.`gptel--transform-ad
34ee0 64 2d 63 6f 6e 74 65 78 74 27 2c 20 77 68 69 63 68 20 61 64 64 73 20 67 70 74 65 6c 27 73 20 63 d-context',.which.adds.gptel's.c
34f00 6f 6e 74 65 78 74 20 28 6f 74 68 65 72 0a 62 75 66 66 65 72 73 2c 20 66 69 6c 65 73 20 65 74 63 ontext.(other.buffers,.files.etc
34f20 29 20 74 6f 20 74 68 69 73 20 62 75 66 66 65 72 2e 0a 0a 45 78 61 6d 70 6c 65 3a 20 41 20 74 79 ).to.this.buffer...Example:.A.ty
34f40 70 69 63 61 6c 20 75 73 65 20 63 61 73 65 20 6d 69 67 68 74 20 62 65 20 74 6f 20 73 65 61 72 63 pical.use.case.might.be.to.searc
34f60 68 20 66 6f 72 20 6f 63 63 75 72 72 65 6e 63 65 73 20 6f 66 20 24 28 63 6d 64 29 0a 61 6e 64 20 h.for.occurrences.of.$(cmd).and.
34f80 72 65 70 6c 61 63 65 20 69 74 20 77 69 74 68 20 74 68 65 20 6f 75 74 70 75 74 20 6f 66 20 74 68 replace.it.with.the.output.of.th
34fa0 65 20 73 68 65 6c 6c 20 63 6f 6d 6d 61 6e 64 20 63 6d 64 2c 20 6d 61 6b 69 6e 67 20 69 74 20 65 e.shell.command.cmd,.making.it.e
34fc0 61 73 79 0a 74 6f 20 73 65 6e 64 20 74 68 65 20 6f 75 74 70 75 74 20 6f 66 20 73 68 65 6c 6c 20 asy.to.send.the.output.of.shell.
34fe0 63 6f 6d 6d 61 6e 64 73 20 74 6f 20 74 68 65 20 4c 4c 4d 2e 0a 0a 54 72 61 6e 73 66 6f 72 6d 20 commands.to.the.LLM...Transform.
35000 66 75 6e 63 74 69 6f 6e 73 20 63 61 6e 20 62 65 20 73 79 6e 63 68 72 6f 6e 6f 75 73 20 6f 72 20 functions.can.be.synchronous.or.
35020 61 73 79 6e 63 68 72 6f 6e 6f 75 73 2e 0a 0a 53 79 6e 63 68 72 6f 6e 6f 75 73 20 68 6f 6f 6b 20 asynchronous...Synchronous.hook.
35040 66 75 6e 63 74 69 6f 6e 73 20 6d 75 73 74 20 61 63 63 65 70 74 20 7a 65 72 6f 20 6f 72 20 6f 6e functions.must.accept.zero.or.on
35060 65 20 61 72 67 75 6d 65 6e 74 3a 20 74 68 65 20 49 4e 46 4f 0a 70 6c 69 73 74 20 66 6f 72 20 74 e.argument:.the.INFO.plist.for.t
35080 68 65 20 63 75 72 72 65 6e 74 20 72 65 71 75 65 73 74 2e 0a 0a 41 73 79 6e 63 68 72 6f 6e 6f 75 he.current.request...Asynchronou
350a0 73 20 68 6f 6f 6b 20 66 75 6e 63 74 69 6f 6e 73 20 6d 75 73 74 20 61 63 63 65 70 74 20 74 77 6f s.hook.functions.must.accept.two
350c0 20 61 72 67 75 6d 65 6e 74 73 3a 20 61 20 63 61 6c 6c 62 61 63 6b 20 74 6f 0a 63 61 6c 6c 20 61 .arguments:.a.callback.to.call.a
350e0 66 74 65 72 20 74 68 65 20 74 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 20 69 73 20 63 6f 6d 70 6c fter.the.transformation.is.compl
35100 65 74 65 2c 20 61 6e 64 20 74 68 65 20 49 4e 46 4f 20 70 6c 69 73 74 20 66 6f 72 20 74 68 65 0a ete,.and.the.INFO.plist.for.the.
35120 63 75 72 72 65 6e 74 20 72 65 71 75 65 73 74 2e 0a 0a 4e 6f 74 65 20 74 68 61 74 20 77 68 69 6c current.request...Note.that.whil
35140 65 20 74 68 69 73 20 73 65 74 20 6f 66 20 68 61 6e 64 6c 65 72 73 20 63 61 6e 20 63 65 72 74 61 e.this.set.of.handlers.can.certa
35160 69 6e 6c 79 20 62 65 20 73 65 74 20 77 69 74 68 20 61 20 67 6c 6f 62 61 6c 0a 76 61 6c 75 65 20 inly.be.set.with.a.global.value.
35180 74 6f 20 62 65 20 61 70 70 6c 69 65 64 20 74 6f 20 61 6c 6c 20 71 75 65 72 69 65 73 20 69 6e 20 to.be.applied.to.all.queries.in.
351a0 61 6c 6c 20 62 75 66 66 65 72 73 2c 20 69 74 20 6d 65 61 6e 74 20 74 6f 20 62 65 20 73 65 74 0a all.buffers,.it.meant.to.be.set.
351c0 6c 6f 63 61 6c 6c 79 20 66 6f 72 20 61 20 73 70 65 63 69 66 69 63 20 62 75 66 66 65 72 2c 20 6f locally.for.a.specific.buffer,.o
351e0 72 20 63 68 61 74 20 74 6f 70 69 63 2c 20 6f 72 20 6f 6e 6c 79 20 74 68 65 20 63 6f 6e 74 65 78 r.chat.topic,.or.only.the.contex
35200 74 20 6f 66 20 61 0a 63 65 72 74 61 69 6e 20 74 61 73 6b 2e 22 0a 20 20 3a 74 79 70 65 20 27 68 t.of.a.certain.task."...:type.'h
35220 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 72 65 71 75 ook)..(defcustom.gptel-post-requ
35240 65 73 74 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 73 est-hook.nil..."Hook.run.after.s
35260 65 6e 64 69 6e 67 20 61 20 67 70 74 65 6c 20 72 65 71 75 65 73 74 2e 0a 0a 54 68 69 73 20 72 75 ending.a.gptel.request...This.ru
35280 6e 73 20 28 70 6f 73 73 69 62 6c 79 29 20 62 65 66 6f 72 65 20 61 6e 79 20 72 65 73 70 6f 6e 73 ns.(possibly).before.any.respons
352a0 65 20 69 73 20 72 65 63 65 69 76 65 64 2e 22 0a 20 20 3a 74 79 70 65 20 27 68 6f 6f 6b 29 0a 0a e.is.received."...:type.'hook)..
352c0 3b 3b 20 54 4f 44 4f 28 76 31 2e 30 29 3a 20 52 65 6d 6f 76 65 20 74 68 69 73 2e 0a 28 64 65 66 ;;.TODO(v1.0):.Remove.this..(def
352e0 76 61 72 20 67 70 74 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 var.gptel-response-filter-functi
35300 6f 6e 73 20 6e 69 6c 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 ons.nil).(make-obsolete-variable
35320 0a 20 27 67 70 74 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 ..'gptel-response-filter-functio
35340 6e 73 0a 20 22 52 65 73 70 6f 6e 73 65 20 66 69 6c 74 65 72 69 6e 67 20 69 73 20 6e 6f 20 6c 6f ns.."Response.filtering.is.no.lo
35360 6e 67 65 72 20 73 75 70 70 6f 72 74 65 64 20 69 6e 20 67 70 74 65 6c 2e 20 20 54 6f 20 74 6f 67 nger.supported.in.gptel...To.tog
35380 67 6c 65 0a 6d 61 72 6b 64 6f 77 6e 20 74 6f 20 4f 72 67 20 63 6f 6e 76 65 72 73 69 6f 6e 2c 20 gle.markdown.to.Org.conversion,.
353a0 73 65 65 20 60 67 70 74 65 6c 2d 6f 72 67 2d 63 6f 6e 76 65 72 74 2d 72 65 73 70 6f 6e 73 65 27 see.`gptel-org-convert-response'
353c0 2e 20 20 54 6f 0a 66 69 6c 74 65 72 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 20 74 65 78 74 2c 20 ...To.filter.LLM.response.text,.
353e0 65 69 74 68 65 72 20 75 73 65 20 60 67 70 74 65 6c 2d 72 65 71 75 65 73 74 27 20 77 69 74 68 20 either.use.`gptel-request'.with.
35400 61 0a 63 75 73 74 6f 6d 20 63 61 6c 6c 62 61 63 6b 2c 20 6f 72 20 75 73 65 20 60 67 70 74 65 6c a.custom.callback,.or.use.`gptel
35420 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 22 0a 20 22 30 2e -post-response-functions'.".."0.
35440 39 2e 37 22 29 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 9.7")..(defcustom.gptel-pre-resp
35460 6f 6e 73 65 2d 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 onse-hook.nil..."Hook.run.before
35480 20 69 6e 73 65 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 .inserting.the.LLM.response.into
354a0 20 74 68 65 20 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 .the.current.buffer...This.hook.
354c0 69 73 20 63 61 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 is.called.in.the.buffer.where.th
354e0 65 20 4c 4c 4d 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 e.LLM.response.will.be.inserted.
35500 0a 0a 4e 6f 74 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 ..Note:.this.hook.only.runs.if.t
35520 68 65 20 72 65 71 75 65 73 74 20 73 75 63 63 65 65 64 73 2e 22 0a 20 20 3a 74 79 70 65 20 27 68 he.request.succeeds."...:type.'h
35540 6f 6f 6b 29 0a 0a 28 64 65 66 69 6e 65 2d 6f 62 73 6f 6c 65 74 65 2d 76 61 72 69 61 62 6c 65 2d ook)..(define-obsolete-variable-
35560 61 6c 69 61 73 0a 20 20 27 67 70 74 65 6c 2d 70 6f 73 74 2d 72 65 73 70 6f 6e 73 65 2d 68 6f 6f alias...'gptel-post-response-hoo
35580 6b 20 27 67 70 74 65 6c 2d 70 6f 73 74 2d 72 65 73 70 6f 6e 73 65 2d 66 75 6e 63 74 69 6f 6e 73 k.'gptel-post-response-functions
355a0 0a 20 20 22 30 2e 36 2e 30 22 0a 20 20 22 50 6f 73 74 2d 72 65 73 70 6f 6e 73 65 20 66 75 6e 63 ..."0.6.0"..."Post-response.func
355c0 74 69 6f 6e 73 20 61 72 65 20 6e 6f 77 20 63 61 6c 6c 65 64 20 77 69 74 68 20 74 77 6f 20 61 72 tions.are.now.called.with.two.ar
355e0 67 75 6d 65 6e 74 73 3a 20 74 68 65 0a 73 74 61 72 74 20 61 6e 64 20 65 6e 64 20 62 75 66 66 65 guments:.the.start.and.end.buffe
35600 72 20 70 6f 73 69 74 69 6f 6e 73 20 6f 66 20 74 68 65 20 72 65 73 70 6f 6e 73 65 2e 22 29 0a 0a r.positions.of.the.response.")..
35620 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 70 6f 73 74 2d 72 65 73 70 6f 6e 73 65 2d 66 (defcustom.gptel-post-response-f
35640 75 6e 63 74 69 6f 6e 73 20 6e 69 6c 0a 20 20 22 41 62 6e 6f 72 6d 61 6c 20 68 6f 6f 6b 20 72 75 unctions.nil..."Abnormal.hook.ru
35660 6e 20 61 66 74 65 72 20 69 6e 73 65 72 74 69 6e 67 20 74 68 65 20 4c 4c 4d 20 72 65 73 70 6f 6e n.after.inserting.the.LLM.respon
35680 73 65 20 69 6e 74 6f 20 74 68 65 20 63 75 72 72 65 6e 74 20 62 75 66 66 65 72 2e 0a 0a 54 68 69 se.into.the.current.buffer...Thi
356a0 73 20 68 6f 6f 6b 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 74 68 65 20 62 75 66 66 65 72 20 74 s.hook.is.called.in.the.buffer.t
356c0 6f 20 77 68 69 63 68 20 74 68 65 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 20 69 73 0a 73 65 6e 74 o.which.the.LLM.response.is.sent
356e0 2c 20 61 6e 64 20 61 66 74 65 72 20 74 68 65 20 66 75 6c 6c 20 72 65 73 70 6f 6e 73 65 20 68 61 ,.and.after.the.full.response.ha
35700 73 20 62 65 65 6e 20 69 6e 73 65 72 74 65 64 2e 20 20 45 61 63 68 0a 66 75 6e 63 74 69 6f 6e 20 s.been.inserted...Each.function.
35720 69 73 20 63 61 6c 6c 65 64 20 77 69 74 68 20 74 77 6f 20 61 72 67 75 6d 65 6e 74 73 3a 20 74 68 is.called.with.two.arguments:.th
35740 65 20 72 65 73 70 6f 6e 73 65 20 62 65 67 69 6e 6e 69 6e 67 20 61 6e 64 0a 65 6e 64 20 70 6f 73 e.response.beginning.and.end.pos
35760 69 74 69 6f 6e 73 2e 0a 0a 4e 6f 74 65 3a 20 74 68 69 73 20 68 6f 6f 6b 20 72 75 6e 73 20 65 76 itions...Note:.this.hook.runs.ev
35780 65 6e 20 69 66 20 74 68 65 20 72 65 71 75 65 73 74 20 66 61 69 6c 73 2e 20 20 49 6e 20 74 68 69 en.if.the.request.fails...In.thi
357a0 73 20 63 61 73 65 20 74 68 65 0a 72 65 73 70 6f 6e 73 65 20 62 65 67 69 6e 6e 69 6e 67 20 61 6e s.case.the.response.beginning.an
357c0 64 20 65 6e 64 20 70 6f 73 69 74 69 6f 6e 73 20 61 72 65 20 62 6f 74 68 20 74 68 65 20 63 75 72 d.end.positions.are.both.the.cur
357e0 73 6f 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 74 68 65 20 sor.position.at.the.time.of.the.
35800 72 65 71 75 65 73 74 2e 22 0a 20 20 3a 74 79 70 65 20 27 68 6f 6f 6b 29 0a 0a 3b 3b 20 28 64 65 request."...:type.'hook)..;;.(de
35820 66 63 75 73 74 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 fcustom.gptel-pre-stream-insert-
35840 68 6f 6f 6b 20 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 hook.nil.;;..."Hook.run.before.e
35860 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 61 ach.insertion.of.the.LLM's.strea
35880 6d 69 6e 67 20 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 ming.response...;;.This.hook.is.
358a0 63 61 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 called.in.the.buffer.from.which.
358c0 74 68 65 20 70 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 the.prompt.was.sent.;;.to.the.LL
358e0 4d 2c 20 69 6d 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 M,.immediately.before.text.inser
35900 74 69 6f 6e 2e 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 tion.".;;...:group.'gptel.;;...:
35920 74 79 70 65 20 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 type.'hook)..(defcustom.gptel-po
35940 73 74 2d 73 74 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 st-stream-hook.nil..."Hook.run.a
35960 66 74 65 72 20 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 fter.each.insertion.of.the.LLM's
35980 20 73 74 72 65 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 .streaming.response...This.hook.
359a0 69 73 20 63 61 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 is.called.in.the.buffer.from.whi
359c0 63 68 20 74 68 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 ch.the.prompt.was.sent.to.the.LL
359e0 4d 2c 20 61 6e 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 M,.and.after.a.text.insertion.".
35a00 20 20 3a 74 79 70 65 20 27 68 6f 6f 6b 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c ..:type.'hook)..(defcustom.gptel
35a20 2d 73 61 76 65 2d 73 74 61 74 65 2d 68 6f 6f 6b 20 6e 69 6c 0a 20 20 22 48 6f 6f 6b 20 72 75 6e -save-state-hook.nil..."Hook.run
35a40 20 62 65 66 6f 72 65 20 67 70 74 65 6c 20 73 61 76 65 73 20 6d 6f 64 65 6c 20 70 61 72 61 6d 65 .before.gptel.saves.model.parame
35a60 74 65 72 73 20 74 6f 20 61 20 66 69 6c 65 2e 0a 0a 59 6f 75 20 63 61 6e 20 75 73 65 20 74 68 69 ters.to.a.file...You.can.use.thi
35a80 73 20 68 6f 6f 6b 20 74 6f 20 73 74 6f 72 65 20 61 64 64 69 74 69 6f 6e 61 6c 20 63 6f 6e 76 65 s.hook.to.store.additional.conve
35aa0 72 73 61 74 69 6f 6e 20 73 74 61 74 65 20 6f 72 0a 6d 6f 64 65 6c 20 70 61 72 61 6d 65 74 65 72 rsation.state.or.model.parameter
35ac0 73 20 74 6f 20 74 68 65 20 63 68 61 74 20 62 75 66 66 65 72 2c 20 6f 72 20 74 6f 20 6d 6f 64 69 s.to.the.chat.buffer,.or.to.modi
35ae0 66 79 20 74 68 65 20 62 75 66 66 65 72 20 69 6e 0a 73 6f 6d 65 20 6f 74 68 65 72 20 77 61 79 2e fy.the.buffer.in.some.other.way.
35b00 22 0a 20 20 3a 74 79 70 65 20 27 68 6f 6f 6b 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 "...:type.'hook)..(defcustom.gpt
35b20 65 6c 2d 64 65 66 61 75 6c 74 2d 6d 6f 64 65 20 28 69 66 20 28 66 62 6f 75 6e 64 70 20 27 6d 61 el-default-mode.(if.(fboundp.'ma
35b40 72 6b 64 6f 77 6e 2d 6d 6f 64 65 29 0a 09 09 09 09 20 20 27 6d 61 72 6b 64 6f 77 6e 2d 6d 6f 64 rkdown-mode).......'markdown-mod
35b60 65 0a 09 09 09 09 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 e.....'text-mode)..."The.default
35b80 20 6d 61 6a 6f 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 .major.mode.for.dedicated.chat.b
35ba0 75 66 66 65 72 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 uffers...If.`markdown-mode'.is.a
35bc0 76 61 69 6c 61 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 vailable,.it.is.used...Otherwise
35be0 20 67 70 74 65 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 .gptel.defaults.to.`text-mode'."
35c00 0a 20 20 3a 74 79 70 65 20 27 66 75 6e 63 74 69 6f 6e 29 0a 0a 3b 3b 20 54 4f 44 4f 3a 20 48 61 ...:type.'function)..;;.TODO:.Ha
35c20 6e 64 6c 65 20 60 70 72 6f 67 2d 6d 6f 64 65 27 20 75 73 69 6e 67 20 74 68 65 20 60 63 6f 6d 6d ndle.`prog-mode'.using.the.`comm
35c40 65 6e 74 2d 73 74 61 72 74 27 20 76 61 72 69 61 62 6c 65 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 ent-start'.variable.(defcustom.g
35c60 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 70 72 65 66 69 78 2d 61 6c 69 73 74 0a 20 20 27 28 28 6d 61 ptel-prompt-prefix-alist...'((ma
35c80 72 6b 64 6f 77 6e 2d 6d 6f 64 65 20 2e 20 22 23 23 23 20 22 29 0a 20 20 20 20 28 6f 72 67 2d 6d rkdown-mode..."###.").....(org-m
35ca0 6f 64 65 20 2e 20 22 2a 2a 2a 20 22 29 0a 20 20 20 20 28 74 65 78 74 2d 6d 6f 64 65 20 2e 20 22 ode..."***.").....(text-mode..."
35cc0 23 23 23 20 22 29 29 0a 20 20 22 53 74 72 69 6e 67 20 75 73 65 64 20 61 73 20 61 20 70 72 65 66 ###."))..."String.used.as.a.pref
35ce0 69 78 20 74 6f 20 74 68 65 20 71 75 65 72 79 20 62 65 69 6e 67 20 73 65 6e 74 20 74 6f 20 74 68 ix.to.the.query.being.sent.to.th
35d00 65 20 4c 4c 4d 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 e.LLM...This.is.meant.for.the.us
35d20 65 72 20 74 6f 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 er.to.distinguish.between.querie
35d40 73 20 61 6e 64 0a 72 65 73 70 6f 6e 73 65 73 2c 20 61 6e 64 20 69 73 20 72 65 6d 6f 76 65 64 20 s.and.responses,.and.is.removed.
35d60 66 72 6f 6d 20 74 68 65 20 71 75 65 72 79 20 62 65 66 6f 72 65 20 69 74 20 69 73 20 73 65 6e 74 from.the.query.before.it.is.sent
35d80 2e 0a 0a 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 6d 61 6a 6f ...This.is.an.alist.mapping.majo
35da0 72 20 6d 6f 64 65 73 20 74 6f 20 74 68 65 20 70 72 65 66 69 78 20 73 74 72 69 6e 67 73 2e 20 20 r.modes.to.the.prefix.strings...
35dc0 54 68 69 73 0a 69 73 20 6f 6e 6c 79 20 69 6e 73 65 72 74 65 64 20 69 6e 20 64 65 64 69 63 61 74 This.is.only.inserted.in.dedicat
35de0 65 64 20 67 70 74 65 6c 20 62 75 66 66 65 72 73 2e 22 0a 20 20 3a 74 79 70 65 20 27 28 61 6c 69 ed.gptel.buffers."...:type.'(ali
35e00 73 74 20 3a 6b 65 79 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 st.:key-type.symbol.:value-type.
35e20 73 74 72 69 6e 67 29 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 string))..(defcustom.gptel-respo
35e40 6e 73 65 2d 70 72 65 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 nse-prefix-alist...'((markdown-m
35e60 6f 64 65 20 2e 20 22 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 ode..."").....(org-mode..."")...
35e80 20 20 28 74 65 78 74 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 ..(text-mode...""))..."String.in
35ea0 73 65 72 74 65 64 20 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 serted.before.the.response.from.
35ec0 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 6f 72 20 74 68 65 20 the.LLM...This.is.meant.for.the.
35ee0 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 65 6e 20 71 75 65 72 user.to.distinguish.between.quer
35f00 69 65 73 20 61 6e 64 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 ies.and.responses...This.is.an.a
35f20 6c 69 73 74 20 6d 61 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 list.mapping.major.modes.to.the.
35f40 72 65 70 6c 79 20 70 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 reply.prefix.strings...This.is.o
35f60 6e 6c 79 20 69 6e 73 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 nly.inserted.in.dedicated.gptel.
35f80 62 75 66 66 65 72 73 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 buffers.before.the.AI's.response
35fa0 2e 22 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 20 73 79 6d ."...:type.'(alist.:key-type.sym
35fc0 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 65 66 63 75 bol.:value-type.string))..(defcu
35fe0 73 74 6f 6d 20 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 73 65 70 61 72 61 74 6f 72 20 22 5c stom.gptel-response-separator."\
36000 6e 5c 6e 22 0a 20 20 22 53 74 72 69 6e 67 20 69 6e 73 65 72 74 65 64 20 62 65 66 6f 72 65 20 72 n\n"..."String.inserted.before.r
36020 65 73 70 6f 6e 73 65 73 2e 0a 0a 41 6c 73 6f 20 69 6e 73 65 72 74 65 64 20 62 65 66 6f 72 65 20 esponses...Also.inserted.before.
36040 61 6e 64 20 61 66 74 65 72 20 6e 6f 6e 2d 63 6f 6e 73 65 63 75 74 69 76 65 20 74 6f 6f 6c 20 63 and.after.non-consecutive.tool.c
36060 61 6c 6c 73 2e 22 0a 20 20 3a 74 79 70 65 20 27 73 74 72 69 6e 67 29 0a 0a 28 64 65 66 63 75 73 alls."...:type.'string)..(defcus
36080 74 6f 6d 20 67 70 74 65 6c 2d 75 73 65 2d 68 65 61 64 65 72 2d 6c 69 6e 65 20 74 0a 20 20 22 57 tom.gptel-use-header-line.t..."W
360a0 68 65 74 68 65 72 20 60 67 70 74 65 6c 2d 6d 6f 64 65 27 20 73 68 6f 75 6c 64 20 75 73 65 20 68 hether.`gptel-mode'.should.use.h
360c0 65 61 64 65 72 2d 6c 69 6e 65 20 66 6f 72 20 73 74 61 74 75 73 20 69 6e 66 6f 72 6d 61 74 69 6f eader-line.for.status.informatio
360e0 6e 2e 0a 0a 57 68 65 6e 20 73 65 74 20 74 6f 20 6e 69 6c 2c 20 75 73 65 20 74 68 65 20 6d 6f 64 n...When.set.to.nil,.use.the.mod
36100 65 20 6c 69 6e 65 20 66 6f 72 20 28 6d 69 6e 69 6d 61 6c 29 20 73 74 61 74 75 73 0a 69 6e 66 6f e.line.for.(minimal).status.info
36120 72 6d 61 74 69 6f 6e 20 61 6e 64 20 74 68 65 20 65 63 68 6f 20 61 72 65 61 20 66 6f 72 20 6d 65 rmation.and.the.echo.area.for.me
36140 73 73 61 67 65 73 2e 22 0a 20 20 3a 74 79 70 65 20 27 62 6f 6f 6c 65 61 6e 29 0a 0a 3b 3b 20 53 ssages."...:type.'boolean)..;;.S
36160 65 74 20 6d 69 6e 69 6d 61 6c 6c 79 20 74 6f 20 61 76 6f 69 64 20 64 69 73 70 6c 61 79 2d 62 75 et.minimally.to.avoid.display-bu
36180 66 66 65 72 20 61 63 74 69 6f 6e 20 61 6c 69 73 74 20 63 6f 6e 66 6c 69 63 74 73 20 28 23 35 33 ffer.action.alist.conflicts.(#53
361a0 33 29 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 64 69 73 70 6c 61 79 2d 62 75 66 66 3).(defcustom.gptel-display-buff
361c0 65 72 2d 61 63 74 69 6f 6e 20 60 28 6e 69 6c 20 28 62 6f 64 79 2d 66 75 6e 63 74 69 6f 6e 20 2e er-action.`(nil.(body-function..
361e0 20 2c 23 27 73 65 6c 65 63 74 2d 77 69 6e 64 6f 77 29 29 0a 20 20 22 54 68 65 20 61 63 74 69 6f .,#'select-window))..."The.actio
36200 6e 20 75 73 65 64 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 n.used.to.display.gptel.chat.buf
36220 66 65 72 73 2e 0a 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 fers...The.gptel.buffer.is.displ
36240 61 79 65 64 20 69 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 ayed.in.a.window.using....(displ
36260 61 79 2d 62 75 66 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 ay-buffer.BUFFER.gptel-display-b
36280 75 66 66 65 72 2d 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 uffer-action)..The.value.of.this
362a0 20 6f 70 74 69 6f 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 .option.has.the.form.(FUNCTION..
362c0 20 41 4c 49 53 54 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 .ALIST),.where.FUNCTION.is.a.fun
362e0 63 74 69 6f 6e 20 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 ction.or.a.list.of.functions...E
36300 61 63 68 20 73 75 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 ach.such.function.should.accept.
36320 74 77 6f 20 61 72 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 two.arguments:.a.buffer.to.displ
36340 61 79 20 61 6e 64 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 ay.and.an.alist.of.the.same.form
36360 20 61 73 20 41 4c 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 .as.ALIST...See.info.node.`(elis
36380 70 29 43 68 6f 6f 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 p)Choosing.Window'.for.details."
363a0 0a 20 20 3a 74 79 70 65 20 64 69 73 70 6c 61 79 2d 62 75 66 66 65 72 2d 2d 61 63 74 69 6f 6e 2d ...:type.display-buffer--action-
363c0 63 75 73 74 6f 6d 2d 74 79 70 65 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 63 custom-type)..(defcustom.gptel-c
363e0 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 20 rowdsourced-prompts-file...(let.
36400 28 28 63 61 63 68 65 2d 64 69 72 20 28 6f 72 20 28 65 76 61 6c 2d 77 68 65 6e 2d 63 6f 6d 70 69 ((cache-dir.(or.(eval-when-compi
36420 6c 65 0a 09 09 09 20 28 72 65 71 75 69 72 65 20 27 78 64 67 29 0a 09 09 09 20 28 78 64 67 2d 63 le.....(require.'xdg).....(xdg-c
36440 61 63 68 65 2d 68 6f 6d 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ache-home)).....................
36460 20 20 20 75 73 65 72 2d 65 6d 61 63 73 2d 64 69 72 65 63 74 6f 72 79 29 29 29 0a 20 20 20 20 28 ...user-emacs-directory))).....(
36480 65 78 70 61 6e 64 2d 66 69 6c 65 2d 6e 61 6d 65 20 22 67 70 74 65 6c 2d 63 72 6f 77 64 73 6f 75 expand-file-name."gptel-crowdsou
364a0 72 63 65 64 2d 70 72 6f 6d 70 74 73 2e 63 73 76 22 20 63 61 63 68 65 2d 64 69 72 29 29 0a 20 20 rced-prompts.csv".cache-dir))...
364c0 22 46 69 6c 65 20 75 73 65 64 20 74 6f 20 73 74 6f 72 65 20 63 72 6f 77 64 73 6f 75 72 63 65 64 "File.used.to.store.crowdsourced
364e0 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 70 72 6f 6d .system.prompts...These.are.prom
36500 70 74 73 20 63 61 63 68 65 64 20 66 72 6f 6d 20 61 6e 20 6f 6e 6c 69 6e 65 20 73 6f 75 72 63 65 pts.cached.from.an.online.source
36520 20 28 73 65 65 0a 60 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 .(see.`gptel--crowdsourced-promp
36540 74 73 2d 75 72 6c 27 29 2c 20 61 6e 64 20 63 61 6e 20 62 65 20 73 65 74 20 66 72 6f 6d 20 74 68 ts-url'),.and.can.be.set.from.th
36560 65 0a 74 72 61 6e 73 69 65 6e 74 20 6d 65 6e 75 20 69 6e 74 65 72 66 61 63 65 20 70 72 6f 76 69 e.transient.menu.interface.provi
36580 64 65 64 20 62 79 20 60 67 70 74 65 6c 2d 6d 65 6e 75 27 2e 22 0a 20 20 3a 74 79 70 65 20 27 66 ded.by.`gptel-menu'."...:type.'f
365a0 69 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 ile)..;;.Model.and.interaction.p
365c0 61 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 arameters.(defcustom.gptel-direc
365e0 74 69 76 65 73 0a 20 20 27 28 28 64 65 66 61 75 6c 74 20 20 20 20 20 2e 20 22 59 6f 75 20 61 72 tives...'((default......."You.ar
36600 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 6c 69 76 69 6e 67 20 e.a.large.language.model.living.
36620 69 6e 20 45 6d 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 in.Emacs.and.a.helpful.assistant
36640 2e 20 52 65 73 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 ..Respond.concisely.").....(prog
36660 72 61 6d 6d 69 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 ramming..."You.are.a.large.langu
36680 61 67 65 20 6d 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 age.model.and.a.careful.programm
366a0 65 72 2e 20 50 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 er..Provide.code.and.only.code.a
366c0 73 20 6f 75 74 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 s.output.without.any.additional.
366e0 74 65 78 74 2c 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 text,.prompt.or.note.").....(wri
36700 74 69 6e 67 20 20 20 20 20 2e 20 22 59 6f 75 20 61 72 65 20 61 20 6c 61 72 67 65 20 6c 61 6e 67 ting......."You.are.a.large.lang
36720 75 61 67 65 20 6d 6f 64 65 6c 20 61 6e 64 20 61 20 77 72 69 74 69 6e 67 20 61 73 73 69 73 74 61 uage.model.and.a.writing.assista
36740 6e 74 2e 20 52 65 73 70 6f 6e 64 20 63 6f 6e 63 69 73 65 6c 79 2e 22 29 0a 20 20 20 20 28 63 68 nt..Respond.concisely.").....(ch
36760 61 74 20 20 20 20 20 20 20 20 2e 20 22 59 6f 75 20 61 72 65 20 61 20 6c 61 72 67 65 20 6c 61 6e at.........."You.are.a.large.lan
36780 67 75 61 67 65 20 6d 6f 64 65 6c 20 61 6e 64 20 61 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 20 70 guage.model.and.a.conversation.p
367a0 61 72 74 6e 65 72 2e 20 52 65 73 70 6f 6e 64 20 63 6f 6e 63 69 73 65 6c 79 2e 22 29 29 0a 20 20 artner..Respond.concisely."))...
367c0 22 53 79 73 74 65 6d 20 70 72 6f 6d 70 74 73 20 6f 72 20 64 69 72 65 63 74 69 76 65 73 20 66 6f "System.prompts.or.directives.fo
367e0 72 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 r.the.LLM...Each.entry.in.this.a
36800 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
36820 72 65 63 74 69 76 65 20 74 6f 0a 74 68 65 20 64 69 72 65 63 74 69 76 65 20 69 74 73 65 6c 66 2e rective.to.the.directive.itself.
36840 20 20 42 79 20 64 65 66 61 75 6c 74 2c 20 67 70 74 65 6c 20 75 73 65 73 20 74 68 65 20 64 69 72 ..By.default,.gptel.uses.the.dir
36860 65 63 74 69 76 65 20 77 69 74 68 0a 74 68 65 20 6b 65 79 20 5c 5c 2b 60 64 65 66 61 75 6c 74 27 ective.with.the.key.\\+`default'
36880 2e 0a 0a 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 63 68 ...To.set.the.directive.for.a.ch
368a0 61 74 20 73 65 73 73 69 6f 6e 20 69 6e 74 65 72 61 63 74 69 76 65 6c 79 20 63 61 6c 6c 0a 60 67 at.session.interactively.call.`g
368c0 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 65 6e ptel-send'.with.a.prefix.argumen
368e0 74 2c 20 6f 72 20 63 61 6c 6c 20 60 67 70 74 65 6c 2d 6d 65 6e 75 27 2e 0a 0a 41 20 5c 22 64 69 t,.or.call.`gptel-menu'...A.\"di
36900 72 65 63 74 69 76 65 5c 22 20 69 73 20 74 79 70 69 63 61 6c 6c 79 20 74 68 65 20 73 79 73 74 65 rective\".is.typically.the.syste
36920 6d 20 6d 65 73 73 61 67 65 20 28 61 6c 73 6f 20 63 61 6c 6c 65 64 0a 73 79 73 74 65 6d 20 70 72 m.message.(also.called.system.pr
36940 6f 6d 70 74 20 6f 72 20 73 79 73 74 65 6d 20 69 6e 73 74 72 75 63 74 69 6f 6e 29 20 73 65 6e 74 ompt.or.system.instruction).sent
36960 20 61 74 20 74 68 65 20 62 65 67 69 6e 6e 69 6e 67 20 6f 66 0a 65 61 63 68 20 72 65 71 75 65 73 .at.the.beginning.of.each.reques
36980 74 20 74 6f 20 74 68 65 20 4c 4c 4d 2e 20 20 49 74 20 69 73 20 75 73 65 64 20 74 6f 20 73 65 74 t.to.the.LLM...It.is.used.to.set
369a0 20 67 65 6e 65 72 61 6c 20 69 6e 73 74 72 75 63 74 69 6f 6e 73 2c 0a 65 78 70 65 63 74 61 74 69 .general.instructions,.expectati
369c0 6f 6e 73 20 61 6e 64 20 74 68 65 20 6f 76 65 72 61 6c 6c 20 74 6f 6e 65 2e 0a 0a 67 70 74 65 6c ons.and.the.overall.tone...gptel
369e0 27 73 20 69 64 65 61 20 6f 66 20 74 68 65 20 64 69 72 65 63 74 69 76 65 20 69 73 20 6d 6f 72 65 's.idea.of.the.directive.is.more
36a00 20 67 65 6e 65 72 61 6c 2e 20 20 41 20 64 69 72 65 63 74 69 76 65 20 69 6e 0a 60 67 70 74 65 6c .general...A.directive.in.`gptel
36a20 2d 64 69 72 65 63 74 69 76 65 73 27 20 63 61 6e 20 62 65 0a 0a 2d 20 41 20 73 74 72 69 6e 67 2c -directives'.can.be..-.A.string,
36a40 20 69 6e 74 65 72 70 72 65 74 65 64 20 61 73 20 74 68 65 20 73 79 73 74 65 6d 20 6d 65 73 73 61 .interpreted.as.the.system.messa
36a60 67 65 2e 0a 0a 2d 20 41 20 6c 69 73 74 20 6f 66 20 73 74 72 69 6e 67 73 2c 20 77 68 6f 73 65 20 ge...-.A.list.of.strings,.whose.
36a80 66 69 72 73 74 20 28 70 6f 73 73 69 62 6c 79 20 6e 69 6c 29 20 65 6c 65 6d 65 6e 74 20 69 73 0a first.(possibly.nil).element.is.
36aa0 20 20 69 6e 74 65 72 70 72 65 74 65 64 20 61 73 20 74 68 65 20 73 79 73 74 65 6d 20 6d 65 73 73 ..interpreted.as.the.system.mess
36ac0 61 67 65 2c 20 61 6e 64 20 74 68 65 20 72 65 6d 61 69 6e 69 6e 67 20 65 6c 65 6d 65 6e 74 73 0a age,.and.the.remaining.elements.
36ae0 20 20 61 73 20 28 70 6f 73 73 69 62 6c 79 20 6e 69 6c 29 20 61 6c 74 65 72 6e 61 74 69 6e 67 20 ..as.(possibly.nil).alternating.
36b00 75 73 65 72 20 70 72 6f 6d 70 74 73 20 61 6e 64 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 73 2e 0a user.prompts.and.LLM.responses..
36b20 20 20 54 68 69 73 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 74 65 6d 70 6c 61 74 65 20 74 ..This.can.be.used.to.template.t
36b40 68 65 20 69 6e 69 74 69 61 6c 20 70 61 72 74 20 6f 66 20 61 20 63 6f 6e 76 65 72 73 61 74 69 6f he.initial.part.of.a.conversatio
36b60 6e 2e 0a 0a 2d 20 41 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 72 65 74 75 72 6e 73 20 61 20 n...-.A.function.that.returns.a.
36b80 73 74 72 69 6e 67 20 6f 72 20 61 20 6c 69 73 74 20 6f 66 20 73 74 72 69 6e 67 73 2c 0a 20 20 69 string.or.a.list.of.strings,...i
36ba0 6e 74 65 72 70 72 65 74 65 64 20 61 73 20 74 68 65 20 61 62 6f 76 65 2e 20 20 54 68 69 73 20 63 nterpreted.as.the.above...This.c
36bc0 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 64 79 6e 61 6d 69 63 61 6c 6c 79 0a 20 20 67 65 6e 65 an.be.used.to.dynamically...gene
36be0 72 61 74 65 20 61 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 20 61 6e 64 2f 6f 72 20 63 6f 6e rate.a.system.message.and/or.con
36c00 76 65 72 73 61 74 69 6f 6e 20 74 65 6d 70 6c 61 74 65 20 62 61 73 65 64 20 6f 6e 0a 20 20 74 68 versation.template.based.on...th
36c20 65 20 63 75 72 72 65 6e 74 20 63 6f 6e 74 65 78 74 2e 20 20 53 65 65 20 74 68 65 20 64 65 66 69 e.current.context...See.the.defi
36c40 6e 69 74 69 6f 6e 20 6f 66 0a 20 20 60 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 64 69 72 65 nition.of...`gptel--rewrite-dire
36c60 63 74 69 76 65 2d 64 65 66 61 75 6c 74 27 20 66 6f 72 20 61 6e 20 65 78 61 6d 70 6c 65 2e 22 0a ctive-default'.for.an.example.".
36c80 20 20 3a 73 61 66 65 20 23 27 61 6c 77 61 79 73 0a 20 20 3a 74 79 70 65 20 27 28 61 6c 69 73 74 ..:safe.#'always...:type.'(alist
36ca0 20 3a 6b 65 79 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 .:key-type.symbol.:value-type.st
36cc0 72 69 6e 67 29 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 ring))..(defcustom.gptel-max-tok
36ce0 65 6e 73 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 ens.nil..."Max.tokens.per.respon
36d00 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.
36d20 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 20 31 30 30 2d 33 of.words.in.the.response...100-3
36d40 30 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 00.is.a.reasonable.range.for.sho
36d60 72 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 rt.answers,.400.or.more.for.long
36d80 65 72 0a 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 er.responses...To.set.the.target
36da0 20 74 6f 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 .token.count.for.a.chat.session.
36dc0 69 6e 74 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 interactively.call.`gptel-send'.
36de0 77 69 74 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 with.a.prefix.argument."...:safe
36e00 20 23 27 61 6c 77 61 79 73 0a 20 20 3a 74 79 70 65 20 27 28 63 68 6f 69 63 65 20 28 6e 61 74 6e .#'always...:type.'(choice.(natn
36e20 75 6d 20 3a 74 61 67 20 22 53 70 65 63 69 66 79 20 54 6f 6b 65 6e 20 63 6f 75 6e 74 22 29 0a 20 um.:tag."Specify.Token.count")..
36e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 20 22 44 65 66 ................(const.:tag."Def
36e60 61 75 6c 74 22 20 6e 69 6c 29 29 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 74 ault".nil)))..(defcustom.gptel-t
36e80 65 6d 70 65 72 61 74 75 72 65 20 31 2e 30 0a 20 20 22 5c 22 54 65 6d 70 65 72 61 74 75 72 65 5c emperature.1.0..."\"Temperature\
36ea0 22 20 6f 66 20 74 68 65 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 2e 0a 0a 54 68 69 73 20 69 73 20 ".of.the.LLM.response...This.is.
36ec0 61 20 6e 75 6d 62 65 72 20 62 65 74 77 65 65 6e 20 30 2e 30 20 61 6e 64 20 32 2e 30 20 74 68 61 a.number.between.0.0.and.2.0.tha
36ee0 74 20 63 6f 6e 74 72 6f 6c 73 20 74 68 65 20 72 61 6e 64 6f 6d 6e 65 73 73 0a 6f 66 20 74 68 65 t.controls.the.randomness.of.the
36f00 20 72 65 73 70 6f 6e 73 65 2c 20 77 69 74 68 20 32 2e 30 20 62 65 69 6e 67 20 74 68 65 20 6d 6f .response,.with.2.0.being.the.mo
36f20 73 74 20 72 61 6e 64 6f 6d 2e 0a 0a 54 6f 20 73 65 74 20 74 68 65 20 74 65 6d 70 65 72 61 74 75 st.random...To.set.the.temperatu
36f40 72 65 20 66 6f 72 20 61 20 63 68 61 74 20 73 65 73 73 69 6f 6e 20 69 6e 74 65 72 61 63 74 69 76 re.for.a.chat.session.interactiv
36f60 65 6c 79 20 63 61 6c 6c 0a 60 67 70 74 65 6c 2d 73 65 6e 64 27 20 77 69 74 68 20 61 20 70 72 65 ely.call.`gptel-send'.with.a.pre
36f80 66 69 78 20 61 72 67 75 6d 65 6e 74 2e 22 0a 20 20 3a 73 61 66 65 20 28 6c 61 6d 62 64 61 20 28 fix.argument."...:safe.(lambda.(
36fa0 76 29 20 28 6f 72 20 28 6e 75 6c 6c 20 76 29 20 28 6e 75 6d 62 65 72 70 20 76 29 29 29 0a 20 20 v).(or.(null.v).(numberp.v)))...
36fc0 3a 74 79 70 65 20 27 28 63 68 6f 69 63 65 20 28 6e 75 6d 62 65 72 20 3a 74 61 67 20 22 54 65 6d :type.'(choice.(number.:tag."Tem
36fe0 70 65 72 61 74 75 72 65 20 76 61 6c 75 65 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 perature.value")................
37000 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 20 22 55 73 65 20 64 65 66 61 75 6c 74 22 20 6e 69 6c 29 ..(const.:tag."Use.default".nil)
37020 29 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 63 61 63 68 65 20 6e 69 6c 0a 20 ))..(defcustom.gptel-cache.nil..
37040 20 22 57 68 65 74 68 65 72 20 74 68 65 20 4c 4c 4d 20 73 68 6f 75 6c 64 20 63 61 63 68 65 20 72 ."Whether.the.LLM.should.cache.r
37060 65 71 75 65 73 74 20 63 6f 6e 74 65 6e 74 2e 0a 0a 53 6f 6d 65 20 4c 4c 4d 20 62 61 63 6b 65 6e equest.content...Some.LLM.backen
37080 64 73 20 63 61 6e 20 63 61 63 68 65 20 63 6f 6e 74 65 6e 74 20 73 65 6e 74 20 74 6f 20 69 74 20 ds.can.cache.content.sent.to.it.
370a0 62 79 20 67 70 74 65 6c 2c 20 73 6f 20 74 68 61 74 0a 6f 6e 6c 79 20 74 68 65 20 6e 65 77 6c 79 by.gptel,.so.that.only.the.newly
370c0 20 69 6e 63 6c 75 64 65 64 20 70 61 72 74 20 6f 66 20 74 68 65 20 74 65 78 74 20 6e 65 65 64 73 .included.part.of.the.text.needs
370e0 20 74 6f 20 62 65 20 70 72 6f 63 65 73 73 65 64 20 6f 6e 0a 73 75 62 73 65 71 75 65 6e 74 20 63 .to.be.processed.on.subsequent.c
37100 6f 6e 76 65 72 73 61 74 69 6f 6e 20 74 75 72 6e 73 2e 20 20 54 68 69 73 20 72 65 73 75 6c 74 73 onversation.turns...This.results
37120 20 69 6e 20 66 61 73 74 65 72 20 61 6e 64 0a 73 69 67 6e 69 66 69 63 61 6e 74 6c 79 20 63 68 65 .in.faster.and.significantly.che
37140 61 70 65 72 20 70 72 6f 63 65 73 73 69 6e 67 2e 0a 0a 4e 4f 54 45 3a 20 4d 61 6e 75 61 6c 20 6f aper.processing...NOTE:.Manual.o
37160 72 20 63 6c 69 65 6e 74 2d 63 6f 6e 66 69 67 75 72 61 62 6c 65 20 63 61 63 68 69 6e 67 20 69 73 r.client-configurable.caching.is
37180 20 63 75 72 72 65 6e 74 6c 79 0a 73 75 70 70 6f 72 74 65 64 20 6f 6e 6c 79 20 62 79 20 74 68 65 .currently.supported.only.by.the
371a0 20 41 6e 74 68 72 6f 70 69 63 20 41 50 49 20 61 6e 64 20 74 68 75 73 20 74 68 65 0a 60 67 70 74 .Anthropic.API.and.thus.the.`gpt
371c0 65 6c 2d 61 6e 74 68 72 6f 70 69 63 27 20 62 61 63 6b 65 6e 64 2e 20 20 54 68 69 73 20 76 61 72 el-anthropic'.backend...This.var
371e0 69 61 62 6c 65 20 68 61 73 20 6e 6f 20 65 66 66 65 63 74 20 6f 6e 20 74 68 65 0a 62 65 68 61 76 iable.has.no.effect.on.the.behav
37200 69 6f 72 20 6f 66 20 6f 74 68 65 72 20 62 61 63 6b 65 6e 64 73 2e 0a 0a 54 68 69 73 20 76 61 72 ior.of.other.backends...This.var
37220 69 61 62 6c 65 20 63 6f 6e 74 72 6f 6c 73 20 77 68 69 63 68 20 70 61 72 74 73 20 6f 66 20 74 68 iable.controls.which.parts.of.th
37240 65 20 71 75 65 72 79 20 77 69 6c 6c 20 62 65 20 63 61 63 68 65 64 2c 0a 61 6e 64 20 63 61 6e 20 e.query.will.be.cached,.and.can.
37260 62 65 20 74 68 65 20 73 79 6d 62 6f 6c 73 20 74 20 6f 72 20 6e 69 6c 20 74 6f 20 63 61 63 68 65 be.the.symbols.t.or.nil.to.cache
37280 20 65 76 65 72 79 74 68 69 6e 67 20 6f 72 20 6e 6f 74 68 69 6e 67 0a 72 65 73 70 65 63 74 69 76 .everything.or.nothing.respectiv
372a0 65 6c 79 2e 20 49 74 20 63 61 6e 20 61 6c 73 6f 20 62 65 20 61 20 6c 69 73 74 20 6f 66 20 73 79 ely..It.can.also.be.a.list.of.sy
372c0 6d 62 6f 6c 73 3a 0a 0a 2d 20 6d 65 73 73 61 67 65 3a 20 43 61 63 68 65 20 63 6f 6e 76 65 72 73 mbols:..-.message:.Cache.convers
372e0 61 74 69 6f 6e 20 6d 65 73 73 61 67 65 73 0a 2d 20 73 79 73 74 65 6d 3a 20 43 61 63 68 65 20 74 ation.messages.-.system:.Cache.t
37300 68 65 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 0a 2d 20 74 6f 6f 6c 3a 20 43 61 63 68 65 20 he.system.message.-.tool:.Cache.
37320 74 6f 6f 6c 20 64 65 66 69 6e 69 74 69 6f 6e 73 0a 0a 45 78 61 6d 70 6c 65 73 3a 0a 0a 53 65 74 tool.definitions..Examples:..Set
37340 74 69 6e 67 20 69 74 20 74 6f 20 28 6d 65 73 73 61 67 65 20 73 79 73 74 65 6d 29 20 77 69 6c 6c ting.it.to.(message.system).will
37360 20 63 61 63 68 65 20 74 68 65 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 20 61 6e 64 0a 74 68 .cache.the.system.message.and.th
37380 65 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 20 74 65 78 74 2e 0a 0a 53 65 74 74 69 6e 67 20 69 74 e.conversation.text...Setting.it
373a0 20 74 6f 20 28 6d 65 73 73 61 67 65 20 73 79 73 74 65 6d 20 74 6f 6f 6c 29 20 77 69 6c 6c 20 63 .to.(message.system.tool).will.c
373c0 61 63 68 65 20 65 76 65 72 79 74 68 69 6e 67 20 61 6e 64 20 69 73 0a 74 68 65 20 73 61 6d 65 20 ache.everything.and.is.the.same.
373e0 61 73 20 74 2e 22 0a 20 20 3a 74 79 70 65 20 27 28 63 68 6f 69 63 65 0a 20 20 20 20 20 20 20 20 as.t."...:type.'(choice.........
37400 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 20 22 43 61 63 68 65 20 65 76 65 72 79 74 68 69 6e 67 22 ..(const.:tag."Cache.everything"
37420 20 74 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 44 6f 20 6e 6f .t)...........(const.:tag."Do.no
37440 74 20 63 61 63 68 65 22 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 28 72 65 70 65 61 74 20 t.cache".nil)...........(repeat.
37460 73 79 6d 62 6f 6c 29 29 0a 20 20 3a 67 72 6f 75 70 20 27 67 70 74 65 6c 29 0a 0a 28 64 65 66 76 symbol))...:group.'gptel)..(defv
37480 61 72 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 62 61 63 6b 65 6e 64 73 29 0a 0a 28 64 65 66 63 ar.gptel--known-backends)..(defc
374a0 6f 6e 73 74 20 67 70 74 65 6c 2d 2d 6f 70 65 6e 61 69 2d 6d 6f 64 65 6c 73 0a 20 20 27 28 28 67 onst.gptel--openai-models...'((g
374c0 70 74 2d 34 6f 0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 41 64 76 61 6e 63 65 pt-4o......:description."Advance
374e0 64 20 6d 6f 64 65 6c 20 66 6f 72 20 63 6f 6d 70 6c 65 78 20 74 61 73 6b 73 3b 20 63 68 65 61 70 d.model.for.complex.tasks;.cheap
37500 65 72 20 26 20 66 61 73 74 65 72 20 74 68 61 6e 20 47 50 54 2d 54 75 72 62 6f 22 0a 20 20 20 20 er.&.faster.than.GPT-Turbo".....
37520 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 6d 65 64 69 61 20 74 6f 6f 6c 2d 75 73 65 20 6a .:capabilities.(media.tool-use.j
37540 73 6f 6e 20 75 72 6c 29 0a 20 20 20 20 20 3a 6d 69 6d 65 2d 74 79 70 65 73 20 28 22 69 6d 61 67 son.url)......:mime-types.("imag
37560 65 2f 6a 70 65 67 22 20 22 69 6d 61 67 65 2f 70 6e 67 22 20 22 69 6d 61 67 65 2f 67 69 66 22 20 e/jpeg"."image/png"."image/gif".
37580 22 69 6d 61 67 65 2f 77 65 62 70 22 29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 "image/webp")......:context-wind
375a0 6f 77 20 31 32 38 0a 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 32 2e 35 30 0a 20 20 20 ow.128......:input-cost.2.50....
375c0 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 31 30 0a 20 20 20 20 20 3a 63 75 74 6f 66 66 2d 64 ..:output-cost.10......:cutoff-d
375e0 61 74 65 20 22 32 30 32 33 2d 31 30 22 29 0a 20 20 20 20 28 67 70 74 2d 34 6f 2d 6d 69 6e 69 0a ate."2023-10").....(gpt-4o-mini.
37600 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 43 68 65 61 70 20 6d 6f 64 65 6c 20 66 .....:description."Cheap.model.f
37620 6f 72 20 66 61 73 74 20 74 61 73 6b 73 3b 20 63 68 65 61 70 65 72 20 26 20 6d 6f 72 65 20 63 61 or.fast.tasks;.cheaper.&.more.ca
37640 70 61 62 6c 65 20 74 68 61 6e 20 47 50 54 2d 33 2e 35 20 54 75 72 62 6f 22 0a 20 20 20 20 20 3a pable.than.GPT-3.5.Turbo"......:
37660 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 6d 65 64 69 61 20 74 6f 6f 6c 2d 75 73 65 20 6a 73 6f capabilities.(media.tool-use.jso
37680 6e 20 75 72 6c 29 0a 20 20 20 20 20 3a 6d 69 6d 65 2d 74 79 70 65 73 20 28 22 69 6d 61 67 65 2f n.url)......:mime-types.("image/
376a0 6a 70 65 67 22 20 22 69 6d 61 67 65 2f 70 6e 67 22 20 22 69 6d 61 67 65 2f 67 69 66 22 20 22 69 jpeg"."image/png"."image/gif"."i
376c0 6d 61 67 65 2f 77 65 62 70 22 29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 mage/webp")......:context-window
376e0 20 31 32 38 0a 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 30 2e 31 35 0a 20 20 20 20 20 .128......:input-cost.0.15......
37700 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 30 2e 36 30 0a 20 20 20 20 20 3a 63 75 74 6f 66 66 2d 64 :output-cost.0.60......:cutoff-d
37720 61 74 65 20 22 32 30 32 33 2d 31 30 22 29 0a 20 20 20 20 28 67 70 74 2d 34 2e 31 0a 20 20 20 20 ate."2023-10").....(gpt-4.1.....
37740 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 46 6c 61 67 73 68 69 70 20 6d 6f 64 65 6c 20 66 6f .:description."Flagship.model.fo
37760 72 20 63 6f 6d 70 6c 65 78 20 74 61 73 6b 73 22 0a 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69 74 r.complex.tasks"......:capabilit
37780 69 65 73 20 28 6d 65 64 69 61 20 74 6f 6f 6c 2d 75 73 65 20 6a 73 6f 6e 20 75 72 6c 29 0a 20 20 ies.(media.tool-use.json.url)...
377a0 20 20 20 3a 6d 69 6d 65 2d 74 79 70 65 73 20 28 22 69 6d 61 67 65 2f 6a 70 65 67 22 20 22 69 6d ...:mime-types.("image/jpeg"."im
377c0 61 67 65 2f 70 6e 67 22 20 22 69 6d 61 67 65 2f 67 69 66 22 20 22 69 6d 61 67 65 2f 77 65 62 70 age/png"."image/gif"."image/webp
377e0 22 29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 31 30 32 34 0a 20 20 20 ")......:context-window.1024....
37800 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 32 2e 30 0a 20 20 20 20 20 3a 6f 75 74 70 75 74 2d 63 ..:input-cost.2.0......:output-c
37820 6f 73 74 20 38 2e 30 0a 20 20 20 20 20 3a 63 75 74 6f 66 66 2d 64 61 74 65 20 22 32 30 32 34 2d ost.8.0......:cutoff-date."2024-
37840 30 35 22 29 0a 20 20 20 20 28 67 70 74 2d 34 2e 35 2d 70 72 65 76 69 65 77 0a 20 20 20 20 20 3a 05").....(gpt-4.5-preview......:
37860 64 65 73 63 72 69 70 74 69 6f 6e 20 22 44 45 50 52 45 43 41 54 45 44 3a 20 55 73 65 20 67 70 74 description."DEPRECATED:.Use.gpt
37880 2d 34 2e 31 20 69 6e 73 74 65 61 64 22 0a 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 -4.1.instead"......:capabilities
378a0 20 28 6d 65 64 69 61 20 74 6f 6f 6c 2d 75 73 65 20 75 72 6c 29 0a 20 20 20 20 20 3a 6d 69 6d 65 .(media.tool-use.url)......:mime
378c0 2d 74 79 70 65 73 20 28 22 69 6d 61 67 65 2f 6a 70 65 67 22 20 22 69 6d 61 67 65 2f 70 6e 67 22 -types.("image/jpeg"."image/png"
378e0 20 22 69 6d 61 67 65 2f 67 69 66 22 20 22 69 6d 61 67 65 2f 77 65 62 70 22 29 0a 20 20 20 20 20 ."image/gif"."image/webp")......
37900 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 31 32 38 0a 20 20 20 20 20 3a 69 6e 70 75 74 2d :context-window.128......:input-
37920 63 6f 73 74 20 37 35 0a 20 20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 31 35 30 0a 20 20 cost.75......:output-cost.150...
37940 20 20 20 3a 63 75 74 6f 66 66 2d 64 61 74 65 20 22 32 30 32 33 2d 31 30 22 29 0a 20 20 20 20 28 ...:cutoff-date."2023-10").....(
37960 67 70 74 2d 34 2e 31 2d 6d 69 6e 69 0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 gpt-4.1-mini......:description."
37980 42 61 6c 61 6e 63 65 20 62 65 74 77 65 65 6e 20 69 6e 74 65 6c 6c 69 67 65 6e 63 65 2c 20 73 70 Balance.between.intelligence,.sp
379a0 65 65 64 20 61 6e 64 20 63 6f 73 74 22 0a 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 eed.and.cost"......:capabilities
379c0 20 28 6d 65 64 69 61 20 74 6f 6f 6c 2d 75 73 65 20 6a 73 6f 6e 20 75 72 6c 29 0a 20 20 20 20 20 .(media.tool-use.json.url)......
379e0 3a 6d 69 6d 65 2d 74 79 70 65 73 20 28 22 69 6d 61 67 65 2f 6a 70 65 67 22 20 22 69 6d 61 67 65 :mime-types.("image/jpeg"."image
37a00 2f 70 6e 67 22 20 22 69 6d 61 67 65 2f 67 69 66 22 20 22 69 6d 61 67 65 2f 77 65 62 70 22 29 0a /png"."image/gif"."image/webp").
37a20 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 31 30 32 34 0a 20 20 20 20 20 3a .....:context-window.1024......:
37a40 69 6e 70 75 74 2d 63 6f 73 74 20 30 2e 34 0a 20 20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 input-cost.0.4......:output-cost
37a60 20 31 2e 36 29 0a 20 20 20 20 28 67 70 74 2d 34 2e 31 2d 6e 61 6e 6f 0a 20 20 20 20 20 3a 64 65 .1.6).....(gpt-4.1-nano......:de
37a80 73 63 72 69 70 74 69 6f 6e 20 22 46 61 73 74 65 73 74 2c 20 6d 6f 73 74 20 63 6f 73 74 2d 65 66 scription."Fastest,.most.cost-ef
37aa0 66 65 63 74 69 76 65 20 47 50 54 2d 34 2e 31 20 6d 6f 64 65 6c 22 0a 20 20 20 20 20 3a 63 61 70 fective.GPT-4.1.model"......:cap
37ac0 61 62 69 6c 69 74 69 65 73 20 28 6d 65 64 69 61 20 74 6f 6f 6c 2d 75 73 65 20 6a 73 6f 6e 20 75 abilities.(media.tool-use.json.u
37ae0 72 6c 29 0a 20 20 20 20 20 3a 6d 69 6d 65 2d 74 79 70 65 73 20 28 22 69 6d 61 67 65 2f 6a 70 65 rl)......:mime-types.("image/jpe
37b00 67 22 20 22 69 6d 61 67 65 2f 70 6e 67 22 20 22 69 6d 61 67 65 2f 67 69 66 22 20 22 69 6d 61 67 g"."image/png"."image/gif"."imag
37b20 65 2f 77 65 62 70 22 29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 31 30 e/webp")......:context-window.10
37b40 32 34 0a 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 30 2e 31 30 0a 20 20 20 20 20 3a 6f 24......:input-cost.0.10......:o
37b60 75 74 70 75 74 2d 63 6f 73 74 20 30 2e 34 30 0a 20 20 20 20 20 3a 63 75 74 6f 66 66 2d 64 61 74 utput-cost.0.40......:cutoff-dat
37b80 65 20 22 32 30 32 34 2d 30 35 22 29 0a 20 20 20 20 28 67 70 74 2d 34 2d 74 75 72 62 6f 0a 20 20 e."2024-05").....(gpt-4-turbo...
37ba0 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 50 72 65 76 69 6f 75 73 20 68 69 67 68 2d 69 ...:description."Previous.high-i
37bc0 6e 74 65 6c 6c 69 67 65 6e 63 65 20 6d 6f 64 65 6c 22 0a 20 20 20 20 20 3a 63 61 70 61 62 69 6c ntelligence.model"......:capabil
37be0 69 74 69 65 73 20 28 6d 65 64 69 61 20 74 6f 6f 6c 2d 75 73 65 20 75 72 6c 29 0a 20 20 20 20 20 ities.(media.tool-use.url)......
37c00 3a 6d 69 6d 65 2d 74 79 70 65 73 20 28 22 69 6d 61 67 65 2f 6a 70 65 67 22 20 22 69 6d 61 67 65 :mime-types.("image/jpeg"."image
37c20 2f 70 6e 67 22 20 22 69 6d 61 67 65 2f 67 69 66 22 20 22 69 6d 61 67 65 2f 77 65 62 70 22 29 0a /png"."image/gif"."image/webp").
37c40 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 31 32 38 0a 20 20 20 20 20 3a 69 .....:context-window.128......:i
37c60 6e 70 75 74 2d 63 6f 73 74 20 31 30 0a 20 20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 33 nput-cost.10......:output-cost.3
37c80 30 0a 20 20 20 20 20 3a 63 75 74 6f 66 66 2d 64 61 74 65 20 22 32 30 32 33 2d 31 31 22 29 0a 20 0......:cutoff-date."2023-11")..
37ca0 20 20 20 28 67 70 74 2d 34 0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 47 50 54 ...(gpt-4......:description."GPT
37cc0 2d 34 20 73 6e 61 70 73 68 6f 74 20 66 72 6f 6d 20 4a 75 6e 65 20 32 30 32 33 20 77 69 74 68 20 -4.snapshot.from.June.2023.with.
37ce0 69 6d 70 72 6f 76 65 64 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 69 6e 67 20 73 75 70 70 6f 72 improved.function.calling.suppor
37d00 74 22 0a 20 20 20 20 20 3a 6d 69 6d 65 2d 74 79 70 65 73 20 28 22 69 6d 61 67 65 2f 6a 70 65 67 t"......:mime-types.("image/jpeg
37d20 22 20 22 69 6d 61 67 65 2f 70 6e 67 22 20 22 69 6d 61 67 65 2f 67 69 66 22 20 22 69 6d 61 67 65 "."image/png"."image/gif"."image
37d40 2f 77 65 62 70 22 29 0a 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 6d 65 64 69 /webp")......:capabilities.(medi
37d60 61 20 75 72 6c 29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 38 2e 31 39 a.url)......:context-window.8.19
37d80 32 0a 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 33 30 0a 20 20 20 20 20 3a 6f 75 74 70 2......:input-cost.30......:outp
37da0 75 74 2d 63 6f 73 74 20 36 30 0a 20 20 20 20 20 3a 63 75 74 6f 66 66 2d 64 61 74 65 20 22 32 30 ut-cost.60......:cutoff-date."20
37dc0 32 33 2d 31 31 22 29 0a 20 20 20 20 28 67 70 74 2d 35 0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 23-11").....(gpt-5......:descrip
37de0 74 69 6f 6e 20 22 46 6c 61 67 73 68 69 70 20 6d 6f 64 65 6c 20 66 6f 72 20 63 6f 64 69 6e 67 2c tion."Flagship.model.for.coding,
37e00 20 72 65 61 73 6f 6e 69 6e 67 2c 20 61 6e 64 20 61 67 65 6e 74 69 63 20 74 61 73 6b 73 20 61 63 .reasoning,.and.agentic.tasks.ac
37e20 72 6f 73 73 20 64 6f 6d 61 69 6e 73 22 0a 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 ross.domains"......:capabilities
37e40 20 28 6d 65 64 69 61 20 74 6f 6f 6c 2d 75 73 65 20 6a 73 6f 6e 20 75 72 6c 29 0a 20 20 20 20 20 .(media.tool-use.json.url)......
37e60 3a 6d 69 6d 65 2d 74 79 70 65 73 20 28 22 69 6d 61 67 65 2f 6a 70 65 67 22 20 22 69 6d 61 67 65 :mime-types.("image/jpeg"."image
37e80 2f 70 6e 67 22 20 22 69 6d 61 67 65 2f 67 69 66 22 20 22 69 6d 61 67 65 2f 77 65 62 70 22 29 0a /png"."image/gif"."image/webp").
37ea0 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 34 30 30 0a 20 20 20 20 20 3a 69 .....:context-window.400......:i
37ec0 6e 70 75 74 2d 63 6f 73 74 20 31 2e 32 35 0a 20 20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 nput-cost.1.25......:output-cost
37ee0 20 31 30 0a 20 20 20 20 20 3a 63 75 74 6f 66 66 2d 64 61 74 65 20 22 32 30 32 34 2d 30 39 22 29 .10......:cutoff-date."2024-09")
37f00 0a 20 20 20 20 28 67 70 74 2d 35 2d 6d 69 6e 69 0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 .....(gpt-5-mini......:descripti
37f20 6f 6e 20 22 46 61 73 74 65 72 2c 20 6d 6f 72 65 20 63 6f 73 74 2d 65 66 66 69 63 69 65 6e 74 20 on."Faster,.more.cost-efficient.
37f40 76 65 72 73 69 6f 6e 20 6f 66 20 47 50 54 2d 35 22 0a 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69 version.of.GPT-5"......:capabili
37f60 74 69 65 73 20 28 6d 65 64 69 61 20 74 6f 6f 6c 2d 75 73 65 20 6a 73 6f 6e 20 75 72 6c 29 0a 20 ties.(media.tool-use.json.url)..
37f80 20 20 20 20 3a 6d 69 6d 65 2d 74 79 70 65 73 20 28 22 69 6d 61 67 65 2f 6a 70 65 67 22 20 22 69 ....:mime-types.("image/jpeg"."i
37fa0 6d 61 67 65 2f 70 6e 67 22 20 22 69 6d 61 67 65 2f 67 69 66 22 20 22 69 6d 61 67 65 2f 77 65 62 mage/png"."image/gif"."image/web
37fc0 70 22 29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 34 30 30 0a 20 20 20 p")......:context-window.400....
37fe0 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 30 2e 32 35 0a 20 20 20 20 20 3a 6f 75 74 70 75 74 2d ..:input-cost.0.25......:output-
38000 63 6f 73 74 20 32 2e 30 0a 20 20 20 20 20 3a 63 75 74 6f 66 66 2d 64 61 74 65 20 22 32 30 32 34 cost.2.0......:cutoff-date."2024
38020 2d 30 39 22 29 0a 20 20 20 20 28 67 70 74 2d 35 2d 6e 61 6e 6f 0a 20 20 20 20 20 3a 64 65 73 63 -09").....(gpt-5-nano......:desc
38040 72 69 70 74 69 6f 6e 20 22 46 61 73 74 65 73 74 2c 20 63 68 65 61 70 65 73 74 20 76 65 72 73 69 ription."Fastest,.cheapest.versi
38060 6f 6e 20 6f 66 20 47 50 54 2d 35 22 0a 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 on.of.GPT-5"......:capabilities.
38080 28 6d 65 64 69 61 20 74 6f 6f 6c 2d 75 73 65 20 6a 73 6f 6e 20 75 72 6c 29 0a 20 20 20 20 20 3a (media.tool-use.json.url)......:
380a0 6d 69 6d 65 2d 74 79 70 65 73 20 28 22 69 6d 61 67 65 2f 6a 70 65 67 22 20 22 69 6d 61 67 65 2f mime-types.("image/jpeg"."image/
380c0 70 6e 67 22 20 22 69 6d 61 67 65 2f 67 69 66 22 20 22 69 6d 61 67 65 2f 77 65 62 70 22 29 0a 20 png"."image/gif"."image/webp")..
380e0 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 34 30 30 0a 20 20 20 20 20 3a 69 6e ....:context-window.400......:in
38100 70 75 74 2d 63 6f 73 74 20 30 2e 30 35 0a 20 20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 put-cost.0.05......:output-cost.
38120 30 2e 34 30 0a 20 20 20 20 20 3a 63 75 74 6f 66 66 2d 64 61 74 65 20 22 32 30 32 34 2d 30 39 22 0.40......:cutoff-date."2024-09"
38140 29 0a 20 20 20 20 28 6f 31 0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 52 65 61 ).....(o1......:description."Rea
38160 73 6f 6e 69 6e 67 20 6d 6f 64 65 6c 20 64 65 73 69 67 6e 65 64 20 74 6f 20 73 6f 6c 76 65 20 68 soning.model.designed.to.solve.h
38180 61 72 64 20 70 72 6f 62 6c 65 6d 73 20 61 63 72 6f 73 73 20 64 6f 6d 61 69 6e 73 22 0a 20 20 20 ard.problems.across.domains"....
381a0 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 6d 65 64 69 61 20 72 65 61 73 6f 6e 69 6e 67 ..:capabilities.(media.reasoning
381c0 29 0a 20 20 20 20 20 3a 6d 69 6d 65 2d 74 79 70 65 73 20 28 22 69 6d 61 67 65 2f 6a 70 65 67 22 )......:mime-types.("image/jpeg"
381e0 20 22 69 6d 61 67 65 2f 70 6e 67 22 20 22 69 6d 61 67 65 2f 67 69 66 22 20 22 69 6d 61 67 65 2f ."image/png"."image/gif"."image/
38200 77 65 62 70 22 29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 32 30 30 0a webp")......:context-window.200.
38220 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 31 35 0a 20 20 20 20 20 3a 6f 75 74 70 75 74 .....:input-cost.15......:output
38240 2d 63 6f 73 74 20 36 30 0a 20 20 20 20 20 3a 63 75 74 6f 66 66 2d 64 61 74 65 20 22 32 30 32 33 -cost.60......:cutoff-date."2023
38260 2d 31 30 22 29 0a 20 20 20 20 28 6f 31 2d 6d 69 6e 69 0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 -10").....(o1-mini......:descrip
38280 74 69 6f 6e 20 22 46 61 73 74 65 72 20 61 6e 64 20 63 68 65 61 70 65 72 20 72 65 61 73 6f 6e 69 tion."Faster.and.cheaper.reasoni
382a0 6e 67 20 6d 6f 64 65 6c 20 67 6f 6f 64 20 61 74 20 63 6f 64 69 6e 67 2c 20 6d 61 74 68 2c 20 61 ng.model.good.at.coding,.math,.a
382c0 6e 64 20 73 63 69 65 6e 63 65 22 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 nd.science"......:context-window
382e0 20 31 32 38 0a 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 33 0a 20 20 20 20 20 3a 6f 75 .128......:input-cost.3......:ou
38300 74 70 75 74 2d 63 6f 73 74 20 31 32 0a 20 20 20 20 20 3a 63 75 74 6f 66 66 2d 64 61 74 65 20 22 tput-cost.12......:cutoff-date."
38320 32 30 32 33 2d 31 30 22 0a 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 6e 6f 73 2023-10"......:capabilities.(nos
38340 79 73 74 65 6d 20 72 65 61 73 6f 6e 69 6e 67 29 29 0a 20 20 20 20 28 6f 33 0a 20 20 20 20 20 3a ystem.reasoning)).....(o3......:
38360 64 65 73 63 72 69 70 74 69 6f 6e 20 22 57 65 6c 6c 2d 72 6f 75 6e 64 65 64 20 61 6e 64 20 70 6f description."Well-rounded.and.po
38380 77 65 72 66 75 6c 20 6d 6f 64 65 6c 20 61 63 72 6f 73 73 20 64 6f 6d 61 69 6e 73 22 0a 20 20 20 werful.model.across.domains"....
383a0 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 72 65 61 73 6f 6e 69 6e 67 20 6d 65 64 69 61 ..:capabilities.(reasoning.media
383c0 20 74 6f 6f 6c 2d 75 73 65 20 6a 73 6f 6e 20 75 72 6c 29 0a 20 20 20 20 20 3a 6d 69 6d 65 2d 74 .tool-use.json.url)......:mime-t
383e0 79 70 65 73 20 28 22 69 6d 61 67 65 2f 6a 70 65 67 22 20 22 69 6d 61 67 65 2f 70 6e 67 22 20 22 ypes.("image/jpeg"."image/png"."
38400 69 6d 61 67 65 2f 67 69 66 22 20 22 69 6d 61 67 65 2f 77 65 62 70 22 29 0a 20 20 20 20 20 3a 63 image/gif"."image/webp")......:c
38420 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 32 30 30 0a 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f ontext-window.200......:input-co
38440 73 74 20 32 0a 20 20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 38 0a 20 20 20 20 20 3a 63 st.2......:output-cost.8......:c
38460 75 74 6f 66 66 2d 64 61 74 65 20 22 32 30 32 34 2d 30 35 22 29 0a 20 20 20 20 28 6f 33 2d 6d 69 utoff-date."2024-05").....(o3-mi
38480 6e 69 0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 48 69 67 68 20 69 6e 74 65 6c ni......:description."High.intel
384a0 6c 69 67 65 6e 63 65 20 61 74 20 74 68 65 20 73 61 6d 65 20 63 6f 73 74 20 61 6e 64 20 6c 61 74 ligence.at.the.same.cost.and.lat
384c0 65 6e 63 79 20 74 61 72 67 65 74 73 20 6f 66 20 6f 31 2d 6d 69 6e 69 22 0a 20 20 20 20 20 3a 63 ency.targets.of.o1-mini"......:c
384e0 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 32 30 30 0a 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f ontext-window.200......:input-co
38500 73 74 20 31 2e 31 30 0a 20 20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 34 2e 34 30 0a 20 st.1.10......:output-cost.4.40..
38520 20 20 20 20 3a 63 75 74 6f 66 66 2d 64 61 74 65 20 22 32 30 32 33 2d 31 30 22 0a 20 20 20 20 20 ....:cutoff-date."2023-10"......
38540 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 72 65 61 73 6f 6e 69 6e 67 20 74 6f 6f 6c 2d 75 73 :capabilities.(reasoning.tool-us
38560 65 20 6a 73 6f 6e 29 29 0a 20 20 20 20 28 6f 34 2d 6d 69 6e 69 0a 20 20 20 20 20 3a 64 65 73 63 e.json)).....(o4-mini......:desc
38580 72 69 70 74 69 6f 6e 20 22 46 61 73 74 2c 20 65 66 66 65 63 74 69 76 65 20 72 65 61 73 6f 6e 69 ription."Fast,.effective.reasoni
385a0 6e 67 20 77 69 74 68 20 65 66 66 69 63 69 65 6e 74 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 69 6e ng.with.efficient.performance.in
385c0 20 63 6f 64 69 6e 67 20 61 6e 64 20 76 69 73 75 61 6c 20 74 61 73 6b 73 22 0a 20 20 20 20 20 3a .coding.and.visual.tasks"......:
385e0 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 72 65 61 73 6f 6e 69 6e 67 20 6d 65 64 69 61 20 74 6f capabilities.(reasoning.media.to
38600 6f 6c 2d 75 73 65 20 6a 73 6f 6e 20 75 72 6c 29 0a 20 20 20 20 20 3a 6d 69 6d 65 2d 74 79 70 65 ol-use.json.url)......:mime-type
38620 73 20 28 22 69 6d 61 67 65 2f 6a 70 65 67 22 20 22 69 6d 61 67 65 2f 70 6e 67 22 20 22 69 6d 61 s.("image/jpeg"."image/png"."ima
38640 67 65 2f 67 69 66 22 20 22 69 6d 61 67 65 2f 77 65 62 70 22 29 0a 20 20 20 20 20 3a 63 6f 6e 74 ge/gif"."image/webp")......:cont
38660 65 78 74 2d 77 69 6e 64 6f 77 20 32 30 30 0a 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 ext-window.200......:input-cost.
38680 31 2e 31 30 0a 20 20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 34 2e 34 30 0a 20 20 20 20 1.10......:output-cost.4.40.....
386a0 20 3a 63 75 74 6f 66 66 2d 64 61 74 65 20 22 32 30 32 34 2d 30 35 22 29 0a 20 20 20 20 28 67 70 .:cutoff-date."2024-05").....(gp
386c0 74 2d 33 2e 35 2d 74 75 72 62 6f 0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 4d t-3.5-turbo......:description."M
386e0 6f 72 65 20 65 78 70 65 6e 73 69 76 65 20 26 20 6c 65 73 73 20 63 61 70 61 62 6c 65 20 74 68 61 ore.expensive.&.less.capable.tha
38700 6e 20 47 50 54 2d 34 6f 2d 6d 69 6e 69 3b 20 75 73 65 20 74 68 61 74 20 69 6e 73 74 65 61 64 22 n.GPT-4o-mini;.use.that.instead"
38720 0a 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 74 6f 6f 6c 2d 75 73 65 29 0a 20 ......:capabilities.(tool-use)..
38740 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 31 36 2e 33 35 38 0a 20 20 20 20 20 ....:context-window.16.358......
38760 3a 69 6e 70 75 74 2d 63 6f 73 74 20 30 2e 35 30 0a 20 20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f :input-cost.0.50......:output-co
38780 73 74 20 31 2e 35 30 0a 20 20 20 20 20 3a 63 75 74 6f 66 66 2d 64 61 74 65 20 22 32 30 32 31 2d st.1.50......:cutoff-date."2021-
387a0 30 39 22 29 0a 20 20 20 20 28 67 70 74 2d 33 2e 35 2d 74 75 72 62 6f 2d 31 36 6b 0a 20 20 20 20 09").....(gpt-3.5-turbo-16k.....
387c0 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 4d 6f 72 65 20 65 78 70 65 6e 73 69 76 65 20 26 20 .:description."More.expensive.&.
387e0 6c 65 73 73 20 63 61 70 61 62 6c 65 20 74 68 61 6e 20 47 50 54 2d 34 6f 2d 6d 69 6e 69 3b 20 75 less.capable.than.GPT-4o-mini;.u
38800 73 65 20 74 68 61 74 20 69 6e 73 74 65 61 64 22 0a 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69 74 se.that.instead"......:capabilit
38820 69 65 73 20 28 74 6f 6f 6c 2d 75 73 65 29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e ies.(tool-use)......:context-win
38840 64 6f 77 20 31 36 2e 33 38 35 0a 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 33 0a 20 20 dow.16.385......:input-cost.3...
38860 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 34 0a 20 20 20 20 20 3a 63 75 74 6f 66 66 2d 64 ...:output-cost.4......:cutoff-d
38880 61 74 65 20 22 32 30 32 31 2d 30 39 22 29 29 0a 20 20 22 4c 69 73 74 20 6f 66 20 61 76 61 69 6c ate."2021-09"))..."List.of.avail
388a0 61 62 6c 65 20 4f 70 65 6e 41 49 20 6d 6f 64 65 6c 73 20 61 6e 64 20 61 73 73 6f 63 69 61 74 65 able.OpenAI.models.and.associate
388c0 64 20 70 72 6f 70 65 72 74 69 65 73 2e 0a 4b 65 79 73 3a 0a 0a 2d 20 60 3a 64 65 73 63 72 69 70 d.properties..Keys:..-.`:descrip
388e0 74 69 6f 6e 27 3a 20 61 20 62 72 69 65 66 20 64 65 73 63 72 69 70 74 69 6f 6e 20 6f 66 20 74 68 tion':.a.brief.description.of.th
38900 65 20 6d 6f 64 65 6c 2e 0a 0a 2d 20 60 3a 63 61 70 61 62 69 6c 69 74 69 65 73 27 3a 20 61 20 6c e.model...-.`:capabilities':.a.l
38920 69 73 74 20 6f 66 20 63 61 70 61 62 69 6c 69 74 69 65 73 20 73 75 70 70 6f 72 74 65 64 20 62 79 ist.of.capabilities.supported.by
38940 20 74 68 65 20 6d 6f 64 65 6c 2e 0a 0a 2d 20 60 3a 6d 69 6d 65 2d 74 79 70 65 73 27 3a 20 61 20 .the.model...-.`:mime-types':.a.
38960 6c 69 73 74 20 6f 66 20 73 75 70 70 6f 72 74 65 64 20 4d 49 4d 45 20 74 79 70 65 73 20 66 6f 72 list.of.supported.MIME.types.for
38980 20 6d 65 64 69 61 20 66 69 6c 65 73 2e 0a 0a 2d 20 60 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f .media.files...-.`:context-windo
389a0 77 27 3a 20 74 68 65 20 63 6f 6e 74 65 78 74 20 77 69 6e 64 6f 77 20 73 69 7a 65 2c 20 69 6e 20 w':.the.context.window.size,.in.
389c0 74 68 6f 75 73 61 6e 64 73 20 6f 66 20 74 6f 6b 65 6e 73 2e 0a 0a 2d 20 60 3a 69 6e 70 75 74 2d thousands.of.tokens...-.`:input-
389e0 63 6f 73 74 27 3a 20 74 68 65 20 69 6e 70 75 74 20 63 6f 73 74 2c 20 69 6e 20 55 53 20 64 6f 6c cost':.the.input.cost,.in.US.dol
38a00 6c 61 72 73 20 70 65 72 20 6d 69 6c 6c 69 6f 6e 20 74 6f 6b 65 6e 73 2e 0a 0a 2d 20 60 3a 6f 75 lars.per.million.tokens...-.`:ou
38a20 74 70 75 74 2d 63 6f 73 74 27 3a 20 74 68 65 20 6f 75 74 70 75 74 20 63 6f 73 74 2c 20 69 6e 20 tput-cost':.the.output.cost,.in.
38a40 55 53 20 64 6f 6c 6c 61 72 73 20 70 65 72 20 6d 69 6c 6c 69 6f 6e 20 74 6f 6b 65 6e 73 2e 0a 0a US.dollars.per.million.tokens...
38a60 2d 20 60 3a 63 75 74 6f 66 66 2d 64 61 74 65 27 3a 20 74 68 65 20 6b 6e 6f 77 6c 65 64 67 65 20 -.`:cutoff-date':.the.knowledge.
38a80 63 75 74 6f 66 66 20 64 61 74 65 2e 0a 0a 2d 20 60 3a 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 cutoff.date...-.`:request-params
38aa0 27 3a 20 61 20 70 6c 69 73 74 20 6f 66 20 61 64 64 69 74 69 6f 6e 61 6c 20 72 65 71 75 65 73 74 ':.a.plist.of.additional.request
38ac0 20 70 61 72 61 6d 65 74 65 72 73 20 74 6f 0a 20 20 69 6e 63 6c 75 64 65 20 77 68 65 6e 20 75 73 .parameters.to...include.when.us
38ae0 69 6e 67 20 74 68 69 73 20 6d 6f 64 65 6c 2e 0a 0a 49 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f ing.this.model...Information.abo
38b00 75 74 20 74 68 65 20 4f 70 65 6e 41 49 20 6d 6f 64 65 6c 73 20 77 61 73 20 6f 62 74 61 69 6e 65 ut.the.OpenAI.models.was.obtaine
38b20 64 20 66 72 6f 6d 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 0a 73 6f 75 72 63 65 73 3a 0a 0a 2d d.from.the.following.sources:..-
38b40 20 3c 68 74 74 70 73 3a 2f 2f 70 6c 61 74 66 6f 72 6d 2e 6f 70 65 6e 61 69 2e 63 6f 6d 2f 64 6f .<https://platform.openai.com/do
38b60 63 73 2f 70 72 69 63 69 6e 67 3e 0a 2d 20 3c 68 74 74 70 73 3a 2f 2f 70 6c 61 74 66 6f 72 6d 2e cs/pricing>.-.<https://platform.
38b80 6f 70 65 6e 61 69 2e 63 6f 6d 2f 64 6f 63 73 2f 6d 6f 64 65 6c 73 3e 22 29 0a 0a 28 64 65 66 63 openai.com/docs/models>")..(defc
38ba0 75 73 74 6f 6d 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 20 27 67 70 74 2d 34 6f 2d 6d 69 6e 69 0a 20 ustom.gptel-model.'gpt-4o-mini..
38bc0 20 28 63 6f 6e 63 61 74 0a 20 20 20 22 4d 6f 64 65 6c 20 66 6f 72 20 63 68 61 74 2e 0a 0a 54 68 .(concat...."Model.for.chat...Th
38be0 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6d 6f 64 65 6c 2c 20 61 73 20 61 20 73 79 6d 62 6f 6c e.name.of.the.model,.as.a.symbol
38c00 2e 20 20 54 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 ...This.is.the.name.as.expected.
38c20 62 79 20 74 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 6f 20 73 by.the.LLM.provider's.API...To.s
38c40 65 74 20 74 68 65 20 6d 6f 64 65 6c 20 66 6f 72 20 61 20 63 68 61 74 20 73 65 73 73 69 6f 6e 20 et.the.model.for.a.chat.session.
38c60 69 6e 74 65 72 61 63 74 69 76 65 6c 79 20 63 61 6c 6c 0a 60 67 70 74 65 6c 2d 73 65 6e 64 27 20 interactively.call.`gptel-send'.
38c80 77 69 74 68 20 61 20 70 72 65 66 69 78 20 61 72 67 75 6d 65 6e 74 2e 22 29 0a 20 20 3a 73 61 66 with.a.prefix.argument.")...:saf
38ca0 65 20 23 27 61 6c 77 61 79 73 0a 20 20 3a 74 79 70 65 20 60 28 63 68 6f 69 63 65 0a 09 20 20 28 e.#'always...:type.`(choice....(
38cc0 73 79 6d 62 6f 6c 20 3a 74 61 67 20 22 53 70 65 63 69 66 79 20 6d 6f 64 65 6c 20 6e 61 6d 65 22 symbol.:tag."Specify.model.name"
38ce0 29 0a 09 20 20 2c 40 28 6d 61 70 63 61 72 20 28 6c 61 6d 62 64 61 20 28 6d 6f 64 65 6c 29 0a 09 )....,@(mapcar.(lambda.(model)..
38d00 09 20 20 20 20 20 20 28 6c 69 73 74 20 27 63 6f 6e 73 74 20 3a 74 61 67 20 28 73 79 6d 62 6f 6c .......(list.'const.:tag.(symbol
38d20 2d 6e 61 6d 65 20 28 63 61 72 20 6d 6f 64 65 6c 29 29 0a 09 09 09 20 20 20 20 28 63 61 72 20 6d -name.(car.model))........(car.m
38d40 6f 64 65 6c 29 29 29 0a 09 09 20 20 20 20 67 70 74 65 6c 2d 2d 6f 70 65 6e 61 69 2d 6d 6f 64 65 odel))).......gptel--openai-mode
38d60 6c 73 29 29 29 0a 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d 2d 6f 70 65 6e 61 69 0a 20 20 28 ls)))..(defvar.gptel--openai...(
38d80 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 0a 20 20 20 20 20 20 22 43 68 61 74 47 50 54 gptel-make-openai......."ChatGPT
38da0 22 0a 20 20 20 20 3a 6b 65 79 20 27 67 70 74 65 6c 2d 61 70 69 2d 6b 65 79 0a 20 20 20 20 3a 73 ".....:key.'gptel-api-key.....:s
38dc0 74 72 65 61 6d 20 74 0a 20 20 20 20 3a 6d 6f 64 65 6c 73 20 67 70 74 65 6c 2d 2d 6f 70 65 6e 61 tream.t.....:models.gptel--opena
38de0 69 2d 6d 6f 64 65 6c 73 29 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 62 61 63 i-models))..(defcustom.gptel-bac
38e00 6b 65 6e 64 20 67 70 74 65 6c 2d 2d 6f 70 65 6e 61 69 0a 20 20 22 4c 4c 4d 20 62 61 63 6b 65 6e kend.gptel--openai..."LLM.backen
38e20 64 20 74 6f 20 75 73 65 2e 0a 0a 54 68 69 73 20 69 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 5c d.to.use...This.is.the.default.\
38e40 22 62 61 63 6b 65 6e 64 5c 22 2c 20 61 6e 20 6f 62 6a 65 63 74 20 6f 66 20 74 79 70 65 0a 60 67 "backend\",.an.object.of.type.`g
38e60 70 74 65 6c 2d 62 61 63 6b 65 6e 64 27 20 63 6f 6e 74 61 69 6e 69 6e 67 20 63 6f 6e 6e 65 63 74 ptel-backend'.containing.connect
38e80 69 6f 6e 2c 20 61 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 20 61 6e 64 20 6d 6f 64 65 6c 0a 69 6e ion,.authentication.and.model.in
38ea0 66 6f 72 6d 61 74 69 6f 6e 2e 0a 0a 41 20 62 61 63 6b 65 6e 64 20 66 6f 72 20 43 68 61 74 47 50 formation...A.backend.for.ChatGP
38ec0 54 20 69 73 20 70 72 65 2d 64 65 66 69 6e 65 64 20 62 79 20 67 70 74 65 6c 2e 20 20 42 61 63 6b T.is.pre-defined.by.gptel...Back
38ee0 65 6e 64 73 20 66 6f 72 0a 6f 74 68 65 72 20 4c 4c 4d 20 70 72 6f 76 69 64 65 72 73 20 28 6c 6f ends.for.other.LLM.providers.(lo
38f00 63 61 6c 20 6f 72 20 72 65 6d 6f 74 65 29 20 6d 61 79 20 62 65 20 63 6f 6e 73 74 72 75 63 74 65 cal.or.remote).may.be.constructe
38f20 64 20 75 73 69 6e 67 0a 6f 6e 65 20 6f 66 20 74 68 65 20 61 76 61 69 6c 61 62 6c 65 20 62 61 63 d.using.one.of.the.available.bac
38f40 6b 65 6e 64 20 63 72 65 61 74 69 6f 6e 20 66 75 6e 63 74 69 6f 6e 73 3a 0a 2d 20 60 67 70 74 65 kend.creation.functions:.-.`gpte
38f60 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 27 0a 2d 20 60 67 70 74 65 6c 2d 6d 61 6b 65 2d 61 7a 75 l-make-openai'.-.`gptel-make-azu
38f80 72 65 27 0a 2d 20 60 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 6c 6c 61 6d 61 27 0a 2d 20 60 67 70 74 re'.-.`gptel-make-ollama'.-.`gpt
38fa0 65 6c 2d 6d 61 6b 65 2d 67 70 74 34 61 6c 6c 27 0a 2d 20 60 67 70 74 65 6c 2d 6d 61 6b 65 2d 67 el-make-gpt4all'.-.`gptel-make-g
38fc0 65 6d 69 6e 69 27 0a 53 65 65 20 74 68 65 69 72 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66 emini'.See.their.documentation.f
38fe0 6f 72 20 6d 6f 72 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 6e 64 20 74 68 65 20 70 61 63 6b or.more.information.and.the.pack
39000 61 67 65 0a 52 45 41 44 4d 45 20 66 6f 72 20 65 78 61 6d 70 6c 65 73 2e 22 0a 20 20 3a 73 61 66 age.README.for.examples."...:saf
39020 65 20 23 27 61 6c 77 61 79 73 0a 20 20 3a 74 79 70 65 20 60 28 63 68 6f 69 63 65 0a 20 20 20 20 e.#'always...:type.`(choice.....
39040 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 20 22 43 68 61 74 47 50 54 22 20 2c 67 70 74 ......(const.:tag."ChatGPT".,gpt
39060 65 6c 2d 2d 6f 70 65 6e 61 69 29 0a 20 20 20 20 20 20 20 20 20 20 28 72 65 73 74 72 69 63 74 65 el--openai)...........(restricte
39080 64 2d 73 65 78 70 20 3a 6d 61 74 63 68 2d 61 6c 74 65 72 6e 61 74 69 76 65 73 20 28 67 70 74 65 d-sexp.:match-alternatives.(gpte
390a0 6c 2d 62 61 63 6b 65 6e 64 2d 70 20 27 6e 69 6c 29 0a 09 09 09 20 20 20 3a 74 61 67 20 22 4f 74 l-backend-p.'nil).......:tag."Ot
390c0 68 65 72 20 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 her.backend")))..(defvar.gptel-e
390e0 78 70 65 72 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 xpert-commands.nil..."Whether.ex
39100 70 65 72 69 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 perimental.gptel.options.should.
39120 62 65 20 65 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 be.enabled...This.opens.up.advan
39140 63 65 64 20 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 ced.options.in.`gptel-menu'.")..
39160 28 64 65 66 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 (defvar-local.gptel--bounds.nil)
39180 0a 28 70 75 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 .(put.'gptel--bounds.'safe-local
391a0 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 76 61 72 20 67 70 74 -variable.#'always)..(defvar.gpt
391c0 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 6e 69 6c 29 0a 28 70 el--num-messages-to-send.nil).(p
391e0 75 74 20 27 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 ut.'gptel--num-messages-to-send.
39200 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 79 73 29 0a 0a 'safe-local-variable.#'always)..
39220 28 64 65 66 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 (defcustom.gptel-log-level.nil..
39240 20 22 4c 6f 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 ."Logging.level.for.gptel...This
39260 20 69 73 20 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 .is.one.of.nil.or.the.symbols.in
39280 66 6f 20 61 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 fo.and.debug:..nil:.Don't.log.re
392a0 73 70 6f 6e 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 sponses.info:.Log.request.and.re
392c0 73 70 6f 6e 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 sponse.bodies.debug:.Log.request
392e0 2f 72 65 73 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 /response.bodies,.headers.and.al
39300 6c 20 6f 74 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 l.other........connection.settin
39320 67 73 2e 0a 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 gs...When.non-nil,.information.i
39340 73 20 6c 6f 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 s.logged.to.`gptel--log-buffer-n
39360 61 6d 65 27 2c 0a 77 68 69 63 68 20 73 65 65 2e 22 0a 20 20 3a 74 79 70 65 20 27 28 63 68 6f 69 ame',.which.see."...:type.'(choi
39380 63 65 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 20 22 4e 6f 20 6c 6f 67 ce...........(const.:tag."No.log
393a0 67 69 6e 67 22 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 ging".nil)...........(const.:tag
393c0 20 22 4c 69 6d 69 74 65 64 22 20 69 6e 66 6f 29 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 ."Limited".info)...........(cons
393e0 74 20 3a 74 61 67 20 22 46 75 6c 6c 22 20 64 65 62 75 67 29 29 29 0a 0a 28 64 65 66 63 75 73 74 t.:tag."Full".debug)))..(defcust
39400 6f 6d 20 67 70 74 65 6c 2d 74 72 61 63 6b 2d 72 65 73 70 6f 6e 73 65 20 74 0a 20 20 22 44 69 73 om.gptel-track-response.t..."Dis
39420 74 69 6e 67 75 69 73 68 20 62 65 74 77 65 65 6e 20 75 73 65 72 20 6d 65 73 73 61 67 65 73 20 61 tinguish.between.user.messages.a
39440 6e 64 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 73 2e 0a 0a 57 68 65 6e 20 63 72 65 61 74 69 6e 67 nd.LLM.responses...When.creating
39460 20 61 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 2c 20 67 70 .a.prompt.to.send.to.the.LLM,.gp
39480 74 65 6c 20 64 69 73 74 69 6e 67 75 69 73 68 65 73 0a 62 65 74 77 65 65 6e 20 74 65 78 74 20 65 tel.distinguishes.between.text.e
394a0 6e 74 65 72 65 64 20 62 79 20 74 68 65 20 75 73 65 72 20 61 6e 64 20 70 61 73 74 20 4c 4c 4d 20 ntered.by.the.user.and.past.LLM.
394c0 72 65 73 70 6f 6e 73 65 73 2e 20 20 54 68 69 73 0a 64 69 73 74 69 6e 63 74 69 6f 6e 20 69 73 20 responses...This.distinction.is.
394e0 6e 65 63 65 73 73 61 72 79 20 66 6f 72 20 62 61 63 6b 2d 61 6e 64 2d 66 6f 72 74 68 20 63 6f 6e necessary.for.back-and-forth.con
39500 76 65 72 73 61 74 69 6f 6e 20 77 69 74 68 20 61 6e 0a 4c 4c 4d 2e 0a 0a 49 6e 20 72 65 67 75 6c versation.with.an.LLM...In.regul
39520 61 72 20 45 6d 61 63 73 20 62 75 66 66 65 72 73 20 79 6f 75 20 63 61 6e 20 74 75 72 6e 20 74 68 ar.Emacs.buffers.you.can.turn.th
39540 69 73 20 62 65 68 61 76 69 6f 72 20 6f 66 66 20 62 79 0a 73 65 74 74 69 6e 67 20 60 67 70 74 65 is.behavior.off.by.setting.`gpte
39560 6c 2d 74 72 61 63 6b 2d 72 65 73 70 6f 6e 73 65 27 20 74 6f 20 6e 69 6c 2e 20 20 41 6c 6c 20 74 l-track-response'.to.nil...All.t
39580 65 78 74 2c 20 69 6e 63 6c 75 64 69 6e 67 0a 70 61 73 74 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 ext,.including.past.LLM.response
395a0 73 2c 20 69 73 20 74 68 65 6e 20 74 72 65 61 74 65 64 20 61 73 20 75 73 65 72 20 69 6e 70 75 74 s,.is.then.treated.as.user.input
395c0 20 77 68 65 6e 20 73 65 6e 64 69 6e 67 0a 71 75 65 72 69 65 73 2e 0a 0a 54 68 69 73 20 76 61 72 .when.sending.queries...This.var
395e0 69 61 62 6c 65 20 68 61 73 20 6e 6f 20 65 66 66 65 63 74 20 69 6e 20 64 65 64 69 63 61 74 65 64 iable.has.no.effect.in.dedicated
39600 20 63 68 61 74 20 62 75 66 66 65 72 73 20 28 62 75 66 66 65 72 73 0a 77 69 74 68 20 60 67 70 74 .chat.buffers.(buffers.with.`gpt
39620 65 6c 2d 6d 6f 64 65 27 20 65 6e 61 62 6c 65 64 29 2c 20 77 68 65 72 65 20 75 73 65 72 20 70 72 el-mode'.enabled),.where.user.pr
39640 6f 6d 70 74 73 20 61 6e 64 20 72 65 73 70 6f 6e 73 65 73 20 61 72 65 0a 61 6c 77 61 79 73 20 68 ompts.and.responses.are.always.h
39660 61 6e 64 6c 65 64 20 73 65 70 61 72 61 74 65 6c 79 2e 22 0a 20 20 3a 74 79 70 65 20 27 62 6f 6f andled.separately."...:type.'boo
39680 6c 65 61 6e 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 74 72 61 63 6b 2d 6d 65 lean)..(defcustom.gptel-track-me
396a0 64 69 61 20 6e 69 6c 0a 20 20 22 57 68 65 74 68 65 72 20 73 75 70 70 6f 72 74 65 64 20 6d 65 64 dia.nil..."Whether.supported.med
396c0 69 61 20 69 6e 20 63 68 61 74 20 62 75 66 66 65 72 73 20 73 68 6f 75 6c 64 20 62 65 20 73 65 6e ia.in.chat.buffers.should.be.sen
396e0 74 2e 0a 0a 57 68 65 6e 20 74 68 65 20 61 63 74 69 76 65 20 60 67 70 74 65 6c 2d 6d 6f 64 65 6c t...When.the.active.`gptel-model
39700 27 20 73 75 70 70 6f 72 74 73 20 69 74 2c 20 67 70 74 65 6c 20 63 61 6e 20 73 65 6e 64 20 74 65 '.supports.it,.gptel.can.send.te
39720 78 74 2c 20 69 6d 61 67 65 73 0a 6f 72 20 6f 74 68 65 72 20 6d 65 64 69 61 20 66 72 6f 6d 20 6c xt,.images.or.other.media.from.l
39740 69 6e 6b 73 20 69 6e 20 63 68 61 74 20 62 75 66 66 65 72 73 20 74 6f 20 74 68 65 20 4c 4c 4d 2e inks.in.chat.buffers.to.the.LLM.
39760 20 20 54 6f 20 75 73 65 20 74 68 69 73 2c 20 74 68 65 0a 66 6f 6c 6c 6f 77 69 6e 67 20 73 74 65 ..To.use.this,.the.following.ste
39780 70 73 20 61 72 65 20 72 65 71 75 69 72 65 64 2e 0a 0a 31 2e 20 60 67 70 74 65 6c 2d 74 72 61 63 ps.are.required...1..`gptel-trac
397a0 6b 2d 6d 65 64 69 61 27 20 28 74 68 69 73 20 76 61 72 69 61 62 6c 65 29 20 73 68 6f 75 6c 64 20 k-media'.(this.variable).should.
397c0 62 65 20 6e 6f 6e 2d 6e 69 6c 0a 0a 32 2e 20 54 68 65 20 4c 4c 4d 20 73 68 6f 75 6c 64 20 70 72 be.non-nil..2..The.LLM.should.pr
397e0 6f 76 69 64 65 20 76 69 73 69 6f 6e 20 6f 72 20 64 6f 63 75 6d 65 6e 74 20 73 75 70 70 6f 72 74 ovide.vision.or.document.support
39800 2e 20 20 28 53 65 65 0a 60 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 27 2c 20 60 67 70 ...(See.`gptel-make-openai',.`gp
39820 74 65 6c 2d 6d 61 6b 65 2d 61 6e 74 68 72 6f 70 69 63 27 2c 20 60 67 70 74 65 6c 2d 6d 61 6b 65 tel-make-anthropic',.`gptel-make
39840 2d 6f 6c 6c 61 6d 61 27 20 6f 72 0a 60 67 70 74 65 6c 2d 6d 61 6b 65 2d 67 65 6d 69 6e 69 27 20 -ollama'.or.`gptel-make-gemini'.
39860 66 6f 72 20 64 65 74 61 69 6c 73 20 6f 6e 20 68 6f 77 20 74 6f 20 73 70 65 63 69 66 79 20 6d 65 for.details.on.how.to.specify.me
39880 64 69 61 20 73 75 70 70 6f 72 74 20 66 6f 72 0a 6d 6f 64 65 6c 73 2e 29 0a 0a 33 2e 20 4f 6e 6c dia.support.for.models.)..3..Onl
398a0 79 20 5c 22 73 74 61 6e 64 61 6c 6f 6e 65 5c 22 20 6c 69 6e 6b 73 20 69 6e 20 63 68 61 74 20 62 y.\"standalone\".links.in.chat.b
398c0 75 66 66 65 72 73 20 61 72 65 20 63 6f 6e 73 69 64 65 72 65 64 2e 0a 54 68 65 73 65 20 61 72 65 uffers.are.considered..These.are
398e0 20 6c 69 6e 6b 73 20 6f 6e 20 74 68 65 69 72 20 6f 77 6e 20 6c 69 6e 65 20 77 69 74 68 20 6e 6f .links.on.their.own.line.with.no
39900 20 73 75 72 72 6f 75 6e 64 69 6e 67 20 74 65 78 74 2e 0a 46 75 72 74 68 65 72 3a 0a 0a 2d 20 49 .surrounding.text..Further:..-.I
39920 6e 20 4f 72 67 20 6d 6f 64 65 2c 20 6f 6e 6c 79 20 66 69 6c 65 73 20 6f 72 20 55 52 4c 73 20 6f n.Org.mode,.only.files.or.URLs.o
39940 66 20 74 68 65 20 66 6f 72 6d 0a 20 20 5b 5b 2f 70 61 74 68 2f 74 6f 2f 6d 65 64 69 61 5d 5b 62 f.the.form...[[/path/to/media][b
39960 72 61 63 6b 65 74 20 6c 69 6e 6b 73 5d 5d 20 61 6e 64 20 3c 61 6e 67 6c 65 2f 6c 69 6e 6b 2f 70 racket.links]].and.<angle/link/p
39980 61 74 68 3e 0a 20 20 61 72 65 20 73 65 6e 74 2e 0a 0a 2d 20 49 6e 20 4d 61 72 6b 64 6f 77 6e 20 ath>...are.sent...-.In.Markdown.
399a0 6d 6f 64 65 2c 20 6f 6e 6c 79 20 66 69 6c 65 73 20 6f 72 20 55 52 4c 53 20 6f 66 20 74 68 65 20 mode,.only.files.or.URLS.of.the.
399c0 66 6f 72 6d 0a 20 20 5b 62 72 61 63 6b 65 74 20 6c 69 6e 6b 5d 28 2f 70 61 74 68 2f 74 6f 2f 6d form...[bracket.link](/path/to/m
399e0 65 64 69 61 29 20 61 6e 64 20 3c 61 6e 67 6c 65 2f 6c 69 6e 6b 2f 70 61 74 68 3e 0a 20 20 61 72 edia).and.<angle/link/path>...ar
39a00 65 20 73 65 6e 74 2e 0a 0a 54 68 69 73 20 6f 70 74 69 6f 6e 20 68 61 73 20 6e 6f 20 65 66 66 65 e.sent...This.option.has.no.effe
39a20 63 74 20 69 6e 20 6e 6f 6e 2d 63 68 61 74 20 62 75 66 66 65 72 73 2e 20 20 54 6f 20 69 6e 63 6c ct.in.non-chat.buffers...To.incl
39a40 75 64 65 0a 6d 65 64 69 61 20 28 69 6e 63 6c 75 64 69 6e 67 20 69 6d 61 67 65 73 29 20 6d 6f 72 ude.media.(including.images).mor
39a60 65 20 67 65 6e 65 72 61 6c 6c 79 2c 20 75 73 65 20 60 67 70 74 65 6c 2d 61 64 64 27 2e 22 0a 20 e.generally,.use.`gptel-add'."..
39a80 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 20 67 70 74 .:type.'boolean)..(defcustom.gpt
39aa0 65 6c 2d 75 73 65 2d 63 6f 6e 74 65 78 74 20 27 73 79 73 74 65 6d 0a 20 20 22 57 68 65 72 65 20 el-use-context.'system..."Where.
39ac0 69 6e 20 74 68 65 20 72 65 71 75 65 73 74 20 74 6f 20 69 6e 6a 65 63 74 20 67 70 74 65 6c 27 73 in.the.request.to.inject.gptel's
39ae0 20 61 64 64 69 74 69 6f 6e 61 6c 20 63 6f 6e 74 65 78 74 2e 0a 0a 67 70 74 65 6c 20 61 6c 77 61 .additional.context...gptel.alwa
39b00 79 73 20 69 6e 63 6c 75 64 65 73 20 74 68 65 20 61 63 74 69 76 65 20 72 65 67 69 6f 6e 20 6f 72 ys.includes.the.active.region.or
39b20 20 74 68 65 20 62 75 66 66 65 72 20 75 70 20 74 6f 20 74 68 65 0a 63 75 72 73 6f 72 20 69 6e 20 .the.buffer.up.to.the.cursor.in.
39b40 74 68 65 20 72 65 71 75 65 73 74 20 74 6f 20 74 68 65 20 4c 4c 4d 2e 20 20 41 64 64 69 74 69 6f the.request.to.the.LLM...Additio
39b60 6e 61 6c 6c 79 2c 20 79 6f 75 20 63 61 6e 20 61 64 64 0a 6f 74 68 65 72 20 62 75 66 66 65 72 73 nally,.you.can.add.other.buffers
39b80 20 6f 72 20 74 68 65 69 72 20 72 65 67 69 6f 6e 73 20 74 6f 20 74 68 65 20 63 6f 6e 74 65 78 74 .or.their.regions.to.the.context
39ba0 20 77 69 74 68 0a 60 67 70 74 65 6c 2d 61 64 64 2d 63 6f 6e 74 65 78 74 27 2c 20 6f 72 20 66 72 .with.`gptel-add-context',.or.fr
39bc0 6f 6d 20 67 70 74 65 6c 27 73 20 6d 65 6e 75 2e 20 20 54 68 69 73 20 64 61 74 61 20 77 69 6c 6c om.gptel's.menu...This.data.will
39be0 20 62 65 0a 73 65 6e 74 20 77 69 74 68 20 65 76 65 72 79 20 72 65 71 75 65 73 74 2e 0a 0a 54 68 .be.sent.with.every.request...Th
39c00 69 73 20 6f 70 74 69 6f 6e 20 63 6f 6e 74 72 6f 6c 73 20 77 68 65 74 68 65 72 20 61 6e 64 20 77 is.option.controls.whether.and.w
39c20 68 65 72 65 20 74 68 69 73 20 61 64 64 69 74 69 6f 6e 61 6c 20 63 6f 6e 74 65 78 74 20 69 73 0a here.this.additional.context.is.
39c40 69 6e 63 6c 75 64 65 64 20 69 6e 20 74 68 65 20 72 65 71 75 65 73 74 2e 0a 0a 43 75 72 72 65 6e included.in.the.request...Curren
39c60 74 6c 79 20 73 75 70 70 6f 72 74 65 64 20 6f 70 74 69 6f 6e 73 20 61 72 65 3a 0a 0a 20 20 20 20 tly.supported.options.are:......
39c80 6e 69 6c 20 20 20 20 20 2d 20 44 6f 20 6e 6f 74 20 75 73 65 20 74 68 65 20 63 6f 6e 74 65 78 74 nil.....-.Do.not.use.the.context
39ca0 2e 0a 20 20 20 20 73 79 73 74 65 6d 20 20 2d 20 49 6e 63 6c 75 64 65 20 74 68 65 20 63 6f 6e 74 ......system..-.Include.the.cont
39cc0 65 78 74 20 77 69 74 68 20 74 68 65 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 2e 0a 20 20 20 ext.with.the.system.message.....
39ce0 20 75 73 65 72 20 20 20 20 2d 20 49 6e 63 6c 75 64 65 20 74 68 65 20 63 6f 6e 74 65 78 74 20 77 .user....-.Include.the.context.w
39d00 69 74 68 20 74 68 65 20 75 73 65 72 20 70 72 6f 6d 70 74 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 ith.the.user.prompt."...:group.'
39d20 67 70 74 65 6c 0a 20 20 3a 74 79 70 65 20 27 28 63 68 6f 69 63 65 0a 20 20 20 20 20 20 20 20 20 gptel...:type.'(choice..........
39d40 20 28 63 6f 6e 73 74 20 3a 74 61 67 20 22 44 6f 6e 27 74 20 69 6e 63 6c 75 64 65 20 63 6f 6e 74 .(const.:tag."Don't.include.cont
39d60 65 78 74 22 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 20 ext".nil)...........(const.:tag.
39d80 22 57 69 74 68 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 22 20 73 79 73 74 65 6d 29 0a 20 20 "With.system.message".system)...
39da0 20 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 20 22 57 69 74 68 20 75 73 65 72 20 70 ........(const.:tag."With.user.p
39dc0 72 6f 6d 70 74 22 20 75 73 65 72 29 29 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c rompt".user)))..(defcustom.gptel
39de0 2d 69 6e 63 6c 75 64 65 2d 72 65 61 73 6f 6e 69 6e 67 20 74 0a 20 20 22 48 6f 77 20 74 6f 20 68 -include-reasoning.t..."How.to.h
39e00 61 6e 64 6c 65 20 4c 4c 4d 20 72 65 61 73 6f 6e 69 6e 67 20 6f 72 20 5c 22 74 68 69 6e 6b 69 6e andle.LLM.reasoning.or.\"thinkin
39e20 67 5c 22 20 74 65 78 74 20 62 6c 6f 63 6b 73 2e 0a 0a 53 6f 6d 65 20 4c 4c 4d 73 20 69 6e 63 6c g\".text.blocks...Some.LLMs.incl
39e40 75 64 65 20 69 6e 20 74 68 65 69 72 20 72 65 73 70 6f 6e 73 65 20 61 20 5c 22 74 68 69 6e 6b 69 ude.in.their.response.a.\"thinki
39e60 6e 67 5c 22 20 73 65 63 74 69 6f 6e 2e 20 20 54 68 69 73 0a 74 65 78 74 20 69 6d 70 72 6f 76 65 ng\".section...This.text.improve
39e80 73 20 74 68 65 20 71 75 61 6c 69 74 79 20 6f 66 20 74 68 65 20 4c 4c 4d 27 73 20 66 69 6e 61 6c s.the.quality.of.the.LLM's.final
39ea0 20 6f 75 74 70 75 74 2c 20 62 75 74 20 6d 61 79 20 6e 6f 74 0a 62 65 20 69 6e 74 65 72 65 73 74 .output,.but.may.not.be.interest
39ec0 69 6e 67 20 74 6f 20 79 6f 75 20 62 79 20 69 74 73 65 6c 66 2e 0a 0a 53 75 70 70 6f 72 74 65 64 ing.to.you.by.itself...Supported
39ee0 20 6f 70 74 69 6f 6e 73 20 61 72 65 20 74 68 65 20 73 79 6d 62 6f 6c 73 0a 0a 20 20 20 20 74 20 .options.are.the.symbols......t.
39f00 20 20 20 20 20 20 2d 20 49 6e 63 6c 75 64 65 20 77 69 74 68 20 74 68 65 20 72 65 73 70 6f 6e 73 ......-.Include.with.the.respons
39f20 65 2c 20 74 68 65 20 64 65 66 61 75 6c 74 0a 20 20 20 20 6e 69 6c 20 20 20 20 20 2d 20 44 6f 20 e,.the.default.....nil.....-.Do.
39f40 6e 6f 74 20 69 6e 63 6c 75 64 65 0a 20 20 20 20 69 67 6e 6f 72 65 20 20 2d 20 49 6e 63 6c 75 64 not.include.....ignore..-.Includ
39f60 65 20 77 69 74 68 20 74 68 65 20 72 65 73 70 6f 6e 73 65 20 62 75 74 20 69 67 6e 6f 72 65 20 6f e.with.the.response.but.ignore.o
39f80 6e 20 73 75 62 73 65 71 75 65 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 76 65 n.subsequent...............conve
39fa0 72 73 61 74 69 6f 6e 20 74 75 72 6e 73 0a 0a 49 74 20 63 61 6e 20 61 6c 73 6f 20 62 65 20 61 20 rsation.turns..It.can.also.be.a.
39fc0 73 74 72 69 6e 67 20 6e 61 6d 69 6e 67 20 61 20 62 75 66 66 65 72 2c 20 69 6e 20 77 68 69 63 68 string.naming.a.buffer,.in.which
39fe0 20 63 61 73 65 20 74 68 65 0a 72 65 61 73 6f 6e 69 6e 67 20 74 65 78 74 20 77 69 6c 6c 20 62 65 .case.the.reasoning.text.will.be
3a000 20 69 6e 73 65 72 74 65 64 20 61 74 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 61 74 20 62 75 66 .inserted.at.the.end.of.that.buf
3a020 66 65 72 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 28 fer."...:group.'gptel...:type.'(
3a040 63 68 6f 69 63 65 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 20 22 49 6e choice...........(const.:tag."In
3a060 63 6c 75 64 65 20 77 69 74 68 20 72 65 73 70 6f 6e 73 65 22 20 74 29 0a 20 20 20 20 20 20 20 20 clude.with.response".t).........
3a080 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 20 22 44 6f 6e 27 74 20 69 6e 63 6c 75 64 65 22 20 6e 69 ..(const.:tag."Don't.include".ni
3a0a0 6c 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 49 6e 63 6c 75 64 l)...........(const.:tag."Includ
3a0c0 65 20 62 75 74 20 69 67 6e 6f 72 65 22 20 69 67 6e 6f 72 65 29 0a 20 20 20 20 20 20 20 20 20 20 e.but.ignore".ignore)...........
3a0e0 28 73 74 72 69 6e 67 20 3a 74 61 67 20 22 49 6e 63 6c 75 64 65 20 69 6e 20 62 75 66 66 65 72 22 (string.:tag."Include.in.buffer"
3a100 29 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 64 2d 68 65 )))..(defvar-local.gptel--old-he
3a120 61 64 65 72 2d 6c 69 6e 65 20 6e 69 6c 29 0a 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d 63 6f ader-line.nil)..(defvar.gptel-co
3a140 6e 74 65 78 74 2d 2d 61 6c 69 73 74 20 6e 69 6c 0a 20 20 22 4c 69 73 74 20 6f 66 20 67 70 74 65 ntext--alist.nil..."List.of.gpte
3a160 6c 27 73 20 63 6f 6e 74 65 78 74 20 73 6f 75 72 63 65 73 2e 0a 0a 45 61 63 68 20 65 6e 74 72 79 l's.context.sources...Each.entry
3a180 20 69 73 20 6f 66 20 74 68 65 20 66 6f 72 6d 0a 20 28 62 75 66 66 65 72 20 2e 20 28 6f 76 65 72 .is.of.the.form..(buffer...(over
3a1a0 6c 61 79 31 20 6f 76 65 72 6c 61 79 32 20 2e 2e 2e 29 29 0a 6f 72 0a 20 28 5c 22 70 61 74 68 2f lay1.overlay2....)).or..(\"path/
3a1c0 74 6f 2f 66 69 6c 65 5c 22 29 2e 22 29 0a 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d 2d 72 65 to/file\").")..(defvar.gptel--re
3a1e0 71 75 65 73 74 2d 61 6c 69 73 74 20 6e 69 6c 0a 20 20 22 41 6c 69 73 74 20 6f 66 20 61 63 74 69 quest-alist.nil..."Alist.of.acti
3a200 76 65 20 67 70 74 65 6c 20 72 65 71 75 65 73 74 73 2e 0a 45 61 63 68 20 65 6e 74 72 79 20 68 61 ve.gptel.requests..Each.entry.ha
3a220 73 20 74 68 65 20 66 6f 72 6d 20 28 50 52 4f 43 45 53 53 20 2e 20 28 46 53 4d 20 41 42 4f 52 54 s.the.form.(PROCESS...(FSM.ABORT
3a240 2d 43 4c 4f 53 55 52 45 29 29 0a 49 66 20 74 68 65 20 41 42 4f 52 54 2d 43 4c 4f 53 55 52 45 20 -CLOSURE)).If.the.ABORT-CLOSURE.
3a260 69 73 20 63 61 6c 6c 65 64 2c 20 69 74 20 6d 75 73 74 20 61 62 6f 72 74 20 74 68 65 20 50 52 4f is.called,.it.must.abort.the.PRO
3a280 43 45 53 53 2e 22 29 0a 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d 2d 72 65 71 75 65 73 74 2d CESS.")..(defvar.gptel--request-
3a2a0 70 61 72 61 6d 73 20 6e 69 6c 0a 20 20 22 45 78 74 72 61 20 70 61 72 61 6d 65 74 65 72 73 20 73 params.nil..."Extra.parameters.s
3a2c0 65 6e 74 20 77 69 74 68 20 65 61 63 68 20 67 70 74 65 6c 20 72 65 71 75 65 73 74 2e 0a 0a 54 68 ent.with.each.gptel.request...Th
3a2e0 65 73 65 20 70 61 72 61 6d 65 74 65 72 73 20 61 72 65 20 63 6f 6d 62 69 6e 65 64 20 77 69 74 68 ese.parameters.are.combined.with
3a300 20 6d 6f 64 65 6c 2d 73 70 65 63 69 66 69 63 20 61 6e 64 20 62 61 63 6b 65 6e 64 2d 73 70 65 63 .model-specific.and.backend-spec
3a320 69 66 69 63 0a 3a 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 20 62 65 66 6f 72 65 20 73 65 6e 64 ific.:request-params.before.send
3a340 69 6e 67 20 61 20 72 65 71 75 65 73 74 2c 20 77 68 69 63 68 20 73 65 65 2e 20 20 57 61 72 6e 69 ing.a.request,.which.see...Warni
3a360 6e 67 3a 20 76 61 6c 75 65 73 0a 69 6e 63 6f 6d 70 61 74 69 62 6c 65 20 77 69 74 68 20 74 68 65 ng:.values.incompatible.with.the
3a380 20 61 63 74 69 76 65 20 62 61 63 6b 65 6e 64 20 63 61 6e 20 62 72 65 61 6b 20 67 70 74 65 6c 2e .active.backend.can.break.gptel.
3a3a0 20 20 44 6f 20 6e 6f 74 20 75 73 65 20 74 68 69 73 0a 76 61 72 69 61 62 6c 65 20 75 6e 6c 65 73 ..Do.not.use.this.variable.unles
3a3c0 73 20 79 6f 75 20 6b 6e 6f 77 20 77 68 61 74 20 79 6f 75 27 72 65 20 64 6f 69 6e 67 21 22 29 0a s.you.know.what.you're.doing!").
3a3e0 0a 28 64 65 66 63 6f 6e 73 74 20 67 70 74 65 6c 2d 2d 65 72 73 61 74 7a 2d 6a 73 6f 6e 2d 74 6f .(defconst.gptel--ersatz-json-to
3a400 6f 6c 20 22 72 65 73 70 6f 6e 73 65 5f 6a 73 6f 6e 22 0a 20 20 22 4e 61 6d 65 20 6f 66 20 65 72 ol."response_json"..."Name.of.er
3a420 73 61 74 7a 20 74 6f 6f 6c 20 75 73 65 64 20 74 6f 20 66 6f 72 63 65 20 4a 53 4f 4e 20 6f 75 74 satz.tool.used.to.force.JSON.out
3a440 70 75 74 2e 0a 0a 53 6f 6d 65 20 41 50 49 73 2c 20 6c 69 6b 65 20 41 6e 74 68 72 6f 70 69 63 2c put...Some.APIs,.like.Anthropic,
3a460 20 75 73 65 20 61 20 74 6f 6f 6c 20 74 6f 20 70 72 6f 64 75 63 65 20 73 74 72 75 63 74 75 72 65 .use.a.tool.to.produce.structure
3a480 64 20 4a 53 4f 4e 20 6f 75 74 70 75 74 2e 22 29 0a 0a 0c 0a 3b 3b 3b 20 55 74 69 6c 69 74 79 20 d.JSON.output.")....;;;.Utility.
3a4a0 66 75 6e 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 functions..(defun.gptel-api-key-
3a4c0 66 72 6f 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 from-auth-source.(&optional.host
3a4e0 20 75 73 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 .user)..."Lookup.api.key.in.the.
3a500 61 75 74 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 auth.source..By.default,.the.LLM
3a520 20 68 6f 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 .host.for.the.active.backend.is.
3a540 75 73 65 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 used.as.HOST,.and.\"apikey\".as.
3a560 55 53 45 52 2e 22 0a 20 20 28 69 66 2d 6c 65 74 2a 20 28 28 73 65 63 72 65 74 0a 20 20 20 20 20 USER."...(if-let*.((secret......
3a580 20 20 20 20 20 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 ........(plist-get..............
3a5a0 20 28 63 61 72 20 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 .(car.(auth-source-search.......
3a5c0 20 20 20 20 20 20 20 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 ..............:host.(or.host.(gp
3a5e0 74 65 6c 2d 62 61 63 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 tel-backend-host.gptel-backend))
3a600 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 75 73 65 72 20 28 6f 72 20 75 .....................:user.(or.u
3a620 73 65 72 20 22 61 70 69 6b 65 79 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ser."apikey")...................
3a640 20 20 3a 72 65 71 75 69 72 65 20 27 28 3a 73 65 63 72 65 74 29 29 29 0a 20 20 20 20 20 20 20 20 ..:require.'(:secret))).........
3a660 20 20 20 20 20 20 3a 73 65 63 72 65 74 29 29 29 0a 20 20 20 20 20 20 28 69 66 20 28 66 75 6e 63 ......:secret))).......(if.(func
3a680 74 69 6f 6e 70 20 73 65 63 72 65 74 29 0a 20 20 20 20 20 20 20 20 20 20 28 65 6e 63 6f 64 65 2d tionp.secret)...........(encode-
3a6a0 63 6f 64 69 6e 67 2d 73 74 72 69 6e 67 20 28 66 75 6e 63 61 6c 6c 20 73 65 63 72 65 74 29 20 27 coding-string.(funcall.secret).'
3a6c0 75 74 66 2d 38 29 0a 20 20 20 20 20 20 20 20 73 65 63 72 65 74 29 0a 20 20 20 20 28 75 73 65 72 utf-8).........secret).....(user
3a6e0 2d 65 72 72 6f 72 20 22 4e 6f 20 60 67 70 74 65 6c 2d 61 70 69 2d 6b 65 79 27 20 66 6f 75 6e 64 -error."No.`gptel-api-key'.found
3a700 20 69 6e 20 74 68 65 20 61 75 74 68 20 73 6f 75 72 63 65 22 29 29 29 0a 0a 3b 3b 20 46 49 58 4d .in.the.auth.source")))..;;.FIXM
3a720 45 20 53 68 6f 75 6c 64 20 77 65 20 75 74 66 2d 38 20 65 6e 63 6f 64 65 20 74 68 65 20 61 70 69 E.Should.we.utf-8.encode.the.api
3a740 2d 6b 65 79 20 68 65 72 65 3f 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 67 65 74 2d 61 70 69 -key.here?.(defun.gptel--get-api
3a760 2d 6b 65 79 20 28 26 6f 70 74 69 6f 6e 61 6c 20 6b 65 79 29 0a 20 20 22 47 65 74 20 61 70 69 20 -key.(&optional.key)..."Get.api.
3a780 6b 65 79 20 66 72 6f 6d 20 4b 45 59 2c 20 6f 72 20 66 72 6f 6d 20 60 67 70 74 65 6c 2d 61 70 69 key.from.KEY,.or.from.`gptel-api
3a7a0 2d 6b 65 79 27 2e 22 0a 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 6b 65 79 2d 73 79 6d 20 28 -key'."...(when-let*.((key-sym.(
3a7c0 6f 72 20 6b 65 79 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 6b 65 79 20 67 70 74 65 6c 2d or.key.(gptel-backend-key.gptel-
3a7e0 62 61 63 6b 65 6e 64 29 29 29 29 0a 20 20 20 20 28 63 6c 2d 74 79 70 65 63 61 73 65 20 6b 65 79 backend)))).....(cl-typecase.key
3a800 2d 73 79 6d 0a 20 20 20 20 20 20 28 66 75 6e 63 74 69 6f 6e 20 28 73 74 72 69 6e 67 2d 74 72 69 -sym.......(function.(string-tri
3a820 6d 2d 72 69 67 68 74 20 28 66 75 6e 63 61 6c 6c 20 6b 65 79 2d 73 79 6d 29 20 22 5b 5c 6e 5c 72 m-right.(funcall.key-sym)."[\n\r
3a840 5d 2b 22 29 29 0a 20 20 20 20 20 20 28 73 74 72 69 6e 67 20 28 73 74 72 69 6e 67 2d 74 72 69 6d ]+")).......(string.(string-trim
3a860 2d 72 69 67 68 74 20 6b 65 79 2d 73 79 6d 20 22 5b 5c 6e 5c 72 5d 2b 22 29 29 0a 20 20 20 20 20 -right.key-sym."[\n\r]+"))......
3a880 20 28 73 79 6d 62 6f 6c 20 28 69 66 2d 6c 65 74 2a 20 28 28 76 61 6c 20 28 73 79 6d 62 6f 6c 2d .(symbol.(if-let*.((val.(symbol-
3a8a0 76 61 6c 75 65 20 6b 65 79 2d 73 79 6d 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 value.key-sym)))................
3a8c0 20 20 20 28 67 70 74 65 6c 2d 2d 67 65 74 2d 61 70 69 2d 6b 65 79 20 76 61 6c 29 0a 20 20 20 20 ...(gptel--get-api-key.val).....
3a8e0 20 20 20 20 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 20 22 60 67 70 74 65 6c 2d 61 70 69 2d 6b ............(error."`gptel-api-k
3a900 65 79 27 20 69 73 20 6e 6f 74 20 76 61 6c 69 64 22 29 29 29 0a 20 20 20 20 20 20 28 74 20 28 65 ey'.is.not.valid"))).......(t.(e
3a920 72 72 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 rror."`gptel-api-key'.is.not.val
3a940 69 64 22 29 29 29 29 29 0a 0a 28 64 65 66 73 75 62 73 74 20 67 70 74 65 6c 2d 2d 74 6f 2d 6e 75 id")))))..(defsubst.gptel--to-nu
3a960 6d 62 65 72 20 28 76 61 6c 29 0a 20 20 22 45 6e 73 75 72 65 20 56 41 4c 20 69 73 20 61 20 6e 75 mber.(val)..."Ensure.VAL.is.a.nu
3a980 6d 62 65 72 2e 22 0a 20 20 28 63 6f 6e 64 0a 20 20 20 28 28 6e 75 6d 62 65 72 70 20 76 61 6c 29 mber."...(cond....((numberp.val)
3a9a0 20 76 61 6c 29 0a 20 20 20 28 28 73 74 72 69 6e 67 70 20 76 61 6c 29 20 28 73 74 72 69 6e 67 2d .val)....((stringp.val).(string-
3a9c0 74 6f 2d 6e 75 6d 62 65 72 20 76 61 6c 29 29 0a 20 20 20 28 28 65 72 72 6f 72 20 22 25 53 20 63 to-number.val))....((error."%S.c
3a9e0 61 6e 6e 6f 74 20 62 65 20 63 6f 6e 76 65 72 74 65 64 20 74 6f 20 61 20 6e 75 6d 62 65 72 22 20 annot.be.converted.to.a.number".
3aa00 76 61 6c 29 29 29 29 0a 0a 28 64 65 66 73 75 62 73 74 20 67 70 74 65 6c 2d 2d 74 6f 2d 73 74 72 val))))..(defsubst.gptel--to-str
3aa20 69 6e 67 20 28 73 29 0a 20 20 22 43 6f 6e 76 65 72 74 20 53 20 74 6f 20 61 20 73 74 72 69 6e 67 ing.(s)..."Convert.S.to.a.string
3aa40 2c 20 69 66 20 70 6f 73 73 69 62 6c 65 2e 22 0a 20 20 28 63 6c 2d 74 79 70 65 63 61 73 65 20 73 ,.if.possible."...(cl-typecase.s
3aa60 0a 20 20 20 20 28 73 79 6d 62 6f 6c 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 73 29 29 0a 20 20 .....(symbol.(symbol-name.s))...
3aa80 20 20 28 73 74 72 69 6e 67 20 73 29 0a 20 20 20 20 28 6f 74 68 65 72 77 69 73 65 20 28 70 72 69 ..(string.s).....(otherwise.(pri
3aaa0 6e 31 2d 74 6f 2d 73 74 72 69 6e 67 20 73 29 29 29 29 0a 0a 28 64 65 66 73 75 62 73 74 20 67 70 n1-to-string.s))))..(defsubst.gp
3aac0 74 65 6c 2d 2d 69 6e 74 65 72 6e 20 28 73 29 0a 20 20 22 49 6e 74 65 72 6e 20 53 2c 20 69 66 20 tel--intern.(s)..."Intern.S,.if.
3aae0 70 6f 73 73 69 62 6c 65 2e 22 0a 20 20 28 63 6c 2d 65 74 79 70 65 63 61 73 65 20 73 0a 20 20 20 possible."...(cl-etypecase.s....
3ab00 20 28 73 79 6d 62 6f 6c 20 73 29 0a 20 20 20 20 28 73 74 72 69 6e 67 20 28 69 6e 74 65 72 6e 20 .(symbol.s).....(string.(intern.
3ab20 73 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 6d 65 72 67 65 2d 70 6c 69 73 74 s))))..(defun.gptel--merge-plist
3ab40 73 20 28 26 72 65 73 74 20 70 6c 69 73 74 73 29 0a 20 20 22 4d 65 72 67 65 20 50 4c 49 53 54 53 s.(&rest.plists)..."Merge.PLISTS
3ab60 2c 20 61 6c 74 65 72 69 6e 67 20 74 68 65 20 66 69 72 73 74 20 6f 6e 65 2e 0a 0a 4c 61 74 65 72 ,.altering.the.first.one...Later
3ab80 20 70 6c 69 73 74 73 20 69 6e 20 74 68 65 20 73 65 71 75 65 6e 63 65 20 74 61 6b 65 20 70 72 65 .plists.in.the.sequence.take.pre
3aba0 63 65 64 65 6e 63 65 20 6f 76 65 72 20 65 61 72 6c 69 65 72 20 6f 6e 65 73 2e 22 0a 20 20 28 6c cedence.over.earlier.ones."...(l
3abc0 65 74 20 28 3b 3b 20 28 72 74 6e 20 28 63 6f 70 79 2d 73 65 71 75 65 6e 63 65 20 28 70 6f 70 20 et.(;;.(rtn.(copy-sequence.(pop.
3abe0 70 6c 69 73 74 73 29 29 29 0a 20 20 20 20 20 20 20 20 28 72 74 6e 20 28 70 6f 70 20 70 6c 69 73 plists))).........(rtn.(pop.plis
3ac00 74 73 29 29 0a 20 20 20 20 20 20 20 20 70 20 76 20 6c 73 29 0a 20 20 20 20 28 77 68 69 6c 65 20 ts)).........p.v.ls).....(while.
3ac20 70 6c 69 73 74 73 0a 20 20 20 20 20 20 28 73 65 74 71 20 6c 73 20 28 70 6f 70 20 70 6c 69 73 74 plists.......(setq.ls.(pop.plist
3ac40 73 29 29 0a 20 20 20 20 20 20 28 77 68 69 6c 65 20 6c 73 0a 20 20 20 20 20 20 20 20 28 73 65 74 s)).......(while.ls.........(set
3ac60 71 20 70 20 28 70 6f 70 20 6c 73 29 20 76 20 28 70 6f 70 20 6c 73 29 29 0a 20 20 20 20 20 20 20 q.p.(pop.ls).v.(pop.ls))........
3ac80 20 28 73 65 74 71 20 72 74 6e 20 28 70 6c 69 73 74 2d 70 75 74 20 72 74 6e 20 70 20 76 29 29 29 .(setq.rtn.(plist-put.rtn.p.v)))
3aca0 29 0a 20 20 20 20 72 74 6e 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 66 69 6c 65 2d ).....rtn))..(defun.gptel--file-
3acc0 62 69 6e 61 72 79 2d 70 20 28 70 61 74 68 29 0a 20 20 22 43 68 65 63 6b 20 69 66 20 66 69 6c 65 binary-p.(path)..."Check.if.file
3ace0 20 61 74 20 50 41 54 48 20 69 73 20 72 65 61 64 61 62 6c 65 20 61 6e 64 20 62 69 6e 61 72 79 2e .at.PATH.is.readable.and.binary.
3ad00 22 0a 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 28 77 "...(condition-case.nil.......(w
3ad20 69 74 68 2d 74 65 6d 70 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 2d ith-temp-buffer.........(insert-
3ad40 66 69 6c 65 2d 63 6f 6e 74 65 6e 74 73 20 70 61 74 68 20 6e 69 6c 20 31 20 35 31 32 20 27 72 65 file-contents.path.nil.1.512.'re
3ad60 70 6c 61 63 65 29 0a 20 20 20 20 20 20 20 20 28 6d 65 6d 71 20 62 75 66 66 65 72 2d 66 69 6c 65 place).........(memq.buffer-file
3ad80 2d 63 6f 64 69 6e 67 2d 73 79 73 74 65 6d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 28 6e -coding-system...............'(n
3ada0 6f 2d 63 6f 6e 76 65 72 73 69 6f 6e 20 6e 6f 2d 63 6f 6e 76 65 72 73 69 6f 6e 2d 6d 75 6c 74 69 o-conversion.no-conversion-multi
3adc0 62 79 74 65 29 29 29 0a 20 20 20 20 28 66 69 6c 65 2d 6d 69 73 73 69 6e 67 20 28 6d 65 73 73 61 byte))).....(file-missing.(messa
3ade0 67 65 20 22 46 69 6c 65 20 5c 22 25 73 5c 22 20 69 73 20 6e 6f 74 20 72 65 61 64 61 62 6c 65 2e ge."File.\"%s\".is.not.readable.
3ae00 22 20 70 61 74 68 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 69 6c 29 29 29 ".path)...................nil)))
3ae20 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 69 6e 73 65 72 74 2d 66 69 6c 65 2d 73 74 72 69 ..(defun.gptel--insert-file-stri
3ae40 6e 67 20 28 70 61 74 68 29 0a 20 20 22 49 6e 73 65 72 74 20 61 74 20 70 6f 69 6e 74 20 74 68 65 ng.(path)..."Insert.at.point.the
3ae60 20 63 6f 6e 74 65 6e 74 73 20 6f 66 20 74 68 65 20 66 69 6c 65 20 61 74 20 50 41 54 48 20 61 73 .contents.of.the.file.at.PATH.as
3ae80 20 63 6f 6e 74 65 78 74 2e 22 0a 20 20 28 69 6e 73 65 72 74 20 28 66 6f 72 6d 61 74 20 22 49 6e .context."...(insert.(format."In
3aea0 20 66 69 6c 65 20 60 25 73 60 3a 22 20 28 61 62 62 72 65 76 69 61 74 65 2d 66 69 6c 65 2d 6e 61 .file.`%s`:".(abbreviate-file-na
3aec0 6d 65 20 70 61 74 68 29 29 0a 20 20 20 20 20 20 20 20 20 20 22 5c 6e 5c 6e 60 60 60 5c 6e 22 29 me.path))..........."\n\n```\n")
3aee0 0a 20 20 28 6c 65 74 20 28 28 70 6d 20 28 70 6f 69 6e 74 2d 6d 61 72 6b 65 72 29 29 29 0a 20 20 ...(let.((pm.(point-marker)))...
3af00 20 20 28 73 65 74 2d 6d 61 72 6b 65 72 2d 69 6e 73 65 72 74 69 6f 6e 2d 74 79 70 65 20 70 6d 20 ..(set-marker-insertion-type.pm.
3af20 74 29 0a 20 20 20 20 28 69 6e 73 65 72 74 2d 66 69 6c 65 2d 63 6f 6e 74 65 6e 74 73 20 70 61 74 t).....(insert-file-contents.pat
3af40 68 29 0a 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 70 6d 29 29 0a 20 20 28 69 6e 73 65 72 74 h).....(goto-char.pm))...(insert
3af60 20 22 5c 6e 60 60 60 5c 6e 22 29 29 0a 0a 28 64 65 66 76 61 72 20 75 72 6c 2d 68 74 74 70 2d 65 ."\n```\n"))..(defvar.url-http-e
3af80 6e 64 2d 6f 66 2d 68 65 61 64 65 72 73 29 0a 28 64 65 66 76 61 72 20 75 72 6c 2d 68 74 74 70 2d nd-of-headers).(defvar.url-http-
3afa0 72 65 73 70 6f 6e 73 65 2d 73 74 61 74 75 73 29 0a 28 63 6c 2d 64 65 66 75 6e 20 67 70 74 65 6c response-status).(cl-defun.gptel
3afc0 2d 2d 75 72 6c 2d 72 65 74 72 69 65 76 65 20 28 75 72 6c 20 26 6b 65 79 20 6d 65 74 68 6f 64 20 --url-retrieve.(url.&key.method.
3afe0 64 61 74 61 20 68 65 61 64 65 72 73 29 0a 20 20 22 52 65 74 72 69 65 76 65 20 55 52 4c 20 73 79 data.headers)..."Retrieve.URL.sy
3b000 6e 63 68 72 6f 6e 6f 75 73 6c 79 20 77 69 74 68 20 4d 45 54 48 4f 44 2c 20 44 41 54 41 20 61 6e nchronously.with.METHOD,.DATA.an
3b020 64 20 48 45 41 44 45 52 53 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 69 6e 64 65 6e 74 20 31 d.HEADERS."...(declare.(indent.1
3b040 29 29 0a 20 20 28 6c 65 74 20 28 28 75 72 6c 2d 72 65 71 75 65 73 74 2d 6d 65 74 68 6f 64 20 28 ))...(let.((url-request-method.(
3b060 69 66 20 28 65 71 20 6d 65 74 68 6f 64 27 70 6f 73 74 29 20 22 50 4f 53 54 22 20 22 47 45 54 22 if.(eq.method'post)."POST"."GET"
3b080 29 29 0a 20 20 20 20 20 20 20 20 28 75 72 6c 2d 72 65 71 75 65 73 74 2d 64 61 74 61 20 28 65 6e )).........(url-request-data.(en
3b0a0 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 2d 2d 6a 73 6f 6e 2d code-coding-string.(gptel--json-
3b0c0 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 20 20 20 20 20 28 75 encode.data).'utf-8)).........(u
3b0e0 72 6c 2d 6d 69 6d 65 2d 61 63 63 65 70 74 2d 73 74 72 69 6e 67 20 22 61 70 70 6c 69 63 61 74 69 rl-mime-accept-string."applicati
3b100 6f 6e 2f 6a 73 6f 6e 22 29 0a 20 20 20 20 20 20 20 20 28 75 72 6c 2d 72 65 71 75 65 73 74 2d 65 on/json").........(url-request-e
3b120 78 74 72 61 2d 68 65 61 64 65 72 73 0a 20 20 20 20 20 20 20 20 20 60 28 28 22 63 6f 6e 74 65 6e xtra-headers..........`(("conten
3b140 74 2d 74 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 0a 20 20 t-type"..."application/json")...
3b160 20 20 20 20 20 20 20 20 20 2c 40 68 65 61 64 65 72 73 29 29 29 0a 20 20 20 20 28 77 69 74 68 2d .........,@headers))).....(with-
3b180 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 75 72 6c 2d 72 65 74 72 69 65 76 65 2d 73 79 6e current-buffer.(url-retrieve-syn
3b1a0 63 68 72 6f 6e 6f 75 73 6c 79 20 75 72 6c 20 27 73 69 6c 65 6e 74 29 0a 20 20 20 20 20 20 28 67 chronously.url.'silent).......(g
3b1c0 6f 74 6f 2d 63 68 61 72 20 75 72 6c 2d 68 74 74 70 2d 65 6e 64 2d 6f 66 2d 68 65 61 64 65 72 73 oto-char.url-http-end-of-headers
3b1e0 29 0a 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 6a 73 6f 6e 2d 72 65 61 64 29 29 29 29 0a 0a 28 ).......(gptel--json-read))))..(
3b200 64 65 66 75 6e 20 67 70 74 65 6c 2d 61 75 74 6f 2d 73 63 72 6f 6c 6c 20 28 29 0a 20 20 22 53 63 defun.gptel-auto-scroll.()..."Sc
3b220 72 6f 6c 6c 20 77 69 6e 64 6f 77 20 69 66 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 20 63 6f 6e 74 roll.window.if.LLM.response.cont
3b240 69 6e 75 65 73 20 62 65 6c 6f 77 20 76 69 65 77 70 6f 72 74 2e 0a 0a 4e 6f 74 65 3a 20 54 68 69 inues.below.viewport...Note:.Thi
3b260 73 20 77 69 6c 6c 20 6d 6f 76 65 20 74 68 65 20 63 75 72 73 6f 72 2e 22 0a 20 20 28 77 68 65 6e s.will.move.the.cursor."...(when
3b280 2d 6c 65 74 2a 20 28 28 77 69 6e 20 28 67 65 74 2d 62 75 66 66 65 72 2d 77 69 6e 64 6f 77 20 28 -let*.((win.(get-buffer-window.(
3b2a0 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 20 27 76 69 73 69 62 6c 65 29 29 0a 20 20 20 20 20 current-buffer).'visible))......
3b2c0 20 20 20 20 20 20 20 20 20 28 28 6e 6f 74 20 28 70 6f 73 2d 76 69 73 69 62 6c 65 2d 69 6e 2d 77 .........((not.(pos-visible-in-w
3b2e0 69 6e 64 6f 77 2d 70 20 28 70 6f 69 6e 74 29 20 77 69 6e 29 29 29 0a 20 20 20 20 20 20 20 20 20 indow-p.(point).win)))..........
3b300 20 20 20 20 20 28 73 63 72 6f 6c 6c 2d 65 72 72 6f 72 2d 74 6f 70 2d 62 6f 74 74 6f 6d 20 74 29 .....(scroll-error-top-bottom.t)
3b320 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 20 20 20 ).....(condition-case.nil.......
3b340 20 20 28 77 69 74 68 2d 73 65 6c 65 63 74 65 64 2d 77 69 6e 64 6f 77 20 77 69 6e 0a 20 20 20 20 ..(with-selected-window.win.....
3b360 20 20 20 20 20 20 28 73 63 72 6f 6c 6c 2d 75 70 2d 63 6f 6d 6d 61 6e 64 29 29 0a 20 20 20 20 20 ......(scroll-up-command))......
3b380 20 28 65 72 72 6f 72 20 6e 69 6c 29 29 29 29 0a 0a 28 64 65 66 73 75 62 73 74 20 67 70 74 65 6c .(error.nil))))..(defsubst.gptel
3b3a0 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 22 50 72 65 66 -prompt-prefix-string.()..."Pref
3b3c0 69 78 20 62 65 66 6f 72 65 20 75 73 65 72 20 70 72 6f 6d 70 74 73 20 69 6e 20 60 67 70 74 65 6c ix.before.user.prompts.in.`gptel
3b3e0 2d 6d 6f 64 65 27 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 73 69 64 65 2d 65 66 66 65 63 74 -mode'."...(declare.(side-effect
3b400 2d 66 72 65 65 20 74 29 29 0a 20 20 28 6f 72 20 28 61 6c 69 73 74 2d 67 65 74 20 6d 61 6a 6f 72 -free.t))...(or.(alist-get.major
3b420 2d 6d 6f 64 65 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 74 29 -mode.gptel-prompt-prefix-alist)
3b440 20 22 22 29 29 0a 0a 28 64 65 66 73 75 62 73 74 20 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d .""))..(defsubst.gptel-response-
3b460 70 72 65 66 69 78 2d 73 74 72 69 6e 67 20 28 29 0a 20 20 22 50 72 65 66 69 78 20 62 65 66 6f 72 prefix-string.()..."Prefix.befor
3b480 65 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 73 20 69 6e 20 60 67 70 74 65 6c 2d 6d 6f 64 65 27 2e e.LLM.responses.in.`gptel-mode'.
3b4a0 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 "...(declare.(side-effect-free.t
3b4c0 29 29 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 ))...(or.(alist-get.major-mode.g
3b4e0 70 74 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 ptel-response-prefix-alist).""))
3b500 0a 0a 28 64 65 66 75 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 ..(defun.gptel-beginning-of-resp
3b520 6f 6e 73 65 20 28 26 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 onse.(&optional._._.arg)..."Move
3b540 20 70 6f 69 6e 74 20 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 .point.to.the.beginning.of.the.L
3b560 4c 4d 20 72 65 73 70 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 LM.response.ARG.times."...(inter
3b580 61 63 74 69 76 65 20 28 6c 69 73 74 20 6e 69 6c 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 20 20 active.(list.nil.nil............
3b5a0 20 20 20 20 20 20 20 20 20 20 28 70 72 65 66 69 78 2d 6e 75 6d 65 72 69 63 2d 76 61 6c 75 65 20 ..........(prefix-numeric-value.
3b5c0 63 75 72 72 65 6e 74 2d 70 72 65 66 69 78 2d 61 72 67 29 29 29 0a 20 20 28 67 70 74 65 6c 2d 65 current-prefix-arg)))...(gptel-e
3b5e0 6e 64 2d 6f 66 2d 72 65 73 70 6f 6e 73 65 20 6e 69 6c 20 6e 69 6c 20 28 2d 20 28 6f 72 20 61 72 nd-of-response.nil.nil.(-.(or.ar
3b600 67 20 31 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 65 6e 64 2d 6f 66 2d 72 65 73 g.1))))..(defun.gptel-end-of-res
3b620 70 6f 6e 73 65 20 28 26 6f 70 74 69 6f 6e 61 6c 20 5f 20 5f 20 61 72 67 29 0a 20 20 22 4d 6f 76 ponse.(&optional._._.arg)..."Mov
3b640 65 20 70 6f 69 6e 74 20 74 6f 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20 4c 4c 4d 20 72 65 e.point.to.the.end.of.the.LLM.re
3b660 73 70 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 sponse.ARG.times."...(interactiv
3b680 65 20 28 6c 69 73 74 20 6e 69 6c 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 e.(list.nil.nil.................
3b6a0 20 20 20 20 20 28 70 72 65 66 69 78 2d 6e 75 6d 65 72 69 63 2d 76 61 6c 75 65 20 63 75 72 72 65 .....(prefix-numeric-value.curre
3b6c0 6e 74 2d 70 72 65 66 69 78 2d 61 72 67 29 29 29 0a 20 20 28 75 6e 6c 65 73 73 20 61 72 67 20 28 nt-prefix-arg)))...(unless.arg.(
3b6e0 73 65 74 71 20 61 72 67 20 31 29 29 0a 20 20 28 6c 65 74 20 28 28 73 65 61 72 63 68 20 28 69 66 setq.arg.1))...(let.((search.(if
3b700 20 28 3e 20 61 72 67 20 30 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 .(>.arg.0).....................#
3b720 27 74 65 78 74 2d 70 72 6f 70 65 72 74 79 2d 73 65 61 72 63 68 2d 66 6f 72 77 61 72 64 0a 20 20 'text-property-search-forward...
3b740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 27 74 65 78 74 2d 70 72 6f 70 65 72 74 79 2d ................#'text-property-
3b760 73 65 61 72 63 68 2d 62 61 63 6b 77 61 72 64 29 29 29 0a 20 20 20 20 28 64 6f 74 69 6d 65 73 20 search-backward))).....(dotimes.
3b780 28 5f 20 28 61 62 73 20 61 72 67 29 29 0a 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 73 65 61 (_.(abs.arg)).......(funcall.sea
3b7a0 72 63 68 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 28 69 rch.'gptel.'response.t).......(i
3b7c0 66 20 28 3e 20 61 72 67 20 30 29 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a f.(>.arg.0)...........(when-let*
3b7e0 20 28 28 70 72 65 66 69 78 20 28 67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 70 72 65 66 69 78 2d 73 .((prefix.(gptel-prompt-prefix-s
3b800 74 72 69 6e 67 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 tring)).......................((
3b820 6e 6f 74 20 28 73 74 72 69 6e 67 2d 65 6d 70 74 79 2d 70 20 70 72 65 66 69 78 29 29 29 0a 20 20 not.(string-empty-p.prefix)))...
3b840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 6c 6f 6f 6b 69 6e 67 2d 61 74 ....................((looking-at
3b860 20 28 63 6f 6e 63 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 .(concat."\n\\{1,2\\}"..........
3b880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
3b8a0 20 20 28 72 65 67 65 78 70 2d 71 75 6f 74 65 20 70 72 65 66 69 78 29 20 22 3f 22 29 29 29 29 0a ..(regexp-quote.prefix)."?")))).
3b8c0 20 20 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 65 6e ............(goto-char.(match-en
3b8e0 64 20 30 29 29 29 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 70 72 65 66 d.0))).........(when-let*.((pref
3b900 69 78 20 28 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 70 72 65 66 69 78 2d 73 74 72 69 6e 67 ix.(gptel-response-prefix-string
3b920 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 6e 6f 74 20 28 73 74 )).....................((not.(st
3b940 72 69 6e 67 2d 65 6d 70 74 79 2d 70 20 70 72 65 66 69 78 29 29 29 0a 20 20 20 20 20 20 20 20 20 ring-empty-p.prefix)))..........
3b960 20 20 20 20 20 20 20 20 20 20 20 28 28 6c 6f 6f 6b 69 6e 67 2d 62 61 63 6b 20 28 63 6f 6e 63 61 ...........((looking-back.(conca
3b980 74 20 28 72 65 67 65 78 70 2d 71 75 6f 74 65 20 70 72 65 66 69 78 29 20 22 3f 22 29 0a 20 20 20 t.(regexp-quote.prefix)."?")....
3b9a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
3b9c0 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 28 67 6f 74 6f 2d 63 (point-min))))...........(goto-c
3b9e0 68 61 72 20 28 6d 61 74 63 68 2d 62 65 67 69 6e 6e 69 6e 67 20 30 29 29 29 29 29 29 29 0a 0a 28 har.(match-beginning.0)))))))..(
3ba00 64 65 66 6d 61 63 72 6f 20 67 70 74 65 6c 2d 2d 61 74 2d 77 6f 72 64 2d 65 6e 64 20 28 26 72 65 defmacro.gptel--at-word-end.(&re
3ba20 73 74 20 62 6f 64 79 29 0a 20 20 22 45 78 65 63 75 74 65 20 42 4f 44 59 20 61 74 20 65 6e 64 20 st.body)..."Execute.BODY.at.end.
3ba40 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 77 6f 72 64 20 6f 72 20 70 75 6e 63 74 75 61 74 69 of.the.current.word.or.punctuati
3ba60 6f 6e 2e 22 0a 20 20 60 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 28 73 6b on."...`(save-excursion......(sk
3ba80 69 70 2d 73 79 6e 74 61 78 2d 66 6f 72 77 61 72 64 20 22 77 2e 22 29 0a 20 20 20 20 20 2c 28 6d ip-syntax-forward."w.")......,(m
3baa0 61 63 72 6f 65 78 70 2d 70 72 6f 67 6e 20 62 6f 64 79 29 29 29 0a 0a 28 64 65 66 6d 61 63 72 6f acroexp-progn.body)))..(defmacro
3bac0 20 67 70 74 65 6c 2d 2d 74 65 6d 70 2d 62 75 66 66 65 72 20 28 62 75 66 29 0a 20 20 22 47 65 6e .gptel--temp-buffer.(buf)..."Gen
3bae0 65 72 61 74 65 20 61 20 74 65 6d 70 20 62 75 66 66 65 72 20 42 55 46 2e 0a 0a 43 6f 6d 70 61 74 erate.a.temp.buffer.BUF...Compat
3bb00 69 62 69 6c 69 74 79 20 6d 61 63 72 6f 20 66 6f 72 20 45 6d 61 63 73 20 32 37 2e 31 2e 22 0a 20 ibility.macro.for.Emacs.27.1."..
3bb20 20 28 69 66 20 28 3c 20 65 6d 61 63 73 2d 6d 61 6a 6f 72 2d 76 65 72 73 69 6f 6e 20 32 38 29 0a .(if.(<.emacs-major-version.28).
3bb40 20 20 20 20 20 20 60 28 67 65 6e 65 72 61 74 65 2d 6e 65 77 2d 62 75 66 66 65 72 20 2c 62 75 66 ......`(generate-new-buffer.,buf
3bb60 29 0a 20 20 20 20 60 28 67 65 6e 65 72 61 74 65 2d 6e 65 77 2d 62 75 66 66 65 72 20 2c 62 75 66 ).....`(generate-new-buffer.,buf
3bb80 20 74 29 29 29 0a 0a 28 64 65 66 6d 61 63 72 6f 20 67 70 74 65 6c 2d 2d 77 69 74 68 2d 62 75 66 .t)))..(defmacro.gptel--with-buf
3bba0 66 65 72 2d 63 6f 70 79 20 28 62 75 66 20 73 74 61 72 74 20 65 6e 64 20 26 72 65 73 74 20 62 6f fer-copy.(buf.start.end.&rest.bo
3bbc0 64 79 29 0a 20 20 22 43 6f 70 79 20 67 70 74 65 6c 27 73 20 6c 6f 63 61 6c 20 76 61 72 69 61 62 dy)..."Copy.gptel's.local.variab
3bbe0 6c 65 73 20 66 72 6f 6d 20 42 55 46 20 74 6f 20 61 20 74 65 6d 70 20 62 75 66 66 65 72 20 61 6e les.from.BUF.to.a.temp.buffer.an
3bc00 64 20 72 75 6e 20 42 4f 44 59 2e 0a 0a 49 66 20 70 6f 73 69 74 69 6f 6e 73 20 53 54 41 52 54 20 d.run.BODY...If.positions.START.
3bc20 61 6e 64 20 45 4e 44 20 61 72 65 20 70 72 6f 76 69 64 65 64 2c 20 69 6e 73 65 72 74 20 74 68 61 and.END.are.provided,.insert.tha
3bc40 74 20 70 61 72 74 20 6f 66 20 42 55 46 20 66 69 72 73 74 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 t.part.of.BUF.first."...(declare
3bc60 20 28 69 6e 64 65 6e 74 20 33 29 29 0a 20 20 60 28 67 70 74 65 6c 2d 2d 77 69 74 68 2d 62 75 66 .(indent.3))...`(gptel--with-buf
3bc80 66 65 72 2d 63 6f 70 79 2d 69 6e 74 65 72 6e 61 6c 20 2c 62 75 66 20 2c 73 74 61 72 74 20 2c 65 fer-copy-internal.,buf.,start.,e
3bca0 6e 64 20 28 6c 61 6d 62 64 61 20 28 29 20 2c 40 62 6f 64 79 29 29 29 0a 0a 28 64 65 66 75 6e 20 nd.(lambda.().,@body)))..(defun.
3bcc0 67 70 74 65 6c 2d 2d 77 69 74 68 2d 62 75 66 66 65 72 2d 63 6f 70 79 2d 69 6e 74 65 72 6e 61 6c gptel--with-buffer-copy-internal
3bce0 20 28 62 75 66 20 73 74 61 72 74 20 65 6e 64 20 62 6f 64 79 2d 74 68 75 6e 6b 29 0a 20 20 22 50 .(buf.start.end.body-thunk)..."P
3bd00 72 65 70 61 72 65 20 61 20 74 65 6d 70 20 62 75 66 66 65 72 20 66 6f 72 20 61 20 67 70 74 65 6c repare.a.temp.buffer.for.a.gptel
3bd20 20 72 65 71 75 65 73 74 2e 0a 0a 46 6f 72 20 42 55 46 2c 20 53 54 41 52 54 2c 20 45 4e 44 20 61 .request...For.BUF,.START,.END.a
3bd40 6e 64 20 42 4f 44 59 2d 54 48 55 4e 4b 20 73 65 65 20 60 67 70 74 65 6c 2d 2d 77 69 74 68 2d 62 nd.BODY-THUNK.see.`gptel--with-b
3bd60 75 66 66 65 72 2d 63 6f 70 79 27 2e 22 0a 20 20 28 6c 65 74 20 28 28 74 65 6d 70 2d 62 75 66 66 uffer-copy'."...(let.((temp-buff
3bd80 65 72 20 28 67 70 74 65 6c 2d 2d 74 65 6d 70 2d 62 75 66 66 65 72 20 22 20 2a 67 70 74 65 6c 2d er.(gptel--temp-buffer.".*gptel-
3bda0 70 72 6f 6d 70 74 2a 22 29 29 29 0a 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 prompt*"))).....(with-current-bu
3bdc0 66 66 65 72 20 74 65 6d 70 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20 28 64 6f 6c 69 73 74 20 28 ffer.temp-buffer.......(dolist.(
3bde0 73 79 6d 20 27 28 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 2d 73 79 73 74 sym.'(.gptel-backend.gptel--syst
3be00 65 6d 2d 6d 65 73 73 61 67 65 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 0a 20 20 20 20 20 20 20 20 20 em-message.gptel-model..........
3be20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 6d 6f 64 65 20 67 70 74 65 6c 2d 74 72 .............gptel-mode.gptel-tr
3be40 61 63 6b 2d 72 65 73 70 6f 6e 73 65 20 67 70 74 65 6c 2d 74 72 61 63 6b 2d 6d 65 64 69 61 0a 20 ack-response.gptel-track-media..
3be60 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 75 73 65 2d 74 .....................gptel-use-t
3be80 6f 6f 6c 73 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 20 67 70 74 65 6c 2d 75 73 65 2d 63 75 72 6c 20 ools.gptel-tools.gptel-use-curl.
3bea0 67 70 74 65 6c 2d 2d 73 63 68 65 6d 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 gptel--schema...................
3bec0 20 20 20 20 67 70 74 65 6c 2d 75 73 65 2d 63 6f 6e 74 65 78 74 20 67 70 74 65 6c 2d 2d 6e 75 6d ....gptel-use-context.gptel--num
3bee0 2d 6d 65 73 73 61 67 65 73 2d 74 6f 2d 73 65 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -messages-to-send...............
3bf00 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 73 74 72 65 61 6d 20 67 70 74 65 6c 2d 69 6e 63 6c 75 ........gptel-stream.gptel-inclu
3bf20 64 65 2d 72 65 61 73 6f 6e 69 6e 67 20 67 70 74 65 6c 2d 2d 72 65 71 75 65 73 74 2d 70 61 72 61 de-reasoning.gptel--request-para
3bf40 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 67 70 74 65 6c 2d 74 ms.......................gptel-t
3bf60 65 6d 70 65 72 61 74 75 72 65 20 67 70 74 65 6c 2d 6d 61 78 2d 74 6f 6b 65 6e 73 20 67 70 74 65 emperature.gptel-max-tokens.gpte
3bf80 6c 2d 63 61 63 68 65 29 29 0a 20 20 20 20 20 20 20 20 28 73 65 74 20 28 6d 61 6b 65 2d 6c 6f 63 l-cache)).........(set.(make-loc
3bfa0 61 6c 2d 76 61 72 69 61 62 6c 65 20 73 79 6d 29 20 28 62 75 66 66 65 72 2d 6c 6f 63 61 6c 2d 76 al-variable.sym).(buffer-local-v
3bfc0 61 6c 75 65 20 73 79 6d 20 62 75 66 29 29 29 0a 20 20 20 20 20 20 28 77 68 65 6e 20 28 61 6e 64 alue.sym.buf))).......(when.(and
3bfe0 20 73 74 61 72 74 20 65 6e 64 29 20 28 69 6e 73 65 72 74 2d 62 75 66 66 65 72 2d 73 75 62 73 74 .start.end).(insert-buffer-subst
3c000 72 69 6e 67 20 62 75 66 20 73 74 61 72 74 20 65 6e 64 29 29 0a 20 20 20 20 20 20 28 73 65 74 71 ring.buf.start.end)).......(setq
3c020 20 6d 61 6a 6f 72 2d 6d 6f 64 65 20 28 62 75 66 66 65 72 2d 6c 6f 63 61 6c 2d 76 61 6c 75 65 20 .major-mode.(buffer-local-value.
3c040 27 6d 61 6a 6f 72 2d 6d 6f 64 65 20 62 75 66 29 29 0a 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 'major-mode.buf)).......(funcall
3c060 20 62 6f 64 79 2d 74 68 75 6e 6b 29 29 29 29 0a 0a 28 64 65 66 73 75 62 73 74 20 67 70 74 65 6c .body-thunk))))..(defsubst.gptel
3c080 2d 2d 74 72 69 6d 2d 70 72 65 66 69 78 65 73 20 28 73 29 0a 20 20 22 52 65 6d 6f 76 65 20 70 72 --trim-prefixes.(s)..."Remove.pr
3c0a0 6f 6d 70 74 2f 72 65 73 70 6f 6e 73 65 20 70 72 65 66 69 78 65 73 20 66 72 6f 6d 20 73 74 72 69 ompt/response.prefixes.from.stri
3c0c0 6e 67 20 53 2e 0a 0a 52 65 74 75 72 6e 20 6e 69 6c 20 69 66 20 73 74 72 69 6e 67 20 63 6f 6c 6c ng.S...Return.nil.if.string.coll
3c0e0 61 70 73 65 73 20 74 6f 20 65 6d 70 74 79 20 73 74 72 69 6e 67 2e 22 0a 20 20 28 6c 65 74 2a 20 apses.to.empty.string."...(let*.
3c100 28 28 74 72 69 6d 6d 65 64 20 28 73 74 72 69 6e 67 2d 74 72 69 6d 2d 6c 65 66 74 0a 20 20 20 20 ((trimmed.(string-trim-left.....
3c120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 20 28 66 6f 72 6d 61 74 20 22 5b 5c 74 5c 72 5c ...............s.(format."[\t\r\
3c140 6e 20 5d 2a 5c 5c 28 3f 3a 25 73 5c 5c 29 3f 5b 5c 74 5c 72 5c 6e 20 5d 2a 22 0a 20 20 20 20 20 n.]*\\(?:%s\\)?[\t\r\n.]*"......
3c160 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 70 2d ........................(regexp-
3c180 71 75 6f 74 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 quote...........................
3c1a0 20 20 20 20 28 67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 70 72 65 66 69 78 2d 73 74 72 69 6e 67 29 ....(gptel-prompt-prefix-string)
3c1c0 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 74 72 69 6d 6d 65 64 20 28 73 74 72 69 6e 67 2d 74 ))))..........(trimmed.(string-t
3c1e0 72 69 6d 2d 72 69 67 68 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 69 rim-right....................tri
3c200 6d 6d 65 64 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 mmed.(format."[\t\r\n.]*\\(?:%s\
3c220 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 20 20 20 \)?[\t\r\n.]*"..................
3c240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 67 65 78 70 2d 71 75 6f 74 65 0a ..................(regexp-quote.
3c260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
3c280 20 20 20 20 28 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 70 72 65 66 69 78 2d 73 74 72 69 6e ....(gptel-response-prefix-strin
3c2a0 67 29 29 29 29 29 29 0a 20 20 20 20 28 75 6e 6c 65 73 73 20 28 73 74 72 69 6e 67 2d 65 6d 70 74 g)))))).....(unless.(string-empt
3c2c0 79 2d 70 20 74 72 69 6d 6d 65 64 29 0a 20 20 20 20 20 20 74 72 69 6d 6d 65 64 29 29 29 0a 0a 28 y-p.trimmed).......trimmed)))..(
3c2e0 64 65 66 73 75 62 73 74 20 67 70 74 65 6c 2d 2d 6c 69 6e 6b 2d 73 74 61 6e 64 61 6c 6f 6e 65 2d defsubst.gptel--link-standalone-
3c300 70 20 28 62 65 67 20 65 6e 64 29 0a 20 20 22 52 65 74 75 72 6e 20 6e 6f 6e 2d 6e 69 6c 20 69 66 p.(beg.end)..."Return.non-nil.if
3c320 20 70 6f 73 69 74 69 6f 6e 73 20 42 45 47 20 61 6e 64 20 45 4e 44 20 61 72 65 20 69 73 6f 6c 61 .positions.BEG.and.END.are.isola
3c340 74 65 64 2e 0a 0a 54 68 69 73 20 6d 65 61 6e 73 20 74 68 65 20 65 78 74 65 6e 74 20 66 72 6f 6d ted...This.means.the.extent.from
3c360 20 42 45 47 20 74 6f 20 45 4e 44 20 69 73 20 74 68 65 20 6f 6e 6c 79 20 6e 6f 6e 2d 77 68 69 74 .BEG.to.END.is.the.only.non-whit
3c380 65 73 70 61 63 65 0a 63 6f 6e 74 65 6e 74 20 6f 6e 20 74 68 69 73 20 6c 69 6e 65 2e 22 0a 20 20 espace.content.on.this.line."...
3c3a0 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 28 61 6e 64 20 28 3d 20 62 65 67 20 (save-excursion.....(and.(=.beg.
3c3c0 28 70 72 6f 67 6e 20 28 67 6f 74 6f 2d 63 68 61 72 20 62 65 67 29 20 28 62 65 67 69 6e 6e 69 6e (progn.(goto-char.beg).(beginnin
3c3e0 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 20 20 20 g-of-line)......................
3c400 20 20 28 73 6b 69 70 2d 63 68 61 72 73 2d 66 6f 72 77 61 72 64 20 22 5c 74 20 22 29 0a 20 20 20 ..(skip-chars-forward."\t.")....
3c420 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 29 0a 20 20 ....................(point)))...
3c440 20 20 20 20 20 20 20 28 3d 20 65 6e 64 20 28 70 72 6f 67 6e 20 28 67 6f 74 6f 2d 63 68 61 72 20 .......(=.end.(progn.(goto-char.
3c460 65 6e 64 29 20 28 65 6e 64 2d 6f 66 2d 6c 69 6e 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 end).(end-of-line)..............
3c480 20 20 20 20 20 20 20 20 20 20 28 73 6b 69 70 2d 63 68 61 72 73 2d 62 61 63 6b 77 61 72 64 20 22 ..........(skip-chars-backward."
3c4a0 5c 74 20 22 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 70 6f \t.")........................(po
3c4c0 69 6e 74 29 29 29 29 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 int))))))..(defvar-local.gptel--
3c4e0 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 20 6e 69 6c 0a 20 20 22 53 74 6f 72 65 20 74 6f 20 70 65 72 backend-name.nil..."Store.to.per
3c500 73 69 73 74 20 62 61 63 6b 65 6e 64 20 6e 61 6d 65 20 61 63 72 6f 73 73 20 45 6d 61 63 73 20 73 sist.backend.name.across.Emacs.s
3c520 65 73 73 69 6f 6e 73 2e 0a 0a 4e 6f 74 65 3a 20 43 68 61 6e 67 69 6e 67 20 74 68 69 73 20 76 61 essions...Note:.Changing.this.va
3c540 72 69 61 62 6c 65 20 64 6f 65 73 20 6e 6f 74 20 61 66 66 65 63 74 20 67 70 74 65 6c 5c 5c 3d 27 riable.does.not.affect.gptel\\='
3c560 73 20 62 65 68 61 76 69 6f 72 0a 69 6e 20 61 6e 79 20 77 61 79 2e 22 29 0a 28 70 75 74 20 27 67 s.behavior.in.any.way.").(put.'g
3c580 70 74 65 6c 2d 2d 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 20 27 73 61 66 65 2d 6c 6f 63 61 6c 2d 76 ptel--backend-name.'safe-local-v
3c5a0 61 72 69 61 62 6c 65 20 23 27 61 6c 77 61 79 73 29 0a 0a 28 64 65 66 73 75 62 73 74 20 67 70 74 ariable.#'always)..(defsubst.gpt
3c5c0 65 6c 2d 2d 63 75 72 6c 2d 70 61 74 68 20 28 29 0a 20 20 22 43 75 72 6c 20 65 78 65 63 75 74 61 el--curl-path.()..."Curl.executa
3c5e0 62 6c 65 20 74 6f 20 75 73 65 2e 22 0a 20 20 28 69 66 20 28 73 74 72 69 6e 67 70 20 67 70 74 65 ble.to.use."...(if.(stringp.gpte
3c600 6c 2d 75 73 65 2d 63 75 72 6c 29 20 67 70 74 65 6c 2d 75 73 65 2d 63 75 72 6c 20 22 63 75 72 6c l-use-curl).gptel-use-curl."curl
3c620 22 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 74 72 61 6e 73 66 6f 72 6d 2d 61 64 64 "))..(defun.gptel--transform-add
3c640 2d 63 6f 6e 74 65 78 74 20 28 63 61 6c 6c 62 61 63 6b 20 66 73 6d 29 0a 20 20 28 69 66 20 28 61 -context.(callback.fsm)...(if.(a
3c660 6e 64 20 67 70 74 65 6c 2d 75 73 65 2d 63 6f 6e 74 65 78 74 20 67 70 74 65 6c 2d 63 6f 6e 74 65 nd.gptel-use-context.gptel-conte
3c680 78 74 2d 2d 61 6c 69 73 74 29 0a 20 20 20 20 20 20 28 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d xt--alist).......(gptel-context-
3c6a0 2d 77 72 61 70 20 63 61 6c 6c 62 61 63 6b 20 28 70 6c 69 73 74 2d 67 65 74 20 28 67 70 74 65 6c -wrap.callback.(plist-get.(gptel
3c6c0 2d 66 73 6d 2d 69 6e 66 6f 20 66 73 6d 29 20 3a 64 61 74 61 29 29 0a 20 20 20 20 28 66 75 6e 63 -fsm-info.fsm).:data)).....(func
3c6e0 61 6c 6c 20 63 61 6c 6c 62 61 63 6b 29 29 29 0a 0a 3b 3b 3b 3b 20 4d 6f 64 65 6c 20 69 6e 74 65 all.callback)))..;;;;.Model.inte
3c700 72 66 61 63 65 0a 3b 3b 20 4e 4f 54 45 3a 20 54 68 69 73 20 69 6e 74 65 72 66 61 63 65 20 77 6f rface.;;.NOTE:.This.interface.wo
3c720 75 6c 64 20 62 65 20 73 69 6d 70 6c 65 72 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 61 73 20 61 uld.be.simpler.to.implement.as.a
3c740 20 64 65 66 73 74 72 75 63 74 2e 20 20 42 75 74 20 74 68 65 6e 0a 3b 3b 20 75 73 65 72 73 20 63 .defstruct...But.then.;;.users.c
3c760 61 6e 6e 6f 74 20 73 65 74 20 60 67 70 74 65 6c 2d 6d 6f 64 65 6c 27 20 74 6f 20 61 20 73 79 6d annot.set.`gptel-model'.to.a.sym
3c780 62 6f 6c 2f 73 74 72 69 6e 67 20 64 69 72 65 63 74 6c 79 2c 20 6f 72 20 77 65 27 64 20 6e 65 65 bol/string.directly,.or.we'd.nee
3c7a0 64 0a 3b 3b 20 61 6e 6f 74 68 65 72 20 6d 61 70 20 66 72 6f 6d 20 74 68 65 73 65 20 73 79 6d 62 d.;;.another.map.from.these.symb
3c7c0 6f 6c 73 20 74 6f 20 74 68 65 20 61 63 74 75 61 6c 20 6d 6f 64 65 6c 20 73 74 72 75 63 74 73 2e ols.to.the.actual.model.structs.
3c7e0 0a 0a 28 64 65 66 73 75 62 73 74 20 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 6e 61 6d 65 20 28 6d ..(defsubst.gptel--model-name.(m
3c800 6f 64 65 6c 29 0a 20 20 22 47 65 74 20 6e 61 6d 65 20 6f 66 20 67 70 74 65 6c 20 4d 4f 44 45 4c odel)..."Get.name.of.gptel.MODEL
3c820 2e 22 0a 20 20 28 67 70 74 65 6c 2d 2d 74 6f 2d 73 74 72 69 6e 67 20 6d 6f 64 65 6c 29 29 0a 0a ."...(gptel--to-string.model))..
3c840 28 64 65 66 73 75 62 73 74 20 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 63 61 70 61 62 69 6c 69 74 (defsubst.gptel--model-capabilit
3c860 69 65 73 20 28 6d 6f 64 65 6c 29 0a 20 20 22 47 65 74 20 4d 4f 44 45 4c 20 63 61 70 61 62 69 6c ies.(model)..."Get.MODEL.capabil
3c880 69 74 69 65 73 2e 22 0a 20 20 28 67 65 74 20 6d 6f 64 65 6c 20 3a 63 61 70 61 62 69 6c 69 74 69 ities."...(get.model.:capabiliti
3c8a0 65 73 29 29 0a 0a 28 64 65 66 73 75 62 73 74 20 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 6d 69 6d es))..(defsubst.gptel--model-mim
3c8c0 65 73 20 28 6d 6f 64 65 6c 29 0a 20 20 22 47 65 74 20 73 75 70 70 6f 72 74 65 64 20 6d 69 6d 65 es.(model)..."Get.supported.mime
3c8e0 2d 74 79 70 65 73 20 66 6f 72 20 4d 4f 44 45 4c 2e 22 0a 20 20 28 67 65 74 20 6d 6f 64 65 6c 20 -types.for.MODEL."...(get.model.
3c900 3a 6d 69 6d 65 2d 74 79 70 65 73 29 29 0a 0a 28 64 65 66 73 75 62 73 74 20 67 70 74 65 6c 2d 2d :mime-types))..(defsubst.gptel--
3c920 6d 6f 64 65 6c 2d 63 61 70 61 62 6c 65 2d 70 20 28 63 61 70 20 26 6f 70 74 69 6f 6e 61 6c 20 6d model-capable-p.(cap.&optional.m
3c940 6f 64 65 6c 29 0a 20 20 22 52 65 74 75 72 6e 20 6e 6f 6e 2d 6e 69 6c 20 69 66 20 4d 4f 44 45 4c odel)..."Return.non-nil.if.MODEL
3c960 20 73 75 70 70 6f 72 74 73 20 63 61 70 61 62 69 6c 69 74 79 20 43 41 50 2e 22 0a 20 20 28 6d 65 .supports.capability.CAP."...(me
3c980 6d 71 20 63 61 70 20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 63 61 70 61 62 69 6c 69 74 69 65 mq.cap.(gptel--model-capabilitie
3c9a0 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 20 6d 6f 64 65 6c 20 67 70 74 65 6c 2d 6d s..............(or.model.gptel-m
3c9c0 6f 64 65 6c 29 29 29 29 0a 0a 3b 3b 20 54 4f 44 4f 20 48 61 6e 64 6c 65 20 6d 6f 64 65 6c 20 6d odel))))..;;.TODO.Handle.model.m
3c9e0 69 6d 65 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e 73 20 6c 69 6b 65 20 22 69 6d 61 67 65 2f 2a ime.specifications.like."image/*
3ca00 22 0a 28 64 65 66 73 75 62 73 74 20 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 6d 69 6d 65 2d 63 61 ".(defsubst.gptel--model-mime-ca
3ca20 70 61 62 6c 65 2d 70 20 28 6d 69 6d 65 20 26 6f 70 74 69 6f 6e 61 6c 20 6d 6f 64 65 6c 29 0a 20 pable-p.(mime.&optional.model)..
3ca40 20 22 52 65 74 75 72 6e 20 6e 6f 6e 20 6e 69 6c 20 69 66 20 4d 4f 44 45 4c 20 63 61 6e 20 75 6e ."Return.non.nil.if.MODEL.can.un
3ca60 64 65 72 73 74 61 6e 64 20 4d 49 4d 45 20 74 79 70 65 2e 22 0a 20 20 28 63 61 72 2d 73 61 66 65 derstand.MIME.type."...(car-safe
3ca80 20 28 6d 65 6d 62 65 72 20 6d 69 6d 65 20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 6d 69 6d 65 .(member.mime.(gptel--model-mime
3caa0 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 28 6f 72 20 6d 6f s.........................(or.mo
3cac0 64 65 6c 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 29 29 29 29 29 0a 0a 28 64 65 66 73 75 62 73 74 20 del.gptel-model)))))..(defsubst.
3cae0 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 20 28 6d 6f 64 gptel--model-request-params.(mod
3cb00 65 6c 29 0a 20 20 22 47 65 74 20 6d 6f 64 65 6c 2d 73 70 65 63 69 66 69 63 20 72 65 71 75 65 73 el)..."Get.model-specific.reques
3cb20 74 20 70 61 72 61 6d 65 74 65 72 73 20 66 6f 72 20 4d 4f 44 45 4c 2e 22 0a 20 20 28 67 65 74 20 t.parameters.for.MODEL."...(get.
3cb40 6d 6f 64 65 6c 20 3a 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 29 29 0a 0a 3b 3b 3b 3b 20 46 69 model.:request-params))..;;;;.Fi
3cb60 6c 65 20 68 61 6e 64 6c 69 6e 67 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 62 61 73 65 36 34 le.handling.(defun.gptel--base64
3cb80 2d 65 6e 63 6f 64 65 20 28 66 69 6c 65 29 0a 20 20 22 45 6e 63 6f 64 65 20 46 49 4c 45 20 61 73 -encode.(file)..."Encode.FILE.as
3cba0 20 61 20 62 61 73 65 36 34 20 73 74 72 69 6e 67 2e 0a 0a 46 49 4c 45 20 69 73 20 61 73 73 75 6d .a.base64.string...FILE.is.assum
3cbc0 65 64 20 74 6f 20 65 78 69 73 74 20 61 6e 64 20 62 65 20 61 20 72 65 67 75 6c 61 72 20 66 69 6c ed.to.exist.and.be.a.regular.fil
3cbe0 65 2e 22 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 69 6e 73 e."...(with-temp-buffer.....(ins
3cc00 65 72 74 2d 66 69 6c 65 2d 63 6f 6e 74 65 6e 74 73 2d 6c 69 74 65 72 61 6c 6c 79 20 66 69 6c 65 ert-file-contents-literally.file
3cc20 29 0a 20 20 20 20 28 62 61 73 65 36 34 2d 65 6e 63 6f 64 65 2d 72 65 67 69 6f 6e 20 28 70 6f 69 ).....(base64-encode-region.(poi
3cc40 6e 74 2d 6d 69 6e 29 20 28 70 6f 69 6e 74 2d 6d 61 78 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 nt-min).(point-max).............
3cc60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6e 6f 2d 6c 69 6e 65 2d 62 72 65 61 6b 29 0a 20 20 ..............:no-line-break)...
3cc80 20 20 28 62 75 66 66 65 72 2d 73 74 72 69 6e 67 29 29 29 0a 0a 3b 3b 3b 3b 20 52 65 73 70 6f 6e ..(buffer-string)))..;;;;.Respon
3cca0 73 65 20 74 65 78 74 20 72 65 63 6f 67 6e 69 74 69 6f 6e 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 se.text.recognition..(defun.gpte
3ccc0 6c 2d 2d 67 65 74 2d 62 75 66 66 65 72 2d 62 6f 75 6e 64 73 20 28 29 0a 20 20 22 52 65 74 75 72 l--get-buffer-bounds.()..."Retur
3cce0 6e 20 74 68 65 20 67 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 n.the.gptel.response.boundaries.
3cd00 69 6e 20 74 68 65 20 62 75 66 66 65 72 20 61 73 20 61 6e 20 61 6c 69 73 74 2e 22 0a 20 20 28 73 in.the.buffer.as.an.alist."...(s
3cd20 61 76 65 2d 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 ave-excursion.....(save-restrict
3cd40 69 6f 6e 0a 20 20 20 20 20 20 28 77 69 64 65 6e 29 0a 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 ion.......(widen).......(goto-ch
3cd60 61 72 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 62 6f 75 ar.(point-max)).......(let.((bou
3cd80 6e 64 73 29 20 28 70 72 65 76 2d 70 74 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 20 20 20 20 nds).(prev-pt.(point))).........
3cda0 28 77 68 69 6c 65 20 28 61 6e 64 20 28 2f 3d 20 70 72 65 76 2d 70 74 20 28 70 6f 69 6e 74 2d 6d (while.(and.(/=.prev-pt.(point-m
3cdc0 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 28 67 6f 74 6f 2d 63 in)).....................(goto-c
3cde0 68 61 72 20 28 70 72 65 76 69 6f 75 73 2d 73 69 6e 67 6c 65 2d 70 72 6f 70 65 72 74 79 2d 63 68 har.(previous-single-property-ch
3ce00 61 6e 67 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 ange............................
3ce20 20 20 20 20 20 28 70 6f 69 6e 74 29 20 27 67 70 74 65 6c 20 6e 69 6c 20 28 70 6f 69 6e 74 2d 6d .....(point).'gptel.nil.(point-m
3ce40 69 6e 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 70 72 in))))...........(when-let*.((pr
3ce60 6f 70 20 28 67 65 74 2d 63 68 61 72 2d 70 72 6f 70 65 72 74 79 20 28 70 6f 69 6e 74 29 20 27 67 op.(get-char-property.(point).'g
3ce80 70 74 65 6c 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 70 72 6f 70 ptel))).............(let*.((prop
3cea0 2d 6e 61 6d 65 20 28 69 66 20 28 73 79 6d 62 6f 6c 70 20 70 72 6f 70 29 20 70 72 6f 70 20 28 63 -name.(if.(symbolp.prop).prop.(c
3cec0 61 72 20 70 72 6f 70 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 76 ar.prop)))....................(v
3cee0 61 6c 20 28 77 68 65 6e 20 28 63 6f 6e 73 70 20 70 72 6f 70 29 20 28 63 64 72 20 70 72 6f 70 29 al.(when.(consp.prop).(cdr.prop)
3cf00 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 6f 75 6e 64 20 28 69 66 ))....................(bound.(if
3cf20 20 76 61 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 .val............................
3cf40 20 20 20 28 6c 69 73 74 20 28 70 6f 69 6e 74 29 20 70 72 65 76 2d 70 74 20 76 61 6c 29 0a 20 20 ...(list.(point).prev-pt.val)...
3cf60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 ..........................(list.
3cf80 28 70 6f 69 6e 74 29 20 70 72 65 76 2d 70 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 (point).prev-pt)))).............
3cfa0 20 20 28 70 75 73 68 20 62 6f 75 6e 64 20 28 61 6c 69 73 74 2d 67 65 74 20 70 72 6f 70 2d 6e 61 ..(push.bound.(alist-get.prop-na
3cfc0 6d 65 20 62 6f 75 6e 64 73 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 70 72 me.bounds))))...........(setq.pr
3cfe0 65 76 2d 70 74 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 20 20 20 20 62 6f 75 6e 64 73 29 29 ev-pt.(point))).........bounds))
3d000 29 29 0a 0a 28 64 65 66 69 6e 65 2d 6f 62 73 6f 6c 65 74 65 2d 66 75 6e 63 74 69 6f 6e 2d 61 6c ))..(define-obsolete-function-al
3d020 69 61 73 0a 20 20 27 67 70 74 65 6c 2d 2d 67 65 74 2d 62 6f 75 6e 64 73 20 27 67 70 74 65 6c 2d ias...'gptel--get-bounds.'gptel-
3d040 2d 67 65 74 2d 72 65 73 70 6f 6e 73 65 2d 62 6f 75 6e 64 73 20 22 30 2e 39 2e 38 22 29 0a 0a 28 -get-response-bounds."0.9.8")..(
3d060 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 67 65 74 2d 72 65 73 70 6f 6e 73 65 2d 62 6f 75 6e 64 73 defun.gptel--get-response-bounds
3d080 20 28 29 0a 20 20 22 52 65 74 75 72 6e 20 74 68 65 20 67 70 74 65 6c 20 72 65 73 70 6f 6e 73 65 .()..."Return.the.gptel.response
3d0a0 20 62 6f 75 6e 64 61 72 69 65 73 20 61 72 6f 75 6e 64 20 70 6f 69 6e 74 2e 22 0a 20 20 28 6c 65 .boundaries.around.point."...(le
3d0c0 74 20 28 70 72 6f 70 29 0a 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 t.(prop).....(save-excursion....
3d0e0 20 20 20 28 77 68 65 6e 20 28 74 65 78 74 2d 70 72 6f 70 65 72 74 79 2d 73 65 61 72 63 68 2d 62 ...(when.(text-property-search-b
3d100 61 63 6b 77 61 72 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 27 67 70 74 65 6c 20 27 72 65 73 ackward..............'gptel.'res
3d120 70 6f 6e 73 65 20 74 29 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 73 65 74 71 20 70 72 6f ponse.t).........(when.(setq.pro
3d140 70 20 28 74 65 78 74 2d 70 72 6f 70 65 72 74 79 2d 73 65 61 72 63 68 2d 66 6f 72 77 61 72 64 0a p.(text-property-search-forward.
3d160 20 20 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
3d180 20 27 72 65 73 70 6f 6e 73 65 20 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 20 28 .'response.t))...........(cons.(
3d1a0 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)......
3d1c0 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 70 29 ...........(prop-match-end.prop)
3d1e0 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 69 6e 2d 72 65 73 70 6f 6e 73 ))))))..(defun.gptel--in-respons
3d200 65 2d 70 20 28 26 6f 70 74 69 6f 6e 61 6c 20 70 74 29 0a 20 20 22 43 68 65 63 6b 20 69 66 20 70 e-p.(&optional.pt)..."Check.if.p
3d220 6f 73 69 74 69 6f 6e 20 50 54 20 69 73 20 69 6e 73 69 64 65 20 61 20 67 70 74 65 6c 20 72 65 73 osition.PT.is.inside.a.gptel.res
3d240 70 6f 6e 73 65 2e 22 0a 20 20 28 65 71 20 28 67 65 74 2d 63 68 61 72 2d 70 72 6f 70 65 72 74 79 ponse."...(eq.(get-char-property
3d260 20 28 6f 72 20 70 74 20 28 70 6f 69 6e 74 29 29 20 27 67 70 74 65 6c 29 20 27 72 65 73 70 6f 6e .(or.pt.(point)).'gptel).'respon
3d280 73 65 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 61 74 2d 72 65 73 70 6f 6e 73 65 2d se))..(defun.gptel--at-response-
3d2a0 68 69 73 74 6f 72 79 2d 70 20 28 26 6f 70 74 69 6f 6e 61 6c 20 70 74 29 0a 20 20 22 43 68 65 63 history-p.(&optional.pt)..."Chec
3d2c0 6b 20 69 66 20 67 70 74 65 6c 20 72 65 73 70 6f 6e 73 65 20 61 74 20 70 6f 73 69 74 69 6f 6e 20 k.if.gptel.response.at.position.
3d2e0 50 54 20 68 61 73 20 76 61 72 69 61 6e 74 73 2e 22 0a 20 20 28 67 65 74 2d 63 68 61 72 2d 70 72 PT.has.variants."...(get-char-pr
3d300 6f 70 65 72 74 79 20 28 6f 72 20 70 74 20 28 70 6f 69 6e 74 29 29 20 27 67 70 74 65 6c 2d 68 69 operty.(or.pt.(point)).'gptel-hi
3d320 73 74 6f 72 79 29 29 0a 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d 2d 6d 6f 64 65 2d 64 65 73 story))..(defvar.gptel--mode-des
3d340 63 72 69 70 74 69 6f 6e 2d 61 6c 69 73 74 0a 20 20 27 28 28 6a 73 32 2d 6d 6f 64 65 20 20 20 20 cription-alist...'((js2-mode....
3d360 20 20 2e 20 22 4a 61 76 61 73 63 72 69 70 74 22 29 0a 20 20 20 20 28 73 68 2d 6d 6f 64 65 20 20 ...."Javascript").....(sh-mode..
3d380 20 20 20 20 20 2e 20 22 53 68 65 6c 6c 22 29 0a 20 20 20 20 28 65 6e 68 2d 72 75 62 79 2d 6d 6f ......."Shell").....(enh-ruby-mo
3d3a0 64 65 20 2e 20 22 52 75 62 79 22 29 0a 20 20 20 20 28 79 61 6d 6c 2d 6d 6f 64 65 20 20 20 20 20 de..."Ruby").....(yaml-mode.....
3d3c0 2e 20 22 59 61 6d 6c 22 29 0a 20 20 20 20 28 79 61 6d 6c 2d 74 73 2d 6d 6f 64 65 20 20 2e 20 22 .."Yaml").....(yaml-ts-mode...."
3d3e0 59 61 6d 6c 22 29 0a 20 20 20 20 28 72 75 73 74 69 63 2d 6d 6f 64 65 20 20 20 2e 20 22 52 75 73 Yaml").....(rustic-mode....."Rus
3d400 74 22 29 0a 20 20 20 20 28 74 75 61 72 65 67 2d 6d 6f 64 65 20 20 20 2e 20 22 4f 43 61 6d 6c 22 t").....(tuareg-mode....."OCaml"
3d420 29 29 0a 20 20 22 4d 61 70 70 69 6e 67 20 66 72 6f 6d 20 75 6e 63 6f 6e 76 65 6e 74 69 6f 6e 61 ))..."Mapping.from.unconventiona
3d440 6c 6c 79 20 6e 61 6d 65 64 20 6d 61 6a 6f 72 20 6d 6f 64 65 73 20 74 6f 20 6c 61 6e 67 75 61 67 lly.named.major.modes.to.languag
3d460 65 73 2e 0a 0a 54 68 69 73 20 69 73 20 75 73 65 64 20 77 68 65 6e 20 67 65 6e 65 72 61 74 69 6e es...This.is.used.when.generatin
3d480 67 20 73 79 73 74 65 6d 20 70 72 6f 6d 70 74 73 20 66 6f 72 20 72 65 77 72 69 74 69 6e 67 20 61 g.system.prompts.for.rewriting.a
3d4a0 6e 64 0a 77 68 65 6e 20 69 6e 63 6c 75 64 69 6e 67 20 63 6f 6e 74 65 78 74 20 66 72 6f 6d 20 74 nd.when.including.context.from.t
3d4c0 68 65 73 65 20 6d 61 6a 6f 72 20 6d 6f 64 65 73 2e 22 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 hese.major.modes.")..(defun.gpte
3d4e0 6c 2d 2d 73 74 72 69 70 2d 6d 6f 64 65 2d 73 75 66 66 69 78 20 28 6d 6f 64 65 2d 73 79 6d 29 0a l--strip-mode-suffix.(mode-sym).
3d500 20 20 22 52 65 6d 6f 76 65 20 74 68 65 20 2d 6d 6f 64 65 20 73 75 66 66 69 78 20 66 72 6f 6d 20 .."Remove.the.-mode.suffix.from.
3d520 4d 4f 44 45 2d 53 59 4d 2e 0a 0a 4d 4f 44 45 2d 53 59 4d 20 69 73 20 74 79 70 69 63 61 6c 6c 79 MODE-SYM...MODE-SYM.is.typically
3d540 20 61 20 6d 61 6a 6f 72 2d 6d 6f 64 65 20 73 79 6d 62 6f 6c 2e 22 0a 20 20 28 6f 72 20 28 61 6c .a.major-mode.symbol."...(or.(al
3d560 69 73 74 2d 67 65 74 20 6d 6f 64 65 2d 73 79 6d 20 67 70 74 65 6c 2d 2d 6d 6f 64 65 2d 64 65 73 ist-get.mode-sym.gptel--mode-des
3d580 63 72 69 70 74 69 6f 6e 2d 61 6c 69 73 74 29 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 6d 6f 64 cription-alist).......(let.((mod
3d5a0 65 2d 6e 61 6d 65 20 28 74 68 72 65 61 64 2d 6c 61 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 e-name.(thread-last.............
3d5c0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 6d 6f 64 65 2d 73 .............(symbol-name.mode-s
3d5e0 79 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 28 73 74 ym)..........................(st
3d600 72 69 6e 67 2d 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 ring-remove-suffix."-mode").....
3d620 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 72 65 6d .....................(string-rem
3d640 6f 76 65 2d 73 75 66 66 69 78 20 22 2d 74 73 22 29 29 29 29 0a 20 20 20 20 20 20 20 20 3b 3b 20 ove-suffix."-ts")))).........;;.
3d660 4e 4f 54 45 3a 20 54 68 65 20 61 64 76 65 72 74 69 73 65 64 20 63 61 6c 6c 69 6e 67 20 63 6f 6e NOTE:.The.advertised.calling.con
3d680 76 65 6e 74 69 6f 6e 20 6f 66 20 70 72 6f 76 69 64 65 64 2d 6d 6f 64 65 2d 64 65 72 69 76 65 64 vention.of.provided-mode-derived
3d6a0 2d 70 0a 20 20 20 20 20 20 20 20 3b 3b 20 68 61 73 20 63 68 61 6e 67 65 64 20 69 6e 20 45 6d 61 -p.........;;.has.changed.in.Ema
3d6c0 63 73 20 33 30 2c 20 74 68 69 73 20 6e 65 65 64 73 20 74 6f 20 62 65 20 75 70 64 61 74 65 64 20 cs.30,.this.needs.to.be.updated.
3d6e0 65 76 65 6e 74 75 61 6c 6c 79 0a 20 20 20 20 20 20 20 20 28 69 66 20 28 70 72 6f 76 69 64 65 64 eventually.........(if.(provided
3d700 2d 6d 6f 64 65 2d 64 65 72 69 76 65 64 2d 70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 -mode-derived-p..............mod
3d720 65 2d 73 79 6d 20 27 70 72 6f 67 2d 6d 6f 64 65 20 27 74 65 78 74 2d 6d 6f 64 65 20 27 74 65 78 e-sym.'prog-mode.'text-mode.'tex
3d740 2d 6d 6f 64 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 65 2d 6e 61 6d 65 20 22 22 29 -mode).............mode-name."")
3d760 29 29 29 0a 0a 3b 3b 3b 3b 20 44 69 72 65 63 74 69 76 65 20 68 61 6e 64 6c 69 6e 67 0a 0a 0a 28 )))..;;;;.Directive.handling...(
3d780 64 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 0a 20 20 28 defvar.gptel--system-message...(
3d7a0 6f 72 20 28 61 6c 69 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 or.(alist-get.'default.gptel-dir
3d7c0 65 63 74 69 76 65 73 29 0a 20 20 20 20 20 20 22 59 6f 75 20 61 72 65 20 61 20 6c 61 72 67 65 20 ectives)......."You.are.a.large.
3d7e0 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 61 63 73 20 61 language.model.living.in.Emacs.a
3d800 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 70 6f 6e 64 20 nd.a.helpful.assistant..Respond.
3d820 63 6f 6e 63 69 73 65 6c 79 2e 22 29 0a 20 20 22 54 68 65 20 73 79 73 74 65 6d 20 6d 65 73 73 61 concisely.")..."The.system.messa
3d840 67 65 20 75 73 65 64 20 62 79 20 67 70 74 65 6c 2e 22 29 0a 28 70 75 74 20 27 67 70 74 65 6c 2d ge.used.by.gptel.").(put.'gptel-
3d860 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 20 27 73 61 66 65 2d 6c 6f 63 61 6c 2d 76 61 72 69 -system-message.'safe-local-vari
3d880 61 62 6c 65 20 23 27 61 6c 77 61 79 73 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 64 65 able.#'always)..(defun.gptel--de
3d8a0 73 63 72 69 62 65 2d 64 69 72 65 63 74 69 76 65 20 28 64 69 72 65 63 74 69 76 65 20 77 69 64 74 scribe-directive.(directive.widt
3d8c0 68 20 26 6f 70 74 69 6f 6e 61 6c 20 72 65 70 6c 61 63 65 6d 65 6e 74 29 0a 20 20 22 46 69 6e 64 h.&optional.replacement)..."Find
3d8e0 20 64 65 73 63 72 69 70 74 69 6f 6e 20 66 6f 72 20 44 49 52 45 43 54 49 56 45 2c 20 74 72 75 6e .description.for.DIRECTIVE,.trun
3d900 63 61 74 65 64 20 20 74 6f 20 57 49 44 54 48 2e 0a 0a 44 49 52 45 43 54 49 56 45 20 69 73 20 61 cated..to.WIDTH...DIRECTIVE.is.a
3d920 20 67 70 74 65 6c 20 64 69 72 65 63 74 69 76 65 2c 20 61 6e 64 20 63 61 6e 20 62 65 20 61 20 73 .gptel.directive,.and.can.be.a.s
3d940 74 72 69 6e 67 2c 20 61 20 66 75 6e 63 74 69 6f 6e 0a 6f 72 20 61 20 6c 69 73 74 20 6f 66 20 73 tring,.a.function.or.a.list.of.s
3d960 74 72 69 6e 67 73 2e 20 20 53 65 65 20 60 67 70 74 65 6c 2d 64 69 72 65 63 74 69 76 65 73 27 2e trings...See.`gptel-directives'.
3d980 0a 0a 54 68 65 20 72 65 73 75 6c 74 20 69 73 20 61 20 73 74 72 69 6e 67 20 69 6e 74 65 6e 64 65 ..The.result.is.a.string.intende
3d9a0 64 20 66 6f 72 20 64 69 73 70 6c 61 79 2e 20 20 4e 65 77 6c 69 6e 65 73 20 61 72 65 0a 72 65 70 d.for.display...Newlines.are.rep
3d9c0 6c 61 63 65 64 20 77 69 74 68 20 52 45 50 4c 41 43 45 4d 45 4e 54 2e 22 0a 20 20 28 63 6c 2d 74 laced.with.REPLACEMENT."...(cl-t
3d9e0 79 70 65 63 61 73 65 20 64 69 72 65 63 74 69 76 65 0a 20 20 20 20 28 73 74 72 69 6e 67 0a 20 20 ypecase.directive.....(string...
3da00 20 20 20 28 63 6f 6e 63 61 74 0a 20 20 20 20 20 20 28 73 74 72 69 6e 67 2d 72 65 70 6c 61 63 65 ...(concat.......(string-replace
3da20 20 22 5c 6e 22 20 28 6f 72 20 72 65 70 6c 61 63 65 6d 65 6e 74 20 22 20 22 29 0a 20 20 20 20 20 ."\n".(or.replacement.".")......
3da40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 72 75 6e 63 61 74 65 2d 73 74 72 69 6e .................(truncate-strin
3da60 67 2d 74 6f 2d 77 69 64 74 68 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 g-to-width......................
3da80 20 20 64 69 72 65 63 74 69 76 65 20 77 69 64 74 68 20 6e 69 6c 20 6e 69 6c 20 74 29 29 29 29 0a ..directive.width.nil.nil.t)))).
3daa0 20 20 20 20 28 66 75 6e 63 74 69 6f 6e 0a 20 20 20 20 20 28 63 6f 6e 63 61 74 0a 20 20 20 20 20 ....(function......(concat......
3dac0 20 22 ce bb 3a 20 22 0a 20 20 20 20 20 20 28 73 74 72 69 6e 67 2d 72 65 70 6c 61 63 65 0a 20 20 ."..:.".......(string-replace...
3dae0 20 20 20 20 20 22 5c 6e 22 20 28 6f 72 20 72 65 70 6c 61 63 65 6d 65 6e 74 20 22 20 22 29 0a 20 ....."\n".(or.replacement.".")..
3db00 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 0a ......(truncate-string-to-width.
3db20 20 20 20 20 20 20 20 20 28 6f 72 20 28 61 6e 64 2d 6c 65 74 2a 20 28 28 64 6f 63 20 28 64 6f 63 ........(or.(and-let*.((doc.(doc
3db40 75 6d 65 6e 74 61 74 69 6f 6e 20 64 69 72 65 63 74 69 76 65 29 29 29 0a 20 20 20 20 20 20 20 20 umentation.directive))).........
3db60 20 20 20 20 20 20 28 73 75 62 73 74 72 69 6e 67 20 64 6f 63 20 6e 69 6c 20 28 73 74 72 69 6e 67 ......(substring.doc.nil.(string
3db80 2d 6d 61 74 63 68 2d 70 20 22 5c 6e 22 20 64 6f 63 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 -match-p."\n".doc)))............
3dba0 20 22 5b 44 79 6e 61 6d 69 63 61 6c 6c 79 20 67 65 6e 65 72 61 74 65 64 3b 20 6e 6f 20 70 72 65 ."[Dynamically.generated;.no.pre
3dbc0 76 69 65 77 20 61 76 61 69 6c 61 62 6c 65 5d 22 29 0a 20 20 20 20 20 20 20 20 77 69 64 74 68 20 view.available]").........width.
3dbe0 6e 69 6c 20 6e 69 6c 20 74 29 29 29 29 0a 20 20 20 20 28 6c 69 73 74 20 28 61 6e 64 2d 6c 65 74 nil.nil.t)))).....(list.(and-let
3dc00 2a 20 28 28 66 72 6f 6d 2d 74 65 6d 70 6c 61 74 65 20 28 63 61 72 20 64 69 72 65 63 74 69 76 65 *.((from-template.(car.directive
3dc20 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 64 65 73 63 72 69 62 65 ))).............(gptel--describe
3dc40 2d 64 69 72 65 63 74 69 76 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 66 72 6f 6d 2d 74 65 6d -directive..............from-tem
3dc60 70 6c 61 74 65 20 77 69 64 74 68 29 29 29 0a 20 20 20 20 28 74 20 22 22 29 29 29 0a 0a 28 64 65 plate.width))).....(t."")))..(de
3dc80 66 75 6e 20 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 64 69 72 65 63 74 69 76 65 20 28 64 69 72 65 fun.gptel--parse-directive.(dire
3dca0 63 74 69 76 65 20 26 6f 70 74 69 6f 6e 61 6c 20 72 61 77 29 0a 20 20 22 50 61 72 73 65 20 44 49 ctive.&optional.raw)..."Parse.DI
3dcc0 52 45 43 54 49 56 45 20 69 6e 74 6f 20 61 20 62 61 63 6b 65 6e 64 2d 61 70 70 72 6f 70 72 69 61 RECTIVE.into.a.backend-appropria
3dce0 74 65 20 66 6f 72 6d 2e 0a 0a 44 49 52 45 43 54 49 56 45 20 69 73 20 61 20 67 70 74 65 6c 20 64 te.form...DIRECTIVE.is.a.gptel.d
3dd00 69 72 65 63 74 69 76 65 3a 20 69 74 20 63 61 6e 20 62 65 20 61 20 73 74 72 69 6e 67 2c 20 61 20 irective:.it.can.be.a.string,.a.
3dd20 6c 69 73 74 20 6f 72 20 61 0a 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 72 65 74 75 72 6e 73 20 list.or.a.function.that.returns.
3dd40 65 69 74 68 65 72 2c 20 73 65 65 20 60 67 70 74 65 6c 2d 64 69 72 65 63 74 69 76 65 73 27 2e 0a either,.see.`gptel-directives'..
3dd60 0a 52 65 74 75 72 6e 20 61 20 63 6f 6e 73 20 63 65 6c 6c 20 63 6f 6e 73 69 73 74 69 6e 67 20 6f .Return.a.cons.cell.consisting.o
3dd80 66 20 74 68 65 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 20 28 61 20 73 74 72 69 6e 67 29 0a f.the.system.message.(a.string).
3dda0 61 6e 64 20 61 20 74 65 6d 70 6c 61 74 65 20 63 6f 6e 73 69 73 74 69 6e 67 20 6f 66 20 61 6c 74 and.a.template.consisting.of.alt
3ddc0 65 72 6e 61 74 69 6e 67 20 75 73 65 72 2f 4c 4c 4d 0a 72 65 63 6f 72 64 73 20 28 61 20 6c 69 73 ernating.user/LLM.records.(a.lis
3dde0 74 20 6f 66 20 73 74 72 69 6e 67 73 20 6f 72 20 6e 69 6c 29 2e 0a 0a 49 66 20 52 41 57 20 69 73 t.of.strings.or.nil)...If.RAW.is
3de00 20 6e 6f 6e 2d 6e 69 6c 2c 20 74 68 65 20 75 73 65 72 2f 4c 4c 4d 20 72 65 63 6f 72 64 73 20 61 .non-nil,.the.user/LLM.records.a
3de20 72 65 20 6e 6f 74 20 70 72 6f 63 65 73 73 65 64 20 61 6e 64 20 61 72 65 0a 72 65 74 75 72 6e 65 re.not.processed.and.are.returne
3de40 64 20 61 73 20 61 20 6c 69 73 74 20 6f 66 20 73 74 72 69 6e 67 73 2e 22 0a 20 20 28 61 6e 64 20 d.as.a.list.of.strings."...(and.
3de60 64 69 72 65 63 74 69 76 65 0a 20 20 20 20 20 20 20 28 63 6c 2d 65 74 79 70 65 63 61 73 65 20 64 directive........(cl-etypecase.d
3de80 69 72 65 63 74 69 76 65 0a 20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 20 20 20 28 6c 69 73 irective..........(string...(lis
3dea0 74 20 64 69 72 65 63 74 69 76 65 29 29 0a 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 74 69 6f 6e t.directive))..........(function
3dec0 20 28 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 64 69 72 65 63 74 69 76 65 20 28 66 75 6e 63 61 6c .(gptel--parse-directive.(funcal
3dee0 6c 20 64 69 72 65 63 74 69 76 65 29 20 72 61 77 29 29 0a 20 20 20 20 20 20 20 20 20 28 63 6f 6e l.directive).raw))..........(con
3df00 73 20 20 20 20 20 28 69 66 20 72 61 77 20 64 69 72 65 63 74 69 76 65 0a 20 20 20 20 20 20 20 20 s.....(if.raw.directive.........
3df20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 20 28 63 61 72 20 64 69 72 65 63 74 69 76 .............(cons.(car.directiv
3df40 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 3b 3b e)............................;;
3df60 20 46 49 58 4d 45 28 61 75 67 6d 65 6e 74 29 20 64 6f 20 74 68 69 73 20 65 6c 73 65 77 68 65 72 .FIXME(augment).do.this.elsewher
3df80 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 28 67 70 e............................(gp
3dfa0 74 65 6c 2d 2d 70 61 72 73 65 2d 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 tel--parse-list.................
3dfc0 20 20 20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 28 63 64 72 20 64 ............gptel-backend.(cdr.d
3dfe0 69 72 65 63 74 69 76 65 29 29 29 29 29 29 29 29 0a 0a 0a 0c 0a 3b 3b 3b 20 4c 6f 67 67 69 6e 67 irective)))))))).....;;;.Logging
3e000 0a 0a 28 64 65 66 63 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 ..(defconst.gptel--log-buffer-na
3e020 6d 65 20 22 2a 67 70 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 me."*gptel-log*"..."Log.buffer.f
3e040 6f 72 20 67 70 74 65 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 or.gptel.")..(declare-function.j
3e060 73 6f 6e 2d 70 72 65 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 son-pretty-print."json")..(defun
3e080 20 67 70 74 65 6c 2d 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 .gptel--log.(data.&optional.type
3e0a0 20 6e 6f 2d 6a 73 6f 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 .no-json)..."Log.DATA.to.`gptel-
3e0c0 2d 6c 6f 67 2d 62 75 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 -log-buffer-name'...TYPE.is.a.la
3e0e0 62 65 6c 20 66 6f 72 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 bel.for.data.being.logged...DATA
3e100 20 69 73 20 61 73 73 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 .is.assumed.to.be.Valid.JSON.unl
3e120 65 73 73 20 4e 4f 2d 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 ess.NO-JSON.is.t."...(with-curre
3e140 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 67 70 74 nt-buffer.(get-buffer-create.gpt
3e160 65 6c 2d 2d 6c 6f 67 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 el--log-buffer-name).....(let.((
3e180 70 20 28 67 6f 74 6f 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 p.(goto-char.(point-max)))).....
3e1a0 20 20 28 75 6e 6c 65 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 ..(unless.(bobp).(insert."\n")).
3e1c0 20 20 20 20 20 20 28 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 ......(insert.(format."{\"gptel\
3e1e0 22 3a 20 5c 22 25 73 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 ":.\"%s\",.".(or.type."none"))..
3e200 20 20 20 20 20 20 20 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 .............(format-time-string
3e220 20 22 5c 22 74 69 6d 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 ."\"timestamp\":.\"%Y-%m-%d.%H:%
3e240 4d 3a 25 53 5c 22 7d 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 M:%S\"}\n")...............data).
3e260 20 20 20 20 20 20 28 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 ......(unless.no-json.(ignore-er
3e280 72 6f 72 73 20 28 6a 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 rors.(json-pretty-print.p.(point
3e2a0 29 29 29 29 29 29 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 )))))))....;;;.Saving.and.restor
3e2c0 69 6e 67 20 73 74 61 74 65 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 72 65 73 74 6f 72 65 ing.state..(defun.gptel--restore
3e2e0 2d 70 72 6f 70 73 20 28 62 6f 75 6e 64 73 2d 61 6c 69 73 74 29 0a 20 20 22 52 65 73 74 6f 72 65 -props.(bounds-alist)..."Restore
3e300 20 74 65 78 74 20 70 72 6f 70 65 72 74 69 65 73 20 66 72 6f 6d 20 42 4f 55 4e 44 53 2d 41 4c 49 .text.properties.from.BOUNDS-ALI
3e320 53 54 2e 0a 42 4f 55 4e 44 53 2d 41 4c 49 53 54 20 69 73 20 28 50 52 4f 50 20 2e 20 42 4f 55 4e ST..BOUNDS-ALIST.is.(PROP...BOUN
3e340 44 53 29 2e 20 20 42 4f 55 4e 44 53 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 42 4f 55 4e 44 2e DS)...BOUNDS.is.a.list.of.BOUND.
3e360 20 20 45 61 63 68 20 42 4f 55 4e 44 0a 69 73 20 65 69 74 68 65 72 20 28 42 45 47 20 45 4e 44 20 ..Each.BOUND.is.either.(BEG.END.
3e380 56 41 4c 29 20 6f 72 20 28 42 45 47 20 45 4e 44 29 2e 0a 0a 46 6f 72 20 28 42 45 47 20 45 4e 44 VAL).or.(BEG.END)...For.(BEG.END
3e3a0 20 56 41 4c 29 20 66 6f 72 6d 73 2c 20 65 76 65 6e 20 69 66 20 56 41 4c 20 69 73 20 6e 69 6c 2c .VAL).forms,.even.if.VAL.is.nil,
3e3c0 20 74 68 65 20 67 70 74 65 6c 20 70 72 6f 70 65 72 74 79 20 77 69 6c 6c 20 62 65 0a 73 65 74 20 .the.gptel.property.will.be.set.
3e3e0 74 6f 20 28 50 52 4f 50 20 2e 20 56 41 4c 29 2e 20 20 46 6f 72 20 28 42 45 47 20 45 4e 44 29 20 to.(PROP...VAL)...For.(BEG.END).
3e400 66 6f 72 6d 73 2c 20 65 78 63 65 70 74 20 77 68 65 6e 20 50 52 4f 50 20 69 73 20 72 65 73 70 6f forms,.except.when.PROP.is.respo
3e420 6e 73 65 2c 0a 74 68 65 20 67 70 74 65 6c 20 70 72 6f 70 65 72 74 79 20 69 73 20 73 65 74 20 74 nse,.the.gptel.property.is.set.t
3e440 6f 20 6a 75 73 74 20 50 52 4f 50 2e 0a 0a 54 68 65 20 6c 65 67 61 63 79 20 73 74 72 75 63 74 75 o.just.PROP...The.legacy.structu
3e460 72 65 2c 20 61 20 6c 69 73 74 20 6f 66 20 28 42 45 47 20 2e 20 45 4e 44 29 20 69 73 20 61 6c 73 re,.a.list.of.(BEG...END).is.als
3e480 6f 20 73 75 70 70 6f 72 74 65 64 20 61 6e 64 20 77 69 6c 6c 20 62 65 0a 61 70 70 6c 69 65 64 20 o.supported.and.will.be.applied.
3e4a0 62 65 66 6f 72 65 20 62 65 69 6e 67 20 72 65 2d 70 65 72 73 69 73 74 65 64 20 69 6e 20 74 68 65 before.being.re-persisted.in.the
3e4c0 20 6e 65 77 20 73 74 72 75 63 74 75 72 65 2e 22 0a 20 20 28 6c 65 74 20 28 28 6d 6f 64 69 66 69 .new.structure."...(let.((modifi
3e4e0 65 64 20 28 62 75 66 66 65 72 2d 6d 6f 64 69 66 69 65 64 2d 70 29 29 29 0a 20 20 20 20 28 69 66 ed.(buffer-modified-p))).....(if
3e500 20 28 73 79 6d 62 6f 6c 70 20 28 63 61 61 72 20 62 6f 75 6e 64 73 2d 61 6c 69 73 74 29 29 0a 20 .(symbolp.(caar.bounds-alist))..
3e520 20 20 20 20 20 20 20 28 6d 61 70 63 0a 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 62 .......(mapc..........(lambda.(b
3e540 6f 75 6e 64 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 70 72 6f 70 20 28 ounds)............(let*.((prop.(
3e560 70 6f 70 20 62 6f 75 6e 64 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 70 63 pop.bounds)))..............(mapc
3e580 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 62 6f 75 6e 64 29 0a 20 ...............(lambda.(bound)..
3e5a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 70 72 6f 70 2d 68 61 73 2d 76 ...............(let.((prop-has-v
3e5c0 61 6c 20 28 3e 20 28 6c 65 6e 67 74 68 20 62 6f 75 6e 64 29 20 32 29 29 29 0a 20 20 20 20 20 20 al.(>.(length.bound).2))).......
3e5e0 20 20 20 20 20 20 20 20 20 20 20 20 28 61 64 64 2d 74 65 78 74 2d 70 72 6f 70 65 72 74 69 65 73 ............(add-text-properties
3e600 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6f 70 20 62 6f 75 6e 64 29 20 ....................(pop.bound).
3e620 28 70 6f 70 20 62 6f 75 6e 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 (pop.bound)....................(
3e640 69 66 20 28 65 71 20 70 72 6f 70 20 27 72 65 73 70 6f 6e 73 65 29 0a 20 20 20 20 20 20 20 20 20 if.(eq.prop.'response)..........
3e660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 28 67 70 74 65 6c 20 72 65 73 70 6f 6e 73 65 20 66 ..............'(gptel.response.f
3e680 72 6f 6e 74 2d 73 74 69 63 6b 79 20 28 67 70 74 65 6c 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 ront-sticky.(gptel))............
3e6a0 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 27 67 70 74 65 6c 0a 20 20 20 20 20 20 20 20 20 ..........(list.'gptel..........
3e6c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 70 72 6f 70 2d 68 61 73 2d 76 ..................(if.prop-has-v
3e6e0 61 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 20 20 al..............................
3e700 20 20 28 63 6f 6e 73 20 70 72 6f 70 20 28 70 6f 70 20 62 6f 75 6e 64 29 29 0a 20 20 20 20 20 20 ..(cons.prop.(pop.bound)).......
3e720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 70 29 29 29 29 29 .......................prop)))))
3e740 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 75 6e 64 73 29 29 29 0a 20 20 20 20 20 20 )...............bounds))).......
3e760 20 20 20 62 6f 75 6e 64 73 2d 61 6c 69 73 74 29 0a 20 20 20 20 20 20 28 6d 61 70 63 20 28 6c 61 ...bounds-alist).......(mapc.(la
3e780 6d 62 64 61 20 28 62 6f 75 6e 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 64 64 2d mbda.(bound)...............(add-
3e7a0 74 65 78 74 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 28 text-properties................(
3e7c0 63 61 72 20 62 6f 75 6e 64 29 20 28 63 64 72 20 62 6f 75 6e 64 29 20 27 28 67 70 74 65 6c 20 72 car.bound).(cdr.bound).'(gptel.r
3e7e0 65 73 70 6f 6e 73 65 20 66 72 6f 6e 74 2d 73 74 69 63 6b 79 20 28 67 70 74 65 6c 29 29 29 29 0a esponse.front-sticky.(gptel)))).
3e800 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 75 6e 64 73 2d 61 6c 69 73 74 29 29 0a 20 20 20 20 28 ............bounds-alist)).....(
3e820 73 65 74 2d 62 75 66 66 65 72 2d 6d 6f 64 69 66 69 65 64 2d 70 20 6d 6f 64 69 66 69 65 64 29 29 set-buffer-modified-p.modified))
3e840 29 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 )..(defun.gptel--restore-state.(
3e860 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
3e880 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.
3e8a0 28 62 75 66 66 65 72 2d 66 69 6c 65 2d 6e 61 6d 65 29 0a 20 20 20 20 28 69 66 20 28 64 65 72 69 (buffer-file-name).....(if.(deri
3e8c0 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 28 70 ved-mode-p.'org-mode).........(p
3e8e0 72 6f 67 6e 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 rogn...........(require.'gptel-o
3e900 72 67 29 0a 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 6f 72 67 2d 2d 72 65 73 74 6f 72 rg)...........(gptel-org--restor
3e920 65 2d 73 74 61 74 65 29 29 0a 20 20 20 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 2d 62 6f 75 e-state)).......(when.gptel--bou
3e940 6e 64 73 0a 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 72 65 73 74 6f 72 65 2d 70 72 6f 70 nds.........(gptel--restore-prop
3e960 73 20 67 70 74 65 6c 2d 2d 62 6f 75 6e 64 73 29 0a 20 20 20 20 20 20 20 20 28 6d 65 73 73 61 67 s.gptel--bounds).........(messag
3e980 65 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 e."gptel.chat.restored."))......
3e9a0 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 2d 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 0a 20 20 20 20 20 .(when.gptel--backend-name......
3e9c0 20 20 20 28 69 66 2d 6c 65 74 2a 20 28 28 62 61 63 6b 65 6e 64 20 28 61 6c 69 73 74 2d 67 65 74 ...(if-let*.((backend.(alist-get
3e9e0 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 67 70 74 .............................gpt
3ea00 65 6c 2d 2d 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 62 61 el--backend-name.gptel--known-ba
3ea20 63 6b 65 6e 64 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ckends..........................
3ea40 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 20 20 20 20 20 20 ...nil.nil.#'equal)))...........
3ea60 20 20 28 73 65 74 71 2d 6c 6f 63 61 6c 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 62 61 63 6b ..(setq-local.gptel-backend.back
3ea80 65 6e 64 29 0a 20 20 20 20 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 0a 20 20 20 20 20 20 20 20 end)...........(message.........
3eaa0 20 20 20 28 73 75 62 73 74 69 74 75 74 65 2d 63 6f 6d 6d 61 6e 64 2d 6b 65 79 73 0a 20 20 20 20 ...(substitute-command-keys.....
3eac0 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 22 43 6f ........(concat.............."Co
3eae0 75 6c 64 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 uld.not.activate.gptel.backend.\
3eb00 22 25 73 5c 22 21 20 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 22 53 77 69 74 63 68 20 62 "%s\"!..".............."Switch.b
3eb20 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 65 ackends.with.\\[universal-argume
3eb40 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 20 nt].\\[gptel-send]".............
3eb60 20 22 20 62 65 66 6f 72 65 20 75 73 69 6e 67 20 67 70 74 65 6c 2e 22 29 29 0a 20 20 20 20 20 20 .".before.using.gptel.")).......
3eb80 20 20 20 20 20 67 70 74 65 6c 2d 2d 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 29 29 29 29 29 29 0a 0a .....gptel--backend-name))))))..
3eba0 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 73 61 76 65 2d 73 74 61 74 65 20 28 29 0a 20 20 22 57 (defun.gptel--save-state.()..."W
3ebc0 72 69 74 65 20 74 68 65 20 67 70 74 65 6c 20 73 74 61 74 65 20 74 6f 20 74 68 65 20 62 75 66 66 rite.the.gptel.state.to.the.buff
3ebe0 65 72 2e 0a 0a 54 68 69 73 20 73 61 76 65 73 20 63 68 61 74 20 6d 65 74 61 64 61 74 61 20 77 68 er...This.saves.chat.metadata.wh
3ec00 65 6e 20 77 72 69 74 69 6e 67 20 74 68 65 20 62 75 66 66 65 72 20 74 6f 20 64 69 73 6b 2e 20 20 en.writing.the.buffer.to.disk...
3ec20 54 6f 0a 72 65 73 74 6f 72 65 20 61 20 63 68 61 74 20 73 65 73 73 69 6f 6e 2c 20 74 75 72 6e 20 To.restore.a.chat.session,.turn.
3ec40 6f 6e 20 60 67 70 74 65 6c 2d 6d 6f 64 65 27 20 61 66 74 65 72 20 6f 70 65 6e 69 6e 67 20 74 68 on.`gptel-mode'.after.opening.th
3ec60 65 0a 66 69 6c 65 2e 22 0a 20 20 28 72 75 6e 2d 68 6f 6f 6b 73 20 27 67 70 74 65 6c 2d 73 61 76 e.file."...(run-hooks.'gptel-sav
3ec80 65 2d 73 74 61 74 65 2d 68 6f 6f 6b 29 0a 20 20 28 69 66 20 28 64 65 72 69 76 65 64 2d 6d 6f 64 e-state-hook)...(if.(derived-mod
3eca0 65 2d 70 20 27 6f 72 67 2d 6d 6f 64 65 29 0a 20 20 20 20 20 20 28 70 72 6f 67 6e 0a 20 20 20 20 e-p.'org-mode).......(progn.....
3ecc0 20 20 20 20 28 72 65 71 75 69 72 65 20 27 67 70 74 65 6c 2d 6f 72 67 29 0a 20 20 20 20 20 20 20 ....(require.'gptel-org)........
3ece0 20 28 67 70 74 65 6c 2d 6f 72 67 2d 2d 73 61 76 65 2d 73 74 61 74 65 29 29 0a 20 20 20 20 28 6c .(gptel-org--save-state)).....(l
3ed00 65 74 20 28 28 70 72 69 6e 74 2d 65 73 63 61 70 65 2d 6e 65 77 6c 69 6e 65 73 20 74 29 29 0a 20 et.((print-escape-newlines.t))..
3ed20 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 73 61 .....(save-excursion.........(sa
3ed40 76 65 2d 72 65 73 74 72 69 63 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 28 61 64 64 2d 66 69 ve-restriction...........(add-fi
3ed60 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 6d 6f 64 65 6c 20 67 le-local-variable.'gptel-model.g
3ed80 70 74 65 6c 2d 6d 6f 64 65 6c 29 0a 20 20 20 20 20 20 20 20 20 20 28 61 64 64 2d 66 69 6c 65 2d ptel-model)...........(add-file-
3eda0 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
3edc0 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.............................
3ede0 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 20 67 70 74 65 6c .......(gptel-backend-name.gptel
3ee00 2d 62 61 63 6b 65 6e 64 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 65 71 -backend))...........(unless.(eq
3ee20 75 61 6c 20 28 64 65 66 61 75 6c 74 2d 76 61 6c 75 65 20 27 67 70 74 65 6c 2d 74 65 6d 70 65 72 ual.(default-value.'gptel-temper
3ee40 61 74 75 72 65 29 20 67 70 74 65 6c 2d 74 65 6d 70 65 72 61 74 75 72 65 29 0a 20 20 20 20 20 20 ature).gptel-temperature).......
3ee60 20 20 20 20 20 20 28 61 64 64 2d 66 69 6c 65 2d 6c 6f 63 61 6c 2d 76 61 72 69 61 62 6c 65 20 27 ......(add-file-local-variable.'
3ee80 67 70 74 65 6c 2d 74 65 6d 70 65 72 61 74 75 72 65 20 67 70 74 65 6c 2d 74 65 6d 70 65 72 61 74 gptel-temperature.gptel-temperat
3eea0 75 72 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 65 71 75 61 6c 20 28 ure))...........(unless.(equal.(
3eec0 64 65 66 61 75 6c 74 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 default-value.'gptel--system-mes
3eee0 73 61 67 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 sage)...........................
3ef00 20 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 29 0a 20 20 20 20 20 20 20 20 .gptel--system-message).........
3ef20 20 20 20 20 28 61 64 64 2d 66 69 6c 65 2d 6c 6f 63 61 6c 2d 76 61 72 69 61 62 6c 65 0a 20 20 20 ....(add-file-local-variable....
3ef40 20 20 20 20 20 20 20 20 20 20 27 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 ..........'gptel--system-message
3ef60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 61 72 2d 73 61 66 65 20 28 67 70 74 65 6c 2d 2d ..............(car-safe.(gptel--
3ef80 70 61 72 73 65 2d 64 69 72 65 63 74 69 76 65 20 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 parse-directive.gptel--system-me
3efa0 73 73 61 67 65 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d ssage))))...........(when.gptel-
3efc0 6d 61 78 2d 74 6f 6b 65 6e 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 61 64 64 2d 66 69 6c 65 max-tokens.............(add-file
3efe0 2d 6c 6f 63 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 -local-variable.'gptel-max-token
3f000 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 20 20 20 20 20 20 28 s.gptel-max-tokens))...........(
3f020 77 68 65 6e 20 28 6e 61 74 6e 75 6d 70 20 67 70 74 65 6c 2d 2d 6e 75 6d 2d 6d 65 73 73 61 67 65 when.(natnump.gptel--num-message
3f040 73 2d 74 6f 2d 73 65 6e 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 61 64 64 2d 66 69 6c 65 s-to-send).............(add-file
3f060 2d 6c 6f 63 61 6c 2d 76 61 72 69 61 62 6c 65 20 27 67 70 74 65 6c 2d 2d 6e 75 6d 2d 6d 65 73 73 -local-variable.'gptel--num-mess
3f080 61 67 65 73 2d 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 ages-to-send....................
3f0a0 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 6e 75 6d 2d 6d 65 73 ..................gptel--num-mes
3f0c0 73 61 67 65 73 2d 74 6f 2d 73 65 6e 64 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 61 64 64 2d 66 sages-to-send))...........(add-f
3f0e0 69 6c 65 2d 6c 6f 63 61 6c 2d 76 61 72 69 61 62 6c 65 20 27 67 70 74 65 6c 2d 2d 62 6f 75 6e 64 ile-local-variable.'gptel--bound
3f100 73 20 28 67 70 74 65 6c 2d 2d 67 65 74 2d 62 75 66 66 65 72 2d 62 6f 75 6e 64 73 29 29 29 29 29 s.(gptel--get-buffer-bounds)))))
3f120 29 29 0a 0a 0c 0a 3b 3b 3b 20 4d 69 6e 6f 72 20 6d 6f 64 65 20 61 6e 64 20 55 49 0a 0a 3b 3b 20 ))....;;;.Minor.mode.and.UI..;;.
3f140 4e 4f 54 45 3a 20 49 74 27 73 20 6e 6f 74 20 63 6c 65 61 72 20 74 68 61 74 20 74 68 69 73 20 69 NOTE:.It's.not.clear.that.this.i
3f160 73 20 74 68 65 20 62 65 73 74 20 73 74 72 61 74 65 67 79 3a 0a 28 61 64 64 2d 74 6f 2d 6c 69 73 s.the.best.strategy:.(add-to-lis
3f180 74 20 27 74 65 78 74 2d 70 72 6f 70 65 72 74 79 2d 64 65 66 61 75 6c 74 2d 6e 6f 6e 73 74 69 63 t.'text-property-default-nonstic
3f1a0 6b 79 20 27 28 67 70 74 65 6c 20 2e 20 74 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d ky.'(gptel...t))..(defun.gptel--
3f1c0 69 6e 68 65 72 69 74 2d 73 74 69 63 6b 69 6e 65 73 73 20 28 62 65 67 20 65 6e 64 20 70 72 65 29 inherit-stickiness.(beg.end.pre)
3f1e0 0a 20 20 22 4d 61 72 6b 20 61 6e 79 20 63 68 61 6e 67 65 20 74 6f 20 61 6e 20 4c 4c 4d 20 72 65 ..."Mark.any.change.to.an.LLM.re
3f200 73 70 6f 6e 73 65 20 72 65 67 69 6f 6e 20 61 73 20 61 20 72 65 73 70 6f 6e 73 65 2e 0a 0a 49 6e sponse.region.as.a.response...In
3f220 74 65 6e 64 65 64 20 74 6f 20 62 65 20 61 64 64 65 64 20 74 6f 20 60 61 66 74 65 72 2d 63 68 61 tended.to.be.added.to.`after-cha
3f240 6e 67 65 2d 66 75 6e 63 74 69 6f 6e 73 27 20 69 6e 20 67 70 74 65 6c 20 63 68 61 74 20 62 75 66 nge-functions'.in.gptel.chat.buf
3f260 66 65 72 73 2c 0a 77 68 69 63 68 20 73 65 65 20 66 6f 72 20 42 45 47 2c 20 45 4e 44 20 61 6e 64 fers,.which.see.for.BEG,.END.and
3f280 20 50 52 45 2e 22 0a 20 20 28 61 6e 64 20 28 3d 20 70 72 65 20 30 29 20 28 3c 20 65 6e 64 20 28 .PRE."...(and.(=.pre.0).(<.end.(
3f2a0 70 6f 69 6e 74 2d 6d 61 78 29 29 0a 20 20 20 20 20 20 20 28 61 6e 64 2d 6c 65 74 2a 20 28 28 76 point-max))........(and-let*.((v
3f2c0 61 6c 20 28 67 65 74 2d 74 65 78 74 2d 70 72 6f 70 65 72 74 79 20 65 6e 64 20 27 67 70 74 65 6c al.(get-text-property.end.'gptel
3f2e0 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 61 64 64 2d 74 65 78 74 2d 70 72 6f 70 65 72 74 69 65 )))..........(add-text-propertie
3f300 73 0a 20 20 20 20 20 20 20 20 20 20 62 65 67 20 65 6e 64 20 60 28 67 70 74 65 6c 20 2c 76 61 6c s...........beg.end.`(gptel.,val
3f320 20 66 72 6f 6e 74 2d 73 74 69 63 6b 79 20 28 67 70 74 65 6c 29 29 29 29 29 29 0a 0a 3b 3b 3b 23 .front-sticky.(gptel))))))..;;;#
3f340 23 23 61 75 74 6f 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 ##autoload.(define-minor-mode.gp
3f360 74 65 6c 2d 6d 6f 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 tel-mode..."Minor.mode.for.inter
3f380 61 63 74 69 6e 67 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 acting.with.LLMs."...:lighter.".
3f3a0 47 50 54 22 0a 20 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 GPT"...:keymap...(let.((map.(mak
3f3c0 65 2d 73 70 61 72 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 e-sparse-keymap))).....(define-k
3f3e0 65 79 20 6d 61 70 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 ey.map.(kbd."C-c.RET").#'gptel-s
3f400 65 6e 64 29 0a 20 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 end).....map)...(if.gptel-mode..
3f420 20 20 20 20 20 28 70 72 6f 67 6e 0a 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 64 65 72 .....(progn.........(unless.(der
3f440 69 76 65 64 2d 6d 6f 64 65 2d 70 20 27 6f 72 67 2d 6d 6f 64 65 20 27 6d 61 72 6b 64 6f 77 6e 2d ived-mode-p.'org-mode.'markdown-
3f460 6d 6f 64 65 20 27 74 65 78 74 2d 6d 6f 64 65 29 0a 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 mode.'text-mode)...........(gpte
3f480 6c 2d 6d 6f 64 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 l-mode.-1)...........(user-error
3f4a0 20 28 66 6f 72 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 .(format."`gptel-mode'.is.not.su
3f4c0 70 70 6f 72 74 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 pported.in.`%s'.".major-mode))).
3f4e0 20 20 20 20 20 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 ........(add-hook.'before-save-h
3f500 6f 6f 6b 20 23 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 ook.#'gptel--save-state.nil.t)..
3f520 20 20 20 20 20 20 20 28 61 64 64 2d 68 6f 6f 6b 20 27 61 66 74 65 72 2d 63 68 61 6e 67 65 2d 66 .......(add-hook.'after-change-f
3f540 75 6e 63 74 69 6f 6e 73 20 27 67 70 74 65 6c 2d 2d 69 6e 68 65 72 69 74 2d 73 74 69 63 6b 69 6e unctions.'gptel--inherit-stickin
3f560 65 73 73 20 6e 69 6c 20 74 29 0a 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 70 72 65 74 74 ess.nil.t).........(gptel--prett
3f580 69 66 79 2d 70 72 65 73 65 74 29 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 64 65 72 69 76 ify-preset).........(when.(deriv
3f5a0 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 20 3b ed-mode-p.'org-mode)...........;
3f5c0 3b 20 57 6f 72 6b 20 61 72 6f 75 6e 64 20 62 75 67 20 69 6e 20 60 6f 72 67 2d 66 6f 6e 74 69 66 ;.Work.around.bug.in.`org-fontif
3f5e0 79 2d 65 78 74 65 6e 64 2d 72 65 67 69 6f 6e 27 2e 0a 20 20 20 20 20 20 20 20 20 20 28 61 64 64 y-extend-region'............(add
3f600 2d 68 6f 6f 6b 20 27 67 70 74 65 6c 2d 70 6f 73 74 2d 72 65 73 70 6f 6e 73 65 2d 66 75 6e 63 74 -hook.'gptel-post-response-funct
3f620 69 6f 6e 73 20 23 27 66 6f 6e 74 2d 6c 6f 63 6b 2d 66 6c 75 73 68 20 6e 69 6c 20 74 29 29 0a 20 ions.#'font-lock-flush.nil.t))..
3f640 20 20 20 20 20 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 .......(gptel--restore-state)...
3f660 20 20 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 ......(if.gptel-use-header-line.
3f680 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 64 2d 68 65 61 64 65 ..........(setq.gptel--old-heade
3f6a0 72 2d 6c 69 6e 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 r-line.header-line-format.......
3f6c0 20 20 20 20 20 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 ..........header-line-format....
3f6e0 20 20 20 20 20 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 .............(list.'(:eval.(conc
3f700 61 74 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 73 70 at.(propertize.".".'display.'(sp
3f720 61 63 65 20 3a 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 ace.:align-to.0))...............
3f740 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 25 73 22 20 28 67 .................(format."%s".(g
3f760 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 ptel-backend-name.gptel-backend)
3f780 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 28 70 72 6f 70 65 ))).......................(prope
3f7a0 72 74 69 7a 65 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 rtize.".Ready".'face.'success)..
3f7c0 20 20 20 20 20 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 .....................'(:eval....
3f7e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 6d 6f 64 .....................(let*.((mod
3f800 65 6c 20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 6e 61 6d 65 20 67 70 74 65 6c 2d 6d 6f 64 65 el.(gptel--model-name.gptel-mode
3f820 6c 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 l)).............................
3f840 20 20 28 73 79 73 74 65 6d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..(system.......................
3f860 20 20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 0a 20 20 20 20 20 20 20 20 20 20 20 .........(propertize............
3f880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 74 74 6f 6e 69 7a 65 0a .....................(buttonize.
3f8a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
3f8c0 20 28 66 6f 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 .(format."[Prompt:.%s]".........
3f8e0 20 20 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 6f 72 20 28 63 ..........................(or.(c
3f900 61 72 2d 73 61 66 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 ar-safe.(rassoc.gptel--system-me
3f920 73 73 61 67 65 20 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 ssage.gptel-directives))........
3f940 20 20 20 20 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
3f960 65 6c 2d 2d 64 65 73 63 72 69 62 65 2d 64 69 72 65 63 74 69 76 65 20 67 70 74 65 6c 2d 2d 73 79 el--describe-directive.gptel--sy
3f980 73 74 65 6d 2d 6d 65 73 73 61 67 65 20 31 35 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 stem-message.15)))..............
3f9a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 26 72 65 ....................(lambda.(&re
3f9c0 73 74 20 5f 29 20 28 67 70 74 65 6c 2d 73 79 73 74 65 6d 2d 70 72 6f 6d 70 74 29 29 29 0a 20 20 st._).(gptel-system-prompt)))...
3f9e0 20 20 20 20 20 20 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
3fa00 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............
3fa20 20 20 20 20 20 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 20 .....................'help-echo.
3fa40 22 53 79 73 74 65 6d 20 6d 65 73 73 61 67 65 20 66 6f 72 20 73 65 73 73 69 6f 6e 22 29 29 0a 20 "System.message.for.session"))..
3fa60 20 20 20 20 20 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 .............................(co
3fa80 6e 74 65 78 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 ntext...........................
3faa0 20 20 20 20 20 28 61 6e 64 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61 6c 69 73 74 0a 20 .....(and.gptel-context--alist..
3fac0 20 20 20 20 20 20 20 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 ...............................(
3fae0 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 65 6e 74 72 79 20 69 6e 20 67 70 74 65 6c 2d 63 6f 6e 74 65 cl-loop.for.entry.in.gptel-conte
3fb00 78 74 2d 2d 61 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 xt--alist.......................
3fb20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62 75 66 66 65 72 70 20 28 63 61 72 20 65 6e 74 72 ...........if.(bufferp.(car.entr
3fb40 79 29 29 20 63 6f 75 6e 74 20 69 74 20 69 6e 74 6f 20 62 75 66 73 0a 20 20 20 20 20 20 20 20 20 y)).count.it.into.bufs..........
3fb60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 63 6f 75 ........................else.cou
3fb80 6e 74 20 28 73 74 72 69 6e 67 70 20 28 63 61 72 20 65 6e 74 72 79 29 29 20 69 6e 74 6f 20 66 69 nt.(stringp.(car.entry)).into.fi
3fba0 6c 65 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 les.............................
3fbc0 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 20 20 20 20 20 .....finally.return.............
3fbe0 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
3fc00 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 ................................
3fc20 20 20 20 28 62 75 74 74 6f 6e 69 7a 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ...(buttonize...................
3fc40 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 22 5b 43 6f 6e 74 65 .................(concat."[Conte
3fc60 78 74 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 xt:."...........................
3fc80 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 28 3e 20 62 75 66 73 20 30 29 20 28 66 6f 72 6d 61 ..........(and.(>.bufs.0).(forma
3fca0 74 20 22 25 64 20 62 75 66 22 20 62 75 66 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 t."%d.buf".bufs))...............
3fcc0 20 20 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 3e 20 62 75 ......................(and.(>.bu
3fce0 66 73 20 31 29 20 22 73 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 fs.1)."s")......................
3fd00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 28 3e 20 62 75 66 73 20 30 29 20 28 ...............(and.(>.bufs.0).(
3fd20 3e 20 66 69 6c 65 73 20 30 29 20 22 2c 20 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 >.files.0).",.")................
3fd40 20 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 3e 20 66 69 6c .....................(and.(>.fil
3fd60 65 73 20 30 29 20 28 66 6f 72 6d 61 74 20 22 25 64 20 66 69 6c 65 22 20 66 69 6c 65 73 29 29 0a es.0).(format."%d.file".files)).
3fd80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
3fda0 20 20 20 20 28 61 6e 64 20 28 3e 20 66 69 6c 65 73 20 31 29 20 22 73 22 29 0a 20 20 20 20 20 20 ....(and.(>.files.1)."s").......
3fdc0 20 20 20 20 20 20 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 5d .............................."]
3fde0 22 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 ")..............................
3fe00 20 20 20 20 20 20 28 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 ......(lambda.(&rest._).........
3fe20 20 20 20 20 20 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
3fe40 71 75 69 72 65 20 27 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 20 20 quire.'gptel-context)...........
3fe60 20 20 20 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
3fe80 6c 2d 63 6f 6e 74 65 78 74 2d 2d 62 75 66 66 65 72 2d 73 65 74 75 70 29 29 29 0a 20 20 20 20 20 l-context--buffer-setup)))......
3fea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 6d 6f .............................'mo
3fec0 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 20 use-face.'highlight.............
3fee0 20 20 20 20 20 20 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 ......................'help-echo
3ff00 20 22 41 63 74 69 76 65 20 67 70 74 65 6c 20 63 6f 6e 74 65 78 74 22 29 29 29 29 0a 20 20 20 20 ."Active.gptel.context")))).....
3ff20 20 20 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 6f 67 67 6c ..........................(toggl
3ff40 65 2d 74 72 61 63 6b 2d 6d 65 64 69 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 e-track-media...................
3ff60 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 26 72 65 73 74 20 5f 29 0a 20 .............(lambda.(&rest._)..
3ff80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
3ffa0 28 73 65 74 71 2d 6c 6f 63 61 6c 20 67 70 74 65 6c 2d 74 72 61 63 6b 2d 6d 65 64 69 61 0a 20 20 (setq-local.gptel-track-media...
3ffc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
3ffe0 28 6e 6f 74 20 67 70 74 65 6c 2d 74 72 61 63 6b 2d 6d 65 64 69 61 29 29 0a 20 20 20 20 20 20 20 (not.gptel-track-media))........
40000 20 20 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 66 20 67 70 ..........................(if.gp
40020 74 65 6c 2d 74 72 61 63 6b 2d 6d 65 64 69 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 tel-track-media.................
40040 20 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 61 67 65 0a 20 20 .....................(message...
40060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
40080 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.....................
400a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 53 65 6e 64 69 6e 67 20 6d 65 64 69 ..................."Sending.medi
400c0 61 20 66 72 6f 6d 20 69 6e 63 6c 75 64 65 64 20 6c 69 6e 6b 73 2e 20 20 54 6f 20 69 6e 63 6c 75 a.from.included.links...To.inclu
400e0 64 65 20 6d 65 64 69 61 2c 20 63 72 65 61 74 65 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 de.media,.create."..............
40100 20 20 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 61 20 5c 22 73 .........................."a.\"s
40120 74 61 6e 64 61 6c 6f 6e 65 5c 22 20 6c 69 6e 6b 20 69 6e 20 61 20 70 61 72 61 67 72 61 70 68 20 tandalone\".link.in.a.paragraph.
40140 62 79 20 69 74 73 65 6c 66 2c 20 73 65 70 61 72 61 74 65 64 20 66 72 6f 6d 20 73 75 72 72 6f 75 by.itself,.separated.from.surrou
40160 6e 64 69 6e 67 20 74 65 78 74 2e 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 nding.text."))..................
40180 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 49 67 6e 6f ..................(message."Igno
401a0 72 69 6e 67 20 69 6d 61 67 65 20 6c 69 6e 6b 73 2e 20 20 4f 6e 6c 79 20 6c 69 6e 6b 20 74 65 78 ring.image.links...Only.link.tex
401c0 74 20 77 69 6c 6c 20 62 65 20 73 65 6e 74 2e 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 t.will.be.sent."))..............
401e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 75 6e 2d 61 74 2d 74 69 6d 65 ....................(run-at-time
40200 20 30 20 6e 69 6c 20 23 27 66 6f 72 63 65 2d 6d 6f 64 65 2d 6c 69 6e 65 2d 75 70 64 61 74 65 29 .0.nil.#'force-mode-line-update)
40220 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 20 ))..............................
40240 20 28 74 72 61 63 6b 2d 6d 65 64 69 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .(track-media...................
40260 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d .............(and.(gptel--model-
40280 63 61 70 61 62 6c 65 2d 70 20 27 6d 65 64 69 61 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 capable-p.'media)...............
402a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 67 70 74 65 6c 2d 74 72 61 63 ..................(if.gptel-trac
402c0 6b 2d 6d 65 64 69 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 20 k-media.........................
402e0 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 0a 20 20 20 20 20 20 20 20 ............(propertize.........
40300 20 20 20 20 20 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 .............................(bu
40320 74 74 6f 6e 69 7a 65 20 22 5b 53 65 6e 64 69 6e 67 20 6d 65 64 69 61 5d 22 20 74 6f 67 67 6c 65 ttonize."[Sending.media]".toggle
40340 2d 74 72 61 63 6b 2d 6d 65 64 69 61 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -track-media)...................
40360 20 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 ...................'mouse-face.'
40380 68 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 highlight.......................
403a0 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 20 ...............'help-echo.......
403c0 20 20 20 20 20 20 20 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 ..............................."
403e0 53 65 6e 64 69 6e 67 20 6d 65 64 69 61 20 66 72 6f 6d 20 73 74 61 6e 64 61 6c 6f 6e 65 20 6c 69 Sending.media.from.standalone.li
40400 6e 6b 73 2f 75 72 6c 73 20 77 68 65 6e 20 73 75 70 70 6f 72 74 65 64 2e 5c 6e 43 6c 69 63 6b 20 nks/urls.when.supported.\nClick.
40420 74 6f 20 74 6f 67 67 6c 65 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 to.toggle").....................
40440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 0a 20 20 20 20 20 20 ..............(propertize.......
40460 20 20 20 20 20 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 .............................(bu
40480 74 74 6f 6e 69 7a 65 20 22 5b 49 67 6e 6f 72 69 6e 67 20 6d 65 64 69 61 5d 22 20 74 6f 67 67 6c ttonize."[Ignoring.media]".toggl
404a0 65 2d 74 72 61 63 6b 2d 6d 65 64 69 61 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 e-track-media)..................
404c0 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
404e0 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........................
40500 20 20 20 20 20 20 20 20 20 20 20 20 27 68 65 6c 70 2d 65 63 68 6f 0a 20 20 20 20 20 20 20 20 20 ............'help-echo..........
40520 20 20 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 49 67 6e 6f 72 .........................."Ignor
40540 69 6e 67 20 69 6d 61 67 65 73 20 66 72 6f 6d 20 73 74 61 6e 64 61 6c 6f 6e 65 20 6c 69 6e 6b 73 ing.images.from.standalone.links
40560 2f 75 72 6c 73 2e 5c 6e 43 6c 69 63 6b 20 74 6f 20 74 6f 67 67 6c 65 22 29 29 29 29 0a 20 20 20 /urls.\nClick.to.toggle"))))....
40580 20 20 20 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 6f 67 67 ...........................(togg
405a0 6c 65 2d 74 6f 6f 6c 73 20 28 6c 61 6d 62 64 61 20 28 26 72 65 73 74 20 5f 29 20 28 69 6e 74 65 le-tools.(lambda.(&rest._).(inte
405c0 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 20 20 ractive)........................
405e0 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 75 6e 2d 61 74 2d 74 .......................(run-at-t
40600 69 6d 65 20 30 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 ime.0.nil.......................
40620 20 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
40640 20 28 29 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 .().(call-interactively.#'gptel-
40660 74 6f 6f 6c 73 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 tools)))))......................
40680 20 20 20 20 20 20 20 20 20 28 74 6f 6f 6c 73 20 28 77 68 65 6e 20 28 61 6e 64 20 67 70 74 65 6c .........(tools.(when.(and.gptel
406a0 2d 75 73 65 2d 74 6f 6f 6c 73 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 29 0a 20 20 20 20 20 20 20 20 -use-tools.gptel-tools).........
406c0 20 20 20 20 20 20 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 ..............................(p
406e0 72 6f 70 65 72 74 69 7a 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ropertize.......................
40700 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 70 63 61 .................(buttonize.(pca
40720 73 65 20 28 6c 65 6e 67 74 68 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 29 0a 20 20 20 20 20 20 20 20 se.(length.gptel-tools).........
40740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
40760 20 20 20 20 20 20 20 20 20 20 20 28 30 20 22 5b 4e 6f 20 74 6f 6f 6c 73 5d 22 29 20 28 31 20 22 ...........(0."[No.tools]").(1."
40780 5b 31 20 74 6f 6f 6c 5d 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 [1.tool]")......................
407a0 20 20 20 20 20 20 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 ..............................(l
407c0 65 6e 20 28 66 6f 72 6d 61 74 20 22 5b 25 64 20 74 6f 6f 6c 73 5d 22 20 6c 65 6e 29 29 29 0a 20 en.(format."[%d.tools]".len)))..
407e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
40800 20 20 20 20 20 20 20 74 6f 67 67 6c 65 2d 74 6f 6f 6c 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 .......toggle-tools)............
40820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 6d 6f 75 ............................'mou
40840 73 65 2d 66 61 63 65 20 27 68 69 67 68 6c 69 67 68 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 se-face.'highlight..............
40860 20 20 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 68 65 6c 70 2d ..........................'help-
40880 65 63 68 6f 20 22 53 65 6c 65 63 74 20 74 6f 6f 6c 73 22 29 29 29 29 0a 20 20 20 20 20 20 20 20 echo."Select.tools")))).........
408a0 20 20 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 .................(concat........
408c0 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 0a 20 ...................(propertize..
408e0 20 20 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 ..........................".".'d
40900 69 73 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 isplay..........................
40920 20 20 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 0a 20 20 20 ..`(space.:align-to.(-.right....
40940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
40960 20 20 20 20 20 20 20 20 20 20 20 2c 28 2b 20 35 20 28 6c 65 6e 67 74 68 20 6d 6f 64 65 6c 29 20 ...........,(+.5.(length.model).
40980 28 6c 65 6e 67 74 68 20 73 79 73 74 65 6d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (length.system).................
409a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
409c0 28 6c 65 6e 67 74 68 20 74 72 61 63 6b 2d 6d 65 64 69 61 29 20 28 6c 65 6e 67 74 68 20 63 6f 6e (length.track-media).(length.con
409e0 74 65 78 74 29 20 28 6c 65 6e 67 74 68 20 74 6f 6f 6c 73 29 29 29 29 29 0a 20 20 20 20 20 20 20 text).(length.tools)))))........
40a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 6f 6c 73 20 28 61 6e 64 20 74 72 ...................tools.(and.tr
40a20 61 63 6b 2d 6d 65 64 69 61 20 22 20 22 29 20 74 72 61 63 6b 2d 6d 65 64 69 61 20 28 61 6e 64 20 ack-media.".").track-media.(and.
40a40 63 6f 6e 74 65 78 74 20 22 20 22 29 20 63 6f 6e 74 65 78 74 20 22 20 22 20 73 79 73 74 65 6d 20 context.".").context.".".system.
40a60 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 20 20 28 70 "."...........................(p
40a80 72 6f 70 65 72 74 69 7a 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ropertize.......................
40aa0 20 20 20 20 20 28 62 75 74 74 6f 6e 69 7a 65 20 28 63 6f 6e 63 61 74 20 22 5b 22 20 6d 6f 64 65 .....(buttonize.(concat."[".mode
40ac0 6c 20 22 5d 22 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 l."]")..........................
40ae0 20 20 20 28 6c 61 6d 62 64 61 20 28 26 72 65 73 74 20 5f 29 20 28 67 70 74 65 6c 2d 6d 65 6e 75 ...(lambda.(&rest._).(gptel-menu
40b00 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 27 )))............................'
40b20 6d 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 mouse-face.'highlight...........
40b40 20 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 20 22 4d 6f 64 .................'help-echo."Mod
40b60 65 6c 20 69 6e 20 75 73 65 22 29 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 el.in.use"))))))...........(setq
40b80 20 6d 6f 64 65 2d 6c 69 6e 65 2d 70 72 6f 63 65 73 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 .mode-line-process..............
40ba0 20 20 20 27 28 3a 65 76 61 6c 20 28 63 6f 6e 63 61 74 20 22 20 22 0a 20 20 20 20 20 20 20 20 20 ...'(:eval.(concat."."..........
40bc0 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 67 70 74 65 ................(buttonize.(gpte
40be0 6c 2d 2d 6d 6f 64 65 6c 2d 6e 61 6d 65 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 29 0a 20 20 20 20 20 l--model-name.gptel-model)......
40c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 .......................(lambda.(
40c20 26 72 65 73 74 20 5f 29 20 28 67 70 74 65 6c 2d 6d 65 6e 75 29 29 29 29 29 29 29 29 0a 20 20 20 &rest._).(gptel-menu))))))))....
40c40 20 28 72 65 6d 6f 76 65 2d 68 6f 6f 6b 20 27 62 65 66 6f 72 65 2d 73 61 76 65 2d 68 6f 6f 6b 20 .(remove-hook.'before-save-hook.
40c60 23 27 67 70 74 65 6c 2d 2d 73 61 76 65 2d 73 74 61 74 65 20 74 29 0a 20 20 20 20 28 72 65 6d 6f #'gptel--save-state.t).....(remo
40c80 76 65 2d 68 6f 6f 6b 20 27 61 66 74 65 72 2d 63 68 61 6e 67 65 2d 66 75 6e 63 74 69 6f 6e 73 20 ve-hook.'after-change-functions.
40ca0 27 67 70 74 65 6c 2d 2d 69 6e 68 65 72 69 74 2d 73 74 69 63 6b 69 6e 65 73 73 20 74 29 0a 20 20 'gptel--inherit-stickiness.t)...
40cc0 20 20 28 67 70 74 65 6c 2d 2d 70 72 65 74 74 69 66 79 2d 70 72 65 73 65 74 29 0a 20 20 20 20 28 ..(gptel--prettify-preset).....(
40ce0 69 66 20 67 70 74 65 6c 2d 75 73 65 2d 68 65 61 64 65 72 2d 6c 69 6e 65 0a 20 20 20 20 20 20 20 if.gptel-use-header-line........
40d00 20 28 73 65 74 71 20 68 65 61 64 65 72 2d 6c 69 6e 65 2d 66 6f 72 6d 61 74 20 67 70 74 65 6c 2d .(setq.header-line-format.gptel-
40d20 2d 6f 6c 64 2d 68 65 61 64 65 72 2d 6c 69 6e 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 -old-header-line...............g
40d40 70 74 65 6c 2d 2d 6f 6c 64 2d 68 65 61 64 65 72 2d 6c 69 6e 65 20 6e 69 6c 29 0a 20 20 20 20 20 ptel--old-header-line.nil)......
40d60 20 28 73 65 74 71 20 6d 6f 64 65 2d 6c 69 6e 65 2d 70 72 6f 63 65 73 73 20 6e 69 6c 29 29 29 29 .(setq.mode-line-process.nil))))
40d80 0a 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d 2d 66 73 6d 2d 6c 61 73 74 29 20 20 20 20 20 20 ..(defvar.gptel--fsm-last)......
40da0 20 20 20 20 20 20 20 20 20 20 3b 44 65 66 69 6e 65 64 20 66 75 72 74 68 65 72 20 62 65 6c 6f 77 ..........;Defined.further.below
40dc0 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 75 70 64 61 74 65 2d 73 74 61 74 75 73 20 28 26 6f .(defun.gptel--update-status.(&o
40de0 70 74 69 6f 6e 61 6c 20 6d 73 67 20 66 61 63 65 29 0a 20 20 22 55 70 64 61 74 65 20 73 74 61 74 ptional.msg.face)..."Update.stat
40e00 75 73 20 4d 53 47 20 69 6e 20 46 41 43 45 2e 22 0a 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 6d us.MSG.in.FACE."...(when.gptel-m
40e20 6f 64 65 0a 20 20 20 20 28 69 66 20 67 70 74 65 6c 2d 75 73 65 2d 68 65 61 64 65 72 2d 6c 69 6e ode.....(if.gptel-use-header-lin
40e40 65 0a 20 20 20 20 20 20 20 20 28 61 6e 64 20 28 63 6f 6e 73 70 20 68 65 61 64 65 72 2d 6c 69 6e e.........(and.(consp.header-lin
40e60 65 2d 66 6f 72 6d 61 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 66 20 28 6e 74 e-format)..............(setf.(nt
40e80 68 20 31 20 68 65 61 64 65 72 2d 6c 69 6e 65 2d 66 6f 72 6d 61 74 29 0a 20 20 20 20 20 20 20 20 h.1.header-line-format).........
40ea0 20 20 20 20 20 20 20 20 20 20 20 28 74 68 72 65 61 64 2d 66 69 72 73 74 0a 20 20 20 20 20 20 20 ...........(thread-first........
40ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 73 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..............msg...............
40ee0 20 20 20 20 20 20 20 28 62 75 74 74 6f 6e 69 7a 65 20 28 6c 61 6d 62 64 61 20 28 5f 29 20 28 67 .......(buttonize.(lambda.(_).(g
40f00 70 74 65 6c 2d 2d 69 6e 73 70 65 63 74 2d 66 73 6d 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 ptel--inspect-fsm)))............
40f20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 27 66 61 63 65 20 66 61 63 65 ..........(propertize.'face.face
40f40 20 27 6d 6f 75 73 65 2d 66 61 63 65 20 27 68 69 67 68 6c 69 67 68 74 29 29 29 29 0a 20 20 20 20 .'mouse-face.'highlight)))).....
40f60 20 20 28 69 66 20 28 6d 65 6d 62 65 72 20 6d 73 67 20 27 28 22 20 54 79 70 69 6e 67 2e 2e 2e 22 ..(if.(member.msg.'(".Typing..."
40f80 20 22 20 57 61 69 74 69 6e 67 2e 2e 2e 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 .".Waiting..."))...........(setq
40fa0 20 6d 6f 64 65 2d 6c 69 6e 65 2d 70 72 6f 63 65 73 73 20 28 70 72 6f 70 65 72 74 69 7a 65 20 6d .mode-line-process.(propertize.m
40fc0 73 67 20 27 66 61 63 65 20 66 61 63 65 29 29 0a 20 20 20 20 20 20 20 20 28 73 65 74 71 20 6d 6f sg.'face.face)).........(setq.mo
40fe0 64 65 2d 6c 69 6e 65 2d 70 72 6f 63 65 73 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 28 de-line-process...............'(
41000 3a 65 76 61 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 :eval.(concat."."...............
41020 20 20 20 20 20 20 20 20 20 28 62 75 74 74 6f 6e 69 7a 65 20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 .........(buttonize.(gptel--mode
41040 6c 2d 6e 61 6d 65 20 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 l-name.gptel-model).............
41060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 26 72 65 73 74 20 5f ................(lambda.(&rest._
41080 29 20 28 67 70 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 ).(gptel-menu)))))).........(mes
410a0 73 61 67 65 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 sage.(propertize.msg.'face.face)
410c0 29 29 29 0a 20 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 ))).....(force-mode-line-update)
410e0 29 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 6c 2d 63 6f 6e 74 ))..(declare-function.gptel-cont
41100 65 78 74 2d 2d 77 72 61 70 20 22 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 22 29 0a 0a 0c 0a 3b 3b ext--wrap."gptel-context")....;;
41120 3b 20 53 74 72 75 63 74 75 72 65 64 20 6f 75 74 70 75 74 0a 28 64 65 66 76 61 72 20 67 70 74 65 ;.Structured.output.(defvar.gpte
41140 6c 2d 2d 73 63 68 65 6d 61 20 6e 69 6c 0a 20 20 22 52 65 73 70 6f 6e 73 65 20 6f 75 74 70 75 74 l--schema.nil..."Response.output
41160 20 73 63 68 65 6d 61 20 66 6f 72 20 62 61 63 6b 65 6e 64 73 20 74 68 61 74 20 73 75 70 70 6f 72 .schema.for.backends.that.suppor
41180 74 20 69 74 2e 22 29 0a 0a 28 63 6c 2d 64 65 66 67 65 6e 65 72 69 63 20 67 70 74 65 6c 2d 2d 70 t.it.")..(cl-defgeneric.gptel--p
411a0 61 72 73 65 2d 73 63 68 65 6d 61 20 28 5f 62 61 63 6b 65 6e 64 20 5f 73 63 68 65 6d 61 29 0a 20 arse-schema.(_backend._schema)..
411c0 20 22 50 61 72 73 65 20 4a 53 4f 4e 20 73 63 68 65 6d 61 20 69 6e 20 61 20 62 61 63 6b 65 6e 64 ."Parse.JSON.schema.in.a.backend
411e0 2d 61 70 70 72 6f 70 72 69 61 74 65 20 77 61 79 2e 22 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 -appropriate.way.")..(defun.gpte
41200 6c 2d 2d 64 69 73 70 61 74 63 68 2d 73 63 68 65 6d 61 2d 74 79 70 65 20 28 73 63 68 65 6d 61 29 l--dispatch-schema-type.(schema)
41220 0a 20 20 22 43 6f 6e 76 65 72 74 20 53 43 48 45 4d 41 20 74 6f 20 61 20 76 61 6c 69 64 20 65 6c ..."Convert.SCHEMA.to.a.valid.el
41240 69 73 70 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 2e 0a 0a 53 43 48 45 4d 41 20 63 61 6e 20 isp.representation...SCHEMA.can.
41260 62 65 20 73 70 65 63 69 66 69 65 64 20 69 6e 20 73 65 76 65 72 61 6c 20 77 61 79 73 3a 0a 2d 20 be.specified.in.several.ways:.-.
41280 41 73 20 61 20 70 6c 69 73 74 20 72 65 61 64 61 62 6c 65 20 62 79 20 60 67 70 74 65 6c 2d 2d 6a As.a.plist.readable.by.`gptel--j
412a0 73 6f 6e 2d 65 6e 63 6f 64 65 27 0a 20 20 45 78 3a 20 28 3a 74 79 70 65 20 6f 62 6a 65 63 74 20 son-encode'...Ex:.(:type.object.
412c0 3a 70 72 6f 70 65 72 74 69 65 73 20 28 3a 6b 65 79 31 20 28 3a 74 79 70 65 20 6e 75 6d 62 65 72 :properties.(:key1.(:type.number
412e0 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 5c 22 2e 2e 2e 5c 22 29 0a 20 20 20 20 20 20 20 20 20 .:description.\"...\")..........
41300 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 6b 65 79 32 20 28 3a ........................:key2.(:
41320 74 79 70 65 20 73 74 72 69 6e 67 29 29 29 0a 0a 2d 20 41 73 20 61 20 73 65 72 69 61 6c 69 7a 65 type.string)))..-.As.a.serialize
41340 64 20 4a 53 4f 4e 20 73 74 72 69 6e 67 2c 20 77 68 69 63 68 20 77 69 6c 6c 20 62 65 20 70 61 73 d.JSON.string,.which.will.be.pas
41360 73 65 64 20 61 73 2d 69 73 2e 0a 0a 2d 20 49 6e 20 73 68 6f 72 74 68 61 6e 64 20 66 6f 72 6d 20 sed.as-is...-.In.shorthand.form.
41380 23 31 2c 20 61 20 73 69 6e 67 6c 65 2d 6c 69 6e 65 20 63 6f 6d 6d 61 2d 73 65 70 61 72 61 74 65 #1,.a.single-line.comma-separate
413a0 64 20 73 74 72 69 6e 67 20 77 69 74 68 20 6f 62 6a 65 63 74 0a 20 20 6b 65 79 73 20 61 6e 64 20 d.string.with.object...keys.and.
413c0 28 6f 70 74 69 6f 6e 61 6c 6c 79 29 20 74 79 70 65 73 3a 0a 20 20 45 78 3a 20 5c 22 6b 65 79 31 (optionally).types:...Ex:.\"key1
413e0 2c 20 6b 65 79 32 20 6e 75 6d 62 65 72 5c 22 0a 20 20 45 78 3a 20 5c 22 6b 65 79 31 20 73 74 72 ,.key2.number\"...Ex:.\"key1.str
41400 69 6e 67 2c 20 6b 65 79 32 20 69 6e 74 5c 22 0a 20 20 54 68 65 20 64 65 66 61 75 6c 74 20 74 79 ing,.key2.int\"...The.default.ty
41420 70 65 20 69 73 20 73 74 72 69 6e 67 2c 20 61 6e 64 20 74 79 70 65 73 20 63 61 6e 20 62 65 20 73 pe.is.string,.and.types.can.be.s
41440 68 6f 72 74 65 6e 65 64 20 28 69 6e 74 65 67 65 72 20 2d 3e 20 69 6e 74 29 20 61 73 0a 20 20 6c hortened.(integer.->.int).as...l
41460 6f 6e 67 20 61 73 20 74 68 65 79 20 6d 61 74 63 68 20 61 20 4a 53 4f 4e 20 73 63 68 65 6d 61 20 ong.as.they.match.a.JSON.schema.
41480 74 79 70 65 20 75 6e 69 71 75 65 6c 79 2e 0a 0a 2d 20 49 6e 20 73 68 6f 72 74 68 61 6e 64 20 66 type.uniquely...-.In.shorthand.f
414a0 6f 72 6d 20 23 32 2c 20 61 20 6d 75 6c 74 69 2d 6c 69 6e 65 20 73 74 72 69 6e 67 20 77 69 74 68 orm.#2,.a.multi-line.string.with
414c0 20 6b 65 79 73 2c 20 28 6f 70 74 69 6f 6e 61 6c 6c 79 29 20 74 79 70 65 73 20 61 6e 64 0a 20 20 .keys,.(optionally).types.and...
414e0 28 6f 70 74 69 6f 6e 61 6c 6c 79 29 20 64 65 73 63 72 69 70 74 69 6f 6e 73 0a 20 20 45 78 3a 20 (optionally).descriptions...Ex:.
41500 5c 22 6b 65 79 31 3a 20 64 65 73 63 72 69 70 74 69 6f 6e 20 31 20 68 65 72 65 0a 20 20 20 20 20 \"key1:.description.1.here......
41520 20 20 6b 65 79 32 20 69 6e 74 65 67 65 72 3a 20 64 65 73 63 72 69 70 74 69 6f 6e 20 32 20 68 65 ..key2.integer:.description.2.he
41540 72 65 5c 22 0a 0a 2d 20 53 68 6f 72 74 68 61 6e 64 20 66 6f 72 6d 73 20 63 61 6e 20 62 65 20 70 re\"..-.Shorthand.forms.can.be.p
41560 6c 61 63 65 64 20 69 6e 73 69 64 65 20 5b 20 61 6e 64 20 5d 20 74 6f 20 73 70 65 63 69 66 79 20 laced.inside.[.and.].to.specify.
41580 61 6e 20 61 72 72 61 79 20 6f 66 0a 20 20 6f 62 6a 65 63 74 73 3a 0a 20 20 45 78 3a 20 5c 22 5b an.array.of...objects:...Ex:.\"[
415a0 6b 65 79 31 2c 20 6b 65 79 32 20 6e 75 6d 62 65 72 5d 5c 22 0a 20 20 45 78 3a 20 5c 22 5b 6b 65 key1,.key2.number]\"...Ex:.\"[ke
415c0 79 31 3a 20 64 65 73 63 72 69 70 74 69 6f 6e 20 31 20 68 65 72 65 0a 20 20 20 20 20 20 20 20 6b y1:.description.1.here.........k
415e0 65 79 32 20 69 6e 74 3a 20 64 65 73 63 72 69 70 74 69 6f 6e 20 32 20 68 65 72 65 5d 5c 22 22 0a ey2.int:.description.2.here]\"".
41600 20 20 28 77 68 65 6e 20 28 73 74 72 69 6e 67 70 20 73 63 68 65 6d 61 29 20 20 3b 54 77 6f 20 70 ..(when.(stringp.schema)..;Two.p
41620 6f 73 73 69 62 69 6c 69 74 69 65 73 3a 20 73 65 72 69 61 6c 69 7a 65 64 20 4a 53 4f 4e 2c 20 6f ossibilities:.serialized.JSON,.o
41640 72 20 73 68 6f 72 74 68 61 6e 64 20 66 6f 72 6d 0a 20 20 20 20 28 6c 65 74 20 28 77 72 61 70 2d r.shorthand.form.....(let.(wrap-
41660 69 6e 2d 61 72 72 61 79 29 20 20 3b 46 6c 61 67 20 74 6f 20 77 72 61 70 20 74 68 65 20 6f 62 6a in-array)..;Flag.to.wrap.the.obj
41680 65 63 74 20 74 79 70 65 20 69 6e 20 61 6e 20 61 72 72 61 79 0a 20 20 20 20 20 20 28 77 69 74 68 ect.type.in.an.array.......(with
416a0 2d 74 65 6d 70 2d 62 75 66 66 65 72 20 20 20 3b 50 61 72 73 65 72 20 66 6f 72 20 28 70 6f 73 73 -temp-buffer...;Parser.for.(poss
416c0 69 62 6c 79 29 20 73 68 6f 72 74 68 61 6e 64 20 66 6f 72 6d 73 0a 20 20 20 20 20 20 20 20 28 69 ibly).shorthand.forms.........(i
416e0 6e 73 65 72 74 20 73 63 68 65 6d 61 29 0a 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 nsert.schema).........(goto-char
41700 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 20 28 73 6b 69 70 2d 63 68 61 72 73 2d 66 6f 72 77 61 72 .(point-min)).(skip-chars-forwar
41720 64 20 22 20 5c 6e 5c 72 5c 74 22 29 0a 20 20 20 20 20 20 20 20 28 69 66 20 28 3d 20 28 63 68 61 d.".\n\r\t").........(if.(=.(cha
41740 72 2d 61 66 74 65 72 29 20 3f 7b 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 73 r-after).?{).............(setq.s
41760 63 68 65 6d 61 20 28 67 70 74 65 6c 2d 2d 6a 73 6f 6e 2d 72 65 61 64 29 29 20 3b 41 73 73 75 6d chema.(gptel--json-read)).;Assum
41780 65 20 73 65 72 69 61 6c 69 7a 65 64 20 4a 53 4f 4e 20 73 63 68 65 6d 61 2c 20 77 65 27 72 65 20 e.serialized.JSON.schema,.we're.
417a0 64 6f 6e 65 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 3d 20 28 63 68 61 72 2d 61 66 done...........(when.(=.(char-af
417c0 74 65 72 29 20 3f 5c 5b 29 20 20 20 20 3b 53 68 6f 72 74 68 61 6e 64 3a 20 61 73 73 75 6d 65 20 ter).?\[)....;Shorthand:.assume.
417e0 61 72 72 61 79 20 74 6f 70 2d 6c 65 76 65 6c 20 74 79 70 65 0a 20 20 20 20 20 20 20 20 20 20 20 array.top-level.type............
41800 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 .(save-excursion...............(
41820 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 20 28 73 6b 69 70 2d 63 68 61 goto-char.(point-max)).(skip-cha
41840 72 73 2d 62 61 63 6b 77 61 72 64 20 22 20 5c 6e 5c 72 5c 74 22 29 20 28 64 65 6c 65 74 65 2d 63 rs-backward.".\n\r\t").(delete-c
41860 68 61 72 20 2d 31 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 64 65 6c 65 74 65 2d 63 68 61 har.-1)).............(delete-cha
41880 72 20 31 29 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 44 65 6c 65 74 65 20 61 72 72 61 79 20 6d r.1).............;Delete.array.m
418a0 61 72 6b 65 72 73 20 5b 20 61 6e 64 20 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 arkers.[.and.].............(setq
418c0 20 77 72 61 70 2d 69 6e 2d 61 72 72 61 79 20 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 6c 65 .wrap-in-array.t))...........(le
418e0 74 20 28 20 70 72 6f 70 73 20 74 79 70 65 73 20 64 65 73 63 72 69 70 74 69 6f 6e 73 20 3b 4e 65 t.(.props.types.descriptions.;Ne
41900 73 74 65 64 20 6f 62 6a 65 63 74 20 61 6e 64 20 61 72 72 61 79 20 74 79 70 65 73 20 61 72 65 20 sted.object.and.array.types.are.
41920 64 69 73 61 6c 6c 6f 77 65 64 20 69 6e 20 73 68 6f 72 74 68 61 6e 64 0a 20 20 20 20 20 20 20 20 disallowed.in.shorthand.........
41940 20 20 20 20 20 20 20 20 20 28 61 6c 6c 2d 74 79 70 65 73 20 27 28 22 6e 75 6d 62 65 72 22 20 22 .........(all-types.'("number"."
41960 73 74 72 69 6e 67 22 20 22 69 6e 74 65 67 65 72 22 20 22 62 6f 6f 6c 65 61 6e 22 20 22 6e 75 6c string"."integer"."boolean"."nul
41980 6c 22 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 3d 20 28 70 6f 69 6e 74 2d l"))).............(if.(=.(point-
419a0 6d 61 78 29 20 28 6c 69 6e 65 2d 65 6e 64 2d 70 6f 73 69 74 69 6f 6e 29 29 20 3b 20 53 69 6e 67 max).(line-end-position)).;.Sing
419c0 6c 65 20 6f 72 20 6d 75 6c 74 69 2d 6c 69 6e 65 3f 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 le.or.multi-line?...............
419e0 20 20 3b 3b 20 53 69 6e 67 6c 65 20 6c 69 6e 65 20 66 6f 72 6d 61 74 20 28 74 79 70 65 20 6f 70 ..;;.Single.line.format.(type.op
41a00 74 69 6f 6e 61 6c 29 3a 20 22 6b 65 79 31 20 74 79 70 65 2c 20 6b 65 79 32 2c 20 2e 2e 2e 22 0a tional):."key1.type,.key2,....".
41a20 20 20 20 20 20 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 ................(while.(re-searc
41a40 68 2d 66 6f 72 77 61 72 64 20 22 2c 3f 5c 5c 28 5b 5e 20 2c 5d 2b 5c 5c 29 20 2a 5c 5c 28 5b 5e h-forward.",?\\([^.,]+\\).*\\([^
41a60 20 2c 5d 2a 5c 5c 5d 3f 5c 5c 29 22 20 6e 69 6c 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 .,]*\\]?\\)".nil.t).............
41a80 20 20 20 20 20 20 28 70 75 73 68 20 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 20 31 29 20 70 72 6f ......(push.(match-string.1).pro
41aa0 70 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 69 66 20 ps)...................(push.(if.
41ac0 28 73 74 72 69 6e 67 2d 65 6d 70 74 79 2d 70 20 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 20 32 29 (string-empty-p.(match-string.2)
41ae0 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 22 73 )............................."s
41b00 74 72 69 6e 67 22 20 28 63 61 72 20 28 61 6c 6c 2d 63 6f 6d 70 6c 65 74 69 6f 6e 73 20 28 6d 61 tring".(car.(all-completions.(ma
41b20 74 63 68 2d 73 74 72 69 6e 67 20 32 29 20 61 6c 6c 2d 74 79 70 65 73 29 29 29 0a 20 20 20 20 20 tch-string.2).all-types)))......
41b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 79 70 65 73 29 0a 20 20 20 20 20 20 ...................types).......
41b60 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 6e 69 6c 20 64 65 73 63 72 69 70 74 69 6f ............(push.nil.descriptio
41b80 6e 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 4d 75 6c 74 69 2d 6c 69 6e 65 ns))...............;;.Multi-line
41ba0 20 66 6f 72 6d 61 74 20 28 74 79 70 65 2c 20 64 65 73 63 72 69 70 74 69 6f 6e 20 6f 70 74 69 6f .format.(type,.description.optio
41bc0 6e 61 6c 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 22 6b 65 79 31 20 74 79 70 nal):...............;;."key1.typ
41be0 65 3a 20 64 65 73 63 72 69 70 74 69 6f 6e 31 20 5c 6e 20 6b 65 79 32 3a 20 64 65 73 63 72 69 70 e:.description1.\n.key2:.descrip
41c00 74 69 6f 6e 32 2e 2e 2e 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 69 6c 65 20 28 tion2..."...............(while.(
41c20 72 65 2d 73 65 61 72 63 68 2d 66 6f 72 77 61 72 64 20 22 5c 5c 28 5b 5e 20 3a 5d 2b 5c 5c 29 20 re-search-forward."\\([^.:]+\\).
41c40 2a 5c 5c 28 5b 5e 20 3a 5d 2a 5c 5c 29 3a 3f 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 *\\([^.:]*\\):?"................
41c60 20 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 65 .........................(line-e
41c80 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 20 20 20 20 nd-position).t).................
41ca0 28 70 75 73 68 20 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 20 31 29 20 70 72 6f 70 73 29 0a 20 20 (push.(match-string.1).props)...
41cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 69 66 20 28 73 74 72 69 6e 67 2d ..............(push.(if.(string-
41ce0 65 6d 70 74 79 2d 70 20 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 20 32 29 29 0a 20 20 20 20 20 20 empty-p.(match-string.2)).......
41d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 73 74 72 69 6e 67 22 20 28 63 61 ...................."string".(ca
41d20 72 20 28 61 6c 6c 2d 63 6f 6d 70 6c 65 74 69 6f 6e 73 20 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 r.(all-completions.(match-string
41d40 20 32 29 20 61 6c 6c 2d 74 79 70 65 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .2).all-types)))................
41d60 20 20 20 20 20 20 20 74 79 70 65 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 .......types).................(s
41d80 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 20 20 20 20 20 20 kip-chars-forward.".\t")........
41da0 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 69 66 20 28 65 6f 6c 70 29 20 6e 69 6c 20 28 62 .........(push.(if.(eolp).nil.(b
41dc0 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 20 20 uffer-substring-no-properties...
41de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
41e00 20 20 20 20 28 70 6f 69 6e 74 29 20 28 6c 69 6e 65 2d 65 6e 64 2d 70 6f 73 69 74 69 6f 6e 29 29 ....(point).(line-end-position))
41e20 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 73 63 72 69 70 74 ).......................descript
41e40 69 6f 6e 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 77 61 72 64 2d 6c ions).................(forward-l
41e60 69 6e 65 20 31 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 6f 62 6a 65 ine.1))).............(let.((obje
41e80 63 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 3a 74 79 70 ct....................(list.:typ
41ea0 65 20 22 6f 62 6a 65 63 74 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 e."object"......................
41ec0 20 20 20 20 3a 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 ....:properties.................
41ee0 20 20 20 20 20 20 20 20 20 28 63 6c 2d 6d 61 70 63 61 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 .........(cl-mapcan.............
41f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 70 72 6f 70 20 74 79 70 65 ..............(lambda.(prop.type
41f20 20 64 65 73 63 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .desc)..........................
41f40 20 20 20 60 28 2c 28 69 6e 74 65 72 6e 20 28 63 6f 6e 63 61 74 20 22 3a 22 20 70 72 6f 70 29 29 ...`(,(intern.(concat.":".prop))
41f60 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 28 ...............................(
41f80 3a 74 79 70 65 20 2c 74 79 70 65 20 2c 40 28 77 68 65 6e 20 64 65 73 63 0a 20 20 20 20 20 20 20 :type.,type.,@(when.desc........
41fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
41fc0 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 28 73 74 72 69 ........(list.:description.(stri
41fe0 6e 67 2d 74 72 69 6d 20 64 65 73 63 29 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ng-trim.desc))))))..............
42000 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 72 65 76 65 72 73 65 20 70 72 6f 70 73 29 20 28 6e .............(nreverse.props).(n
42020 72 65 76 65 72 73 65 20 74 79 70 65 73 29 20 28 6e 72 65 76 65 72 73 65 20 64 65 73 63 72 69 70 reverse.types).(nreverse.descrip
42040 74 69 6f 6e 73 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 73 tions)))))...............(setq.s
42060 63 68 65 6d 61 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 77 72 chema.....................(if.wr
42080 61 70 2d 69 6e 2d 61 72 72 61 79 20 28 6c 69 73 74 20 3a 74 79 70 65 20 22 61 72 72 61 79 22 20 ap-in-array.(list.:type."array".
420a0 3a 69 74 65 6d 73 20 6f 62 6a 65 63 74 29 20 6f 62 6a 65 63 74 29 29 29 29 29 29 29 29 0a 20 20 :items.object).object))))))))...
420c0 3b 3b 20 54 68 65 20 4f 70 65 6e 41 49 20 61 6e 64 20 41 6e 74 68 72 6f 70 69 63 20 41 50 49 73 ;;.The.OpenAI.and.Anthropic.APIs
420e0 20 64 6f 6e 27 74 20 61 6c 6c 6f 77 20 61 72 72 61 79 73 20 61 74 20 74 68 65 20 72 6f 6f 74 20 .don't.allow.arrays.at.the.root.
42100 6f 66 20 74 68 65 20 73 63 68 65 6d 61 2e 0a 20 20 3b 3b 20 57 6f 72 6b 20 61 72 6f 75 6e 64 20 of.the.schema....;;.Work.around.
42120 74 68 69 73 20 62 79 20 77 72 61 70 70 69 6e 67 20 69 74 20 69 6e 20 61 6e 20 6f 62 6a 65 63 74 this.by.wrapping.it.in.an.object
42140 20 77 69 74 68 20 74 68 65 20 66 69 65 6c 64 20 22 69 74 65 6d 73 22 2e 0a 20 20 3b 3b 20 54 4f .with.the.field."items"....;;.TO
42160 44 4f 28 73 63 68 65 6d 61 29 3a 20 46 69 6e 64 20 73 6f 6d 65 20 77 61 79 20 74 6f 20 73 74 72 DO(schema):.Find.some.way.to.str
42180 69 70 20 74 68 69 73 20 65 78 74 72 61 20 6c 61 79 65 72 20 66 72 6f 6d 20 74 68 65 20 72 65 73 ip.this.extra.layer.from.the.res
421a0 70 6f 6e 73 65 2e 0a 20 20 28 69 66 20 28 6d 65 6d 62 65 72 20 28 70 6c 69 73 74 2d 67 65 74 20 ponse....(if.(member.(plist-get.
421c0 73 63 68 65 6d 61 20 3a 74 79 70 65 29 20 27 28 22 61 72 72 61 79 22 20 61 72 72 61 79 29 29 0a schema.:type).'("array".array)).
421e0 20 20 20 20 20 20 28 6c 69 73 74 20 3a 74 79 70 65 20 22 6f 62 6a 65 63 74 22 0a 20 20 20 20 20 ......(list.:type."object"......
42200 20 20 20 20 20 20 20 3a 70 72 6f 70 65 72 74 69 65 73 20 28 6c 69 73 74 20 3a 69 74 65 6d 73 20 .......:properties.(list.:items.
42220 73 63 68 65 6d 61 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 72 65 71 75 69 72 65 64 20 5b 22 schema).............:required.["
42240 69 74 65 6d 73 22 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 61 64 64 69 74 69 6f 6e 61 6c 50 items"].............:additionalP
42260 72 6f 70 65 72 74 69 65 73 20 3a 6a 73 6f 6e 2d 66 61 6c 73 65 29 0a 20 20 20 20 73 63 68 65 6d roperties.:json-false).....schem
42280 61 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 70 72 65 70 72 6f 63 65 73 73 2d 73 63 a))..(defun.gptel--preprocess-sc
422a0 68 65 6d 61 20 28 73 70 65 63 29 0a 20 20 22 53 65 74 20 61 64 64 69 74 69 6f 6e 61 6c 50 72 6f hema.(spec)..."Set.additionalPro
422c0 70 65 72 74 69 65 73 20 66 6f 72 20 6f 62 6a 65 63 74 73 20 69 6e 20 53 50 45 43 20 64 65 73 74 perties.for.objects.in.SPEC.dest
422e0 72 75 63 74 69 76 65 6c 79 2e 0a 0a 43 6f 6e 76 65 72 74 20 73 79 6d 62 6f 6c 20 3a 74 79 70 65 ructively...Convert.symbol.:type
42300 73 20 74 6f 20 73 74 72 69 6e 67 73 2e 22 0a 20 20 3b 3b 20 4e 4f 54 45 3a 20 44 6f 20 6e 6f 74 s.to.strings."...;;.NOTE:.Do.not
42320 20 75 73 65 20 60 73 65 71 75 65 6e 63 65 70 27 20 68 65 72 65 2c 20 61 73 20 74 68 61 74 20 63 .use.`sequencep'.here,.as.that.c
42340 6f 76 65 72 73 20 73 74 72 69 6e 67 73 20 74 6f 6f 20 61 6e 64 20 62 72 65 61 6b 73 0a 20 20 3b overs.strings.too.and.breaks...;
42360 3b 20 74 68 69 6e 67 73 2e 0a 20 20 28 77 68 65 6e 20 28 6f 72 20 28 6c 69 73 74 70 20 73 70 65 ;.things....(when.(or.(listp.spe
42380 63 29 20 28 76 65 63 74 6f 72 70 20 73 70 65 63 29 29 0a 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 c).(vectorp.spec)).....(cond....
423a0 20 20 28 28 76 65 63 74 6f 72 70 20 73 70 65 63 29 0a 20 20 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 ..((vectorp.spec).......(cl-loop
423c0 20 66 6f 72 20 65 6c 65 6d 65 6e 74 20 61 63 72 6f 73 73 20 73 70 65 63 0a 20 20 20 20 20 20 20 .for.element.across.spec........
423e0 20 20 20 20 20 20 20 20 66 6f 72 20 69 64 78 20 75 70 66 72 6f 6d 20 30 0a 20 20 20 20 20 20 20 ........for.idx.upfrom.0........
42400 20 20 20 20 20 20 20 20 64 6f 20 28 61 73 65 74 20 73 70 65 63 20 69 64 78 20 28 67 70 74 65 6c ........do.(aset.spec.idx.(gptel
42420 2d 2d 70 72 65 70 72 6f 63 65 73 73 2d 73 63 68 65 6d 61 20 65 6c 65 6d 65 6e 74 29 29 29 29 0a --preprocess-schema.element)))).
42440 20 20 20 20 20 28 28 6b 65 79 77 6f 72 64 70 20 28 63 61 72 20 73 70 65 63 29 29 0a 20 20 20 20 .....((keywordp.(car.spec)).....
42460 20 20 28 6c 65 74 20 28 28 74 61 69 6c 20 73 70 65 63 29 29 0a 20 20 20 20 20 20 20 20 28 77 68 ..(let.((tail.spec)).........(wh
42480 69 6c 65 20 74 61 69 6c 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 65 71 20 28 63 61 ile.tail...........(when.(eq.(ca
424a0 72 20 74 61 69 6c 29 20 3a 74 79 70 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e r.tail).:type).............(when
424c0 20 28 73 79 6d 62 6f 6c 70 20 28 63 61 64 72 20 74 61 69 6c 29 29 20 3b 43 6f 6e 76 65 72 74 20 .(symbolp.(cadr.tail)).;Convert.
424e0 73 79 6d 62 6f 6c 20 3a 74 79 70 65 20 74 6f 20 73 74 72 69 6e 67 0a 20 20 20 20 20 20 20 20 20 symbol.:type.to.string..........
42500 20 20 20 20 20 28 73 65 74 63 61 72 20 28 63 64 72 20 74 61 69 6c 29 20 28 73 79 6d 62 6f 6c 2d .....(setcar.(cdr.tail).(symbol-
42520 6e 61 6d 65 20 28 63 61 64 72 20 74 61 69 6c 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 name.(cadr.tail)))).............
42540 28 77 68 65 6e 20 28 65 71 75 61 6c 20 28 63 61 64 72 20 74 61 69 6c 29 20 22 6f 62 6a 65 63 74 (when.(equal.(cadr.tail)."object
42560 22 29 20 3b 41 64 64 20 61 64 64 69 74 69 6f 6e 61 6c 20 6f 62 6a 65 63 74 20 66 69 65 6c 64 73 ").;Add.additional.object.fields
42580 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 74 61 69 6c 20 3a ...............(plist-put.tail.:
425a0 61 64 64 69 74 69 6f 6e 61 6c 50 72 6f 70 65 72 74 69 65 73 20 3a 6a 73 6f 6e 2d 66 61 6c 73 65 additionalProperties.:json-false
425c0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 76 70 72 6f 70 73 20 28 76 )...............(let.((vprops.(v
425e0 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 20 20 20 20 20 concat..........................
42600 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 20 20 20 ....(cl-loop....................
42620 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 70 72 6f 70 20 69 6e 20 28 70 6c 69 73 74 2d 67 65 ...........for.prop.in.(plist-ge
42640 74 20 74 61 69 6c 20 3a 70 72 6f 70 65 72 74 69 65 73 29 20 62 79 20 23 27 63 64 64 72 0a 20 20 t.tail.:properties).by.#'cddr...
42660 20 20 20 20 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 ............................coll
42680 65 63 74 20 28 73 75 62 73 74 72 69 6e 67 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 70 72 6f 70 ect.(substring.(symbol-name.prop
426a0 29 20 31 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d ).1))))).................(plist-
426c0 70 75 74 20 74 61 69 6c 20 3a 72 65 71 75 69 72 65 64 20 76 70 72 6f 70 73 29 0a 20 20 20 20 20 put.tail.:required.vprops)......
426e0 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 74 61 69 6c 20 3a 70 72 6f 70 ...........(plist-put.tail.:prop
42700 65 72 74 79 4f 72 64 65 72 69 6e 67 20 76 70 72 6f 70 73 29 29 29 29 0a 20 20 20 20 20 20 20 20 ertyOrdering.vprops)))).........
42720 20 20 28 77 68 65 6e 20 28 6f 72 20 28 6c 69 73 74 70 20 28 63 61 64 72 20 74 61 69 6c 29 29 20 ..(when.(or.(listp.(cadr.tail)).
42740 28 76 65 63 74 6f 72 70 20 28 63 61 64 72 20 74 61 69 6c 29 29 29 0a 20 20 20 20 20 20 20 20 20 (vectorp.(cadr.tail)))..........
42760 20 20 20 28 67 70 74 65 6c 2d 2d 70 72 65 70 72 6f 63 65 73 73 2d 73 63 68 65 6d 61 20 28 63 61 ...(gptel--preprocess-schema.(ca
42780 64 72 20 74 61 69 6c 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 74 61 69 6c 20 dr.tail)))...........(setq.tail.
427a0 28 63 64 64 72 20 74 61 69 6c 29 29 29 29 29 0a 20 20 20 20 20 28 28 6c 69 73 74 70 20 73 70 65 (cddr.tail)))))......((listp.spe
427c0 63 29 20 28 64 6f 6c 69 73 74 20 28 65 6c 65 6d 65 6e 74 20 73 70 65 63 29 0a 20 20 20 20 20 20 c).(dolist.(element.spec).......
427e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 6c 69 73 74 70 20 65 6c 65 6d ...............(when.(listp.elem
42800 65 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 28 67 70 74 ent)........................(gpt
42820 65 6c 2d 2d 70 72 65 70 72 6f 63 65 73 73 2d 73 63 68 65 6d 61 20 65 6c 65 6d 65 6e 74 29 29 29 el--preprocess-schema.element)))
42840 29 29 29 0a 20 20 73 70 65 63 29 0a 0a 0c 0a 3b 3b 3b 20 54 6f 6f 6c 20 75 73 65 0a 0a 28 64 65 )))...spec)....;;;.Tool.use..(de
42860 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 75 73 65 2d 74 6f 6f 6c 73 20 74 0a 20 20 22 57 68 65 fcustom.gptel-use-tools.t..."Whe
42880 74 68 65 72 20 67 70 74 65 6c 20 73 68 6f 75 6c 64 20 75 73 65 20 74 6f 6f 6c 73 2e 0a 0a 54 6f ther.gptel.should.use.tools...To
428a0 6f 6c 73 20 61 72 65 20 63 61 70 61 62 69 6c 69 74 69 65 73 20 70 72 6f 76 69 64 65 64 20 62 79 ols.are.capabilities.provided.by
428c0 20 79 6f 75 20 74 6f 20 74 68 65 20 4c 4c 4d 20 61 73 20 66 75 6e 63 74 69 6f 6e 73 20 61 6e 0a .you.to.the.LLM.as.functions.an.
428e0 4c 4c 4d 20 63 61 6e 20 63 68 6f 6f 73 65 20 74 6f 20 63 61 6c 6c 2e 20 20 67 70 74 65 6c 20 72 LLM.can.choose.to.call...gptel.r
42900 75 6e 73 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 20 6f 6e 20 79 6f 75 72 0a 6d 61 uns.the.function.call.on.your.ma
42920 63 68 69 6e 65 2e 0a 0a 49 66 20 73 65 74 20 74 6f 20 74 2c 20 61 6e 79 20 74 6f 6f 6c 73 20 73 chine...If.set.to.t,.any.tools.s
42940 65 6c 65 63 74 65 64 20 69 6e 20 60 67 70 74 65 6c 2d 74 6f 6f 6c 73 27 20 77 69 6c 6c 20 62 65 elected.in.`gptel-tools'.will.be
42960 20 6d 61 64 65 0a 61 76 61 69 6c 61 62 6c 65 20 74 6f 20 74 68 65 20 4c 4c 4d 2e 20 20 54 68 69 .made.available.to.the.LLM...Thi
42980 73 20 69 73 20 74 68 65 20 64 65 66 61 75 6c 74 2e 20 20 49 74 20 68 61 73 20 6e 6f 20 65 66 66 s.is.the.default...It.has.no.eff
429a0 65 63 74 20 69 66 0a 6e 6f 20 74 6f 6f 6c 73 20 61 72 65 20 73 65 6c 65 63 74 65 64 2e 0a 0a 49 ect.if.no.tools.are.selected...I
429c0 66 20 73 65 74 20 74 6f 20 66 6f 72 63 65 2c 20 67 70 74 65 6c 20 77 69 6c 6c 20 74 72 79 20 74 f.set.to.force,.gptel.will.try.t
429e0 6f 20 66 6f 72 63 65 20 74 68 65 20 4c 4c 4d 20 74 6f 20 63 61 6c 6c 20 6f 6e 65 20 6f 72 0a 6d o.force.the.LLM.to.call.one.or.m
42a00 6f 72 65 20 6f 66 20 74 68 65 20 70 72 6f 76 69 64 65 64 20 74 6f 6f 6c 73 2e 20 20 53 75 70 70 ore.of.the.provided.tools...Supp
42a20 6f 72 74 20 66 6f 72 20 74 68 69 73 20 66 65 61 74 75 72 65 20 64 65 70 65 6e 64 73 20 6f 6e 0a ort.for.this.feature.depends.on.
42a40 74 68 65 20 62 61 63 6b 65 6e 64 2f 41 50 49 2c 20 61 6e 64 20 67 70 74 65 6c 20 77 69 6c 6c 20 the.backend/API,.and.gptel.will.
42a60 66 61 6c 6c 20 62 61 63 6b 20 74 6f 20 74 68 65 20 64 65 66 61 75 6c 74 20 62 65 68 61 76 69 6f fall.back.to.the.default.behavio
42a80 72 0a 77 68 65 6e 20 66 6f 72 63 69 6e 67 20 74 6f 6f 6c 20 75 73 65 20 69 73 20 75 6e 73 75 70 r.when.forcing.tool.use.is.unsup
42aa0 70 6f 72 74 65 64 2e 0a 0a 49 66 20 6e 69 6c 2c 20 74 6f 6f 6c 20 75 73 65 20 69 73 20 74 75 72 ported...If.nil,.tool.use.is.tur
42ac0 6e 65 64 20 6f 66 66 2e 22 0a 20 20 3a 74 79 70 65 20 27 28 63 68 6f 69 63 65 0a 20 20 20 20 20 ned.off."...:type.'(choice......
42ae0 20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 20 22 45 6e 61 62 6c 65 22 20 74 29 0a 20 20 20 .....(const.:tag."Enable".t)....
42b00 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 20 22 46 6f 72 63 65 20 74 6f 6f 6c 20 75 .......(const.:tag."Force.tool.u
42b20 73 65 22 20 66 6f 72 63 65 29 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 se".force)...........(const.:tag
42b40 20 22 54 75 72 6e 20 4f 66 66 22 20 6e 69 6c 29 29 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 ."Turn.Off".nil)))..(defcustom.g
42b60 70 74 65 6c 2d 63 6f 6e 66 69 72 6d 2d 74 6f 6f 6c 2d 63 61 6c 6c 73 20 27 61 75 74 6f 0a 20 20 ptel-confirm-tool-calls.'auto...
42b80 22 57 68 65 74 68 65 72 20 74 6f 6f 6c 20 63 61 6c 6c 73 20 73 68 6f 75 6c 64 20 77 61 69 74 20 "Whether.tool.calls.should.wait.
42ba0 66 6f 72 20 74 68 65 20 75 73 65 72 20 74 6f 20 72 75 6e 20 74 68 65 6d 2e 0a 0a 49 66 20 73 65 for.the.user.to.run.them...If.se
42bc0 74 20 74 6f 20 74 20 6f 72 20 6e 69 6c 2c 20 74 6f 6f 6c 20 63 61 6c 6c 73 20 61 6c 77 61 79 73 t.to.t.or.nil,.tool.calls.always
42be0 20 6f 72 20 6e 65 76 65 72 20 73 65 65 6b 20 63 6f 6e 66 69 72 6d 61 74 69 6f 6e 0a 66 72 6f 6d .or.never.seek.confirmation.from
42c00 20 74 68 65 20 75 73 65 72 20 62 65 66 6f 72 65 20 72 75 6e 6e 69 6e 67 2e 0a 0a 49 66 20 73 65 .the.user.before.running...If.se
42c20 74 20 74 6f 20 74 68 65 20 73 79 6d 62 6f 6c 20 61 75 74 6f 20 28 74 68 65 20 64 65 66 61 75 6c t.to.the.symbol.auto.(the.defaul
42c40 74 29 2c 20 61 20 74 6f 6f 6c 20 63 61 6c 6c 20 77 69 6c 6c 20 73 65 65 6b 0a 63 6f 6e 66 69 72 t),.a.tool.call.will.seek.confir
42c60 6d 61 74 69 6f 6e 20 6f 6e 6c 79 20 77 68 65 6e 20 74 68 65 20 63 6f 72 72 65 73 70 6f 6e 64 69 mation.only.when.the.correspondi
42c80 6e 67 20 74 6f 6f 6c 20 73 70 65 63 20 68 61 73 20 61 20 6e 6f 6e 2d 6e 69 6c 0a 3a 63 6f 6e 66 ng.tool.spec.has.a.non-nil.:conf
42ca0 69 72 6d 20 73 6c 6f 74 2e 20 20 53 65 65 20 60 67 70 74 65 6c 2d 6d 61 6b 65 2d 74 6f 6f 6c 27 irm.slot...See.`gptel-make-tool'
42cc0 2e 22 0a 20 20 3a 74 79 70 65 20 27 28 63 68 6f 69 63 65 0a 20 20 20 20 20 20 20 20 20 20 28 63 ."...:type.'(choice...........(c
42ce0 6f 6e 73 74 20 3a 74 61 67 20 22 54 6f 6f 6c 20 64 65 63 69 64 65 73 22 20 61 75 74 6f 29 0a 20 onst.:tag."Tool.decides".auto)..
42d00 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 20 22 41 6c 77 61 79 73 22 20 74 29 .........(const.:tag."Always".t)
42d20 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 20 22 4e 65 76 65 72 22 20 6e ...........(const.:tag."Never".n
42d40 69 6c 29 29 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 69 6e 63 6c 75 64 65 2d il)))..(defcustom.gptel-include-
42d60 74 6f 6f 6c 2d 72 65 73 75 6c 74 73 20 27 61 75 74 6f 0a 20 20 22 57 68 65 74 68 65 72 20 74 6f tool-results.'auto..."Whether.to
42d80 6f 6c 20 63 61 6c 6c 20 72 65 73 75 6c 74 73 20 73 68 6f 75 6c 64 20 62 65 20 69 6e 63 6c 75 64 ol.call.results.should.be.includ
42da0 65 64 20 69 6e 20 74 68 65 20 62 75 66 66 65 72 2e 0a 0a 49 66 20 73 65 74 20 74 6f 20 74 20 6f ed.in.the.buffer...If.set.to.t.o
42dc0 72 20 6e 69 6c 2c 20 72 65 73 75 6c 74 73 20 6f 66 20 74 6f 6f 6c 20 63 61 6c 6c 73 20 61 72 65 r.nil,.results.of.tool.calls.are
42de0 20 61 6c 77 61 79 73 20 6f 72 20 6e 65 76 65 72 0a 69 6e 63 6c 75 64 65 64 20 69 6e 20 74 68 65 .always.or.never.included.in.the
42e00 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 2c 20 72 65 73 70 65 63 74 69 76 65 6c 79 2e 0a 0a 49 66 .LLM.response,.respectively...If
42e20 20 73 65 74 20 74 6f 20 74 68 65 20 73 79 6d 62 6f 6c 20 61 75 74 6f 20 28 74 68 65 20 64 65 66 .set.to.the.symbol.auto.(the.def
42e40 61 75 6c 74 29 2c 20 61 20 74 6f 6f 6c 20 63 61 6c 6c 20 72 65 73 75 6c 74 20 69 73 0a 69 6e 63 ault),.a.tool.call.result.is.inc
42e60 6c 75 64 65 64 20 6f 6e 6c 79 20 77 68 65 6e 20 74 68 65 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e luded.only.when.the.correspondin
42e80 67 20 74 6f 6f 6c 20 73 70 65 63 20 68 61 73 20 61 20 6e 6f 6e 2d 6e 69 6c 0a 3a 69 6e 63 6c 75 g.tool.spec.has.a.non-nil.:inclu
42ea0 64 65 20 73 6c 6f 74 2e 20 20 53 65 65 20 60 67 70 74 65 6c 2d 6d 61 6b 65 2d 74 6f 6f 6c 27 2e de.slot...See.`gptel-make-tool'.
42ec0 22 0a 20 20 3a 74 79 70 65 20 27 28 63 68 6f 69 63 65 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f "...:type.'(choice...........(co
42ee0 6e 73 74 20 3a 74 61 67 20 22 54 6f 6f 6c 20 64 65 63 69 64 65 73 22 20 61 75 74 6f 29 0a 20 20 nst.:tag."Tool.decides".auto)...
42f00 20 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 20 22 41 6c 77 61 79 73 22 20 74 29 0a ........(const.:tag."Always".t).
42f20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 20 22 4e 65 76 65 72 22 20 6e 69 ..........(const.:tag."Never".ni
42f40 6c 29 29 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 20 6e 69 6c l)))..(defcustom.gptel-tools.nil
42f60 0a 20 20 22 41 20 6c 69 73 74 20 6f 66 20 74 6f 6f 6c 73 20 74 6f 20 69 6e 63 6c 75 64 65 20 77 ..."A.list.of.tools.to.include.w
42f80 69 74 68 20 67 70 74 65 6c 20 72 65 71 75 65 73 74 73 2e 0a 0a 45 61 63 68 20 74 6f 6f 6c 20 73 ith.gptel.requests...Each.tool.s
42fa0 68 6f 75 6c 64 20 62 65 20 61 20 60 67 70 74 65 6c 2d 74 6f 6f 6c 27 20 73 74 72 75 63 74 2c 20 hould.be.a.`gptel-tool'.struct,.
42fc0 77 68 69 63 68 20 73 65 65 2e 20 20 54 6f 20 73 70 65 63 69 66 79 0a 61 20 74 6f 6f 6c 2c 20 75 which.see...To.specify.a.tool,.u
42fe0 73 65 20 60 67 70 74 65 6c 2d 6d 61 6b 65 2d 74 6f 6f 6c 27 2c 20 77 68 69 63 68 20 73 65 65 2e se.`gptel-make-tool',.which.see.
43000 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 28 72 65 70 65 "...:group.'gptel...:type.'(repe
43020 61 74 20 67 70 74 65 6c 2d 74 6f 6f 6c 29 29 0a 0a 28 63 6c 2d 64 65 66 73 74 72 75 63 74 20 28 at.gptel-tool))..(cl-defstruct.(
43040 67 70 74 65 6c 2d 74 6f 6f 6c 20 28 3a 63 6f 6e 73 74 72 75 63 74 6f 72 20 6e 69 6c 29 0a 20 20 gptel-tool.(:constructor.nil)...
43060 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 6f 6e 73 74 72 ........................(:constr
43080 75 63 74 6f 72 20 67 70 74 65 6c 2d 2d 6d 61 6b 65 2d 74 6f 6f 6c 2d 69 6e 74 65 72 6e 61 6c 0a uctor.gptel--make-tool-internal.
430a0 20 20 20 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 26 6b 65 79 ...........................(&key
430c0 20 66 75 6e 63 74 69 6f 6e 20 6e 61 6d 65 20 64 65 73 63 72 69 70 74 69 6f 6e 20 61 72 67 73 0a .function.name.description.args.
430e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
43100 20 61 73 79 6e 63 20 63 61 74 65 67 6f 72 79 20 63 6f 6e 66 69 72 6d 20 69 6e 63 6c 75 64 65 0a .async.category.confirm.include.
43120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
43140 20 26 61 6c 6c 6f 77 2d 6f 74 68 65 72 2d 6b 65 79 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 .&allow-other-keys))............
43160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 3a 63 6f 70 69 65 72 20 67 70 74 65 6c 2d 2d 63 ...............(:copier.gptel--c
43180 6f 70 79 2d 74 6f 6f 6c 29 29 0a 20 20 22 53 74 72 75 63 74 20 74 6f 20 73 70 65 63 69 66 79 20 opy-tool))..."Struct.to.specify.
431a0 74 6f 6f 6c 73 20 66 6f 72 20 4c 4c 4d 73 20 74 6f 20 72 75 6e 2e 0a 0a 41 20 74 6f 6f 6c 20 69 tools.for.LLMs.to.run...A.tool.i
431c0 73 20 61 20 66 75 6e 63 74 69 6f 6e 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e 20 73 65 6e 74 20 s.a.function.specification.sent.
431e0 74 6f 20 74 68 65 20 4c 4c 4d 20 61 6c 6f 6e 67 20 77 69 74 68 0a 61 20 28 70 6c 61 69 6e 20 6c to.the.LLM.along.with.a.(plain.l
43200 61 6e 67 75 61 67 65 29 20 74 61 73 6b 2e 20 20 49 66 20 74 68 65 20 4c 4c 4d 20 64 65 63 69 64 anguage).task...If.the.LLM.decid
43220 65 73 20 74 6f 20 75 73 65 20 74 68 65 20 74 6f 6f 6c 20 74 6f 0a 61 63 63 6f 6d 70 6c 69 73 68 es.to.use.the.tool.to.accomplish
43240 20 74 68 65 20 74 61 73 6b 2c 20 67 70 74 65 6c 20 77 69 6c 6c 20 72 75 6e 20 74 68 65 20 74 6f .the.task,.gptel.will.run.the.to
43260 6f 6c 20 61 6e 64 20 28 6f 70 74 69 6f 6e 61 6c 6c 79 29 0a 66 65 65 64 20 74 68 65 20 4c 4c 4d ol.and.(optionally).feed.the.LLM
43280 20 74 68 65 20 72 65 73 75 6c 74 73 2e 20 20 59 6f 75 20 63 61 6e 20 61 64 64 20 74 6f 6f 6c 73 .the.results...You.can.add.tools
432a0 20 76 69 61 0a 60 67 70 74 65 6c 2d 6d 61 6b 65 2d 74 6f 6f 6c 27 2c 20 77 68 69 63 68 20 73 65 .via.`gptel-make-tool',.which.se
432c0 65 2e 22 0a 20 20 28 66 75 6e 63 74 69 6f 6e 20 6e 69 6c 20 3a 74 79 70 65 20 66 75 6e 63 74 69 e."...(function.nil.:type.functi
432e0 6f 6e 20 3a 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 22 46 75 6e 63 74 69 6f 6e 20 74 68 61 74 on.:documentation."Function.that
43300 20 72 75 6e 73 20 74 68 65 20 74 6f 6f 6c 22 29 0a 20 20 28 6e 61 6d 65 20 6e 69 6c 20 3a 74 79 .runs.the.tool")...(name.nil.:ty
43320 70 65 20 73 74 72 69 6e 67 20 3a 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 22 54 6f 6f 6c 20 6e pe.string.:documentation."Tool.n
43340 61 6d 65 2c 20 73 6e 61 6b 65 5f 63 61 73 65 20 72 65 63 6f 6d 6d 65 6e 64 65 64 22 29 0a 20 20 ame,.snake_case.recommended")...
43360 28 64 65 73 63 72 69 70 74 69 6f 6e 20 6e 69 6c 20 3a 74 79 70 65 20 73 74 72 69 6e 67 20 3a 64 (description.nil.:type.string.:d
43380 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 22 57 68 61 74 20 74 68 65 20 74 6f 6f 6c 20 64 6f 65 73 ocumentation."What.the.tool.does
433a0 2c 20 69 6e 74 65 6e 64 65 64 20 66 6f 72 20 74 68 65 20 4c 4c 4d 22 29 0a 20 20 28 61 72 67 73 ,.intended.for.the.LLM")...(args
433c0 20 6e 69 6c 20 3a 74 79 70 65 20 6c 69 73 74 20 3a 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 22 .nil.:type.list.:documentation."
433e0 4c 69 73 74 20 6f 66 20 70 6c 69 73 74 73 20 73 70 65 63 69 66 79 69 6e 67 20 66 75 6e 63 74 69 List.of.plists.specifying.functi
43400 6f 6e 20 61 72 67 75 6d 65 6e 74 73 22 29 0a 20 20 28 61 73 79 6e 63 20 6e 69 6c 20 3a 74 79 70 on.arguments")...(async.nil.:typ
43420 65 20 62 6f 6f 6c 65 61 6e 20 3a 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 22 57 68 65 74 68 65 e.boolean.:documentation."Whethe
43440 72 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 72 75 6e 73 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 r.the.function.runs.asynchronous
43460 6c 79 22 29 0a 20 20 28 63 61 74 65 67 6f 72 79 20 6e 69 6c 20 3a 74 79 70 65 20 73 74 72 69 6e ly")...(category.nil.:type.strin
43480 67 20 3a 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 22 55 73 65 20 74 6f 20 67 72 6f 75 70 20 74 g.:documentation."Use.to.group.t
434a0 6f 6f 6c 73 20 62 79 20 70 75 72 70 6f 73 65 22 29 0a 20 20 28 63 6f 6e 66 69 72 6d 20 6e 69 6c ools.by.purpose")...(confirm.nil
434c0 20 3a 74 79 70 65 20 62 6f 6f 6c 65 61 6e 20 3a 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 22 53 .:type.boolean.:documentation."S
434e0 65 65 6b 20 63 6f 6e 66 69 72 6d 61 74 69 6f 6e 20 62 65 66 6f 72 65 20 72 75 6e 6e 69 6e 67 20 eek.confirmation.before.running.
43500 74 6f 6f 6c 3f 22 29 0a 20 20 28 69 6e 63 6c 75 64 65 20 6e 69 6c 20 3a 74 79 70 65 20 62 6f 6f tool?")...(include.nil.:type.boo
43520 6c 65 61 6e 20 3a 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 22 49 6e 63 6c 75 64 65 20 74 6f 6f lean.:documentation."Include.too
43540 6c 20 72 65 73 75 6c 74 73 20 69 6e 20 62 75 66 66 65 72 3f 22 29 29 0a 0a 28 64 65 66 75 6e 20 l.results.in.buffer?"))..(defun.
43560 67 70 74 65 6c 2d 2d 70 72 65 70 72 6f 63 65 73 73 2d 74 6f 6f 6c 2d 61 72 67 73 20 28 73 70 65 gptel--preprocess-tool-args.(spe
43580 63 29 0a 20 20 22 43 6f 6e 76 65 72 74 20 73 79 6d 62 6f 6c 20 3a 74 79 70 65 20 76 61 6c 75 65 c)..."Convert.symbol.:type.value
435a0 73 20 69 6e 20 74 6f 6f 6c 20 53 50 45 43 20 74 6f 20 73 74 72 69 6e 67 73 20 64 65 73 74 72 75 s.in.tool.SPEC.to.strings.destru
435c0 63 74 69 76 65 6c 79 2e 22 0a 20 20 3b 3b 20 4e 4f 54 45 3a 20 44 6f 20 6e 6f 74 20 75 73 65 20 ctively."...;;.NOTE:.Do.not.use.
435e0 60 73 65 71 75 65 6e 63 65 70 27 20 68 65 72 65 2c 20 61 73 20 74 68 61 74 20 63 6f 76 65 72 73 `sequencep'.here,.as.that.covers
43600 20 73 74 72 69 6e 67 73 20 74 6f 6f 20 61 6e 64 20 62 72 65 61 6b 73 0a 20 20 3b 3b 20 74 68 69 .strings.too.and.breaks...;;.thi
43620 6e 67 73 2e 0a 20 20 28 77 68 65 6e 20 28 6f 72 20 28 6c 69 73 74 70 20 73 70 65 63 29 20 28 76 ngs....(when.(or.(listp.spec).(v
43640 65 63 74 6f 72 70 20 73 70 65 63 29 29 0a 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 28 28 76 ectorp.spec)).....(cond......((v
43660 65 63 74 6f 72 70 20 73 70 65 63 29 0a 20 20 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 ectorp.spec).......(cl-loop.for.
43680 65 6c 65 6d 65 6e 74 20 61 63 72 6f 73 73 20 73 70 65 63 0a 20 20 20 20 20 20 20 20 20 20 20 20 element.across.spec.............
436a0 20 20 20 66 6f 72 20 69 64 78 20 75 70 66 72 6f 6d 20 30 0a 20 20 20 20 20 20 20 20 20 20 20 20 ...for.idx.upfrom.0.............
436c0 20 20 20 64 6f 20 28 61 73 65 74 20 73 70 65 63 20 69 64 78 20 28 67 70 74 65 6c 2d 2d 70 72 65 ...do.(aset.spec.idx.(gptel--pre
436e0 70 72 6f 63 65 73 73 2d 74 6f 6f 6c 2d 61 72 67 73 20 65 6c 65 6d 65 6e 74 29 29 29 29 0a 20 20 process-tool-args.element))))...
43700 20 20 20 28 28 6b 65 79 77 6f 72 64 70 20 28 63 61 72 20 73 70 65 63 29 29 0a 20 20 20 20 20 20 ...((keywordp.(car.spec)).......
43720 28 6c 65 74 20 28 28 74 61 69 6c 20 73 70 65 63 29 29 0a 20 20 20 20 20 20 20 20 28 77 68 69 6c (let.((tail.spec)).........(whil
43740 65 20 74 61 69 6c 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 61 6e 64 20 28 65 71 20 e.tail...........(when.(and.(eq.
43760 28 63 61 72 20 74 61 69 6c 29 20 3a 74 79 70 65 29 20 28 73 79 6d 62 6f 6c 70 20 28 63 61 64 72 (car.tail).:type).(symbolp.(cadr
43780 20 74 61 69 6c 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 63 61 72 20 28 63 64 .tail))).............(setcar.(cd
437a0 72 20 74 61 69 6c 29 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 28 63 61 64 72 20 74 61 69 6c 29 r.tail).(symbol-name.(cadr.tail)
437c0 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20 54 4f 44 4f 3a 20 48 61 6e 64 6c 65 20 3a 65 )))...........;;.TODO:.Handle.:e
437e0 6e 75 6d 20 28 22 70 72 6f 76 69 64 65 64 22 20 22 61 73 22 20 22 6c 69 73 74 22 29 20 68 65 72 num.("provided"."as"."list").her
43800 65 2c 20 63 6f 6e 76 65 72 74 20 74 6f 0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20 3a 65 6e 75 6d e,.convert.to...........;;.:enum
43820 20 5b 22 70 72 6f 76 69 64 65 64 22 20 22 61 73 22 20 22 61 72 72 61 79 22 5d 0a 20 20 20 20 20 .["provided"."as"."array"]......
43840 20 20 20 20 20 28 77 68 65 6e 20 28 6f 72 20 28 6c 69 73 74 70 20 28 63 61 64 72 20 74 61 69 6c .....(when.(or.(listp.(cadr.tail
43860 29 29 20 28 76 65 63 74 6f 72 70 20 28 63 61 64 72 20 74 61 69 6c 29 29 29 0a 20 20 20 20 20 20 )).(vectorp.(cadr.tail))).......
43880 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 70 72 65 70 72 6f 63 65 73 73 2d 74 6f 6f 6c 2d 61 72 ......(gptel--preprocess-tool-ar
438a0 67 73 20 28 63 61 64 72 20 74 61 69 6c 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 gs.(cadr.tail)))...........(setq
438c0 20 74 61 69 6c 20 28 63 64 64 72 20 74 61 69 6c 29 29 29 29 29 0a 20 20 20 20 20 28 28 6c 69 73 .tail.(cddr.tail)))))......((lis
438e0 74 70 20 73 70 65 63 29 20 28 64 6f 6c 69 73 74 20 28 65 6c 65 6d 65 6e 74 20 73 70 65 63 29 0a tp.spec).(dolist.(element.spec).
43900 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 6c 69 73 74 .....................(when.(list
43920 70 20 65 6c 65 6d 65 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 p.element)......................
43940 20 20 28 67 70 74 65 6c 2d 2d 70 72 65 70 72 6f 63 65 73 73 2d 74 6f 6f 6c 2d 61 72 67 73 20 65 ..(gptel--preprocess-tool-args.e
43960 6c 65 6d 65 6e 74 29 29 29 29 29 29 0a 20 20 73 70 65 63 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 lement))))))...spec)..(defun.gpt
43980 65 6c 2d 2d 6d 61 6b 65 2d 74 6f 6f 6c 20 28 26 72 65 73 74 20 73 70 65 63 29 0a 20 20 22 43 6f el--make-tool.(&rest.spec)..."Co
439a0 6e 73 74 72 75 63 74 20 61 20 67 70 74 65 6c 2d 74 6f 6f 6c 20 61 63 63 6f 72 64 69 6e 67 20 74 nstruct.a.gptel-tool.according.t
439c0 6f 20 53 50 45 43 2e 22 0a 20 20 28 67 70 74 65 6c 2d 2d 70 72 65 70 72 6f 63 65 73 73 2d 74 6f o.SPEC."...(gptel--preprocess-to
439e0 6f 6c 2d 61 72 67 73 20 28 70 6c 69 73 74 2d 67 65 74 20 73 70 65 63 20 3a 61 72 67 73 29 29 0a ol-args.(plist-get.spec.:args)).
43a00 20 20 28 61 70 70 6c 79 20 23 27 67 70 74 65 6c 2d 2d 6d 61 6b 65 2d 74 6f 6f 6c 2d 69 6e 74 65 ..(apply.#'gptel--make-tool-inte
43a20 72 6e 61 6c 20 73 70 65 63 29 29 0a 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 rnal.spec))..(defvar.gptel--know
43a40 6e 2d 74 6f 6f 6c 73 20 6e 69 6c 0a 20 20 22 41 6c 69 73 74 20 6f 66 20 67 70 74 65 6c 20 74 6f n-tools.nil..."Alist.of.gptel.to
43a60 6f 6c 73 20 61 72 72 61 6e 67 65 64 20 62 79 20 63 61 74 65 67 6f 72 79 2e 0a 0a 41 20 5c 22 74 ols.arranged.by.category...A.\"t
43a80 6f 6f 6c 5c 22 20 69 73 20 61 20 66 75 6e 63 74 69 6f 6e 20 73 70 65 63 20 28 64 65 66 69 6e 69 ool\".is.a.function.spec.(defini
43aa0 74 69 6f 6e 20 61 6e 64 20 64 65 73 63 72 69 70 74 69 6f 6e 29 0a 70 72 6f 76 69 64 65 64 20 62 tion.and.description).provided.b
43ac0 79 20 67 70 74 65 6c 20 74 6f 20 61 6e 20 4c 4c 4d 2e 20 20 53 65 65 20 60 67 70 74 65 6c 2d 74 y.gptel.to.an.LLM...See.`gptel-t
43ae0 6f 6f 6c 27 2e 20 20 45 61 63 68 20 74 6f 6f 6c 20 69 73 0a 61 73 73 69 67 6e 65 64 20 61 20 63 ool'...Each.tool.is.assigned.a.c
43b00 61 74 65 67 6f 72 79 20 77 68 65 6e 20 69 74 20 69 73 20 63 72 65 61 74 65 64 2c 20 77 69 74 68 ategory.when.it.is.created,.with
43b20 20 61 20 63 61 74 65 67 6f 72 79 20 6f 66 0a 5c 22 6d 69 73 63 5c 22 20 69 66 20 6e 6f 6e 65 20 .a.category.of.\"misc\".if.none.
43b40 69 73 20 73 70 65 63 69 66 69 65 64 2e 0a 0a 54 68 69 73 20 69 73 20 61 20 74 77 6f 2d 6c 65 76 is.specified...This.is.a.two-lev
43b60 65 6c 20 61 6c 69 73 74 20 6d 61 70 70 69 6e 67 20 63 61 74 65 67 6f 72 69 65 73 20 61 6e 64 20 el.alist.mapping.categories.and.
43b80 74 6f 6f 6c 20 6e 61 6d 65 73 20 74 6f 0a 74 68 65 20 74 6f 6f 6c 20 69 74 73 65 6c 66 2e 20 20 tool.names.to.the.tool.itself...
43ba0 49 74 20 69 73 20 75 73 65 64 20 61 73 20 61 20 67 6c 6f 62 61 6c 20 72 65 67 69 73 74 65 72 20 It.is.used.as.a.global.register.
43bc0 6f 66 20 61 76 61 69 6c 61 62 6c 65 0a 74 6f 6f 6c 73 20 61 6e 64 20 69 6e 20 67 70 74 65 6c 27 of.available.tools.and.in.gptel'
43be0 73 20 55 49 2c 20 73 65 65 20 60 67 70 74 65 6c 2d 74 6f 6f 6c 73 27 2e 0a 0a 49 6e 20 74 68 69 s.UI,.see.`gptel-tools'...In.thi
43c00 73 20 65 78 61 6d 70 6c 65 20 73 74 72 75 63 74 75 72 65 2c 20 63 61 74 2d 74 6f 6f 6c 20 61 6e s.example.structure,.cat-tool.an
43c20 64 20 74 68 65 20 72 65 73 74 20 61 72 65 20 63 6c 2d 73 74 72 75 63 74 73 0a 6f 66 20 74 79 70 d.the.rest.are.cl-structs.of.typ
43c40 65 20 60 67 70 74 65 6c 2d 74 6f 6f 6c 27 3a 0a 0a 20 20 20 43 41 54 45 47 4f 52 59 20 20 20 20 e.`gptel-tool':.....CATEGORY....
43c60 20 20 20 20 20 54 4f 4f 4c 20 4e 41 4d 45 20 20 20 20 20 20 20 20 20 20 54 4f 4f 4c 0a 20 28 28 .....TOOL.NAME..........TOOL..((
43c80 5c 22 66 69 6c 65 73 79 73 74 65 6d 5c 22 20 2e 20 28 28 5c 22 72 65 61 64 5f 66 69 6c 65 5c 22 \"filesystem\"...((\"read_file\"
43ca0 20 20 20 20 20 20 2e 20 63 61 74 2d 74 6f 6f 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ........cat-tool)...............
43cc0 20 20 20 20 20 28 5c 22 6c 69 73 74 5f 64 69 72 65 63 74 6f 72 79 5c 22 20 2e 20 6c 73 2d 74 6f .....(\"list_directory\"...ls-to
43ce0 6f 6c 29 29 29 0a 20 20 28 5c 22 65 6d 61 63 73 5c 22 20 20 20 20 20 20 2e 20 28 28 5c 22 72 65 ol)))...(\"emacs\"........((\"re
43d00 61 64 5f 62 75 66 66 65 72 5c 22 20 20 20 20 2e 20 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e ad_buffer\"......buffer-substrin
43d20 67 2d 74 6f 6f 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 5c 22 73 65 g-tool)....................(\"se
43d40 6e 64 5f 6d 65 73 73 61 67 65 5c 22 20 20 20 2e 20 6d 65 73 73 61 67 65 2d 74 6f 6f 6c 29 29 29 nd_message\".....message-tool)))
43d60 29 0a 0a 54 68 69 73 20 76 61 72 69 61 62 6c 65 20 69 73 20 66 6f 72 20 69 6e 74 65 72 6e 61 6c )..This.variable.is.for.internal
43d80 20 75 73 65 20 6f 6e 6c 79 2c 20 74 6f 20 64 65 66 69 6e 65 20 61 20 74 6f 6f 6c 20 75 73 65 0a .use.only,.to.define.a.tool.use.
43da0 60 67 70 74 65 6c 2d 6d 61 6b 65 2d 74 6f 6f 6c 27 2e 22 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 `gptel-make-tool'.")..(defun.gpt
43dc0 65 6c 2d 67 65 74 2d 74 6f 6f 6c 20 28 70 61 74 68 29 0a 20 20 22 46 69 6e 64 20 74 6f 6f 6c 20 el-get-tool.(path)..."Find.tool.
43de0 69 6e 20 67 70 74 65 6c 27 73 20 74 6f 6f 6c 20 72 65 67 69 73 74 72 79 20 61 74 20 50 41 54 48 in.gptel's.tool.registry.at.PATH
43e00 2e 0a 0a 50 41 54 48 20 63 61 6e 20 62 65 20 73 70 65 63 69 66 69 65 64 0a 2d 20 61 73 20 61 20 ...PATH.can.be.specified.-.as.a.
43e20 73 74 72 69 6e 67 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20 74 68 65 20 74 6f 6f 6c 20 6e 61 6d string.representing.the.tool.nam
43e40 65 2c 20 6c 69 6b 65 20 5c 22 73 65 61 72 63 68 5f 64 62 5c 22 2c 0a 2d 20 6f 72 20 61 73 20 61 e,.like.\"search_db\",.-.or.as.a
43e60 20 6c 69 73 74 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20 61 20 63 61 74 65 67 6f 72 79 20 61 6e .list.representing.a.category.an
43e80 64 20 74 6f 6f 6c 20 6e 61 6d 65 2c 0a 20 20 6c 69 6b 65 20 5c 5c 3d 27 28 5c 22 65 6d 61 63 73 d.tool.name,...like.\\='(\"emacs
43ea0 5c 22 20 5c 22 72 65 61 64 5f 62 75 66 66 65 72 5c 22 29 2e 0a 49 6e 20 62 6f 74 68 20 63 61 73 \".\"read_buffer\")..In.both.cas
43ec0 65 73 2c 20 74 68 65 20 66 69 72 73 74 20 6d 61 74 63 68 69 6e 67 20 67 70 74 65 6c 2d 74 6f 6f es,.the.first.matching.gptel-too
43ee0 6c 20 69 73 20 72 65 74 75 72 6e 65 64 2e 0a 0a 2d 20 61 73 20 61 20 73 74 72 69 6e 67 20 72 65 l.is.returned...-.as.a.string.re
43f00 70 72 65 73 65 6e 74 69 6e 67 20 61 20 63 61 74 65 67 6f 72 79 2c 20 6c 69 6b 65 20 5c 22 66 69 presenting.a.category,.like.\"fi
43f20 6c 65 73 79 73 74 65 6d 5c 22 2e 0a 49 6e 20 74 68 69 73 20 63 61 73 65 20 61 20 6c 69 73 74 20 lesystem\"..In.this.case.a.list.
43f40 6f 66 20 61 6c 6c 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 20 77 69 74 68 20 74 68 69 73 20 63 61 74 of.all.gptel-tools.with.this.cat
43f60 65 67 6f 72 79 20 69 73 0a 72 65 74 75 72 6e 65 64 2e 22 0a 20 20 28 6f 72 20 28 63 6c 2d 65 74 egory.is.returned."...(or.(cl-et
43f80 79 70 65 63 61 73 65 20 70 61 74 68 0a 20 20 20 20 20 20 20 20 28 63 6f 6e 73 20 28 6c 65 74 20 ypecase.path.........(cons.(let.
43fa0 28 28 74 63 20 28 6d 61 70 2d 6e 65 73 74 65 64 2d 65 6c 74 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 ((tc.(map-nested-elt.gptel--know
43fc0 6e 2d 74 6f 6f 6c 73 20 70 61 74 68 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 n-tools.path))).................
43fe0 28 69 66 20 28 63 6f 6e 73 70 20 74 63 29 20 28 6d 61 70 2d 76 61 6c 75 65 73 20 74 63 29 20 74 (if.(consp.tc).(map-values.tc).t
44000 63 29 29 29 0a 20 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 20 28 69 66 2d 6c 65 74 2a 20 28 28 c))).........(string.(if-let*.((
44020 63 61 74 65 67 6f 72 79 20 28 61 73 73 6f 63 20 70 61 74 68 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 category.(assoc.path.gptel--know
44040 6e 2d 74 6f 6f 6c 73 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 n-tools))).....................(
44060 6d 61 70 2d 76 61 6c 75 65 73 20 28 63 64 72 20 63 61 74 65 67 6f 72 79 29 29 0a 20 20 20 20 20 map-values.(cdr.category))......
44080 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 28 5f 20 2e 20 74 .............(cl-loop.for.(_...t
440a0 6f 6f 6c 73 29 20 69 6e 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 74 6f 6f 6c 73 0a 20 20 20 20 ools).in.gptel--known-tools.....
440c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61 73 73 6f 63 .......................if.(assoc
440e0 20 70 61 74 68 20 74 6f 6f 6c 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .path.tools)....................
44100 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 63 64 72 20 69 74 29 29 29 29 29 0a 20 20 20 20 ........return.(cdr.it))))).....
44120 20 20 28 65 72 72 6f 72 20 22 4e 6f 20 74 6f 6f 6c 20 6d 61 74 63 68 65 73 20 66 6f 72 20 25 53 ..(error."No.tool.matches.for.%S
44140 22 20 70 61 74 68 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 6d 61 6b 65 2d 74 6f 6f ".path)))..(defun.gptel-make-too
44160 6c 20 28 26 72 65 73 74 20 73 6c 6f 74 73 29 0a 20 20 22 4d 61 6b 65 20 61 20 67 70 74 65 6c 20 l.(&rest.slots)..."Make.a.gptel.
44180 74 6f 6f 6c 20 66 6f 72 20 4c 4c 4d 20 75 73 65 2e 0a 0a 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 tool.for.LLM.use...The.following
441a0 20 6b 65 79 77 6f 72 64 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 61 76 61 69 6c 61 62 6c 65 .keyword.arguments.are.available
441c0 2c 20 6f 66 20 77 68 69 63 68 20 74 68 65 20 66 69 72 73 74 0a 66 6f 75 72 20 61 72 65 20 72 65 ,.of.which.the.first.four.are.re
441e0 71 75 69 72 65 64 2e 0a 0a 4e 41 4d 45 3a 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 74 quired...NAME:.The.name.of.the.t
44200 6f 6f 6c 2c 20 72 65 63 6f 6d 6d 65 6e 64 65 64 20 74 6f 20 62 65 20 69 6e 20 4a 61 76 61 73 63 ool,.recommended.to.be.in.Javasc
44220 72 69 70 74 20 73 74 79 6c 65 20 73 6e 61 6b 65 5f 63 61 73 65 2e 0a 0a 46 55 4e 43 54 49 4f 4e ript.style.snake_case...FUNCTION
44240 3a 20 54 68 65 20 66 75 6e 63 74 69 6f 6e 20 69 74 73 65 6c 66 20 28 6c 61 6d 62 64 61 20 6f 72 :.The.function.itself.(lambda.or
44260 20 73 79 6d 62 6f 6c 29 20 74 68 61 74 20 72 75 6e 73 20 74 68 65 20 74 6f 6f 6c 2e 0a 0a 44 45 .symbol).that.runs.the.tool...DE
44280 53 43 52 49 50 54 49 4f 4e 3a 20 41 20 76 65 72 62 6f 73 65 20 64 65 73 63 72 69 70 74 69 6f 6e SCRIPTION:.A.verbose.description
442a0 20 6f 66 20 77 68 61 74 20 74 68 65 20 74 6f 6f 6c 20 64 6f 65 73 2c 20 68 6f 77 20 74 6f 0a 63 .of.what.the.tool.does,.how.to.c
442c0 61 6c 6c 20 69 74 20 61 6e 64 20 77 68 61 74 20 69 74 20 72 65 74 75 72 6e 73 2e 0a 0a 41 52 47 all.it.and.what.it.returns...ARG
442e0 53 3a 20 41 20 6c 69 73 74 20 6f 66 20 70 6c 69 73 74 73 20 73 70 65 63 69 66 79 69 6e 67 20 74 S:.A.list.of.plists.specifying.t
44300 68 65 20 61 72 67 75 6d 65 6e 74 73 2c 20 6f 72 20 6e 69 6c 20 66 6f 72 20 61 20 66 75 6e 63 74 he.arguments,.or.nil.for.a.funct
44320 69 6f 6e 20 74 68 61 74 0a 74 61 6b 65 73 20 6e 6f 20 61 72 67 75 6d 65 6e 74 73 2e 20 20 45 61 ion.that.takes.no.arguments...Ea
44340 63 68 20 70 6c 69 73 74 20 69 6e 20 41 52 47 53 20 72 65 71 75 69 72 65 73 20 74 68 65 20 66 6f ch.plist.in.ARGS.requires.the.fo
44360 6c 6c 6f 77 69 6e 67 20 6b 65 79 73 3a 0a 2d 20 61 72 67 75 6d 65 6e 74 20 3a 6e 61 6d 65 20 61 llowing.keys:.-.argument.:name.a
44380 6e 64 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 2c 20 61 73 20 73 74 72 69 6e 67 73 2e 0a 2d 20 61 nd.:description,.as.strings..-.a
443a0 72 67 75 6d 65 6e 74 20 3a 74 79 70 65 2c 20 61 73 20 61 20 73 79 6d 62 6f 6c 2e 20 20 41 6c 6c rgument.:type,.as.a.symbol...All
443c0 6f 77 65 64 20 74 79 70 65 73 20 61 72 65 20 74 68 6f 73 65 20 75 6e 64 65 72 73 74 6f 6f 64 20 owed.types.are.those.understood.
443e0 62 79 20 74 68 65 20 4a 53 4f 4e 0a 20 20 73 63 68 65 6d 61 3a 20 73 74 72 69 6e 67 2c 20 6e 75 by.the.JSON...schema:.string,.nu
44400 6d 62 65 72 2c 20 69 6e 74 65 67 65 72 2c 20 62 6f 6f 6c 65 61 6e 2c 20 61 72 72 61 79 2c 20 6f mber,.integer,.boolean,.array,.o
44420 62 6a 65 63 74 20 6f 72 20 6e 75 6c 6c 0a 0a 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 70 6c 69 bject.or.null..The.following.pli
44440 73 74 20 6b 65 79 73 20 61 72 65 20 63 6f 6e 64 69 74 69 6f 6e 61 6c 2f 6f 70 74 69 6f 6e 61 6c st.keys.are.conditional/optional
44460 3a 0a 2d 20 3a 6f 70 74 69 6f 6e 61 6c 2c 20 62 6f 6f 6c 65 61 6e 20 69 6e 64 69 63 61 74 69 6e :.-.:optional,.boolean.indicatin
44480 67 20 69 66 20 61 72 67 75 6d 65 6e 74 20 69 73 20 6f 70 74 69 6f 6e 61 6c 0a 2d 20 3a 65 6e 75 g.if.argument.is.optional.-.:enu
444a0 6d 20 66 6f 72 20 65 6e 75 6d 65 72 61 74 65 64 20 74 79 70 65 73 2c 20 77 68 6f 73 65 20 76 61 m.for.enumerated.types,.whose.va
444c0 6c 75 65 20 69 73 20 61 20 76 65 63 74 6f 72 20 6f 66 20 73 74 72 69 6e 67 73 20 72 65 70 72 65 lue.is.a.vector.of.strings.repre
444e0 73 65 6e 74 69 6e 67 0a 20 20 61 6c 6c 6f 77 65 64 20 76 61 6c 75 65 73 2e 20 20 4e 6f 74 65 20 senting...allowed.values...Note.
44500 74 68 61 74 20 3a 74 79 70 65 20 69 73 20 73 74 69 6c 6c 20 72 65 71 75 69 72 65 64 20 66 6f 72 that.:type.is.still.required.for
44520 20 65 6e 75 6d 73 2e 0a 2d 20 3a 69 74 65 6d 73 2c 20 69 66 20 74 68 65 20 3a 74 79 70 65 20 69 .enums..-.:items,.if.the.:type.i
44540 73 20 61 72 72 61 79 2e 20 20 49 74 73 20 76 61 6c 75 65 20 6d 75 73 74 20 62 65 20 61 20 70 6c s.array...Its.value.must.be.a.pl
44560 69 73 74 20 69 6e 63 6c 75 64 69 6e 67 20 61 74 20 6c 65 61 73 74 0a 20 20 74 68 65 20 69 74 65 ist.including.at.least...the.ite
44580 6d 27 73 20 3a 74 79 70 65 2e 0a 2d 20 3a 70 72 6f 70 65 72 74 69 65 73 2c 20 69 66 20 74 68 65 m's.:type..-.:properties,.if.the
445a0 20 74 79 70 65 20 69 73 20 6f 62 6a 65 63 74 2e 20 20 49 74 73 20 76 61 6c 75 65 20 6d 75 73 74 .type.is.object...Its.value.must
445c0 20 62 65 20 61 20 70 6c 69 73 74 20 74 68 61 74 20 63 61 6e 20 62 65 0a 20 20 73 65 72 69 61 6c .be.a.plist.that.can.be...serial
445e0 69 7a 65 64 20 69 6e 74 6f 20 61 20 4a 53 4f 4e 20 6f 62 6a 65 63 74 20 73 70 65 63 69 66 69 63 ized.into.a.JSON.object.specific
44600 61 74 69 6f 6e 20 62 79 20 60 6a 73 6f 6e 2d 73 65 72 69 61 6c 69 7a 65 27 2e 0a 0a 41 53 59 4e ation.by.`json-serialize'...ASYN
44620 43 3a 20 62 6f 6f 6c 65 61 6e 20 69 6e 64 69 63 61 74 69 6e 67 20 69 66 20 74 68 65 20 65 6c 69 C:.boolean.indicating.if.the.eli
44640 73 70 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 2e 0a 49 66 20 sp.function.is.asynchronous..If.
44660 41 53 59 4e 43 20 69 73 20 74 2c 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 73 68 6f 75 6c 64 20 ASYNC.is.t,.the.function.should.
44680 74 61 6b 65 20 61 20 63 61 6c 6c 62 61 63 6b 20 61 73 20 69 74 73 20 66 69 72 73 74 0a 61 72 67 take.a.callback.as.its.first.arg
446a0 75 6d 65 6e 74 2c 20 61 6c 6f 6e 67 20 77 69 74 68 20 74 68 65 20 61 72 67 75 6d 65 6e 74 73 20 ument,.along.with.the.arguments.
446c0 73 70 65 63 69 66 69 65 64 20 69 6e 20 41 52 47 53 2c 20 61 6e 64 20 72 75 6e 20 74 68 65 0a 63 specified.in.ARGS,.and.run.the.c
446e0 61 6c 6c 62 61 63 6b 20 77 69 74 68 20 74 68 65 20 74 6f 6f 6c 20 63 61 6c 6c 20 72 65 73 75 6c allback.with.the.tool.call.resul
44700 74 20 77 68 65 6e 20 69 74 27 73 20 72 65 61 64 79 2e 20 20 54 68 65 20 63 61 6c 6c 62 61 63 6b t.when.it's.ready...The.callback
44720 0a 69 74 73 65 6c 66 20 69 73 20 61 6e 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 64 65 74 .itself.is.an.implementation.det
44740 61 69 6c 20 61 6e 64 20 6d 75 73 74 20 6e 6f 74 20 62 65 20 69 6e 63 6c 75 64 65 64 20 69 6e 0a ail.and.must.not.be.included.in.
44760 41 52 47 53 2e 0a 0a 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 6b 65 79 73 20 61 72 65 20 6f 70 ARGS...The.following.keys.are.op
44780 74 69 6f 6e 61 6c 0a 0a 43 41 54 45 47 4f 52 59 3a 20 41 20 73 74 72 69 6e 67 20 69 6e 64 69 63 tional..CATEGORY:.A.string.indic
447a0 61 74 69 6e 67 20 61 20 63 61 74 65 67 6f 72 79 20 66 6f 72 20 74 68 65 20 74 6f 6f 6c 2e 20 20 ating.a.category.for.the.tool...
447c0 54 68 69 73 20 69 73 0a 75 73 65 64 20 6f 6e 6c 79 20 66 6f 72 20 67 72 6f 75 70 69 6e 67 20 69 This.is.used.only.for.grouping.i
447e0 6e 20 67 70 74 65 6c 27 73 20 55 49 2e 20 20 44 65 66 61 75 6c 74 73 20 74 6f 20 5c 22 6d 69 73 n.gptel's.UI...Defaults.to.\"mis
44800 63 5c 22 2e 0a 0a 43 4f 4e 46 49 52 4d 3a 20 57 68 65 74 68 65 72 20 74 68 65 20 74 6f 6f 6c 20 c\"...CONFIRM:.Whether.the.tool.
44820 63 61 6c 6c 20 73 68 6f 75 6c 64 20 77 61 69 74 20 66 6f 72 20 74 68 65 20 75 73 65 72 20 74 6f call.should.wait.for.the.user.to
44840 20 72 75 6e 0a 69 74 2e 20 20 49 66 20 74 72 75 65 2c 20 74 68 65 20 75 73 65 72 20 77 69 6c 6c .run.it...If.true,.the.user.will
44860 20 62 65 20 70 72 6f 6d 70 74 65 64 20 77 69 74 68 20 74 68 65 20 70 72 6f 70 6f 73 65 64 20 74 .be.prompted.with.the.proposed.t
44880 6f 6f 6c 0a 63 61 6c 6c 2c 20 77 68 69 63 68 20 63 61 6e 20 62 65 20 65 78 61 6d 69 6e 65 64 2c ool.call,.which.can.be.examined,
448a0 20 61 63 63 65 70 74 65 64 2c 20 64 65 66 65 72 72 65 64 20 6f 72 20 63 61 6e 63 65 6c 65 64 2e .accepted,.deferred.or.canceled.
448c0 0a 0a 49 4e 43 4c 55 44 45 3a 20 57 68 65 74 68 65 72 20 74 68 65 20 74 6f 6f 6c 20 72 65 73 75 ..INCLUDE:.Whether.the.tool.resu
448e0 6c 74 73 20 73 68 6f 75 6c 64 20 62 65 20 69 6e 63 6c 75 64 65 64 20 61 73 20 70 61 72 74 20 6f lts.should.be.included.as.part.o
44900 66 0a 74 68 65 20 4c 4c 4d 20 6f 75 74 70 75 74 2e 20 20 54 68 69 73 20 69 73 20 75 73 65 66 75 f.the.LLM.output...This.is.usefu
44920 6c 20 66 6f 72 20 6c 6f 67 67 69 6e 67 20 61 6e 64 20 61 73 20 63 6f 6e 74 65 78 74 20 66 6f 72 l.for.logging.and.as.context.for
44940 0a 73 75 62 73 65 71 75 65 6e 74 20 72 65 71 75 65 73 74 73 20 69 6e 20 74 68 65 20 73 61 6d 65 .subsequent.requests.in.the.same
44960 20 62 75 66 66 65 72 2e 20 20 54 68 69 73 20 69 73 20 70 72 69 6d 61 72 69 6c 79 20 75 73 65 66 .buffer...This.is.primarily.usef
44980 75 6c 0a 69 6e 20 63 68 61 74 20 62 75 66 66 65 72 73 2e 0a 0a 48 65 72 65 20 69 73 20 61 6e 20 ul.in.chat.buffers...Here.is.an.
449a0 65 78 61 6d 70 6c 65 20 64 65 66 69 6e 69 74 69 6f 6e 3a 0a 0a 20 20 28 67 70 74 65 6c 2d 6d 61 example.definition:....(gptel-ma
449c0 6b 65 2d 74 6f 6f 6c 0a 20 20 20 3a 66 75 6e 63 74 69 6f 6e 20 28 6c 61 6d 62 64 61 20 28 6c 6f ke-tool....:function.(lambda.(lo
449e0 63 61 74 69 6f 6e 20 75 6e 69 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 72 cation.unit).................(ur
44a00 6c 2d 72 65 74 72 69 65 76 65 2d 73 79 6e 63 68 72 6f 6e 6f 75 73 6c 79 20 5c 22 61 70 69 2e 77 l-retrieve-synchronously.\"api.w
44a20 65 61 74 68 65 72 2e 63 6f 6d 2f 2e 2e 2e 5c 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 eather.com/...\"................
44a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 .............................loc
44a60 61 74 69 6f 6e 20 75 6e 69 74 29 29 0a 20 20 20 3a 6e 61 6d 65 20 5c 22 67 65 74 5f 77 65 61 74 ation.unit))....:name.\"get_weat
44a80 68 65 72 5c 22 0a 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 5c 22 47 65 74 20 74 68 65 20 her\"....:description.\"Get.the.
44aa0 63 75 72 72 65 6e 74 20 77 65 61 74 68 65 72 20 69 6e 20 61 20 67 69 76 65 6e 20 6c 6f 63 61 74 current.weather.in.a.given.locat
44ac0 69 6f 6e 5c 22 0a 20 20 20 3a 61 72 67 73 20 28 6c 69 73 74 20 5c 5c 3d 27 28 3a 6e 61 6d 65 20 ion\"....:args.(list.\\='(:name.
44ae0 5c 22 6c 6f 63 61 74 69 6f 6e 5c 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 74 \"location\"..................:t
44b00 79 70 65 20 73 74 72 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 64 65 73 ype.string..................:des
44b20 63 72 69 70 74 69 6f 6e 20 5c 22 54 68 65 20 63 69 74 79 20 61 6e 64 20 73 74 61 74 65 2c 20 65 cription.\"The.city.and.state,.e
44b40 2e 67 2e 20 53 61 6e 20 46 72 61 6e 63 69 73 63 6f 2c 20 43 41 5c 22 29 0a 20 20 20 20 20 20 20 .g..San.Francisco,.CA\")........
44b60 20 20 20 20 20 20 20 20 5c 5c 3d 27 28 3a 6e 61 6d 65 20 5c 22 75 6e 69 74 5c 22 0a 20 20 20 20 ........\\='(:name.\"unit\".....
44b80 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 74 79 70 65 20 73 74 72 69 6e 67 0a 20 20 20 20 20 20 .............:type.string.......
44ba0 20 20 20 20 20 20 20 20 20 20 20 3a 65 6e 75 6d 20 5b 5c 22 63 65 6c 73 69 75 73 5c 22 20 5c 22 ...........:enum.[\"celsius\".\"
44bc0 66 61 72 65 6e 68 65 69 74 5c 22 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 64 farenheit\"]..................:d
44be0 65 73 63 72 69 70 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5c 22 54 68 escription..................\"Th
44c00 65 20 75 6e 69 74 20 6f 66 20 74 65 6d 70 65 72 61 74 75 72 65 2c 20 65 69 74 68 65 72 20 5c 5c e.unit.of.temperature,.either.\\
44c20 3d 27 63 65 6c 73 69 75 73 5c 5c 3d 27 20 6f 72 20 5c 5c 3d 27 66 61 68 72 65 6e 68 65 69 74 5c ='celsius\\='.or.\\='fahrenheit\
44c40 5c 3d 27 5c 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6f 70 74 69 6f 6e 61 6c \='\"..................:optional
44c60 20 74 29 29 29 0a 0a 49 66 20 74 68 65 20 74 6f 6f 6c 20 69 73 20 61 73 79 6e 63 68 72 6f 6e 6f .t)))..If.the.tool.is.asynchrono
44c80 75 73 2c 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 us,.the.function.is.modified.to.
44ca0 74 61 6b 65 20 61 0a 63 61 6c 6c 62 61 63 6b 20 61 73 20 69 74 73 20 66 69 72 73 74 20 61 72 67 take.a.callback.as.its.first.arg
44cc0 75 6d 65 6e 74 2c 20 77 68 69 63 68 20 69 74 20 72 75 6e 73 20 77 69 74 68 20 74 68 65 20 72 65 ument,.which.it.runs.with.the.re
44ce0 73 75 6c 74 3a 0a 0a 20 20 20 28 6c 61 6d 62 64 61 20 28 63 61 6c 6c 62 61 63 6b 20 6c 6f 63 61 sult:.....(lambda.(callback.loca
44d00 74 69 6f 6e 20 75 6e 69 74 29 0a 20 20 20 20 20 28 75 72 6c 2d 72 65 74 72 69 65 76 65 20 5c 22 tion.unit)......(url-retrieve.\"
44d20 61 70 69 2e 77 65 61 74 68 65 72 2e 63 6f 6d 2f 2e 2e 2e 5c 22 0a 20 20 20 20 20 20 20 20 20 20 api.weather.com/...\"...........
44d40 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 5f 29 0a 20 20 20 20 20 20 20 20 20 20 20 .........(lambda.(_)............
44d60 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 72 65 73 75 6c 74 20 28 70 61 72 73 65 2d 74 ..........(let.((result.(parse-t
44d80 68 69 73 2d 62 75 66 66 65 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 his-buffer)))...................
44da0 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 63 61 6c 6c 62 61 63 6b 20 72 65 73 75 6c 74 29 29 29 .....(funcall.callback.result)))
44dc0 29 29 22 0a 20 20 28 6c 65 74 2a 20 28 28 74 6f 6f 6c 20 28 61 70 70 6c 79 20 23 27 67 70 74 65 ))"...(let*.((tool.(apply.#'gpte
44de0 6c 2d 2d 6d 61 6b 65 2d 74 6f 6f 6c 20 73 6c 6f 74 73 29 29 0a 20 20 20 20 20 20 20 20 20 28 63 l--make-tool.slots))..........(c
44e00 61 74 65 67 6f 72 79 20 28 6f 72 20 28 67 70 74 65 6c 2d 74 6f 6f 6c 2d 63 61 74 65 67 6f 72 79 ategory.(or.(gptel-tool-category
44e20 20 74 6f 6f 6c 29 20 22 6d 69 73 63 22 29 29 29 0a 20 20 20 20 28 73 65 74 66 20 28 61 6c 69 73 .tool)."misc"))).....(setf.(alis
44e40 74 2d 67 65 74 0a 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 74 6f 6f 6c 2d 6e 61 6d t-get............(gptel-tool-nam
44e60 65 20 74 6f 6f 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 61 6c 69 73 74 2d 67 65 74 20 63 61 e.tool)............(alist-get.ca
44e80 74 65 67 6f 72 79 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 74 6f 6f 6c 73 20 6e 69 6c 20 6e 69 tegory.gptel--known-tools.nil.ni
44ea0 6c 20 23 27 65 71 75 61 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 6e 69 6c 20 6e 69 6c 20 23 27 l.#'equal)............nil.nil.#'
44ec0 65 71 75 61 6c 29 0a 20 20 20 20 20 20 20 20 20 20 74 6f 6f 6c 29 29 29 0a 0a 28 63 6c 2d 64 65 equal)...........tool)))..(cl-de
44ee0 66 67 65 6e 65 72 69 63 20 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 74 6f 6f 6c 73 20 28 5f 62 61 fgeneric.gptel--parse-tools.(_ba
44f00 63 6b 65 6e 64 20 74 6f 6f 6c 73 29 0a 20 20 22 50 61 72 73 65 20 54 4f 4f 4c 53 20 61 6e 64 20 ckend.tools)..."Parse.TOOLS.and.
44f20 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 54 4f 4f 4c 53 return.a.list.of.prompts...TOOLS
44f40 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 60 67 70 74 65 6c 2d 74 6f 6f 6c 27 20 73 74 72 75 63 .is.a.list.of.`gptel-tool'.struc
44f60 74 73 2c 20 77 68 69 63 68 20 73 65 65 2e 0a 0a 5f 42 41 43 4b 45 4e 44 20 69 73 20 74 68 65 20 ts,.which.see..._BACKEND.is.the.
44f80 4c 4c 4d 20 62 61 63 6b 65 6e 64 20 69 6e 20 75 73 65 2e 20 20 54 68 69 73 20 69 73 20 74 68 65 LLM.backend.in.use...This.is.the
44fa0 20 64 65 66 61 75 6c 74 0a 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2c 20 75 73 65 64 20 62 79 .default.implementation,.used.by
44fc0 20 4f 70 65 6e 41 49 2d 63 6f 6d 70 61 74 69 62 6c 65 20 41 50 49 73 20 61 6e 64 20 4f 6c 6c 61 .OpenAI-compatible.APIs.and.Olla
44fe0 6d 61 2e 22 0a 20 20 28 76 63 6f 6e 63 61 74 0a 20 20 20 28 6d 61 70 63 61 72 0a 20 20 20 20 28 ma."...(vconcat....(mapcar.....(
45000 6c 61 6d 62 64 61 20 28 74 6f 6f 6c 29 0a 20 20 20 20 20 20 28 6c 69 73 74 0a 20 20 20 20 20 20 lambda.(tool).......(list.......
45020 20 3a 74 79 70 65 20 22 66 75 6e 63 74 69 6f 6e 22 0a 20 20 20 20 20 20 20 3a 66 75 6e 63 74 69 .:type."function"........:functi
45040 6f 6e 0a 20 20 20 20 20 20 20 28 61 70 70 65 6e 64 0a 20 20 20 20 20 20 20 20 28 6c 69 73 74 0a on........(append.........(list.
45060 20 20 20 20 20 20 20 20 20 3a 6e 61 6d 65 20 28 67 70 74 65 6c 2d 74 6f 6f 6c 2d 6e 61 6d 65 20 .........:name.(gptel-tool-name.
45080 74 6f 6f 6c 29 0a 20 20 20 20 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 28 67 70 74 tool)..........:description.(gpt
450a0 65 6c 2d 74 6f 6f 6c 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 74 6f 6f 6c 29 29 0a 20 20 20 20 20 el-tool-description.tool))......
450c0 20 20 20 28 69 66 20 28 67 70 74 65 6c 2d 74 6f 6f 6c 2d 61 72 67 73 20 74 6f 6f 6c 29 0a 20 20 ...(if.(gptel-tool-args.tool)...
450e0 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 3a ...........(list...............:
45100 70 61 72 61 6d 65 74 65 72 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 3a parameters...............(list.:
45120 74 79 70 65 20 22 6f 62 6a 65 63 74 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 type."object"...................
45140 20 20 3b 3b 20 67 70 74 65 6c 27 73 20 74 6f 6f 6c 20 61 72 67 73 20 73 70 65 63 20 69 73 20 63 ..;;.gptel's.tool.args.spec.is.c
45160 6c 6f 73 65 20 74 6f 20 74 68 65 20 4a 53 4f 4e 20 73 63 68 65 6d 61 2c 20 65 78 63 65 70 74 0a lose.to.the.JSON.schema,.except.
45180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 74 68 61 74 20 77 65 20 75 ....................;;.that.we.u
451a0 73 65 20 28 3a 6e 61 6d 65 20 22 61 72 67 6e 61 6d 65 22 20 2e 2e 2e 29 0a 20 20 20 20 20 20 20 se.(:name."argname"....)........
451c0 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 69 6e 73 74 65 61 64 20 6f 66 20 20 28 3a 61 72 .............;;.instead.of..(:ar
451e0 67 6e 61 6d 65 20 28 2e 2e 2e 29 29 2c 20 61 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 gname.(...)),.and...............
45200 20 20 20 20 20 20 3b 3b 20 28 3a 6f 70 74 69 6f 6e 61 6c 20 74 29 20 66 6f 72 20 65 61 63 68 20 ......;;.(:optional.t).for.each.
45220 61 72 67 20 69 6e 73 74 65 61 64 20 6f 66 20 28 3a 72 65 71 75 69 72 65 64 20 5b 2e 2e 2e 5d 29 arg.instead.of.(:required.[...])
45240 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 66 6f 72 20 61 6c 6c 20 .....................;;.for.all.
45260 61 72 67 73 20 61 74 20 6f 6e 63 65 2e 20 20 48 61 6e 64 6c 65 20 74 68 69 73 20 64 69 66 66 65 args.at.once...Handle.this.diffe
45280 72 65 6e 63 65 20 62 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 rence.by.....................;;.
452a0 6d 6f 64 69 66 79 69 6e 67 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20 67 70 74 65 6c 20 74 6f modifying.a.copy.of.the.gptel.to
452c0 6f 6c 20 61 72 67 20 73 70 65 63 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ol.arg.spec.....................
452e0 20 3a 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 .:properties....................
45300 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 20 20 20 20 20 66 .(cl-loop......................f
45320 6f 72 20 61 72 67 20 69 6e 20 28 67 70 74 65 6c 2d 74 6f 6f 6c 2d 61 72 67 73 20 74 6f 6f 6c 29 or.arg.in.(gptel-tool-args.tool)
45340 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 61 72 67 73 70 65 ......................for.argspe
45360 63 20 3d 20 28 63 6f 70 79 2d 73 65 71 75 65 6e 63 65 20 61 72 67 29 0a 20 20 20 20 20 20 20 20 c.=.(copy-sequence.arg).........
45380 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 6e 61 6d 65 20 3d 20 28 70 6c 69 73 74 2d 67 .............for.name.=.(plist-g
453a0 65 74 20 61 72 67 20 3a 6e 61 6d 65 29 20 3b 68 61 6e 64 6c 65 64 20 64 69 66 66 65 72 65 6e 74 et.arg.:name).;handled.different
453c0 6c 79 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 6e 65 77 6e ly......................for.newn
453e0 61 6d 65 20 3d 20 28 6f 72 20 28 61 6e 64 20 28 6b 65 79 77 6f 72 64 70 20 6e 61 6d 65 29 20 6e ame.=.(or.(and.(keywordp.name).n
45400 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)............................
45420 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 6b 65 2d 73 79 6d 62 6f 6c 20 28 63 6f 6e 63 61 74 ............(make-symbol.(concat
45440 20 22 3a 22 20 6e 61 6d 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .":".name)))....................
45460 20 20 64 6f 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 41 52 47 53 50 45 43 20 69 73 20 ..do................;ARGSPEC.is.
45480 41 52 47 20 77 69 74 68 6f 75 74 20 75 6e 72 65 63 6f 67 6e 69 7a 65 64 20 6b 65 79 73 0a 20 20 ARG.without.unrecognized.keys...
454a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 72 65 6d 66 20 61 72 67 73 ...................(cl-remf.args
454c0 70 65 63 20 3a 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 20 20 pec.:name)......................
454e0 28 63 6c 2d 72 65 6d 66 20 61 72 67 73 70 65 63 20 3a 6f 70 74 69 6f 6e 61 6c 29 0a 20 20 20 20 (cl-remf.argspec.:optional).....
45500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65 71 75 61 6c 20 28 70 6c 69 73 .................if.(equal.(plis
45520 74 2d 67 65 74 20 61 72 67 20 3a 74 79 70 65 29 20 22 6f 62 6a 65 63 74 22 29 0a 20 20 20 20 20 t-get.arg.:type)."object")......
45540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 20 28 75 6e 6c 65 73 73 20 28 70 6c 69 73 ................do.(unless.(plis
45560 74 2d 6d 65 6d 62 65 72 20 61 72 67 73 70 65 63 20 3a 72 65 71 75 69 72 65 64 29 0a 20 20 20 20 t-member.argspec.:required).....
45580 20 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 ......................(plist-put
455a0 20 61 72 67 73 70 65 63 20 3a 72 65 71 75 69 72 65 64 20 5b 5d 29 29 0a 20 20 20 20 20 20 20 20 .argspec.:required.[])).........
455c0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 61 72 67 73 70 65 63 20 .............(plist-put.argspec.
455e0 3a 61 64 64 69 74 69 6f 6e 61 6c 50 72 6f 70 65 72 74 69 65 73 20 3a 6a 73 6f 6e 2d 66 61 6c 73 :additionalProperties.:json-fals
45600 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 70 70 65 6e 64 20 28 e)......................append.(
45620 6c 69 73 74 20 6e 65 77 6e 61 6d 65 20 61 72 67 73 70 65 63 29 29 0a 20 20 20 20 20 20 20 20 20 list.newname.argspec))..........
45640 20 20 20 20 20 20 20 20 20 20 20 3a 72 65 71 75 69 72 65 64 0a 20 20 20 20 20 20 20 20 20 20 20 ...........:required............
45660 20 20 20 20 20 20 20 20 20 28 76 63 6f 6e 63 61 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .........(vconcat...............
45680 20 20 20 20 20 20 20 28 64 65 6c 71 20 6e 69 6c 20 28 6d 61 70 63 61 72 0a 20 20 20 20 20 20 20 .......(delq.nil.(mapcar........
456a0 20 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
456c0 20 28 61 72 67 29 20 28 61 6e 64 20 28 6e 6f 74 20 28 70 6c 69 73 74 2d 67 65 74 20 61 72 67 20 .(arg).(and.(not.(plist-get.arg.
456e0 3a 6f 70 74 69 6f 6e 61 6c 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :optional)).....................
45700 20 20 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 6c 69 73 74 ..........................(plist
45720 2d 67 65 74 20 61 72 67 20 3a 6e 61 6d 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -get.arg.:name)))...............
45740 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 74 6f 6f 6c 2d 61 72 ..................(gptel-tool-ar
45760 67 73 20 74 6f 6f 6c 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 gs.tool)))).....................
45780 3a 61 64 64 69 74 69 6f 6e 61 6c 50 72 6f 70 65 72 74 69 65 73 20 3a 6a 73 6f 6e 2d 66 61 6c 73 :additionalProperties.:json-fals
457a0 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 3a 70 61 72 61 6d 65 74 65 72 73 20 e))...........(list.:parameters.
457c0 28 6c 69 73 74 20 3a 74 79 70 65 20 22 6f 62 6a 65 63 74 22 20 3a 70 72 6f 70 65 72 74 69 65 73 (list.:type."object".:properties
457e0 20 6e 69 6c 29 29 29 29 29 29 0a 20 20 20 20 28 65 6e 73 75 72 65 2d 6c 69 73 74 20 74 6f 6f 6c .nil)))))).....(ensure-list.tool
45800 73 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 2d 70 61 72 s))))..(cl-defgeneric.gptel--par
45820 73 65 2d 74 6f 6f 6c 2d 72 65 73 75 6c 74 73 20 28 62 61 63 6b 65 6e 64 20 72 65 73 75 6c 74 73 se-tool-results.(backend.results
45840 29 0a 20 20 22 52 65 74 75 72 6e 20 61 20 42 41 43 4b 45 4e 44 2d 61 70 70 72 6f 70 72 69 61 74 )..."Return.a.BACKEND-appropriat
45860 65 20 70 72 6f 6d 70 74 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 6f 6f 6c 20 63 61 6c 6c 20 52 45 e.prompt.containing.tool.call.RE
45880 53 55 4c 54 53 2e 0a 0a 54 68 69 73 20 77 69 6c 6c 20 62 65 20 69 6e 6a 65 63 74 65 64 20 69 6e SULTS...This.will.be.injected.in
458a0 74 6f 20 74 68 65 20 6d 65 73 73 61 67 65 73 20 6c 69 73 74 20 69 6e 20 74 68 65 20 70 72 6f 6d to.the.messages.list.in.the.prom
458c0 70 74 20 74 6f 0a 73 65 6e 64 20 74 6f 20 74 68 65 20 4c 4c 4d 2e 22 29 0a 0a 3b 3b 20 46 49 58 pt.to.send.to.the.LLM.")..;;.FIX
458e0 4d 45 28 66 73 6d 29 20 75 6e 69 66 79 20 74 68 69 73 20 77 69 74 68 20 60 67 70 74 65 6c 2d 2d ME(fsm).unify.this.with.`gptel--
45900 77 72 61 70 2d 75 73 65 72 2d 70 72 6f 6d 70 74 27 2c 20 77 68 69 63 68 20 69 73 20 61 20 6d 65 wrap-user-prompt',.which.is.a.me
45920 73 73 0a 28 63 6c 2d 64 65 66 67 65 6e 65 72 69 63 20 67 70 74 65 6c 2d 2d 69 6e 6a 65 63 74 2d ss.(cl-defgeneric.gptel--inject-
45940 70 72 6f 6d 70 74 0a 20 20 28 5f 62 61 63 6b 65 6e 64 20 64 61 74 61 20 6e 65 77 2d 70 72 6f 6d prompt...(_backend.data.new-prom
45960 70 74 20 26 6f 70 74 69 6f 6e 61 6c 20 5f 70 6f 73 69 74 69 6f 6e 29 0a 20 20 22 41 70 70 65 6e pt.&optional._position)..."Appen
45980 64 20 4e 45 57 2d 50 52 4f 4d 50 54 20 74 6f 20 65 78 69 73 74 69 6e 67 20 70 72 6f 6d 70 74 73 d.NEW-PROMPT.to.existing.prompts
459a0 20 69 6e 20 71 75 65 72 79 20 44 41 54 41 2e 0a 0a 4e 45 57 2d 50 52 4f 4d 50 54 20 63 61 6e 20 .in.query.DATA...NEW-PROMPT.can.
459c0 62 65 20 61 20 73 69 6e 67 6c 65 20 6d 65 73 73 61 67 65 20 6f 72 20 61 20 6c 69 73 74 20 6f 66 be.a.single.message.or.a.list.of
459e0 20 6d 65 73 73 61 67 65 73 2e 0a 0a 4e 6f 74 20 69 6d 70 6c 65 6d 65 6e 74 65 64 3a 20 69 66 20 .messages...Not.implemented:.if.
45a00 50 4f 53 49 54 49 4f 4e 20 69 73 0a 2d 20 61 20 6e 6f 6e 2d 6e 65 67 61 74 69 76 65 20 6e 75 6d POSITION.is.-.a.non-negative.num
45a20 62 65 72 2c 20 69 6e 73 65 72 74 20 69 74 20 61 74 20 74 68 61 74 20 70 6f 73 69 74 69 6f 6e 20 ber,.insert.it.at.that.position.
45a40 69 6e 20 50 52 4f 4d 50 54 53 2e 0a 2d 20 61 20 6e 65 67 61 74 69 76 65 20 6e 75 6d 62 65 72 2c in.PROMPTS..-.a.negative.number,
45a60 20 69 6e 73 65 72 74 20 69 74 20 74 68 65 72 65 20 63 6f 75 6e 74 69 6e 67 20 66 72 6f 6d 20 74 .insert.it.there.counting.from.t
45a80 68 65 20 65 6e 64 2e 0a 0a 54 68 69 73 20 67 65 6e 65 72 69 63 20 69 6d 70 6c 65 6d 65 6e 74 61 he.end...This.generic.implementa
45aa0 74 69 6f 6e 20 68 61 6e 64 6c 65 73 20 74 68 65 20 41 6e 74 68 72 6f 70 69 63 2c 0a 4f 70 65 6e tion.handles.the.Anthropic,.Open
45ac0 41 49 2d 63 6f 6d 70 61 74 69 62 6c 65 20 61 6e 64 20 4f 6c 6c 61 6d 61 20 6d 65 73 73 61 67 65 AI-compatible.and.Ollama.message
45ae0 20 66 6f 72 6d 61 74 73 2e 22 0a 20 20 3b 3b 20 3b 54 4f 44 4f 28 66 73 6d 29 3a 20 69 6d 70 6c .formats."...;;.;TODO(fsm):.impl
45b00 65 6d 65 6e 74 20 5f 50 4f 53 49 54 49 4f 4e 0a 20 20 28 77 68 65 6e 20 28 6b 65 79 77 6f 72 64 ement._POSITION...(when.(keyword
45b20 70 20 28 63 61 72 2d 73 61 66 65 20 6e 65 77 2d 70 72 6f 6d 70 74 29 29 20 3b 49 73 20 6e 65 77 p.(car-safe.new-prompt)).;Is.new
45b40 2d 70 72 6f 6d 70 74 20 6f 6e 65 20 6f 72 20 6d 61 6e 79 3f 0a 20 20 20 20 28 73 65 74 71 20 6e -prompt.one.or.many?.....(setq.n
45b60 65 77 2d 70 72 6f 6d 70 74 20 28 6c 69 73 74 20 6e 65 77 2d 70 72 6f 6d 70 74 29 29 29 0a 20 20 ew-prompt.(list.new-prompt)))...
45b80 28 6c 65 74 20 28 28 70 72 6f 6d 70 74 73 20 28 70 6c 69 73 74 2d 67 65 74 20 64 61 74 61 20 3a (let.((prompts.(plist-get.data.:
45ba0 6d 65 73 73 61 67 65 73 29 29 29 0a 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 64 61 74 61 20 messages))).....(plist-put.data.
45bc0 3a 6d 65 73 73 61 67 65 73 20 28 76 63 6f 6e 63 61 74 20 70 72 6f 6d 70 74 73 20 6e 65 77 2d 70 :messages.(vconcat.prompts.new-p
45be0 72 6f 6d 70 74 29 29 29 29 0a 0a 0c 0a 3b 3b 3b 20 53 74 61 74 65 20 6d 61 63 68 69 6e 65 20 66 rompt))))....;;;.State.machine.f
45c00 6f 72 20 64 72 69 76 69 6e 67 20 72 65 71 75 65 73 74 73 0a 0a 28 64 65 66 76 61 72 20 67 70 74 or.driving.requests..(defvar.gpt
45c20 65 6c 2d 72 65 71 75 65 73 74 2d 2d 74 72 61 6e 73 69 74 69 6f 6e 73 0a 20 20 60 28 28 49 4e 49 el-request--transitions...`((INI
45c40 54 20 2e 20 28 28 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 20 T...((t.........................
45c60 57 41 49 54 29 29 29 0a 20 20 20 20 28 57 41 49 54 20 2e 20 28 28 74 20 20 20 20 20 20 20 20 20 WAIT))).....(WAIT...((t.........
45c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 20 54 59 50 45 29 29 29 0a 20 20 20 20 28 54 59 50 ................TYPE))).....(TYP
45ca0 45 20 2e 20 28 28 2c 23 27 67 70 74 65 6c 2d 2d 65 72 72 6f 72 2d 70 20 20 20 20 20 20 20 2e 20 E...((,#'gptel--error-p.........
45cc0 45 52 52 53 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 2c 23 27 67 70 74 65 6c 2d 2d 74 6f ERRS)..............(,#'gptel--to
45ce0 6f 6c 2d 75 73 65 2d 70 20 20 20 20 2e 20 54 4f 4f 4c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 ol-use-p......TOOL).............
45d00 20 28 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 20 44 4f 4e 45 .(t.........................DONE
45d20 29 29 29 0a 20 20 20 20 28 54 4f 4f 4c 20 2e 20 28 28 2c 23 27 67 70 74 65 6c 2d 2d 65 72 72 6f ))).....(TOOL...((,#'gptel--erro
45d40 72 2d 70 20 20 20 20 20 20 20 2e 20 45 52 52 53 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 r-p.........ERRS)..............(
45d60 2c 23 27 67 70 74 65 6c 2d 2d 74 6f 6f 6c 2d 72 65 73 75 6c 74 2d 70 20 2e 20 57 41 49 54 29 0a ,#'gptel--tool-result-p...WAIT).
45d80 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .............(t.................
45da0 20 20 20 20 20 20 2e 20 44 4f 4e 45 29 29 29 29 0a 20 20 22 41 6c 69 73 74 20 73 70 65 63 69 66 ........DONE))))..."Alist.specif
45dc0 79 69 6e 67 20 67 70 74 65 6c 27 73 20 64 65 66 61 75 6c 74 20 73 74 61 74 65 20 74 72 61 6e 73 ying.gptel's.default.state.trans
45de0 69 74 69 6f 6e 20 74 61 62 6c 65 20 66 6f 72 20 72 65 71 75 65 73 74 73 2e 0a 0a 45 61 63 68 20 ition.table.for.requests...Each.
45e00 65 6e 74 72 79 20 69 73 20 61 20 6c 69 73 74 20 77 68 6f 73 65 20 63 61 72 20 69 73 20 61 20 72 entry.is.a.list.whose.car.is.a.r
45e20 65 71 75 65 73 74 20 73 74 61 74 65 20 28 61 6e 79 20 73 79 6d 62 6f 6c 29 0a 61 6e 64 20 77 68 equest.state.(any.symbol).and.wh
45e40 6f 73 65 20 63 64 72 20 69 73 20 61 6e 20 61 6c 69 73 74 20 6c 69 73 74 69 6e 67 20 70 6f 73 73 ose.cdr.is.an.alist.listing.poss
45e60 69 62 6c 65 20 6e 65 78 74 20 73 74 61 74 65 73 2e 20 20 45 61 63 68 20 6b 65 79 0a 69 73 20 65 ible.next.states...Each.key.is.e
45e80 69 74 68 65 72 20 61 20 70 72 65 64 69 63 61 74 65 20 66 75 6e 63 74 69 6f 6e 20 6f 72 20 60 74 ither.a.predicate.function.or.`t
45ea0 27 2e 20 20 57 68 65 6e 20 60 67 70 74 65 6c 2d 2d 66 73 6d 2d 6e 65 78 74 27 20 69 73 0a 63 61 '...When.`gptel--fsm-next'.is.ca
45ec0 6c 6c 65 64 2c 20 74 68 65 20 70 72 65 64 69 63 61 74 65 73 20 61 72 65 20 63 61 6c 6c 65 64 20 lled,.the.predicates.are.called.
45ee0 69 6e 20 74 68 65 20 6f 72 64 65 72 20 74 68 65 79 20 61 70 70 65 61 72 20 68 65 72 65 0a 74 6f in.the.order.they.appear.here.to
45f00 20 66 69 6e 64 20 74 68 65 20 6e 65 78 74 20 73 74 61 74 65 2e 20 20 45 61 63 68 20 70 72 65 64 .find.the.next.state...Each.pred
45f20 69 63 61 74 65 20 69 73 20 63 61 6c 6c 65 64 20 77 69 74 68 20 74 68 65 20 73 74 61 74 65 0a 6d icate.is.called.with.the.state.m
45f40 61 63 68 69 6e 65 27 73 20 49 4e 46 4f 2c 20 73 65 65 20 60 67 70 74 65 6c 2d 66 73 6d 27 2e 20 achine's.INFO,.see.`gptel-fsm'..
45f60 20 41 20 70 72 65 64 69 63 61 74 65 20 6f 66 20 60 74 27 20 69 73 0a 63 6f 6e 73 69 64 65 72 65 .A.predicate.of.`t'.is.considere
45f80 64 20 61 20 73 75 63 63 65 73 73 20 61 6e 64 20 61 63 74 73 20 61 73 20 61 20 64 65 66 61 75 6c d.a.success.and.acts.as.a.defaul
45fa0 74 2e 22 29 0a 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d 72 65 71 75 65 73 74 2d 2d 68 61 6e t.")..(defvar.gptel-request--han
45fc0 64 6c 65 72 73 0a 20 20 60 28 28 57 41 49 54 20 2c 23 27 67 70 74 65 6c 2d 2d 68 61 6e 64 6c 65 dlers...`((WAIT.,#'gptel--handle
45fe0 2d 77 61 69 74 29 0a 20 20 20 20 28 54 4f 4f 4c 20 2c 23 27 67 70 74 65 6c 2d 2d 68 61 6e 64 6c -wait).....(TOOL.,#'gptel--handl
46000 65 2d 74 6f 6f 6c 2d 75 73 65 29 29 0a 20 20 22 41 6c 69 73 74 20 73 70 65 63 69 66 79 69 6e 67 e-tool-use))..."Alist.specifying
46020 20 68 61 6e 64 6c 65 72 73 20 66 6f 72 20 67 70 74 65 6c 27 73 20 64 65 66 61 75 6c 74 20 73 74 .handlers.for.gptel's.default.st
46040 61 74 65 20 74 72 61 6e 73 69 74 69 6f 6e 73 2e 0a 0a 45 61 63 68 20 65 6e 74 72 79 20 69 73 20 ate.transitions...Each.entry.is.
46060 61 20 6c 69 73 74 20 77 68 6f 73 65 20 63 61 72 20 69 73 20 61 20 72 65 71 75 65 73 74 20 73 74 a.list.whose.car.is.a.request.st
46080 61 74 65 20 28 61 20 73 79 6d 62 6f 6c 29 20 61 6e 64 0a 77 68 6f 73 65 20 63 64 72 20 69 73 20 ate.(a.symbol).and.whose.cdr.is.
460a0 61 20 6c 69 73 74 20 6f 66 20 68 61 6e 64 6c 65 72 20 66 75 6e 63 74 69 6f 6e 73 20 63 61 6c 6c a.list.of.handler.functions.call
460c0 65 64 20 77 68 65 6e 0a 74 72 61 6e 73 69 74 69 6f 6e 69 6e 67 20 74 6f 20 74 68 61 74 20 73 74 ed.when.transitioning.to.that.st
460e0 61 74 65 2e 20 20 54 68 65 20 68 61 6e 64 6c 65 72 73 20 61 72 65 20 63 61 6c 6c 65 64 20 69 6e ate...The.handlers.are.called.in
46100 20 74 68 65 0a 73 65 71 75 65 6e 63 65 20 74 68 61 74 20 74 68 65 79 20 61 70 70 65 61 72 20 69 .the.sequence.that.they.appear.i
46120 6e 20 74 68 65 20 6c 69 73 74 2c 20 61 6e 64 20 65 61 63 68 20 66 75 6e 63 74 69 6f 6e 20 72 65 n.the.list,.and.each.function.re
46140 63 65 69 76 65 73 0a 74 68 65 20 73 74 61 74 65 20 6d 61 63 68 69 6e 65 20 61 73 20 69 74 73 20 ceives.the.state.machine.as.its.
46160 6f 6e 6c 79 20 61 72 67 75 6d 65 6e 74 2e 20 20 49 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 only.argument...Information.abou
46180 74 20 74 68 65 0a 72 65 71 75 65 73 74 20 73 74 61 74 65 20 63 61 6e 20 62 65 20 72 65 74 72 69 t.the.request.state.can.be.retri
461a0 65 76 65 64 20 76 69 61 20 74 68 65 20 6d 61 63 68 69 6e 65 27 73 20 49 4e 46 4f 20 73 6c 6f 74 eved.via.the.machine's.INFO.slot
461c0 2c 20 73 65 65 0a 60 67 70 74 65 6c 2d 66 73 6d 27 2e 0a 0a 48 61 6e 64 6c 65 72 73 20 61 72 65 ,.see.`gptel-fsm'...Handlers.are
461e0 20 72 65 73 70 6f 6e 73 69 62 6c 65 20 66 6f 72 20 64 6f 69 6e 67 20 73 74 61 74 65 2d 72 65 6c .responsible.for.doing.state-rel
46200 61 74 65 64 20 74 61 73 6b 73 20 28 6c 69 6b 65 0a 6c 6f 67 67 69 6e 67 20 65 72 72 6f 72 73 20 ated.tasks.(like.logging.errors.
46220 6f 72 20 69 6e 73 65 72 74 69 6e 67 20 72 65 73 70 6f 6e 73 65 73 29 20 61 6e 64 20 74 72 61 6e or.inserting.responses).and.tran
46240 73 69 74 69 6f 6e 69 6e 67 20 74 6f 20 74 68 65 0a 6e 65 78 74 20 73 74 61 74 65 20 62 79 20 63 sitioning.to.the.next.state.by.c
46260 61 6c 6c 69 6e 67 20 60 67 70 74 65 6c 2d 2d 66 73 6d 2d 74 72 61 6e 73 69 74 69 6f 6e 27 2e 0a alling.`gptel--fsm-transition'..
46280 0a 48 61 6e 64 6c 65 72 73 20 63 61 6e 20 62 65 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 2c 20 69 .Handlers.can.be.asynchronous,.i
462a0 6e 20 77 68 69 63 68 20 63 61 73 65 20 74 68 65 20 74 72 61 6e 73 69 74 69 6f 6e 20 63 61 6c 6c n.which.case.the.transition.call
462c0 0a 73 68 6f 75 6c 64 20 74 79 70 69 63 61 6c 6c 79 20 62 65 20 70 6c 61 63 65 64 20 69 6e 20 69 .should.typically.be.placed.in.i
462e0 74 73 20 63 61 6c 6c 62 61 63 6b 2e 22 29 0a 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d 73 65 ts.callback.")..(defvar.gptel-se
46300 6e 64 2d 2d 68 61 6e 64 6c 65 72 73 0a 20 20 60 28 28 57 41 49 54 20 2c 23 27 67 70 74 65 6c 2d nd--handlers...`((WAIT.,#'gptel-
46320 2d 68 61 6e 64 6c 65 2d 77 61 69 74 29 0a 20 20 20 20 28 54 59 50 45 20 2c 23 27 67 70 74 65 6c -handle-wait).....(TYPE.,#'gptel
46340 2d 2d 68 61 6e 64 6c 65 2d 70 72 65 2d 69 6e 73 65 72 74 29 0a 20 20 20 20 28 45 52 52 53 20 2c --handle-pre-insert).....(ERRS.,
46360 23 27 67 70 74 65 6c 2d 2d 68 61 6e 64 6c 65 2d 65 72 72 6f 72 20 2c 23 27 67 70 74 65 6c 2d 2d #'gptel--handle-error.,#'gptel--
46380 66 73 6d 2d 6c 61 73 74 29 0a 20 20 20 20 28 54 4f 4f 4c 20 2c 23 27 67 70 74 65 6c 2d 2d 68 61 fsm-last).....(TOOL.,#'gptel--ha
463a0 6e 64 6c 65 2d 74 6f 6f 6c 2d 75 73 65 29 0a 20 20 20 20 28 44 4f 4e 45 20 2c 23 27 67 70 74 65 ndle-tool-use).....(DONE.,#'gpte
463c0 6c 2d 2d 68 61 6e 64 6c 65 2d 70 6f 73 74 2d 69 6e 73 65 72 74 20 2c 23 27 67 70 74 65 6c 2d 2d l--handle-post-insert.,#'gptel--
463e0 66 73 6d 2d 6c 61 73 74 29 29 0a 20 20 22 41 6c 69 73 74 20 73 70 65 63 69 66 79 69 6e 67 20 68 fsm-last))..."Alist.specifying.h
46400 61 6e 64 6c 65 72 73 20 66 6f 72 20 60 67 70 74 65 6c 2d 73 65 6e 64 27 20 73 74 61 74 65 20 74 andlers.for.`gptel-send'.state.t
46420 72 61 6e 73 69 74 69 6f 6e 73 2e 0a 0a 53 65 65 20 60 67 70 74 65 6c 2d 72 65 71 75 65 73 74 2d ransitions...See.`gptel-request-
46440 2d 68 61 6e 64 6c 65 72 73 27 20 66 6f 72 20 64 65 74 61 69 6c 73 2e 22 29 0a 0a 28 63 6c 2d 64 -handlers'.for.details.")..(cl-d
46460 65 66 73 74 72 75 63 74 20 28 67 70 74 65 6c 2d 66 73 6d 20 28 3a 63 6f 6e 73 74 72 75 63 74 6f efstruct.(gptel-fsm.(:constructo
46480 72 20 67 70 74 65 6c 2d 6d 61 6b 65 2d 66 73 6d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 r.gptel-make-fsm)...............
464a0 20 20 20 20 20 20 20 20 20 20 20 28 3a 63 6f 70 69 65 72 20 67 70 74 65 6c 2d 63 6f 70 79 2d 66 ...........(:copier.gptel-copy-f
464c0 73 6d 29 29 0a 20 20 22 53 74 61 74 65 20 6d 61 63 68 69 6e 65 20 66 6f 72 20 67 70 74 65 6c 20 sm))..."State.machine.for.gptel.
464e0 72 65 71 75 65 73 74 73 2e 0a 0a 53 54 41 54 45 3a 20 54 68 65 20 63 75 72 72 65 6e 74 20 73 74 requests...STATE:.The.current.st
46500 61 74 65 20 6f 66 20 74 68 65 20 6d 61 63 68 69 6e 65 2c 20 63 61 6e 20 62 65 20 61 6e 79 20 73 ate.of.the.machine,.can.be.any.s
46520 79 6d 62 6f 6c 2e 0a 0a 54 41 42 4c 45 3a 20 41 6c 69 73 74 20 6d 61 70 70 69 6e 67 20 73 74 61 ymbol...TABLE:.Alist.mapping.sta
46540 74 65 73 20 74 6f 20 70 6f 73 73 69 62 6c 65 20 6e 65 78 74 20 73 74 61 74 65 73 0a 61 6c 6f 6e tes.to.possible.next.states.alon
46560 67 20 77 69 74 68 20 70 72 65 64 69 63 61 74 65 73 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 74 g.with.predicates.to.determine.t
46580 68 65 20 6e 65 78 74 20 73 74 61 74 65 2e 20 20 53 65 65 0a 60 67 70 74 65 6c 2d 72 65 71 75 65 he.next.state...See.`gptel-reque
465a0 73 74 2d 2d 74 72 61 6e 73 69 74 69 6f 6e 73 27 20 66 6f 72 20 61 6e 20 65 78 61 6d 70 6c 65 2e st--transitions'.for.an.example.
465c0 0a 0a 48 41 4e 44 4c 45 52 53 3a 20 41 6c 69 73 74 20 6d 61 70 70 69 6e 67 20 73 74 61 74 65 73 ..HANDLERS:.Alist.mapping.states
465e0 20 74 6f 20 73 74 61 74 65 20 68 61 6e 64 6c 65 72 20 66 75 6e 63 74 69 6f 6e 73 2e 0a 48 61 6e .to.state.handler.functions..Han
46600 64 6c 65 72 73 20 61 72 65 20 63 61 6c 6c 65 64 20 77 68 65 6e 20 65 6e 74 65 72 69 6e 67 20 65 dlers.are.called.when.entering.e
46620 61 63 68 20 73 74 61 74 65 2e 20 20 53 65 65 0a 60 67 70 74 65 6c 2d 72 65 71 75 65 73 74 2d 2d ach.state...See.`gptel-request--
46640 68 61 6e 64 6c 65 72 73 27 20 66 6f 72 20 61 6e 20 65 78 61 6d 70 6c 65 0a 0a 49 4e 46 4f 3a 20 handlers'.for.an.example..INFO:.
46660 54 68 65 20 73 74 61 74 65 20 6d 61 63 68 69 6e 65 27 73 20 63 75 72 72 65 6e 74 20 63 6f 6e 74 The.state.machine's.current.cont
46680 65 78 74 2e 20 20 54 68 69 73 20 69 73 20 61 20 70 6c 69 73 74 0a 68 6f 6c 64 69 6e 67 20 61 6c ext...This.is.a.plist.holding.al
466a0 6c 20 74 68 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 72 65 71 75 69 72 65 64 20 66 6f 72 20 74 l.the.information.required.for.t
466c0 68 65 20 6f 6e 67 6f 69 6e 67 20 72 65 71 75 65 73 74 2c 20 61 6e 64 0a 63 61 6e 20 62 65 20 75 he.ongoing.request,.and.can.be.u
466e0 73 65 64 20 74 6f 20 74 77 65 61 6b 20 61 6e 64 20 72 65 73 75 6d 65 20 61 20 70 61 75 73 65 64 sed.to.tweak.and.resume.a.paused
46700 20 72 65 71 75 65 73 74 2e 20 20 54 68 69 73 20 73 68 6f 75 6c 64 20 62 65 0a 63 61 6c 6c 65 64 .request...This.should.be.called
46720 20 5c 22 63 6f 6e 74 65 78 74 5c 22 2c 20 62 75 74 20 63 6f 6e 74 65 78 74 20 6d 65 61 6e 73 20 .\"context\",.but.context.means.
46740 74 6f 6f 20 6d 61 6e 79 20 74 68 69 6e 67 73 20 61 6c 72 65 61 64 79 20 69 6e 0a 67 70 74 65 6c too.many.things.already.in.gptel
46760 27 73 20 63 6f 64 65 21 0a 0a 45 61 63 68 20 67 70 74 65 6c 20 72 65 71 75 65 73 74 20 69 73 20 's.code!..Each.gptel.request.is.
46780 70 61 73 73 65 64 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73 0a 73 74 61 74 65 passed.an.instance.of.this.state
467a0 20 6d 61 63 68 69 6e 65 20 61 6e 64 20 64 72 69 76 65 6e 20 62 79 20 69 74 2e 22 0a 20 20 28 73 .machine.and.driven.by.it."...(s
467c0 74 61 74 65 20 27 49 4e 49 54 29 0a 20 20 28 74 61 62 6c 65 20 67 70 74 65 6c 2d 72 65 71 75 65 tate.'INIT)...(table.gptel-reque
467e0 73 74 2d 2d 74 72 61 6e 73 69 74 69 6f 6e 73 29 0a 20 20 28 68 61 6e 64 6c 65 72 73 20 67 70 74 st--transitions)...(handlers.gpt
46800 65 6c 2d 72 65 71 75 65 73 74 2d 2d 68 61 6e 64 6c 65 72 73 29 20 69 6e 66 6f 29 0a 0a 28 64 65 el-request--handlers).info)..(de
46820 66 75 6e 20 67 70 74 65 6c 2d 2d 66 73 6d 2d 74 72 61 6e 73 69 74 69 6f 6e 20 28 6d 61 63 68 69 fun.gptel--fsm-transition.(machi
46840 6e 65 20 26 6f 70 74 69 6f 6e 61 6c 20 6e 65 77 2d 73 74 61 74 65 29 0a 20 20 22 4d 6f 76 65 20 ne.&optional.new-state)..."Move.
46860 4d 41 43 48 49 4e 45 20 74 6f 20 69 74 73 20 6e 65 78 74 20 73 74 61 74 65 2e 0a 0a 4d 41 43 48 MACHINE.to.its.next.state...MACH
46880 49 4e 45 20 69 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 60 67 70 74 65 6c 2d 66 73 6d INE.is.an.instance.of.`gptel-fsm
468a0 27 2e 0a 0a 54 68 65 20 6e 65 78 74 20 73 74 61 74 65 20 69 73 20 4e 45 57 2d 53 54 41 54 45 20 '...The.next.state.is.NEW-STATE.
468c0 69 66 20 67 69 76 65 6e 2e 20 20 4f 74 68 65 72 77 69 73 65 20 69 74 20 69 73 20 64 65 74 65 72 if.given...Otherwise.it.is.deter
468e0 6d 69 6e 65 64 0a 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 66 72 6f 6d 20 4d 41 43 48 49 4e 45 mined.automatically.from.MACHINE
46900 27 73 20 74 72 61 6e 73 69 74 69 6f 6e 20 74 61 62 6c 65 2e 22 0a 20 20 28 75 6e 6c 65 73 73 20 's.transition.table."...(unless.
46920 6e 65 77 2d 73 74 61 74 65 20 28 73 65 74 71 20 6e 65 77 2d 73 74 61 74 65 20 28 67 70 74 65 6c new-state.(setq.new-state.(gptel
46940 2d 2d 66 73 6d 2d 6e 65 78 74 20 6d 61 63 68 69 6e 65 29 29 29 0a 20 20 28 70 75 73 68 20 28 67 --fsm-next.machine)))...(push.(g
46960 70 74 65 6c 2d 66 73 6d 2d 73 74 61 74 65 20 6d 61 63 68 69 6e 65 29 0a 20 20 20 20 20 20 20 20 ptel-fsm-state.machine).........
46980 28 70 6c 69 73 74 2d 67 65 74 20 28 67 70 74 65 6c 2d 66 73 6d 2d 69 6e 66 6f 20 6d 61 63 68 69 (plist-get.(gptel-fsm-info.machi
469a0 6e 65 29 20 3a 68 69 73 74 6f 72 79 29 29 0a 20 20 28 73 65 74 66 20 28 67 70 74 65 6c 2d 66 73 ne).:history))...(setf.(gptel-fs
469c0 6d 2d 73 74 61 74 65 20 6d 61 63 68 69 6e 65 29 20 6e 65 77 2d 73 74 61 74 65 29 0a 20 20 28 77 m-state.machine).new-state)...(w
469e0 68 65 6e 2d 6c 65 74 2a 20 28 28 68 61 6e 64 6c 65 72 73 20 28 61 6c 69 73 74 2d 67 65 74 20 6e hen-let*.((handlers.(alist-get.n
46a00 65 77 2d 73 74 61 74 65 20 28 67 70 74 65 6c 2d 66 73 6d 2d 68 61 6e 64 6c 65 72 73 20 6d 61 63 ew-state.(gptel-fsm-handlers.mac
46a20 68 69 6e 65 29 29 29 29 0a 20 20 20 20 28 6d 61 70 63 20 28 6c 61 6d 62 64 61 20 28 68 29 20 28 hine)))).....(mapc.(lambda.(h).(
46a40 66 75 6e 63 61 6c 6c 20 68 20 6d 61 63 68 69 6e 65 29 29 20 68 61 6e 64 6c 65 72 73 29 29 29 0a funcall.h.machine)).handlers))).
46a60 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 66 73 6d 2d 6e 65 78 74 20 28 6d 61 63 68 69 6e 65 .(defun.gptel--fsm-next.(machine
46a80 29 0a 20 20 22 44 65 74 65 72 6d 69 6e 65 20 4d 41 43 48 49 4e 45 27 73 20 6e 65 78 74 20 73 74 )..."Determine.MACHINE's.next.st
46aa0 61 74 65 20 61 63 63 6f 72 64 69 6e 67 20 74 6f 20 69 74 73 20 74 72 61 6e 73 69 74 69 6f 6e 20 ate.according.to.its.transition.
46ac0 74 61 62 6c 65 2e 0a 0a 4d 41 43 48 49 4e 45 20 69 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f table...MACHINE.is.an.instance.o
46ae0 66 20 60 67 70 74 65 6c 2d 66 73 6d 27 22 0a 20 20 28 6c 65 74 2a 20 28 28 63 75 72 72 65 6e 74 f.`gptel-fsm'"...(let*.((current
46b00 20 28 67 70 74 65 6c 2d 66 73 6d 2d 73 74 61 74 65 20 6d 61 63 68 69 6e 65 29 29 0a 20 20 20 20 .(gptel-fsm-state.machine)).....
46b20 20 20 20 20 20 28 74 72 61 6e 73 69 74 69 6f 6e 73 20 28 61 6c 69 73 74 2d 67 65 74 20 63 75 72 .....(transitions.(alist-get.cur
46b40 72 65 6e 74 20 28 67 70 74 65 6c 2d 66 73 6d 2d 74 61 62 6c 65 20 6d 61 63 68 69 6e 65 29 29 29 rent.(gptel-fsm-table.machine)))
46b60 29 0a 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 0a 20 20 20 20 20 77 69 74 68 20 69 6e 66 6f 20 3d 20 ).....(cl-loop......with.info.=.
46b80 28 67 70 74 65 6c 2d 66 73 6d 2d 69 6e 66 6f 20 6d 61 63 68 69 6e 65 29 0a 20 20 20 20 20 66 6f (gptel-fsm-info.machine)......fo
46ba0 72 20 28 70 72 65 64 20 2e 20 6e 65 78 74 29 20 69 6e 20 74 72 61 6e 73 69 74 69 6f 6e 73 0a 20 r.(pred...next).in.transitions..
46bc0 20 20 20 20 77 68 65 6e 20 28 6f 72 20 28 65 71 20 70 72 65 64 20 74 29 20 28 66 75 6e 63 61 6c ....when.(or.(eq.pred.t).(funcal
46be0 6c 20 70 72 65 64 20 69 6e 66 6f 29 29 0a 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65 78 74 29 29 l.pred.info))......return.next))
46c00 29 0a 0a 28 64 65 66 76 61 72 2d 6c 6f 63 61 6c 20 67 70 74 65 6c 2d 2d 66 73 6d 2d 6c 61 73 74 )..(defvar-local.gptel--fsm-last
46c20 20 6e 69 6c 0a 20 20 22 53 74 61 74 65 20 6d 61 63 68 69 6e 65 20 66 6f 72 20 6c 61 74 65 73 74 .nil..."State.machine.for.latest
46c40 20 72 65 71 75 65 73 74 20 69 6e 20 74 68 65 20 62 75 66 66 65 72 2e 22 29 0a 0a 28 64 65 66 75 .request.in.the.buffer.")..(defu
46c60 6e 20 67 70 74 65 6c 2d 2d 66 73 6d 2d 6c 61 73 74 20 28 66 73 6d 29 0a 20 20 20 20 22 43 61 70 n.gptel--fsm-last.(fsm)....."Cap
46c80 74 75 72 65 20 74 68 65 20 6c 61 74 65 73 74 20 72 65 71 75 65 73 74 20 73 74 61 74 65 20 46 53 ture.the.latest.request.state.FS
46ca0 4d 20 66 6f 72 20 69 6e 74 72 6f 73 70 65 63 74 69 6f 6e 2e 22 0a 20 20 20 20 28 6c 65 74 20 28 M.for.introspection.".....(let.(
46cc0 28 69 6e 66 6f 20 28 67 70 74 65 6c 2d 66 73 6d 2d 69 6e 66 6f 20 66 73 6d 29 29 29 0a 20 20 20 (info.(gptel-fsm-info.fsm)))....
46ce0 20 20 20 28 75 6e 6c 65 73 73 20 67 70 74 65 6c 2d 6c 6f 67 2d 6c 65 76 65 6c 0a 20 20 20 20 20 ...(unless.gptel-log-level......
46d00 20 20 20 28 6c 65 74 20 28 28 64 61 74 61 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a ...(let.((data.(plist-get.info.:
46d20 64 61 74 61 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 64 6f 6c 69 73 74 20 28 6b 65 79 20 27 data)))...........(dolist.(key.'
46d40 28 3a 6d 65 73 73 61 67 65 73 20 3a 63 6f 6e 74 65 6e 74 73 20 3a 71 75 65 72 79 29 29 0a 20 20 (:messages.:contents.:query))...
46d60 20 20 20 20 20 20 20 20 20 20 28 73 65 74 66 20 28 70 6c 69 73 74 2d 67 65 74 20 64 61 74 61 20 ..........(setf.(plist-get.data.
46d80 6b 65 79 29 20 6e 69 6c 29 29 29 29 0a 20 20 20 20 20 20 28 73 65 74 66 20 28 67 70 74 65 6c 2d key).nil)))).......(setf.(gptel-
46da0 66 73 6d 2d 69 6e 66 6f 20 66 73 6d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 fsm-info.fsm).............(plist
46dc0 2d 70 75 74 20 69 6e 66 6f 20 3a 65 6e 64 2d 74 69 6d 65 20 28 63 75 72 72 65 6e 74 2d 74 69 6d -put.info.:end-time.(current-tim
46de0 65 2d 73 74 72 69 6e 67 29 29 29 0a 20 20 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d e-string))).......(with-current-
46e00 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).
46e20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 67 70 74 65 6c 2d 2d 66 73 6d 2d 6c 61 73 74 20 66 73 ........(setq.gptel--fsm-last.fs
46e40 6d 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 69 6e 73 70 65 63 74 2d 66 73 6d m))))..(defun.gptel--inspect-fsm
46e60 20 28 26 6f 70 74 69 6f 6e 61 6c 20 66 73 6d 29 0a 20 20 22 49 6e 73 70 65 63 74 20 67 70 74 65 .(&optional.fsm)..."Inspect.gpte
46e80 6c 20 72 65 71 75 65 73 74 20 73 74 61 74 65 20 46 53 4d 2e 0a 0a 46 53 4d 20 64 65 66 61 75 6c l.request.state.FSM...FSM.defaul
46ea0 74 73 20 74 6f 20 74 68 65 20 73 74 61 74 65 20 6f 66 20 74 68 65 20 6c 61 73 74 20 72 65 71 75 ts.to.the.state.of.the.last.requ
46ec0 65 73 74 20 69 6e 20 74 68 65 20 63 75 72 72 65 6e 74 0a 62 75 66 66 65 72 2e 22 0a 20 20 28 75 est.in.the.current.buffer."...(u
46ee0 6e 6c 65 73 73 20 66 73 6d 0a 20 20 20 20 28 73 65 74 71 20 66 73 6d 20 28 6f 72 20 28 63 64 72 nless.fsm.....(setq.fsm.(or.(cdr
46f00 2d 73 61 66 65 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 20 -safe.(cl-find-if...............
46f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 70 72 6f 63 2d 6c 69 73 ...............(lambda.(proc-lis
46f40 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 20 20 20 20 t)..............................
46f60 20 20 28 65 71 20 28 74 68 72 65 61 64 2d 66 69 72 73 74 20 28 63 61 64 72 20 70 72 6f 63 2d 6c ..(eq.(thread-first.(cadr.proc-l
46f80 69 73 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 20 20 ist)............................
46fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 66 73 6d ......................(gptel-fsm
46fc0 2d 69 6e 66 6f 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -info)..........................
46fe0 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 6c 69 73 74 2d 67 ........................(plist-g
47000 65 74 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 et.:buffer))....................
47020 20 20 20 20 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 ................(current-buffer)
47040 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 20 ))..............................
47060 67 70 74 65 6c 2d 2d 72 65 71 75 65 73 74 2d 61 6c 69 73 74 29 29 0a 20 20 20 20 20 20 20 20 20 gptel--request-alist))..........
47080 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 2d 66 73 6d 2d 6c 61 73 74 29 29 29 0a 20 20 28 75 .........gptel--fsm-last)))...(u
470a0 6e 6c 65 73 73 20 28 63 6c 2d 74 79 70 65 70 20 67 70 74 65 6c 2d 2d 66 73 6d 2d 6c 61 73 74 20 nless.(cl-typep.gptel--fsm-last.
470c0 27 67 70 74 65 6c 2d 66 73 6d 29 0a 20 20 20 20 28 75 73 65 72 2d 65 72 72 6f 72 20 22 4e 6f 20 'gptel-fsm).....(user-error."No.
470e0 67 70 74 65 6c 20 72 65 71 75 65 73 74 20 6c 6f 67 20 69 6e 20 74 68 69 73 20 62 75 66 66 65 72 gptel.request.log.in.this.buffer
47100 20 79 65 74 21 22 29 29 0a 20 20 28 72 65 71 75 69 72 65 20 27 74 61 62 75 6c 61 74 65 64 2d 6c .yet!"))...(require.'tabulated-l
47120 69 73 74 29 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 67 65 74 ist)...(with-current-buffer.(get
47140 2d 62 75 66 66 65 72 2d 63 72 65 61 74 65 20 22 2a 67 70 74 65 6c 2d 64 69 61 67 6e 6f 73 74 69 -buffer-create."*gptel-diagnosti
47160 63 2a 22 29 0a 20 20 20 20 28 73 65 74 71 20 74 61 62 75 6c 61 74 65 64 2d 6c 69 73 74 2d 66 6f c*").....(setq.tabulated-list-fo
47180 72 6d 61 74 20 5b 28 22 52 65 71 75 65 73 74 20 61 74 74 72 69 62 75 74 65 22 20 33 30 20 74 29 rmat.[("Request.attribute".30.t)
471a0 20 28 22 56 61 6c 75 65 22 20 33 30 29 5d 29 0a 20 20 20 20 28 6c 65 74 2a 20 28 28 70 62 20 28 .("Value".30)]).....(let*.((pb.(
471c0 6c 61 6d 62 64 61 20 28 73 29 20 28 70 72 6f 70 65 72 74 69 7a 65 20 73 20 27 66 61 63 65 20 27 lambda.(s).(propertize.s.'face.'
471e0 66 6f 6e 74 2d 6c 6f 63 6b 2d 62 75 69 6c 74 69 6e 2d 66 61 63 65 29 29 29 0a 20 20 20 20 20 20 font-lock-builtin-face))).......
47200 20 20 20 20 20 28 70 73 20 28 6c 61 6d 62 64 61 20 28 73 29 20 28 70 72 6f 70 65 72 74 69 7a 65 .....(ps.(lambda.(s).(propertize
47220 20 73 20 27 66 61 63 65 20 27 66 6f 6e 74 2d 6c 6f 63 6b 2d 73 74 72 69 6e 67 2d 66 61 63 65 29 .s.'face.'font-lock-string-face)
47240 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 66 6d 74 20 28 6c 61 6d 62 64 61 20 28 73 29 20 28 ))............(fmt.(lambda.(s).(
47260 63 6f 6e 64 20 28 28 6d 65 6d 71 20 28 63 61 72 2d 73 61 66 65 20 73 29 20 27 28 63 6c 6f 73 75 cond.((memq.(car-safe.s).'(closu
47280 72 65 20 6c 61 6d 62 64 61 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 re.lambda)).....................
472a0 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 23 3c 6c 61 6d 62 64 61 20 25 23 78 3e ..........(format."#<lambda.%#x>
472c0 22 20 28 73 78 68 61 73 68 20 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ".(sxhash.s)))..................
472e0 20 20 20 20 20 20 20 20 20 20 20 20 28 28 62 79 74 65 2d 63 6f 64 65 2d 66 75 6e 63 74 69 6f 6e ............((byte-code-function
47300 2d 70 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 20 20 20 20 -p.s)...........................
47320 20 20 20 20 28 66 6f 72 6d 61 74 20 22 23 3c 63 6f 6d 70 69 6c 65 64 20 25 23 78 3e 22 20 28 73 ....(format."#<compiled.%#x>".(s
47340 78 68 61 73 68 20 73 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 xhash.s)))......................
47360 20 20 20 20 20 20 20 20 28 28 73 74 72 69 6e 67 70 20 73 29 20 28 73 74 72 69 6e 67 2d 72 65 70 ........((stringp.s).(string-rep
47380 6c 61 63 65 20 22 5c 6e 22 20 22 e2 ae 90 20 22 20 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 lace."\n"."....".s))............
473a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 20 28 70 72 69 6e 31 2d 74 6f 2d 73 ..................(t.(prin1-to-s
473c0 74 72 69 6e 67 20 73 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 68 69 62 69 74 tring.s)))))............(inhibit
473e0 2d 72 65 61 64 2d 6f 6e 6c 79 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 66 6f 20 28 -read-only.t)............(info.(
47400 67 70 74 65 6c 2d 66 73 6d 2d 69 6e 66 6f 20 66 73 6d 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 gptel-fsm-info.fsm))............
47420 28 65 6e 74 72 69 65 73 2d 69 6e 66 6f 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 6c 6f (entries-info.............(cl-lo
47440 6f 70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 69 64 78 20 75 70 66 72 6f 6d 20 33 op..............for.idx.upfrom.3
47460 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 6b 65 79 20 76 61 6c 29 20 6f 6e 20 69 ..............for.(key.val).on.i
47480 6e 66 6f 20 62 79 20 23 27 63 64 64 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 75 6e 6c 65 73 nfo.by.#'cddr..............unles
474a0 73 20 28 6d 65 6d 71 20 6b 65 79 20 27 28 3a 64 61 74 61 20 3a 68 69 73 74 6f 72 79 20 3a 74 6f s.(memq.key.'(:data.:history.:to
474c0 6f 6c 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 ols.............................
474e0 20 20 20 20 3a 70 61 72 74 69 61 6c 5f 74 65 78 74 20 3a 70 61 72 74 69 61 6c 5f 6a 73 6f 6e 29 ....:partial_text.:partial_json)
47500 29 0a 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..........
47520 20 20 20 20 28 6c 69 73 74 20 69 64 78 20 60 5b 2c 28 66 75 6e 63 61 6c 6c 20 70 62 20 28 73 79 ....(list.idx.`[,(funcall.pb.(sy
47540 6d 62 6f 6c 2d 6e 61 6d 65 20 6b 65 79 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 mbol-name.key)).................
47560 20 20 20 20 20 20 20 20 20 2c 28 66 75 6e 63 61 6c 6c 20 70 73 20 28 66 75 6e 63 61 6c 6c 20 66 .........,(funcall.ps.(funcall.f
47580 6d 74 20 76 61 6c 29 29 5d 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 65 6e 74 72 69 65 73 mt.val))])))............(entries
475a0 2d 64 61 74 61 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 -data.............(cl-loop......
475c0 20 20 20 20 20 20 20 20 66 6f 72 20 69 64 78 20 75 70 66 72 6f 6d 20 35 30 0a 20 20 20 20 20 20 ........for.idx.upfrom.50.......
475e0 20 20 20 20 20 20 20 66 6f 72 20 28 6b 65 79 20 76 61 6c 29 20 6f 6e 20 28 70 6c 69 73 74 2d 67 .......for.(key.val).on.(plist-g
47600 65 74 20 69 6e 66 6f 20 3a 64 61 74 61 29 20 62 79 20 23 27 63 64 64 72 0a 20 20 20 20 20 20 20 et.info.:data).by.#'cddr........
47620 20 20 20 20 20 20 75 6e 6c 65 73 73 20 28 6d 65 6d 71 20 6b 65 79 20 27 28 3a 6d 65 73 73 61 67 ......unless.(memq.key.'(:messag
47640 65 73 20 3a 73 74 72 65 61 6d 20 3a 63 6f 6e 74 65 6e 74 73 20 3a 71 75 65 72 79 29 29 0a 20 20 es.:stream.:contents.:query))...
47660 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 20 20 20 20 ...........collect..............
47680 28 6c 69 73 74 20 69 64 78 20 60 5b 2c 28 66 75 6e 63 61 6c 6c 20 70 62 20 28 73 79 6d 62 6f 6c (list.idx.`[,(funcall.pb.(symbol
476a0 2d 6e 61 6d 65 20 6b 65 79 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -name.key)).....................
476c0 20 20 20 20 20 2c 28 66 75 6e 63 61 6c 6c 20 70 73 20 28 66 75 6e 63 61 6c 6c 20 66 6d 74 20 76 .....,(funcall.ps.(funcall.fmt.v
476e0 61 6c 29 29 5d 29 29 29 29 0a 20 20 20 20 20 20 28 73 65 74 71 20 74 61 62 75 6c 61 74 65 64 2d al))])))).......(setq.tabulated-
47700 6c 69 73 74 2d 65 6e 74 72 69 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 63 6f 6e 63 20 list-entries.............(nconc.
47720 28 6c 69 73 74 20 60 28 32 20 5b 2c 28 66 75 6e 63 61 6c 6c 20 70 62 20 22 3a 73 74 61 74 65 22 (list.`(2.[,(funcall.pb.":state"
47740 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 )...............................
47760 2c 28 66 75 6e 63 61 6c 6c 20 70 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ,(funcall.ps....................
47780 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 70 63 6f 6e 63 61 74 0a 20 20 20 20 20 20 20 20 .............(mapconcat.........
477a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6d 74 20 28 72 65 .........................fmt.(re
477c0 76 65 72 73 65 20 28 63 6f 6e 73 20 28 67 70 74 65 6c 2d 66 73 6d 2d 73 74 61 74 65 20 66 73 6d verse.(cons.(gptel-fsm-state.fsm
477e0 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 )...............................
47800 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 69 6e 66 6f .................(plist-get.info
47820 20 3a 68 69 73 74 6f 72 79 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .:history)))....................
47840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 20 e2 86 92 20 22 29 29 5d 29 29 0a 20 20 20 20 20 .............."....."))]))......
47860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 74 72 69 65 73 2d 69 6e 66 6f 0a 20 20 20 20 20 ..............entries-info......
47880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 74 72 69 65 73 2d 64 61 74 61 29 29 0a 20 20 20 ..............entries-data))....
478a0 20 20 20 28 74 61 62 75 6c 61 74 65 64 2d 6c 69 73 74 2d 70 72 69 6e 74 29 0a 20 20 20 20 20 20 ...(tabulated-list-print).......
478c0 28 74 61 62 75 6c 61 74 65 64 2d 6c 69 73 74 2d 6d 6f 64 65 29 0a 20 20 20 20 20 20 28 74 61 62 (tabulated-list-mode).......(tab
478e0 75 6c 61 74 65 64 2d 6c 69 73 74 2d 69 6e 69 74 2d 68 65 61 64 65 72 29 0a 20 20 20 20 20 20 28 ulated-list-init-header).......(
47900 68 6c 2d 6c 69 6e 65 2d 6d 6f 64 65 20 31 29 0a 20 20 20 20 20 20 28 64 69 73 70 6c 61 79 2d 62 hl-line-mode.1).......(display-b
47920 75 66 66 65 72 0a 20 20 20 20 20 20 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 0a 20 20 uffer........(current-buffer)...
47940 20 20 20 20 20 27 28 28 64 69 73 70 6c 61 79 2d 62 75 66 66 65 72 2d 69 6e 2d 73 69 64 65 2d 77 .....'((display-buffer-in-side-w
47960 69 6e 64 6f 77 29 0a 20 20 20 20 20 20 20 20 20 28 73 69 64 65 20 2e 20 62 6f 74 74 6f 6d 29 0a indow)..........(side...bottom).
47980 20 20 20 20 20 20 20 20 20 28 77 69 6e 64 6f 77 2d 68 65 69 67 68 74 20 2e 20 66 69 74 2d 77 69 .........(window-height...fit-wi
479a0 6e 64 6f 77 2d 74 6f 2d 62 75 66 66 65 72 29 0a 20 20 20 20 20 20 20 20 20 28 73 6c 6f 74 20 2e ndow-to-buffer)..........(slot..
479c0 20 31 30 29 0a 20 20 20 20 20 20 20 20 20 28 62 6f 64 79 2d 66 75 6e 63 74 69 6f 6e 20 2e 20 73 .10)..........(body-function...s
479e0 65 6c 65 63 74 2d 77 69 6e 64 6f 77 29 29 29 29 29 29 0a 0a 3b 3b 3b 3b 20 53 74 61 74 65 20 6d elect-window))))))..;;;;.State.m
47a00 61 63 68 69 6e 65 20 68 61 6e 64 6c 65 72 73 0a 3b 3b 20 54 68 65 20 6e 65 78 74 20 66 65 77 20 achine.handlers.;;.The.next.few.
47a20 66 75 6e 63 74 69 6f 6e 73 20 61 72 65 20 64 65 66 61 75 6c 74 20 73 74 61 74 65 20 68 61 6e 64 functions.are.default.state.hand
47a40 6c 65 72 73 20 66 6f 72 20 67 70 74 65 6c 27 73 20 73 74 61 74 65 20 6d 61 63 68 69 6e 65 2c 0a lers.for.gptel's.state.machine,.
47a60 3b 3b 20 73 65 65 20 60 67 70 74 65 6c 2d 72 65 71 75 65 73 74 2d 2d 68 61 6e 64 6c 65 72 73 27 ;;.see.`gptel-request--handlers'
47a80 2e 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 68 61 6e 64 6c 65 2d 77 61 69 74 20 28 66 73 ...(defun.gptel--handle-wait.(fs
47aa0 6d 29 0a 20 20 22 46 69 72 65 20 74 68 65 20 72 65 71 75 65 73 74 20 63 6f 6e 74 61 69 6e 65 64 m)..."Fire.the.request.contained
47ac0 20 69 6e 20 73 74 61 74 65 20 6d 61 63 68 69 6e 65 20 46 53 4d 27 73 20 69 6e 66 6f 2e 22 0a 20 .in.state.machine.FSM's.info."..
47ae0 20 3b 3b 20 52 65 73 65 74 20 73 6f 6d 65 20 66 6c 61 67 73 20 69 6e 20 69 6e 66 6f 2e 20 20 54 .;;.Reset.some.flags.in.info...T
47b00 68 69 73 20 69 73 20 6e 65 63 65 73 73 61 72 79 20 77 68 65 6e 20 72 65 75 73 69 6e 67 20 66 73 his.is.necessary.when.reusing.fs
47b20 6d 27 73 20 63 6f 6e 74 65 78 74 20 66 6f 72 0a 20 20 3b 3b 20 61 20 73 65 63 6f 6e 64 20 6e 65 m's.context.for...;;.a.second.ne
47b40 74 77 6f 72 6b 20 72 65 71 75 65 73 74 3a 20 67 70 74 65 6c 20 74 65 73 74 73 20 66 6f 72 20 74 twork.request:.gptel.tests.for.t
47b60 68 65 20 70 72 65 73 65 6e 63 65 20 6f 66 20 74 68 65 73 65 20 66 6c 61 67 73 20 74 6f 0a 20 20 he.presence.of.these.flags.to...
47b80 3b 3b 20 68 61 6e 64 6c 65 20 73 74 61 74 65 20 74 72 61 6e 73 69 74 69 6f 6e 73 2e 20 20 28 4e ;;.handle.state.transitions...(N
47ba0 4f 54 45 3a 20 44 6f 6e 27 74 20 61 64 64 20 3a 74 6f 6b 65 6e 20 74 6f 20 74 68 69 73 2e 29 0a OTE:.Don't.add.:token.to.this.).
47bc0 20 20 28 6c 65 74 20 28 28 69 6e 66 6f 20 28 67 70 74 65 6c 2d 66 73 6d 2d 69 6e 66 6f 20 66 73 ..(let.((info.(gptel-fsm-info.fs
47be0 6d 29 29 29 0a 20 20 20 20 28 64 6f 6c 69 73 74 20 28 6b 65 79 20 27 28 3a 74 6f 6f 6c 2d 73 75 m))).....(dolist.(key.'(:tool-su
47c00 63 63 65 73 73 20 3a 74 6f 6f 6c 2d 75 73 65 20 3a 65 72 72 6f 72 0a 20 20 20 20 20 20 20 20 20 ccess.:tool-use.:error..........
47c20 20 20 20 20 20 20 20 20 20 20 3a 68 74 74 70 2d 73 74 61 74 75 73 20 3a 72 65 61 73 6f 6e 69 6e ..........:http-status.:reasonin
47c40 67 20 3a 72 65 61 73 6f 6e 69 6e 67 2d 62 6c 6f 63 6b 29 29 0a 20 20 20 20 20 20 28 77 68 65 6e g.:reasoning-block)).......(when
47c60 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 6b 65 79 29 0a 20 20 20 20 20 20 20 20 28 70 .(plist-get.info.key).........(p
47c80 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 6b 65 79 20 6e 69 6c 29 29 29 29 0a 20 20 28 66 75 6e list-put.info.key.nil))))...(fun
47ca0 63 61 6c 6c 0a 20 20 20 28 69 66 20 67 70 74 65 6c 2d 75 73 65 2d 63 75 72 6c 0a 20 20 20 20 20 call....(if.gptel-use-curl......
47cc0 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 0a 20 20 20 20 ..#'gptel-curl-get-response.....
47ce0 20 23 27 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 66 .#'gptel--url-get-response)....f
47d00 73 6d 29 0a 20 20 28 72 75 6e 2d 68 6f 6f 6b 73 20 27 67 70 74 65 6c 2d 70 6f 73 74 2d 72 65 71 sm)...(run-hooks.'gptel-post-req
47d20 75 65 73 74 2d 68 6f 6f 6b 29 0a 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 uest-hook)...(with-current-buffe
47d40 72 20 28 70 6c 69 73 74 2d 67 65 74 20 28 67 70 74 65 6c 2d 66 73 6d 2d 69 6e 66 6f 20 66 73 6d r.(plist-get.(gptel-fsm-info.fsm
47d60 29 20 3a 62 75 66 66 65 72 29 0a 20 20 20 20 28 67 70 74 65 6c 2d 2d 75 70 64 61 74 65 2d 73 74 ).:buffer).....(gptel--update-st
47d80 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 0a 0a atus.".Waiting...".'warning)))..
47da0 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 68 61 6e 64 6c 65 2d 70 72 65 2d 69 6e 73 65 72 74 20 (defun.gptel--handle-pre-insert.
47dc0 28 66 73 6d 29 0a 20 20 22 54 61 73 6b 73 20 62 65 66 6f 72 65 20 69 6e 73 65 72 74 69 6e 67 20 (fsm)..."Tasks.before.inserting.
47de0 74 68 65 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 20 66 6f 72 20 73 74 61 74 65 20 46 53 4d 2e 0a the.LLM.response.for.state.FSM..
47e00 0a 48 61 6e 64 6c 65 20 72 65 61 64 2d 6f 6e 6c 79 20 62 75 66 66 65 72 73 20 61 6e 64 20 72 75 .Handle.read-only.buffers.and.ru
47e20 6e 20 70 72 65 2d 72 65 73 70 6f 6e 73 65 20 68 6f 6f 6b 73 20 28 62 75 74 20 6f 6e 6c 79 20 69 n.pre-response.hooks.(but.only.i
47e40 66 0a 74 68 65 20 72 65 71 75 65 73 74 20 73 75 63 63 65 65 64 65 64 29 2e 22 0a 20 20 28 6c 65 f.the.request.succeeded)."...(le
47e60 74 2a 20 28 28 69 6e 66 6f 20 28 67 70 74 65 6c 2d 66 73 6d 2d 69 6e 66 6f 20 66 73 6d 29 29 0a t*.((info.(gptel-fsm-info.fsm)).
47e80 20 20 20 20 20 20 20 20 20 28 73 74 61 72 74 2d 6d 61 72 6b 65 72 20 28 70 6c 69 73 74 2d 67 65 .........(start-marker.(plist-ge
47ea0 74 20 69 6e 66 6f 20 3a 70 6f 73 69 74 69 6f 6e 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 28 61 t.info.:position))).....(when.(a
47ec0 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 28 6d 65 6d 71 20 28 70 6c 69 73 74 2d 67 65 74 20 69 nd............(memq.(plist-get.i
47ee0 6e 66 6f 20 3a 63 61 6c 6c 62 61 63 6b 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 nfo.:callback)..................
47f00 27 28 67 70 74 65 6c 2d 2d 69 6e 73 65 72 74 2d 72 65 73 70 6f 6e 73 65 20 67 70 74 65 6c 2d 63 '(gptel--insert-response.gptel-c
47f20 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 29 29 0a 20 20 url--stream-insert-response))...
47f40 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 70 .........(with-current-buffer.(p
47f60 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 62 75 66 66 65 72 29 0a 20 20 20 20 20 20 20 20 20 list-get.info.:buffer)..........
47f80 20 20 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 ....(or.buffer-read-only........
47fa0 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 73 74 61 ..........(get-char-property.sta
47fc0 72 74 2d 6d 61 72 6b 65 72 20 27 72 65 61 64 2d 6f 6e 6c 79 29 29 29 29 0a 20 20 20 20 20 20 28 rt-marker.'read-only)))).......(
47fe0 6d 65 73 73 61 67 65 20 22 42 75 66 66 65 72 20 69 73 20 72 65 61 64 20 6f 6e 6c 79 2c 20 64 69 message."Buffer.is.read.only,.di
48000 73 70 6c 61 79 69 6e 67 20 72 65 70 6c 79 20 69 6e 20 62 75 66 66 65 72 20 5c 22 2a 4c 4c 4d 20 splaying.reply.in.buffer.\"*LLM.
48020 72 65 73 70 6f 6e 73 65 2a 5c 22 22 29 0a 20 20 20 20 20 20 28 64 69 73 70 6c 61 79 2d 62 75 66 response*\"").......(display-buf
48040 66 65 72 0a 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 fer........(with-current-buffer.
48060 28 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 (get-buffer-create."*LLM.respons
48080 65 2a 22 29 0a 20 20 20 20 20 20 20 20 20 28 76 69 73 75 61 6c 2d 6c 69 6e 65 2d 6d 6f 64 65 20 e*")..........(visual-line-mode.
480a0 31 29 0a 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 1)..........(goto-char.(point-ma
480c0 78 29 29 0a 20 20 20 20 20 20 20 20 20 28 6d 6f 76 65 2d 6d 61 72 6b 65 72 20 73 74 61 72 74 2d x))..........(move-marker.start-
480e0 6d 61 72 6b 65 72 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 marker.(point).(current-buffer))
48100 0a 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 20 20 ..........(current-buffer)).....
48120 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 2d 77 69 6e 64 6f ...'((display-buffer-reuse-windo
48140 77 0a 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 70 6f 70 2d 75 w...........display-buffer-pop-u
48160 70 2d 77 69 6e 64 6f 77 29 0a 20 20 20 20 20 20 20 20 20 28 72 65 75 73 61 62 6c 65 2d 66 72 61 p-window)..........(reusable-fra
48180 6d 65 73 20 2e 20 76 69 73 69 62 6c 65 29 29 29 29 0a 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 mes...visible)))).....(with-curr
481a0 65 6e 74 2d 62 75 66 66 65 72 20 28 6d 61 72 6b 65 72 2d 62 75 66 66 65 72 20 73 74 61 72 74 2d ent-buffer.(marker-buffer.start-
481c0 6d 61 72 6b 65 72 29 0a 20 20 20 20 20 20 28 77 68 65 6e 20 28 70 6c 69 73 74 2d 67 65 74 20 69 marker).......(when.(plist-get.i
481e0 6e 66 6f 20 3a 73 74 72 65 61 6d 29 0a 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 75 70 64 nfo.:stream).........(gptel--upd
48200 61 74 65 2d 73 74 61 74 75 73 20 22 20 54 79 70 69 6e 67 2e 2e 2e 22 20 27 73 75 63 63 65 73 73 ate-status.".Typing...".'success
48220 29 29 0a 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 )).......(save-excursion........
48240 20 28 67 6f 74 6f 2d 63 68 61 72 20 73 74 61 72 74 2d 6d 61 72 6b 65 72 29 0a 20 20 20 20 20 20 .(goto-char.start-marker).......
48260 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 73 74 2d 67 65 74 20 ..(when.(and.(member.(plist-get.
48280 69 6e 66 6f 20 3a 68 74 74 70 2d 73 74 61 74 75 73 29 20 27 28 22 32 30 30 22 20 22 31 30 30 22 info.:http-status).'("200"."100"
482a0 29 29 0a 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 70 72 65 2d ))....................gptel-pre-
482c0 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 28 72 75 6e 2d 68 6f response-hook)...........(run-ho
482e0 6f 6b 73 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 oks.'gptel-pre-response-hook))))
48300 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 68 61 6e 64 6c 65 2d 70 6f 73 74 2d 69 6e ))..(defun.gptel--handle-post-in
48320 73 65 72 74 20 28 66 73 6d 29 0a 20 20 22 54 61 73 6b 73 20 61 66 74 65 72 20 73 75 63 63 65 73 sert.(fsm)..."Tasks.after.succes
48340 73 66 75 6c 6c 79 20 69 6e 73 65 72 74 69 6e 67 20 74 68 65 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 sfully.inserting.the.LLM.respons
48360 65 20 77 69 74 68 20 73 74 61 74 65 20 46 53 4d 2e 0a 0a 49 6e 64 69 63 61 74 65 20 67 70 74 65 e.with.state.FSM...Indicate.gpte
48380 6c 20 73 74 61 74 75 73 2c 20 70 75 6c 73 65 20 74 68 65 20 69 6e 73 65 72 74 65 64 20 74 65 78 l.status,.pulse.the.inserted.tex
483a0 74 20 61 6e 64 20 72 75 6e 20 70 6f 73 74 2d 72 65 73 70 6f 6e 73 65 20 68 6f 6f 6b 73 2e 0a 0a t.and.run.post-response.hooks...
483c0 4e 6f 20 73 74 61 74 65 20 74 72 61 6e 73 69 74 69 6f 6e 20 68 65 72 65 20 73 69 6e 63 65 20 74 No.state.transition.here.since.t
483e0 68 61 74 27 73 20 68 61 6e 64 6c 65 64 20 62 79 20 74 68 65 20 70 72 6f 63 65 73 73 20 73 65 6e hat's.handled.by.the.process.sen
48400 74 69 6e 65 6c 73 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 69 6e 66 6f 20 28 67 70 74 65 6c 2d 66 tinels."...(let*.((info.(gptel-f
48420 73 6d 2d 69 6e 66 6f 20 66 73 6d 29 29 0a 20 20 20 20 20 20 20 20 20 28 73 74 61 72 74 2d 6d 61 sm-info.fsm))..........(start-ma
48440 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))
48460 0a 20 20 20 20 20 20 20 20 20 28 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 20 28 6f 72 20 28 ..........(tracking-marker.(or.(
48480 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 72 6b 65 72 29 plist-get.info.:tracking-marker)
484a0 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 73 ...............................s
484c0 74 61 72 74 2d 6d 61 72 6b 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 3b 3b 20 73 74 61 72 74 2d tart-marker))..........;;.start-
484e0 6d 61 72 6b 65 72 20 6d 61 79 20 68 61 76 65 20 62 65 65 6e 20 6d 6f 76 65 64 20 69 66 20 3a 62 marker.may.have.been.moved.if.:b
48500 75 66 66 65 72 20 77 61 73 20 72 65 61 64 2d 6f 6e 6c 79 0a 20 20 20 20 20 20 20 20 20 28 67 70 uffer.was.read-only..........(gp
48520 74 65 6c 2d 62 75 66 66 65 72 20 28 6d 61 72 6b 65 72 2d 62 75 66 66 65 72 20 73 74 61 72 74 2d tel-buffer.(marker-buffer.start-
48540 6d 61 72 6b 65 72 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 marker))).....(with-current-buff
48560 65 72 20 67 70 74 65 6c 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20 28 69 66 20 28 6e 6f 74 20 74 er.gptel-buffer.......(if.(not.t
48580 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 29 20 20 20 20 20 20 20 20 20 3b 45 6d 70 74 79 20 72 racking-marker).........;Empty.r
485a0 65 73 70 6f 6e 73 65 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 6d 6f esponse...........(when.gptel-mo
485c0 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 45 6d 70 74 79 de.(gptel--update-status.".Empty
485e0 20 72 65 73 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 28 70 .response".'success)).........(p
48600 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 6e 20 ulse-momentary-highlight-region.
48620 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 20 20 start-marker.tracking-marker)...
48640 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 20 20 20 ......(when.gptel-mode..........
48660 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 20 28 67 6f 74 6f 2d 63 68 61 72 20 74 72 61 63 .(save-excursion.(goto-char.trac
48680 6b 69 6e 67 2d 6d 61 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 king-marker)....................
486a0 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 73 65 .......(insert.gptel-response-se
486c0 70 61 72 61 74 6f 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 parator.........................
486e0 20 20 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 ..........(gptel-prompt-prefix-s
48700 74 72 69 6e 67 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 75 70 64 61 74 tring)))...........(gptel--updat
48720 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 73 29 29 29 29 0a e-status..".Ready".'success)))).
48740 20 20 20 20 3b 3b 20 52 75 6e 20 68 6f 6f 6b 20 69 6e 20 76 69 73 69 62 6c 65 20 77 69 6e 64 6f ....;;.Run.hook.in.visible.windo
48760 77 20 74 6f 20 73 65 74 20 77 69 6e 64 6f 77 2d 70 6f 69 6e 74 2c 20 42 55 47 20 23 32 36 39 0a w.to.set.window-point,.BUG.#269.
48780 20 20 20 20 28 69 66 2d 6c 65 74 2a 20 28 28 67 70 74 65 6c 2d 77 69 6e 64 6f 77 20 28 67 65 74 ....(if-let*.((gptel-window.(get
487a0 2d 62 75 66 66 65 72 2d 77 69 6e 64 6f 77 20 67 70 74 65 6c 2d 62 75 66 66 65 72 20 27 76 69 73 -buffer-window.gptel-buffer.'vis
487c0 69 62 6c 65 29 29 29 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 ible))).........(with-selected-w
487e0 69 6e 64 6f 77 20 67 70 74 65 6c 2d 77 69 6e 64 6f 77 0a 20 20 20 20 20 20 20 20 20 20 28 72 75 indow.gptel-window...........(ru
48800 6e 2d 68 6f 6f 6b 2d 77 69 74 68 2d 61 72 67 73 0a 20 20 20 20 20 20 20 20 20 20 20 27 67 70 74 n-hook-with-args............'gpt
48820 65 6c 2d 70 6f 73 74 2d 72 65 73 70 6f 6e 73 65 2d 66 75 6e 63 74 69 6f 6e 73 0a 20 20 20 20 20 el-post-response-functions......
48840 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 72 ......(marker-position.start-mar
48860 6b 65 72 29 20 28 6d 61 72 6b 65 72 2d 70 6f 73 69 74 69 6f 6e 20 74 72 61 63 6b 69 6e 67 2d 6d ker).(marker-position.tracking-m
48880 61 72 6b 65 72 29 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 arker))).......(with-current-buf
488a0 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 28 72 75 6e 2d 68 6f fer.gptel-buffer.........(run-ho
488c0 6f 6b 2d 77 69 74 68 2d 61 72 67 73 0a 20 20 20 20 20 20 20 20 20 27 67 70 74 65 6c 2d 70 6f 73 ok-with-args..........'gptel-pos
488e0 74 2d 72 65 73 70 6f 6e 73 65 2d 66 75 6e 63 74 69 6f 6e 73 0a 20 20 20 20 20 20 20 20 20 28 6d t-response-functions..........(m
48900 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 20 28 6d 61 arker-position.start-marker).(ma
48920 72 6b 65 72 2d 70 6f 73 69 74 69 6f 6e 20 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 29 29 29 rker-position.tracking-marker)))
48940 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 68 61 6e 64 6c 65 2d 65 72 72 6f 72 20 )))..(defun.gptel--handle-error.
48960 28 66 73 6d 29 0a 20 20 22 43 68 65 63 6b 20 66 6f 72 20 65 72 72 6f 72 73 20 69 6e 20 72 65 71 (fsm)..."Check.for.errors.in.req
48980 75 65 73 74 20 73 74 61 74 65 20 46 53 4d 20 70 65 72 66 6f 72 6d 20 55 49 20 75 70 64 61 74 65 uest.state.FSM.perform.UI.update
489a0 73 2e 0a 0a 52 75 6e 20 70 6f 73 74 2d 72 65 73 70 6f 6e 73 65 20 68 6f 6f 6b 73 2e 22 0a 20 20 s...Run.post-response.hooks."...
489c0 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 69 6e 66 6f 20 28 67 70 74 65 6c 2d 66 73 6d 2d 69 6e 66 (when-let*.((info.(gptel-fsm-inf
489e0 6f 20 66 73 6d 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 2d 64 61 74 o.fsm))...............(error-dat
48a00 61 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 65 72 72 6f 72 29 29 0a 20 20 20 20 20 a.(plist-get.info.:error))......
48a20 20 20 20 20 20 20 20 20 20 28 68 74 74 70 2d 6d 73 67 20 20 20 28 70 6c 69 73 74 2d 67 65 74 20 .........(http-msg...(plist-get.
48a40 69 6e 66 6f 20 3a 73 74 61 74 75 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 info.:status))...............(gp
48a60 74 65 6c 2d 62 75 66 66 65 72 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 62 75 66 66 tel-buffer.(plist-get.info.:buff
48a80 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 74 61 72 74 2d 6d 61 72 6b 65 72 er))...............(start-marker
48aa0 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 20 .(plist-get.info.:position))....
48ac0 20 20 20 20 20 20 20 20 20 20 20 28 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 20 28 6f 72 20 ...........(tracking-marker.(or.
48ae0 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 72 6b 65 72 (plist-get.info.:tracking-marker
48b00 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 )...............................
48b20 73 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 20 20 20 28 62 61 start-marker))...............(ba
48b40 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 28 67 70 74 65 6c ckend-name................(gptel
48b60 2d 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 28 62 -backend-name.................(b
48b80 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 6e 64 uffer-local-value.'gptel-backend
48ba0 20 67 70 74 65 6c 2d 62 75 66 66 65 72 29 29 29 29 0a 20 20 20 20 28 69 66 20 28 73 74 72 69 6e .gptel-buffer)))).....(if.(strin
48bc0 67 70 20 65 72 72 6f 72 2d 64 61 74 61 29 0a 20 20 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 gp.error-data).........(message.
48be0 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
48c00 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 64 61 74 .http-msg.(string-trim.error-dat
48c20 61 29 29 0a 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 65 72 72 6f 72 2d 74 79 70 a)).......(when-let*.((error-typ
48c40 65 20 28 70 6c 69 73 74 2d 67 65 74 20 65 72 72 6f 72 2d 64 61 74 61 20 3a 74 79 70 65 29 29 29 e.(plist-get.error-data.:type)))
48c60 0a 20 20 20 20 20 20 20 20 28 73 65 74 71 20 68 74 74 70 2d 6d 73 67 20 28 63 6f 6e 63 61 74 20 .........(setq.http-msg.(concat.
48c80 22 28 22 20 20 68 74 74 70 2d 6d 73 67 20 22 29 20 22 20 28 73 74 72 69 6e 67 2d 74 72 69 6d 20 "("..http-msg.").".(string-trim.
48ca0 65 72 72 6f 72 2d 74 79 70 65 29 29 29 29 0a 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 error-type)))).......(when-let*.
48cc0 28 28 65 72 72 6f 72 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 ((error-msg.(plist-get.error-dat
48ce0 61 20 3a 6d 65 73 73 61 67 65 29 29 29 0a 20 20 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 a.:message))).........(message."
48d00 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 20 %s.error:.(%s).%s".backend-name.
48d20 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 29 http-msg.(string-trim.error-msg)
48d40 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 67 70 74 ))).....(with-current-buffer.gpt
48d60 65 6c 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 6d 6f 64 65 el-buffer.......(when.gptel-mode
48d80 0a 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 0a 20 .........(gptel--update-status..
48da0 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 20 45 72 72 6f 72 3a 20 25 73 22 20 68 74 74 ........(format.".Error:.%s".htt
48dc0 70 2d 6d 73 67 29 20 27 65 72 72 6f 72 29 29 29 0a 20 20 20 20 28 69 66 2d 6c 65 74 2a 20 28 28 p-msg).'error))).....(if-let*.((
48de0 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 77 20 gptel-window.(get-buffer-window.
48e00 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 20 20 gptel-buffer.'visible)))........
48e20 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 2d 77 69 6e .(with-selected-window.gptel-win
48e40 64 6f 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 dow...........(run-hook-with-arg
48e60 73 0a 20 20 20 20 20 20 20 20 20 20 20 27 67 70 74 65 6c 2d 70 6f 73 74 2d 72 65 73 70 6f 6e 73 s............'gptel-post-respons
48e80 65 2d 66 75 6e 63 74 69 6f 6e 73 0a 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 72 6b 65 72 2d 70 e-functions............(marker-p
48ea0 6f 73 69 74 69 6f 6e 20 73 74 61 72 74 2d 6d 61 72 6b 65 72 29 20 28 6d 61 72 6b 65 72 2d 70 6f osition.start-marker).(marker-po
48ec0 73 69 74 69 6f 6e 20 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 29 29 29 0a 20 20 20 20 20 20 sition.tracking-marker))).......
48ee0 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 65 (with-current-buffer.gptel-buffe
48f00 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 0a 20 20 r.........(run-hook-with-args...
48f20 20 20 20 20 20 20 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 .......'gptel-post-response-func
48f40 74 69 6f 6e 73 0a 20 20 20 20 20 20 20 20 20 28 6d 61 72 6b 65 72 2d 70 6f 73 69 74 69 6f 6e 20 tions..........(marker-position.
48f60 73 74 61 72 74 2d 6d 61 72 6b 65 72 29 20 28 6d 61 72 6b 65 72 2d 70 6f 73 69 74 69 6f 6e 20 74 start-marker).(marker-position.t
48f80 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 racking-marker))))))..(defun.gpt
48fa0 65 6c 2d 2d 68 61 6e 64 6c 65 2d 74 6f 6f 6c 2d 75 73 65 20 28 66 73 6d 29 0a 20 20 22 52 75 6e el--handle-tool-use.(fsm)..."Run
48fc0 20 74 6f 6f 6c 20 63 61 6c 6c 73 20 63 61 70 74 75 72 65 64 20 69 6e 20 46 53 4d 2c 20 61 6e 64 .tool.calls.captured.in.FSM,.and
48fe0 20 61 64 76 61 6e 63 65 20 74 68 65 20 73 74 61 74 65 20 6d 61 63 68 69 6e 65 20 77 69 74 68 20 .advance.the.state.machine.with.
49000 74 68 65 20 72 65 73 75 6c 74 73 2e 22 0a 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 69 6e 66 the.results."...(when-let*.((inf
49020 6f 20 28 67 70 74 65 6c 2d 66 73 6d 2d 69 6e 66 6f 20 66 73 6d 29 29 0a 20 20 20 20 20 20 20 20 o.(gptel-fsm-info.fsm)).........
49040 20 20 20 20 20 20 28 62 61 63 6b 65 6e 64 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a ......(backend.(plist-get.info.:
49060 62 61 63 6b 65 6e 64 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 54 68 69 73 20 backend))...............;;.This.
49080 66 75 6e 63 74 69 6f 6e 20 6d 69 67 68 74 20 72 75 6e 20 6d 61 6e 79 20 74 69 6d 65 73 2c 20 73 function.might.run.many.times,.s
490a0 6f 20 6f 6e 6c 79 20 61 63 74 20 6f 6e 20 74 68 65 20 72 65 6d 61 69 6e 69 6e 67 20 74 6f 6f 6c o.only.act.on.the.remaining.tool
490c0 20 63 61 6c 6c 73 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 6f 6f 6c 2d 75 73 65 20 .calls................(tool-use.
490e0 28 63 6c 2d 72 65 6d 6f 76 65 2d 69 66 20 28 6c 61 6d 62 64 61 20 28 74 63 29 20 28 70 6c 69 73 (cl-remove-if.(lambda.(tc).(plis
49100 74 2d 67 65 74 20 74 63 20 3a 72 65 73 75 6c 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 t-get.tc.:result))..............
49120 20 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 6c 69 73 74 2d .........................(plist-
49140 67 65 74 20 69 6e 66 6f 20 3a 74 6f 6f 6c 2d 75 73 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 get.info.:tool-use)))...........
49160 20 20 20 20 28 6e 74 6f 6f 6c 73 20 28 6c 65 6e 67 74 68 20 74 6f 6f 6c 2d 75 73 65 29 29 0a 20 ....(ntools.(length.tool-use))..
49180 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 6f 6f 6c 2d 69 64 78 20 30 29 29 0a 20 20 20 20 28 .............(tool-idx.0)).....(
491a0 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 69 with-current-buffer.(plist-get.i
491c0 6e 66 6f 20 3a 62 75 66 66 65 72 29 0a 20 20 20 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 6d nfo.:buffer).......(when.gptel-m
491e0 6f 64 65 0a 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 ode.........(gptel--update-statu
49200 73 0a 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 20 43 61 6c 6c 69 6e 67 20 74 6f 6f s..........(format.".Calling.too
49220 6c 2e 2e 2e 22 20 29 20 27 6d 6f 64 65 2d 6c 69 6e 65 2d 65 6d 70 68 61 73 69 73 29 29 0a 0a 20 l...".).'mode-line-emphasis))...
49240 20 20 20 20 20 28 6c 65 74 20 28 28 72 65 73 75 6c 74 2d 61 6c 69 73 74 29 20 28 70 65 6e 64 69 .....(let.((result-alist).(pendi
49260 6e 67 2d 63 61 6c 6c 73 29 29 0a 20 20 20 20 20 20 20 20 28 6d 61 70 63 20 20 20 20 20 20 20 20 ng-calls)).........(mapc........
49280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 43 6f 6e 73 74 72 75 63 74 20 66 ...................;.Construct.f
492a0 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 73 0a 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 unction.calls..........(lambda.(
492c0 74 6f 6f 6c 2d 63 61 6c 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 72 65 63 20 28 28 tool-call)............(letrec.((
492e0 61 72 67 73 20 28 70 6c 69 73 74 2d 67 65 74 20 74 6f 6f 6c 2d 63 61 6c 6c 20 3a 61 72 67 73 29 args.(plist-get.tool-call.:args)
49300 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 61 6d 65 20 28 70 6c 69 ).....................(name.(pli
49320 73 74 2d 67 65 74 20 74 6f 6f 6c 2d 63 61 6c 6c 20 3a 6e 61 6d 65 29 29 0a 20 20 20 20 20 20 20 st-get.tool-call.:name))........
49340 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 72 67 2d 76 61 6c 75 65 73 20 6e 69 6c 29 0a 20 20 .............(arg-values.nil)...
49360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 6f 6f 6c 2d 73 70 65 63 0a 20 20 20 ..................(tool-spec....
49380 20 20 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 69 66 0a 20 20 ..................(cl-find-if...
493a0 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 73 29 ....................(lambda.(ts)
493c0 20 28 65 71 75 61 6c 20 28 67 70 74 65 6c 2d 74 6f 6f 6c 2d 6e 61 6d 65 20 74 73 29 20 6e 61 6d .(equal.(gptel-tool-name.ts).nam
493e0 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 70 6c 69 73 74 e)).......................(plist
49400 2d 67 65 74 20 69 6e 66 6f 20 3a 74 6f 6f 6c 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 -get.info.:tools))).............
49420 20 20 20 20 20 20 20 20 28 70 72 6f 63 65 73 73 2d 74 6f 6f 6c 2d 72 65 73 75 6c 74 0a 20 20 20 ........(process-tool-result....
49440 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 72 65 73 75 6c ..................(lambda.(resul
49460 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 28 70 6c 69 73 74 t)........................(plist
49480 2d 70 75 74 20 69 6e 66 6f 20 3a 74 6f 6f 6c 2d 73 75 63 63 65 73 73 20 74 29 0a 20 20 20 20 20 -put.info.:tool-success.t)......
494a0 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 72 65 73 75 6c 74 20 ..................(let.((result.
494c0 28 67 70 74 65 6c 2d 2d 74 6f 2d 73 74 72 69 6e 67 20 72 65 73 75 6c 74 29 29 29 0a 20 20 20 20 (gptel--to-string.result))).....
494e0 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.
49500 74 6f 6f 6c 2d 63 61 6c 6c 20 3a 72 65 73 75 6c 74 20 72 65 73 75 6c 74 29 0a 20 20 20 20 20 20 tool-call.:result.result).......
49520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 6c 69 73 74 20 74 ...................(push.(list.t
49540 6f 6f 6c 2d 73 70 65 63 20 61 72 67 73 20 72 65 73 75 6c 74 29 20 72 65 73 75 6c 74 2d 61 6c 69 ool-spec.args.result).result-ali
49560 73 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 28 63 6c 2d st))........................(cl-
49580 69 6e 63 66 20 74 6f 6f 6c 2d 69 64 78 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 incf.tool-idx)..................
495a0 20 20 20 20 20 20 28 77 68 65 6e 20 28 3e 3d 20 74 6f 6f 6c 2d 69 64 78 20 6e 74 6f 6f 6c 73 29 ......(when.(>=.tool-idx.ntools)
495c0 20 3b 20 41 6c 6c 20 74 6f 6f 6c 73 20 68 61 76 65 20 72 75 6e 0a 20 20 20 20 20 20 20 20 20 20 .;.All.tools.have.run...........
495e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 69 6e 6a 65 63 74 2d 70 72 ...............(gptel--inject-pr
49600 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 20 20 20 20 20 62 ompt...........................b
49620 61 63 6b 65 6e 64 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 64 61 74 61 29 0a 20 20 ackend.(plist-get.info.:data)...
49640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d ........................(gptel--
49660 70 61 72 73 65 2d 74 6f 6f 6c 2d 72 65 73 75 6c 74 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 parse-tool-results..............
49680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 61 63 6b 65 6e 64 20 28 70 6c 69 73 74 2d 67 65 74 ..............backend.(plist-get
496a0 20 69 6e 66 6f 20 3a 74 6f 6f 6c 2d 75 73 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 .info.:tool-use)))..............
496c0 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 28 70 6c 69 73 74 2d 67 65 74 20 ............(funcall.(plist-get.
496e0 69 6e 66 6f 20 3a 63 61 6c 6c 62 61 63 6b 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 info.:callback).................
49700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 20 27 74 6f 6f 6c 2d 72 65 ..................(cons.'tool-re
49720 73 75 6c 74 20 72 65 73 75 6c 74 2d 61 6c 69 73 74 29 20 69 6e 66 6f 29 0a 20 20 20 20 20 20 20 sult.result-alist).info)........
49740 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 66 73 6d 2d 74 72 ..................(gptel--fsm-tr
49760 61 6e 73 69 74 69 6f 6e 20 66 73 6d 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 ansition.fsm)))))..............(
49780 69 66 20 28 6e 75 6c 6c 20 74 6f 6f 6c 2d 73 70 65 63 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 if.(null.tool-spec).............
497a0 20 20 20 20 20 28 69 66 20 28 65 71 75 61 6c 20 6e 61 6d 65 20 67 70 74 65 6c 2d 2d 65 72 73 61 .....(if.(equal.name.gptel--ersa
497c0 74 7a 2d 6a 73 6f 6e 2d 74 6f 6f 6c 29 20 3b 43 6f 75 6c 64 20 62 65 20 61 20 4a 53 4f 4e 20 72 tz-json-tool).;Could.be.a.JSON.r
497e0 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 20 3b 3b 20 esponse......................;;.
49800 48 61 6e 64 6c 65 20 73 74 72 75 63 74 75 72 65 64 20 4a 53 4f 4e 20 6f 75 74 70 75 74 20 73 75 Handle.structured.JSON.output.su
49820 70 70 6c 69 65 64 20 61 73 20 74 6f 6f 6c 20 63 61 6c 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 pplied.as.tool.call.............
49840 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 .........(funcall.(plist-get.inf
49860 6f 20 3a 63 61 6c 6c 62 61 63 6b 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 o.:callback)....................
49880 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 6a 73 6f 6e 2d 65 6e 63 6f 64 65 20 28 ...........(gptel--json-encode.(
498a0 70 6c 69 73 74 2d 67 65 74 20 74 6f 6f 6c 2d 63 61 6c 6c 20 3a 61 72 67 73 29 29 0a 20 20 20 20 plist-get.tool-call.:args)).....
498c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 66 6f 29 0a ..........................info).
498e0 20 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 55 6e 6b ...................(message."Unk
49900 6e 6f 77 6e 20 74 6f 6f 6c 20 63 61 6c 6c 65 64 20 62 79 20 6d 6f 64 65 6c 3a 20 25 73 22 20 6e nown.tool.called.by.model:.%s".n
49920 61 6d 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 61 72 67 2d 76 ame))................(setq.arg-v
49940 61 6c 75 65 73 0a 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 alues......................(mapc
49960 61 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 ar.......................(lambda
49980 20 28 61 72 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 28 .(arg).........................(
499a0 6c 65 74 20 28 28 6b 65 79 20 28 69 6e 74 65 72 6e 20 28 63 6f 6e 63 61 74 20 22 3a 22 20 28 70 let.((key.(intern.(concat.":".(p
499c0 6c 69 73 74 2d 67 65 74 20 61 72 67 20 3a 6e 61 6d 65 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 list-get.arg.:name))))).........
499e0 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 61 72 67 ..................(plist-get.arg
49a00 73 20 6b 65 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 28 s.key))).......................(
49a20 67 70 74 65 6c 2d 74 6f 6f 6c 2d 61 72 67 73 20 74 6f 6f 6c 2d 73 70 65 63 29 29 29 0a 20 20 20 gptel-tool-args.tool-spec)))....
49a40 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 43 68 65 63 6b 20 69 66 20 74 6f 6f 6c 20 72 65 71 ............;;.Check.if.tool.req
49a60 75 69 72 65 73 20 63 6f 6e 66 69 72 6d 61 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 uires.confirmation..............
49a80 20 20 28 69 66 20 28 61 6e 64 20 67 70 74 65 6c 2d 63 6f 6e 66 69 72 6d 2d 74 6f 6f 6c 2d 63 61 ..(if.(and.gptel-confirm-tool-ca
49aa0 6c 6c 73 20 28 6f 72 20 28 65 71 20 67 70 74 65 6c 2d 63 6f 6e 66 69 72 6d 2d 74 6f 6f 6c 2d 63 lls.(or.(eq.gptel-confirm-tool-c
49ac0 61 6c 6c 73 20 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 alls.t).........................
49ae0 20 20 20 20 20 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 .............................(gp
49b00 74 65 6c 2d 74 6f 6f 6c 2d 63 6f 6e 66 69 72 6d 20 74 6f 6f 6c 2d 73 70 65 63 29 29 29 0a 20 20 tel-tool-confirm.tool-spec)))...
49b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 6c 69 73 74 20 74 6f 6f .................(push.(list.too
49b40 6c 2d 73 70 65 63 20 61 72 67 2d 76 61 6c 75 65 73 20 70 72 6f 63 65 73 73 2d 74 6f 6f 6c 2d 72 l-spec.arg-values.process-tool-r
49b60 65 73 75 6c 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 esult)..........................
49b80 70 65 6e 64 69 6e 67 2d 63 61 6c 6c 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 pending-calls)..................
49ba0 3b 3b 20 49 66 20 6e 6f 74 2c 20 72 75 6e 20 74 68 65 20 74 6f 6f 6c 0a 20 20 20 20 20 20 20 20 ;;.If.not,.run.the.tool.........
49bc0 20 20 20 20 20 20 20 20 20 28 69 66 20 28 67 70 74 65 6c 2d 74 6f 6f 6c 2d 61 73 79 6e 63 20 74 .........(if.(gptel-tool-async.t
49be0 6f 6f 6c 2d 73 70 65 63 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 ool-spec)......................(
49c00 61 70 70 6c 79 20 28 67 70 74 65 6c 2d 74 6f 6f 6c 2d 66 75 6e 63 74 69 6f 6e 20 74 6f 6f 6c 2d apply.(gptel-tool-function.tool-
49c20 73 70 65 63 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 spec)...........................
49c40 20 20 70 72 6f 63 65 73 73 2d 74 6f 6f 6c 2d 72 65 73 75 6c 74 20 61 72 67 2d 76 61 6c 75 65 73 ..process-tool-result.arg-values
49c60 29 0a 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 72 65 73 75 )....................(let.((resu
49c80 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 28 63 6f lt...........................(co
49ca0 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20 65 72 72 64 61 74 61 0a 20 20 20 20 20 20 20 20 20 20 20 ndition-case.errdata............
49cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 70 70 6c 79 20 28 67 70 74 65 6c ...................(apply.(gptel
49ce0 2d 74 6f 6f 6c 2d 66 75 6e 63 74 69 6f 6e 20 74 6f 6f 6c 2d 73 70 65 63 29 20 61 72 67 2d 76 61 -tool-function.tool-spec).arg-va
49d00 6c 75 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 20 20 20 20 20 lues)...........................
49d20 20 20 28 65 72 72 6f 72 20 28 6d 61 70 63 6f 6e 63 61 74 20 23 27 67 70 74 65 6c 2d 2d 74 6f 2d ..(error.(mapconcat.#'gptel--to-
49d40 73 74 72 69 6e 67 20 65 72 72 64 61 74 61 20 22 20 22 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 string.errdata."."))))).........
49d60 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 70 72 6f 63 65 73 73 2d 74 6f .............(funcall.process-to
49d80 6f 6c 2d 72 65 73 75 6c 74 20 72 65 73 75 6c 74 29 29 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 ol-result.result))))))).........
49da0 20 74 6f 6f 6c 2d 75 73 65 29 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 70 65 6e 64 69 6e 67 .tool-use).........(when.pending
49dc0 2d 63 61 6c 6c 73 0a 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 67 70 74 65 6c 2d 2d 66 73 -calls...........(setq.gptel--fs
49de0 6d 2d 6c 61 73 74 20 66 73 6d 29 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 67 70 74 65 m-last.fsm)...........(when.gpte
49e00 6c 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 0a 20 20 20 l-mode.(gptel--update-status....
49e20 20 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 61 74 .........................(format
49e40 20 22 20 52 75 6e 20 74 6f 6f 6c 73 3f 22 20 29 20 27 6d 6f 64 65 2d 6c 69 6e 65 2d 65 6d 70 68 .".Run.tools?".).'mode-line-emph
49e60 61 73 69 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 28 70 6c 69 73 74 asis))...........(funcall.(plist
49e80 2d 67 65 74 20 69 6e 66 6f 20 3a 63 61 6c 6c 62 61 63 6b 29 0a 20 20 20 20 20 20 20 20 20 20 20 -get.info.:callback)............
49ea0 20 20 20 20 20 20 20 20 28 63 6f 6e 73 20 27 74 6f 6f 6c 2d 63 61 6c 6c 20 70 65 6e 64 69 6e 67 ........(cons.'tool-call.pending
49ec0 2d 63 61 6c 6c 73 29 20 69 6e 66 6f 29 29 29 29 29 29 0a 0a 3b 3b 3b 3b 20 53 74 61 74 65 20 6d -calls).info))))))..;;;;.State.m
49ee0 61 63 68 69 6e 65 20 70 72 65 64 69 63 61 74 65 73 0a 3b 3b 20 50 72 65 64 69 63 61 74 65 73 20 achine.predicates.;;.Predicates.
49f00 75 73 65 64 20 74 6f 20 66 69 6e 64 20 74 68 65 20 6e 65 78 74 20 73 74 61 74 65 20 74 6f 20 74 used.to.find.the.next.state.to.t
49f20 72 61 6e 73 69 74 69 6f 6e 20 74 6f 2c 20 73 65 65 0a 3b 3b 20 60 67 70 74 65 6c 2d 72 65 71 75 ransition.to,.see.;;.`gptel-requ
49f40 65 73 74 2d 2d 74 72 61 6e 73 69 74 69 6f 6e 73 27 2e 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c est--transitions'...(defun.gptel
49f60 2d 2d 65 72 72 6f 72 2d 70 20 28 69 6e 66 6f 29 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f --error-p.(info).(plist-get.info
49f80 20 3a 65 72 72 6f 72 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 74 6f 6f 6c 2d 75 73 .:error))..(defun.gptel--tool-us
49fa0 65 2d 70 20 28 69 6e 66 6f 29 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 74 6f 6f 6c e-p.(info).(plist-get.info.:tool
49fc0 2d 75 73 65 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 74 6f 6f 6c 2d 72 65 73 75 6c -use))..(defun.gptel--tool-resul
49fe0 74 2d 70 20 28 69 6e 66 6f 29 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 74 6f 6f 6c t-p.(info).(plist-get.info.:tool
4a000 2d 73 75 63 63 65 73 73 29 29 0a 0a 3b 3b 20 54 4f 44 4f 28 70 72 6f 6d 70 74 2d 6c 69 73 74 29 -success))..;;.TODO(prompt-list)
4a020 3a 20 44 6f 63 75 6d 65 6e 74 20 6e 65 77 20 70 72 6f 6d 70 74 20 69 6e 70 75 74 20 66 6f 72 6d :.Document.new.prompt.input.form
4a040 61 74 20 74 6f 20 60 67 70 74 65 6c 2d 72 65 71 75 65 73 74 27 2e 0a 0c 0a 3b 3b 3b 20 53 65 6e at.to.`gptel-request'....;;;.Sen
4a060 64 20 71 75 65 72 69 65 73 2c 20 68 61 6e 64 6c 65 20 72 65 73 70 6f 6e 73 65 73 0a 28 63 6c 2d d.queries,.handle.responses.(cl-
4a080 64 65 66 75 6e 20 67 70 74 65 6c 2d 72 65 71 75 65 73 74 0a 20 20 20 20 28 26 6f 70 74 69 6f 6e defun.gptel-request.....(&option
4a0a0 61 6c 20 70 72 6f 6d 70 74 20 26 6b 65 79 20 63 61 6c 6c 62 61 63 6b 0a 20 20 20 20 20 20 20 20 al.prompt.&key.callback.........
4a0c0 20 20 20 20 20 20 20 28 62 75 66 66 65 72 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29 .......(buffer.(current-buffer))
4a0e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 6f 73 69 74 69 6f 6e 20 63 6f 6e 74 65 78 74 ................position.context
4a100 20 64 72 79 2d 72 75 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 74 72 65 61 6d 20 .dry-run................(stream.
4a120 6e 69 6c 29 20 28 69 6e 2d 70 6c 61 63 65 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 nil).(in-place.nil).............
4a140 20 20 20 28 73 79 73 74 65 6d 20 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 ...(system.gptel--system-message
4a160 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 63 68 65 6d 61 20 74 72 61 6e 73 66 6f 72 )................schema.transfor
4a180 6d 73 20 28 66 73 6d 20 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 66 73 6d 29 29 29 0a 20 20 22 52 65 ms.(fsm.(gptel-make-fsm)))..."Re
4a1a0 71 75 65 73 74 20 61 20 72 65 73 70 6f 6e 73 65 20 66 72 6f 6d 20 74 68 65 20 60 67 70 74 65 6c quest.a.response.from.the.`gptel
4a1c0 2d 62 61 63 6b 65 6e 64 27 20 66 6f 72 20 50 52 4f 4d 50 54 2e 0a 0a 54 68 65 20 72 65 71 75 65 -backend'.for.PROMPT...The.reque
4a1e0 73 74 20 69 73 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 2c 20 74 68 69 73 20 66 75 6e 63 74 69 6f st.is.asynchronous,.this.functio
4a200 6e 20 72 65 74 75 72 6e 73 20 69 6d 6d 65 64 69 61 74 65 6c 79 2e 0a 0a 49 66 20 50 52 4f 4d 50 n.returns.immediately...If.PROMP
4a220 54 20 69 73 0a 2d 20 61 20 73 74 72 69 6e 67 2c 20 69 74 20 69 73 20 75 73 65 64 20 74 6f 20 63 T.is.-.a.string,.it.is.used.to.c
4a240 72 65 61 74 65 20 61 20 66 75 6c 6c 20 70 72 6f 6d 70 74 20 73 75 69 74 61 62 6c 65 20 66 6f 72 reate.a.full.prompt.suitable.for
4a260 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 41 20 6c 69 73 74 20 ...sending.to.the.LLM..-.A.list.
4a280 6f 66 20 73 74 72 69 6e 67 73 2c 20 69 74 20 69 73 20 69 6e 74 65 72 70 72 65 74 65 64 20 61 73 of.strings,.it.is.interpreted.as
4a2a0 20 61 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 2c 20 69 2e 65 2e 20 61 0a 20 20 73 65 72 69 65 73 .a.conversation,.i.e..a...series
4a2c0 20 6f 66 20 61 6c 74 65 72 6e 61 74 69 6e 67 20 75 73 65 72 20 70 72 6f 6d 70 74 73 20 61 6e 64 .of.alternating.user.prompts.and
4a2e0 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 73 2e 0a 20 20 28 5c 22 75 73 65 72 20 6d 73 67 20 31 5c .LLM.responses....(\"user.msg.1\
4a300 22 20 5c 22 6c 6c 6d 20 6d 73 67 20 31 5c 22 20 5c 22 75 73 65 72 20 6d 73 67 20 32 5c 22 20 5c ".\"llm.msg.1\".\"user.msg.2\".\
4a320 22 6c 6c 6d 20 6d 73 67 20 32 5c 22 20 2e 2e 2e 29 0a 2d 20 6e 69 6c 20 62 75 74 20 72 65 67 69 "llm.msg.2\"....).-.nil.but.regi
4a340 6f 6e 20 69 73 20 61 63 74 69 76 65 2c 20 74 68 65 20 72 65 67 69 6f 6e 20 63 6f 6e 74 65 6e 74 on.is.active,.the.region.content
4a360 73 20 61 72 65 20 75 73 65 64 2e 0a 2d 20 6e 69 6c 2c 20 74 68 65 20 63 75 72 72 65 6e 74 20 62 s.are.used..-.nil,.the.current.b
4a380 75 66 66 65 72 27 73 20 63 6f 6e 74 65 6e 74 73 20 75 70 20 74 6f 20 28 70 6f 69 6e 74 29 20 61 uffer's.contents.up.to.(point).a
4a3a0 72 65 20 75 73 65 64 2e 0a 20 20 50 72 65 76 69 6f 75 73 20 72 65 73 70 6f 6e 73 65 73 20 66 72 re.used....Previous.responses.fr
4a3c0 6f 6d 20 74 68 65 20 4c 4c 4d 20 61 72 65 20 69 64 65 6e 74 69 66 69 65 64 20 61 73 20 72 65 73 om.the.LLM.are.identified.as.res
4a3e0 70 6f 6e 73 65 73 2e 0a 0a 4b 65 79 77 6f 72 64 20 61 72 67 75 6d 65 6e 74 73 3a 0a 0a 43 41 4c ponses...Keyword.arguments:..CAL
4a400 4c 42 41 43 4b 2c 20 69 66 20 73 75 70 70 6c 69 65 64 2c 20 69 73 20 61 20 66 75 6e 63 74 69 6f LBACK,.if.supplied,.is.a.functio
4a420 6e 20 6f 66 20 74 77 6f 20 61 72 67 75 6d 65 6e 74 73 2c 20 63 61 6c 6c 65 64 0a 77 69 74 68 20 n.of.two.arguments,.called.with.
4a440 74 68 65 20 52 45 53 50 4f 4e 53 45 20 28 75 73 75 61 6c 6c 79 20 61 20 73 74 72 69 6e 67 29 20 the.RESPONSE.(usually.a.string).
4a460 61 6e 64 20 49 4e 46 4f 20 28 61 20 70 6c 69 73 74 29 3a 0a 0a 20 28 66 75 6e 63 61 6c 6c 20 43 and.INFO.(a.plist):...(funcall.C
4a480 41 4c 4c 42 41 43 4b 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 ALLBACK.RESPONSE.INFO)..RESPONSE
4a4a0 20 69 73 0a 0a 2d 20 41 20 73 74 72 69 6e 67 20 69 66 20 74 68 65 20 72 65 71 75 65 73 74 20 77 .is..-.A.string.if.the.request.w
4a4c0 61 73 20 73 75 63 63 65 73 73 66 75 6c 0a 2d 20 6e 69 6c 20 69 66 20 74 68 65 72 65 20 77 61 73 as.successful.-.nil.if.there.was
4a4e0 20 6e 6f 20 72 65 73 70 6f 6e 73 65 20 6f 72 20 61 6e 20 65 72 72 6f 72 2e 0a 0a 54 68 65 73 65 .no.response.or.an.error...These
4a500 20 61 72 65 20 74 68 65 20 6f 6e 6c 79 20 74 77 6f 20 63 61 73 65 73 20 79 6f 75 20 74 79 70 69 .are.the.only.two.cases.you.typi
4a520 63 61 6c 6c 79 20 6e 65 65 64 20 74 6f 20 63 6f 6e 73 69 64 65 72 2c 0a 75 6e 6c 65 73 73 20 79 cally.need.to.consider,.unless.y
4a540 6f 75 20 6e 65 65 64 20 74 6f 20 63 6c 65 61 6e 20 75 70 20 61 66 74 65 72 20 61 62 6f 72 74 65 ou.need.to.clean.up.after.aborte
4a560 64 20 72 65 71 75 65 73 74 73 2c 20 75 73 65 20 4c 4c 4d 0a 74 6f 6f 6c 73 2c 20 68 61 6e 64 6c d.requests,.use.LLM.tools,.handl
4a580 65 20 5c 22 72 65 61 73 6f 6e 69 6e 67 5c 22 20 63 6f 6e 74 65 6e 74 20 73 70 65 63 69 61 6c 6c e.\"reasoning\".content.speciall
4a5a0 79 20 6f 72 20 73 74 72 65 61 6d 0a 72 65 73 70 6f 6e 73 65 73 20 28 73 65 65 20 53 54 52 45 41 y.or.stream.responses.(see.STREA
4a5c0 4d 29 2e 20 20 49 6e 20 74 68 65 73 65 20 63 61 73 65 73 2c 20 52 45 53 50 4f 4e 53 45 20 63 61 M)...In.these.cases,.RESPONSE.ca
4a5e0 6e 20 62 65 0a 0a 2d 20 54 68 65 20 73 79 6d 62 6f 6c 20 60 61 62 6f 72 74 27 20 69 66 20 74 68 n.be..-.The.symbol.`abort'.if.th
4a600 65 20 72 65 71 75 65 73 74 20 69 73 20 61 62 6f 72 74 65 64 2c 20 73 65 65 20 60 67 70 74 65 6c e.request.is.aborted,.see.`gptel
4a620 2d 61 62 6f 72 74 27 2e 0a 0a 2d 20 41 20 63 6f 6e 73 20 63 65 6c 6c 20 6f 66 20 74 68 65 20 66 -abort'...-.A.cons.cell.of.the.f
4a640 6f 72 6d 0a 0a 20 20 28 74 6f 6f 6c 2d 63 61 6c 6c 20 2e 20 28 28 54 4f 4f 4c 20 41 52 47 53 20 orm....(tool-call...((TOOL.ARGS.
4a660 43 42 29 20 2e 2e 2e 29 29 0a 0a 20 20 77 68 65 72 65 20 54 4f 4f 4c 20 69 73 20 61 20 67 70 74 CB)....))....where.TOOL.is.a.gpt
4a680 65 6c 2d 74 6f 6f 6c 20 73 74 72 75 63 74 2c 20 41 52 47 53 20 69 73 20 61 20 70 6c 69 73 74 20 el-tool.struct,.ARGS.is.a.plist.
4a6a0 6f 66 0a 20 20 61 72 67 75 6d 65 6e 74 73 2c 20 61 6e 64 20 43 42 20 69 73 20 61 20 66 75 6e 63 of...arguments,.and.CB.is.a.func
4a6c0 74 69 6f 6e 20 66 6f 72 20 68 61 6e 64 6c 69 6e 67 20 74 68 65 20 72 65 73 75 6c 74 73 2e 20 20 tion.for.handling.the.results...
4a6e0 59 6f 75 0a 20 20 63 61 6e 20 63 61 6c 6c 20 43 42 20 77 69 74 68 20 74 68 65 20 72 65 73 75 6c You...can.call.CB.with.the.resul
4a700 74 20 6f 66 20 63 61 6c 6c 69 6e 67 20 74 68 65 20 74 6f 6f 6c 20 74 6f 20 63 6f 6e 74 69 6e 75 t.of.calling.the.tool.to.continu
4a720 65 20 74 68 65 0a 20 20 72 65 71 75 65 73 74 2e 0a 0a 2d 20 41 20 63 6f 6e 73 20 63 65 6c 6c 20 e.the...request...-.A.cons.cell.
4a740 6f 66 20 74 68 65 20 66 6f 72 6d 0a 0a 20 20 28 74 6f 6f 6c 2d 72 65 73 75 6c 74 20 2e 20 28 28 of.the.form....(tool-result...((
4a760 54 4f 4f 4c 20 41 52 47 53 20 52 45 53 55 4c 54 29 20 2e 2e 2e 29 29 0a 0a 20 20 77 68 65 72 65 TOOL.ARGS.RESULT)....))....where
4a780 20 54 4f 4f 4c 20 69 73 20 61 20 67 70 74 65 6c 2d 74 6f 6f 6c 20 73 74 72 75 63 74 2c 20 41 52 .TOOL.is.a.gptel-tool.struct,.AR
4a7a0 47 53 20 69 73 20 61 20 70 6c 69 73 74 20 6f 66 0a 20 20 61 72 67 75 6d 65 6e 74 73 2c 20 61 6e GS.is.a.plist.of...arguments,.an
4a7c0 64 20 52 45 53 55 4c 54 20 77 61 73 20 72 65 74 75 72 6e 65 64 20 66 72 6f 6d 20 63 61 6c 6c 69 d.RESULT.was.returned.from.calli
4a7e0 6e 67 20 74 68 65 20 74 6f 6f 6c 0a 20 20 66 75 6e 63 74 69 6f 6e 2e 0a 0a 2d 20 41 20 63 6f 6e ng.the.tool...function...-.A.con
4a800 73 20 63 65 6c 6c 20 6f 66 20 74 68 65 20 66 6f 72 6d 0a 0a 20 20 28 72 65 61 73 6f 6e 69 6e 67 s.cell.of.the.form....(reasoning
4a820 20 2e 20 74 65 78 74 29 0a 0a 20 20 77 68 65 72 65 20 74 65 78 74 20 69 73 20 74 68 65 20 63 6f ...text)....where.text.is.the.co
4a840 6e 74 65 6e 74 73 20 6f 66 20 74 68 65 20 72 65 61 73 6f 6e 69 6e 67 20 62 6c 6f 63 6b 2e 20 20 ntents.of.the.reasoning.block...
4a860 28 41 6c 73 6f 20 73 65 65 0a 20 20 53 54 52 45 41 4d 20 69 66 20 79 6f 75 20 61 72 65 20 75 73 (Also.see...STREAM.if.you.are.us
4a880 69 6e 67 20 73 74 72 65 61 6d 69 6e 67 2e 29 0a 0a 53 65 65 20 60 67 70 74 65 6c 2d 2d 69 6e 73 ing.streaming.)..See.`gptel--ins
4a8a0 65 72 74 2d 72 65 73 70 6f 6e 73 65 27 20 66 6f 72 20 61 6e 20 65 78 61 6d 70 6c 65 20 63 61 6c ert-response'.for.an.example.cal
4a8c0 6c 62 61 63 6b 20 68 61 6e 64 6c 69 6e 67 20 61 6c 6c 0a 63 61 73 65 73 2e 0a 0a 54 68 65 20 49 lback.handling.all.cases...The.I
4a8e0 4e 46 4f 20 70 6c 69 73 74 20 68 61 73 20 28 61 74 20 6c 65 61 73 74 29 20 74 68 65 20 66 6f 6c NFO.plist.has.(at.least).the.fol
4a900 6c 6f 77 69 6e 67 20 6b 65 79 73 3a 0a 3a 64 61 74 61 20 20 20 20 20 20 20 20 20 2d 20 54 68 65 lowing.keys:.:data.........-.The
4a920 20 72 65 71 75 65 73 74 20 64 61 74 61 20 69 6e 63 6c 75 64 65 64 20 77 69 74 68 20 74 68 65 20 .request.data.included.with.the.
4a940 71 75 65 72 79 0a 3a 70 6f 73 69 74 69 6f 6e 20 20 20 20 20 2d 20 6d 61 72 6b 65 72 20 61 74 20 query.:position.....-.marker.at.
4a960 74 68 65 20 70 6f 69 6e 74 20 74 68 65 20 72 65 71 75 65 73 74 20 77 61 73 20 73 65 6e 74 2c 20 the.point.the.request.was.sent,.
4a980 75 6e 6c 65 73 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 50 4f 53 49 54 49 4f 4e 20 unless.................POSITION.
4a9a0 69 73 20 73 70 65 63 69 66 69 65 64 2e 0a 3a 62 75 66 66 65 72 20 20 20 20 20 20 20 2d 20 54 68 is.specified..:buffer.......-.Th
4a9c0 65 20 62 75 66 66 65 72 20 63 75 72 72 65 6e 74 20 77 68 65 6e 20 74 68 65 20 72 65 71 75 65 73 e.buffer.current.when.the.reques
4a9e0 74 20 77 61 73 20 73 65 6e 74 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 6e 6c 65 t.was.sent,.................unle
4aa00 73 73 20 42 55 46 46 45 52 20 69 73 20 73 70 65 63 69 66 69 65 64 2e 0a 3a 73 74 61 74 75 73 20 ss.BUFFER.is.specified..:status.
4aa20 20 20 20 20 20 20 2d 20 53 68 6f 72 74 20 73 74 72 69 6e 67 20 64 65 73 63 72 69 62 69 6e 67 20 ......-.Short.string.describing.
4aa40 74 68 65 20 72 65 73 75 6c 74 20 6f 66 20 74 68 65 20 72 65 71 75 65 73 74 2c 0a 20 20 20 20 20 the.result.of.the.request,......
4aa60 20 20 20 20 20 20 20 20 20 20 20 69 6e 63 6c 75 64 69 6e 67 20 70 6f 73 73 69 62 6c 65 20 48 54 ...........including.possible.HT
4aa80 54 50 20 65 72 72 6f 72 73 2e 0a 0a 45 78 61 6d 70 6c 65 20 6f 66 20 61 20 63 61 6c 6c 62 61 63 TP.errors...Example.of.a.callbac
4aaa0 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 68 k.that.messages.the.user.with.th
4aac0 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 28 e.response.and.info:...(lambda.(
4aae0 72 65 73 70 6f 6e 73 65 20 69 6e 66 6f 29 0a 20 20 28 69 66 20 28 73 74 72 69 6e 67 70 20 72 65 response.info)...(if.(stringp.re
4ab00 73 70 6f 6e 73 65 29 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 70 6f 73 6e 20 28 6d 61 72 6b 65 sponse).......(let.((posn.(marke
4ab20 72 2d 70 6f 73 69 74 69 6f 6e 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 70 6f 73 69 r-position.(plist-get.info.:posi
4ab40 74 69 6f 6e 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 20 20 28 62 75 66 66 65 tion))).............(buf..(buffe
4ab60 72 2d 6e 61 6d 65 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 29 r-name.(plist-get.info.:buffer))
4ab80 29 29 0a 20 20 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 5c 22 52 65 73 70 6f 6e 73 65 20 66 )).........(message.\"Response.f
4aba0 6f 72 20 72 65 71 75 65 73 74 20 66 72 6f 6d 20 25 53 20 61 74 20 25 64 3a 20 25 73 5c 22 0a 20 or.request.from.%S.at.%d:.%s\"..
4abc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 75 66 20 70 6f 73 6e 20 72 65 73 70 6f 6e 73 ................buf.posn.respons
4abe0 65 29 29 0a 20 20 20 20 28 6d 65 73 73 61 67 65 20 5c 22 67 70 74 65 6c 2d 72 65 71 75 65 73 74 e)).....(message.\"gptel-request
4ac00 20 66 61 69 6c 65 64 20 77 69 74 68 20 6d 65 73 73 61 67 65 3a 20 25 73 5c 22 0a 20 20 20 20 20 .failed.with.message:.%s\"......
4ac20 20 20 20 20 20 20 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 ........(plist-get.info.:status)
4ac40 29 29 29 0a 0a 4f 72 2c 20 66 6f 72 20 6a 75 73 74 20 74 68 65 20 72 65 73 70 6f 6e 73 65 3a 0a )))..Or,.for.just.the.response:.
4ac60 0a 20 28 6c 61 6d 62 64 61 20 28 72 65 73 70 6f 6e 73 65 20 5f 29 0a 20 20 3b 3b 20 44 6f 20 73 ..(lambda.(response._)...;;.Do.s
4ac80 6f 6d 65 74 68 69 6e 67 20 77 69 74 68 20 72 65 73 70 6f 6e 73 65 0a 20 20 28 6d 65 73 73 61 67 omething.with.response...(messag
4aca0 65 20 28 72 6f 74 31 33 2d 73 74 72 69 6e 67 20 72 65 73 70 6f 6e 73 65 29 29 29 0a 0a 49 66 20 e.(rot13-string.response)))..If.
4acc0 43 41 4c 4c 42 41 43 4b 20 69 73 20 6f 6d 69 74 74 65 64 2c 20 74 68 65 20 72 65 73 70 6f 6e 73 CALLBACK.is.omitted,.the.respons
4ace0 65 20 69 73 20 69 6e 73 65 72 74 65 64 20 61 74 20 74 68 65 20 70 6f 69 6e 74 20 74 68 65 0a 72 e.is.inserted.at.the.point.the.r
4ad00 65 71 75 65 73 74 20 77 61 73 20 73 65 6e 74 2e 0a 0a 53 54 52 45 41 4d 20 69 73 20 61 20 62 6f equest.was.sent...STREAM.is.a.bo
4ad20 6f 6c 65 61 6e 20 74 68 61 74 20 64 65 74 65 72 6d 69 6e 65 73 20 69 66 20 74 68 65 20 72 65 73 olean.that.determines.if.the.res
4ad40 70 6f 6e 73 65 20 73 68 6f 75 6c 64 20 62 65 0a 73 74 72 65 61 6d 65 64 2c 20 61 73 20 69 6e 20 ponse.should.be.streamed,.as.in.
4ad60 60 67 70 74 65 6c 2d 73 74 72 65 61 6d 27 2e 20 20 49 66 20 74 68 65 20 6d 6f 64 65 6c 20 6f 72 `gptel-stream'...If.the.model.or
4ad80 20 74 68 65 20 62 61 63 6b 65 6e 64 20 64 6f 65 73 0a 6e 6f 74 20 73 75 70 70 6f 72 74 20 73 74 .the.backend.does.not.support.st
4ada0 72 65 61 6d 69 6e 67 2c 20 74 68 69 73 20 77 69 6c 6c 20 62 65 20 69 67 6e 6f 72 65 64 2e 0a 0a reaming,.this.will.be.ignored...
4adc0 57 68 65 6e 20 73 74 72 65 61 6d 69 6e 67 20 72 65 73 70 6f 6e 73 65 73 0a 0a 2d 20 43 41 4c 4c When.streaming.responses..-.CALL
4ade0 42 41 43 4b 20 77 69 6c 6c 20 62 65 20 63 61 6c 6c 65 64 20 72 65 70 65 61 74 65 64 6c 79 20 77 BACK.will.be.called.repeatedly.w
4ae00 69 74 68 20 65 61 63 68 20 52 45 53 50 4f 4e 53 45 20 74 65 78 74 0a 20 20 63 68 75 6e 6b 20 28 ith.each.RESPONSE.text...chunk.(
4ae20 61 20 73 74 72 69 6e 67 29 20 61 73 20 69 74 20 69 73 20 72 65 63 65 69 76 65 64 2e 0a 2d 20 57 a.string).as.it.is.received..-.W
4ae40 68 65 6e 20 74 68 65 20 48 54 54 50 20 72 65 71 75 65 73 74 20 65 6e 64 73 20 73 75 63 63 65 73 hen.the.HTTP.request.ends.succes
4ae60 73 66 75 6c 6c 79 2c 20 43 41 4c 4c 42 41 43 4b 20 77 69 6c 6c 20 62 65 0a 20 20 63 61 6c 6c 65 sfully,.CALLBACK.will.be...calle
4ae80 64 20 77 69 74 68 20 61 20 52 45 53 50 4f 4e 53 45 20 61 72 67 75 6d 65 6e 74 20 6f 66 20 74 20 d.with.a.RESPONSE.argument.of.t.
4aea0 74 6f 20 69 6e 64 69 63 61 74 65 20 73 75 63 63 65 73 73 2e 0a 2d 20 53 69 6d 69 6c 61 72 6c 79 to.indicate.success..-.Similarly
4aec0 2c 20 43 41 4c 4c 42 41 43 4b 20 77 69 6c 6c 20 62 65 20 63 61 6c 6c 65 64 20 77 69 74 68 0a 20 ,.CALLBACK.will.be.called.with..
4aee0 20 28 72 65 61 73 6f 6e 69 6e 67 20 2e 20 74 65 78 74 2d 63 68 75 6e 6b 29 20 66 6f 72 20 65 61 .(reasoning...text-chunk).for.ea
4af00 63 68 20 72 65 61 73 6f 6e 69 6e 67 20 63 68 75 6e 6b 2c 20 61 6e 64 0a 20 20 28 72 65 61 73 6f ch.reasoning.chunk,.and...(reaso
4af20 6e 69 6e 67 20 2e 20 74 29 20 74 6f 20 69 6e 64 69 63 61 74 65 20 74 68 65 20 65 6e 64 20 6f 66 ning...t).to.indicate.the.end.of
4af40 20 74 68 65 20 72 65 61 73 6f 6e 69 6e 67 20 62 6c 6f 63 6b 2e 0a 0a 42 55 46 46 45 52 20 61 6e .the.reasoning.block...BUFFER.an
4af60 64 20 50 4f 53 49 54 49 4f 4e 20 61 72 65 20 74 68 65 20 62 75 66 66 65 72 20 61 6e 64 20 70 6f d.POSITION.are.the.buffer.and.po
4af80 73 69 74 69 6f 6e 20 28 69 6e 74 65 67 65 72 20 6f 72 0a 6d 61 72 6b 65 72 29 20 61 74 20 77 68 sition.(integer.or.marker).at.wh
4afa0 69 63 68 20 74 68 65 20 72 65 73 70 6f 6e 73 65 20 69 73 20 69 6e 73 65 72 74 65 64 2e 20 20 49 ich.the.response.is.inserted...I
4afc0 66 20 61 20 43 41 4c 4c 42 41 43 4b 20 69 73 0a 73 70 65 63 69 66 69 65 64 2c 20 6e 6f 20 72 65 f.a.CALLBACK.is.specified,.no.re
4afe0 73 70 6f 6e 73 65 20 69 73 20 69 6e 73 65 72 74 65 64 20 61 6e 64 20 74 68 65 73 65 20 61 72 67 sponse.is.inserted.and.these.arg
4b000 75 6d 65 6e 74 73 20 61 72 65 0a 69 67 6e 6f 72 65 64 2c 20 62 75 74 20 74 68 65 79 20 61 72 65 uments.are.ignored,.but.they.are
4b020 20 73 74 69 6c 6c 20 61 76 61 69 6c 61 62 6c 65 20 69 6e 20 74 68 65 20 49 4e 46 4f 20 70 6c 69 .still.available.in.the.INFO.pli
4b040 73 74 20 70 61 73 73 65 64 0a 74 6f 20 43 41 4c 4c 42 41 43 4b 20 66 6f 72 20 79 6f 75 20 74 6f st.passed.to.CALLBACK.for.you.to
4b060 20 75 73 65 2e 0a 0a 42 55 46 46 45 52 20 64 65 66 61 75 6c 74 73 20 74 6f 20 74 68 65 20 63 75 .use...BUFFER.defaults.to.the.cu
4b080 72 72 65 6e 74 20 62 75 66 66 65 72 2c 20 61 6e 64 20 50 4f 53 49 54 49 4f 4e 20 74 6f 20 74 68 rrent.buffer,.and.POSITION.to.th
4b0a0 65 20 76 61 6c 75 65 0a 6f 66 20 28 70 6f 69 6e 74 29 20 6f 72 20 28 72 65 67 69 6f 6e 2d 65 6e e.value.of.(point).or.(region-en
4b0c0 64 29 2c 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 77 68 65 74 68 65 72 20 74 68 65 20 72 65 67 d),.depending.on.whether.the.reg
4b0e0 69 6f 6e 20 69 73 0a 61 63 74 69 76 65 2e 0a 0a 43 4f 4e 54 45 58 54 20 69 73 20 61 6e 79 20 61 ion.is.active...CONTEXT.is.any.a
4b100 64 64 69 74 69 6f 6e 61 6c 20 64 61 74 61 20 6e 65 65 64 65 64 20 66 6f 72 20 74 68 65 20 63 61 dditional.data.needed.for.the.ca
4b120 6c 6c 62 61 63 6b 20 74 6f 20 72 75 6e 2e 20 49 74 0a 69 73 20 69 6e 63 6c 75 64 65 64 20 69 6e llback.to.run..It.is.included.in
4b140 20 74 68 65 20 49 4e 46 4f 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 74 68 65 20 63 61 6c 6c 62 61 .the.INFO.argument.to.the.callba
4b160 63 6b 2e 0a 4e 6f 74 65 3a 20 54 68 69 73 20 69 73 20 69 6e 74 65 6e 64 65 64 20 66 6f 72 20 73 ck..Note:.This.is.intended.for.s
4b180 74 6f 72 69 6e 67 20 45 6d 61 63 73 20 73 74 61 74 65 20 74 6f 20 62 65 20 75 73 65 64 20 62 79 toring.Emacs.state.to.be.used.by
4b1a0 0a 43 41 4c 4c 42 41 43 4b 2c 20 61 6e 64 20 75 6e 72 65 6c 61 74 65 64 20 74 6f 20 74 68 65 20 .CALLBACK,.and.unrelated.to.the.
4b1c0 63 6f 6e 74 65 78 74 20 73 75 70 70 6c 69 65 64 20 74 6f 20 74 68 65 20 4c 4c 4d 2e 0a 0a 53 59 context.supplied.to.the.LLM...SY
4b1e0 53 54 45 4d 20 69 73 20 74 68 65 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 20 6f 72 20 65 78 STEM.is.the.system.message.or.ex
4b200 74 65 6e 64 65 64 20 63 68 61 74 20 64 69 72 65 63 74 69 76 65 20 73 65 6e 74 20 74 6f 0a 74 68 tended.chat.directive.sent.to.th
4b220 65 20 4c 4c 4d 2e 20 20 54 68 69 73 20 63 61 6e 20 62 65 20 61 20 73 74 72 69 6e 67 2c 20 61 20 e.LLM...This.can.be.a.string,.a.
4b240 6c 69 73 74 20 6f 66 20 73 74 72 69 6e 67 73 20 6f 72 20 61 20 66 75 6e 63 74 69 6f 6e 0a 74 68 list.of.strings.or.a.function.th
4b260 61 74 20 72 65 74 75 72 6e 73 20 65 69 74 68 65 72 3b 20 73 65 65 20 60 67 70 74 65 6c 2d 64 69 at.returns.either;.see.`gptel-di
4b280 72 65 63 74 69 76 65 73 27 20 66 6f 72 20 6d 6f 72 65 0a 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 20 rectives'.for.more.information..
4b2a0 49 66 20 53 59 53 54 45 4d 20 69 73 20 6f 6d 69 74 74 65 64 2c 20 74 68 65 20 76 61 6c 75 65 20 If.SYSTEM.is.omitted,.the.value.
4b2c0 6f 66 0a 60 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 27 20 66 6f 72 20 74 of.`gptel--system-message'.for.t
4b2e0 68 65 20 63 75 72 72 65 6e 74 20 62 75 66 66 65 72 20 69 73 20 75 73 65 64 2e 0a 0a 54 68 65 20 he.current.buffer.is.used...The.
4b300 66 6f 6c 6c 6f 77 69 6e 67 20 6b 65 79 77 6f 72 64 73 20 61 72 65 20 6d 61 69 6e 6c 79 20 66 6f following.keywords.are.mainly.fo
4b320 72 20 69 6e 74 65 72 6e 61 6c 20 75 73 65 3a 0a 0a 49 4e 2d 50 4c 41 43 45 20 69 73 20 61 20 62 r.internal.use:..IN-PLACE.is.a.b
4b340 6f 6f 6c 65 61 6e 20 75 73 65 64 20 62 79 20 74 68 65 20 64 65 66 61 75 6c 74 20 63 61 6c 6c 62 oolean.used.by.the.default.callb
4b360 61 63 6b 20 77 68 65 6e 20 69 6e 73 65 72 74 69 6e 67 0a 74 68 65 20 72 65 73 70 6f 6e 73 65 20 ack.when.inserting.the.response.
4b380 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 69 66 20 64 65 6c 69 6d 69 74 65 72 73 20 61 72 65 20 6e to.determine.if.delimiters.are.n
4b3a0 65 65 64 65 64 20 62 65 74 77 65 65 6e 20 74 68 65 0a 70 72 6f 6d 70 74 20 61 6e 64 20 74 68 65 eeded.between.the.prompt.and.the
4b3c0 20 72 65 73 70 6f 6e 73 65 2e 0a 0a 49 66 20 44 52 59 2d 52 55 4e 20 69 73 20 6e 6f 6e 2d 6e 69 .response...If.DRY-RUN.is.non-ni
4b3e0 6c 2c 20 64 6f 20 6e 6f 74 20 73 65 6e 64 20 74 68 65 20 72 65 71 75 65 73 74 2e 20 20 43 6f 6e l,.do.not.send.the.request...Con
4b400 73 74 72 75 63 74 20 61 6e 64 0a 72 65 74 75 72 6e 20 61 20 73 74 61 74 65 20 6d 61 63 68 69 6e struct.and.return.a.state.machin
4b420 65 20 6f 62 6a 65 63 74 20 74 68 61 74 20 63 61 6e 20 62 65 20 69 6e 74 72 6f 73 70 65 63 74 65 e.object.that.can.be.introspecte
4b440 64 20 61 6e 64 0a 72 65 73 75 6d 65 64 2e 0a 0a 54 52 41 4e 53 46 4f 52 4d 53 20 69 73 20 61 20 d.and.resumed...TRANSFORMS.is.a.
4b460 6c 69 73 74 20 6f 66 20 66 75 6e 63 74 69 6f 6e 73 20 75 73 65 64 20 74 6f 20 74 72 61 6e 73 66 list.of.functions.used.to.transf
4b480 6f 72 6d 20 74 68 65 20 70 72 6f 6d 70 74 20 6f 72 20 71 75 65 72 79 0a 70 61 72 61 6d 65 74 65 orm.the.prompt.or.query.paramete
4b4a0 72 73 20 64 79 6e 61 6d 69 63 61 6c 6c 79 2e 20 20 45 61 63 68 20 66 75 6e 63 74 69 6f 6e 20 69 rs.dynamically...Each.function.i
4b4c0 73 20 63 61 6c 6c 65 64 20 69 6e 20 61 20 74 65 6d 70 6f 72 61 72 79 20 62 75 66 66 65 72 0a 63 s.called.in.a.temporary.buffer.c
4b4e0 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 70 72 6f 6d 70 74 20 74 6f 20 62 65 20 73 65 6e 74 2c ontaining.the.prompt.to.be.sent,
4b500 20 61 6e 64 20 63 61 6e 20 63 6f 6e 64 69 74 69 6f 6e 61 6c 6c 79 20 6d 6f 64 69 66 79 20 74 68 .and.can.conditionally.modify.th
4b520 69 73 0a 62 75 66 66 65 72 2e 20 20 54 68 69 73 20 63 61 6e 20 69 6e 63 6c 75 64 65 20 63 68 61 is.buffer...This.can.include.cha
4b540 6e 67 69 6e 67 20 74 68 65 20 28 62 75 66 66 65 72 2d 6c 6f 63 61 6c 29 20 76 61 6c 75 65 73 20 nging.the.(buffer-local).values.
4b560 6f 66 20 74 68 65 0a 6d 6f 64 65 6c 2c 20 62 61 63 6b 65 6e 64 20 6f 72 20 73 79 73 74 65 6d 20 of.the.model,.backend.or.system.
4b580 70 72 6f 6d 70 74 2c 20 6f 72 20 61 75 67 6d 65 6e 74 69 6e 67 20 74 68 65 20 70 72 6f 6d 70 74 prompt,.or.augmenting.the.prompt
4b5a0 20 77 69 74 68 0a 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 28 73 75 .with.additional.information.(su
4b5c0 63 68 20 61 73 20 66 72 6f 6d 20 61 20 52 41 47 20 65 6e 67 69 6e 65 29 2e 0a 0a 2d 20 53 79 6e ch.as.from.a.RAG.engine)...-.Syn
4b5e0 63 68 72 6f 6e 6f 75 73 20 74 72 61 6e 73 66 6f 72 6d 65 72 73 20 61 72 65 20 63 61 6c 6c 65 64 chronous.transformers.are.called
4b600 20 77 69 74 68 20 7a 65 72 6f 20 6f 72 20 6f 6e 65 20 61 72 67 75 6d 65 6e 74 2c 20 74 68 65 0a .with.zero.or.one.argument,.the.
4b620 20 20 73 74 61 74 65 20 6d 61 63 68 69 6e 65 20 66 6f 72 20 74 68 65 20 72 65 71 75 65 73 74 2e ..state.machine.for.the.request.
4b640 0a 0a 2d 20 41 73 79 6e 63 68 72 6f 6e 6f 75 73 20 74 72 61 6e 73 66 6f 72 6d 65 72 73 20 61 72 ..-.Asynchronous.transformers.ar
4b660 65 20 63 61 6c 6c 65 64 20 77 69 74 68 20 74 77 6f 20 61 72 67 75 6d 65 6e 74 73 2c 20 61 20 63 e.called.with.two.arguments,.a.c
4b680 61 6c 6c 62 61 63 6b 0a 20 20 61 6e 64 20 74 68 65 20 73 74 61 74 65 20 6d 61 63 68 69 6e 65 2e allback...and.the.state.machine.
4b6a0 20 20 49 74 20 73 68 6f 75 6c 64 20 72 75 6e 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 61 66 74 ..It.should.run.the.callback.aft
4b6c0 65 72 20 66 69 6e 69 73 68 69 6e 67 20 69 74 73 0a 20 20 74 72 61 6e 73 66 6f 72 6d 61 74 69 6f er.finishing.its...transformatio
4b6e0 6e 2e 0a 0a 53 65 65 20 60 67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 74 72 61 6e 73 66 6f 72 6d 2d n...See.`gptel-prompt-transform-
4b700 66 75 6e 63 74 69 6f 6e 73 27 20 66 6f 72 20 6d 6f 72 65 2e 0a 0a 49 66 20 70 72 6f 76 69 64 65 functions'.for.more...If.provide
4b720 64 2c 20 53 43 48 45 4d 41 20 66 6f 72 63 65 73 20 74 68 65 20 4c 4c 4d 20 74 6f 20 67 65 6e 65 d,.SCHEMA.forces.the.LLM.to.gene
4b740 72 61 74 65 20 4a 53 4f 4e 20 6f 75 74 70 75 74 2e 20 20 49 74 73 20 76 61 6c 75 65 0a 69 73 20 rate.JSON.output...Its.value.is.
4b760 61 20 4a 53 4f 4e 20 73 63 68 65 6d 61 2c 20 77 68 69 63 68 20 63 61 6e 20 62 65 20 70 72 6f 76 a.JSON.schema,.which.can.be.prov
4b780 69 64 65 64 20 61 73 0a 2d 20 61 6e 20 65 6c 69 73 70 20 6f 62 6a 65 63 74 2c 20 61 20 6e 65 73 ided.as.-.an.elisp.object,.a.nes
4b7a0 74 65 64 20 70 6c 69 73 74 20 73 74 72 75 63 74 75 72 65 2e 0a 2d 20 41 20 4a 53 4f 4e 20 73 63 ted.plist.structure..-.A.JSON.sc
4b7c0 68 65 6d 61 20 73 65 72 69 61 6c 69 7a 65 64 20 74 6f 20 61 20 73 74 72 69 6e 67 0a 2d 20 41 20 hema.serialized.to.a.string.-.A.
4b7e0 73 68 6f 72 74 68 61 6e 64 20 6f 62 6a 65 63 74 2f 61 72 72 61 79 20 64 65 73 63 72 69 70 74 69 shorthand.object/array.descripti
4b800 6f 6e 2c 20 73 65 65 20 60 67 70 74 65 6c 2d 2d 64 69 73 70 61 74 63 68 2d 73 63 68 65 6d 61 2d on,.see.`gptel--dispatch-schema-
4b820 74 79 70 65 27 2e 0a 53 65 65 20 74 68 65 20 6d 61 6e 75 61 6c 20 6f 72 20 74 68 65 20 77 69 6b type'..See.the.manual.or.the.wik
4b840 69 20 66 6f 72 20 65 78 61 6d 70 6c 65 73 2e 0a 0a 4e 6f 74 65 3a 20 53 43 48 45 4d 41 20 69 73 i.for.examples...Note:.SCHEMA.is
4b860 20 70 72 65 73 65 6e 74 6c 79 20 65 78 70 65 72 69 6d 65 6e 74 61 6c 20 61 6e 64 20 73 75 62 6a .presently.experimental.and.subj
4b880 65 63 74 20 74 6f 20 63 68 61 6e 67 65 2c 20 61 6e 64 20 6e 6f 74 0a 61 6c 6c 20 70 72 6f 76 69 ect.to.change,.and.not.all.provi
4b8a0 64 65 72 73 20 73 75 70 70 6f 72 74 20 73 74 72 75 63 74 75 72 65 64 20 6f 75 74 70 75 74 2e 0a ders.support.structured.output..
4b8c0 0a 46 53 4d 20 69 73 20 74 68 65 20 73 74 61 74 65 20 6d 61 63 68 69 6e 65 20 64 72 69 76 69 6e .FSM.is.the.state.machine.drivin
4b8e0 67 20 74 68 65 20 72 65 71 75 65 73 74 2e 20 20 54 68 69 73 20 63 61 6e 20 62 65 20 75 73 65 64 g.the.request...This.can.be.used
4b900 0a 74 6f 20 64 65 66 69 6e 65 20 61 20 63 75 73 74 6f 6d 20 72 65 71 75 65 73 74 20 63 6f 6e 74 .to.define.a.custom.request.cont
4b920 72 6f 6c 20 66 6c 6f 77 2c 20 73 65 65 20 60 67 70 74 65 6c 2d 66 73 6d 27 20 66 6f 72 0a 64 65 rol.flow,.see.`gptel-fsm'.for.de
4b940 74 61 69 6c 73 2e 20 20 59 6f 75 20 63 61 6e 20 73 61 66 65 6c 79 20 69 67 6e 6f 72 65 20 74 68 tails...You.can.safely.ignore.th
4b960 69 73 20 2d 2d 20 46 53 4d 20 69 73 20 61 6e 20 75 6e 73 74 61 62 6c 65 0a 66 65 61 74 75 72 65 is.--.FSM.is.an.unstable.feature
4b980 20 61 6e 64 20 73 75 62 6a 65 63 74 20 74 6f 20 63 68 61 6e 67 65 2e 0a 0a 4e 6f 74 65 3a 0a 0a .and.subject.to.change...Note:..
4b9a0 31 2e 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 6e 6f 74 20 66 75 6c 6c 79 20 73 65 1..This.function.is.not.fully.se
4b9c0 6c 66 2d 63 6f 6e 74 61 69 6e 65 64 2e 20 20 43 6f 6e 73 69 64 65 72 0a 6c 65 74 2d 62 69 6e 64 lf-contained...Consider.let-bind
4b9e0 69 6e 67 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 73 20 60 67 70 74 65 6c 2d 62 61 63 6b 65 6e ing.the.parameters.`gptel-backen
4ba00 64 27 2c 20 60 67 70 74 65 6c 2d 6d 6f 64 65 6c 27 2c 0a 60 67 70 74 65 6c 2d 75 73 65 2d 74 6f d',.`gptel-model',.`gptel-use-to
4ba20 6f 6c 73 27 20 61 6e 64 20 60 67 70 74 65 6c 2d 75 73 65 2d 63 6f 6e 74 65 78 74 27 20 61 72 6f ols'.and.`gptel-use-context'.aro
4ba40 75 6e 64 20 63 61 6c 6c 73 20 74 6f 20 69 74 20 61 73 0a 72 65 71 75 69 72 65 64 2e 0a 0a 32 2e und.calls.to.it.as.required...2.
4ba60 20 54 68 65 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20 6f 66 20 74 68 69 73 20 66 75 6e 63 74 69 .The.return.value.of.this.functi
4ba80 6f 6e 20 69 73 20 61 20 73 74 61 74 65 20 6d 61 63 68 69 6e 65 20 74 68 61 74 20 6d 61 79 0a 62 on.is.a.state.machine.that.may.b
4baa0 65 20 75 73 65 64 20 74 6f 20 72 65 72 75 6e 20 6f 72 20 63 6f 6e 74 69 6e 75 65 20 74 68 65 20 e.used.to.rerun.or.continue.the.
4bac0 72 65 71 75 65 73 74 20 61 74 20 61 20 6c 61 74 65 72 20 74 69 6d 65 2e 22 0a 20 20 28 64 65 63 request.at.a.later.time."...(dec
4bae0 6c 61 72 65 20 28 69 6e 64 65 6e 74 20 31 29 29 0a 20 20 3b 3b 20 54 4f 44 4f 20 52 65 6d 6f 76 lare.(indent.1))...;;.TODO.Remov
4bb00 65 20 74 68 69 73 20 63 68 65 63 6b 20 69 6e 20 76 65 72 73 69 6f 6e 20 31 2e 30 0a 20 20 28 67 e.this.check.in.version.1.0...(g
4bb20 70 74 65 6c 2d 2d 73 61 6e 69 74 69 7a 65 2d 6d 6f 64 65 6c 29 0a 20 20 28 6c 65 74 2a 20 28 28 ptel--sanitize-model)...(let*.((
4bb40 73 74 61 72 74 2d 6d 61 72 6b 65 72 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 start-marker...........(cond....
4bb60 20 20 20 20 20 20 20 20 28 28 6e 75 6c 6c 20 70 6f 73 69 74 69 6f 6e 29 0a 20 20 20 20 20 20 20 ........((null.position)........
4bb80 20 20 20 20 20 28 69 66 20 28 75 73 65 2d 72 65 67 69 6f 6e 2d 70 29 0a 20 20 20 20 20 20 20 20 .....(if.(use-region-p).........
4bba0 20 20 20 20 20 20 20 20 28 73 65 74 2d 6d 61 72 6b 65 72 20 28 6d 61 6b 65 2d 6d 61 72 6b 65 72 ........(set-marker.(make-marker
4bbc0 29 20 28 72 65 67 69 6f 6e 2d 65 6e 64 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 ).(region-end))...............(g
4bbe0 70 74 65 6c 2d 2d 61 74 2d 77 6f 72 64 2d 65 6e 64 20 28 70 6f 69 6e 74 2d 6d 61 72 6b 65 72 29 ptel--at-word-end.(point-marker)
4bc00 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 28 6d 61 72 6b 65 72 70 20 70 6f 73 69 74 69 6f )))............((markerp.positio
4bc20 6e 29 20 70 6f 73 69 74 69 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 28 69 6e 74 65 67 65 n).position)............((intege
4bc40 72 70 20 70 6f 73 69 74 69 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 2d 6d 61 rp.position).............(set-ma
4bc60 72 6b 65 72 20 28 6d 61 6b 65 2d 6d 61 72 6b 65 72 29 20 70 6f 73 69 74 69 6f 6e 20 62 75 66 66 rker.(make-marker).position.buff
4bc80 65 72 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 73 63 68 65 6d 61 20 73 er))))..........(gptel--schema.s
4bca0 63 68 65 6d 61 29 0a 20 20 20 20 20 20 20 20 20 28 70 72 6f 6d 70 74 2d 62 75 66 66 65 72 0a 20 chema)..........(prompt-buffer..
4bcc0 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .........(cond..................
4bce0 20 20 20 20 20 3b 70 72 6f 6d 70 74 20 66 72 6f 6d 20 62 75 66 66 65 72 20 6f 72 20 65 78 70 6c .....;prompt.from.buffer.or.expl
4bd00 69 63 69 74 6c 79 20 73 75 70 70 6c 69 65 64 0a 20 20 20 20 20 20 20 20 20 20 20 28 28 6e 75 6c icitly.supplied............((nul
4bd20 6c 20 70 72 6f 6d 70 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 63 72 l.prompt).............(gptel--cr
4bd40 65 61 74 65 2d 70 72 6f 6d 70 74 2d 62 75 66 66 65 72 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 eate-prompt-buffer.(point)))....
4bd60 20 20 20 20 20 20 20 20 28 28 73 74 72 69 6e 67 70 20 70 72 6f 6d 70 74 29 0a 20 20 20 20 20 20 ........((stringp.prompt).......
4bd80 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 77 69 74 68 2d 62 75 66 66 65 72 2d 63 6f 70 79 20 62 ......(gptel--with-buffer-copy.b
4bda0 75 66 66 65 72 20 6e 69 6c 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 uffer.nil.nil...............(ins
4bdc0 65 72 74 20 70 72 6f 6d 70 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 75 72 72 65 ert.prompt)...............(curre
4bde0 6e 74 2d 62 75 66 66 65 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 28 63 6f 6e 73 70 20 nt-buffer)))............((consp.
4be00 70 72 6f 6d 70 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 28 67 70 74 65 6c 2d 2d 70 prompt).............;;.(gptel--p
4be20 61 72 73 65 2d 6c 69 73 74 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 70 72 6f 6d 70 74 29 0a arse-list.gptel-backend.prompt).
4be40 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 77 69 74 68 2d 62 75 66 66 65 72 2d ............(gptel--with-buffer-
4be60 63 6f 70 79 20 62 75 66 66 65 72 20 6e 69 6c 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 copy.buffer.nil.nil.............
4be80 20 20 3b 3b 20 54 45 4d 50 20 44 65 63 69 64 65 20 6f 6e 20 74 68 65 20 61 6e 6e 6f 61 74 65 64 ..;;.TEMP.Decide.on.the.annoated
4bea0 20 70 72 6f 6d 70 74 2d 6c 69 73 74 20 66 6f 72 6d 61 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 .prompt-list.format.............
4bec0 20 20 28 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 6c 69 73 74 2d 61 6e 64 2d 69 6e 73 65 72 74 20 ..(gptel--parse-list-and-insert.
4bee0 70 72 6f 6d 70 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 75 72 72 65 6e 74 2d 62 prompt)...............(current-b
4bf00 75 66 66 65 72 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 69 6e 66 6f 20 28 6c 69 73 74 20 uffer)))))..........(info.(list.
4bf20 3a 64 61 74 61 20 70 72 6f 6d 70 74 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 :data.prompt-buffer.............
4bf40 20 20 20 20 20 20 20 20 20 3a 62 75 66 66 65 72 20 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 .........:buffer.buffer.........
4bf60 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 70 6f 73 69 74 69 6f 6e 20 73 74 61 72 74 2d 6d 61 72 .............:position.start-mar
4bf80 6b 65 72 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 74 72 61 6e 73 66 6f 72 6d 73 20 28 70 6c 69 ker))).....(when.transforms.(pli
4bfa0 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 74 72 61 6e 73 66 6f 72 6d 73 20 74 72 61 6e 73 66 6f 72 st-put.info.:transforms.transfor
4bfc0 6d 73 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 70 72 ms)).....(with-current-buffer.pr
4bfe0 6f 6d 70 74 2d 62 75 66 66 65 72 20 28 73 65 74 71 20 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d ompt-buffer.(setq.gptel--system-
4c000 6d 65 73 73 61 67 65 20 73 79 73 74 65 6d 29 29 0a 20 20 20 20 28 77 68 65 6e 20 73 74 72 65 61 message.system)).....(when.strea
4c020 6d 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 73 74 72 65 61 6d 20 73 74 72 65 61 6d m.(plist-put.info.:stream.stream
4c040 29 29 0a 20 20 20 20 3b 3b 20 54 68 69 73 20 63 6f 6e 74 65 78 74 20 73 68 6f 75 6c 64 20 6e 6f )).....;;.This.context.should.no
4c060 74 20 62 65 20 63 6f 6e 66 75 73 65 64 20 77 69 74 68 20 74 68 65 20 63 6f 6e 74 65 78 74 20 61 t.be.confused.with.the.context.a
4c080 67 67 72 65 67 61 74 69 6f 6e 20 63 6f 6e 74 65 78 74 21 0a 20 20 20 20 28 77 68 65 6e 20 63 61 ggregation.context!.....(when.ca
4c0a0 6c 6c 62 61 63 6b 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 63 61 6c 6c 62 61 63 6b llback.(plist-put.info.:callback
4c0c0 20 63 61 6c 6c 62 61 63 6b 29 29 0a 20 20 20 20 28 77 68 65 6e 20 63 6f 6e 74 65 78 74 20 28 70 .callback)).....(when.context.(p
4c0e0 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 63 6f 6e 74 65 78 74 20 63 6f 6e 74 65 78 74 29 29 list-put.info.:context.context))
4c100 0a 20 20 20 20 28 77 68 65 6e 20 69 6e 2d 70 6c 61 63 65 20 28 70 6c 69 73 74 2d 70 75 74 20 69 .....(when.in-place.(plist-put.i
4c120 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 3b 3b 20 nfo.:in-place.in-place)).....;;.
4c140 41 64 64 20 69 6e 66 6f 20 74 6f 20 73 74 61 74 65 20 6d 61 63 68 69 6e 65 20 63 6f 6e 74 65 78 Add.info.to.state.machine.contex
4c160 74 0a 20 20 20 20 28 77 68 65 6e 20 64 72 79 2d 72 75 6e 20 28 70 6c 69 73 74 2d 70 75 74 20 69 t.....(when.dry-run.(plist-put.i
4c180 6e 66 6f 20 3a 64 72 79 2d 72 75 6e 20 64 72 79 2d 72 75 6e 29 29 0a 20 20 20 20 28 73 65 74 66 nfo.:dry-run.dry-run)).....(setf
4c1a0 20 28 67 70 74 65 6c 2d 66 73 6d 2d 69 6e 66 6f 20 66 73 6d 29 20 69 6e 66 6f 29 29 0a 0a 20 20 .(gptel-fsm-info.fsm).info))....
4c1c0 3b 3b 20 54 45 4d 50 3a 20 41 75 67 6d 65 6e 74 20 69 6e 20 73 65 70 61 72 61 74 65 20 6c 65 74 ;;.TEMP:.Augment.in.separate.let
4c1e0 20 62 6c 6f 63 6b 20 66 6f 72 20 6e 6f 77 2e 20 20 41 72 65 20 77 65 20 6f 76 65 72 63 61 70 74 .block.for.now...Are.we.overcapt
4c200 75 72 69 6e 67 3f 0a 20 20 3b 3b 20 46 49 58 4d 45 28 61 75 67 6d 65 6e 74 29 3a 20 43 61 6c 6c uring?...;;.FIXME(augment):.Call
4c220 20 61 75 67 6d 65 6e 74 6f 72 73 20 77 69 74 68 20 49 4e 46 4f 2c 20 6e 6f 74 20 46 53 4d 0a 20 .augmentors.with.INFO,.not.FSM..
4c240 20 28 6c 65 74 20 28 28 69 6e 66 6f 20 28 67 70 74 65 6c 2d 66 73 6d 2d 69 6e 66 6f 20 66 73 6d .(let.((info.(gptel-fsm-info.fsm
4c260 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 70 6c ))).....(with-current-buffer.(pl
4c280 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 64 61 74 61 29 0a 20 20 20 20 20 20 28 73 65 74 71 2d ist-get.info.:data).......(setq-
4c2a0 6c 6f 63 61 6c 20 67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 74 72 61 6e 73 66 6f 72 6d 2d 66 75 6e local.gptel-prompt-transform-fun
4c2c0 63 74 69 6f 6e 73 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 74 72 61 6e 73 66 6f 72 ctions.(plist-get.info.:transfor
4c2e0 6d 73 29 29 0a 20 20 20 20 20 20 3b 3b 20 50 72 65 73 65 74 20 68 61 73 20 68 69 67 68 65 73 74 ms)).......;;.Preset.has.highest
4c300 20 70 72 69 6f 72 69 74 79 20 62 65 63 61 75 73 65 20 69 74 20 63 61 6e 20 63 68 61 6e 67 65 20 .priority.because.it.can.change.
4c320 70 72 6f 6d 70 74 2d 74 72 61 6e 73 66 6f 72 6d 2d 66 75 6e 63 74 69 6f 6e 73 0a 20 20 20 20 20 prompt-transform-functions......
4c340 20 28 77 68 65 6e 20 28 6d 65 6d 71 20 27 67 70 74 65 6c 2d 2d 74 72 61 6e 73 66 6f 72 6d 2d 61 .(when.(memq.'gptel--transform-a
4c360 70 70 6c 79 2d 70 72 65 73 65 74 20 67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 74 72 61 6e 73 66 6f pply-preset.gptel-prompt-transfo
4c380 72 6d 2d 66 75 6e 63 74 69 6f 6e 73 29 0a 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 74 72 rm-functions).........(gptel--tr
4c3a0 61 6e 73 66 6f 72 6d 2d 61 70 70 6c 79 2d 70 72 65 73 65 74 20 66 73 6d 29 0a 20 20 20 20 20 20 ansform-apply-preset.fsm).......
4c3c0 20 20 28 73 65 74 71 20 67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 74 72 61 6e 73 66 6f 72 6d 2d 66 ..(setq.gptel-prompt-transform-f
4c3e0 75 6e 63 74 69 6f 6e 73 20 3b 61 76 6f 69 64 20 6d 75 74 61 74 69 6f 6e 2c 20 63 6f 70 79 20 74 unctions.;avoid.mutation,.copy.t
4c400 72 61 6e 73 66 6f 72 6d 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 6d 71 20 27 67 ransforms...............(remq.'g
4c420 70 74 65 6c 2d 2d 74 72 61 6e 73 66 6f 72 6d 2d 61 70 70 6c 79 2d 70 72 65 73 65 74 20 67 70 74 ptel--transform-apply-preset.gpt
4c440 65 6c 2d 70 72 6f 6d 70 74 2d 74 72 61 6e 73 66 6f 72 6d 2d 66 75 6e 63 74 69 6f 6e 73 29 29 29 el-prompt-transform-functions)))
4c460 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 61 75 67 6d 65 6e 74 2d 74 6f 74 61 6c 20 20 20 20 20 .......(let.((augment-total.....
4c480 20 20 20 20 20 20 20 20 20 3b 61 63 74 20 6c 69 6b 65 20 61 20 68 6f 6f 6b 2c 20 63 6f 75 6e 74 .........;act.like.a.hook,.count
4c4a0 20 74 6f 74 61 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 6d 65 6d 71 20 74 20 .total..............(if.(memq.t.
4c4c0 67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 74 72 61 6e 73 66 6f 72 6d 2d 66 75 6e 63 74 69 6f 6e 73 gptel-prompt-transform-functions
4c4e0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 6e 67 74 68 0a 20 20 20 20 20 )..................(length......
4c500 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 70 72 6f 6d 70 74 2d .............(setq.gptel-prompt-
4c520 74 72 61 6e 73 66 6f 72 6d 2d 66 75 6e 63 74 69 6f 6e 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 transform-functions.............
4c540 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 63 6f 6e 63 20 28 72 65 6d 71 20 74 20 67 70 74 65 6c ............(nconc.(remq.t.gptel
4c560 2d 70 72 6f 6d 70 74 2d 74 72 61 6e 73 66 6f 72 6d 2d 66 75 6e 63 74 69 6f 6e 73 29 0a 20 20 20 -prompt-transform-functions)....
4c580 20 20 20 20 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 64 65 66 ............................(def
4c5a0 61 75 6c 74 2d 76 61 6c 75 65 20 27 67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 74 72 61 6e 73 66 6f ault-value.'gptel-prompt-transfo
4c5c0 72 6d 2d 66 75 6e 63 74 69 6f 6e 73 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rm-functions))))................
4c5e0 28 6c 65 6e 67 74 68 20 67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 74 72 61 6e 73 66 6f 72 6d 2d 66 (length.gptel-prompt-transform-f
4c600 75 6e 63 74 69 6f 6e 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 61 75 67 6d 65 6e 74 unctions))).............(augment
4c620 2d 69 64 78 20 30 29 29 0a 20 20 20 20 20 20 20 20 28 69 66 20 28 6e 75 6c 6c 20 67 70 74 65 6c -idx.0)).........(if.(null.gptel
4c640 2d 70 72 6f 6d 70 74 2d 74 72 61 6e 73 66 6f 72 6d 2d 66 75 6e 63 74 69 6f 6e 73 29 0a 20 20 20 -prompt-transform-functions)....
4c660 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 72 65 61 6c 69 7a 65 2d 71 75 65 72 79 20 66 .........(gptel--realize-query.f
4c680 73 6d 29 0a 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 sm)...........(with-current-buff
4c6a0 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 20 3b 41 70 70 er.(plist-get.info.:buffer).;App
4c6c0 6c 79 20 70 72 6f 6d 70 74 20 74 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 73 0a 20 20 20 20 20 20 ly.prompt.transformations.......
4c6e0 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 41 75 ......(gptel--update-status.".Au
4c700 67 6d 65 6e 74 69 6e 67 2e 2e 2e 22 20 27 6d 6f 64 65 2d 6c 69 6e 65 2d 65 6d 70 68 61 73 69 73 gmenting...".'mode-line-emphasis
4c720 29 29 0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20 46 49 58 4d 45 28 61 75 67 6d 65 6e 74 29 3a 20 ))...........;;.FIXME(augment):.
4c740 54 68 69 73 20 6e 65 65 64 73 20 74 6f 20 62 65 20 63 6f 6e 76 65 72 74 65 64 20 69 6e 74 6f 20 This.needs.to.be.converted.into.
4c760 61 20 6c 69 6e 65 61 72 20 63 61 6c 6c 62 61 63 6b 0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20 63 a.linear.callback...........;;.c
4c780 68 61 69 6e 20 74 6f 20 61 76 6f 69 64 20 72 61 63 65 20 63 6f 6e 64 69 74 69 6f 6e 73 20 77 69 hain.to.avoid.race.conditions.wi
4c7a0 74 68 20 6d 75 6c 74 69 70 6c 65 20 61 73 79 6e 63 20 61 75 67 6d 65 6e 74 6f 72 73 2e 0a 20 20 th.multiple.async.augmentors....
4c7c0 20 20 20 20 20 20 20 20 28 72 75 6e 2d 68 6f 6f 6b 2d 77 72 61 70 70 65 64 0a 20 20 20 20 20 20 ........(run-hook-wrapped.......
4c7e0 20 20 20 20 20 27 67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 74 72 61 6e 73 66 6f 72 6d 2d 66 75 6e .....'gptel-prompt-transform-fun
4c800 63 74 69 6f 6e 73 0a 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 66 75 6e 63 20 ctions............(lambda.(func.
4c820 66 73 6d 2d 61 72 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 fsm-arg)..............(with-curr
4c840 65 6e 74 2d 62 75 66 66 65 72 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 64 61 74 61 ent-buffer.(plist-get.info.:data
4c860 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 )................(goto-char.(poi
4c880 6e 74 2d 6d 61 78 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 3d 20 28 nt-max))................(if.(=.(
4c8a0 63 61 72 20 28 66 75 6e 63 2d 61 72 69 74 79 20 66 75 6e 63 29 29 20 32 29 20 3b 61 73 79 6e 63 car.(func-arity.func)).2).;async
4c8c0 20 61 75 67 6d 65 6e 74 6f 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 .augmentor....................(f
4c8e0 75 6e 63 61 6c 6c 20 66 75 6e 63 20 28 6c 61 6d 62 64 61 20 28 29 0a 20 20 20 20 20 20 20 20 20 uncall.func.(lambda.()..........
4c900 20 20 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 6c 2d 69 6e ..........................(cl-in
4c920 63 66 20 61 75 67 6d 65 6e 74 2d 69 64 78 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 cf.augment-idx).................
4c940 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 3e 3d 20 61 75 67 ...................(when.(>=.aug
4c960 6d 65 6e 74 2d 69 64 78 20 61 75 67 6d 65 6e 74 2d 74 6f 74 61 6c 29 20 3b 41 6c 6c 20 61 75 67 ment-idx.augment-total).;All.aug
4c980 6d 65 6e 74 6f 72 73 20 68 61 76 65 20 72 75 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 mentors.have.run................
4c9a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 72 65 ......................(gptel--re
4c9c0 61 6c 69 7a 65 2d 71 75 65 72 79 20 66 73 6d 2d 61 72 67 29 29 29 0a 20 20 20 20 20 20 20 20 20 alize-query.fsm-arg)))..........
4c9e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 73 6d 2d 61 72 67 29 0a 20 20 20 20 ...................fsm-arg).....
4ca00 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 3d 20 28 63 61 72 20 28 66 75 6e 63 2d 61 .............(if.(=.(car.(func-a
4ca20 72 69 74 79 20 66 75 6e 63 29 29 20 30 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rity.func)).0)..................
4ca40 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 66 75 6e 63 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ....(funcall.func)..............
4ca60 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 66 75 6e 63 20 66 73 6d 2d 61 72 67 29 29 20 3b 73 ......(funcall.func.fsm-arg)).;s
4ca80 79 6e 63 20 61 75 67 6d 65 6e 74 6f 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 ync.augmentor..................(
4caa0 63 6c 2d 69 6e 63 66 20 61 75 67 6d 65 6e 74 2d 69 64 78 29 0a 20 20 20 20 20 20 20 20 20 20 20 cl-incf.augment-idx)............
4cac0 20 20 20 20 20 20 28 77 68 65 6e 20 28 3e 3d 20 61 75 67 6d 65 6e 74 2d 69 64 78 20 61 75 67 6d ......(when.(>=.augment-idx.augm
4cae0 65 6e 74 2d 74 6f 74 61 6c 29 20 3b 41 6c 6c 20 61 75 67 6d 65 6e 74 6f 72 73 20 68 61 76 65 20 ent-total).;All.augmentors.have.
4cb00 72 75 6e 0a 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 72 run....................(gptel--r
4cb20 65 61 6c 69 7a 65 2d 71 75 65 72 79 20 66 73 6d 2d 61 72 67 29 29 29 29 0a 20 20 20 20 20 20 20 ealize-query.fsm-arg))))........
4cb40 20 20 20 20 20 20 6e 69 6c 29 20 20 20 20 20 20 20 20 20 20 20 3b 61 6c 77 61 79 73 20 72 65 74 ......nil)...........;always.ret
4cb60 75 72 6e 20 6e 69 6c 20 73 6f 20 72 75 6e 2d 68 6f 6f 6b 2d 77 72 61 70 70 65 64 20 64 6f 65 73 urn.nil.so.run-hook-wrapped.does
4cb80 6e 27 74 20 61 62 6f 72 74 0a 20 20 20 20 20 20 20 20 20 20 20 66 73 6d 29 29 29 29 29 0a 20 20 n't.abort............fsm)))))...
4cba0 66 73 6d 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 72 65 61 6c 69 7a 65 2d 71 75 65 72 fsm)..(defun.gptel--realize-quer
4cbc0 79 20 28 66 73 6d 29 0a 20 20 22 52 65 61 6c 69 7a 65 20 74 68 65 20 71 75 65 72 79 20 70 61 79 y.(fsm)..."Realize.the.query.pay
4cbe0 6c 6f 61 64 20 66 6f 72 20 46 53 4d 20 66 72 6f 6d 20 69 74 73 20 70 72 6f 6d 70 74 20 62 75 66 load.for.FSM.from.its.prompt.buf
4cc00 66 65 72 2e 0a 0a 49 6e 69 74 69 61 74 65 20 74 68 65 20 72 65 71 75 65 73 74 20 77 68 65 6e 20 fer...Initiate.the.request.when.
4cc20 64 6f 6e 65 2e 22 0a 20 20 28 6c 65 74 20 28 28 69 6e 66 6f 20 28 67 70 74 65 6c 2d 66 73 6d 2d done."...(let.((info.(gptel-fsm-
4cc40 69 6e 66 6f 20 66 73 6d 29 29 29 0a 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 info.fsm))).....(with-current-bu
4cc60 66 66 65 72 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 64 61 74 61 29 0a 20 20 20 20 ffer.(plist-get.info.:data).....
4cc80 20 20 28 6c 65 74 2a 20 28 28 64 69 72 65 63 74 69 76 65 20 28 67 70 74 65 6c 2d 2d 70 61 72 73 ..(let*.((directive.(gptel--pars
4cca0 65 2d 64 69 72 65 63 74 69 76 65 20 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 e-directive.gptel--system-messag
4ccc0 65 20 27 72 61 77 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 44 49 52 45 43 54 49 e.'raw))..............;;.DIRECTI
4cce0 56 45 20 63 6f 6e 74 61 69 6e 73 20 62 6f 74 68 20 74 68 65 20 73 79 73 74 65 6d 20 6d 65 73 73 VE.contains.both.the.system.mess
4cd00 61 67 65 20 61 6e 64 20 74 68 65 20 74 65 6d 70 6c 61 74 65 20 70 72 6f 6d 70 74 73 0a 20 20 20 age.and.the.template.prompts....
4cd20 20 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 65 ..........(gptel--system-message
4cd40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 67 70 74 65 6c 2d 2d 6d ...............(unless.(gptel--m
4cd60 6f 64 65 6c 2d 63 61 70 61 62 6c 65 2d 70 20 27 6e 6f 73 79 73 74 65 6d 29 20 28 63 61 72 20 64 odel-capable-p.'nosystem).(car.d
4cd80 69 72 65 63 74 69 76 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 54 4f 44 4f irective)))..............;;.TODO
4cda0 28 74 6f 6f 6c 29 20 4c 69 6d 69 74 20 74 6f 6f 6c 20 75 73 65 20 74 6f 20 63 61 70 61 62 6c 65 (tool).Limit.tool.use.to.capable
4cdc0 20 6d 6f 64 65 6c 73 20 61 66 74 65 72 20 64 6f 63 75 6d 65 6e 74 69 6e 67 20 3a 63 61 70 61 62 .models.after.documenting.:capab
4cde0 69 6c 69 74 69 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 28 67 70 74 65 6c 2d 75 ilities..............;;.(gptel-u
4ce00 73 65 2d 74 6f 6f 6c 73 20 28 61 6e 64 20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 63 61 70 61 se-tools.(and.(gptel--model-capa
4ce20 62 6c 65 2d 70 20 27 74 6f 6f 6c 2d 75 73 65 29 20 67 70 74 65 6c 2d 75 73 65 2d 74 6f 6f 6c 73 ble-p.'tool-use).gptel-use-tools
4ce40 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 74 72 65 61 6d 20 28 61 6e 64 20 28 70 6c ))..............(stream.(and.(pl
4ce60 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 73 74 72 65 61 6d 29 20 67 70 74 65 6c 2d 75 73 65 2d ist-get.info.:stream).gptel-use-
4ce80 63 75 72 6c 20 67 70 74 65 6c 2d 73 74 72 65 61 6d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 curl.gptel-stream...............
4cea0 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 48 41 43 4b 28 74 6f 6f 6c 29 3a 20 6e 6f 20 73 74 ............;;.HACK(tool):.no.st
4cec0 72 65 61 6d 20 69 66 20 4f 6c 6c 61 6d 61 20 2b 20 74 6f 6f 6c 73 2e 20 20 4e 65 65 64 20 74 6f ream.if.Ollama.+.tools...Need.to
4cee0 20 66 69 6e 64 20 61 20 62 65 74 74 65 72 20 77 61 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 .find.a.better.way..............
4cf00 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 6f 74 20 28 61 6e 64 20 28 65 71 20 28 74 79 70 65 .............(not.(and.(eq.(type
4cf20 2d 6f 66 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 20 27 67 70 74 65 6c 2d 6f 6c 6c 61 6d 61 -of.gptel-backend).'gptel-ollama
4cf40 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 )...............................
4cf60 20 20 20 20 20 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 20 67 70 74 65 6c 2d 75 73 65 2d 74 6f 6f 6c ......gptel-tools.gptel-use-tool
4cf80 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 20 20 20 20 3b 3b s))...........................;;
4cfa0 20 43 68 65 63 6b 20 6d 6f 64 65 6c 2d 73 70 65 63 69 66 69 63 20 72 65 71 75 65 73 74 2d 70 61 .Check.model-specific.request-pa
4cfc0 72 61 6d 73 20 66 6f 72 20 73 74 72 65 61 6d 69 6e 67 20 70 72 65 66 65 72 65 6e 63 65 0a 20 20 rams.for.streaming.preference...
4cfe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 ........................(let*.((
4d000 6d 6f 64 65 6c 2d 70 61 72 61 6d 73 20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 72 65 71 75 65 model-params.(gptel--model-reque
4d020 73 74 2d 70 61 72 61 6d 73 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 29 29 0a 20 20 20 20 20 20 20 20 st-params.gptel-model)).........
4d040 20 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 65 61 6d .........................(stream
4d060 2d 73 70 65 63 20 28 70 6c 69 73 74 2d 67 65 74 20 6d 6f 64 65 6c 2d 70 61 72 61 6d 73 20 3a 73 -spec.(plist-get.model-params.:s
4d080 74 72 65 61 6d 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 tream)))........................
4d0a0 20 20 20 20 20 3b 3b 20 49 66 20 6e 6f 74 20 70 72 65 73 65 6e 74 2c 20 74 68 65 72 65 20 69 73 .....;;.If.not.present,.there.is
4d0c0 20 6e 6f 20 6d 6f 64 65 6c 2d 73 70 65 63 69 66 69 63 20 70 72 65 66 65 72 65 6e 63 65 0a 20 20 .no.model-specific.preference...
4d0e0 20 20 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 6f 72 20 28 6e ..........................(or.(n
4d100 6f 74 20 28 6d 65 6d 71 20 3a 73 74 72 65 61 6d 20 6d 6f 64 65 6c 2d 70 61 72 61 6d 73 29 29 0a ot.(memq.:stream.model-params)).
4d120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
4d140 3b 3b 20 49 66 20 70 72 65 73 65 6e 74 2c 20 69 74 20 6d 75 73 74 20 6e 6f 74 20 62 65 20 3a 6a ;;.If.present,.it.must.not.be.:j
4d160 73 6f 6e 2d 66 61 6c 73 65 20 6f 72 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 son-false.or.nil................
4d180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 73 74 72 65 61 6d 2d 73 70 65 .................(and.stream-spe
4d1a0 63 20 28 6e 6f 74 20 28 65 71 20 73 74 72 65 61 6d 2d 73 70 65 63 20 3a 6a 73 6f 6e 2d 66 61 6c c.(not.(eq.stream-spec.:json-fal
4d1c0 73 65 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 se))))).........................
4d1e0 20 20 3b 3b 20 43 68 65 63 6b 20 62 61 63 6b 65 6e 64 2d 73 70 65 63 69 66 69 63 20 73 74 72 65 ..;;.Check.backend-specific.stre
4d200 61 6d 69 6e 67 20 73 65 74 74 69 6e 67 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 aming.settings..................
4d220 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
4d240 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 20 20 20 28 67 70 ptel-backend)))..............(gp
4d260 74 65 6c 2d 73 74 72 65 61 6d 20 73 74 72 65 61 6d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 tel-stream.stream)..............
4d280 28 66 75 6c 6c 2d 70 72 6f 6d 70 74 29 29 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 63 64 (full-prompt)).........(when.(cd
4d2a0 72 20 64 69 72 65 63 74 69 76 65 29 20 20 20 20 20 20 20 3b 20 70 72 6f 6d 70 74 20 63 6f 6e 73 r.directive).......;.prompt.cons
4d2c0 74 72 75 63 74 65 64 20 66 72 6f 6d 20 64 69 72 65 63 74 69 76 65 2f 74 65 6d 70 6c 61 74 65 0a tructed.from.directive/template.
4d2e0 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 67 6f 74 6f 2d ..........(save-excursion.(goto-
4d300 63 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 20 20 20 20 char.(point-min))...............
4d320 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 6c 69 73 74 2d 61 ............(gptel--parse-list-a
4d340 6e 64 2d 69 6e 73 65 72 74 20 28 63 64 72 20 64 69 72 65 63 74 69 76 65 29 29 29 29 0a 20 20 20 nd-insert.(cdr.directive))))....
4d360 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 0a 20 20 20 .....(goto-char.(point-max))....
4d380 20 20 20 20 20 28 73 65 74 71 20 66 75 6c 6c 2d 70 72 6f 6d 70 74 20 28 67 70 74 65 6c 2d 2d 70 .....(setq.full-prompt.(gptel--p
4d3a0 61 72 73 65 2d 62 75 66 66 65 72 20 3b 70 72 6f 6d 70 74 20 66 72 6f 6d 20 62 75 66 66 65 72 20 arse-buffer.;prompt.from.buffer.
4d3c0 6f 72 20 65 78 70 6c 69 63 69 74 6c 79 20 73 75 70 70 6c 69 65 64 0a 20 20 20 20 20 20 20 20 20 or.explicitly.supplied..........
4d3e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 ..................gptel-backend.
4d400 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 74 6f 2d 73 65 6e 64 (and.gptel--num-messages-to-send
4d420 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 ................................
4d440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 2a 20 32 20 67 70 74 65 6c 2d 2d 6e 75 6d 2d 6d ...............(*.2.gptel--num-m
4d460 65 73 73 61 67 65 73 2d 74 6f 2d 73 65 6e 64 29 29 29 29 0a 20 20 20 20 20 20 20 20 3b 3b 20 49 essages-to-send)))).........;;.I
4d480 6e 6a 65 63 74 20 6d 65 64 69 61 20 63 68 75 6e 6b 73 20 69 6e 74 6f 20 74 68 65 20 66 69 72 73 nject.media.chunks.into.the.firs
4d4a0 74 20 75 73 65 72 20 70 72 6f 6d 70 74 20 69 66 20 72 65 71 75 69 72 65 64 2e 20 20 4d 65 64 69 t.user.prompt.if.required...Medi
4d4c0 61 0a 20 20 20 20 20 20 20 20 3b 3b 20 63 68 75 6e 6b 73 20 61 72 65 20 61 6c 77 61 79 73 20 69 a.........;;.chunks.are.always.i
4d4e0 6e 63 6c 75 64 65 64 20 77 69 74 68 20 74 68 65 20 66 69 72 73 74 20 75 73 65 72 20 6d 65 73 73 ncluded.with.the.first.user.mess
4d500 61 67 65 2c 0a 20 20 20 20 20 20 20 20 3b 3b 20 69 72 72 65 73 70 65 63 74 69 76 65 20 6f 66 20 age,.........;;.irrespective.of.
4d520 74 68 65 20 70 72 65 66 65 72 65 6e 63 65 20 69 6e 20 60 67 70 74 65 6c 2d 75 73 65 2d 63 6f 6e the.preference.in.`gptel-use-con
4d540 74 65 78 74 27 2e 20 20 54 68 69 73 20 69 73 0a 20 20 20 20 20 20 20 20 3b 3b 20 62 65 63 61 75 text'...This.is.........;;.becau
4d560 73 65 20 6d 65 64 69 61 20 63 61 6e 6e 6f 74 20 62 65 20 69 6e 63 6c 75 64 65 64 20 28 69 6e 20 se.media.cannot.be.included.(in.
4d580 67 65 6e 65 72 61 6c 29 20 77 69 74 68 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 73 2e 0a 20 general).with.system.messages...
4d5a0 20 20 20 20 20 20 20 3b 3b 20 54 4f 44 4f 28 61 75 67 6d 65 6e 74 29 3a 20 46 69 6e 64 20 61 20 .......;;.TODO(augment):.Find.a.
4d5c0 77 61 79 20 74 6f 20 64 6f 20 74 68 69 73 20 69 6e 20 74 68 65 20 70 72 6f 6d 70 74 2d 62 75 66 way.to.do.this.in.the.prompt-buf
4d5e0 66 65 72 3f 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 61 6e 64 20 67 70 74 65 6c 2d 63 6f fer?.........(when.(and.gptel-co
4d600 6e 74 65 78 74 2d 2d 61 6c 69 73 74 20 67 70 74 65 6c 2d 75 73 65 2d 63 6f 6e 74 65 78 74 0a 20 ntext--alist.gptel-use-context..
4d620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 74 72 61 63 6b 2d 6d 65 ..................gptel-track-me
4d640 64 69 61 20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 63 61 70 61 62 6c 65 2d 70 20 27 6d 65 64 dia.(gptel--model-capable-p.'med
4d660 69 61 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 77 72 61 70 2d 75 73 65 72 ia))...........(gptel--wrap-user
4d680 2d 70 72 6f 6d 70 74 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 66 75 6c 6c 2d 70 72 6f 6d 70 -prompt.gptel-backend.full-promp
4d6a0 74 20 27 6d 65 64 69 61 29 29 0a 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 73 74 72 65 61 t.'media)).........(unless.strea
4d6c0 6d 20 28 63 6c 2d 72 65 6d 66 20 69 6e 66 6f 20 3a 73 74 72 65 61 6d 29 29 0a 20 20 20 20 20 20 m.(cl-remf.info.:stream)).......
4d6e0 20 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 62 61 63 6b 65 6e 64 20 67 70 74 65 6c ..(plist-put.info.:backend.gptel
4d700 2d 62 61 63 6b 65 6e 64 29 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 69 6e -backend).........(when.gptel-in
4d720 63 6c 75 64 65 2d 72 65 61 73 6f 6e 69 6e 67 20 20 20 3b 52 65 71 75 69 72 65 64 20 66 6f 72 20 clude-reasoning...;Required.for.
4d740 6e 65 78 74 2d 72 65 71 75 65 73 74 2d 6f 6e 6c 79 20 73 63 6f 70 65 0a 20 20 20 20 20 20 20 20 next-request-only.scope.........
4d760 20 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 69 6e 63 6c 75 64 65 2d 72 65 61 73 6f ..(plist-put.info.:include-reaso
4d780 6e 69 6e 67 20 67 70 74 65 6c 2d 69 6e 63 6c 75 64 65 2d 72 65 61 73 6f 6e 69 6e 67 29 29 0a 20 ning.gptel-include-reasoning))..
4d7a0 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 61 6e 64 20 67 70 74 65 6c 2d 75 73 65 2d 74 6f 6f 6c .......(when.(and.gptel-use-tool
4d7c0 73 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d s.gptel-tools)...........(plist-
4d7e0 70 75 74 20 69 6e 66 6f 20 3a 74 6f 6f 6c 73 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 29 29 0a 20 20 put.info.:tools.gptel-tools))...
4d800 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 64 61 74 61 0a 20 20 20 20 ......(plist-put.info.:data.....
4d820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 72 65 71 75 65 73 74 2d 64 ...............(gptel--request-d
4d840 61 74 61 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 66 75 6c 6c 2d 70 72 6f 6d 70 74 29 29 29 ata.gptel-backend.full-prompt)))
4d860 0a 20 20 20 20 20 20 28 6b 69 6c 6c 2d 62 75 66 66 65 72 20 28 63 75 72 72 65 6e 74 2d 62 75 66 .......(kill-buffer.(current-buf
4d880 66 65 72 29 29 29 0a 20 20 20 20 3b 3b 20 49 4e 49 54 20 2d 3e 20 57 41 49 54 0a 20 20 20 20 28 fer))).....;;.INIT.->.WAIT.....(
4d8a0 75 6e 6c 65 73 73 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 64 72 79 2d 72 75 6e 29 unless.(plist-get.info.:dry-run)
4d8c0 20 28 67 70 74 65 6c 2d 2d 66 73 6d 2d 74 72 61 6e 73 69 74 69 6f 6e 20 66 73 6d 29 29 0a 20 20 .(gptel--fsm-transition.fsm))...
4d8e0 20 20 66 73 6d 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 61 62 6f 72 74 20 28 62 75 66 ..fsm))..(defun.gptel-abort.(buf
4d900 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 70 72 6f 63 65 )..."Stop.any.active.gptel.proce
4d920 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 55 46 2e 0a 0a ss.associated.with.buffer.BUF...
4d940 42 55 46 20 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 BUF.defaults.to.the.current.buff
4d960 65 72 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 er."...(interactive.(list.(curre
4d980 6e 74 2d 62 75 66 66 65 72 29 29 29 0a 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 70 72 6f 63 nt-buffer)))...(when-let*.((proc
4d9a0 2d 61 74 74 72 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 66 69 6e 64 2d 69 -attrs................(cl-find-i
4d9c0 66 0a 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 65 6e 74 72 79 f.................(lambda.(entry
4d9e0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 65 61 63 68 20 65 6e 74 72 )...................;;.each.entr
4da00 79 20 68 61 73 20 74 68 65 20 66 6f 72 6d 20 28 50 52 4f 43 20 2e 20 28 46 53 4d 20 41 42 4f 52 y.has.the.form.(PROC...(FSM.ABOR
4da20 54 2d 46 4e 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 71 20 28 74 68 T-FN))...................(eq.(th
4da40 72 65 61 64 2d 66 69 72 73 74 20 28 63 61 64 72 20 65 6e 74 72 79 29 20 3b 20 46 53 4d 0a 20 20 read-first.(cadr.entry).;.FSM...
4da60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
4da80 20 20 28 67 70 74 65 6c 2d 66 73 6d 2d 69 6e 66 6f 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ..(gptel-fsm-info)..............
4daa0 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 6c 69 73 74 2d 67 65 .......................(plist-ge
4dac0 74 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 t.:buffer)).....................
4dae0 20 20 62 75 66 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 2d 72 ..buf)).................gptel--r
4db00 65 71 75 65 73 74 2d 61 6c 69 73 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 equest-alist))...............(pr
4db20 6f 63 20 28 63 61 72 20 70 72 6f 63 2d 61 74 74 72 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 oc.(car.proc-attrs))............
4db40 20 20 20 28 66 73 6d 20 28 63 61 64 72 20 70 72 6f 63 2d 61 74 74 72 73 29 29 0a 20 20 20 20 20 ...(fsm.(cadr.proc-attrs))......
4db60 20 20 20 20 20 20 20 20 20 28 69 6e 66 6f 20 28 67 70 74 65 6c 2d 66 73 6d 2d 69 6e 66 6f 20 66 .........(info.(gptel-fsm-info.f
4db80 73 6d 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 62 6f 72 74 2d 66 6e 20 28 63 64 sm))...............(abort-fn.(cd
4dba0 64 72 20 70 72 6f 63 2d 61 74 74 72 73 29 29 29 0a 20 20 20 20 3b 3b 20 52 75 6e 20 3a 63 61 6c dr.proc-attrs))).....;;.Run.:cal
4dbc0 6c 62 61 63 6b 20 77 69 74 68 20 61 62 6f 72 74 20 73 69 67 6e 61 6c 0a 20 20 20 20 28 77 69 74 lback.with.abort.signal.....(wit
4dbe0 68 2d 64 65 6d 6f 74 65 64 2d 65 72 72 6f 72 73 20 22 43 61 6c 6c 62 61 63 6b 20 65 72 72 6f 72 h-demoted-errors."Callback.error
4dc00 3a 20 25 53 22 0a 20 20 20 20 20 20 28 61 6e 64 2d 6c 65 74 2a 20 28 28 63 62 20 28 70 6c 69 73 :.%S".......(and-let*.((cb.(plis
4dc20 74 2d 67 65 74 20 69 6e 66 6f 20 3a 63 61 6c 6c 62 61 63 6b 29 29 0a 20 20 20 20 20 20 20 20 20 t-get.info.:callback))..........
4dc40 20 20 20 20 20 20 20 20 28 28 66 75 6e 63 74 69 6f 6e 70 20 63 62 29 29 29 0a 20 20 20 20 20 20 ........((functionp.cb))).......
4dc60 20 20 28 66 75 6e 63 61 6c 6c 20 63 62 20 27 61 62 6f 72 74 20 69 6e 66 6f 29 29 29 0a 20 20 20 ..(funcall.cb.'abort.info)))....
4dc80 20 28 66 75 6e 63 61 6c 6c 20 61 62 6f 72 74 2d 66 6e 29 0a 20 20 20 20 28 73 65 74 66 20 28 61 .(funcall.abort-fn).....(setf.(a
4dca0 6c 69 73 74 2d 67 65 74 20 70 72 6f 63 20 67 70 74 65 6c 2d 2d 72 65 71 75 65 73 74 2d 61 6c 69 list-get.proc.gptel--request-ali
4dcc0 73 74 20 6e 69 6c 20 27 72 65 6d 6f 76 65 29 20 6e 69 6c 29 0a 20 20 20 20 28 77 69 74 68 2d 63 st.nil.'remove).nil).....(with-c
4dce0 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 62 75 66 0a 20 20 20 20 20 20 28 77 68 65 6e 20 67 70 urrent-buffer.buf.......(when.gp
4dd00 74 65 6c 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 tel-mode.(gptel--update-status..
4dd20 22 20 41 62 6f 72 74 22 20 27 65 72 72 6f 72 29 29 29 0a 20 20 20 20 28 6d 65 73 73 61 67 65 20 ".Abort".'error))).....(message.
4dd40 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 66 65 72 "Stopped.gptel.request.in.buffer
4dd60 20 25 53 22 20 28 62 75 66 66 65 72 2d 6e 61 6d 65 20 62 75 66 29 29 29 29 0a 0a 3b 3b 20 54 4f .%S".(buffer-name.buf))))..;;.TO
4dd80 44 4f 3a 20 48 61 6e 64 6c 65 20 6d 75 6c 74 69 70 6c 65 20 72 65 71 75 65 73 74 73 28 23 31 35 DO:.Handle.multiple.requests(#15
4dda0 29 2e 20 28 4f 6e 6c 79 20 6f 6e 65 20 72 65 71 75 65 73 74 20 66 72 6f 6d 20 6f 6e 65 20 62 75 )..(Only.one.request.from.one.bu
4ddc0 66 66 65 72 20 61 74 20 61 20 74 69 6d 65 3f 29 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a ffer.at.a.time?).;;;###autoload.
4dde0 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 73 65 6e 64 20 28 26 6f 70 74 69 6f 6e 61 6c 20 61 72 67 (defun.gptel-send.(&optional.arg
4de00 29 0a 20 20 22 53 75 62 6d 69 74 20 74 68 69 73 20 70 72 6f 6d 70 74 20 74 6f 20 74 68 65 20 63 )..."Submit.this.prompt.to.the.c
4de20 75 72 72 65 6e 74 20 4c 4c 4d 20 62 61 63 6b 65 6e 64 2e 0a 0a 42 79 20 64 65 66 61 75 6c 74 2c urrent.LLM.backend...By.default,
4de40 20 74 68 65 20 63 6f 6e 74 65 6e 74 73 20 6f 66 20 74 68 65 20 62 75 66 66 65 72 20 75 70 20 74 .the.contents.of.the.buffer.up.t
4de60 6f 20 74 68 65 20 63 75 72 73 6f 72 20 70 6f 73 69 74 69 6f 6e 0a 61 72 65 20 73 65 6e 74 2e 20 o.the.cursor.position.are.sent..
4de80 20 49 66 20 74 68 65 20 72 65 67 69 6f 6e 20 69 73 20 61 63 74 69 76 65 2c 20 69 74 73 20 63 6f .If.the.region.is.active,.its.co
4dea0 6e 74 65 6e 74 73 20 61 72 65 20 73 65 6e 74 0a 69 6e 73 74 65 61 64 2e 0a 0a 54 68 65 20 72 65 ntents.are.sent.instead...The.re
4dec0 73 70 6f 6e 73 65 20 66 72 6f 6d 20 74 68 65 20 4c 4c 4d 20 69 73 20 69 6e 73 65 72 74 65 64 20 sponse.from.the.LLM.is.inserted.
4dee0 62 65 6c 6f 77 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 below.the.cursor.position.at.the
4df00 20 74 69 6d 65 20 6f 66 20 73 65 6e 64 69 6e 67 2e 20 20 54 6f 20 63 68 61 6e 67 65 20 74 68 69 .time.of.sending...To.change.thi
4df20 73 20 62 65 68 61 76 69 6f 72 20 6f 72 20 6d 6f 64 65 6c 0a 70 61 72 61 6d 65 74 65 72 73 2c 20 s.behavior.or.model.parameters,.
4df40 75 73 65 20 70 72 65 66 69 78 20 61 72 67 20 41 52 47 20 61 63 74 69 76 61 74 65 20 61 20 74 72 use.prefix.arg.ARG.activate.a.tr
4df60 61 6e 73 69 65 6e 74 20 6d 65 6e 75 20 77 69 74 68 0a 6d 6f 72 65 20 6f 70 74 69 6f 6e 73 20 69 ansient.menu.with.more.options.i
4df80 6e 73 74 65 61 64 2e 0a 0a 54 68 69 73 20 63 6f 6d 6d 61 6e 64 20 69 73 20 61 73 79 6e 63 68 72 nstead...This.command.is.asynchr
4dfa0 6f 6e 6f 75 73 2c 20 79 6f 75 20 63 61 6e 20 63 6f 6e 74 69 6e 75 65 20 74 6f 20 75 73 65 20 45 onous,.you.can.continue.to.use.E
4dfc0 6d 61 63 73 20 77 68 69 6c 65 0a 77 61 69 74 69 6e 67 20 66 6f 72 20 74 68 65 20 72 65 73 70 6f macs.while.waiting.for.the.respo
4dfe0 6e 73 65 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 20 22 50 22 29 0a 20 20 28 69 66 20 nse."...(interactive."P")...(if.
4e000 28 61 6e 64 20 61 72 67 20 28 72 65 71 75 69 72 65 20 27 67 70 74 65 6c 2d 74 72 61 6e 73 69 65 (and.arg.(require.'gptel-transie
4e020 6e 74 20 6e 69 6c 20 74 29 29 0a 20 20 20 20 20 20 28 63 61 6c 6c 2d 69 6e 74 65 72 61 63 74 69 nt.nil.t)).......(call-interacti
4e040 76 65 6c 79 20 23 27 67 70 74 65 6c 2d 6d 65 6e 75 29 0a 20 20 20 20 28 67 70 74 65 6c 2d 2d 73 vely.#'gptel-menu).....(gptel--s
4e060 61 6e 69 74 69 7a 65 2d 6d 6f 64 65 6c 29 0a 20 20 20 20 28 6c 65 74 20 28 28 66 73 6d 20 28 67 anitize-model).....(let.((fsm.(g
4e080 70 74 65 6c 2d 6d 61 6b 65 2d 66 73 6d 20 3a 68 61 6e 64 6c 65 72 73 20 67 70 74 65 6c 2d 73 65 ptel-make-fsm.:handlers.gptel-se
4e0a0 6e 64 2d 2d 68 61 6e 64 6c 65 72 73 29 29 29 0a 20 20 20 20 20 20 28 67 70 74 65 6c 2d 72 65 71 nd--handlers))).......(gptel-req
4e0c0 75 65 73 74 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 3a 73 74 72 65 61 6d 20 67 70 74 65 6c 2d 73 uest.nil.........:stream.gptel-s
4e0e0 74 72 65 61 6d 0a 20 20 20 20 20 20 20 20 3a 74 72 61 6e 73 66 6f 72 6d 73 20 67 70 74 65 6c 2d tream.........:transforms.gptel-
4e100 70 72 6f 6d 70 74 2d 74 72 61 6e 73 66 6f 72 6d 2d 66 75 6e 63 74 69 6f 6e 73 0a 20 20 20 20 20 prompt-transform-functions......
4e120 20 20 20 3a 66 73 6d 20 66 73 6d 29 0a 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 51 75 65 ...:fsm.fsm).......(message."Que
4e140 72 79 69 6e 67 20 25 73 2e 2e 2e 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 68 72 rying.%s..."................(thr
4e160 65 61 64 2d 66 69 72 73 74 20 28 67 70 74 65 6c 2d 66 73 6d 2d 69 6e 66 6f 20 66 73 6d 29 0a 20 ead-first.(gptel-fsm-info.fsm)..
4e180 20 20 20 20 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 6c 69 ............................(pli
4e1a0 73 74 2d 67 65 74 20 3a 62 61 63 6b 65 6e 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 st-get.:backend)................
4e1c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 ..............(or.gptel-backend)
4e1e0 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 28 67 ..............................(g
4e200 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 29 29 29 29 0a 20 20 20 20 28 67 70 74 65 6c ptel-backend-name)))).....(gptel
4e220 2d 2d 75 70 64 61 74 65 2d 73 74 61 74 75 73 20 22 20 57 61 69 74 69 6e 67 2e 2e 2e 22 20 27 77 --update-status.".Waiting...".'w
4e240 61 72 6e 69 6e 67 29 29 29 0a 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 6a 73 6f arning)))..(declare-function.jso
4e260 6e 2d 70 72 65 74 74 79 2d 70 72 69 6e 74 2d 62 75 66 66 65 72 20 22 6a 73 6f 6e 22 29 0a 28 64 n-pretty-print-buffer."json").(d
4e280 65 66 75 6e 20 67 70 74 65 6c 2d 2d 69 6e 73 70 65 63 74 2d 71 75 65 72 79 20 28 26 6f 70 74 69 efun.gptel--inspect-query.(&opti
4e2a0 6f 6e 61 6c 20 72 65 71 75 65 73 74 2d 66 73 6d 20 66 6f 72 6d 61 74 29 0a 20 20 22 53 68 6f 77 onal.request-fsm.format)..."Show
4e2c0 20 74 68 65 20 66 75 6c 6c 20 4c 4c 4d 20 71 75 65 72 79 20 74 68 61 74 20 77 69 6c 6c 20 62 65 .the.full.LLM.query.that.will.be
4e2e0 20 73 65 6e 74 20 69 6e 20 61 20 62 75 66 66 65 72 2e 0a 0a 54 68 69 73 20 66 75 6e 63 74 69 6f .sent.in.a.buffer...This.functio
4e300 6e 73 20 61 73 20 61 20 64 72 79 20 72 75 6e 20 6f 66 20 60 67 70 74 65 6c 2d 73 65 6e 64 27 2e ns.as.a.dry.run.of.`gptel-send'.
4e320 20 20 54 68 65 20 72 65 71 75 65 73 74 20 64 61 74 61 0a 6d 61 79 20 62 65 20 65 64 69 74 65 64 ..The.request.data.may.be.edited
4e340 20 61 6e 64 20 74 68 65 20 71 75 65 72 79 20 63 6f 6e 74 69 6e 75 65 64 20 66 72 6f 6d 20 74 68 .and.the.query.continued.from.th
4e360 69 73 20 62 75 66 66 65 72 2e 0a 0a 52 45 51 55 45 53 54 2d 46 53 4d 20 69 73 20 74 68 65 20 73 is.buffer...REQUEST-FSM.is.the.s
4e380 74 61 74 65 20 6f 66 20 74 68 65 20 72 65 71 75 65 73 74 2c 20 61 73 20 72 65 74 75 72 6e 65 64 tate.of.the.request,.as.returned
4e3a0 20 62 79 0a 60 67 70 74 65 6c 2d 72 65 71 75 65 73 74 27 2e 20 20 49 66 20 46 4f 52 4d 41 54 20 .by.`gptel-request'...If.FORMAT.
4e3c0 69 73 20 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
4e3e0 6f 64 65 64 0a 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 4c oded.JSON.query.instead.of.the.L
4e400 69 73 70 20 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 75 6e isp.structure.gptel.uses."...(un
4e420 6c 65 73 73 20 72 65 71 75 65 73 74 2d 66 73 6d 20 28 73 65 74 71 20 72 65 71 75 65 73 74 2d 66 less.request-fsm.(setq.request-f
4e440 73 6d 20 67 70 74 65 6c 2d 2d 66 73 6d 2d 6c 61 73 74 29 29 0a 20 20 28 69 66 20 28 62 75 66 66 sm.gptel--fsm-last))...(if.(buff
4e460 65 72 70 20 28 70 6c 69 73 74 2d 67 65 74 20 28 67 70 74 65 6c 2d 66 73 6d 2d 69 6e 66 6f 20 72 erp.(plist-get.(gptel-fsm-info.r
4e480 65 71 75 65 73 74 2d 66 73 6d 29 20 3a 64 61 74 61 29 29 0a 20 20 20 20 20 20 28 6c 65 74 72 65 equest-fsm).:data)).......(letre
4e4a0 63 20 28 28 64 72 79 2d 72 75 6e 2d 70 6f 6c 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 c.((dry-run-poll................
4e4c0 20 28 72 75 6e 2d 77 69 74 68 2d 74 69 6d 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .(run-with-timer................
4e4e0 20 20 30 20 31 20 28 6c 61 6d 62 64 61 20 28 66 73 6d 20 66 6f 72 6d 29 0a 20 20 20 20 20 20 20 ..0.1.(lambda.(fsm.form)........
4e500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 62 75 66 66 65 72 70 ................(unless.(bufferp
4e520 20 28 70 6c 69 73 74 2d 67 65 74 20 28 67 70 74 65 6c 2d 66 73 6d 2d 69 6e 66 6f 20 66 73 6d 29 .(plist-get.(gptel-fsm-info.fsm)
4e540 20 3a 64 61 74 61 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 .:data))........................
4e560 20 20 28 63 61 6e 63 65 6c 2d 74 69 6d 65 72 20 64 72 79 2d 72 75 6e 2d 70 6f 6c 6c 29 0a 20 20 ..(cancel-timer.dry-run-poll)...
4e580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 69 .......................(gptel--i
4e5a0 6e 73 70 65 63 74 2d 71 75 65 72 79 20 66 73 6d 20 66 6f 72 6d 29 29 29 0a 20 20 20 20 20 20 20 nspect-query.fsm.form)))........
4e5c0 20 20 20 20 20 20 20 20 20 20 72 65 71 75 65 73 74 2d 66 73 6d 20 66 6f 72 6d 61 74 29 29 29 29 ..........request-fsm.format))))
4e5e0 0a 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 70 6c 69 73 74 .....(with-current-buffer.(plist
4e600 2d 67 65 74 20 28 67 70 74 65 6c 2d 66 73 6d 2d 69 6e 66 6f 20 72 65 71 75 65 73 74 2d 66 73 6d -get.(gptel-fsm-info.request-fsm
4e620 29 20 3a 62 75 66 66 65 72 29 0a 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 75 70 64 61 74 65 2d ).:buffer).......(gptel--update-
4e640 73 74 61 74 75 73 20 22 20 52 65 61 64 79 22 20 27 73 75 63 63 65 73 73 29 29 0a 20 20 20 20 28 status.".Ready".'success)).....(
4e660 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 67 65 74 2d 62 75 66 66 65 72 2d with-current-buffer.(get-buffer-
4e680 63 72 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 20 20 28 6c create."*gptel-query*").......(l
4e6a0 65 74 2a 20 28 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 et*.((standard-output.(current-b
4e6c0 75 66 66 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 68 69 62 69 74 2d 72 65 uffer))..............(inhibit-re
4e6e0 61 64 2d 6f 6e 6c 79 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 71 75 65 73 74 ad-only.t)..............(request
4e700 2d 64 61 74 61 0a 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 28 -data...............(plist-get.(
4e720 67 70 74 65 6c 2d 66 73 6d 2d 69 6e 66 6f 20 72 65 71 75 65 73 74 2d 66 73 6d 29 20 3a 64 61 74 gptel-fsm-info.request-fsm).:dat
4e740 61 29 29 29 0a 20 20 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 a))).........(buffer-disable-und
4e760 6f 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 20 20 o).........(erase-buffer).......
4e780 20 20 28 69 66 20 28 65 71 20 66 6f 72 6d 61 74 20 27 6a 73 6f 6e 29 0a 20 20 20 20 20 20 20 20 ..(if.(eq.format.'json).........
4e7a0 20 20 20 20 28 70 72 6f 67 6e 20 28 66 75 6e 64 61 6d 65 6e 74 61 6c 2d 6d 6f 64 65 29 0a 20 20 ....(progn.(fundamental-mode)...
4e7c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 28 67 70 74 65 6c 2d .................(insert.(gptel-
4e7e0 2d 6a 73 6f 6e 2d 65 6e 63 6f 64 65 20 72 65 71 75 65 73 74 2d 64 61 74 61 29 29 0a 20 20 20 20 -json-encode.request-data)).....
4e800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6a 73 6f 6e 2d 70 72 65 74 74 79 2d 70 72 69 6e ...............(json-pretty-prin
4e820 74 2d 62 75 66 66 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 70 2d 64 61 74 61 2d t-buffer))...........(lisp-data-
4e840 6d 6f 64 65 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 72 69 6e 31 20 72 65 71 75 65 73 74 2d 64 mode)...........(prin1.request-d
4e860 61 74 61 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 70 2d 62 75 66 66 65 72 29 29 0a 20 20 20 20 ata)...........(pp-buffer)).....
4e880 20 20 20 20 28 73 65 74 71 2d 6c 6f 63 61 6c 20 67 70 74 65 6c 2d 2d 66 73 6d 2d 6c 61 73 74 20 ....(setq-local.gptel--fsm-last.
4e8a0 72 65 71 75 65 73 74 2d 66 73 6d 29 0a 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 request-fsm).........(goto-char.
4e8c0 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 0a 20 20 20 20 20 20 20 20 28 76 69 65 77 2d 6d 6f 64 65 20 (point-min)).........(view-mode.
4e8e0 31 29 0a 20 20 20 20 20 20 20 20 28 73 65 74 71 20 62 75 66 66 65 72 2d 75 6e 64 6f 2d 6c 69 73 1).........(setq.buffer-undo-lis
4e900 74 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 28 75 73 65 2d 6c 6f 63 61 6c 2d 6d 61 70 0a 20 20 t.nil).........(use-local-map...
4e920 20 20 20 20 20 20 20 28 6d 61 6b 65 2d 63 6f 6d 70 6f 73 65 64 2d 6b 65 79 6d 61 70 0a 20 20 20 .......(make-composed-keymap....
4e940 20 20 20 20 20 20 20 28 64 65 66 69 6e 65 2d 6b 65 79 6d 61 70 0a 20 20 20 20 20 20 20 20 20 20 .......(define-keymap...........
4e960 20 20 22 43 2d 63 20 43 2d 63 22 20 23 27 67 70 74 65 6c 2d 2d 63 6f 6e 74 69 6e 75 65 2d 71 75 .."C-c.C-c".#'gptel--continue-qu
4e980 65 72 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 43 2d 63 20 43 2d 77 22 20 28 6c 61 6d 62 64 ery............."C-c.C-w".(lambd
4e9a0 61 20 28 29 20 22 43 6f 70 79 20 43 75 72 6c 20 63 6f 6d 6d 61 6e 64 20 66 6f 72 20 71 75 65 72 a.()."Copy.Curl.command.for.quer
4e9c0 79 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 28 69 6e 74 y.".........................(int
4e9e0 65 72 61 63 74 69 76 65 29 20 28 67 70 74 65 6c 2d 2d 63 6f 6e 74 69 6e 75 65 2d 71 75 65 72 79 eractive).(gptel--continue-query
4ea00 20 27 63 6f 70 79 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 43 2d 63 20 43 2d 6b 22 20 23 .'copy))............."C-c.C-k".#
4ea20 27 71 75 69 74 2d 77 69 6e 64 6f 77 29 0a 20 20 20 20 20 20 20 20 20 20 28 63 75 72 72 65 6e 74 'quit-window)...........(current
4ea40 2d 6c 6f 63 61 6c 2d 6d 61 70 29 29 29 0a 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 68 65 -local-map))).........(unless.he
4ea60 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 28 73 65 74 71 ader-line-format...........(setq
4ea80 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 20 .header-line-format.............
4eaa0 20 20 20 20 28 73 75 62 73 74 69 74 75 74 65 2d 63 6f 6d 6d 61 6e 64 2d 6b 65 79 73 0a 20 20 20 ....(substitute-command-keys....
4eac0 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 20 ..............(concat...........
4eae0 20 20 20 20 20 20 20 20 22 45 64 69 74 20 72 65 71 75 65 73 74 3a 20 5c 5c 5b 72 65 61 64 2d 6f ........"Edit.request:.\\[read-o
4eb00 6e 6c 79 2d 6d 6f 64 65 5d 2c 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 20 nly-mode],"...................".
4eb20 53 65 6e 64 20 72 65 71 75 65 73 74 3a 20 5c 5c 5b 67 70 74 65 6c 2d 2d 63 6f 6e 74 69 6e 75 65 Send.request:.\\[gptel--continue
4eb40 2d 71 75 65 72 79 5d 2c 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 -query],"...................(for
4eb60 6d 61 74 20 22 20 43 6f 70 79 20 43 75 72 6c 3a 20 25 73 22 0a 20 20 20 20 20 20 20 20 20 20 20 mat.".Copy.Curl:.%s"............
4eb80 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 63 20 ...............(propertize."C-c.
4eba0 43 2d 77 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 29 0a 20 C-w".'face.'help-key-binding))..
4ebc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 20 51 75 69 74 3a 20 5c 5c 5b 71 75 69 74 .................".Quit:.\\[quit
4ebe0 2d 77 69 6e 64 6f 77 5d 22 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 64 69 73 70 6c 61 79 2d 62 -window]")))).........(display-b
4ec00 75 66 66 65 72 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 20 67 70 74 65 6c 2d 64 69 73 uffer.(current-buffer).gptel-dis
4ec20 70 6c 61 79 2d 62 75 66 66 65 72 2d 61 63 74 69 6f 6e 29 29 29 29 29 0a 0a 28 64 65 63 6c 61 72 play-buffer-action)))))..(declar
4ec40 65 2d 66 75 6e 63 74 69 6f 6e 20 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 67 65 74 2d 61 72 67 73 20 e-function.gptel-curl--get-args.
4ec60 22 67 70 74 65 6c 2d 63 75 72 6c 22 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 63 6f 6e "gptel-curl")..(defun.gptel--con
4ec80 74 69 6e 75 65 2d 71 75 65 72 79 20 28 26 6f 70 74 69 6f 6e 61 6c 20 63 6f 70 79 29 0a 20 20 22 tinue-query.(&optional.copy)..."
4eca0 43 6f 6e 74 69 6e 75 65 20 73 65 6e 64 69 6e 67 20 74 68 65 20 67 70 74 65 6c 20 71 75 65 72 79 Continue.sending.the.gptel.query
4ecc0 20 64 69 73 70 6c 61 79 65 64 20 69 6e 20 74 68 69 73 20 62 75 66 66 65 72 2e 0a 0a 54 68 65 20 .displayed.in.this.buffer...The.
4ece0 72 65 71 75 65 73 74 20 69 73 20 63 6f 6e 74 69 6e 75 65 64 20 77 69 74 68 20 74 68 65 20 73 61 request.is.continued.with.the.sa
4ed00 6d 65 20 70 61 72 61 6d 65 74 65 72 73 20 61 73 20 6f 72 69 67 69 6e 61 6c 6c 79 0a 73 70 65 63 me.parameters.as.originally.spec
4ed20 69 66 69 65 64 2e 0a 0a 57 69 74 68 20 70 72 65 66 69 78 20 61 72 67 20 43 4f 50 59 2c 20 63 6f ified...With.prefix.arg.COPY,.co
4ed40 70 79 20 74 68 65 20 43 75 72 6c 20 63 6f 6d 6d 61 6e 64 20 66 6f 72 20 74 68 65 20 72 65 71 75 py.the.Curl.command.for.the.requ
4ed60 65 73 74 20 74 6f 20 74 68 65 0a 6b 69 6c 6c 20 72 69 6e 67 20 69 6e 73 74 65 61 64 2e 22 0a 20 est.to.the.kill.ring.instead."..
4ed80 20 28 69 6e 74 65 72 61 63 74 69 76 65 20 22 50 22 20 6c 69 73 70 2d 64 61 74 61 2d 6d 6f 64 65 .(interactive."P".lisp-data-mode
4eda0 20 66 75 6e 64 61 6d 65 6e 74 61 6c 2d 6d 6f 64 65 29 0a 20 20 28 75 6e 6c 65 73 73 20 28 65 71 .fundamental-mode)...(unless.(eq
4edc0 75 61 6c 20 28 62 75 66 66 65 72 2d 6e 61 6d 65 29 20 22 2a 67 70 74 65 6c 2d 71 75 65 72 79 2a ual.(buffer-name)."*gptel-query*
4ede0 22 29 0a 20 20 20 20 28 75 73 65 72 2d 65 72 72 6f 72 20 22 54 68 69 73 20 63 6f 6d 6d 61 6e 64 ").....(user-error."This.command
4ee00 20 69 73 20 6d 65 61 6e 74 20 66 6f 72 20 75 73 65 20 69 6e 20 61 20 67 70 74 65 6c 20 64 72 79 .is.meant.for.use.in.a.gptel.dry
4ee20 2d 72 75 6e 20 62 75 66 66 65 72 22 29 29 0a 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e -run.buffer"))...(save-excursion
4ee40 0a 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 0a 20 20 20 .....(goto-char.(point-min))....
4ee60 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 2d 75 6e 6c 65 73 73 2d 64 65 62 75 67 20 6e 69 .(condition-case-unless-debug.ni
4ee80 6c 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 64 61 74 61 20 28 69 66 20 l.........(when-let*.((data.(if.
4eea0 28 65 71 20 6d 61 6a 6f 72 2d 6d 6f 64 65 20 27 6c 69 73 70 2d 64 61 74 61 2d 6d 6f 64 65 29 0a (eq.major-mode.'lisp-data-mode).
4eec0 20 20 20 20 20 20 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
4eee0 65 61 64 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 ead.(current-buffer))...........
4ef00 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 6a 73 6f 6e 2d 72 ..................(gptel--json-r
4ef20 65 61 64 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 61 73 73 65 72 74 20 28 63 6c ead))))...........(cl-assert.(cl
4ef40 2d 74 79 70 65 70 20 67 70 74 65 6c 2d 2d 66 73 6d 2d 6c 61 73 74 20 27 67 70 74 65 6c 2d 66 73 -typep.gptel--fsm-last.'gptel-fs
4ef60 6d 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 28 67 70 74 65 6c 2d m))...........(plist-put.(gptel-
4ef80 66 73 6d 2d 69 6e 66 6f 20 67 70 74 65 6c 2d 2d 66 73 6d 2d 6c 61 73 74 29 20 3a 64 61 74 61 20 fsm-info.gptel--fsm-last).:data.
4efa0 64 61 74 61 29 0a 20 20 20 20 20 20 20 20 20 20 28 69 66 20 63 6f 70 79 20 20 20 20 20 20 20 20 data)...........(if.copy........
4efc0 20 20 20 20 20 20 20 20 20 3b 43 6f 70 79 20 43 75 72 6c 20 63 6f 6d 6d 61 6e 64 20 69 6e 73 74 .........;Copy.Curl.command.inst
4efe0 65 61 64 20 6f 66 20 73 65 6e 64 69 6e 67 20 72 65 71 75 65 73 74 0a 20 20 20 20 20 20 20 20 20 ead.of.sending.request..........
4f000 20 20 20 20 20 28 6c 65 74 20 28 28 61 72 67 73 20 28 61 6e 64 20 28 72 65 71 75 69 72 65 20 27 .....(let.((args.(and.(require.'
4f020 67 70 74 65 6c 2d 63 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 gptel-curl).....................
4f040 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 67 65 74 2d 61 72 67 73 ...........(gptel-curl--get-args
4f060 20 28 67 70 74 65 6c 2d 66 73 6d 2d 69 6e 66 6f 20 67 70 74 65 6c 2d 2d 66 73 6d 2d 6c 61 73 74 .(gptel-fsm-info.gptel--fsm-last
4f080 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 )...............................
4f0a0 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 64 35 20 28 66 6f 72 .......................(md5.(for
4f0c0 6d 61 74 20 22 25 73 22 20 28 72 61 6e 64 6f 6d 29 29 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 mat."%s".(random))))))).........
4f0e0 20 20 20 20 20 20 20 20 28 6b 69 6c 6c 2d 6e 65 77 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ........(kill-new...............
4f100 20 20 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 67 75 ...(mapconcat.#'shell-quote-argu
4f120 6d 65 6e 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 ment............................
4f140 20 28 63 6f 6e 73 20 28 67 70 74 65 6c 2d 2d 63 75 72 6c 2d 70 61 74 68 29 20 61 72 67 73 29 20 .(cons.(gptel--curl-path).args).
4f160 22 20 5c 5c 5c 6e 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 65 73 73 61 ".\\\n")).................(messa
4f180 67 65 20 22 43 75 72 6c 20 63 6f 6d 6d 61 6e 64 20 66 6f 72 20 72 65 71 75 65 73 74 20 63 6f 70 ge."Curl.command.for.request.cop
4f1a0 69 65 64 20 74 6f 20 6b 69 6c 6c 2d 72 69 6e 67 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 ied.to.kill-ring")).............
4f1c0 28 67 70 74 65 6c 2d 2d 66 73 6d 2d 74 72 61 6e 73 69 74 69 6f 6e 20 67 70 74 65 6c 2d 2d 66 73 (gptel--fsm-transition.gptel--fs
4f1e0 6d 2d 6c 61 73 74 29 20 3b 49 4e 49 54 20 2d 3e 20 57 41 49 54 0a 20 20 20 20 20 20 20 20 20 20 m-last).;INIT.->.WAIT...........
4f200 20 20 28 71 75 69 74 2d 77 69 6e 64 6f 77 29 29 29 0a 20 20 20 20 20 20 28 65 72 72 6f 72 0a 20 ..(quit-window))).......(error..
4f220 20 20 20 20 20 20 28 75 73 65 72 2d 65 72 72 6f 72 20 22 43 61 6e 20 6e 6f 74 20 72 65 73 75 6d ......(user-error."Can.not.resum
4f240 65 20 72 65 71 75 65 73 74 3a 20 63 6f 75 6c 64 20 6e 6f 74 20 72 65 61 64 20 64 61 74 61 20 66 e.request:.could.not.read.data.f
4f260 72 6f 6d 20 62 75 66 66 65 72 21 22 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d rom.buffer!")))))..(defun.gptel-
4f280 2d 69 6e 73 65 72 74 2d 72 65 73 70 6f 6e 73 65 20 28 72 65 73 70 6f 6e 73 65 20 69 6e 66 6f 20 -insert-response.(response.info.
4f2a0 26 6f 70 74 69 6f 6e 61 6c 20 72 61 77 29 0a 20 20 22 49 6e 73 65 72 74 20 74 68 65 20 4c 4c 4d &optional.raw)..."Insert.the.LLM
4f2c0 20 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 .RESPONSE.into.the.gptel.buffer.
4f2e0 0a 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 ..INFO.is.a.plist.containing.inf
4f300 6f 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 ormation.relevant.to.this.buffer
4f320 2e 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 ..See.`gptel--url-get-response'.
4f340 66 6f 72 20 64 65 74 61 69 6c 73 2e 0a 0a 4f 70 74 69 6f 6e 61 6c 20 52 41 57 20 64 69 73 61 62 for.details...Optional.RAW.disab
4f360 6c 65 73 20 74 65 78 74 20 70 72 6f 70 65 72 74 69 65 73 20 61 6e 64 20 74 72 61 6e 73 66 6f 72 les.text.properties.and.transfor
4f380 6d 61 74 69 6f 6e 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 67 70 74 65 6c 2d 62 75 66 66 65 72 20 mation."...(let*.((gptel-buffer.
4f3a0 28 70 6c 69 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 (plist-get.info.:buffer)).......
4f3c0 20 20 20 28 73 74 61 72 74 2d 6d 61 72 6b 65 72 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f ...(start-marker.(plist-get.info
4f3e0 20 3a 70 6f 73 69 74 69 6f 6e 29 29 0a 20 20 20 20 20 20 20 20 20 28 74 72 61 63 6b 69 6e 67 2d .:position))..........(tracking-
4f400 6d 61 72 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 marker.(plist-get.info.:tracking
4f420 2d 6d 61 72 6b 65 72 29 29 29 0a 20 20 20 20 28 70 63 61 73 65 20 72 65 73 70 6f 6e 73 65 0a 20 -marker))).....(pcase.response..
4f440 20 20 20 20 20 28 28 70 72 65 64 20 73 74 72 69 6e 67 70 29 20 20 20 20 20 20 20 20 20 20 20 20 .....((pred.stringp)............
4f460 20 20 20 20 3b 52 65 73 70 6f 6e 73 65 20 74 65 78 74 0a 20 20 20 20 20 20 20 28 77 69 74 68 2d ....;Response.text........(with-
4f480 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 67 70 74 65 6c 2d 62 75 66 66 65 72 0a 20 20 20 20 current-buffer.gptel-buffer.....
4f4a0 20 20 20 20 20 28 77 68 65 6e 20 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 20 20 20 20 20 20 .....(when.tracking-marker......
4f4c0 20 20 20 20 20 3b 73 65 70 61 72 61 74 65 20 66 72 6f 6d 20 70 72 65 76 69 6f 75 73 20 72 65 73 .....;separate.from.previous.res
4f4e0 70 6f 6e 73 65 0a 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 20 ponse............(setq.response.
4f500 28 63 6f 6e 63 61 74 20 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 73 65 70 61 72 61 74 6f 72 (concat.gptel-response-separator
4f520 20 72 65 73 70 6f 6e 73 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 .response)))..........(save-excu
4f540 72 73 69 6f 6e 0a 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 rsion............(with-current-b
4f560 75 66 66 65 72 20 28 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 uffer.(marker-buffer.start-marke
4f580 72 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 6f 72 20 74 r)..............(goto-char.(or.t
4f5a0 72 61 63 6b 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 0a 20 20 racking-marker.start-marker))...
4f5c0 20 20 20 20 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 ...........;;.(run-hooks.'gptel-
4f5e0 70 72 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 pre-response-hook)..............
4f600 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 6e (unless.(or.(bobp).(plist-get.in
4f620 66 6f 20 3a 69 6e 2d 70 6c 61 63 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 fo.:in-place)...................
4f640 20 20 20 20 20 20 20 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 29 0a 20 20 20 20 20 20 20 20 .......tracking-marker).........
4f660 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 73 65 .......(insert.gptel-response-se
4f680 70 61 72 61 74 6f 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 67 70 parator)................(when.gp
4f6a0 74 65 6c 2d 6d 6f 64 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 tel-mode..................(inser
4f6c0 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 74 72 69 6e 67 29 t.(gptel-response-prefix-string)
4f6e0 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 76 65 2d 6d 61 72 6b 65 72 20 73 ))................(move-marker.s
4f700 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 20 20 20 20 20 20 20 tart-marker.(point)))...........
4f720 20 20 20 28 75 6e 6c 65 73 73 20 72 61 77 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 ...(unless.raw................(w
4f740 68 65 6e 2d 6c 65 74 2a 20 28 28 74 72 61 6e 73 66 6f 72 6d 65 72 20 28 70 6c 69 73 74 2d 67 65 hen-let*.((transformer.(plist-ge
4f760 74 20 69 6e 66 6f 20 3a 74 72 61 6e 73 66 6f 72 6d 65 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 t.info.:transformer)))..........
4f780 20 20 20 20 20 20 20 20 28 73 65 74 71 20 72 65 73 70 6f 6e 73 65 20 28 66 75 6e 63 61 6c 6c 20 ........(setq.response.(funcall.
4f7a0 74 72 61 6e 73 66 6f 72 6d 65 72 20 72 65 73 70 6f 6e 73 65 29 29 29 0a 20 20 20 20 20 20 20 20 transformer.response))).........
4f7c0 20 20 20 20 20 20 20 28 61 64 64 2d 74 65 78 74 2d 70 72 6f 70 65 72 74 69 65 73 0a 20 20 20 20 .......(add-text-properties.....
4f7e0 20 20 20 20 20 20 20 20 20 20 20 20 30 20 28 6c 65 6e 67 74 68 20 72 65 73 70 6f 6e 73 65 29 20 ............0.(length.response).
4f800 27 28 67 70 74 65 6c 20 72 65 73 70 6f 6e 73 65 20 66 72 6f 6e 74 2d 73 74 69 63 6b 79 20 28 67 '(gptel.response.front-sticky.(g
4f820 70 74 65 6c 29 29 20 72 65 73 70 6f 6e 73 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 ptel)).response))..............(
4f840 69 6e 73 65 72 74 20 72 65 73 70 6f 6e 73 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 insert.response)..............(p
4f860 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 20 28 list-put.info.:tracking-marker.(
4f880 73 65 74 71 20 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 20 28 70 6f 69 6e 74 2d 6d 61 72 6b setq.tracking-marker.(point-mark
4f8a0 65 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 66 6f 72 20 75 6e 69 66 6f 72 er)))..............;;.for.unifor
4f8c0 6d 69 74 79 20 77 69 74 68 20 73 74 72 65 61 6d 69 6e 67 20 72 65 73 70 6f 6e 73 65 73 0a 20 20 mity.with.streaming.responses...
4f8e0 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 2d 6d 61 72 6b 65 72 2d 69 6e 73 65 72 74 69 6f 6e ...........(set-marker-insertion
4f900 2d 74 79 70 65 20 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 20 74 29 29 29 29 29 0a 20 20 20 -type.tracking-marker.t)))))....
4f920 20 20 20 28 60 28 72 65 61 73 6f 6e 69 6e 67 20 2e 20 2c 74 65 78 74 29 0a 20 20 20 20 20 20 20 ...(`(reasoning...,text)........
4f940 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 69 6e 63 6c 75 64 65 20 28 70 6c 69 73 74 2d 67 65 74 20 (when-let*.((include.(plist-get.
4f960 69 6e 66 6f 20 3a 69 6e 63 6c 75 64 65 2d 72 65 61 73 6f 6e 69 6e 67 29 29 29 0a 20 20 20 20 20 info.:include-reasoning)))......
4f980 20 20 20 20 28 69 66 20 28 73 74 72 69 6e 67 70 20 69 6e 63 6c 75 64 65 29 0a 20 20 20 20 20 20 ....(if.(stringp.include).......
4f9a0 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 67 65 74 .......(with-current-buffer.(get
4f9c0 2d 62 75 66 66 65 72 2d 63 72 65 61 74 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -buffer-create..................
4f9e0 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 69 6e 66 ..................(plist-get.inf
4fa00 6f 20 3a 69 6e 63 6c 75 64 65 2d 72 65 61 73 6f 6e 69 6e 67 29 29 0a 20 20 20 20 20 20 20 20 20 o.:include-reasoning))..........
4fa20 20 20 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 20 28 67 6f 74 6f 2d 63 68 61 72 ......(save-excursion.(goto-char
4fa40 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 20 28 69 6e 73 65 72 74 20 74 65 78 74 29 29 29 0a 20 20 .(point-max)).(insert.text)))...
4fa60 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 6d .........(with-current-buffer.(m
4fa80 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 20 arker-buffer.start-marker)......
4faa0 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 73 65 70 61 72 61 74 6f 72 20 20 20 20 20 20 20 20 ........(let.((separator........
4fac0 20 3b 53 65 70 61 72 61 74 65 20 66 72 6f 6d 20 72 65 73 70 6f 6e 73 65 20 70 72 65 66 69 78 20 .;Separate.from.response.prefix.
4fae0 69 66 20 72 65 71 75 69 72 65 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 if.required.....................
4fb00 28 61 6e 64 20 28 6e 6f 74 20 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 29 20 67 70 74 65 6c (and.(not.tracking-marker).gptel
4fb20 2d 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 28 -mode..........................(
4fb40 6e 6f 74 20 28 73 74 72 69 6e 67 2d 73 75 66 66 69 78 2d 70 20 22 5c 6e 22 20 28 67 70 74 65 6c not.(string-suffix-p."\n".(gptel
4fb60 2d 72 65 73 70 6f 6e 73 65 2d 70 72 65 66 69 78 2d 73 74 72 69 6e 67 29 29 29 0a 20 20 20 20 20 -response-prefix-string)))......
4fb80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 5c 6e 22 29 29 0a 20 20 20 20 20 ...................."\n"))......
4fba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 6c 6f 63 6b 73 20 28 69 66 20 28 64 65 72 69 76 ..............(blocks.(if.(deriv
4fbc0 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 20 20 ed-mode-p.'org-mode)............
4fbe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 60 28 22 23 2b 62 65 67 69 6e 5f 72 ....................`("#+begin_r
4fc00 65 61 73 6f 6e 69 6e 67 5c 6e 22 20 2e 20 2c 28 63 6f 6e 63 61 74 20 22 5c 6e 23 2b 65 6e 64 5f easoning\n"...,(concat."\n#+end_
4fc20 72 65 61 73 6f 6e 69 6e 67 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 reasoning"......................
4fc40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
4fc60 20 20 20 20 20 20 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 73 65 70 61 72 61 74 6f 72 29 29 ......gptel-response-separator))
4fc80 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 3b 3b ..............................;;
4fca0 20 54 4f 44 4f 28 72 65 61 73 6f 6e 69 6e 67 29 20 72 65 6d 6f 76 65 20 70 72 6f 70 65 72 74 69 .TODO(reasoning).remove.properti
4fcc0 65 73 20 61 6e 64 20 73 74 72 69 70 20 69 6e 73 74 65 61 64 0a 20 20 20 20 20 20 20 20 20 20 20 es.and.strip.instead............
4fce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 20 28 70 72 6f 70 65 72 74 ..................(cons.(propert
4fd00 69 7a 65 20 22 60 60 60 20 72 65 61 73 6f 6e 69 6e 67 5c 6e 22 20 27 67 70 74 65 6c 20 27 69 67 ize."```.reasoning\n".'gptel.'ig
4fd20 6e 6f 72 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 nore)...........................
4fd40 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 5c 6e .........(concat.(propertize."\n
4fd60 60 60 60 22 20 27 67 70 74 65 6c 20 27 69 67 6e 6f 72 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 ```".'gptel.'ignore)............
4fd80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
4fda0 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 73 65 70 61 72 61 74 6f 72 29 29 29 29 29 0a 20 20 gptel-response-separator)))))...
4fdc0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 65 71 20 69 6e 63 6c 75 64 65 20 27 69 67 .............(if.(eq.include.'ig
4fde0 6e 6f 72 65 29 0a 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 0a nore)....................(progn.
4fe00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 64 64 2d 74 65 78 74 2d 70 .....................(add-text-p
4fe20 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 20 20 20 roperties.......................
4fe40 30 20 28 6c 65 6e 67 74 68 20 74 65 78 74 29 20 27 28 67 70 74 65 6c 20 69 67 6e 6f 72 65 20 66 0.(length.text).'(gptel.ignore.f
4fe60 72 6f 6e 74 2d 73 74 69 63 6b 79 20 28 67 70 74 65 6c 29 29 20 74 65 78 74 29 0a 20 20 20 20 20 ront-sticky.(gptel)).text)......
4fe80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 69 6e 73 65 72 74 2d 72 ................(gptel--insert-r
4fea0 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 20 20 28 63 esponse.......................(c
4fec0 6f 6e 63 61 74 20 28 63 61 72 20 62 6c 6f 63 6b 73 29 20 74 65 78 74 20 28 63 64 72 20 62 6c 6f oncat.(car.blocks).text.(cdr.blo
4fee0 63 6b 73 29 29 20 69 6e 66 6f 20 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 cks)).info.t))..................
4ff00 28 67 70 74 65 6c 2d 2d 69 6e 73 65 72 74 2d 72 65 73 70 6f 6e 73 65 20 28 63 6f 6e 63 61 74 20 (gptel--insert-response.(concat.
4ff20 73 65 70 61 72 61 74 6f 72 20 28 63 61 72 20 62 6c 6f 63 6b 73 29 29 20 69 6e 66 6f 20 74 29 0a separator.(car.blocks)).info.t).
4ff40 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 69 6e 73 65 72 74 2d .................(gptel--insert-
4ff60 72 65 73 70 6f 6e 73 65 20 74 65 78 74 20 69 6e 66 6f 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 response.text.info).............
4ff80 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 69 6e 73 65 72 74 2d 72 65 73 70 6f 6e 73 65 20 28 63 64 .....(gptel--insert-response.(cd
4ffa0 72 20 62 6c 6f 63 6b 73 29 20 69 6e 66 6f 20 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 r.blocks).info.t))..............
4ffc0 20 20 28 77 68 65 6e 20 28 64 65 72 69 76 65 64 2d 6d 6f 64 65 2d 70 20 27 6f 72 67 2d 6d 6f 64 ..(when.(derived-mode-p.'org-mod
4ffe0 65 29 20 3b 66 6f 6c 64 20 62 6c 6f 63 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 e).;fold.block..................
50000 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (save-excursion.................
50020 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 74 ...(goto-char.(plist-get.info.:t
50040 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 racking-marker))................
50060 20 20 20 20 28 73 65 61 72 63 68 2d 62 61 63 6b 77 61 72 64 20 22 23 2b 65 6e 64 5f 72 65 61 73 ....(search-backward."#+end_reas
50080 6f 6e 69 6e 67 22 20 73 74 61 72 74 2d 6d 61 72 6b 65 72 20 74 29 0a 20 20 20 20 20 20 20 20 20 oning".start-marker.t)..........
500a0 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 20 22 5e 23 5c ..........(when.(looking-at."^#\
500c0 5c 2b 65 6e 64 5f 72 65 61 73 6f 6e 69 6e 67 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 \+end_reasoning")...............
500e0 20 20 20 20 20 20 20 28 6f 72 67 2d 63 79 63 6c 65 29 29 29 29 29 29 29 29 29 0a 20 20 20 20 20 .......(org-cycle)))))))))......
50100 20 28 60 28 74 6f 6f 6c 2d 63 61 6c 6c 20 2e 20 2c 74 6f 6f 6c 2d 63 61 6c 6c 73 29 0a 20 20 20 .(`(tool-call...,tool-calls)....
50120 20 20 20 20 28 67 70 74 65 6c 2d 2d 64 69 73 70 6c 61 79 2d 74 6f 6f 6c 2d 63 61 6c 6c 73 20 74 ....(gptel--display-tool-calls.t
50140 6f 6f 6c 2d 63 61 6c 6c 73 20 69 6e 66 6f 29 29 0a 20 20 20 20 20 20 28 60 28 74 6f 6f 6c 2d 72 ool-calls.info)).......(`(tool-r
50160 65 73 75 6c 74 20 2e 20 2c 74 6f 6f 6c 2d 72 65 73 75 6c 74 73 29 0a 20 20 20 20 20 20 20 28 67 esult...,tool-results)........(g
50180 70 74 65 6c 2d 2d 64 69 73 70 6c 61 79 2d 74 6f 6f 6c 2d 72 65 73 75 6c 74 73 20 74 6f 6f 6c 2d ptel--display-tool-results.tool-
501a0 72 65 73 75 6c 74 73 20 69 6e 66 6f 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d results.info)))))..(defun.gptel-
501c0 2d 63 72 65 61 74 65 2d 70 72 6f 6d 70 74 2d 62 75 66 66 65 72 20 28 26 6f 70 74 69 6f 6e 61 6c -create-prompt-buffer.(&optional
501e0 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 62 75 66 66 65 72 20 .prompt-end)..."Return.a.buffer.
50200 77 69 74 68 20 74 68 65 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 20 70 72 6f 6d 70 74 20 74 6f 20 with.the.conversation.prompt.to.
50220 62 65 20 73 65 6e 74 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 be.sent...If.the.region.is.activ
50240 65 20 6c 69 6d 69 74 20 74 68 65 20 70 72 6f 6d 70 74 20 74 65 78 74 20 74 6f 20 74 68 65 20 72 e.limit.the.prompt.text.to.the.r
50260 65 67 69 6f 6e 20 63 6f 6e 74 65 6e 74 73 2e 0a 4f 74 68 65 72 77 69 73 65 20 74 68 65 20 70 72 egion.contents..Otherwise.the.pr
50280 6f 6d 70 74 20 74 65 78 74 20 69 73 20 63 6f 6e 73 74 72 75 63 74 65 64 20 66 72 6f 6d 20 74 68 ompt.text.is.constructed.from.th
502a0 65 20 63 6f 6e 74 65 6e 74 73 20 6f 66 20 74 68 65 0a 63 75 72 72 65 6e 74 20 62 75 66 66 65 72 e.contents.of.the.current.buffer
502c0 20 75 70 20 74 6f 20 70 6f 69 6e 74 2c 20 6f 72 20 50 52 4f 4d 50 54 2d 45 4e 44 20 69 66 20 70 .up.to.point,.or.PROMPT-END.if.p
502e0 72 6f 76 69 64 65 64 2e 22 0a 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 rovided."...(save-excursion.....
50300 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 6c 65 74 20 28 28 62 (save-restriction.......(let.((b
50320 75 66 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29 29 0a 20 20 20 20 20 20 20 20 28 63 uf.(current-buffer))).........(c
50340 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 28 28 64 65 72 69 76 65 64 2d 6d 6f 64 65 2d 70 20 27 6f ond..........((derived-mode-p.'o
50360 72 67 2d 6d 6f 64 65 29 0a 20 20 20 20 20 20 20 20 20 20 28 72 65 71 75 69 72 65 20 27 67 70 74 rg-mode)...........(require.'gpt
50380 65 6c 2d 6f 72 67 29 0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20 41 6c 73 6f 20 68 61 6e 64 6c 65 el-org)...........;;.Also.handle
503a0 73 20 72 65 67 69 6f 6e 73 20 69 6e 20 4f 72 67 20 6d 6f 64 65 0a 20 20 20 20 20 20 20 20 20 20 s.regions.in.Org.mode...........
503c0 28 67 70 74 65 6c 2d 6f 72 67 2d 2d 63 72 65 61 74 65 2d 70 72 6f 6d 70 74 2d 62 75 66 66 65 72 (gptel-org--create-prompt-buffer
503e0 20 70 72 6f 6d 70 74 2d 65 6e 64 29 29 0a 20 20 20 20 20 20 20 20 20 28 28 75 73 65 2d 72 65 67 .prompt-end))..........((use-reg
50400 69 6f 6e 2d 70 29 0a 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 72 62 20 28 72 65 67 69 ion-p)...........(let.((rb.(regi
50420 6f 6e 2d 62 65 67 69 6e 6e 69 6e 67 29 29 20 28 72 65 20 28 72 65 67 69 6f 6e 2d 65 6e 64 29 29 on-beginning)).(re.(region-end))
50440 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 77 69 74 68 2d 62 75 66 66 65 ).............(gptel--with-buffe
50460 72 2d 63 6f 70 79 20 62 75 66 20 72 62 20 72 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 r-copy.buf.rb.re...............(
50480 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 74 20 28 current-buffer))))..........(t.(
504a0 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 6d 70 74 2d 65 unless.prompt-end.(setq.prompt-e
504c0 6e 64 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d nd.(point))).............(gptel-
504e0 2d 77 69 74 68 2d 62 75 66 66 65 72 2d 63 6f 70 79 20 62 75 66 20 28 70 6f 69 6e 74 2d 6d 69 6e -with-buffer-copy.buf.(point-min
50500 29 20 70 72 6f 6d 70 74 2d 65 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 75 72 72 ).prompt-end...............(curr
50520 65 6e 74 2d 62 75 66 66 65 72 29 29 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c ent-buffer))))))))..(defun.gptel
50540 2d 2d 63 72 65 61 74 65 2d 70 72 6f 6d 70 74 20 28 26 6f 70 74 69 6f 6e 61 6c 20 70 72 6f 6d 70 --create-prompt.(&optional.promp
50560 74 2d 65 6e 64 29 0a 20 20 22 52 65 74 75 72 6e 20 61 20 66 75 6c 6c 20 63 6f 6e 76 65 72 73 61 t-end)..."Return.a.full.conversa
50580 74 69 6f 6e 20 70 72 6f 6d 70 74 20 66 72 6f 6d 20 74 68 65 20 63 6f 6e 74 65 6e 74 73 20 6f 66 tion.prompt.from.the.contents.of
505a0 20 74 68 69 73 20 62 75 66 66 65 72 2e 0a 0a 49 66 20 60 67 70 74 65 6c 2d 2d 6e 75 6d 2d 6d 65 .this.buffer...If.`gptel--num-me
505c0 73 73 61 67 65 73 2d 74 6f 2d 73 65 6e 64 27 20 69 73 20 73 65 74 2c 20 6c 69 6d 69 74 20 74 6f ssages-to-send'.is.set,.limit.to
505e0 20 74 68 61 74 20 6d 61 6e 79 0a 72 65 63 65 6e 74 20 65 78 63 68 61 6e 67 65 73 2e 0a 0a 49 66 .that.many.recent.exchanges...If
50600 20 50 52 4f 4d 50 54 2d 45 4e 44 20 28 61 20 6d 61 72 6b 65 72 29 20 69 73 20 70 72 6f 76 69 64 .PROMPT-END.(a.marker).is.provid
50620 65 64 2c 20 65 6e 64 20 74 68 65 20 70 72 6f 6d 70 74 20 63 6f 6e 74 65 6e 74 73 0a 74 68 65 72 ed,.end.the.prompt.contents.ther
50640 65 2e 20 20 54 68 69 73 20 64 65 66 61 75 6c 74 73 20 74 6f 20 28 70 6f 69 6e 74 29 2e 22 0a 20 e...This.defaults.to.(point)."..
50660 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 67 70 74 65 6c 2d 2d 63 72 .(with-current-buffer.(gptel--cr
50680 65 61 74 65 2d 70 72 6f 6d 70 74 2d 62 75 66 66 65 72 20 70 72 6f 6d 70 74 2d 65 6e 64 29 0a 20 eate-prompt-buffer.prompt-end)..
506a0 20 20 20 28 75 6e 77 69 6e 64 2d 70 72 6f 74 65 63 74 0a 20 20 20 20 20 20 20 20 28 67 70 74 65 ...(unwind-protect.........(gpte
506c0 6c 2d 2d 70 61 72 73 65 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 62 l--parse-buffer..........gptel-b
506e0 61 63 6b 65 6e 64 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 ackend.(and.gptel--num-messages-
50700 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.........................
50720 20 20 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 ....(*.2.gptel--num-messages-to-
50740 73 65 6e 64 29 29 29 0a 20 20 20 20 20 20 28 6b 69 6c 6c 2d 62 75 66 66 65 72 20 28 63 75 72 72 send))).......(kill-buffer.(curr
50760 65 6e 74 2d 62 75 66 66 65 72 29 29 29 29 29 0a 0a 28 6d 61 6b 65 2d 6f 62 73 6f 6c 65 74 65 20 ent-buffer)))))..(make-obsolete.
50780 27 67 70 74 65 6c 2d 2d 63 72 65 61 74 65 2d 70 72 6f 6d 70 74 20 27 67 70 74 65 6c 2d 2d 63 72 'gptel--create-prompt.'gptel--cr
507a0 65 61 74 65 2d 70 72 6f 6d 70 74 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 eate-prompt-buffer..............
507c0 20 20 22 30 2e 39 2e 39 22 29 0a 0a 28 63 6c 2d 64 65 66 67 65 6e 65 72 69 63 20 67 70 74 65 6c .."0.9.9")..(cl-defgeneric.gptel
507e0 2d 2d 70 61 72 73 65 2d 62 75 66 66 65 72 20 28 62 61 63 6b 65 6e 64 20 6d 61 78 2d 65 6e 74 72 --parse-buffer.(backend.max-entr
50800 69 65 73 29 0a 20 20 22 50 61 72 73 65 20 63 75 72 72 65 6e 74 20 62 75 66 66 65 72 20 62 61 63 ies)..."Parse.current.buffer.bac
50820 6b 77 61 72 64 73 20 66 72 6f 6d 20 70 6f 69 6e 74 20 61 6e 64 20 72 65 74 75 72 6e 20 61 20 6c kwards.from.point.and.return.a.l
50840 69 73 74 20 6f 66 20 70 72 6f 6d 70 74 73 2e 0a 0a 42 41 43 4b 45 4e 44 20 69 73 20 74 68 65 20 ist.of.prompts...BACKEND.is.the.
50860 4c 4c 4d 20 62 61 63 6b 65 6e 64 20 69 6e 20 75 73 65 2e 0a 0a 4d 41 58 2d 45 4e 54 52 49 45 53 LLM.backend.in.use...MAX-ENTRIES
50880 20 69 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 71 75 65 72 69 65 73 2f 72 65 73 70 6f 6e .is.the.number.of.queries/respon
508a0 73 65 73 20 74 6f 20 69 6e 63 6c 75 64 65 20 66 6f 72 0a 63 6f 6e 74 65 78 62 74 2e 22 29 0a 0a ses.to.include.for.contexbt.")..
508c0 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 6c 69 73 74 2d 61 6e 64 2d 69 6e 73 (defun.gptel--parse-list-and-ins
508e0 65 72 74 20 28 70 72 6f 6d 70 74 73 29 0a 20 20 22 49 6e 73 65 72 74 20 50 52 4f 4d 50 54 53 2c ert.(prompts)..."Insert.PROMPTS,
50900 20 61 20 6c 69 73 74 20 6f 66 20 6d 65 73 73 61 67 65 73 20 69 6e 74 6f 20 74 68 65 20 63 75 72 .a.list.of.messages.into.the.cur
50920 72 65 6e 74 20 62 75 66 66 65 72 2e 0a 0a 50 72 6f 70 65 72 74 69 7a 65 20 74 68 65 20 69 6e 73 rent.buffer...Propertize.the.ins
50940 65 72 74 69 6f 6e 73 20 69 6e 20 61 20 66 6f 72 6d 61 74 20 67 70 74 65 6c 20 63 61 6e 20 70 61 ertions.in.a.format.gptel.can.pa
50960 72 73 65 20 69 6e 74 6f 20 61 0a 63 6f 6e 76 65 72 73 61 74 69 6f 6e 2e 0a 0a 50 52 4f 4d 50 54 rse.into.a.conversation...PROMPT
50980 53 20 69 73 20 74 79 70 69 63 61 6c 6c 79 20 74 68 65 20 69 6e 70 75 74 20 74 6f 20 60 67 70 74 S.is.typically.the.input.to.`gpt
509a0 65 6c 2d 72 65 71 75 65 73 74 27 2c 20 65 69 74 68 65 72 20 61 20 6c 69 73 74 20 6f 66 20 73 74 el-request',.either.a.list.of.st
509c0 72 69 6e 67 73 0a 72 65 70 72 65 73 65 6e 74 69 6e 67 20 61 20 63 6f 6e 76 65 72 73 61 74 69 6f rings.representing.a.conversatio
509e0 6e 20 77 69 74 68 20 61 6c 74 65 72 6e 61 74 65 20 70 72 6f 6d 70 74 2f 72 65 73 70 6f 6e 73 65 n.with.alternate.prompt/response
50a00 20 74 75 72 6e 73 2c 20 6f 72 20 61 20 6c 69 73 74 20 6f 66 0a 6c 69 73 74 73 20 77 69 74 68 20 .turns,.or.a.list.of.lists.with.
50a20 65 78 70 6c 69 63 69 74 20 72 6f 6c 65 73 20 28 70 72 6f 6d 70 74 2f 72 65 73 70 6f 6e 73 65 2f explicit.roles.(prompt/response/
50a40 74 6f 6f 6c 29 2e 20 20 53 65 65 20 74 68 65 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 tool)...See.the.documentation.of
50a60 0a 60 67 70 74 65 6c 2d 72 65 71 75 65 73 74 27 20 66 6f 72 20 74 68 65 20 6c 61 74 74 65 72 2e .`gptel-request'.for.the.latter.
50a80 22 0a 20 20 28 69 66 20 28 73 74 72 69 6e 67 70 20 28 63 61 72 20 70 72 6f 6d 70 74 73 29 29 20 "...(if.(stringp.(car.prompts)).
50aa0 20 20 20 20 20 20 20 20 3b 20 53 69 6d 70 6c 65 20 66 6f 72 6d 61 74 2c 20 6c 69 73 74 20 6f 66 ........;.Simple.format,.list.of
50ac0 20 73 74 72 69 6e 67 73 0a 20 20 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 74 65 78 74 .strings.......(cl-loop.for.text
50ae0 20 69 6e 20 70 72 6f 6d 70 74 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 72 .in.prompts................for.r
50b00 65 73 70 6f 6e 73 65 20 3d 20 6e 69 6c 20 74 68 65 6e 20 28 6e 6f 74 20 72 65 73 70 6f 6e 73 65 esponse.=.nil.then.(not.response
50b20 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 68 65 6e 20 74 65 78 74 0a 20 20 20 20 20 )................when.text......
50b40 20 20 20 20 20 20 20 20 20 20 69 66 20 72 65 73 70 6f 6e 73 65 0a 20 20 20 20 20 20 20 20 20 20 ..........if.response...........
50b60 20 20 20 20 20 64 6f 20 28 69 6e 73 65 72 74 20 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 73 .....do.(insert.gptel-response-s
50b80 65 70 61 72 61 74 6f 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 eparator........................
50ba0 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 74 65 78 74 20 27 67 70 74 65 6c 20 27 72 65 73 70 ...(propertize.text.'gptel.'resp
50bc0 6f 6e 73 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 onse)...........................
50be0 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 73 65 70 61 72 61 74 6f 72 29 0a 20 20 20 20 20 20 gptel-response-separator).......
50c00 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 64 6f 20 28 69 6e 73 65 72 74 20 74 65 78 74 29 29 0a .........else.do.(insert.text)).
50c20 20 20 20 20 28 64 6f 6c 69 73 74 20 28 65 6e 74 72 79 20 70 72 6f 6d 70 74 73 29 20 20 20 20 20 ....(dolist.(entry.prompts).....
50c40 20 20 20 20 20 20 20 20 3b 20 41 64 76 61 6e 63 65 64 20 66 6f 72 6d 61 74 2c 20 6c 69 73 74 20 ........;.Advanced.format,.list.
50c60 6f 66 20 6c 69 73 74 73 0a 20 20 20 20 20 20 28 70 63 61 73 65 20 65 6e 74 72 79 0a 20 20 20 20 of.lists.......(pcase.entry.....
50c80 20 20 20 20 28 60 28 70 72 6f 6d 70 74 20 2e 20 2c 6d 73 67 29 20 28 69 6e 73 65 72 74 20 28 6f ....(`(prompt...,msg).(insert.(o
50ca0 72 20 28 63 61 72 2d 73 61 66 65 20 6d 73 67 29 20 6d 73 67 29 29 29 0a 20 20 20 20 20 20 20 20 r.(car-safe.msg).msg))).........
50cc0 28 60 28 72 65 73 70 6f 6e 73 65 20 2e 20 2c 6d 73 67 29 0a 20 20 20 20 20 20 20 20 20 28 69 6e (`(response...,msg)..........(in
50ce0 73 65 72 74 20 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 73 65 70 61 72 61 74 6f 72 0a 20 20 sert.gptel-response-separator...
50d00 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 28 6f 72 20 28 ...............(propertize.(or.(
50d20 63 61 72 2d 73 61 66 65 20 6d 73 67 29 20 6d 73 67 29 20 27 67 70 74 65 6c 20 27 72 65 73 70 6f car-safe.msg).msg).'gptel.'respo
50d40 6e 73 65 29 29 29 0a 20 20 20 20 20 20 20 20 28 60 28 74 6f 6f 6c 20 2e 20 2c 63 61 6c 6c 29 0a nse))).........(`(tool...,call).
50d60 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d .........(insert.gptel-response-
50d80 73 65 70 61 72 61 74 6f 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 70 separator..................(prop
50da0 65 72 74 69 7a 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 ertize...................(concat
50dc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 28 3a 6e 61 6d 65 20 22 20 28 70 ...................."(:name.".(p
50de0 6c 69 73 74 2d 67 65 74 20 63 61 6c 6c 20 3a 6e 61 6d 65 29 20 22 20 3a 61 72 67 73 20 22 0a 20 list-get.call.:name).".:args."..
50e00 20 20 20 20 20 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 ..................(prin1-to-stri
50e20 6e 67 20 28 70 6c 69 73 74 2d 67 65 74 20 63 61 6c 6c 20 3a 61 72 67 73 29 29 20 22 29 5c 6e 5c ng.(plist-get.call.:args)).")\n\
50e40 6e 22 0a 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 n"....................(plist-get
50e60 20 63 61 6c 6c 20 3a 72 65 73 75 6c 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .call.:result)).................
50e80 20 20 27 67 70 74 65 6c 20 60 28 74 6f 6f 6c 20 2e 20 2c 28 70 6c 69 73 74 2d 67 65 74 20 63 61 ..'gptel.`(tool...,(plist-get.ca
50ea0 6c 6c 20 3a 69 64 29 29 29 29 29 29 29 29 29 0a 0a 28 63 6c 2d 64 65 66 67 65 6e 65 72 69 63 20 ll.:id)))))))))..(cl-defgeneric.
50ec0 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 6c 69 73 74 20 28 62 61 63 6b 65 6e 64 20 70 72 6f 6d 70 gptel--parse-list.(backend.promp
50ee0 74 2d 6c 69 73 74 29 0a 20 20 22 50 61 72 73 65 20 50 52 4f 4d 50 54 2d 4c 49 53 54 20 61 6e 64 t-list)..."Parse.PROMPT-LIST.and
50f00 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 20 73 75 69 74 61 62 .return.a.list.of.prompts.suitab
50f20 6c 65 20 66 6f 72 0a 42 41 43 4b 45 4e 44 2e 0a 0a 50 52 4f 4d 50 54 2d 4c 49 53 54 20 69 73 20 le.for.BACKEND...PROMPT-LIST.is.
50f40 69 6e 74 65 72 70 72 65 74 65 64 20 61 73 20 61 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 2c 20 69 interpreted.as.a.conversation,.i
50f60 2e 65 2e 20 61 6e 20 61 6c 74 65 72 6e 61 74 69 6e 67 0a 73 65 72 69 65 73 20 6f 66 20 75 73 65 .e..an.alternating.series.of.use
50f80 72 20 70 72 6f 6d 70 74 73 20 61 6e 64 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 73 2e 20 20 54 68 r.prompts.and.LLM.responses...Th
50fa0 65 20 72 65 74 75 72 6e 65 64 20 73 74 72 75 63 74 75 72 65 0a 69 73 20 73 75 69 74 61 62 6c 65 e.returned.structure.is.suitable
50fc0 20 66 6f 72 20 69 6e 63 6c 75 64 69 6e 67 20 69 6e 20 74 68 65 20 72 65 71 75 65 73 74 20 70 61 .for.including.in.the.request.pa
50fe0 79 6c 6f 61 64 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 65 yload...BACKEND.is.the.LLM.backe
51000 6e 64 20 69 6e 20 75 73 65 2e 22 29 0a 0a 28 63 6c 2d 64 65 66 67 65 6e 65 72 69 63 20 67 70 74 nd.in.use.")..(cl-defgeneric.gpt
51020 65 6c 2d 2d 70 61 72 73 65 2d 6d 65 64 69 61 2d 6c 69 6e 6b 73 20 28 6d 6f 64 65 20 62 65 67 20 el--parse-media-links.(mode.beg.
51040 65 6e 64 29 0a 20 20 22 46 69 6e 64 20 6d 65 64 69 61 20 6c 69 6e 6b 73 20 62 65 74 77 65 65 6e end)..."Find.media.links.between
51060 20 42 45 47 20 61 6e 64 20 45 4e 44 2e 0a 0a 4d 4f 44 45 20 69 73 20 74 68 65 20 6d 61 6a 6f 72 .BEG.and.END...MODE.is.the.major
51080 2d 6d 6f 64 65 20 6f 66 20 74 68 65 20 62 75 66 66 65 72 2e 0a 0a 52 65 74 75 72 6e 73 20 61 20 -mode.of.the.buffer...Returns.a.
510a0 70 6c 69 73 74 20 77 68 65 72 65 20 65 61 63 68 20 65 6e 74 72 79 20 69 73 20 6f 66 20 74 68 65 plist.where.each.entry.is.of.the
510c0 20 66 6f 72 6d 0a 20 20 28 3a 74 65 78 74 20 5c 22 73 6f 6d 65 20 74 65 78 74 5c 22 29 0a 6f 72 .form...(:text.\"some.text\").or
510e0 0a 20 20 28 3a 6d 65 64 69 61 20 5c 22 6d 65 64 69 61 20 75 72 69 20 6f 72 20 66 69 6c 65 20 70 ...(:media.\"media.uri.or.file.p
51100 61 74 68 5c 22 29 2e 22 0a 20 20 28 69 67 6e 6f 72 65 20 6d 6f 64 65 29 20 20 20 20 20 20 20 20 ath\")."...(ignore.mode)........
51120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 62 79 74 65 2d 63 6f 6d 70 69 6c 65 72 0a .................;byte-compiler.
51140 20 20 28 6c 69 73 74 20 60 28 3a 74 65 78 74 20 2c 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 ..(list.`(:text.,(buffer-substri
51160 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 20 ng-no-properties................
51180 20 20 20 62 65 67 20 65 6e 64 29 29 29 29 0a 0a 28 64 65 66 76 61 72 20 6d 61 72 6b 64 6f 77 6e ...beg.end))))..(defvar.markdown
511a0 2d 72 65 67 65 78 2d 6c 69 6e 6b 2d 69 6e 6c 69 6e 65 29 0a 28 64 65 66 76 61 72 20 6d 61 72 6b -regex-link-inline).(defvar.mark
511c0 64 6f 77 6e 2d 72 65 67 65 78 2d 61 6e 67 6c 65 2d 75 72 69 29 0a 28 64 65 63 6c 61 72 65 2d 66 down-regex-angle-uri).(declare-f
511e0 75 6e 63 74 69 6f 6e 20 6d 61 72 6b 64 6f 77 6e 2d 6c 69 6e 6b 2d 61 74 2d 70 6f 73 20 22 6d 61 unction.markdown-link-at-pos."ma
51200 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 74 69 6f 6e 20 rkdown-mode").(declare-function.
51220 6d 61 69 6c 63 61 70 2d 66 69 6c 65 2d 6e 61 6d 65 2d 74 6f 2d 6d 69 6d 65 2d 74 79 70 65 20 22 mailcap-file-name-to-mime-type."
51240 6d 61 69 6c 63 61 70 22 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 2d mailcap")..(cl-defmethod.gptel--
51260 70 61 72 73 65 2d 6d 65 64 69 61 2d 6c 69 6e 6b 73 20 28 28 5f 6d 6f 64 65 20 28 65 71 6c 20 27 parse-media-links.((_mode.(eql.'
51280 6d 61 72 6b 64 6f 77 6e 2d 6d 6f 64 65 29 29 20 62 65 67 20 65 6e 64 29 0a 20 20 22 50 61 72 73 markdown-mode)).beg.end)..."Pars
512a0 65 20 74 65 78 74 20 61 6e 64 20 61 63 74 69 6f 6e 61 62 6c 65 20 6c 69 6e 6b 73 20 62 65 74 77 e.text.and.actionable.links.betw
512c0 65 65 6e 20 42 45 47 20 61 6e 64 20 45 4e 44 2e 0a 0a 52 65 74 75 72 6e 20 61 20 6c 69 73 74 20 een.BEG.and.END...Return.a.list.
512e0 6f 66 20 74 68 65 20 66 6f 72 6d 0a 20 28 28 3a 74 65 78 74 20 5c 22 73 6f 6d 65 20 74 65 78 74 of.the.form..((:text.\"some.text
51300 5c 22 29 0a 20 20 28 3a 6d 65 64 69 61 20 5c 22 2f 70 61 74 68 2f 74 6f 2f 6d 65 64 69 61 2e 70 \")...(:media.\"/path/to/media.p
51320 6e 67 5c 22 20 3a 6d 69 6d 65 20 5c 22 69 6d 61 67 65 2f 70 6e 67 5c 22 29 0a 20 20 28 3a 74 65 ng\".:mime.\"image/png\")...(:te
51340 78 74 20 5c 22 4d 6f 72 65 20 74 65 78 74 5c 22 29 29 0a 66 6f 72 20 69 6e 63 6c 75 73 69 6f 6e xt.\"More.text\")).for.inclusion
51360 20 69 6e 74 6f 20 74 68 65 20 75 73 65 72 20 70 72 6f 6d 70 74 20 66 6f 72 20 74 68 65 20 67 70 .into.the.user.prompt.for.the.gp
51380 74 65 6c 20 72 65 71 75 65 73 74 2e 22 0a 20 20 28 72 65 71 75 69 72 65 20 27 6d 61 69 6c 63 61 tel.request."...(require.'mailca
513a0 70 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 46 49 58 4d 45 20 41 76 6f p)....................;FIXME.Avo
513c0 69 64 20 74 68 69 73 20 73 6f 6d 65 68 6f 77 0a 20 20 28 6c 65 74 20 28 28 70 61 72 74 73 29 20 id.this.somehow...(let.((parts).
513e0 28 66 72 6f 6d 2d 70 74 29 20 28 6d 69 6d 65 29 29 0a 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 (from-pt).(mime)).....(save-excu
51400 72 73 69 6f 6e 0a 20 20 20 20 20 20 28 73 65 74 71 20 66 72 6f 6d 2d 70 74 20 28 67 6f 74 6f 2d rsion.......(setq.from-pt.(goto-
51420 63 68 61 72 20 62 65 67 29 29 0a 20 20 20 20 20 20 28 77 68 69 6c 65 20 28 72 65 2d 73 65 61 72 char.beg)).......(while.(re-sear
51440 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 28 63 6f 6e 63 61 74 ch-forward...............(concat
51460 20 22 5c 5c 28 3f 3a 22 20 6d 61 72 6b 64 6f 77 6e 2d 72 65 67 65 78 2d 6c 69 6e 6b 2d 69 6e 6c ."\\(?:".markdown-regex-link-inl
51480 69 6e 65 20 22 5c 5c 7c 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ine."\\|".......................
514a0 6d 61 72 6b 64 6f 77 6e 2d 72 65 67 65 78 2d 61 6e 67 6c 65 2d 75 72 69 20 22 5c 5c 29 22 29 0a markdown-regex-angle-uri."\\)").
514c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 20 74 29 0a 20 20 20 20 20 20 20 20 28 73 65 ..............end.t).........(se
514e0 74 71 20 6d 69 6d 65 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 tq.mime.nil).........(when-let*.
51500 28 28 6c 69 6e 6b 2d 61 74 2d 70 74 20 28 6d 61 72 6b 64 6f 77 6e 2d 6c 69 6e 6b 2d 61 74 2d 70 ((link-at-pt.(markdown-link-at-p
51520 6f 73 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 os.(point)))....................
51540 20 28 28 67 70 74 65 6c 2d 2d 6c 69 6e 6b 2d 73 74 61 6e 64 61 6c 6f 6e 65 2d 70 0a 20 20 20 20 .((gptel--link-standalone-p.....
51560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 61 72 20 6c 69 6e 6b 2d 61 74 2d 70 ..................(car.link-at-p
51580 74 29 20 28 63 61 64 72 20 6c 69 6e 6b 2d 61 74 2d 70 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 t).(cadr.link-at-pt)))..........
515a0 20 20 20 20 20 20 20 20 20 20 20 28 70 61 74 68 20 28 6e 74 68 20 33 20 6c 69 6e 6b 2d 61 74 2d ...........(path.(nth.3.link-at-
515c0 70 74 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 61 74 68 20 28 pt)).....................(path.(
515e0 73 74 72 69 6e 67 2d 72 65 6d 6f 76 65 2d 70 72 65 66 69 78 20 22 66 69 6c 65 3a 2f 2f 22 20 70 string-remove-prefix."file://".p
51600 61 74 68 29 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 ath)))...........(cond..........
51620 20 20 28 28 73 65 71 2d 73 6f 6d 65 20 28 6c 61 6d 62 64 61 20 28 70 29 20 28 73 74 72 69 6e 67 ..((seq-some.(lambda.(p).(string
51640 2d 70 72 65 66 69 78 2d 70 20 70 20 70 61 74 68 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 -prefix-p.p.path))..............
51660 20 20 20 20 20 20 20 20 20 27 28 22 68 74 74 70 73 3a 22 20 22 68 74 74 70 3a 22 20 22 66 74 70 .........'("https:"."http:"."ftp
51680 3a 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 43 6f 6c 6c 65 63 74 20 74 65 78 74 :")).............;;.Collect.text
516a0 20 75 70 20 74 6f 20 74 68 69 73 20 69 6d 61 67 65 2c 20 61 6e 64 20 63 6f 6c 6c 65 63 74 20 74 .up.to.this.image,.and.collect.t
516c0 68 69 73 20 69 6d 61 67 65 20 75 72 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 his.image.url.............(when.
516e0 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 63 61 70 61 62 6c 65 2d 70 20 27 75 72 6c 29 20 3b 20 (gptel--model-capable-p.'url).;.
51700 46 49 58 4d 45 20 54 68 69 73 20 69 73 20 6e 6f 74 20 61 20 67 6f 6f 64 20 70 6c 61 63 65 0a 20 FIXME.This.is.not.a.good.place..
51720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
51740 20 20 20 20 20 20 20 3b 20 74 6f 20 63 68 65 63 6b 20 66 6f 72 20 75 72 6c 20 63 61 70 61 62 69 .......;.to.check.for.url.capabi
51760 6c 69 74 79 21 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 74 65 78 74 20 lity!...............(let.((text.
51780 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 20 (buffer-substring-no-properties.
517a0 66 72 6f 6d 2d 70 74 20 28 63 61 72 20 6c 69 6e 6b 2d 61 74 2d 70 74 29 29 29 29 0a 20 20 20 20 from-pt.(car.link-at-pt)))).....
517c0 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 73 74 72 69 6e 67 2d 62 6c 61 6e ............(unless.(string-blan
517e0 6b 2d 70 20 74 65 78 74 29 20 28 70 75 73 68 20 28 6c 69 73 74 20 3a 74 65 78 74 20 74 65 78 74 k-p.text).(push.(list.:text.text
51800 29 20 70 61 72 74 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 ).parts)).................(push.
51820 28 6c 69 73 74 20 3a 75 72 6c 20 70 61 74 68 20 3a 6d 69 6d 65 20 6d 69 6d 65 29 20 70 61 72 74 (list.:url.path.:mime.mime).part
51840 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 66 72 6f 6d 2d 70 74 s).................(setq.from-pt
51860 20 28 63 61 64 72 20 6c 69 6e 6b 2d 61 74 2d 70 74 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 .(cadr.link-at-pt)))))..........
51880 20 20 28 28 66 69 6c 65 2d 72 65 61 64 61 62 6c 65 2d 70 20 70 61 74 68 29 0a 20 20 20 20 20 20 ..((file-readable-p.path).......
518a0 20 20 20 20 20 20 28 69 66 20 28 6f 72 20 28 6e 6f 74 20 28 67 70 74 65 6c 2d 2d 66 69 6c 65 2d ......(if.(or.(not.(gptel--file-
518c0 62 69 6e 61 72 79 2d 70 20 70 61 74 68 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 binary-p.path)).................
518e0 20 20 20 20 28 61 6e 64 20 28 73 65 74 71 20 6d 69 6d 65 20 28 6d 61 69 6c 63 61 70 2d 66 69 6c ....(and.(setq.mime.(mailcap-fil
51900 65 2d 6e 61 6d 65 2d 74 6f 2d 6d 69 6d 65 2d 74 79 70 65 20 70 61 74 68 29 29 0a 20 20 20 20 20 e-name-to-mime-type.path))......
51920 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 6d 6f 64 65 ....................(gptel--mode
51940 6c 2d 6d 69 6d 65 2d 63 61 70 61 62 6c 65 2d 70 20 6d 69 6d 65 29 29 29 0a 20 20 20 20 20 20 20 l-mime-capable-p.mime)))........
51960 20 20 20 20 20 20 20 20 20 3b 3b 20 43 6f 6c 6c 65 63 74 20 74 65 78 74 20 75 70 20 74 6f 20 74 .........;;.Collect.text.up.to.t
51980 68 69 73 20 69 6d 61 67 65 2c 20 61 6e 64 20 63 6f 6c 6c 65 63 74 20 74 68 69 73 20 69 6d 61 67 his.image,.and.collect.this.imag
519a0 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 74 65 78 74 20 28 62 e.................(let.((text.(b
519c0 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 66 72 uffer-substring-no-properties.fr
519e0 6f 6d 2d 70 74 20 28 63 61 72 20 6c 69 6e 6b 2d 61 74 2d 70 74 29 29 29 29 0a 20 20 20 20 20 20 om-pt.(car.link-at-pt)))).......
51a00 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 73 74 72 69 6e 67 2d 62 6c 61 6e ............(unless.(string-blan
51a20 6b 2d 70 20 74 65 78 74 29 20 28 70 75 73 68 20 28 6c 69 73 74 20 3a 74 65 78 74 20 74 65 78 74 k-p.text).(push.(list.:text.text
51a40 29 20 70 61 72 74 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 ).parts))...................(pus
51a60 68 20 28 69 66 20 6d 69 6d 65 20 28 6c 69 73 74 20 3a 6d 65 64 69 61 20 70 61 74 68 20 3a 6d 69 h.(if.mime.(list.:media.path.:mi
51a80 6d 65 20 6d 69 6d 65 29 20 28 6c 69 73 74 20 3a 74 65 78 74 66 69 6c 65 20 70 61 74 68 29 29 20 me.mime).(list.:textfile.path)).
51aa0 70 61 72 74 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 66 parts)...................(setq.f
51ac0 72 6f 6d 2d 70 74 20 28 63 61 64 72 20 6c 69 6e 6b 2d 61 74 2d 70 74 29 29 29 0a 20 20 20 20 20 rom-pt.(cadr.link-at-pt)))......
51ae0 20 20 20 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 49 67 6e 6f 72 69 6e 67 20 75 6e 73 75 .........(message."Ignoring.unsu
51b00 70 70 6f 72 74 65 64 20 62 69 6e 61 72 79 20 66 69 6c 65 20 5c 22 25 73 5c 22 2e 22 20 70 61 74 pported.binary.file.\"%s\".".pat
51b20 68 29 29 29 29 29 29 29 0a 20 20 20 20 28 75 6e 6c 65 73 73 20 28 3d 20 66 72 6f 6d 2d 70 74 20 h))))))).....(unless.(=.from-pt.
51b40 65 6e 64 29 0a 20 20 20 20 20 20 28 70 75 73 68 20 28 6c 69 73 74 20 3a 74 65 78 74 20 28 62 75 end).......(push.(list.:text.(bu
51b60 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 66 72 6f ffer-substring-no-properties.fro
51b80 6d 2d 70 74 20 65 6e 64 29 29 20 70 61 72 74 73 29 29 0a 20 20 20 20 28 6e 72 65 76 65 72 73 65 m-pt.end)).parts)).....(nreverse
51ba0 20 70 61 72 74 73 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 .parts)))..(cl-defgeneric.gptel-
51bc0 2d 77 72 61 70 2d 75 73 65 72 2d 70 72 6f 6d 70 74 20 28 62 61 63 6b 65 6e 64 20 5f 70 72 6f 6d -wrap-user-prompt.(backend._prom
51be0 70 74 73 29 0a 20 20 22 57 72 61 70 20 74 68 65 20 6c 61 73 74 20 70 72 6f 6d 70 74 20 69 6e 20 pts)..."Wrap.the.last.prompt.in.
51c00 50 52 4f 4d 50 54 53 20 77 69 74 68 20 67 70 74 65 6c 27 73 20 63 6f 6e 74 65 78 74 2e 0a 0a 50 PROMPTS.with.gptel's.context...P
51c20 52 4f 4d 50 54 53 20 69 73 20 61 20 73 74 72 75 63 74 75 72 65 20 61 73 20 72 65 74 75 72 6e 65 ROMPTS.is.a.structure.as.returne
51c40 64 20 62 79 20 60 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 62 75 66 66 65 72 27 2e 0a 54 79 70 69 d.by.`gptel--parse-buffer'..Typi
51c60 63 61 6c 6c 79 20 74 68 69 73 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 70 6c 69 73 74 73 2e 0a cally.this.is.a.list.of.plists..
51c80 0a 42 41 43 4b 45 4e 44 20 69 73 20 74 68 65 20 67 70 74 65 6c 20 62 61 63 6b 65 6e 64 20 69 6e .BACKEND.is.the.gptel.backend.in
51ca0 20 75 73 65 2e 22 0a 20 20 28 64 69 73 70 6c 61 79 2d 77 61 72 6e 69 6e 67 0a 20 20 20 27 28 67 .use."...(display-warning....'(g
51cc0 70 74 65 6c 20 63 6f 6e 74 65 78 74 29 0a 20 20 20 28 66 6f 72 6d 61 74 20 22 43 6f 6e 74 65 78 ptel.context)....(format."Contex
51ce0 74 20 73 75 70 70 6f 72 74 20 6e 6f 74 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 66 6f 72 20 62 61 t.support.not.implemented.for.ba
51d00 63 6b 65 6e 64 20 25 73 2c 20 69 67 6e 6f 72 69 6e 67 20 63 6f 6e 74 65 78 74 22 0a 20 20 20 20 ckend.%s,.ignoring.context".....
51d20 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 62 61 63 6b 65 .......(gptel-backend-name.backe
51d40 6e 64 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 2d 72 65 nd))))..(cl-defgeneric.gptel--re
51d60 71 75 65 73 74 2d 64 61 74 61 20 28 62 61 63 6b 65 6e 64 20 70 72 6f 6d 70 74 73 29 0a 20 20 22 quest-data.(backend.prompts)..."
51d80 47 65 6e 65 72 61 74 65 20 61 20 70 6c 69 73 74 20 6f 66 20 61 6c 6c 20 64 61 74 61 20 66 6f 72 Generate.a.plist.of.all.data.for
51da0 20 61 6e 20 4c 4c 4d 20 71 75 65 72 79 2e 0a 0a 42 41 43 4b 45 4e 44 20 69 73 20 74 68 65 20 4c .an.LLM.query...BACKEND.is.the.L
51dc0 4c 4d 20 62 61 63 6b 65 6e 64 20 69 6e 20 75 73 65 2e 0a 0a 50 52 4f 4d 50 54 53 20 69 73 20 74 LM.backend.in.use...PROMPTS.is.t
51de0 68 65 20 70 6c 69 73 74 20 6f 66 20 70 72 65 76 69 6f 75 73 20 75 73 65 72 20 71 75 65 72 69 65 he.plist.of.previous.user.querie
51e00 73 20 61 6e 64 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 73 2e 22 29 0a 0a 28 64 65 66 75 6e 20 67 s.and.LLM.responses.")..(defun.g
51e20 70 74 65 6c 2d 2d 75 72 6c 2d 67 65 74 2d 72 65 73 70 6f 6e 73 65 20 28 66 73 6d 29 0a 20 20 22 ptel--url-get-response.(fsm)..."
51e40 46 65 74 63 68 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 70 72 6f 6d 70 74 20 69 6e 20 73 74 61 74 Fetch.response.to.prompt.in.stat
51e60 65 20 46 53 4d 20 66 72 6f 6d 20 74 68 65 20 4c 4c 4d 2e 0a 0a 46 53 4d 20 69 73 20 74 68 65 20 e.FSM.from.the.LLM...FSM.is.the.
51e80 73 74 61 74 65 20 6d 61 63 68 69 6e 65 20 64 72 69 76 69 6e 67 20 74 68 69 73 20 72 65 71 75 65 state.machine.driving.this.reque
51ea0 73 74 2e 20 20 49 74 73 20 49 4e 46 4f 20 73 6c 6f 74 0a 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 st...Its.INFO.slot.contains.the.
51ec0 64 61 74 61 20 72 65 71 75 69 72 65 64 20 66 6f 72 20 73 65 74 74 69 6e 67 20 75 70 20 74 68 65 data.required.for.setting.up.the
51ee0 20 72 65 71 75 65 73 74 2e 20 20 49 4e 46 4f 20 69 73 20 61 0a 70 6c 69 73 74 20 77 69 74 68 20 .request...INFO.is.a.plist.with.
51f00 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 6b 65 79 73 2c 20 61 6d 6f 6e 67 20 6f 74 68 65 72 73 the.following.keys,.among.others
51f20 3a 0a 2d 20 3a 64 61 74 61 20 20 20 20 20 28 74 68 65 20 64 61 74 61 20 62 65 69 6e 67 20 73 65 :.-.:data.....(the.data.being.se
51f40 6e 74 29 0a 2d 20 3a 62 75 66 66 65 72 20 20 20 28 74 68 65 20 67 70 74 65 6c 20 62 75 66 66 65 nt).-.:buffer...(the.gptel.buffe
51f60 72 29 0a 2d 20 3a 70 6f 73 69 74 69 6f 6e 20 28 6d 61 72 6b 65 72 20 61 74 20 77 68 69 63 68 20 r).-.:position.(marker.at.which.
51f80 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 2d 20 3a 63 61 6c 6c to.insert.the.response)..-.:call
51fa0 62 61 63 6b 20 28 6f 70 74 69 6f 6e 61 6c 2c 20 74 68 65 20 72 65 71 75 65 73 74 20 63 61 6c 6c back.(optional,.the.request.call
51fc0 62 61 63 6b 29 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 back)..Call.CALLBACK.with.the.re
51fe0 73 70 6f 6e 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 sponse.and.INFO.afterwards...If.
52000 6f 6d 69 74 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 omitted.the.response.is.inserted
52020 20 69 6e 74 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 .into.the.current.buffer.after.p
52040 6f 69 6e 74 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 69 6e 68 69 62 69 74 2d 6d 65 73 73 61 67 65 oint."...(let*.((inhibit-message
52060 20 74 29 0a 20 20 20 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 2d 6c 6f 67 2d 6d 61 78 20 6e 69 .t)..........(message-log-max.ni
52080 6c 29 0a 20 20 20 20 20 20 20 20 20 28 75 72 6c 2d 72 65 71 75 65 73 74 2d 6d 65 74 68 6f 64 20 l)..........(url-request-method.
520a0 22 50 4f 53 54 22 29 0a 20 20 20 20 20 20 20 20 20 28 75 72 6c 2d 72 65 71 75 65 73 74 2d 65 78 "POST")..........(url-request-ex
520c0 74 72 61 2d 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 20 27 28 tra-headers...........(append.'(
520e0 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 6e 2f 6a ("Content-Type"..."application/j
52100 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 6e 2d 6c son"))...................(when-l
52120 65 74 2a 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 61 64 et*.((header.(gptel-backend-head
52140 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 20 20 er.gptel-backend))).............
52160 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 0a 20 ........(if.(functionp.header)..
52180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 .......................(funcall.
521a0 68 65 61 64 65 72 29 20 68 65 61 64 65 72 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 69 6e 66 header).header))))..........(inf
521c0 6f 20 28 67 70 74 65 6c 2d 66 73 6d 2d 69 6e 66 6f 20 66 73 6d 29 29 0a 20 20 20 20 20 20 20 20 o.(gptel-fsm-info.fsm)).........
521e0 20 28 62 61 63 6b 65 6e 64 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 62 61 63 6b 65 .(backend.(plist-get.info.:backe
52200 6e 64 29 29 0a 20 20 20 20 20 20 20 20 20 28 63 61 6c 6c 62 61 63 6b 20 28 6f 72 20 28 70 6c 69 nd))..........(callback.(or.(pli
52220 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 63 61 6c 6c 62 61 63 6b 29 20 3b 69 66 20 6e 6f 74 20 74 st-get.info.:callback).;if.not.t
52240 68 65 20 66 69 72 73 74 20 72 75 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 he.first.run....................
52260 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 29 29 20 3b ....#'gptel--insert-response)).;
52280 64 65 66 61 75 6c 74 20 63 61 6c 6c 62 61 63 6b 0a 20 20 20 20 20 20 20 20 20 3b 3b 20 4e 4f 54 default.callback..........;;.NOT
522a0 45 3a 20 57 65 20 64 6f 6e 27 74 20 6e 65 65 64 20 74 68 65 20 64 65 63 6f 64 65 2d 63 6f 64 69 E:.We.don't.need.the.decode-codi
522c0 6e 67 2d 73 74 72 69 6e 67 20 64 61 6e 63 65 20 68 65 72 65 20 73 69 6e 63 65 20 77 65 0a 20 20 ng-string.dance.here.since.we...
522e0 20 20 20 20 20 20 20 3b 3b 20 64 6f 6e 27 74 20 70 61 73 73 20 69 74 20 74 6f 20 74 68 65 20 4f .......;;.don't.pass.it.to.the.O
52300 53 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 61 6e 64 20 43 75 72 6c 2e 0a 20 20 20 20 20 20 20 20 S.environment.and.Curl..........
52320 20 28 75 72 6c 2d 72 65 71 75 65 73 74 2d 64 61 74 61 0a 20 20 20 20 20 20 20 20 20 20 28 67 70 .(url-request-data...........(gp
52340 74 65 6c 2d 2d 6a 73 6f 6e 2d 65 6e 63 6f 64 65 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f tel--json-encode.(plist-get.info
52360 20 3a 64 61 74 61 29 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 28 77 69 74 68 2d 63 75 72 72 65 .:data)))).....(when.(with-curre
52380 6e 74 2d 62 75 66 66 65 72 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 62 75 66 66 65 nt-buffer.(plist-get.info.:buffe
523a0 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 28 64 65 72 69 76 65 64 2d 6d 6f 64 r).............(and.(derived-mod
523c0 65 2d 70 20 27 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 e-p.'org-mode)..................
523e0 67 70 74 65 6c 2d 6f 72 67 2d 63 6f 6e 76 65 72 74 2d 72 65 73 70 6f 6e 73 65 29 29 0a 20 20 20 gptel-org-convert-response))....
52400 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 74 72 61 6e 73 66 6f 72 6d 65 72 20 ...(plist-put.info.:transformer.
52420 23 27 67 70 74 65 6c 2d 2d 63 6f 6e 76 65 72 74 2d 6d 61 72 6b 64 6f 77 6e 2d 3e 6f 72 67 29 29 #'gptel--convert-markdown->org))
52440 0a 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 63 61 6c 6c 62 61 63 6b 20 63 .....(plist-put.info.:callback.c
52460 61 6c 6c 62 61 63 6b 29 0a 20 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 6c 6f 67 2d 6c 65 76 allback).....(when.gptel-log-lev
52480 65 6c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 6c 6f 67 67 69 6e 67 0a 20 20 20 20 20 20 el...............;logging.......
524a0 28 77 68 65 6e 20 28 65 71 20 67 70 74 65 6c 2d 6c 6f 67 2d 6c 65 76 65 6c 20 27 64 65 62 75 67 (when.(eq.gptel-log-level.'debug
524c0 29 0a 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 6c 6f 67 20 28 67 70 74 65 6c 2d 2d 6a 73 ).........(gptel--log.(gptel--js
524e0 6f 6e 2d 65 6e 63 6f 64 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 on-encode......................(
52500 6d 61 70 63 61 72 20 28 6c 61 6d 62 64 61 20 28 70 61 69 72 29 20 28 63 6f 6e 73 20 28 69 6e 74 mapcar.(lambda.(pair).(cons.(int
52520 65 72 6e 20 28 63 61 72 20 70 61 69 72 29 29 20 28 63 64 72 20 70 61 69 72 29 29 29 0a 20 20 20 ern.(car.pair)).(cdr.pair)))....
52540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 72 6c 2d 72 65 ..........................url-re
52560 71 75 65 73 74 2d 65 78 74 72 61 2d 68 65 61 64 65 72 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 quest-extra-headers))...........
52580 20 20 20 20 20 20 20 20 20 20 22 72 65 71 75 65 73 74 20 68 65 61 64 65 72 73 22 29 29 0a 20 20 .........."request.headers"))...
525a0 20 20 20 20 28 67 70 74 65 6c 2d 2d 6c 6f 67 20 75 72 6c 2d 72 65 71 75 65 73 74 2d 64 61 74 61 ....(gptel--log.url-request-data
525c0 20 22 72 65 71 75 65 73 74 20 62 6f 64 79 22 29 29 0a 20 20 20 20 28 6c 65 74 20 28 28 70 72 6f ."request.body")).....(let.((pro
525e0 63 2d 62 75 66 0a 20 20 20 20 20 20 20 20 20 20 20 28 75 72 6c 2d 72 65 74 72 69 65 76 65 20 28 c-buf............(url-retrieve.(
52600 6c 65 74 20 28 28 62 61 63 6b 65 6e 64 2d 75 72 6c 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 let.((backend-url.(gptel-backend
52620 2d 75 72 6c 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 -url.gptel-backend)))...........
52640 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 20 .................(if.(functionp.
52660 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 20 backend-url)....................
52680 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 75 66 66 65 72 ............(with-current-buffer
526a0 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 62 75 66 66 65 72 29 0a 20 20 20 20 20 20 .(plist-get.info.:buffer).......
526c0 20 20 20 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 ...........................(func
526e0 61 6c 6c 20 62 61 63 6b 65 6e 64 2d 75 72 6c 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 all.backend-url))...............
52700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 61 63 6b 65 6e 64 2d 75 72 6c 29 29 0a 20 20 20 ...............backend-url))....
52720 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 5f ......................(lambda.(_
52740 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 73 65 )............................(se
52760 74 2d 62 75 66 66 65 72 2d 6d 75 6c 74 69 62 79 74 65 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 t-buffer-multibyte.t)...........
52780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 2d 62 75 66 66 65 72 2d 66 69 6c .................(set-buffer-fil
527a0 65 2d 63 6f 64 69 6e 67 2d 73 79 73 74 65 6d 20 27 75 74 66 2d 38 2d 75 6e 69 78 29 0a 20 20 20 e-coding-system.'utf-8-unix)....
527c0 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 63 61 73 65 2d 6c ........................(pcase-l
527e0 65 74 20 28 28 60 28 2c 72 65 73 70 6f 6e 73 65 20 2c 68 74 74 70 2d 73 74 61 74 75 73 20 2c 68 et.((`(,response.,http-status.,h
52800 74 74 70 2d 6d 73 67 20 2c 65 72 72 6f 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ttp-msg.,error).................
52820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d ........................(gptel--
52840 75 72 6c 2d 70 61 72 73 65 2d 72 65 73 70 6f 6e 73 65 20 62 61 63 6b 65 6e 64 20 69 6e 66 6f 29 url-parse-response.backend.info)
52860 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 )...............................
52880 20 20 20 20 20 20 20 20 20 28 62 75 66 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29 29 .........(buf.(current-buffer)))
528a0 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 28 70 ..............................(p
528c0 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 68 74 74 70 2d 73 74 61 74 75 73 20 68 74 74 70 2d list-put.info.:http-status.http-
528e0 73 74 61 74 75 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 status).........................
52900 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 73 74 61 74 75 73 20 68 74 74 .....(plist-put.info.:status.htt
52920 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 20 p-msg)..........................
52940 20 20 20 20 28 67 70 74 65 6c 2d 2d 66 73 6d 2d 74 72 61 6e 73 69 74 69 6f 6e 20 66 73 6d 29 20 ....(gptel--fsm-transition.fsm).
52960 3b 57 41 49 54 20 2d 3e 20 54 59 50 45 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ;WAIT.->.TYPE...................
52980 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 65 72 72 6f 72 20 28 70 6c 69 73 74 2d 70 75 ...........(when.error.(plist-pu
529a0 74 20 69 6e 66 6f 20 3a 65 72 72 6f 72 20 65 72 72 6f 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 t.info.:error.error))...........
529c0 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 72 65 73 70 6f 6e 73 ...................(when.respons
529e0 65 20 3b 4c 6f 6f 6b 20 66 6f 72 20 61 20 72 65 61 73 6f 6e 69 6e 67 20 62 6c 6f 63 6b 0a 20 20 e.;Look.for.a.reasoning.block...
52a00 20 20 20 20 20 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 66 .............................(if
52a20 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 2d 70 20 22 5e 5c 5c 73 2d 2a 3c 74 68 69 6e 6b 3e 22 .(string-match-p."^\\s-*<think>"
52a40 20 72 65 73 70 6f 6e 73 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .response)......................
52a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 69 64 78 20 28 ..............(when-let*.((idx.(
52a80 73 74 72 69 6e 67 2d 73 65 61 72 63 68 20 22 3c 2f 74 68 69 6e 6b 3e 22 20 72 65 73 70 6f 6e 73 string-search."</think>".respons
52aa0 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 20 20 20 20 20 20 20 e)))............................
52ac0 20 20 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 64 65 6d 6f 74 65 64 2d 65 72 72 6f 72 73 20 22 ..........(with-demoted-errors."
52ae0 67 70 74 65 6c 20 63 61 6c 6c 62 61 63 6b 20 65 72 72 6f 72 3a 20 25 53 22 0a 20 20 20 20 20 20 gptel.callback.error:.%S".......
52b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
52b20 20 28 66 75 6e 63 61 6c 6c 20 63 61 6c 6c 62 61 63 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 .(funcall.callback..............
52b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
52b60 20 20 20 28 63 6f 6e 73 20 27 72 65 61 73 6f 6e 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 ...(cons.'reasoning.............
52b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
52ba0 20 20 20 20 20 20 20 20 20 20 28 73 75 62 73 74 72 69 6e 67 20 72 65 73 70 6f 6e 73 65 20 6e 69 ..........(substring.response.ni
52bc0 6c 20 28 2b 20 69 64 78 20 38 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 l.(+.idx.8)))...................
52be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e ..............................in
52c00 66 6f 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 fo))............................
52c20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 72 65 73 70 6f 6e 73 65 20 28 73 74 72 69 6e 67 ..........(setq.response.(string
52c40 2d 74 72 69 6d 2d 6c 65 66 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -trim-left......................
52c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
52c80 28 73 75 62 73 74 72 69 6e 67 20 72 65 73 70 6f 6e 73 65 20 28 2b 20 69 64 78 20 38 29 29 29 29 (substring.response.(+.idx.8))))
52ca0 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 )...............................
52cc0 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 72 65 61 73 6f 6e 69 6e 67 20 28 70 6c 69 73 74 ...(when-let*.((reasoning.(plist
52ce0 2d 67 65 74 20 69 6e 66 6f 20 3a 72 65 61 73 6f 6e 69 6e 67 29 29 0a 20 20 20 20 20 20 20 20 20 -get.info.:reasoning))..........
52d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
52d20 20 20 20 20 28 28 73 74 72 69 6e 67 70 20 72 65 61 73 6f 6e 69 6e 67 29 29 29 0a 20 20 20 20 20 ....((stringp.reasoning)))......
52d40 20 20 20 20 20 20 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 ..............................(f
52d60 75 6e 63 61 6c 6c 20 63 61 6c 6c 62 61 63 6b 20 28 63 6f 6e 73 20 27 72 65 61 73 6f 6e 69 6e 67 uncall.callback.(cons.'reasoning
52d80 20 72 65 61 73 6f 6e 69 6e 67 29 20 69 6e 66 6f 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 .reasoning).info))))............
52da0 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 6f 72 20 72 65 73 70 ..................(when.(or.resp
52dc0 6f 6e 73 65 20 28 6e 6f 74 20 28 6d 65 6d 62 65 72 20 68 74 74 70 2d 73 74 61 74 75 73 20 27 28 onse.(not.(member.http-status.'(
52de0 22 32 30 30 22 20 22 31 30 30 22 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 "200"."100")))).................
52e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 64 65 6d 6f 74 65 64 2d 65 72 72 ...............(with-demoted-err
52e20 6f 72 73 20 22 67 70 74 65 6c 20 63 61 6c 6c 62 61 63 6b 20 65 72 72 6f 72 3a 20 25 53 22 0a 20 ors."gptel.callback.error:.%S"..
52e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
52e60 28 66 75 6e 63 61 6c 6c 20 63 61 6c 6c 62 61 63 6b 20 72 65 73 70 6f 6e 73 65 20 69 6e 66 6f 29 (funcall.callback.response.info)
52e80 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 20 ))..............................
52ea0 28 67 70 74 65 6c 2d 2d 66 73 6d 2d 74 72 61 6e 73 69 74 69 6f 6e 20 66 73 6d 29 20 3b 54 59 50 (gptel--fsm-transition.fsm).;TYP
52ec0 45 20 2d 3e 20 6e 65 78 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 E.->.next.......................
52ee0 20 20 20 20 20 20 20 28 73 65 74 66 20 28 61 6c 69 73 74 2d 67 65 74 20 62 75 66 20 67 70 74 65 .......(setf.(alist-get.buf.gpte
52f00 6c 2d 2d 72 65 71 75 65 73 74 2d 61 6c 69 73 74 20 6e 69 6c 20 27 72 65 6d 6f 76 65 29 20 6e 69 l--request-alist.nil.'remove).ni
52f20 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 20 20 l)..............................
52f40 28 6b 69 6c 6c 2d 62 75 66 66 65 72 20 62 75 66 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 (kill-buffer.buf))).............
52f60 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 69 6c 20 74 20 6e 69 6c 29 29 29 0a 20 20 20 20 20 20 .............nil.t.nil))).......
52f80 3b 3b 20 54 4f 44 4f 3a 20 41 64 64 20 74 72 61 6e 73 66 6f 72 6d 65 72 20 68 65 72 65 2e 0a 20 ;;.TODO:.Add.transformer.here...
52fa0 20 20 20 20 20 28 73 65 74 66 20 28 61 6c 69 73 74 2d 67 65 74 20 70 72 6f 63 2d 62 75 66 20 67 .....(setf.(alist-get.proc-buf.g
52fc0 70 74 65 6c 2d 2d 72 65 71 75 65 73 74 2d 61 6c 69 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 ptel--request-alist)............
52fe0 20 28 63 6f 6e 73 20 66 73 6d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 27 28 .(cons.fsm...................#'(
53000 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 20 20 20 20 lambda.().......................
53020 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 63 61 6c 6c 62 61 63 6b 20 23 27 69 67 6e 6f (plist-put.info.:callback.#'igno
53040 72 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 28 6c 65 74 20 28 re).......................(let.(
53060 6b 69 6c 6c 2d 62 75 66 66 65 72 2d 71 75 65 72 79 2d 66 75 6e 63 74 69 6f 6e 73 29 0a 20 20 20 kill-buffer-query-functions)....
53080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 43 61 6e 27 74 20 73 74 6f .....................;;Can't.sto
530a0 70 20 75 72 6c 2d 72 65 74 72 69 65 76 65 20 70 72 6f 63 65 73 73 0a 20 20 20 20 20 20 20 20 20 p.url-retrieve.process..........
530c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6b 69 6c 6c 2d 62 75 66 66 65 72 20 70 72 6f 63 ...............(kill-buffer.proc
530e0 2d 62 75 66 29 29 29 29 29 29 29 29 0a 0a 28 63 6c 2d 64 65 66 67 65 6e 65 72 69 63 20 67 70 74 -buf))))))))..(cl-defgeneric.gpt
53100 65 6c 2d 2d 70 61 72 73 65 2d 72 65 73 70 6f 6e 73 65 20 28 62 61 63 6b 65 6e 64 20 72 65 73 70 el--parse-response.(backend.resp
53120 6f 6e 73 65 20 70 72 6f 63 2d 69 6e 66 6f 29 0a 20 20 22 52 65 73 70 6f 6e 73 65 20 65 78 74 72 onse.proc-info)..."Response.extr
53140 61 63 74 6f 72 20 66 6f 72 20 4c 4c 4d 20 72 65 71 75 65 73 74 73 2e 0a 0a 42 41 43 4b 45 4e 44 actor.for.LLM.requests...BACKEND
53160 20 69 73 20 74 68 65 20 4c 4c 4d 20 62 61 63 6b 65 6e 64 20 69 6e 20 75 73 65 2e 0a 0a 52 45 53 .is.the.LLM.backend.in.use...RES
53180 50 4f 4e 53 45 20 69 73 20 74 68 65 20 70 61 72 73 65 64 20 4a 53 4f 4e 20 6f 66 20 74 68 65 20 PONSE.is.the.parsed.JSON.of.the.
531a0 72 65 73 70 6f 6e 73 65 2c 20 61 73 20 61 20 70 6c 69 73 74 2e 0a 0a 50 52 4f 43 2d 49 4e 46 4f response,.as.a.plist...PROC-INFO
531c0 20 69 73 20 61 20 70 6c 69 73 74 20 77 69 74 68 20 70 72 6f 63 65 73 73 20 69 6e 66 6f 72 6d 61 .is.a.plist.with.process.informa
531e0 74 69 6f 6e 20 61 6e 64 20 6f 74 68 65 72 20 63 6f 6e 74 65 78 74 2e 0a 53 65 65 20 60 67 70 74 tion.and.other.context..See.`gpt
53200 65 6c 2d 63 75 72 6c 2d 2d 67 65 74 2d 72 65 73 70 6f 6e 73 65 27 20 66 6f 72 20 69 74 73 20 63 el-curl--get-response'.for.its.c
53220 6f 6e 74 65 6e 74 73 2e 22 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 75 72 6c 2d 70 61 ontents.")..(defun.gptel--url-pa
53240 72 73 65 2d 72 65 73 70 6f 6e 73 65 20 28 62 61 63 6b 65 6e 64 20 70 72 6f 63 2d 69 6e 66 6f 29 rse-response.(backend.proc-info)
53260 0a 20 20 22 50 61 72 73 65 20 72 65 73 70 6f 6e 73 65 20 66 72 6f 6d 20 42 41 43 4b 45 4e 44 20 ..."Parse.response.from.BACKEND.
53280 77 69 74 68 20 50 52 4f 43 2d 49 4e 46 4f 2e 22 0a 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 6c with.PROC-INFO."...(when.gptel-l
532a0 6f 67 2d 6c 65 76 65 6c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 6c 6f 67 67 69 6e og-level.................;loggin
532c0 67 0a 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 28 67 6f 74 g.....(save-excursion.......(got
532e0 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 0a o-char.url-http-end-of-headers).
53300 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 76 65 6c 20 ......(when.(eq.gptel-log-level.
53320 27 64 65 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 'debug).........(gptel--log.(gpt
53340 65 6c 2d 2d 6a 73 6f 6e 2d 65 6e 63 6f 64 65 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e el--json-encode.(buffer-substrin
53360 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28 70 6f 69 g-no-properties.(point-min).(poi
53380 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 22 72 65 73 70 6f nt)))....................."respo
533a0 6e 73 65 20 68 65 61 64 65 72 73 22 29 29 0a 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 6c 6f 67 nse.headers")).......(gptel--log
533c0 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
533e0 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 20 20 20 20 .(point).(point-max))...........
53400 20 20 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 28 69 66 ........"response.body")))...(if
53420 2d 6c 65 74 2a 20 28 28 68 74 74 70 2d 6d 73 67 20 28 73 74 72 69 6e 67 2d 74 72 69 6d 20 28 62 -let*.((http-msg.(string-trim.(b
53440 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 20 28 6c 69 6e 65 2d 62 65 67 69 6e 6e 69 6e 67 2d uffer-substring.(line-beginning-
53460 70 6f 73 69 74 69 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 position).......................
53480 20 20 20 20 20 20 20 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 ...............................(
534a0 6c 69 6e 65 2d 65 6e 64 2d 70 6f 73 69 74 69 6f 6e 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 line-end-position))))...........
534c0 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 28 73 61 76 ..(http-status..............(sav
534e0 65 2d 6d 61 74 63 68 2d 64 61 74 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 e-match-data................(and
53500 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 20 22 48 54 54 50 2f 5b 2e 30 2d 39 5d 2b 20 2b 5c 5c .(string-match."HTTP/[.0-9]+.+\\
53520 28 5b 30 2d 39 5d 2b 5c 5c 29 22 20 68 74 74 70 2d 6d 73 67 29 0a 20 20 20 20 20 20 20 20 20 20 ([0-9]+\\)".http-msg)...........
53540 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 2d 6d ..........(match-string.1.http-m
53560 73 67 29 29 29 29 0a 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 sg)))).............(response.(pr
53580 6f 67 6e 20 28 67 6f 74 6f 2d 63 68 61 72 20 75 72 6c 2d 68 74 74 70 2d 65 6e 64 2d 6f 66 2d 68 ogn.(goto-char.url-http-end-of-h
535a0 65 61 64 65 72 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 eaders).........................
535c0 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 20 20 20 20 20 .....(condition-case.nil........
535e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c ..........................(gptel
53600 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 20 --json-read)....................
53620 20 20 20 20 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 20 27 6a 73 6f 6e 2d 72 65 61 64 2d 65 72 ............(error.'json-read-er
53640 72 6f 72 29 29 29 29 29 0a 20 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 3b 3b 20 46 ror))))).......(cond........;;.F
53660 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 50 20 IXME.Handle.the.case.where.HTTP.
53680 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 30 30 100.is.followed.by.HTTP.(not.200
536a0 29 20 42 55 47 20 23 31 39 34 0a 20 20 20 20 20 20 20 28 28 6f 72 20 28 6d 65 6d 71 20 75 72 6c ).BUG.#194........((or.(memq.url
536c0 2d 68 74 74 70 2d 72 65 73 70 6f 6e 73 65 2d 73 74 61 74 75 73 20 27 28 32 30 30 20 31 30 30 29 -http-response-status.'(200.100)
536e0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 2d 70 20 22 5c ).............(string-match-p."\
53700 5c 28 3f 3a 31 5c 5c 7c 32 5c 5c 29 30 30 20 4f 4b 22 20 68 74 74 70 2d 6d 73 67 29 29 0a 20 20 \(?:1\\|2\\)00.OK".http-msg))...
53720 20 20 20 20 20 20 28 6c 69 73 74 20 28 61 6e 64 2d 6c 65 74 2a 20 28 28 72 65 73 70 20 28 67 70 ......(list.(and-let*.((resp.(gp
53740 74 65 6c 2d 2d 70 61 72 73 65 2d 72 65 73 70 6f 6e 73 65 20 62 61 63 6b 65 6e 64 20 72 65 73 70 tel--parse-response.backend.resp
53760 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 20 20 20 20 20 20 20 onse.proc-info))................
53780 20 20 20 20 20 20 20 20 20 20 28 28 6e 6f 74 20 28 73 74 72 69 6e 67 2d 62 6c 61 6e 6b 2d 70 20 ..........((not.(string-blank-p.
537a0 72 65 73 70 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 resp)))).................(string
537c0 2d 74 72 69 6d 20 72 65 73 70 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 74 74 70 2d -trim.resp))...............http-
537e0 73 74 61 74 75 73 20 68 74 74 70 2d 6d 73 67 29 29 0a 20 20 20 20 20 20 20 28 28 61 6e 64 2d 6c status.http-msg))........((and-l
53800 65 74 2a 20 28 28 65 72 72 6f 72 2d 64 61 74 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 et*.((error-data................
53820 20 20 20 20 20 28 63 6f 6e 64 20 28 28 70 6c 69 73 74 70 20 72 65 73 70 6f 6e 73 65 29 20 28 70 .....(cond.((plistp.response).(p
53840 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 0a 20 20 20 20 20 list-get.response.:error))......
53860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 61 72 72 61 79 70 20 72 65 .....................((arrayp.re
53880 73 70 6f 6e 73 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 sponse).........................
538a0 20 20 20 28 63 6c 2d 73 6f 6d 65 20 28 6c 61 6d 62 64 61 20 28 65 6c 29 20 28 70 6c 69 73 74 2d ...(cl-some.(lambda.(el).(plist-
538c0 67 65 74 20 65 6c 20 3a 65 72 72 6f 72 29 29 20 72 65 73 70 6f 6e 73 65 29 29 29 29 29 0a 20 20 get.el.:error)).response)))))...
538e0 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 6e 69 6c 20 68 74 74 70 2d 73 74 61 74 75 73 20 68 74 ........(list.nil.http-status.ht
53900 74 70 2d 6d 73 67 20 65 72 72 6f 72 2d 64 61 74 61 29 29 29 0a 20 20 20 20 20 20 20 28 28 65 71 tp-msg.error-data)))........((eq
53920 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 20 20 20 .response.'json-read-error).....
53940 20 20 20 20 28 6c 69 73 74 20 6e 69 6c 20 68 74 74 70 2d 73 74 61 74 75 73 20 28 63 6f 6e 63 61 ....(list.nil.http-status.(conca
53960 74 20 22 28 22 20 68 74 74 70 2d 6d 73 67 20 22 29 20 4d 61 6c 66 6f 72 6d 65 64 20 4a 53 4f 4e t."(".http-msg.").Malformed.JSON
53980 20 69 6e 20 72 65 73 70 6f 6e 73 65 2e 22 29 20 22 6a 73 6f 6e 2d 72 65 61 64 2d 65 72 72 6f 72 .in.response.")."json-read-error
539a0 22 29 29 0a 20 20 20 20 20 20 20 28 74 20 28 6c 69 73 74 20 6e 69 6c 20 68 74 74 70 2d 73 74 61 "))........(t.(list.nil.http-sta
539c0 74 75 73 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 tus.(concat."(".http-msg.").Coul
539e0 64 20 6e 6f 74 20 70 61 72 73 65 20 48 54 54 50 20 72 65 73 70 6f 6e 73 65 2e 22 29 0a 20 20 20 d.not.parse.HTTP.response.")....
53a00 20 20 20 20 20 20 20 20 20 20 20 20 20 22 43 6f 75 6c 64 20 6e 6f 74 20 70 61 72 73 65 20 48 54 ............."Could.not.parse.HT
53a20 54 50 20 72 65 73 70 6f 6e 73 65 2e 22 29 29 29 0a 20 20 20 20 28 6c 69 73 74 20 6e 69 6c 20 28 TP.response."))).....(list.nil.(
53a40 63 6f 6e 63 61 74 20 22 28 22 20 68 74 74 70 2d 6d 73 67 20 22 29 20 43 6f 75 6c 64 20 6e 6f 74 concat."(".http-msg.").Could.not
53a60 20 70 61 72 73 65 20 48 54 54 50 20 72 65 73 70 6f 6e 73 65 2e 22 29 0a 20 20 20 20 20 20 20 20 .parse.HTTP.response.").........
53a80 20 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 .."Could.not.parse.HTTP.response
53aa0 2e 22 29 29 29 0a 0a 28 63 6c 2d 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 73 61 6e 69 74 69 7a 65 .")))..(cl-defun.gptel--sanitize
53ac0 2d 6d 6f 64 65 6c 20 28 26 6b 65 79 20 28 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 62 61 63 6b -model.(&key.(backend.gptel-back
53ae0 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 20 20 20 20 20 20 20 end)............................
53b00 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 65 6c 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 29 0a 20 ...........(model.gptel-model)..
53b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
53b40 20 20 20 20 20 28 73 68 6f 6f 73 68 20 74 29 29 0a 20 20 22 43 68 65 63 6b 20 69 66 20 4d 4f 44 .....(shoosh.t))..."Check.if.MOD
53b60 45 4c 20 69 73 20 61 76 61 69 6c 61 62 6c 65 20 69 6e 20 42 41 43 4b 45 4e 44 2c 20 61 64 6a 75 EL.is.available.in.BACKEND,.adju
53b80 73 74 20 61 63 63 6f 72 64 69 6e 67 6c 79 2e 0a 0a 49 66 20 53 48 4f 4f 53 48 20 69 73 20 74 72 st.accordingly...If.SHOOSH.is.tr
53ba0 75 65 2c 20 64 6f 6e 27 74 20 69 73 73 75 65 20 61 20 77 61 72 6e 69 6e 67 2e 22 0a 20 20 28 6c ue,.don't.issue.a.warning."...(l
53bc0 65 74 20 28 28 61 76 61 69 6c 61 62 6c 65 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 6d 6f et.((available.(gptel-backend-mo
53be0 64 65 6c 73 20 62 61 63 6b 65 6e 64 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 28 73 74 72 69 6e dels.backend))).....(when.(strin
53c00 67 70 20 6d 6f 64 65 6c 29 0a 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 73 68 6f 6f 73 68 0a 20 gp.model).......(unless.shoosh..
53c20 20 20 20 20 20 20 20 28 64 69 73 70 6c 61 79 2d 77 61 72 6e 69 6e 67 0a 20 20 20 20 20 20 20 20 .......(display-warning.........
53c40 20 27 67 70 74 65 6c 0a 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 60 67 70 74 65 6c .'gptel..........(format."`gptel
53c60 2d 6d 6f 64 65 6c 27 20 65 78 70 65 63 74 73 20 61 20 73 79 6d 62 6f 6c 2c 20 66 6f 75 6e 64 20 -model'.expects.a.symbol,.found.
53c80 73 74 72 69 6e 67 20 5c 22 25 73 5c 22 0a 20 20 20 52 65 73 65 74 74 69 6e 67 20 60 67 70 74 65 string.\"%s\"....Resetting.`gpte
53ca0 6c 2d 6d 6f 64 65 6c 27 20 74 6f 20 25 73 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 l-model'.to.%s".................
53cc0 20 6d 6f 64 65 6c 20 6d 6f 64 65 6c 29 29 29 0a 20 20 20 20 20 20 28 73 65 74 71 20 67 70 74 65 .model.model))).......(setq.gpte
53ce0 6c 2d 6d 6f 64 65 6c 20 28 67 70 74 65 6c 2d 2d 69 6e 74 65 72 6e 20 6d 6f 64 65 6c 29 0a 20 20 l-model.(gptel--intern.model)...
53d00 20 20 20 20 20 20 20 20 20 20 6d 6f 64 65 6c 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 29 29 0a 20 20 ..........model.gptel-model))...
53d20 20 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 ..(unless.(member.model.availabl
53d40 65 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 e).......(let.((fallback.(car.av
53d60 61 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 ailable))).........(unless.shoos
53d80 68 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 h...........(display-warning....
53da0 20 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 ........'gptel............(forma
53dc0 74 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 t.(concat."Preferred.`gptel-mode
53de0 6c 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 l'.\"%s\".not"..................
53e00 20 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 .........."supported.in.\"%s\",.
53e20 75 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 using.\"%s\".instead")..........
53e40 20 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 ..........model.(gptel-backend-n
53e60 61 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 ame.backend).fallback)))........
53e80 20 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 .(setq-local.gptel-model.fallbac
53ea0 6b 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 k)))))..;;;###autoload.(defun.gp
53ec0 74 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 tel.(name.&optional._.initial.in
53ee0 74 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 teractivep)..."Switch.to.or.star
53f00 74 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 41 73 6b t.a.chat.session.with.NAME...Ask
53f20 20 66 6f 72 20 41 50 49 2d 4b 45 59 20 69 66 20 60 67 70 74 65 6c 2d 61 70 69 2d 6b 65 79 27 20 .for.API-KEY.if.`gptel-api-key'.
53f40 69 73 20 75 6e 73 65 74 2e 0a 0a 49 66 20 72 65 67 69 6f 6e 20 69 73 20 61 63 74 69 76 65 2c 20 is.unset...If.region.is.active,.
53f60 75 73 65 20 69 74 20 61 73 20 74 68 65 20 49 4e 49 54 49 41 4c 20 70 72 6f 6d 70 74 2e 20 20 52 use.it.as.the.INITIAL.prompt...R
53f80 65 74 75 72 6e 73 20 74 68 65 0a 62 75 66 66 65 72 20 63 72 65 61 74 65 64 20 6f 72 20 73 77 69 eturns.the.buffer.created.or.swi
53fa0 74 63 68 65 64 20 74 6f 2e 0a 0a 49 4e 54 45 52 41 43 54 49 56 45 50 20 69 73 20 74 20 77 68 65 tched.to...INTERACTIVEP.is.t.whe
53fc0 6e 20 67 70 74 65 6c 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 74 65 72 61 63 74 69 76 65 6c 79 2e n.gptel.is.called.interactively.
53fe0 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 0a 20 20 20 28 6c 65 74 2a 20 28 28 62 61 63 6b "...(interactive....(let*.((back
54000 65 6e 64 20 28 64 65 66 61 75 6c 74 2d 76 61 6c 75 65 20 27 67 70 74 65 6c 2d 62 61 63 6b 65 6e end.(default-value.'gptel-backen
54020 64 29 29 0a 20 20 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 d))...........(backend-name.....
54040 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 2a 25 73 2a 22 20 28 67 70 74 65 6c 2d 62 61 63 .......(format."*%s*".(gptel-bac
54060 6b 65 6e 64 2d 6e 61 6d 65 20 62 61 63 6b 65 6e 64 29 29 29 29 0a 20 20 20 20 20 28 6c 69 73 74 kend-name.backend))))......(list
54080 20 28 72 65 61 64 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 43 72 65 61 74 .(read-buffer............."Creat
540a0 65 20 6f 72 20 63 68 6f 6f 73 65 20 67 70 74 65 6c 20 62 75 66 66 65 72 3a 20 22 0a 20 20 20 20 e.or.choose.gptel.buffer:.".....
540c0 20 20 20 20 20 20 20 20 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 20 6e 69 6c 20 20 20 20 20 20 20 20 ........backend-name.nil........
540e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 44 45 46 41 55 4c 54 20 61 6e 64 20 52 .................;.DEFAULT.and.R
54100 45 51 55 49 52 45 2d 4d 41 54 43 48 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 EQUIRE-MATCH.............(lambda
54120 20 28 62 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .(b)............................
54140 20 20 20 20 20 20 20 3b 20 50 52 45 44 49 43 41 54 45 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 .......;.PREDICATE..............
54160 20 3b 3b 20 4e 4f 54 45 3a 20 62 75 66 66 65 72 20 63 68 65 63 6b 20 69 73 20 72 65 71 75 69 72 .;;.NOTE:.buffer.check.is.requir
54180 65 64 20 28 23 34 35 30 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 2d 6c 65 74 ed.(#450)...............(and-let
541a0 2a 20 28 28 62 75 66 20 28 67 65 74 2d 62 75 66 66 65 72 20 28 6f 72 20 28 63 61 72 2d 73 61 66 *.((buf.(get-buffer.(or.(car-saf
541c0 65 20 62 29 20 62 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 66 e.b).b)))).................(buff
541e0 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 62 75 66 29 29 er-local-value.'gptel-mode.buf))
54200 29 29 0a 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
54220 6c 0a 20 20 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 l................(gptel--get-api
54240 2d 6b 65 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 62 61 63 6b -key.................(gptel-back
54260 65 6e 64 2d 6b 65 79 20 62 61 63 6b 65 6e 64 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 end-key.backend))..............(
54280 28 65 72 72 6f 72 20 75 73 65 72 2d 65 72 72 6f 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 (error.user-error)..............
542a0 20 28 73 65 74 71 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 .(setq.gptel-api-key............
542c0 20 20 20 20 20 20 20 20 20 28 72 65 61 64 2d 70 61 73 73 77 64 0a 20 20 20 20 20 20 20 20 20 20 .........(read-passwd...........
542e0 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 25 73 20 41 50 49 20 6b 65 79 3a 20 ...........(format."%s.API.key:.
54300 22 20 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 ".backend-name)))))............(
54320 61 6e 64 20 28 75 73 65 2d 72 65 67 69 6f 6e 2d 70 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 and.(use-region-p)..............
54340 20 20 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 20 28 72 65 67 69 6f 6e 2d 62 65 67 ...(buffer-substring.(region-beg
54360 69 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 inning).........................
54380 20 20 20 20 20 20 20 20 20 20 28 72 65 67 69 6f 6e 2d 65 6e 64 29 29 29 0a 20 20 20 20 20 20 20 ..........(region-end)))........
543a0 20 20 20 20 74 29 29 29 0a 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 ....t)))...(with-current-buffer.
543c0 28 67 65 74 2d 62 75 66 66 65 72 2d 63 72 65 61 74 65 20 6e 61 6d 65 29 0a 20 20 20 20 28 63 6f (get-buffer-create.name).....(co
543e0 6e 64 20 3b 53 65 74 20 6d 61 6a 6f 72 20 6d 6f 64 65 0a 20 20 20 20 20 28 28 65 71 20 6d 61 6a nd.;Set.major.mode......((eq.maj
54400 6f 72 2d 6d 6f 64 65 20 67 70 74 65 6c 2d 64 65 66 61 75 6c 74 2d 6d 6f 64 65 29 29 0a 20 20 20 or-mode.gptel-default-mode))....
54420 20 20 28 28 65 71 20 67 70 74 65 6c 2d 64 65 66 61 75 6c 74 2d 6d 6f 64 65 20 27 74 65 78 74 2d ..((eq.gptel-default-mode.'text-
54440 6d 6f 64 65 29 0a 20 20 20 20 20 20 28 74 65 78 74 2d 6d 6f 64 65 29 0a 20 20 20 20 20 20 28 76 mode).......(text-mode).......(v
54460 69 73 75 61 6c 2d 6c 69 6e 65 2d 6d 6f 64 65 20 31 29 29 0a 20 20 20 20 20 28 74 20 28 66 75 6e isual-line-mode.1))......(t.(fun
54480 63 61 6c 6c 20 67 70 74 65 6c 2d 64 65 66 61 75 6c 74 2d 6d 6f 64 65 29 29 29 0a 20 20 20 20 28 call.gptel-default-mode))).....(
544a0 67 70 74 65 6c 2d 2d 73 61 6e 69 74 69 7a 65 2d 6d 6f 64 65 6c 20 3a 62 61 63 6b 65 6e 64 20 28 gptel--sanitize-model.:backend.(
544c0 64 65 66 61 75 6c 74 2d 76 61 6c 75 65 20 27 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 0a 20 20 default-value.'gptel-backend)...
544e0 20 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 6d 6f 64 65 6c 20 .........................:model.
54500 28 64 65 66 61 75 6c 74 2d 76 61 6c 75 65 20 27 67 70 74 65 6c 2d 6d 6f 64 65 6c 29 0a 20 20 20 (default-value.'gptel-model)....
54520 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 73 68 6f 6f 73 68 20 ........................:shoosh.
54540 6e 69 6c 29 0a 20 20 20 20 28 75 6e 6c 65 73 73 20 67 70 74 65 6c 2d 6d 6f 64 65 20 28 67 70 74 nil).....(unless.gptel-mode.(gpt
54560 65 6c 2d 6d 6f 64 65 20 31 29 29 0a 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e el-mode.1)).....(goto-char.(poin
54580 74 2d 6d 61 78 29 29 0a 20 20 20 20 28 73 6b 69 70 2d 63 68 61 72 73 2d 62 61 63 6b 77 61 72 64 t-max)).....(skip-chars-backward
545a0 20 22 5c 74 5c 72 5c 6e 22 29 0a 20 20 20 20 28 69 66 20 28 62 6f 62 70 29 20 28 69 6e 73 65 72 ."\t\r\n").....(if.(bobp).(inser
545c0 74 20 28 6f 72 20 69 6e 69 74 69 61 6c 20 28 67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 70 72 65 66 t.(or.initial.(gptel-prompt-pref
545e0 69 78 2d 73 74 72 69 6e 67 29 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 69 6e 74 65 72 61 63 74 ix-string)))).....(when.interact
54600 69 76 65 70 0a 20 20 20 20 20 20 28 64 69 73 70 6c 61 79 2d 62 75 66 66 65 72 20 28 63 75 72 72 ivep.......(display-buffer.(curr
54620 65 6e 74 2d 62 75 66 66 65 72 29 20 67 70 74 65 6c 2d 64 69 73 70 6c 61 79 2d 62 75 66 66 65 72 ent-buffer).gptel-display-buffer
54640 2d 61 63 74 69 6f 6e 29 0a 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 53 65 6e 64 20 79 6f -action).......(message."Send.yo
54660 75 72 20 71 75 65 72 79 20 77 69 74 68 20 25 73 21 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ur.query.with.%s!"..............
54680 20 20 28 73 75 62 73 74 69 74 75 74 65 2d 63 6f 6d 6d 61 6e 64 2d 6b 65 79 73 20 22 5c 5c 5b 67 ..(substitute-command-keys."\\[g
546a0 70 74 65 6c 2d 73 65 6e 64 5d 22 29 29 29 0a 20 20 20 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 ptel-send]"))).....(current-buff
546c0 65 72 29 29 29 0a 0a 0c 0a 3b 3b 3b 20 52 65 61 73 6f 6e 69 6e 67 20 63 6f 6e 74 65 6e 74 20 55 er)))....;;;.Reasoning.content.U
546e0 49 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 63 75 72 6c 2d 2d I.(declare-function.gptel-curl--
54700 73 74 72 65 61 6d 2d 69 6e 73 65 72 74 2d 72 65 73 70 6f 6e 73 65 20 22 67 70 74 65 6c 2d 63 75 stream-insert-response."gptel-cu
54720 72 6c 22 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 64 69 73 70 6c 61 79 2d 72 65 61 73 rl")..(defun.gptel--display-reas
54740 6f 6e 69 6e 67 2d 73 74 72 65 61 6d 20 28 74 65 78 74 20 69 6e 66 6f 29 0a 20 20 22 53 68 6f 77 oning-stream.(text.info)..."Show
54760 20 72 65 61 73 6f 6e 69 6e 67 20 54 45 58 54 20 69 6e 20 61 6e 20 61 70 70 72 6f 70 72 69 61 74 .reasoning.TEXT.in.an.appropriat
54780 65 20 6c 6f 63 61 74 69 6f 6e 2e 0a 0a 49 4e 46 4f 20 69 73 20 74 68 65 20 72 65 71 75 65 73 74 e.location...INFO.is.the.request
547a0 20 49 4e 46 4f 2c 20 73 65 65 20 60 67 70 74 65 6c 2d 2d 75 72 6c 2d 67 65 74 2d 72 65 73 70 6f .INFO,.see.`gptel--url-get-respo
547c0 6e 73 65 27 2e 20 20 54 68 69 73 20 69 73 0a 66 6f 72 20 73 74 72 65 61 6d 69 6e 67 20 72 65 73 nse'...This.is.for.streaming.res
547e0 70 6f 6e 73 65 73 20 6f 6e 6c 79 2e 22 0a 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 69 6e 63 ponses.only."...(when-let*.((inc
54800 6c 75 64 65 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 69 6e 63 6c 75 64 65 2d 72 65 lude.(plist-get.info.:include-re
54820 61 73 6f 6e 69 6e 67 29 29 29 0a 20 20 20 20 28 69 66 20 28 73 74 72 69 6e 67 70 20 69 6e 63 6c asoning))).....(if.(stringp.incl
54840 75 64 65 29 0a 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 65 71 20 74 65 78 74 20 74 29 ude).........(unless.(eq.text.t)
54860 0a 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 ...........(with-current-buffer.
54880 28 67 65 74 2d 62 75 66 66 65 72 2d 63 72 65 61 74 65 20 69 6e 63 6c 75 64 65 29 0a 20 20 20 20 (get-buffer-create.include).....
548a0 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 67 6f 74 6f 2d 63 68 ........(save-excursion.(goto-ch
548c0 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 20 20 ar.(point-max)).................
548e0 20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 74 65 78 74 29 29 29 29 0a 20 20 20 ............(insert.text))))....
54900 20 20 20 28 6c 65 74 2a 20 28 28 72 65 61 73 6f 6e 69 6e 67 2d 6d 61 72 6b 65 72 20 28 70 6c 69 ...(let*.((reasoning-marker.(pli
54920 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 72 65 61 73 6f 6e 69 6e 67 2d 6d 61 72 6b 65 72 29 29 0a st-get.info.:reasoning-marker)).
54940 20 20 20 20 20 20 20 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 .............(tracking-marker.(p
54960 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 72 6b 65 72 29 29 list-get.info.:tracking-marker))
54980 0a 20 20 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 28 70 6c 69 ..............(start-marker.(pli
549a0 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 70 6f 73 69 74 69 6f 6e 29 29 29 0a 20 20 20 20 20 20 20 st-get.info.:position)))........
549c0 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
549e0 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 28 69 66 ffer.start-marker)...........(if
54a00 20 28 65 71 20 74 65 78 74 20 74 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 65 6e 64 20 .(eq.text.t)...............;end.
54a20 6f 66 20 73 74 72 65 61 6d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 67 6e 0a 20 of.stream...............(progn..
54a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 73 74 72 65 ...............(gptel-curl--stre
54a60 61 6d 2d 69 6e 73 65 72 74 2d 72 65 73 70 6f 6e 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 am-insert-response..............
54a80 20 20 20 20 28 63 6f 6e 63 61 74 20 28 69 66 20 28 64 65 72 69 76 65 64 2d 6d 6f 64 65 2d 70 20 ....(concat.(if.(derived-mode-p.
54aa0 27 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 'org-mode)......................
54ac0 20 20 20 20 20 20 20 20 22 5c 6e 23 2b 65 6e 64 5f 72 65 61 73 6f 6e 69 6e 67 22 0a 20 20 20 20 ........"\n#+end_reasoning".....
54ae0 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 54 4f 44 4f 28 72 .......................;;.TODO(r
54b00 65 61 73 6f 6e 69 6e 67 29 20 72 65 6d 6f 76 65 20 70 72 6f 70 65 72 74 69 65 73 20 61 6e 64 20 easoning).remove.properties.and.
54b20 73 74 72 69 70 20 69 6e 73 74 65 61 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 strip.instead...................
54b40 20 20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 5c 6e 60 60 60 22 20 27 67 70 .........(propertize."\n```".'gp
54b60 74 65 6c 20 27 69 67 6e 6f 72 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 tel.'ignore))...................
54b80 20 20 20 20 20 20 20 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 73 65 70 61 72 61 74 6f 72 29 .......gptel-response-separator)
54ba0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 66 6f 20 74 29 0a 20 20 20 20 20 20 ..................info.t).......
54bc0 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 64 65 72 69 76 65 64 2d 6d 6f 64 65 2d 70 20 ..........(when.(derived-mode-p.
54be0 27 6f 72 67 2d 6d 6f 64 65 29 20 3b 66 6f 6c 64 20 62 6c 6f 63 6b 0a 20 20 20 20 20 20 20 20 20 'org-mode).;fold.block..........
54c00 20 20 20 20 20 20 20 20 20 28 69 67 6e 6f 72 65 2d 65 72 72 6f 72 73 0a 20 20 20 20 20 20 20 20 .........(ignore-errors.........
54c20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 ............(save-excursion.....
54c40 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 74 72 61 ..................(goto-char.tra
54c60 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 cking-marker)...................
54c80 20 20 20 20 28 73 65 61 72 63 68 2d 62 61 63 6b 77 61 72 64 20 22 23 2b 65 6e 64 5f 72 65 61 73 ....(search-backward."#+end_reas
54ca0 6f 6e 69 6e 67 22 20 73 74 61 72 74 2d 6d 61 72 6b 65 72 20 74 29 0a 20 20 20 20 20 20 20 20 20 oning".start-marker.t)..........
54cc0 20 20 20 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 20 22 .............(when.(looking-at."
54ce0 5e 23 5c 5c 2b 65 6e 64 5f 72 65 61 73 6f 6e 69 6e 67 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 ^#\\+end_reasoning")............
54d00 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 67 2d 63 79 63 6c 65 29 29 29 29 29 29 0a 20 20 .............(org-cycle))))))...
54d20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 61 6e 64 20 72 65 61 73 6f 6e 69 6e 67 ..........(unless.(and.reasoning
54d40 2d 6d 61 72 6b 65 72 20 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 0a 20 20 20 20 20 20 20 20 -marker.tracking-marker.........
54d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 3d 20 72 65 61 73 6f 6e 69 6e 67 2d 6d 61 .................(=.reasoning-ma
54d80 72 6b 65 72 20 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 rker.tracking-marker))..........
54da0 20 20 20 20 20 28 6c 65 74 20 28 28 73 65 70 61 72 61 74 6f 72 20 20 20 20 20 20 20 20 3b 53 65 .....(let.((separator........;Se
54dc0 70 61 72 61 74 65 20 66 72 6f 6d 20 72 65 73 70 6f 6e 73 65 20 70 72 65 66 69 78 20 69 66 20 72 parate.from.response.prefix.if.r
54de0 65 71 75 69 72 65 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 6e equired......................(an
54e00 64 20 28 6e 6f 74 20 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 29 20 67 70 74 65 6c 2d 6d 6f d.(not.tracking-marker).gptel-mo
54e20 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 28 6e 6f de...........................(no
54e40 74 20 28 73 74 72 69 6e 67 2d 73 75 66 66 69 78 2d 70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 t.(string-suffix-p..............
54e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 5c 6e 22 20 28 67 70 74 65 6c 2d 72 ..................."\n".(gptel-r
54e80 65 73 70 6f 6e 73 65 2d 70 72 65 66 69 78 2d 73 74 72 69 6e 67 29 29 29 0a 20 20 20 20 20 20 20 esponse-prefix-string)))........
54ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 5c 6e 22 29 29 29 0a 20 20 20 20 20 ..................."\n")))......
54ec0 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 73 74 72 65 61 6d 2d 69 ...........(gptel-curl--stream-i
54ee0 6e 73 65 72 74 2d 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 nsert-response..................
54f00 28 63 6f 6e 63 61 74 20 73 65 70 61 72 61 74 6f 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (concat.separator...............
54f20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 64 65 72 69 76 65 64 2d 6d 6f 64 65 2d 70 20 27 ...........(if.(derived-mode-p.'
54f40 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).......................
54f60 20 20 20 20 20 20 20 22 23 2b 62 65 67 69 6e 5f 72 65 61 73 6f 6e 69 6e 67 5c 6e 22 0a 20 20 20 ......."#+begin_reasoning\n"....
54f80 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 54 4f 44 4f 28 ........................;;.TODO(
54fa0 72 65 61 73 6f 6e 69 6e 67 29 20 72 65 6d 6f 76 65 20 70 72 6f 70 65 72 74 69 65 73 20 61 6e 64 reasoning).remove.properties.and
54fc0 20 73 74 72 69 70 20 69 6e 73 74 65 61 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .strip.instead..................
54fe0 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 60 60 60 20 72 65 61 73 6f ..........(propertize."```.reaso
55000 6e 69 6e 67 5c 6e 22 20 27 67 70 74 65 6c 20 27 69 67 6e 6f 72 65 29 29 29 0a 20 20 20 20 20 20 ning\n".'gptel.'ignore))).......
55020 20 20 20 20 20 20 20 20 20 20 20 69 6e 66 6f 20 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 ...........info.t)))............
55040 20 28 69 66 20 28 65 71 20 69 6e 63 6c 75 64 65 20 27 69 67 6e 6f 72 65 29 0a 20 20 20 20 20 20 .(if.(eq.include.'ignore).......
55060 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 67 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..........(progn................
55080 20 20 20 28 61 64 64 2d 74 65 78 74 2d 70 72 6f 70 65 72 74 69 65 73 0a 20 20 20 20 20 20 20 20 ...(add-text-properties.........
550a0 20 20 20 20 20 20 20 20 20 20 20 30 20 28 6c 65 6e 67 74 68 20 74 65 78 74 29 20 27 28 67 70 74 ...........0.(length.text).'(gpt
550c0 65 6c 20 69 67 6e 6f 72 65 20 66 72 6f 6e 74 2d 73 74 69 63 6b 79 20 28 67 70 74 65 6c 29 29 20 el.ignore.front-sticky.(gptel)).
550e0 74 65 78 74 29 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 2d 63 text)...................(gptel-c
55100 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 20 74 65 78 74 url--stream-insert-response.text
55120 20 69 6e 66 6f 20 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 63 .info.t))...............(gptel-c
55140 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 20 74 65 78 74 url--stream-insert-response.text
55160 20 69 6e 66 6f 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 74 72 61 63 6b 69 6e .info)))...........(setq.trackin
55180 67 2d 6d 61 72 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 g-marker.(plist-get.info.:tracki
551a0 6e 67 2d 6d 61 72 6b 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 69 66 20 72 65 61 73 6f 6e ng-marker))...........(if.reason
551c0 69 6e 67 2d 6d 61 72 6b 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 76 65 2d 6d ing-marker...............(move-m
551e0 61 72 6b 65 72 20 72 65 61 73 6f 6e 69 6e 67 2d 6d 61 72 6b 65 72 20 74 72 61 63 6b 69 6e 67 2d arker.reasoning-marker.tracking-
55200 6d 61 72 6b 65 72 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 69 marker).............(plist-put.i
55220 6e 66 6f 20 3a 72 65 61 73 6f 6e 69 6e 67 2d 6d 61 72 6b 65 72 0a 20 20 20 20 20 20 20 20 20 20 nfo.:reasoning-marker...........
55240 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 70 79 2d 6d 61 72 6b 65 72 20 74 72 61 63 6b 69 .............(copy-marker.tracki
55260 6e 67 2d 6d 61 72 6b 65 72 20 6e 69 6c 29 29 29 29 29 29 29 29 0a 0a 0c 0a 3b 3b 3b 20 54 6f 6f ng-marker.nil))))))))....;;;.Too
55280 6c 20 75 73 65 20 55 49 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 64 69 73 70 6c 61 79 2d 74 l.use.UI.(defun.gptel--display-t
552a0 6f 6f 6c 2d 63 61 6c 6c 73 20 28 74 6f 6f 6c 2d 63 61 6c 6c 73 20 69 6e 66 6f 20 26 6f 70 74 69 ool-calls.(tool-calls.info.&opti
552c0 6f 6e 61 6c 20 75 73 65 2d 6d 69 6e 69 62 75 66 66 65 72 29 0a 20 20 22 48 61 6e 64 6c 65 20 74 onal.use-minibuffer)..."Handle.t
552e0 6f 6f 6c 20 63 61 6c 6c 20 63 6f 6e 66 69 72 6d 61 74 69 6f 6e 2e 0a 0a 54 4f 4f 4c 2d 43 41 4c ool.call.confirmation...TOOL-CAL
55300 4c 53 20 73 68 6f 75 6c 64 20 62 65 20 61 20 6c 69 73 74 20 6f 66 20 74 6f 6f 6c 20 63 61 6c 6c LS.should.be.a.list.of.tool.call
55320 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e 73 20 6f 72 20 72 65 73 75 6c 74 73 2c 0a 73 74 72 75 .specifications.or.results,.stru
55340 63 74 75 72 65 64 20 61 73 3a 0a 0a 20 28 28 74 6f 6f 6c 20 61 72 67 73 20 63 61 6c 6c 62 61 63 ctured.as:...((tool.args.callbac
55360 6b 29 20 2e 2e 2e 29 0a 0a 66 6f 72 20 74 6f 6f 6c 20 63 61 6c 6c 20 73 70 65 63 69 66 69 63 61 k)....)..for.tool.call.specifica
55380 74 69 6f 6e 73 20 74 6f 20 62 65 20 63 6f 6e 66 69 72 6d 65 64 2e 20 20 49 4e 46 4f 20 63 6f 6e tions.to.be.confirmed...INFO.con
553a0 74 61 69 6e 73 20 74 68 65 0a 73 74 61 74 65 20 6f 66 20 74 68 65 20 72 65 71 75 65 73 74 2e 20 tains.the.state.of.the.request..
553c0 20 54 6f 20 70 72 6f 6d 70 74 20 66 6f 72 20 74 6f 6f 6c 20 63 61 6c 6c 20 63 6f 6e 66 69 72 6d .To.prompt.for.tool.call.confirm
553e0 61 74 69 6f 6e 2c 20 75 73 65 0a 65 69 74 68 65 72 20 61 6e 20 6f 76 65 72 6c 61 79 20 69 6e 20 ation,.use.either.an.overlay.in.
55400 74 68 65 20 72 65 71 75 65 73 74 20 62 75 66 66 65 72 20 6f 72 20 74 68 65 20 6d 69 6e 69 62 75 the.request.buffer.or.the.minibu
55420 66 66 65 72 20 28 69 66 0a 55 53 45 2d 4d 49 4e 49 42 55 46 46 45 52 20 69 73 20 6e 6f 6e 2d 6e ffer.(if.USE-MINIBUFFER.is.non-n
55440 69 6c 29 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 73 74 61 72 74 2d 6d 61 72 6b 65 72 20 28 70 6c il)."...(let*.((start-marker.(pl
55460 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 20 20 20 ist-get.info.:position))........
55480 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 74 20 69 6e ..(tracking-marker.(plist-get.in
554a0 66 6f 20 3a 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 29 29 29 0a 20 20 20 20 3b 3b 20 70 65 fo.:tracking-marker))).....;;.pe
554c0 6e 64 69 6e 67 20 74 6f 6f 6c 20 63 61 6c 6c 73 20 6c 6f 6f 6b 20 6c 69 6b 65 20 28 28 74 6f 6f nding.tool.calls.look.like.((too
554e0 6c 20 63 61 6c 6c 62 61 63 6b 20 61 72 67 73 29 20 2e 2e 2e 29 0a 20 20 20 20 28 77 69 74 68 2d l.callback.args)....).....(with-
55500 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 69 6e 66 6f 20 3a current-buffer.(plist-get.info.:
55520 62 75 66 66 65 72 29 0a 20 20 20 20 20 20 28 69 66 20 75 73 65 2d 6d 69 6e 69 62 75 66 66 65 72 buffer).......(if.use-minibuffer
55540 20 20 20 20 20 20 20 20 20 20 20 20 3b 70 72 6f 6d 70 74 20 66 6f 72 20 63 6f 6e 66 69 72 6d 61 ............;prompt.for.confirma
55560 74 69 6f 6e 20 66 72 6f 6d 20 74 68 65 20 6d 69 6e 69 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 tion.from.the.minibuffer........
55580 20 20 20 28 6c 65 74 2a 20 28 28 6d 69 6e 69 62 75 66 66 65 72 2d 61 6c 6c 6f 77 2d 74 65 78 74 ...(let*.((minibuffer-allow-text
555a0 2d 70 72 6f 70 65 72 74 69 65 73 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -properties.t)..................
555c0 28 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 6e 61 6d (backend-name.(gptel-backend-nam
555e0 65 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 62 61 63 6b 65 6e 64 29 29 29 0a 20 20 e.(plist-get.info.:backend)))...
55600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 6d 70 74 20 28 66 6f 72 6d 61 74 20 22 ...............(prompt.(format."
55620 25 73 20 77 61 6e 74 73 20 74 6f 20 72 75 6e 20 22 20 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 29 29 %s.wants.to.run.".backend-name))
55640 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 70 2d 79 2d 6f 72 2d 6e 2d 70 0a 20 20 20 20 ).............(map-y-or-n-p.....
55660 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 74 6f 6f 6c 2d 63 61 6c 6c 2d 73 70 65 63 .........(lambda.(tool-call-spec
55680 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 70 72 6f 6d 70 74 20 )................(concat.prompt.
556a0 28 70 72 6f 70 65 72 74 69 7a 65 20 28 67 70 74 65 6c 2d 74 6f 6f 6c 2d 6e 61 6d 65 20 28 63 61 (propertize.(gptel-tool-name.(ca
556c0 72 20 74 6f 6f 6c 2d 63 61 6c 6c 2d 73 70 65 63 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 r.tool-call-spec))..............
556e0 20 20 20 20 20 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 .............................'fa
55700 63 65 20 27 66 6f 6e 74 2d 6c 6f 63 6b 2d 6b 65 79 77 6f 72 64 2d 66 61 63 65 29 0a 20 20 20 20 ce.'font-lock-keyword-face).....
55720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 3a 20 22 29 29 0a 20 20 20 20 20 20 ...................":.")).......
55740 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 74 63 73 29 20 28 67 70 74 65 6c 2d 2d 61 63 63 .......(lambda.(tcs).(gptel--acc
55760 65 70 74 2d 74 6f 6f 6c 2d 63 61 6c 6c 73 20 28 6c 69 73 74 20 74 63 73 29 20 6e 69 6c 29 29 0a ept-tool-calls.(list.tcs).nil)).
55780 20 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 6f 6c 2d 63 61 6c 6c 73 20 27 28 22 74 6f 6f 6c 20 .............tool-calls.'("tool.
557a0 63 61 6c 6c 22 20 22 74 6f 6f 6c 20 63 61 6c 6c 73 22 20 22 72 75 6e 22 29 0a 20 20 20 20 20 20 call"."tool.calls"."run").......
557c0 20 20 20 20 20 20 20 60 28 28 3f 69 20 2c 28 6c 61 6d 62 64 61 20 28 5f 29 20 28 73 61 76 65 2d .......`((?i.,(lambda.(_).(save-
557e0 77 69 6e 64 6f 77 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 window-excursion................
55800 20 20 20 20 20 20 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 ..............(with-selected-win
55820 64 6f 77 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 dow.............................
55840 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 69 6e 73 70 65 63 74 2d 66 73 6d 20 67 70 74 65 6c 2d 2d .....(gptel--inspect-fsm.gptel--
55860 66 73 6d 2d 6c 61 73 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 fsm-last).......................
55880 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 69 6e 29 29 .........(goto-char.(point-min))
558a0 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 ................................
558c0 28 77 68 65 6e 20 28 73 65 61 72 63 68 2d 66 6f 72 77 61 72 64 2d 72 65 67 65 78 70 20 22 5e 3a (when.(search-forward-regexp."^:
558e0 74 6f 6f 6c 2d 75 73 65 22 20 6e 69 6c 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 tool-use".nil.t)................
55900 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 64 2d 6c 69 6e 65 20 ..................(forward-line.
55920 30 29 20 28 68 6c 2d 6c 69 6e 65 2d 68 69 67 68 6c 69 67 68 74 29 29 0a 20 20 20 20 20 20 20 20 0).(hl-line-highlight)).........
55940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 73 65 2d 6c 6f 63 61 .......................(use-loca
55960 6c 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 20 l-map...........................
55980 20 20 20 20 20 20 28 6d 61 6b 65 2d 63 6f 6d 70 6f 73 65 64 2d 6b 65 79 6d 61 70 0a 20 20 20 20 ......(make-composed-keymap.....
559a0 20 20 20 20 20 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 64 65 .............................(de
559c0 66 69 6e 65 2d 6b 65 79 6d 61 70 20 22 71 22 20 28 6c 61 6d 62 64 61 20 28 29 20 28 69 6e 74 65 fine-keymap."q".(lambda.().(inte
559e0 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 20 20 ractive)........................
55a00 20 20 20 20 20 20 20 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 ...............................(
55a20 71 75 69 74 2d 77 69 6e 64 6f 77 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 quit-window)....................
55a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
55a60 20 20 20 28 65 78 69 74 2d 72 65 63 75 72 73 69 76 65 2d 65 64 69 74 29 29 29 0a 20 20 20 20 20 ...(exit-recursive-edit)))......
55a80 20 20 20 20 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 75 72 ............................(cur
55aa0 72 65 6e 74 2d 6c 6f 63 61 6c 2d 6d 61 70 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rent-local-map)))...............
55ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 63 75 72 73 69 76 65 2d 65 64 69 74 .................(recursive-edit
55ae0 29 20 6e 69 6c 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 69 6e 73 ).nil)))...................."ins
55b00 70 65 63 74 20 63 61 6c 6c 28 73 29 22 29 29 29 29 0a 20 20 20 20 20 20 20 20 3b 3b 20 50 72 6f pect.call(s)")))).........;;.Pro
55b20 6d 70 74 20 66 6f 72 20 63 6f 6e 66 69 72 6d 61 74 69 6f 6e 20 66 72 6f 6d 20 74 68 65 20 63 68 mpt.for.confirmation.from.the.ch
55b40 61 74 20 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 62 61 63 6b 65 6e at.buffer.........(let*.((backen
55b60 64 2d 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 28 70 6c 69 73 d-name.(gptel-backend-name.(plis
55b80 74 2d 67 65 74 20 69 6e 66 6f 20 3a 62 61 63 6b 65 6e 64 29 29 29 0a 20 20 20 20 20 20 20 20 20 t-get.info.:backend)))..........
55ba0 20 20 20 20 20 20 28 61 63 74 69 6f 6e 73 2d 73 74 72 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 ......(actions-string...........
55bc0 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 52 75 6e 20 74 ......(concat.(propertize."Run.t
55be0 6f 6f 6c 73 3a 20 22 20 27 66 61 63 65 20 27 66 6f 6e 74 2d 6c 6f 63 6b 2d 73 74 72 69 6e 67 2d ools:.".'face.'font-lock-string-
55c00 66 61 63 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 28 70 face).........................(p
55c20 72 6f 70 65 72 74 69 7a 65 20 22 43 2d 63 20 43 2d 63 22 20 27 66 61 63 65 20 27 68 65 6c 70 2d ropertize."C-c.C-c".'face.'help-
55c40 6b 65 79 2d 62 69 6e 64 69 6e 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 key-binding)....................
55c60 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 2c 20 43 61 6e 63 65 6c 20 72 65 71 75 65 .....(propertize.",.Cancel.reque
55c80 73 74 3a 20 22 20 27 66 61 63 65 20 27 66 6f 6e 74 2d 6c 6f 63 6b 2d 73 74 72 69 6e 67 2d 66 61 st:.".'face.'font-lock-string-fa
55ca0 63 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 28 70 72 6f ce).........................(pro
55cc0 70 65 72 74 69 7a 65 20 22 43 2d 63 20 43 2d 6b 22 20 27 66 61 63 65 20 27 68 65 6c 70 2d 6b 65 pertize."C-c.C-k".'face.'help-ke
55ce0 79 2d 62 69 6e 64 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 y-binding)......................
55d00 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 2c 20 49 6e 73 70 65 63 74 3a 20 22 20 27 66 61 ...(propertize.",.Inspect:.".'fa
55d20 63 65 20 27 66 6f 6e 74 2d 6c 6f 63 6b 2d 73 74 72 69 6e 67 2d 66 61 63 65 29 0a 20 20 20 20 20 ce.'font-lock-string-face)......
55d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 ...................(propertize."
55d60 43 2d 63 20 43 2d 69 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 C-c.C-i".'face.'help-key-binding
55d80 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 66 69 72 6d 2d 73 74 72 69 )))................(confirm-stri
55da0 6e 67 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 28 63 6f 6e 63 61 ngs.................(list.(conca
55dc0 74 20 22 5c 6e 22 20 61 63 74 69 6f 6e 73 2d 73 74 72 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 t."\n".actions-string...........
55de0 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 20 ....................(propertize.
55e00 22 5c 6e 22 20 27 66 61 63 65 20 27 28 3a 69 6e 68 65 72 69 74 20 66 6f 6e 74 2d 6c 6f 63 6b 2d "\n".'face.'(:inherit.font-lock-
55e20 73 74 72 69 6e 67 2d 66 61 63 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 string-face.....................
55e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
55e60 20 20 20 20 20 20 20 20 20 20 20 20 3a 75 6e 64 65 72 6c 69 6e 65 20 74 20 3a 65 78 74 65 6e 64 ............:underline.t.:extend
55e80 20 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .t))............................
55ea0 20 20 20 28 66 6f 72 6d 61 74 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 5c 6e 25 73 20 77 61 6e ...(format.(propertize."\n%s.wan
55ec0 74 73 20 74 6f 20 72 75 6e 3a 5c 6e 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ts.to.run:\n"...................
55ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
55f00 27 66 61 63 65 20 27 66 6f 6e 74 2d 6c 6f 63 6b 2d 73 74 72 69 6e 67 2d 66 61 63 65 29 0a 20 20 'face.'font-lock-string-face)...
55f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
55f40 20 20 20 20 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 ....backend-name))))............
55f60 20 20 20 20 3b 3b 20 46 49 58 4d 45 28 74 6f 6f 6c 29 20 75 73 65 20 61 20 77 72 61 70 70 65 72 ....;;.FIXME(tool).use.a.wrapper
55f80 20 69 6e 73 74 65 61 64 20 6f 66 20 61 20 6d 61 6e 75 61 6c 20 74 65 78 74 2d 70 72 6f 70 65 72 .instead.of.a.manual.text-proper
55fa0 74 79 20 73 65 61 72 63 68 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 74 68 69 ty.search,................;;.thi
55fc0 73 20 69 73 20 66 72 61 67 69 6c 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 76 2d s.is.fragile................(ov-
55fe0 73 74 61 72 74 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 start.(save-excursion...........
56000 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 73 74 61 72 .................(goto-char.star
56020 74 2d 6d 61 72 6b 65 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 t-marker).......................
56040 20 20 20 20 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 .....(text-property-search-backw
56060 61 72 64 20 27 67 70 74 65 6c 20 27 72 65 73 70 6f 6e 73 65 29 0a 20 20 20 20 20 20 20 20 20 20 ard.'gptel.'response)...........
56080 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 29 0a 20 20 20 20 20 .................(point)))......
560a0 20 20 20 20 20 20 20 20 20 20 28 6f 76 20 28 6f 72 20 28 63 64 72 2d 73 61 66 65 20 28 67 65 74 ..........(ov.(or.(cdr-safe.(get
560c0 2d 63 68 61 72 2d 70 72 6f 70 65 72 74 79 2d 61 6e 64 2d 6f 76 65 72 6c 61 79 0a 20 20 20 20 20 -char-property-and-overlay......
560e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 61 .............................sta
56100 72 74 2d 6d 61 72 6b 65 72 20 27 67 70 74 65 6c 2d 74 6f 6f 6c 29 29 0a 20 20 20 20 20 20 20 20 rt-marker.'gptel-tool)).........
56120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 6b 65 2d 6f 76 65 72 6c 61 79 20 6f 76 2d ...............(make-overlay.ov-
56140 73 74 61 72 74 20 28 6f 72 20 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 20 73 74 61 72 74 2d start.(or.tracking-marker.start-
56160 6d 61 72 6b 65 72 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20 49 66 20 74 68 65 20 marker)))))...........;;.If.the.
56180 63 75 72 73 6f 72 20 69 73 20 61 74 20 74 68 65 20 6f 76 65 72 6c 61 79 2d 65 6e 64 2c 20 69 74 cursor.is.at.the.overlay-end,.it
561a0 20 65 6e 64 73 20 75 70 20 6f 75 74 73 69 64 65 2c 20 73 6f 20 6d 6f 76 65 20 69 74 20 62 61 63 .ends.up.outside,.so.move.it.bac
561c0 6b 0a 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 74 72 61 63 6b 69 6e 67 2d 6d 61 72 k...........(unless.tracking-mar
561e0 6b 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 3d 20 28 70 6f 69 6e 74 29 ker.............(when.(=.(point)
56200 20 73 74 61 72 74 2d 6d 61 72 6b 65 72 29 20 28 69 67 6e 6f 72 65 2d 65 72 72 6f 72 73 20 28 62 .start-marker).(ignore-errors.(b
56220 61 63 6b 77 61 72 64 2d 63 68 61 72 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 63 61 73 ackward-char))))...........(pcas
56240 65 2d 64 6f 6c 69 73 74 20 28 60 28 2c 74 6f 6f 6c 2d 73 70 65 63 20 2c 61 72 67 2d 76 61 6c 75 e-dolist.(`(,tool-spec.,arg-valu
56260 65 73 20 5f 29 20 74 6f 6f 6c 2d 63 61 6c 6c 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 es._).tool-calls).............(p
56280 75 73 68 20 28 67 70 74 65 6c 2d 2d 66 6f 72 6d 61 74 2d 74 6f 6f 6c 2d 63 61 6c 6c 20 28 67 70 ush.(gptel--format-tool-call.(gp
562a0 74 65 6c 2d 74 6f 6f 6c 2d 6e 61 6d 65 20 74 6f 6f 6c 2d 73 70 65 63 29 20 61 72 67 2d 76 61 6c tel-tool-name.tool-spec).arg-val
562c0 75 65 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 72 6d 2d 73 ues)...................confirm-s
562e0 74 72 69 6e 67 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 63 6f 6e 63 61 74 trings))...........(push.(concat
56300 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 5c 6e 22 20 27 66 61 63 65 20 27 28 3a 69 6e 68 65 72 .(propertize."\n".'face.'(:inher
56320 69 74 20 66 6f 6e 74 2d 6c 6f 63 6b 2d 73 74 72 69 6e 67 2d 66 61 63 65 0a 20 20 20 20 20 20 20 it.font-lock-string-face........
56340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
56360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 75 6e 64 65 72 6c 69 6e 65 20 74 20 ...................:underline.t.
56380 3a 65 78 74 65 6e 64 20 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e :extend.t))).................con
563a0 66 69 72 6d 2d 73 74 72 69 6e 67 73 29 0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20 41 64 64 20 63 firm-strings)...........;;.Add.c
563c0 6f 6e 66 69 72 6d 61 74 69 6f 6e 20 70 72 6f 6d 70 74 20 74 6f 20 74 68 65 20 6f 76 65 72 6c 61 onfirmation.prompt.to.the.overla
563e0 79 0a 20 20 20 20 20 20 20 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75 74 20 6f 76 20 27 61 66 74 y...........(overlay-put.ov.'aft
56400 65 72 2d 73 74 72 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 er-string.......................
56420 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 20 63 6f 6e 66 69 .(apply.#'concat.(nreverse.confi
56440 72 6d 2d 73 74 72 69 6e 67 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 6f 76 65 72 6c 61 79 rm-strings)))...........(overlay
56460 2d 70 75 74 20 6f 76 20 27 6d 6f 75 73 65 2d 66 61 63 65 20 27 68 69 67 68 6c 69 67 68 74 29 0a -put.ov.'mouse-face.'highlight).
56480 20 20 20 20 20 20 20 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75 74 20 6f 76 20 27 67 70 74 65 6c ..........(overlay-put.ov.'gptel
564a0 2d 74 6f 6f 6c 20 74 6f 6f 6c 2d 63 61 6c 6c 73 29 0a 20 20 20 20 20 20 20 20 20 20 28 6f 76 65 -tool.tool-calls)...........(ove
564c0 72 6c 61 79 2d 70 75 74 20 6f 76 20 27 68 65 6c 70 2d 65 63 68 6f 0a 20 20 20 20 20 20 20 20 20 rlay-put.ov.'help-echo..........
564e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 22 54 6f 6f 6c 20 63 61 6c 6c ..............(concat."Tool.call
56500 28 73 29 20 72 65 71 75 65 73 74 65 64 3a 20 22 20 61 63 74 69 6f 6e 73 2d 73 74 72 69 6e 67 29 (s).requested:.".actions-string)
56520 29 0a 20 20 20 20 20 20 20 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75 74 20 6f 76 20 27 6b 65 79 )...........(overlay-put.ov.'key
56540 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 28 64 65 66 69 map........................(defi
56560 6e 65 2d 6b 65 79 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 ne-keymap.......................
56580 20 20 20 22 3c 6d 6f 75 73 65 2d 31 3e 22 20 23 27 67 70 74 65 6c 2d 2d 64 69 73 70 61 74 63 68 ..."<mouse-1>".#'gptel--dispatch
565a0 2d 74 6f 6f 6c 2d 63 61 6c 6c 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -tool-calls.....................
565c0 20 20 20 20 20 22 43 2d 63 20 43 2d 63 22 20 23 27 67 70 74 65 6c 2d 2d 61 63 63 65 70 74 2d 74 ....."C-c.C-c".#'gptel--accept-t
565e0 6f 6f 6c 2d 63 61 6c 6c 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ool-calls.......................
56600 20 20 20 22 43 2d 63 20 43 2d 6b 22 20 23 27 67 70 74 65 6c 2d 2d 72 65 6a 65 63 74 2d 74 6f 6f ..."C-c.C-k".#'gptel--reject-too
56620 6c 2d 63 61 6c 6c 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 l-calls.........................
56640 20 22 43 2d 63 20 43 2d 69 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ."C-c.C-i"......................
56660 20 20 20 20 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 ....(lambda.().(interactive)....
56680 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 74 68 2d 73 65 ........................(with-se
566a0 6c 65 63 74 65 64 2d 77 69 6e 64 6f 77 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 lected-window...................
566c0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 69 6e 73 70 65 63 74 2d 66 73 6d .............(gptel--inspect-fsm
566e0 20 67 70 74 65 6c 2d 2d 66 73 6d 2d 6c 61 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .gptel--fsm-last)...............
56700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 ...............(goto-char.(point
56720 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 20 20 20 -min))..........................
56740 20 20 20 20 28 77 68 65 6e 20 28 73 65 61 72 63 68 2d 66 6f 72 77 61 72 64 2d 72 65 67 65 78 70 ....(when.(search-forward-regexp
56760 20 22 5e 3a 74 6f 6f 6c 2d 75 73 65 22 20 6e 69 6c 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 ."^:tool-use".nil.t)............
56780 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 64 2d 6c 69 6e ....................(forward-lin
567a0 65 20 30 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 e.0)............................
567c0 20 20 20 20 28 68 6c 2d 6c 69 6e 65 2d 68 69 67 68 6c 69 67 68 74 29 29 29 29 29 29 29 29 29 29 ....(hl-line-highlight))))))))))
567e0 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 64 69 73 70 6c 61 79 2d 74 6f 6f 6c 2d 72 65 )..(defun.gptel--display-tool-re
56800 73 75 6c 74 73 20 28 74 6f 6f 6c 2d 72 65 73 75 6c 74 73 20 69 6e 66 6f 29 0a 20 20 22 49 6e 73 sults.(tool-results.info)..."Ins
56820 65 72 74 20 54 4f 4f 4c 2d 52 45 53 55 4c 54 53 20 69 6e 74 6f 20 62 75 66 66 65 72 2e 0a 0a 54 ert.TOOL-RESULTS.into.buffer...T
56840 4f 4f 4c 2d 52 45 53 55 4c 54 53 20 69 73 0a 0a 20 28 28 74 6f 6f 6c 20 61 72 67 73 20 72 65 73 OOL-RESULTS.is...((tool.args.res
56860 75 6c 74 29 20 2e 2e 2e 29 0a 0a 66 6f 72 20 74 6f 6f 6c 20 63 61 6c 6c 20 72 65 73 75 6c 74 73 ult)....)..for.tool.call.results
56880 2e 20 20 49 4e 46 4f 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 73 74 61 74 65 20 6f 66 20 74 68 ...INFO.contains.the.state.of.th
568a0 65 20 72 65 71 75 65 73 74 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 73 74 61 72 74 2d 6d 61 72 6b e.request."...(let*.((start-mark
568c0 65 72 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 70 6f 73 69 74 69 6f 6e 29 29 0a 20 er.(plist-get.info.:position))..
568e0 20 20 20 20 20 20 20 20 28 74 6f 6f 6c 2d 6d 61 72 6b 65 72 20 28 70 6c 69 73 74 2d 67 65 74 20 ........(tool-marker.(plist-get.
56900 69 6e 66 6f 20 3a 74 6f 6f 6c 2d 6d 61 72 6b 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 28 74 72 info.:tool-marker))..........(tr
56920 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 74 acking-marker.(plist-get.info.:t
56940 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 29 29 29 0a 20 20 20 20 3b 3b 20 49 6e 73 65 72 74 20 racking-marker))).....;;.Insert.
56960 74 6f 6f 6c 20 72 65 73 75 6c 74 73 0a 20 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 69 6e 63 tool.results.....(when.gptel-inc
56980 6c 75 64 65 2d 74 6f 6f 6c 2d 72 65 73 75 6c 74 73 0a 20 20 20 20 20 20 28 77 69 74 68 2d 63 75 lude-tool-results.......(with-cu
569a0 72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 6d 61 72 6b 65 72 2d 62 75 66 66 65 72 20 73 74 61 72 rrent-buffer.(marker-buffer.star
569c0 74 2d 6d 61 72 6b 65 72 29 0a 20 20 20 20 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 0a 20 20 20 20 20 t-marker).........(cl-loop......
569e0 20 20 20 20 66 6f 72 20 28 74 6f 6f 6c 20 61 72 67 73 20 72 65 73 75 6c 74 29 20 69 6e 20 74 6f ....for.(tool.args.result).in.to
56a00 6f 6c 2d 72 65 73 75 6c 74 73 0a 20 20 20 20 20 20 20 20 20 77 69 74 68 20 69 6e 63 6c 75 64 65 ol-results..........with.include
56a20 2d 6e 61 6d 65 73 20 3d 0a 20 20 20 20 20 20 20 20 20 28 6d 61 70 63 61 72 20 23 27 67 70 74 65 -names.=..........(mapcar.#'gpte
56a40 6c 2d 74 6f 6f 6c 2d 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c l-tool-name..................(cl
56a60 2d 72 65 6d 6f 76 65 2d 69 66 2d 6e 6f 74 20 23 27 67 70 74 65 6c 2d 74 6f 6f 6c 2d 69 6e 63 6c -remove-if-not.#'gptel-tool-incl
56a80 75 64 65 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 74 6f 6f 6c 73 29 29 29 0a 20 20 ude.(plist-get.info.:tools)))...
56aa0 20 20 20 20 20 20 20 69 66 20 28 6f 72 20 28 65 71 20 67 70 74 65 6c 2d 69 6e 63 6c 75 64 65 2d .......if.(or.(eq.gptel-include-
56ac0 74 6f 6f 6c 2d 72 65 73 75 6c 74 73 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 tool-results.t).................
56ae0 28 6d 65 6d 62 65 72 20 28 67 70 74 65 6c 2d 74 6f 6f 6c 2d 6e 61 6d 65 20 74 6f 6f 6c 29 20 69 (member.(gptel-tool-name.tool).i
56b00 6e 63 6c 75 64 65 2d 6e 61 6d 65 73 29 29 0a 20 20 20 20 20 20 20 20 20 64 6f 20 28 66 75 6e 63 nclude-names))..........do.(func
56b20 61 6c 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f all..............(plist-get.info
56b40 20 3a 63 61 6c 6c 62 61 63 6b 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 .:callback)..............(let*.(
56b60 28 6e 61 6d 65 20 28 67 70 74 65 6c 2d 74 6f 6f 6c 2d 6e 61 6d 65 20 74 6f 6f 6c 29 29 0a 20 20 (name.(gptel-tool-name.tool))...
56b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 70 61 72 61 74 6f 72 20 20 20 20 ..................(separator....
56ba0 20 20 20 20 3b 53 65 70 61 72 61 74 65 20 66 72 6f 6d 20 72 65 73 70 6f 6e 73 65 20 70 72 65 66 ....;Separate.from.response.pref
56bc0 69 78 20 69 66 20 72 65 71 75 69 72 65 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ix.if.required..................
56be0 20 20 20 20 28 63 6f 6e 64 20 28 28 6e 6f 74 20 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 29 ....(cond.((not.tracking-marker)
56c00 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 61 6e .............................(an
56c20 64 20 67 70 74 65 6c 2d 6d 6f 64 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 d.gptel-mode....................
56c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 6f 74 20 28 73 74 72 69 6e 67 2d 73 75 66 66 69 ..............(not.(string-suffi
56c60 78 2d 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 20 20 20 x-p.............................
56c80 20 20 20 20 20 20 20 20 20 20 20 22 5c 6e 22 20 28 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d ..........."\n".(gptel-response-
56ca0 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 20 20 20 prefix-string)))................
56cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 5c 6e 22 29 29 20 20 20 20 20 20 20 20 .................."\n"))........
56ce0 20 20 20 3b 73 74 61 72 74 20 6f 66 20 72 65 73 70 6f 6e 73 65 0a 20 20 20 20 20 20 20 20 20 20 ...;start.of.response...........
56d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 6e 6f 74 20 28 61 6e 64 20 74 6f 6f 6c .................((not.(and.tool
56d20 2d 6d 61 72 6b 65 72 20 3b 6e 6f 74 20 63 6f 6e 73 65 63 75 74 69 76 65 20 74 6f 6f 6c 20 72 65 -marker.;not.consecutive.tool.re
56d40 73 75 6c 74 20 62 6c 6f 63 6b 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 sult.blocks.....................
56d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 3d 20 74 72 61 63 6b 69 6e 67 2d 6d 61 ..................(=.tracking-ma
56d80 72 6b 65 72 20 74 6f 6f 6c 2d 6d 61 72 6b 65 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 rker.tool-marker))).............
56da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 73 ................gptel-response-s
56dc0 65 70 61 72 61 74 6f 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 eparator))).....................
56de0 28 74 6f 6f 6c 2d 75 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b (tool-use......................;
56e00 3b 20 54 4f 44 4f 28 74 6f 6f 6c 29 20 61 6c 73 6f 20 63 68 65 63 6b 20 61 72 67 73 20 73 69 6e ;.TODO(tool).also.check.args.sin
56e20 63 65 20 74 68 65 72 65 20 6d 61 79 20 62 65 20 6d 6f 72 65 20 74 68 61 6e 0a 20 20 20 20 20 20 ce.there.may.be.more.than.......
56e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 6f 6e 65 20 63 61 6c 6c 2f 72 65 73 75 6c ...............;;.one.call/resul
56e60 74 20 66 6f 72 20 74 68 65 20 73 61 6d 65 20 74 6f 6f 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 t.for.the.same.tool.............
56e80 20 20 20 20 20 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 .........(cl-find-if............
56ea0 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 74 75 29 20 28 65 71 75 61 6c 20 28 ...........(lambda.(tu).(equal.(
56ec0 70 6c 69 73 74 2d 67 65 74 20 74 75 20 3a 6e 61 6d 65 29 20 6e 61 6d 65 29 29 0a 20 20 20 20 20 plist-get.tu.:name).name))......
56ee0 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 69 6e 66 6f .................(plist-get.info
56f00 20 3a 74 6f 6f 6c 2d 75 73 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .:tool-use)))...................
56f20 20 20 28 69 64 20 28 70 6c 69 73 74 2d 67 65 74 20 74 6f 6f 6c 2d 75 73 65 20 3a 69 64 29 29 0a ..(id.(plist-get.tool-use.:id)).
56f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 69 73 70 6c 61 79 2d 63 61 6c ....................(display-cal
56f60 6c 20 28 66 6f 72 6d 61 74 20 22 28 25 73 20 25 73 29 22 20 6e 61 6d 65 0a 20 20 20 20 20 20 20 l.(format."(%s.%s)".name........
56f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
56fa0 20 20 20 28 73 74 72 69 6e 67 2d 74 72 69 6d 20 28 70 72 69 6e 31 2d 74 6f 2d 73 74 72 69 6e 67 ...(string-trim.(prin1-to-string
56fc0 20 61 72 67 73 29 20 22 28 22 20 22 29 22 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .args)."(".")")))...............
56fe0 20 20 20 20 20 20 28 63 61 6c 6c 20 28 70 72 69 6e 31 2d 74 6f 2d 73 74 72 69 6e 67 20 60 28 3a ......(call.(prin1-to-string.`(:
57000 6e 61 6d 65 20 2c 6e 61 6d 65 20 3a 61 72 67 73 20 2c 61 72 67 73 29 29 29 0a 20 20 20 20 20 20 name.,name.:args.,args))).......
57020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 72 75 6e 63 61 74 65 64 2d 63 61 6c 6c 20 28 74 ..............(truncated-call.(t
57040 72 75 6e 63 61 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 20 runcate-string-to-width.........
57060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 69 73 .............................dis
57080 70 6c 61 79 2d 63 61 6c 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 play-call.......................
570a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6c 6f 6f 72 20 28 2a 20 28 77 69 6e 64 6f 77 ...............(floor.(*.(window
570c0 2d 77 69 64 74 68 29 20 30 2e 36 29 29 20 30 20 6e 69 6c 20 22 20 2e 2e 2e 29 22 29 29 29 0a 20 -width).0.6)).0.nil."....)")))..
570e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 64 65 72 69 76 65 64 2d 6d 6f 64 65 2d ..............(if.(derived-mode-
57100 70 20 27 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 p.'org-mode)....................
57120 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 73 65 70 61 (concat.....................sepa
57140 72 61 74 6f 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 23 2b 62 65 67 rator....................."#+beg
57160 69 6e 5f 74 6f 6f 6c 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 in_tool.".....................tr
57180 75 6e 63 61 74 65 64 2d 63 61 6c 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 uncated-call....................
571a0 20 28 70 72 6f 70 65 72 74 69 7a 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .(propertize....................
571c0 20 20 28 63 6f 6e 63 61 74 20 22 5c 6e 22 20 63 61 6c 6c 20 22 5c 6e 5c 6e 22 20 28 6f 72 67 2d ..(concat."\n".call."\n\n".(org-
571e0 65 73 63 61 70 65 2d 63 6f 64 65 2d 69 6e 2d 73 74 72 69 6e 67 20 72 65 73 75 6c 74 29 29 0a 20 escape-code-in-string.result))..
57200 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 60 28 74 6f 6f ....................'gptel.`(too
57220 6c 20 2e 20 2c 69 64 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 5c l...,id))....................."\
57240 6e 23 2b 65 6e 64 5f 74 6f 6f 6c 5c 6e 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 n#+end_tool\n").................
57260 20 3b 3b 20 54 4f 44 4f 28 74 6f 6f 6c 29 20 65 6c 73 65 20 62 72 61 6e 63 68 20 69 73 20 68 61 .;;.TODO(tool).else.branch.is.ha
57280 6e 64 6c 69 6e 67 20 61 6c 6c 20 66 72 6f 6e 74 2d 65 6e 64 73 20 61 73 20 6d 61 72 6b 64 6f 77 ndling.all.front-ends.as.markdow
572a0 6e 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 41 74 20 6c 65 61 73 74 20 n...................;;.At.least.
572c0 65 73 63 61 70 65 20 6d 61 72 6b 64 6f 77 6e 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 escape.markdown.................
572e0 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 73 65 70 61 ..(concat...................sepa
57300 72 61 74 6f 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 54 4f 44 4f 28 rator...................;;.TODO(
57320 74 6f 6f 6c 29 20 72 65 6d 6f 76 65 20 70 72 6f 70 65 72 74 69 65 73 20 61 6e 64 20 73 74 72 69 tool).remove.properties.and.stri
57340 70 20 69 6e 73 74 65 61 64 20 6f 66 20 69 67 6e 6f 72 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 p.instead.of.ignoring...........
57360 20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 28 66 6f 72 6d 61 74 20 22 60 60 60 ........(propertize.(format."```
57380 20 74 6f 6f 6c 20 25 73 22 20 74 72 75 6e 63 61 74 65 64 2d 63 61 6c 6c 29 20 27 67 70 74 65 6c .tool.%s".truncated-call).'gptel
573a0 20 27 69 67 6e 6f 72 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f .'ignore)...................(pro
573c0 70 65 72 74 69 7a 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 54 4f pertize....................;;.TO
573e0 44 4f 28 74 6f 6f 6c 29 20 65 73 63 61 70 65 20 6d 61 72 6b 64 6f 77 6e 20 69 6e 20 72 65 73 75 DO(tool).escape.markdown.in.resu
57400 6c 74 0a 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 22 5c lt....................(concat."\
57420 6e 22 20 63 61 6c 6c 20 22 5c 6e 5c 6e 22 20 72 65 73 75 6c 74 29 0a 20 20 20 20 20 20 20 20 20 n".call."\n\n".result)..........
57440 20 20 20 20 20 20 20 20 20 20 27 67 70 74 65 6c 20 60 28 74 6f 6f 6c 20 2e 20 2c 69 64 29 29 0a ..........'gptel.`(tool...,id)).
57460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 54 4f 44 4f 28 74 6f 6f 6c 29 20 ..................;;.TODO(tool).
57480 72 65 6d 6f 76 65 20 70 72 6f 70 65 72 74 69 65 73 20 61 6e 64 20 73 74 72 69 70 20 69 6e 73 74 remove.properties.and.strip.inst
574a0 65 61 64 20 6f 66 20 69 67 6e 6f 72 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ead.of.ignoring.................
574c0 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 5c 6e 60 60 60 5c 6e 22 20 27 67 70 74 65 6c 20 27 ..(propertize."\n```\n".'gptel.'
574e0 69 67 6e 6f 72 65 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 66 6f 0a 20 20 20 ignore))))..............info....
57500 20 20 20 20 20 20 20 20 20 20 27 72 61 77 29 0a 20 20 20 20 20 20 20 20 20 3b 3b 20 74 6f 6f 6c ..........'raw)..........;;.tool
57520 2d 72 65 73 75 6c 74 20 69 6e 73 65 72 74 69 6f 6e 20 68 61 73 20 75 70 64 61 74 65 64 20 74 68 -result.insertion.has.updated.th
57540 65 20 74 72 61 63 6b 69 6e 67 20 6d 61 72 6b 65 72 0a 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 e.tracking.marker..........(unle
57560 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 20 20 20 20 20 28 73 ss.tracking-marker............(s
57580 65 74 71 20 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 74 20 69 etq.tracking-marker.(plist-get.i
575a0 6e 66 6f 20 3a 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 29 29 29 0a 20 20 20 20 20 20 20 20 nfo.:tracking-marker))).........
575c0 20 28 69 66 20 74 6f 6f 6c 2d 6d 61 72 6b 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .(if.tool-marker................
575e0 28 6d 6f 76 65 2d 6d 61 72 6b 65 72 20 74 6f 6f 6c 2d 6d 61 72 6b 65 72 20 74 72 61 63 6b 69 6e (move-marker.tool-marker.trackin
57600 67 2d 6d 61 72 6b 65 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 74 6f 6f g-marker)..............(setq.too
57620 6c 2d 6d 61 72 6b 65 72 20 28 63 6f 70 79 2d 6d 61 72 6b 65 72 20 74 72 61 63 6b 69 6e 67 2d 6d l-marker.(copy-marker.tracking-m
57640 61 72 6b 65 72 20 6e 69 6c 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d arker.nil))..............(plist-
57660 70 75 74 20 69 6e 66 6f 20 3a 74 6f 6f 6c 2d 6d 61 72 6b 65 72 20 74 6f 6f 6c 2d 6d 61 72 6b 65 put.info.:tool-marker.tool-marke
57680 72 29 29 0a 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 64 65 72 69 76 65 64 2d 6d 6f 64 65 r))..........(when.(derived-mode
576a0 2d 70 20 27 6f 72 67 2d 6d 6f 64 65 29 20 3b 66 6f 6c 64 20 64 72 61 77 65 72 0a 20 20 20 20 20 -p.'org-mode).;fold.drawer......
576c0 20 20 20 20 20 20 28 69 67 6e 6f 72 65 2d 65 72 72 6f 72 73 0a 20 20 20 20 20 20 20 20 20 20 20 ......(ignore-errors............
576e0 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..(save-excursion...............
57700 20 28 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 .(goto-char.tracking-marker)....
57720 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 77 61 72 64 2d 6c 69 6e 65 20 2d 31 29 0a 20 20 ............(forward-line.-1)...
57740 20 20 20 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 20 22 .............(when.(looking-at."
57760 5e 23 5c 5c 2b 65 6e 64 5f 74 6f 6f 6c 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ^#\\+end_tool").................
57780 20 28 6f 72 67 2d 63 79 63 6c 65 29 29 29 29 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 .(org-cycle))))))))))..(defun.gp
577a0 74 65 6c 2d 2d 66 6f 72 6d 61 74 2d 74 6f 6f 6c 2d 63 61 6c 6c 20 28 6e 61 6d 65 20 61 72 67 2d tel--format-tool-call.(name.arg-
577c0 76 61 6c 75 65 73 29 0a 20 20 22 46 6f 72 6d 61 74 20 61 20 74 6f 6f 6c 20 63 61 6c 6c 20 66 6f values)..."Format.a.tool.call.fo
577e0 72 20 64 69 73 70 6c 61 79 20 69 6e 20 74 68 65 20 62 75 66 66 65 72 2e 0a 0a 4e 41 4d 45 20 61 r.display.in.the.buffer...NAME.a
57800 6e 64 20 41 52 47 2d 56 41 4c 55 45 53 20 61 72 65 20 74 68 65 20 6e 61 6d 65 20 61 6e 64 20 61 nd.ARG-VALUES.are.the.name.and.a
57820 72 67 75 6d 65 6e 74 73 20 66 6f 72 20 74 68 65 20 63 61 6c 6c 2e 22 0a 20 20 28 66 6f 72 6d 61 rguments.for.the.call."...(forma
57840 74 20 22 28 25 73 20 25 73 29 5c 6e 22 0a 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 t."(%s.%s)\n"...........(propert
57860 69 7a 65 20 6e 61 6d 65 20 27 66 61 63 65 20 27 66 6f 6e 74 2d 6c 6f 63 6b 2d 6b 65 79 77 6f 72 ize.name.'face.'font-lock-keywor
57880 64 2d 66 61 63 65 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 0a 20 20 d-face)...........(propertize...
578a0 20 20 20 20 20 20 20 20 20 28 6d 61 70 63 6f 6e 63 61 74 20 28 6c 61 6d 62 64 61 20 28 61 72 67 .........(mapconcat.(lambda.(arg
578c0 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 63 6f 6e 64 20 ).........................(cond.
578e0 28 28 73 74 72 69 6e 67 70 20 61 72 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ((stringp.arg)..................
57900 20 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 0a 20 ..............(prin1-to-string..
57920 20 20 20 20 20 20 20 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 ...............................(
57940 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 20 20 replace-regexp-in-string........
57960 20 20 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 6e 22 20 22 .........................."\n"."
57980 e2 ae 90 22 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 0a 20 ...".(truncate-string-to-width..
579a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
579c0 20 20 20 20 20 20 20 20 20 20 61 72 67 20 28 66 6c 6f 6f 72 20 28 77 69 6e 64 6f 77 2d 77 69 64 ..........arg.(floor.(window-wid
579e0 74 68 29 20 32 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 th).2)..........................
57a00 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 74 29 29 29 29 0a ..................nil.nil.t)))).
57a20 20 20 20 20 20 20 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 ..............................(t
57a40 20 28 70 72 69 6e 31 2d 74 6f 2d 73 74 72 69 6e 67 20 61 72 67 29 29 29 29 0a 20 20 20 20 20 20 .(prin1-to-string.arg)))).......
57a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 72 67 2d 76 61 6c 75 65 73 20 22 20 22 29 0a ................arg-values.".").
57a80 20 20 20 20 20 20 20 20 20 20 20 27 66 61 63 65 20 27 66 6f 6e 74 2d 6c 6f 63 6b 2d 63 6f 6e 73 ...........'face.'font-lock-cons
57aa0 74 61 6e 74 2d 66 61 63 65 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 61 63 63 65 tant-face)))..(defun.gptel--acce
57ac0 70 74 2d 74 6f 6f 6c 2d 63 61 6c 6c 73 20 28 26 6f 70 74 69 6f 6e 61 6c 20 72 65 73 70 6f 6e 73 pt-tool-calls.(&optional.respons
57ae0 65 20 6f 76 29 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 20 28 70 63 61 73 65 2d 6c 65 74 20 e.ov)...(interactive.(pcase-let.
57b00 28 28 60 28 2c 72 65 73 70 20 2e 20 2c 6f 29 20 28 67 65 74 2d 63 68 61 72 2d 70 72 6f 70 65 72 ((`(,resp...,o).(get-char-proper
57b20 74 79 2d 61 6e 64 2d 6f 76 65 72 6c 61 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ty-and-overlay..................
57b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6f 69 6e 74 ..........................(point
57b60 29 20 27 67 70 74 65 6c 2d 74 6f 6f 6c 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ).'gptel-tool)))................
57b80 20 20 28 6c 69 73 74 20 72 65 73 70 20 6f 29 29 29 0a 20 20 28 67 70 74 65 6c 2d 2d 75 70 64 61 ..(list.resp.o)))...(gptel--upda
57ba0 74 65 2d 73 74 61 74 75 73 20 22 20 43 61 6c 6c 69 6e 67 20 74 6f 6f 6c 2e 2e 2e 22 20 27 6d 6f te-status.".Calling.tool...".'mo
57bc0 64 65 2d 6c 69 6e 65 2d 65 6d 70 68 61 73 69 73 29 0a 20 20 28 6d 65 73 73 61 67 65 20 22 43 6f de-line-emphasis)...(message."Co
57be0 6e 74 69 6e 75 69 6e 67 20 71 75 65 72 79 2e 2e 2e 22 29 0a 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 ntinuing.query...")...(cl-loop.f
57c00 6f 72 20 28 74 6f 6f 6c 2d 73 70 65 63 20 61 72 67 2d 76 61 6c 75 65 73 20 70 72 6f 63 65 73 73 or.(tool-spec.arg-values.process
57c20 2d 74 6f 6f 6c 2d 72 65 73 75 6c 74 29 20 69 6e 20 72 65 73 70 6f 6e 73 65 0a 20 20 20 20 20 20 -tool-result).in.response.......
57c40 20 20 20 20 20 64 6f 0a 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 67 70 74 65 6c 2d 74 6f .....do............(if.(gptel-to
57c60 6f 6c 2d 61 73 79 6e 63 20 74 6f 6f 6c 2d 73 70 65 63 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 ol-async.tool-spec).............
57c80 20 20 20 28 61 70 70 6c 79 20 28 67 70 74 65 6c 2d 74 6f 6f 6c 2d 66 75 6e 63 74 69 6f 6e 20 74 ...(apply.(gptel-tool-function.t
57ca0 6f 6f 6c 2d 73 70 65 63 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ool-spec).......................
57cc0 70 72 6f 63 65 73 73 2d 74 6f 6f 6c 2d 72 65 73 75 6c 74 20 61 72 67 2d 76 61 6c 75 65 73 29 0a process-tool-result.arg-values).
57ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 72 65 73 75 6c 74 0a 20 20 20 20 20 .............(let.((result......
57d00 20 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 65 ...............(condition-case.e
57d20 72 72 64 61 74 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 20 28 rrdata.........................(
57d40 61 70 70 6c 79 20 28 67 70 74 65 6c 2d 74 6f 6f 6c 2d 66 75 6e 63 74 69 6f 6e 20 74 6f 6f 6c 2d apply.(gptel-tool-function.tool-
57d60 73 70 65 63 29 20 61 72 67 2d 76 61 6c 75 65 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 spec).arg-values)...............
57d80 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 20 28 6d 61 70 63 6f 6e 63 61 74 20 23 27 67 70 74 65 ........(error.(mapconcat.#'gpte
57da0 6c 2d 2d 74 6f 2d 73 74 72 69 6e 67 20 65 72 72 64 61 74 61 20 22 20 22 29 29 29 29 29 0a 20 20 l--to-string.errdata.".")))))...
57dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 70 72 6f 63 65 73 73 2d 74 6f .............(funcall.process-to
57de0 6f 6c 2d 72 65 73 75 6c 74 20 72 65 73 75 6c 74 29 29 29 29 0a 20 20 28 61 6e 64 20 28 6f 76 65 ol-result.result))))...(and.(ove
57e00 72 6c 61 79 70 20 6f 76 29 20 28 64 65 6c 65 74 65 2d 6f 76 65 72 6c 61 79 20 6f 76 29 29 29 0a rlayp.ov).(delete-overlay.ov))).
57e20 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 72 65 6a 65 63 74 2d 74 6f 6f 6c 2d 63 61 6c 6c 73 .(defun.gptel--reject-tool-calls
57e40 20 28 26 6f 70 74 69 6f 6e 61 6c 20 5f 72 65 73 70 6f 6e 73 65 20 6f 76 29 0a 20 20 28 69 6e 74 .(&optional._response.ov)...(int
57e60 65 72 61 63 74 69 76 65 20 28 70 63 61 73 65 2d 6c 65 74 20 28 28 60 28 2c 72 65 73 70 20 2e 20 eractive.(pcase-let.((`(,resp...
57e80 2c 6f 29 20 28 67 65 74 2d 63 68 61 72 2d 70 72 6f 70 65 72 74 79 2d 61 6e 64 2d 6f 76 65 72 6c ,o).(get-char-property-and-overl
57ea0 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 20 20 ay..............................
57ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6f 69 6e 74 29 20 27 67 70 74 65 6c 2d 74 6f 6f ..............(point).'gptel-too
57ee0 6c 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 72 65 73 70 l)))..................(list.resp
57f00 20 6f 29 29 29 0a 20 20 28 67 70 74 65 6c 2d 2d 75 70 64 61 74 65 2d 73 74 61 74 75 73 20 22 20 .o)))...(gptel--update-status.".
57f20 54 6f 6f 6c 73 20 63 61 6e 63 65 6c 6c 65 64 22 20 27 65 72 72 6f 72 29 0a 20 20 28 6d 65 73 73 Tools.cancelled".'error)...(mess
57f40 61 67 65 20 28 73 75 62 73 74 69 74 75 74 65 2d 63 6f 6d 6d 61 6e 64 2d 6b 65 79 73 0a 20 20 20 age.(substitute-command-keys....
57f60 20 20 20 20 20 20 20 20 20 22 54 6f 6f 6c 20 63 61 6c 6c 73 20 63 61 6e 63 65 6c 65 64 2e 20 20 ........."Tool.calls.canceled...
57f80 5c 5c 5b 67 70 74 65 6c 2d 6d 65 6e 75 5d 20 74 6f 20 63 6f 6e 74 69 6e 75 65 20 74 68 65 6d 21 \\[gptel-menu].to.continue.them!
57fa0 22 29 29 0a 20 20 28 61 6e 64 20 28 6f 76 65 72 6c 61 79 70 20 6f 76 29 20 28 64 65 6c 65 74 65 "))...(and.(overlayp.ov).(delete
57fc0 2d 6f 76 65 72 6c 61 79 20 6f 76 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 64 69 -overlay.ov)))..(defun.gptel--di
57fe0 73 70 61 74 63 68 2d 74 6f 6f 6c 2d 63 61 6c 6c 73 20 28 63 68 6f 69 63 65 29 0a 20 20 28 69 6e spatch-tool-calls.(choice)...(in
58000 74 65 72 61 63 74 69 76 65 0a 20 20 20 28 6c 69 73 74 0a 20 20 20 20 28 6c 65 74 20 28 28 63 68 teractive....(list.....(let.((ch
58020 6f 69 63 65 73 20 27 28 28 3f 79 20 22 79 65 73 22 29 20 28 3f 6e 20 22 64 6f 20 6e 6f 74 68 69 oices.'((?y."yes").(?n."do.nothi
58040 6e 67 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 3f 6b 20 22 63 ng")......................(?k."c
58060 61 6e 63 65 6c 20 72 65 71 75 65 73 74 22 29 20 28 3f 69 20 22 69 6e 73 70 65 63 74 20 63 61 6c ancel.request").(?i."inspect.cal
58080 6c 28 73 29 22 29 29 29 29 0a 20 20 20 20 20 20 28 72 65 61 64 2d 6d 75 6c 74 69 70 6c 65 2d 63 l(s)")))).......(read-multiple-c
580a0 68 6f 69 63 65 20 22 52 75 6e 20 74 6f 6f 6c 20 63 61 6c 6c 73 3f 20 22 20 63 68 6f 69 63 65 73 hoice."Run.tool.calls?.".choices
580c0 29 29 29 29 0a 20 20 28 70 63 61 73 65 20 28 63 61 72 20 63 68 6f 69 63 65 29 0a 20 20 20 20 28 ))))...(pcase.(car.choice).....(
580e0 3f 79 20 28 63 61 6c 6c 2d 69 6e 74 65 72 61 63 74 69 76 65 6c 79 20 23 27 67 70 74 65 6c 2d 2d ?y.(call-interactively.#'gptel--
58100 61 63 63 65 70 74 2d 74 6f 6f 6c 2d 63 61 6c 6c 73 29 29 0a 20 20 20 20 28 3f 6b 20 28 63 61 6c accept-tool-calls)).....(?k.(cal
58120 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 72 65 6a 65 63 74 2d l-interactively.#'gptel--reject-
58140 74 6f 6f 6c 2d 63 61 6c 6c 73 29 29 0a 20 20 20 20 28 3f 69 20 28 67 70 74 65 6c 2d 2d 69 6e 73 tool-calls)).....(?i.(gptel--ins
58160 70 65 63 74 2d 66 73 6d 20 67 70 74 65 6c 2d 2d 66 73 6d 2d 6c 61 73 74 29 29 29 29 0a 0a 0c 0a pect-fsm.gptel--fsm-last))))....
58180 3b 3b 3b 20 50 72 65 73 65 74 73 0a 3b 3b 3b 3b 20 50 72 65 73 65 74 73 20 69 6d 70 6c 65 6d 65 ;;;.Presets.;;;;.Presets.impleme
581a0 6e 74 61 74 69 6f 6e 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 70 72 65 ntation.(defvar.gptel--known-pre
581c0 73 65 74 73 20 6e 69 6c 0a 20 20 22 41 6c 69 73 74 20 6f 66 20 70 72 65 73 65 74 73 20 66 6f 72 sets.nil..."Alist.of.presets.for
581e0 20 67 70 74 65 6c 2e 0a 0a 45 61 63 68 20 65 6e 74 72 79 20 6d 61 70 73 20 61 20 70 72 65 73 65 .gptel...Each.entry.maps.a.prese
58200 74 20 6e 61 6d 65 20 28 61 20 73 79 6d 62 6f 6c 29 20 74 6f 20 61 20 70 6c 69 73 74 20 6f 66 0a t.name.(a.symbol).to.a.plist.of.
58220 73 70 65 63 69 66 69 63 61 74 69 6f 6e 73 20 28 73 65 65 20 60 67 70 74 65 6c 2d 6d 61 6b 65 2d specifications.(see.`gptel-make-
58240 70 72 65 73 65 74 27 29 2e 22 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 6d 61 6b 65 2d 70 preset').")..(defun.gptel-make-p
58260 72 65 73 65 74 20 28 6e 61 6d 65 20 26 72 65 73 74 20 6b 65 79 73 29 0a 20 20 22 44 65 66 69 6e reset.(name.&rest.keys)..."Defin
58280 65 20 61 20 67 70 74 65 6c 20 70 72 65 73 65 74 20 77 69 74 68 20 4e 41 4d 45 2e 0a 0a 41 20 70 e.a.gptel.preset.with.NAME...A.p
582a0 72 65 73 65 74 20 69 73 20 61 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 20 6f 66 20 67 70 74 65 6c 20 reset.is.a.combination.of.gptel.
582c0 6f 70 74 69 6f 6e 73 20 69 6e 74 65 6e 64 65 64 20 74 6f 20 62 65 20 61 70 70 6c 69 65 64 20 61 options.intended.to.be.applied.a
582e0 6e 64 0a 75 73 65 64 20 74 6f 67 65 74 68 65 72 2e 20 20 50 72 65 73 65 74 73 20 63 61 6e 20 6d nd.used.together...Presets.can.m
58300 61 6b 65 20 69 74 20 6c 65 73 73 20 74 65 64 69 6f 75 73 20 74 6f 20 63 68 61 6e 67 65 20 67 70 ake.it.less.tedious.to.change.gp
58320 74 65 6c 0a 73 65 74 74 69 6e 67 73 20 6f 6e 20 74 68 65 20 66 6c 79 2e 0a 0a 54 79 70 69 63 61 tel.settings.on.the.fly...Typica
58340 6c 6c 79 20 74 68 69 73 20 77 69 6c 6c 20 69 6e 63 6c 75 64 65 20 61 20 6d 6f 64 65 6c 2c 20 62 lly.this.will.include.a.model,.b
58360 61 63 6b 65 6e 64 2c 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 20 61 6e 64 20 70 65 72 68 61 ackend,.system.message.and.perha
58380 70 73 0a 73 6f 6d 65 20 74 6f 6f 6c 73 2c 20 62 75 74 20 61 6e 79 20 73 65 74 20 6f 66 20 67 70 ps.some.tools,.but.any.set.of.gp
583a0 74 65 6c 20 6f 70 74 69 6f 6e 73 20 63 61 6e 20 62 65 20 73 65 74 20 74 68 69 73 20 77 61 79 2e tel.options.can.be.set.this.way.
583c0 0a 0a 4e 41 4d 45 20 6d 75 73 74 20 62 65 20 61 20 73 79 6d 62 6f 6c 2e 20 20 4b 45 59 53 20 69 ..NAME.must.be.a.symbol...KEYS.i
583e0 73 20 61 20 70 6c 69 73 74 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20 74 68 65 20 6f s.a.plist.corresponding.to.the.o
58400 70 74 69 6f 6e 73 0a 62 65 69 6e 67 20 73 65 74 2e 20 20 41 6c 6c 20 4b 45 59 53 20 61 72 65 20 ptions.being.set...All.KEYS.are.
58420 6f 70 74 69 6f 6e 61 6c 2e 0a 0a 52 65 63 6f 67 6e 69 7a 65 64 20 6b 65 79 73 3a 0a 0a 44 45 53 optional...Recognized.keys:..DES
58440 43 52 49 50 54 49 4f 4e 20 69 73 20 61 20 64 65 73 63 72 69 70 74 69 6f 6e 20 6f 66 20 74 68 65 CRIPTION.is.a.description.of.the
58460 20 70 72 65 73 65 74 2c 20 75 73 65 64 20 77 68 65 6e 20 73 65 6c 65 63 74 69 6e 67 20 61 0a 70 .preset,.used.when.selecting.a.p
58480 72 65 73 65 74 2e 0a 0a 50 41 52 45 4e 54 53 20 69 73 20 61 20 70 72 65 73 65 74 20 6e 61 6d 65 reset...PARENTS.is.a.preset.name
584a0 20 28 6f 72 20 6c 69 73 74 20 6f 66 20 70 72 65 73 65 74 20 6e 61 6d 65 73 29 20 74 6f 20 61 70 .(or.list.of.preset.names).to.ap
584c0 70 6c 79 20 62 65 66 6f 72 65 20 74 68 69 73 0a 6f 6e 65 2e 0a 0a 50 52 45 20 61 6e 64 20 50 4f ply.before.this.one...PRE.and.PO
584e0 53 54 20 61 72 65 20 66 75 6e 63 74 69 6f 6e 73 20 74 6f 20 72 75 6e 20 62 65 66 6f 72 65 20 61 ST.are.functions.to.run.before.a
58500 6e 64 20 61 66 74 65 72 20 74 68 65 20 70 72 65 73 65 74 20 69 73 0a 61 70 70 6c 69 65 64 2e 20 nd.after.the.preset.is.applied..
58520 20 54 68 65 79 20 74 61 6b 65 20 6e 6f 20 61 72 67 75 6d 65 6e 74 73 2e 0a 0a 42 41 43 4b 45 4e .They.take.no.arguments...BACKEN
58540 44 20 69 73 20 74 68 65 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 74 6f 20 73 65 74 2c 20 6f D.is.the.gptel-backend.to.set,.o
58560 72 20 69 74 73 20 6e 61 6d 65 20 28 6c 69 6b 65 20 5c 22 43 68 61 74 47 50 54 5c 22 29 2e 0a 0a r.its.name.(like.\"ChatGPT\")...
58580 4d 4f 44 45 4c 20 69 73 20 74 68 65 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 2e 0a 0a 53 59 53 54 45 MODEL.is.the.gptel-model...SYSTE
585a0 4d 20 69 73 20 74 68 65 20 64 69 72 65 63 74 69 76 65 2e 20 49 74 20 63 61 6e 20 62 65 0a 2d 20 M.is.the.directive..It.can.be.-.
585c0 74 68 65 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 20 28 61 20 73 74 72 69 6e 67 29 2c 0a 2d the.system.message.(a.string),.-
585e0 20 61 20 6c 69 73 74 20 6f 66 20 73 74 72 69 6e 67 73 20 28 61 20 63 6f 6e 76 65 72 73 61 74 69 .a.list.of.strings.(a.conversati
58600 6f 6e 20 74 65 6d 70 6c 61 74 65 29 0a 2d 20 6f 72 20 61 20 66 75 6e 63 74 69 6f 6e 20 28 64 79 on.template).-.or.a.function.(dy
58620 6e 61 6d 69 63 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 29 2e 0a 2d 20 49 74 20 63 61 6e 20 namic.system.message)..-.It.can.
58640 61 6c 73 6f 20 62 65 20 61 20 73 79 6d 62 6f 6c 20 6e 61 6d 69 6e 67 20 61 20 64 69 72 65 63 74 also.be.a.symbol.naming.a.direct
58660 69 76 65 20 69 6e 20 60 67 70 74 65 6c 2d 64 69 72 65 63 74 69 76 65 73 27 2e 0a 0a 54 4f 4f 4c ive.in.`gptel-directives'...TOOL
58680 53 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 67 70 74 65 6c 20 74 6f 6f 6c 73 20 6f 72 20 74 6f S.is.a.list.of.gptel.tools.or.to
586a0 6f 6c 20 6e 61 6d 65 73 2c 20 6c 69 6b 65 0a 5c 5c 3d 27 28 5c 22 72 65 61 64 5f 75 72 6c 5c 22 ol.names,.like.\\='(\"read_url\"
586c0 20 5c 22 72 65 61 64 5f 62 75 66 66 65 72 5c 22 20 2e 2e 2e 29 0a 0a 52 65 63 6f 67 6e 69 7a 65 .\"read_buffer\"....)..Recognize
586e0 64 20 6b 65 79 73 20 61 72 65 20 6e 6f 74 20 6c 69 6d 69 74 65 64 20 74 6f 20 74 68 65 20 61 62 d.keys.are.not.limited.to.the.ab
58700 6f 76 65 2e 20 20 41 6e 79 20 6f 74 68 65 72 20 6b 65 79 20 28 6c 69 6b 65 0a 60 3a 66 6f 6f 27 ove...Any.other.key.(like.`:foo'
58720 29 20 63 6f 72 72 65 73 70 6f 6e 64 73 20 74 6f 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 65 69 ).corresponds.to.the.value.of.ei
58740 74 68 65 72 20 60 67 70 74 65 6c 2d 66 6f 6f 27 20 28 70 72 65 66 65 72 72 65 64 29 20 6f 72 0a ther.`gptel-foo'.(preferred).or.
58760 60 67 70 74 65 6c 2d 2d 66 6f 6f 27 2e 0a 2d 20 53 6f 20 54 4f 4f 4c 53 20 63 6f 72 72 65 73 70 `gptel--foo'..-.So.TOOLS.corresp
58780 6f 6e 64 73 20 74 6f 20 60 67 70 74 65 6c 2d 74 6f 6f 6c 73 27 2c 0a 2d 20 43 4f 4e 46 49 52 4d onds.to.`gptel-tools',.-.CONFIRM
587a0 2d 54 4f 4f 4c 2d 43 41 4c 4c 53 20 74 6f 20 60 67 70 74 65 6c 2d 63 6f 6e 66 69 72 6d 2d 74 6f -TOOL-CALLS.to.`gptel-confirm-to
587c0 6f 6c 2d 63 61 6c 6c 73 27 2c 0a 2d 20 54 45 4d 50 45 52 41 54 55 52 45 20 74 6f 20 60 67 70 74 ol-calls',.-.TEMPERATURE.to.`gpt
587e0 65 6c 2d 74 65 6d 70 65 72 61 74 75 72 65 27 20 61 6e 64 20 73 6f 20 6f 6e 2e 0a 53 65 65 20 67 el-temperature'.and.so.on..See.g
58800 70 74 65 6c 27 73 20 63 75 73 74 6f 6d 69 7a 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 73 20 66 6f 72 ptel's.customization.options.for
58820 20 61 6c 6c 20 61 76 61 69 6c 61 62 6c 65 20 73 65 74 74 69 6e 67 73 2e 22 0a 20 20 28 64 65 63 .all.available.settings."...(dec
58840 6c 61 72 65 20 28 69 6e 64 65 6e 74 20 31 29 29 0a 20 20 28 69 66 2d 6c 65 74 2a 20 28 28 70 20 lare.(indent.1))...(if-let*.((p.
58860 28 61 73 73 6f 63 20 6e 61 6d 65 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 70 72 65 73 65 74 73 (assoc.name.gptel--known-presets
58880 29 29 29 0a 20 20 20 20 20 20 28 73 65 74 63 64 72 20 70 20 6b 65 79 73 29 0a 20 20 20 20 28 73 ))).......(setcdr.p.keys).....(s
588a0 65 74 71 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 70 72 65 73 65 74 73 20 20 20 20 20 20 20 20 etq.gptel--known-presets........
588c0 20 20 3b 41 64 64 20 61 74 20 65 6e 64 20 6f 66 20 70 72 65 73 65 74 73 20 66 6f 72 20 6d 65 6e ..;Add.at.end.of.presets.for.men
588e0 75 20 6f 72 64 65 72 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 28 6e 63 6f 6e 63 20 67 70 74 65 u.ordering...........(nconc.gpte
58900 6c 2d 2d 6b 6e 6f 77 6e 2d 70 72 65 73 65 74 73 20 28 6c 69 73 74 20 28 63 6f 6e 73 20 6e 61 6d l--known-presets.(list.(cons.nam
58920 65 20 6b 65 79 73 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 67 65 74 2d 70 e.keys))))))..(defun.gptel-get-p
58940 72 65 73 65 74 20 28 6e 61 6d 65 29 0a 20 20 22 47 65 74 20 74 68 65 20 67 70 74 65 6c 20 70 72 reset.(name)..."Get.the.gptel.pr
58960 65 73 65 74 20 73 70 65 63 20 77 69 74 68 20 4e 41 4d 45 2e 22 0a 20 20 28 61 6c 69 73 74 2d 67 eset.spec.with.NAME."...(alist-g
58980 65 74 20 6e 61 6d 65 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 70 72 65 73 65 74 73 20 6e 69 6c et.name.gptel--known-presets.nil
589a0 20 6e 69 6c 20 23 27 65 71 75 61 6c 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 73 61 .nil.#'equal))..(defun.gptel--sa
589c0 76 65 2d 70 72 65 73 65 74 20 28 6e 61 6d 65 20 26 6f 70 74 69 6f 6e 61 6c 20 64 65 73 63 72 69 ve-preset.(name.&optional.descri
589e0 70 74 69 6f 6e 29 0a 20 20 22 53 61 76 65 20 67 70 74 65 6c 27 73 20 63 75 72 72 65 6e 74 20 73 ption)..."Save.gptel's.current.s
58a00 65 74 74 69 6e 67 73 20 61 73 20 61 20 70 72 65 73 65 74 20 77 69 74 68 20 4e 41 4d 45 2e 0a 0a ettings.as.a.preset.with.NAME...
58a20 4e 41 4d 45 20 6d 75 73 74 20 62 65 20 61 20 73 79 6d 62 6f 6c 2e 20 20 44 45 53 43 52 49 50 54 NAME.must.be.a.symbol...DESCRIPT
58a40 49 4f 4e 20 69 73 20 61 64 64 65 64 20 69 66 20 70 72 6f 76 69 64 65 64 2e 20 20 49 6e 20 61 64 ION.is.added.if.provided...In.ad
58a60 64 69 74 69 6f 6e 0a 74 6f 20 72 65 67 69 73 74 65 72 69 6e 67 20 74 68 65 20 70 72 65 73 65 74 dition.to.registering.the.preset
58a80 2c 20 65 6c 69 73 70 20 63 6f 64 65 20 74 6f 20 64 6f 20 74 68 65 20 73 61 6d 65 20 69 73 20 63 ,.elisp.code.to.do.the.same.is.c
58aa0 6f 70 69 65 64 20 74 6f 20 74 68 65 0a 6b 69 6c 6c 2d 72 69 6e 67 2e 22 0a 20 20 28 69 6e 74 65 opied.to.the.kill-ring."...(inte
58ac0 72 61 63 74 69 76 65 0a 20 20 20 28 6c 69 73 74 20 28 69 6e 74 65 72 6e 20 28 63 6f 6d 70 6c 65 ractive....(list.(intern.(comple
58ae0 74 69 6e 67 2d 72 65 61 64 20 22 53 61 76 65 20 67 70 74 65 6c 20 73 65 74 74 69 6e 67 73 20 74 ting-read."Save.gptel.settings.t
58b00 6f 20 28 65 78 69 73 74 69 6e 67 20 6f 72 20 6e 65 77 29 20 70 72 65 73 65 74 3a 20 22 0a 20 20 o.(existing.or.new).preset:."...
58b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
58b40 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 70 72 65 73 65 74 73 29 29 0a 20 20 20 20 20 20 20 20 20 gptel--known-presets))..........
58b60 28 72 65 61 64 2d 73 74 72 69 6e 67 20 22 44 65 73 63 72 69 70 74 69 6f 6e 20 28 6f 70 74 69 6f (read-string."Description.(optio
58b80 6e 61 6c 29 3a 20 22 29 29 29 0a 20 20 28 6c 65 74 20 28 28 70 72 65 73 65 74 2d 63 6f 64 65 0a nal):.")))...(let.((preset-code.
58ba0 20 20 20 20 20 20 20 20 20 60 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 70 72 65 73 65 74 20 27 2c 6e .........`(gptel-make-preset.',n
58bc0 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 2c 28 77 68 ame............:description.,(wh
58be0 65 6e 20 28 61 6e 64 20 64 65 73 63 72 69 70 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 en.(and.description.............
58c00 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 73 74 72 69 6e 67 ....................(not.(string
58c20 2d 62 6c 61 6e 6b 2d 70 20 64 65 73 63 72 69 70 74 69 6f 6e 29 29 29 0a 20 20 20 20 20 20 20 20 -blank-p.description))).........
58c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 73 63 72 69 70 74 69 6f 6e 29 0a 20 ..................description)..
58c60 20 20 20 20 20 20 20 20 20 20 3a 62 61 63 6b 65 6e 64 20 2c 28 67 70 74 65 6c 2d 62 61 63 6b 65 ..........:backend.,(gptel-backe
58c80 6e 64 2d 6e 61 6d 65 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 nd-name.gptel-backend)..........
58ca0 20 20 3a 6d 6f 64 65 6c 20 27 2c 67 70 74 65 6c 2d 6d 6f 64 65 6c 0a 20 20 20 20 20 20 20 20 20 ..:model.',gptel-model..........
58cc0 20 20 3a 73 79 73 74 65 6d 20 2c 28 69 66 2d 6c 65 74 2a 20 28 28 64 69 72 65 63 74 69 76 65 20 ..:system.,(if-let*.((directive.
58ce0 28 63 61 72 2d 73 61 66 65 20 28 72 61 73 73 6f 63 20 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d (car-safe.(rassoc.gptel--system-
58d00 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 20 20 20 message.........................
58d20 20 20 20 20 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 ............................gpte
58d40 6c 2d 64 69 72 65 63 74 69 76 65 73 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 l-directives))))................
58d60 20 20 20 20 20 20 20 20 20 20 60 27 2c 64 69 72 65 63 74 69 76 65 0a 20 20 20 20 20 20 20 20 20 ..........`',directive..........
58d80 20 20 20 20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 .............gptel--system-messa
58da0 67 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 3a 74 6f 6f 6c 73 20 27 2c 28 6d 61 70 63 61 72 20 ge)............:tools.',(mapcar.
58dc0 23 27 67 70 74 65 6c 2d 74 6f 6f 6c 2d 6e 61 6d 65 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 29 0a 20 #'gptel-tool-name.gptel-tools)..
58de0 20 20 20 20 20 20 20 20 20 20 3a 73 74 72 65 61 6d 20 2c 67 70 74 65 6c 2d 73 74 72 65 61 6d 0a ..........:stream.,gptel-stream.
58e00 20 20 20 20 20 20 20 20 20 20 20 3a 74 65 6d 70 65 72 61 74 75 72 65 20 2c 67 70 74 65 6c 2d 74 ...........:temperature.,gptel-t
58e20 65 6d 70 65 72 61 74 75 72 65 0a 20 20 20 20 20 20 20 20 20 20 20 3a 6d 61 78 2d 74 6f 6b 65 6e emperature............:max-token
58e40 73 20 2c 67 70 74 65 6c 2d 6d 61 78 2d 74 6f 6b 65 6e 73 0a 20 20 20 20 20 20 20 20 20 20 20 3a s.,gptel-max-tokens............:
58e60 75 73 65 2d 63 6f 6e 74 65 78 74 20 27 2c 67 70 74 65 6c 2d 75 73 65 2d 63 6f 6e 74 65 78 74 0a use-context.',gptel-use-context.
58e80 20 20 20 20 20 20 20 20 20 20 20 3a 74 72 61 63 6b 2d 6d 65 64 69 61 20 2c 67 70 74 65 6c 2d 74 ...........:track-media.,gptel-t
58ea0 72 61 63 6b 2d 6d 65 64 69 61 0a 20 20 20 20 20 20 20 20 20 20 20 3a 69 6e 63 6c 75 64 65 2d 72 rack-media............:include-r
58ec0 65 61 73 6f 6e 69 6e 67 20 2c 28 6c 65 74 20 28 28 72 65 61 73 6f 6e 69 6e 67 20 67 70 74 65 6c easoning.,(let.((reasoning.gptel
58ee0 2d 69 6e 63 6c 75 64 65 2d 72 65 61 73 6f 6e 69 6e 67 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 -include-reasoning))............
58f00 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 66 20 28 65 71 20 ........................(if.(eq.
58f20 72 65 61 73 6f 6e 69 6e 67 20 27 69 67 6e 6f 72 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 reasoning.'ignore)..............
58f40 20 20 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 27 69 67 6e 6f ..........................''igno
58f60 72 65 20 72 65 61 73 6f 6e 69 6e 67 29 29 29 29 29 0a 20 20 20 20 28 6b 69 6c 6c 2d 6e 65 77 20 re.reasoning))))).....(kill-new.
58f80 28 70 70 2d 74 6f 2d 73 74 72 69 6e 67 20 70 72 65 73 65 74 2d 63 6f 64 65 29 29 0a 20 20 20 20 (pp-to-string.preset-code)).....
58fa0 28 65 76 61 6c 20 70 72 65 73 65 74 2d 63 6f 64 65 29 0a 20 20 20 20 28 6d 65 73 73 61 67 65 20 (eval.preset-code).....(message.
58fc0 22 50 72 65 73 65 74 20 25 73 20 73 61 76 65 64 2e 20 28 4c 69 73 70 20 65 78 70 72 65 73 73 69 "Preset.%s.saved..(Lisp.expressi
58fe0 6f 6e 20 66 6f 72 20 70 72 65 73 65 74 20 73 61 76 65 64 20 74 6f 20 6b 69 6c 6c 2d 72 69 6e 67 on.for.preset.saved.to.kill-ring
59000 29 22 0a 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 28 73 79 6d )"..............(propertize.(sym
59020 62 6f 6c 2d 6e 61 6d 65 20 6e 61 6d 65 29 20 27 66 61 63 65 20 27 68 69 67 68 6c 69 67 68 74 29 bol-name.name).'face.'highlight)
59040 29 29 29 0a 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 64 69 72 65 )))..(defvar.gptel--rewrite-dire
59060 63 74 69 76 65 29 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 61 70 70 6c 79 2d 70 72 65 73 65 ctive).(defun.gptel--apply-prese
59080 74 20 28 70 72 65 73 65 74 20 26 6f 70 74 69 6f 6e 61 6c 20 73 65 74 74 65 72 29 0a 20 20 22 41 t.(preset.&optional.setter)..."A
590a0 70 70 6c 79 20 67 70 74 65 6c 20 50 52 45 53 45 54 20 77 69 74 68 20 53 45 54 54 45 52 2e 0a 0a pply.gptel.PRESET.with.SETTER...
590c0 50 52 45 53 45 54 20 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 61 20 70 72 65 73 65 74 2c 20 PRESET.is.the.name.of.a.preset,.
590e0 6f 72 20 61 20 73 70 65 63 20 28 70 6c 69 73 74 29 20 6f 66 20 74 68 65 20 66 6f 72 6d 0a 20 28 or.a.spec.(plist).of.the.form..(
59100 3a 4b 45 59 31 20 56 41 4c 31 20 3a 4b 45 59 32 20 56 41 4c 32 20 2e 2e 2e 29 2e 0a 0a 53 45 54 :KEY1.VAL1.:KEY2.VAL2....)...SET
59120 54 45 52 20 69 73 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 75 73 65 64 20 74 6f 20 73 65 74 20 TER.is.the.function.used.to.set.
59140 74 68 65 20 67 70 74 65 6c 20 6f 70 74 69 6f 6e 73 2e 20 20 49 74 20 6d 75 73 74 20 61 63 63 65 the.gptel.options...It.must.acce
59160 70 74 0a 74 77 6f 20 61 72 67 75 6d 65 6e 74 73 2c 20 74 68 65 20 73 79 6d 62 6f 6c 20 62 65 69 pt.two.arguments,.the.symbol.bei
59180 6e 67 20 73 65 74 20 61 6e 64 20 74 68 65 20 76 61 6c 75 65 20 74 6f 20 73 65 74 20 69 74 20 74 ng.set.and.the.value.to.set.it.t
591a0 6f 2e 20 20 49 74 0a 64 65 66 61 75 6c 74 73 20 74 6f 20 60 73 65 74 27 2c 20 61 6e 64 20 63 61 o...It.defaults.to.`set',.and.ca
591c0 6e 20 62 65 20 73 65 74 20 74 6f 20 61 20 64 69 66 66 65 72 65 6e 74 20 66 75 6e 63 74 69 6f 6e n.be.set.to.a.different.function
591e0 20 74 6f 20 28 66 6f 72 0a 65 78 61 6d 70 6c 65 29 20 61 70 70 6c 79 20 74 68 65 20 70 72 65 73 .to.(for.example).apply.the.pres
59200 65 74 20 62 75 66 66 65 72 2d 6c 6f 63 61 6c 6c 79 2e 22 0a 20 20 28 77 68 65 6e 20 28 6d 65 6d et.buffer-locally."...(when.(mem
59220 71 20 28 74 79 70 65 2d 6f 66 20 70 72 65 73 65 74 29 20 27 28 73 74 72 69 6e 67 20 73 79 6d 62 q.(type-of.preset).'(string.symb
59240 6f 6c 29 29 0a 20 20 20 20 28 6c 65 74 20 28 28 73 70 65 63 20 28 6f 72 20 28 67 70 74 65 6c 2d ol)).....(let.((spec.(or.(gptel-
59260 67 65 74 2d 70 72 65 73 65 74 20 70 72 65 73 65 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 get-preset.preset)..............
59280 20 20 20 20 20 20 20 28 75 73 65 72 2d 65 72 72 6f 72 20 22 67 70 74 65 6c 20 70 72 65 73 65 74 .......(user-error."gptel.preset
592a0 20 5c 22 25 73 5c 22 3a 20 43 61 6e 6e 6f 74 20 66 69 6e 64 20 70 72 65 73 65 74 2e 22 0a 20 20 .\"%s\":.Cannot.find.preset."...
592c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 ..............................pr
592e0 65 73 65 74 29 29 29 29 0a 20 20 20 20 20 20 28 73 65 74 71 20 70 72 65 73 65 74 20 73 70 65 63 eset)))).......(setq.preset.spec
59300 29 29 29 0a 20 20 28 75 6e 6c 65 73 73 20 73 65 74 74 65 72 20 28 73 65 74 71 20 73 65 74 74 65 )))...(unless.setter.(setq.sette
59320 72 20 23 27 73 65 74 29 29 0a 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 66 75 6e 63 20 28 70 r.#'set))...(when-let*.((func.(p
59340 6c 69 73 74 2d 67 65 74 20 70 72 65 73 65 74 20 3a 70 72 65 29 29 29 20 28 66 75 6e 63 61 6c 6c list-get.preset.:pre))).(funcall
59360 20 66 75 6e 63 29 29 0a 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 70 61 72 65 6e 74 73 20 28 .func))...(when-let*.((parents.(
59380 70 6c 69 73 74 2d 67 65 74 20 70 72 65 73 65 74 20 3a 70 61 72 65 6e 74 73 29 29 29 0a 20 20 20 plist-get.preset.:parents)))....
593a0 20 28 6d 61 70 63 20 23 27 67 70 74 65 6c 2d 2d 61 70 70 6c 79 2d 70 72 65 73 65 74 20 28 65 6e .(mapc.#'gptel--apply-preset.(en
593c0 73 75 72 65 2d 6c 69 73 74 20 70 61 72 65 6e 74 73 29 29 29 0a 20 20 28 6d 61 70 2d 64 6f 0a 20 sure-list.parents)))...(map-do..
593e0 20 20 28 6c 61 6d 62 64 61 20 28 6b 65 79 20 76 61 6c 29 0a 20 20 20 20 20 28 70 63 61 73 65 20 ..(lambda.(key.val)......(pcase.
59400 6b 65 79 0a 20 20 20 20 20 20 20 28 28 6f 72 20 3a 70 61 72 65 6e 74 73 20 3a 64 65 73 63 72 69 key........((or.:parents.:descri
59420 70 74 69 6f 6e 20 3a 70 72 65 20 3a 70 6f 73 74 29 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 28 28 ption.:pre.:post).nil)........((
59440 6f 72 20 3a 73 79 73 74 65 6d 20 3a 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 20 3a 72 65 77 72 or.:system.:system-message.:rewr
59460 69 74 65 2d 64 69 72 65 63 74 69 76 65 29 0a 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 73 79 ite-directive).........(let.((sy
59480 6d 20 28 69 66 20 28 65 71 20 6b 65 79 20 3a 72 65 77 72 69 74 65 2d 64 69 72 65 63 74 69 76 65 m.(if.(eq.key.:rewrite-directive
594a0 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 27 67 70 74 65 6c 2d )........................'gptel-
594c0 2d 72 65 77 72 69 74 65 2d 64 69 72 65 63 74 69 76 65 20 27 67 70 74 65 6c 2d 2d 73 79 73 74 65 -rewrite-directive.'gptel--syste
594e0 6d 2d 6d 65 73 73 61 67 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 61 6e 64 20 m-message)))...........(if.(and.
59500 28 73 79 6d 62 6f 6c 70 20 76 61 6c 29 20 28 6e 6f 74 20 28 66 75 6e 63 74 69 6f 6e 70 20 76 61 (symbolp.val).(not.(functionp.va
59520 6c 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 2d 6c 65 74 2a 20 28 28 64 69 l)))...............(if-let*.((di
59540 72 65 63 74 69 76 65 20 28 61 6c 69 73 74 2d 67 65 74 20 76 61 6c 20 67 70 74 65 6c 2d 64 69 72 rective.(alist-get.val.gptel-dir
59560 65 63 74 69 76 65 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 ectives)))...................(fu
59580 6e 63 61 6c 6c 20 73 65 74 74 65 72 20 73 79 6d 20 64 69 72 65 63 74 69 76 65 29 0a 20 20 20 20 ncall.setter.sym.directive).....
595a0 20 20 20 20 20 20 20 20 20 20 20 20 28 75 73 65 72 2d 65 72 72 6f 72 20 22 67 70 74 65 6c 20 70 ............(user-error."gptel.p
595c0 72 65 73 65 74 3a 20 43 61 6e 6e 6f 74 20 66 69 6e 64 20 64 69 72 65 63 74 69 76 65 20 25 73 22 reset:.Cannot.find.directive.%s"
595e0 20 76 61 6c 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 73 65 74 74 .val)).............(funcall.sett
59600 65 72 20 73 79 6d 20 76 61 6c 29 29 29 29 0a 20 20 20 20 20 20 20 28 3a 62 61 63 6b 65 6e 64 0a er.sym.val))))........(:backend.
59620 20 20 20 20 20 20 20 20 28 73 65 74 71 20 76 61 6c 20 28 63 6c 2d 65 74 79 70 65 63 61 73 65 20 ........(setq.val.(cl-etypecase.
59640 76 61 6c 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 62 val.....................(gptel-b
59660 61 63 6b 65 6e 64 20 76 61 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ackend.val).....................
59680 28 73 74 72 69 6e 67 20 28 67 70 74 65 6c 2d 67 65 74 2d 62 61 63 6b 65 6e 64 20 76 61 6c 29 29 (string.(gptel-get-backend.val))
596a0 29 29 0a 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 76 61 6c 0a 20 20 20 20 20 20 20 20 20 )).........(unless.val..........
596c0 20 28 75 73 65 72 2d 65 72 72 6f 72 20 22 67 70 74 65 6c 20 70 72 65 73 65 74 3a 20 43 61 6e 6e .(user-error."gptel.preset:.Cann
596e0 6f 74 20 66 69 6e 64 20 62 61 63 6b 65 6e 64 20 25 73 2e 22 20 76 61 6c 29 29 0a 20 20 20 20 20 ot.find.backend.%s.".val))......
59700 20 20 20 28 66 75 6e 63 61 6c 6c 20 73 65 74 74 65 72 20 27 67 70 74 65 6c 2d 62 61 63 6b 65 6e ...(funcall.setter.'gptel-backen
59720 64 20 76 61 6c 29 29 0a 20 20 20 20 20 20 20 28 3a 74 6f 6f 6c 73 20 20 20 20 20 20 20 20 20 20 d.val))........(:tools..........
59740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 54 45 4d 50 20 43 6f 6e 66 69 72 6d 20 74 68 ................;TEMP.Confirm.th
59760 69 73 20 60 3a 61 70 70 65 6e 64 27 20 63 6f 6e 76 65 6e 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 is.`:append'.convention.........
59780 28 6c 65 74 2a 20 28 28 61 70 70 65 6e 64 20 28 77 68 65 6e 20 28 65 71 20 28 63 61 72 2d 73 61 (let*.((append.(when.(eq.(car-sa
597a0 66 65 20 76 61 6c 29 20 3a 61 70 70 65 6e 64 29 20 28 73 65 74 71 20 76 61 6c 20 28 63 64 72 20 fe.val).:append).(setq.val.(cdr.
597c0 76 61 6c 29 29 20 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 6f 6f 6c 73 0a val)).t))................(tools.
597e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6c 61 74 74 65 6e 2d 6c 69 73 74 0a 20 20 ................(flatten-list...
59800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 74 6f 6f 6c ...............(cl-loop.for.tool
59820 2d 6e 61 6d 65 20 69 6e 20 28 65 6e 73 75 72 65 2d 6c 69 73 74 20 76 61 6c 29 0a 20 20 20 20 20 -name.in.(ensure-list.val)......
59840 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 74 6f 6f 6c 20 3d 20 .....................for.tool.=.
59860 28 63 6c 2d 65 74 79 70 65 63 61 73 65 20 74 6f 6f 6c 2d 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 (cl-etypecase.tool-name.........
59880 20 20 20 20 20 20 20 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 ...............................(
598a0 67 70 74 65 6c 2d 74 6f 6f 6c 20 74 6f 6f 6c 2d 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 20 20 gptel-tool.tool-name)...........
598c0 20 20 20 20 20 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 .............................(st
598e0 72 69 6e 67 20 28 69 67 6e 6f 72 65 2d 65 72 72 6f 72 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 ring.(ignore-errors.............
59900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
59920 20 20 20 20 20 28 67 70 74 65 6c 2d 67 65 74 2d 74 6f 6f 6c 20 74 6f 6f 6c 2d 6e 61 6d 65 29 29 .....(gptel-get-tool.tool-name))
59940 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 64 6f 20 ))...........................do.
59960 28 75 6e 6c 65 73 73 20 74 6f 6f 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (unless.tool....................
59980 20 20 20 20 20 20 20 20 20 20 20 20 28 75 73 65 72 2d 65 72 72 6f 72 20 22 67 70 74 65 6c 20 70 ............(user-error."gptel.p
599a0 72 65 73 65 74 3a 20 43 61 6e 6e 6f 74 20 66 69 6e 64 20 74 6f 6f 6c 20 25 73 2e 22 20 76 61 6c reset:.Cannot.find.tool.%s.".val
599c0 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 63 6f 6c ))...........................col
599e0 6c 65 63 74 20 74 6f 6f 6c 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c lect.tool))))...........(funcall
59a00 20 73 65 74 74 65 72 20 27 67 70 74 65 6c 2d 74 6f 6f 6c 73 20 3b 61 70 70 65 6e 64 20 6d 61 6b .setter.'gptel-tools.;append.mak
59a20 65 73 20 61 20 63 6f 70 79 20 6f 66 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 2c 20 69 6e 74 65 6e 74 es.a.copy.of.gptel-tools,.intent
59a40 69 6f 6e 61 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 61 70 70 ional....................(if.app
59a60 65 6e 64 20 28 64 65 6c 65 74 65 2d 64 75 70 73 20 28 61 70 70 65 6e 64 20 67 70 74 65 6c 2d 74 end.(delete-dups.(append.gptel-t
59a80 6f 6f 6c 73 20 74 6f 6f 6c 73 29 29 20 74 6f 6f 6c 73 29 29 29 29 0a 20 20 20 20 20 20 20 28 28 ools.tools)).tools))))........((
59aa0 61 6e 64 20 28 6c 65 74 20 73 79 6d 20 28 6f 72 20 28 69 6e 74 65 72 6e 2d 73 6f 66 74 0a 20 20 and.(let.sym.(or.(intern-soft...
59ac0 20 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 .........................(concat
59ae0 20 22 67 70 74 65 6c 2d 22 20 28 73 75 62 73 74 72 69 6e 67 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d ."gptel-".(substring.(symbol-nam
59b00 65 20 6b 65 79 29 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 e.key).1))).....................
59b20 20 20 20 20 20 20 28 69 6e 74 65 72 6e 2d 73 6f 66 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ......(intern-soft..............
59b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 22 67 70 74 65 6c 2d 2d 22 20 ..............(concat."gptel--".
59b60 28 73 75 62 73 74 72 69 6e 67 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 6b 65 79 29 20 31 29 29 (substring.(symbol-name.key).1))
59b80 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 75 61 72 64 20 28 61 6e 64 20 73 79 6d )))..............(guard.(and.sym
59ba0 20 28 62 6f 75 6e 64 70 20 73 79 6d 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c .(boundp.sym)))).........(funcal
59bc0 6c 20 73 65 74 74 65 72 20 73 79 6d 20 76 61 6c 29 29 0a 20 20 20 20 20 20 20 28 5f 20 28 64 69 l.setter.sym.val))........(_.(di
59be0 73 70 6c 61 79 2d 77 61 72 6e 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 27 28 67 70 74 65 6c splay-warning............'(gptel
59c00 20 70 72 65 73 65 74 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 67 70 .presets)............(format."gp
59c20 74 65 6c 20 70 72 65 73 65 74 3a 20 73 65 74 74 69 6e 67 20 66 6f 72 20 25 73 20 6e 6f 74 20 66 tel.preset:.setting.for.%s.not.f
59c40 6f 75 6e 64 2c 20 69 67 6e 6f 72 69 6e 67 2e 22 20 6b 65 79 29 29 29 29 29 0a 20 20 20 70 72 65 ound,.ignoring.".key)))))....pre
59c60 73 65 74 29 0a 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 66 75 6e 63 20 28 70 6c 69 73 74 2d set)...(when-let*.((func.(plist-
59c80 67 65 74 20 70 72 65 73 65 74 20 3a 70 6f 73 74 29 29 29 20 28 66 75 6e 63 61 6c 6c 20 66 75 6e get.preset.:post))).(funcall.fun
59ca0 63 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 70 72 65 73 65 74 2d 73 79 6d 73 20 c)))..(defun.gptel--preset-syms.
59cc0 28 70 72 65 73 65 74 29 0a 20 20 22 52 65 74 75 72 6e 20 61 20 6c 69 73 74 20 6f 66 20 67 70 74 (preset)..."Return.a.list.of.gpt
59ce0 65 6c 20 76 61 72 69 61 62 6c 65 73 20 28 73 79 6d 62 6f 6c 73 29 20 73 65 74 20 62 79 20 50 52 el.variables.(symbols).set.by.PR
59d00 45 53 45 54 2e 0a 0a 50 52 45 53 45 54 20 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 61 20 70 ESET...PRESET.is.the.name.of.a.p
59d20 72 65 73 65 74 2c 20 6f 72 20 61 20 73 70 65 63 20 28 70 6c 69 73 74 29 20 6f 66 20 74 68 65 20 reset,.or.a.spec.(plist).of.the.
59d40 66 6f 72 6d 0a 20 28 3a 4b 45 59 31 20 56 41 4c 31 20 3a 4b 45 59 32 20 56 41 4c 32 20 2e 2e 2e form..(:KEY1.VAL1.:KEY2.VAL2....
59d60 29 2e 22 0a 20 20 28 77 68 65 6e 20 28 6d 65 6d 71 20 28 74 79 70 65 2d 6f 66 20 70 72 65 73 65 )."...(when.(memq.(type-of.prese
59d80 74 29 20 27 28 73 74 72 69 6e 67 20 73 79 6d 62 6f 6c 29 29 0a 20 20 20 20 28 6c 65 74 20 28 28 t).'(string.symbol)).....(let.((
59da0 73 70 65 63 20 28 6f 72 20 28 67 70 74 65 6c 2d 67 65 74 2d 70 72 65 73 65 74 20 70 72 65 73 65 spec.(or.(gptel-get-preset.prese
59dc0 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 73 65 72 2d 65 72 72 t).....................(user-err
59de0 6f 72 20 22 67 70 74 65 6c 20 70 72 65 73 65 74 20 5c 22 25 73 5c 22 3a 20 43 61 6e 6e 6f 74 20 or."gptel.preset.\"%s\":.Cannot.
59e00 66 69 6e 64 20 70 72 65 73 65 74 2e 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 find.preset."...................
59e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 65 73 65 74 29 29 29 29 0a 20 20 20 20 20 20 28 ..............preset)))).......(
59e40 73 65 74 71 20 70 72 65 73 65 74 20 73 70 65 63 29 29 29 0a 20 20 28 6c 65 74 2a 20 28 28 69 6e setq.preset.spec)))...(let*.((in
59e60 64 65 78 20 70 72 65 73 65 74 29 0a 20 20 20 20 20 20 20 20 20 73 79 6d 73 20 6b 65 79 20 76 61 dex.preset)..........syms.key.va
59e80 6c 29 0a 20 20 20 20 28 77 68 69 6c 65 20 69 6e 64 65 78 0a 20 20 20 20 20 20 28 73 65 74 71 20 l).....(while.index.......(setq.
59ea0 6b 65 79 20 28 70 6f 70 20 69 6e 64 65 78 29 20 76 61 6c 20 28 70 6f 70 20 69 6e 64 65 78 29 29 key.(pop.index).val.(pop.index))
59ec0 0a 20 20 20 20 20 20 28 70 63 61 73 65 20 6b 65 79 0a 20 20 20 20 20 20 20 20 28 28 6f 72 20 3a .......(pcase.key.........((or.:
59ee0 64 65 73 63 72 69 70 74 69 6f 6e 20 3a 70 72 65 20 3a 70 6f 73 74 29 29 0a 20 20 20 20 20 20 20 description.:pre.:post))........
59f00 20 28 3a 70 61 72 65 6e 74 73 0a 20 20 20 20 20 20 20 20 20 28 6d 61 70 63 20 28 6c 61 6d 62 64 .(:parents..........(mapc.(lambd
59f20 61 20 28 70 61 72 65 6e 74 2d 70 72 65 73 65 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 a.(parent-preset)...............
59f40 20 20 20 28 6e 63 6f 6e 63 20 73 79 6d 73 20 28 67 70 74 65 6c 2d 2d 70 72 65 73 65 74 2d 73 79 ...(nconc.syms.(gptel--preset-sy
59f60 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 20 20 20 20 20 20 ms..............................
59f80 20 28 67 70 74 65 6c 2d 67 65 74 2d 70 72 65 73 65 74 20 70 61 72 65 6e 74 2d 70 72 65 73 65 74 .(gptel-get-preset.parent-preset
59fa0 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6e 73 75 72 65 2d 6c 69 73 74 ))))................(ensure-list
59fc0 20 76 61 6c 29 29 29 0a 20 20 20 20 20 20 20 20 28 3a 73 79 73 74 65 6d 20 28 70 75 73 68 20 27 .val))).........(:system.(push.'
59fe0 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 20 73 79 6d 73 29 29 0a 20 20 20 gptel--system-message.syms))....
5a000 20 20 20 20 20 28 5f 20 28 69 66 2d 6c 65 74 2a 20 28 28 76 61 72 20 28 6f 72 20 28 69 6e 74 65 .....(_.(if-let*.((var.(or.(inte
5a020 72 6e 2d 73 6f 66 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 rn-soft.........................
5a040 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 22 67 70 74 65 6c 2d 22 20 28 73 75 62 73 74 72 69 .......(concat."gptel-".(substri
5a060 6e 67 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 6b 65 79 29 20 31 29 29 29 0a 20 20 20 20 20 20 ng.(symbol-name.key).1))).......
5a080 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 74 65 72 6e 2d ........................(intern-
5a0a0 73 6f 66 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 soft............................
5a0c0 20 20 20 20 28 63 6f 6e 63 61 74 20 22 67 70 74 65 6c 2d 2d 22 20 28 73 75 62 73 74 72 69 6e 67 ....(concat."gptel--".(substring
5a0e0 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 6b 65 79 29 20 31 29 29 29 29 29 29 0a 20 20 20 20 20 .(symbol-name.key).1))))))......
5a100 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 76 61 72 20 73 79 6d 73 29 0a 20 20 20 20 20 20 ..........(push.var.syms).......
5a120 20 20 20 20 20 20 20 28 64 69 73 70 6c 61 79 2d 77 61 72 6e 69 6e 67 0a 20 20 20 20 20 20 20 20 .......(display-warning.........
5a140 20 20 20 20 20 20 27 28 67 70 74 65 6c 20 70 72 65 73 65 74 73 29 0a 20 20 20 20 20 20 20 20 20 ......'(gptel.presets)..........
5a160 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 67 70 74 65 6c 20 70 72 65 73 65 74 20 5c 22 25 73 5c .....(format."gptel.preset.\"%s\
5a180 22 3a 20 73 65 74 74 69 6e 67 20 66 6f 72 20 25 73 20 6e 6f 74 20 66 6f 75 6e 64 2c 20 69 67 6e ":.setting.for.%s.not.found,.ign
5a1a0 6f 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 28 63 oring.".......................(c
5a1c0 61 72 20 70 72 65 73 65 74 29 20 6b 65 79 29 29 29 29 29 29 0a 20 20 20 20 28 63 6c 2d 64 65 6c ar.preset).key)))))).....(cl-del
5a1e0 65 74 65 2d 64 75 70 6c 69 63 61 74 65 73 20 73 79 6d 73 29 29 29 0a 0a 3b 3b 20 54 68 69 73 20 ete-duplicates.syms)))..;;.This.
5a200 69 73 20 69 64 65 6e 74 69 63 61 6c 20 74 6f 20 60 63 6c 2d 70 72 6f 67 76 27 2c 20 6f 6e 6c 79 is.identical.to.`cl-progv',.only
5a220 20 77 65 20 6c 65 74 2d 62 69 6e 64 20 73 79 6d 62 6f 6c 73 20 53 59 4d 20 66 72 6f 6d 20 74 68 .we.let-bind.symbols.SYM.from.th
5a240 65 20 70 72 65 73 65 74 0a 3b 3b 20 74 6f 20 74 68 65 69 72 20 63 75 72 72 65 6e 74 20 76 61 6c e.preset.;;.to.their.current.val
5a260 75 65 73 20 69 6e 73 74 65 61 64 20 6f 66 20 65 76 61 6c 75 61 74 69 6e 67 20 74 68 65 20 76 61 ues.instead.of.evaluating.the.va
5a280 6c 75 65 73 20 65 78 70 6c 69 63 69 74 6c 79 2e 20 28 23 31 30 30 35 29 0a 28 64 65 66 6d 61 63 lues.explicitly..(#1005).(defmac
5a2a0 72 6f 20 67 70 74 65 6c 2d 77 69 74 68 2d 70 72 65 73 65 74 20 28 6e 61 6d 65 20 26 72 65 73 74 ro.gptel-with-preset.(name.&rest
5a2c0 20 62 6f 64 79 29 0a 20 20 22 52 75 6e 20 42 4f 44 59 20 77 69 74 68 20 67 70 74 65 6c 20 70 72 .body)..."Run.BODY.with.gptel.pr
5a2e0 65 73 65 74 20 4e 41 4d 45 20 61 70 70 6c 69 65 64 2e 0a 0a 54 68 69 73 20 6d 61 63 72 6f 20 63 eset.NAME.applied...This.macro.c
5a300 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 63 72 65 61 74 65 20 60 67 70 74 65 6c 2d 72 65 71 75 an.be.used.to.create.`gptel-requ
5a320 65 73 74 27 20 63 6f 6d 6d 61 6e 64 20 77 69 74 68 20 73 65 74 74 69 6e 67 73 0a 66 72 6f 6d 20 est'.command.with.settings.from.
5a340 61 20 67 70 74 65 6c 20 70 72 65 73 65 74 20 61 70 70 6c 69 65 64 2e 0a 0a 4e 41 4d 45 20 69 73 a.gptel.preset.applied...NAME.is
5a360 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 61 20 70 72 65 73 65 74 2c 20 6f 72 20 61 20 73 70 65 63 .the.name.of.a.preset,.or.a.spec
5a380 20 28 70 6c 69 73 74 29 20 6f 66 20 74 68 65 20 66 6f 72 6d 0a 20 28 3a 4b 45 59 31 20 56 41 4c .(plist).of.the.form..(:KEY1.VAL
5a3a0 31 20 3a 4b 45 59 32 20 56 41 4c 32 20 2e 2e 2e 29 2e 20 20 49 74 20 6d 75 73 74 20 62 65 20 71 1.:KEY2.VAL2....)...It.must.be.q
5a3c0 75 6f 74 65 64 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 uoted."...(declare.(indent.1))..
5a3e0 20 28 6c 65 74 20 28 28 73 79 6d 73 20 28 6d 61 6b 65 2d 73 79 6d 62 6f 6c 20 22 73 79 6d 73 22 .(let.((syms.(make-symbol."syms"
5a400 29 29 0a 20 20 20 20 20 20 20 20 28 62 69 6e 64 73 20 28 6d 61 6b 65 2d 73 79 6d 62 6f 6c 20 22 )).........(binds.(make-symbol."
5a420 62 69 6e 64 73 22 29 29 0a 20 20 20 20 20 20 20 20 28 62 6f 64 79 66 75 6e 20 28 6d 61 6b 65 2d binds")).........(bodyfun.(make-
5a440 73 79 6d 62 6f 6c 20 22 62 6f 64 79 22 29 29 29 0a 20 20 20 20 60 28 6c 65 74 2a 20 28 28 2c 73 symbol."body"))).....`(let*.((,s
5a460 79 6d 73 20 28 67 70 74 65 6c 2d 2d 70 72 65 73 65 74 2d 73 79 6d 73 20 2c 6e 61 6d 65 29 29 0a yms.(gptel--preset-syms.,name)).
5a480 20 20 20 20 20 20 20 20 20 20 20 20 28 2c 62 6f 64 79 66 75 6e 20 28 6c 61 6d 62 64 61 20 28 29 ............(,bodyfun.(lambda.()
5a4a0 20 28 67 70 74 65 6c 2d 2d 61 70 70 6c 79 2d 70 72 65 73 65 74 20 2c 6e 61 6d 65 29 20 2c 40 62 .(gptel--apply-preset.,name).,@b
5a4c0 6f 64 79 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 2c 62 69 6e 64 73 20 6e 69 6c 29 29 0a ody)).............(,binds.nil)).
5a4e0 20 20 20 20 20 20 20 28 77 68 69 6c 65 20 2c 73 79 6d 73 20 28 70 75 73 68 20 28 6c 69 73 74 20 .......(while.,syms.(push.(list.
5a500 28 63 61 72 20 2c 73 79 6d 73 29 20 28 70 6f 70 20 2c 73 79 6d 73 29 29 20 2c 62 69 6e 64 73 29 (car.,syms).(pop.,syms)).,binds)
5a520 29 0a 20 20 20 20 20 20 20 28 65 76 61 6c 20 28 6c 69 73 74 20 27 6c 65 74 20 28 6e 72 65 76 65 )........(eval.(list.'let.(nreve
5a540 72 73 65 20 2c 62 69 6e 64 73 29 20 28 6c 69 73 74 20 27 66 75 6e 63 61 6c 6c 20 28 6c 69 73 74 rse.,binds).(list.'funcall.(list
5a560 20 27 71 75 6f 74 65 20 2c 62 6f 64 79 66 75 6e 29 29 29 29 29 29 29 0a 0a 3b 3b 3b 3b 20 50 72 .'quote.,bodyfun)))))))..;;;;.Pr
5a580 65 73 65 74 73 20 69 6e 2d 62 75 66 66 65 72 20 55 49 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d esets.in-buffer.UI.(defun.gptel-
5a5a0 2d 74 72 61 6e 73 66 6f 72 6d 2d 61 70 70 6c 79 2d 70 72 65 73 65 74 20 28 5f 66 73 6d 29 0a 20 -transform-apply-preset.(_fsm)..
5a5c0 20 22 41 70 70 6c 79 20 61 20 67 70 74 65 6c 20 70 72 65 73 65 74 20 74 6f 20 74 68 65 20 62 75 ."Apply.a.gptel.preset.to.the.bu
5a5e0 66 66 65 72 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 74 68 65 20 70 72 6f 6d 70 74 2e 0a 0a 49 ffer.depending.on.the.prompt...I
5a600 66 20 74 68 65 20 6c 61 73 74 20 75 73 65 72 20 70 72 6f 6d 70 74 20 69 6e 63 6c 75 64 65 73 20 f.the.last.user.prompt.includes.
5a620 40 66 6f 6f 2c 20 74 68 65 20 70 72 65 73 65 74 20 66 6f 6f 20 69 73 20 61 70 70 6c 69 65 64 2e @foo,.the.preset.foo.is.applied.
5a640 0a 42 65 66 6f 72 65 20 61 70 70 6c 79 69 6e 67 20 74 68 65 20 70 72 65 73 65 74 2c 20 5c 22 40 .Before.applying.the.preset,.\"@
5a660 66 6f 6f 5c 22 20 69 73 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d 20 74 68 65 20 70 72 6f 6d 70 74 foo\".is.removed.from.the.prompt
5a680 20 61 6e 64 0a 70 6f 69 6e 74 20 69 73 20 70 6c 61 63 65 64 20 61 74 20 69 74 73 20 70 6f 73 69 .and.point.is.placed.at.its.posi
5a6a0 74 69 6f 6e 2e 22 0a 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 70 72 65 73 tion."...(when.gptel--known-pres
5a6c0 65 74 73 0a 20 20 20 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 ets.....(text-property-search-ba
5a6e0 63 6b 77 61 72 64 20 27 67 70 74 65 6c 20 6e 69 6c 20 74 29 0a 20 20 20 20 28 77 68 69 6c 65 20 ckward.'gptel.nil.t).....(while.
5a700 28 72 65 2d 73 65 61 72 63 68 2d 66 6f 72 77 61 72 64 20 22 40 5c 5c 28 5b 5e 5b 3a 62 6c 61 6e (re-search-forward."@\\([^[:blan
5a720 6b 3a 5d 5d 2b 5c 5c 29 5c 5c 5f 3e 22 20 6e 69 6c 20 74 29 0a 20 20 20 20 20 20 3b 3b 20 54 68 k:]]+\\)\\_>".nil.t).......;;.Th
5a740 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 63 6f 6e 76 6f 6c 75 74 65 64 20 63 68 65 63 6b 20 69 73 20 e.following.convoluted.check.is.
5a760 62 65 63 61 75 73 65 20 72 65 2d 73 65 61 72 63 68 20 69 73 20 6d 75 63 68 20 66 61 73 74 65 72 because.re-search.is.much.faster
5a780 20 69 66 0a 20 20 20 20 20 20 3b 3b 20 74 68 65 20 73 65 61 72 63 68 20 70 61 74 74 65 72 6e 20 .if.......;;.the.search.pattern.
5a7a0 62 65 67 69 6e 73 20 77 69 74 68 20 61 20 6e 6f 6e 2d 77 68 69 74 65 73 70 61 63 65 20 63 68 61 begins.with.a.non-whitespace.cha
5a7c0 72 2e 0a 20 20 20 20 20 20 28 77 68 65 6e 20 28 6f 72 20 28 3d 20 28 6d 61 74 63 68 2d 62 65 67 r........(when.(or.(=.(match-beg
5a7e0 69 6e 6e 69 6e 67 20 30 29 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 0a 20 20 20 20 20 20 20 20 20 inning.0).(point-min))..........
5a800 20 20 20 20 20 20 20 28 6d 65 6d 71 20 28 63 68 61 72 2d 73 79 6e 74 61 78 20 28 63 68 61 72 2d .......(memq.(char-syntax.(char-
5a820 62 65 66 6f 72 65 20 28 6d 61 74 63 68 2d 62 65 67 69 6e 6e 69 6e 67 20 30 29 29 29 20 27 28 33 before.(match-beginning.0))).'(3
5a840 32 20 36 32 29 29 29 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 6e 61 6d 2.62))).........(when-let*.((nam
5a860 65 20 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 20 31 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 e.(match-string.1)).............
5a880 20 20 20 20 20 20 20 20 28 70 72 65 73 65 74 20 28 6f 72 20 28 67 70 74 65 6c 2d 67 65 74 2d 70 ........(preset.(or.(gptel-get-p
5a8a0 72 65 73 65 74 20 28 69 6e 74 65 72 6e 2d 73 6f 66 74 20 6e 61 6d 65 29 29 0a 20 20 20 20 20 20 reset.(intern-soft.name)).......
5a8c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c ..........................(gptel
5a8e0 2d 67 65 74 2d 70 72 65 73 65 74 20 6e 61 6d 65 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 -get-preset.name))))...........(
5a900 64 65 6c 65 74 65 2d 72 65 67 69 6f 6e 20 28 6d 61 74 63 68 2d 62 65 67 69 6e 6e 69 6e 67 20 30 delete-region.(match-beginning.0
5a920 29 20 28 6d 61 74 63 68 2d 65 6e 64 20 30 29 29 0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20 50 6f ).(match-end.0))...........;;.Po
5a940 69 6e 74 20 6d 75 73 74 20 62 65 20 61 66 74 65 72 20 40 66 6f 6f 20 77 68 65 6e 20 74 68 65 20 int.must.be.after.@foo.when.the.
5a960 70 72 65 73 65 74 20 69 73 20 61 70 70 6c 69 65 64 20 74 6f 20 61 6c 6c 6f 77 20 66 6f 72 0a 20 preset.is.applied.to.allow.for..
5a980 20 20 20 20 20 20 20 20 20 3b 3b 20 6d 6f 72 65 20 61 64 76 61 6e 63 65 64 20 74 72 61 6e 73 66 .........;;.more.advanced.transf
5a9a0 6f 72 6d 61 74 69 6f 6e 73 2e 0a 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 61 70 70 ormations............(gptel--app
5a9c0 6c 79 2d 70 72 65 73 65 74 20 70 72 65 73 65 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ly-preset.preset................
5a9e0 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 73 79 6d 20 76 61 6c ................(lambda.(sym.val
5aa00 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 )...............................
5aa20 20 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 ...(set.(make-local-variable.sym
5aa40 29 20 76 61 6c 29 29 29 29 29 29 29 29 0a 0a 3b 3b 20 3b 3b 20 41 6c 74 65 72 6e 61 74 69 76 65 ).val))))))))..;;.;;.Alternative
5aa60 20 61 70 70 72 6f 61 63 68 20 77 69 74 68 20 73 74 72 69 6e 67 20 73 65 61 72 63 68 0a 3b 3b 20 .approach.with.string.search.;;.
5aa80 28 73 65 61 72 63 68 2d 66 6f 72 77 61 72 64 20 22 40 22 20 6e 69 6c 20 74 29 0a 3b 3b 20 28 69 (search-forward."@".nil.t).;;.(i
5aaa0 66 20 28 61 6e 64 20 28 6d 65 6d 71 20 28 63 68 61 72 2d 73 79 6e 74 61 78 20 28 63 68 61 72 2d f.(and.(memq.(char-syntax.(char-
5aac0 62 65 66 6f 72 65 20 28 31 2d 20 28 70 6f 69 6e 74 29 29 29 29 20 27 28 33 32 20 36 32 29 29 0a before.(1-.(point)))).'(32.62)).
5aae0 3b 3b 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 5b 5e 5b 3a ;;..........(looking-at."\\([^[:
5ab00 62 6c 61 6e 6b 3a 5d 5d 2b 3f 5c 5c 29 5b 5b 3a 70 75 6e 63 74 3a 5d 5d 3f 5c 5c 73 2d 2b 22 29 blank:]]+?\\)[[:punct:]]?\\s-+")
5ab20 29 0a 3b 3b 20 20 20 20 20 64 6f 2d 73 74 75 66 66 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c ).;;.....do-stuff)..(defun.gptel
5ab40 2d 2d 66 6f 6e 74 69 66 79 2d 70 72 65 73 65 74 2d 6b 65 79 77 6f 72 64 20 28 65 6e 64 29 0a 20 --fontify-preset-keyword.(end)..
5ab60 20 22 46 6f 6e 74 2d 6c 6f 63 6b 20 66 75 6e 63 74 69 6f 6e 20 66 6f 72 20 70 72 65 73 65 74 20 ."Font-lock.function.for.preset.
5ab80 69 6e 64 69 63 61 74 6f 72 73 20 69 6e 20 63 68 61 74 20 62 75 66 66 65 72 73 2e 0a 0a 52 65 74 indicators.in.chat.buffers...Ret
5aba0 75 72 6e 20 70 72 65 73 65 74 20 66 6f 6e 74 69 66 69 63 61 74 69 6f 6e 20 69 6e 66 6f 20 66 6f urn.preset.fontification.info.fo
5abc0 72 20 74 65 78 74 20 75 70 20 74 6f 20 45 4e 44 2e 22 0a 20 20 28 61 6e 64 20 28 72 65 2d 73 65 r.text.up.to.END."...(and.(re-se
5abe0 61 72 63 68 2d 66 6f 72 77 61 72 64 20 22 40 5c 5c 28 5b 5e 5b 3a 62 6c 61 6e 6b 3a 5d 5d 2b 5c arch-forward."@\\([^[:blank:]]+\
5ac00 5c 29 5c 5c 5f 3e 22 20 65 6e 64 20 74 29 0a 20 20 20 20 20 20 20 28 6f 72 20 28 3d 20 28 6d 61 \)\\_>".end.t)........(or.(=.(ma
5ac20 74 63 68 2d 62 65 67 69 6e 6e 69 6e 67 20 30 29 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 0a 20 20 tch-beginning.0).(point-min))...
5ac40 20 20 20 20 20 20 20 20 20 28 6d 65 6d 71 20 28 63 68 61 72 2d 73 79 6e 74 61 78 20 28 63 68 61 .........(memq.(char-syntax.(cha
5ac60 72 2d 62 65 66 6f 72 65 20 28 6d 61 74 63 68 2d 62 65 67 69 6e 6e 69 6e 67 20 30 29 29 29 20 27 r-before.(match-beginning.0))).'
5ac80 28 33 32 20 36 32 29 29 29 0a 20 20 20 20 20 20 20 28 6e 6f 74 20 28 70 6c 69 73 74 2d 67 65 74 (32.62)))........(not.(plist-get
5aca0 20 28 74 65 78 74 2d 70 72 6f 70 65 72 74 69 65 73 2d 61 74 20 28 6d 61 74 63 68 2d 62 65 67 69 .(text-properties-at.(match-begi
5acc0 6e 6e 69 6e 67 20 31 29 29 20 27 67 70 74 65 6c 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 nning.1)).'gptel))))..(defun.gpt
5ace0 65 6c 2d 70 72 65 73 65 74 2d 63 61 70 66 20 28 29 0a 20 20 22 43 6f 6d 70 6c 65 74 69 6f 6e 20 el-preset-capf.()..."Completion.
5ad00 61 74 20 70 6f 69 6e 74 20 66 6f 72 20 67 70 74 65 6c 20 70 72 65 73 65 74 73 20 69 6e 20 60 67 at.point.for.gptel.presets.in.`g
5ad20 70 74 65 6c 2d 6d 6f 64 65 27 2e 0a 0a 41 64 64 20 74 68 69 73 20 74 6f 20 60 63 6f 6d 70 6c 65 ptel-mode'...Add.this.to.`comple
5ad40 74 69 6f 6e 2d 61 74 2d 70 6f 69 6e 74 2d 66 75 6e 63 74 69 6f 6e 73 27 2e 22 0a 20 20 28 61 6e tion-at-point-functions'."...(an
5ad60 64 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 70 72 65 73 65 74 73 0a 20 20 20 20 20 20 20 28 73 d.gptel--known-presets........(s
5ad80 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 6e 75 ave-excursion..........(let.((nu
5ada0 6d 20 28 2d 20 28 73 6b 69 70 2d 73 79 6e 74 61 78 2d 62 61 63 6b 77 61 72 64 20 22 77 5f 22 29 m.(-.(skip-syntax-backward."w_")
5adc0 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 65 71 6c 20 28 63 68 61 72 2d )))............(when.(eql.(char-
5ade0 62 65 66 6f 72 65 29 20 3f 40 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 28 before).?@)..............(list.(
5ae00 70 6f 69 6e 74 29 20 28 2b 20 28 70 6f 69 6e 74 29 20 6e 75 6d 29 0a 20 20 20 20 20 20 20 20 20 point).(+.(point).num)..........
5ae20 20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 70 72 65 73 65 74 73 0a 20 ..........gptel--known-presets..
5ae40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 65 78 63 6c 75 73 69 76 65 20 27 6e 6f ..................:exclusive.'no
5ae60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 61 6e 6e 6f 74 61 74 69 6f 6e 2d ....................:annotation-
5ae80 66 75 6e 63 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 27 28 6c function....................#'(l
5aea0 61 6d 62 64 61 20 28 63 29 20 28 74 68 72 65 61 64 2d 66 69 72 73 74 0a 20 20 20 20 20 20 20 20 ambda.(c).(thread-first.........
5aec0 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 74 65 72 6e 2d 73 6f ......................(intern-so
5aee0 66 74 20 63 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ft.c)...........................
5af00 20 20 20 20 28 61 73 73 71 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 70 72 65 73 65 74 73 29 20 ....(assq.gptel--known-presets).
5af20 28 63 64 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 (cdr)...........................
5af40 20 20 20 20 28 70 6c 69 73 74 2d 67 65 74 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 29 29 29 29 29 ....(plist-get.:description)))))
5af60 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 70 72 65 74 74 69 66 79 2d 70 72 65 ))))..(defun.gptel--prettify-pre
5af80 73 65 74 20 28 29 0a 20 20 22 47 65 74 20 76 69 73 75 61 6c 20 61 6e 64 20 63 6f 6d 70 6c 65 74 set.()..."Get.visual.and.complet
5afa0 69 6f 6e 20 68 65 6c 70 20 77 69 74 68 20 70 72 65 73 65 74 73 20 69 6e 20 67 70 74 65 6c 20 62 ion.help.with.presets.in.gptel.b
5afc0 75 66 66 65 72 73 2e 0a 0a 49 6e 74 65 6e 64 65 64 20 74 6f 20 62 65 20 61 64 64 65 64 20 74 6f uffers...Intended.to.be.added.to
5afe0 20 60 67 70 74 65 6c 2d 6d 6f 64 65 2d 68 6f 6f 6b 27 2e 22 0a 20 20 28 6c 65 74 20 28 28 6b 65 .`gptel-mode-hook'."...(let.((ke
5b000 79 77 6f 72 64 20 27 28 28 67 70 74 65 6c 2d 2d 66 6f 6e 74 69 66 79 2d 70 72 65 73 65 74 2d 6b yword.'((gptel--fontify-preset-k
5b020 65 79 77 6f 72 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 73 75 eyword.....................;;.su
5b040 62 65 78 70 20 30 20 68 65 72 65 20 69 73 20 6e 6f 74 20 72 65 71 75 69 72 65 64 2c 20 77 65 20 bexp.0.here.is.not.required,.we.
5b060 72 65 74 61 69 6e 20 69 74 20 74 6f 20 6d 61 6b 65 20 69 74 0a 20 20 20 20 20 20 20 20 20 20 20 retain.it.to.make.it............
5b080 20 20 20 20 20 20 20 20 20 3b 3b 20 65 61 73 79 20 74 6f 20 73 77 74 69 63 68 20 74 6f 20 6d 6f .........;;.easy.to.swtich.to.mo
5b0a0 72 65 20 63 6f 6d 70 6c 65 78 20 70 61 74 74 65 72 6e 73 20 69 6e 20 74 68 65 20 66 75 74 75 72 re.complex.patterns.in.the.futur
5b0c0 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 30 20 28 77 68 65 6e 2d 6c 65 e.....................0.(when-le
5b0e0 74 2a 20 28 28 63 6f 6d 70 73 20 28 61 6c 6c 2d 63 6f 6d 70 6c 65 74 69 6f 6e 73 20 28 6d 61 74 t*.((comps.(all-completions.(mat
5b100 63 68 2d 73 74 72 69 6e 67 20 31 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ch-string.1)....................
5b120 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 2d 6b 6e .......................gptel--kn
5b140 6f 77 6e 2d 70 72 65 73 65 74 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 own-presets))...................
5b160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 6d 65 6d 62 65 72 20 28 6d 61 74 63 68 2d ................((member.(match-
5b180 73 74 72 69 6e 67 20 31 29 20 63 6f 6d 70 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 string.1).comps)))..............
5b1a0 20 20 20 20 20 20 20 20 20 20 27 28 3a 62 6f 78 20 2d 31 20 3a 69 6e 68 65 72 69 74 20 73 65 63 ..........'(:box.-1.:inherit.sec
5b1c0 6f 6e 64 61 72 79 2d 73 65 6c 65 63 74 69 6f 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ondary-selection))..............
5b1e0 20 20 20 20 20 20 20 70 72 65 70 65 6e 64 29 29 29 29 0a 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 .......prepend)))).....(cond....
5b200 20 20 28 67 70 74 65 6c 2d 6d 6f 64 65 0a 20 20 20 20 20 20 28 66 6f 6e 74 2d 6c 6f 63 6b 2d 61 ..(gptel-mode.......(font-lock-a
5b220 64 64 2d 6b 65 79 77 6f 72 64 73 20 6e 69 6c 20 6b 65 79 77 6f 72 64 20 74 29 0a 20 20 20 20 20 dd-keywords.nil.keyword.t)......
5b240 20 28 61 64 64 2d 68 6f 6f 6b 20 27 63 6f 6d 70 6c 65 74 69 6f 6e 2d 61 74 2d 70 6f 69 6e 74 2d .(add-hook.'completion-at-point-
5b260 66 75 6e 63 74 69 6f 6e 73 20 23 27 67 70 74 65 6c 2d 70 72 65 73 65 74 2d 63 61 70 66 20 6e 69 functions.#'gptel-preset-capf.ni
5b280 6c 20 74 29 29 0a 20 20 20 20 20 28 74 20 28 66 6f 6e 74 2d 6c 6f 63 6b 2d 72 65 6d 6f 76 65 2d l.t))......(t.(font-lock-remove-
5b2a0 6b 65 79 77 6f 72 64 73 20 6e 69 6c 20 6b 65 79 77 6f 72 64 29 0a 20 20 20 20 20 20 20 20 28 72 keywords.nil.keyword).........(r
5b2c0 65 6d 6f 76 65 2d 68 6f 6f 6b 20 27 63 6f 6d 70 6c 65 74 69 6f 6e 2d 61 74 2d 70 6f 69 6e 74 2d emove-hook.'completion-at-point-
5b2e0 66 75 6e 63 74 69 6f 6e 73 20 23 27 67 70 74 65 6c 2d 70 72 65 73 65 74 2d 63 61 70 66 20 74 29 functions.#'gptel-preset-capf.t)
5b300 29 29 29 29 0a 0a 0c 0a 3b 3b 3b 20 52 65 73 70 6f 6e 73 65 20 74 77 65 61 6b 69 6e 67 20 63 6f ))))....;;;.Response.tweaking.co
5b320 6d 6d 61 6e 64 73 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 61 74 74 61 63 68 2d 72 65 73 mmands..(defun.gptel--attach-res
5b340 70 6f 6e 73 65 2d 68 69 73 74 6f 72 79 20 28 68 69 73 74 6f 72 79 20 26 6f 70 74 69 6f 6e 61 6c ponse-history.(history.&optional
5b360 20 62 75 66 29 0a 20 20 22 41 74 74 61 63 68 20 48 49 53 54 4f 52 59 20 74 6f 20 74 68 65 20 6e .buf)..."Attach.HISTORY.to.the.n
5b380 65 78 74 20 67 70 74 65 6c 20 72 65 73 70 6f 6e 73 65 20 69 6e 20 62 75 66 66 65 72 20 42 55 46 ext.gptel.response.in.buffer.BUF
5b3a0 2e 0a 0a 48 49 53 54 4f 52 59 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 73 74 72 69 6e 67 73 20 ...HISTORY.is.a.list.of.strings.
5b3c0 74 79 70 69 63 61 6c 6c 79 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 65 78 74 20 72 65 70 6c 61 63 typically.containing.text.replac
5b3e0 65 64 0a 62 79 20 67 70 74 65 6c 2e 20 20 42 55 46 20 69 73 20 74 68 65 20 63 75 72 72 65 6e 74 ed.by.gptel...BUF.is.the.current
5b400 20 62 75 66 66 65 72 20 69 66 20 6e 6f 74 20 73 70 65 63 69 66 69 65 64 2e 0a 0a 54 68 69 73 20 .buffer.if.not.specified...This.
5b420 69 73 20 75 73 65 64 20 74 6f 20 6d 61 69 6e 74 61 69 6e 20 76 61 72 69 61 6e 74 73 20 6f 66 20 is.used.to.maintain.variants.of.
5b440 70 72 6f 6d 70 74 73 20 6f 72 20 72 65 73 70 6f 6e 73 65 73 20 74 6f 20 64 69 66 66 0a 61 67 61 prompts.or.responses.to.diff.aga
5b460 69 6e 73 74 20 69 66 20 72 65 71 75 69 72 65 64 2e 22 0a 20 20 28 77 69 74 68 2d 63 75 72 72 65 inst.if.required."...(with-curre
5b480 6e 74 2d 62 75 66 66 65 72 20 28 6f 72 20 62 75 66 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 nt-buffer.(or.buf.(current-buffe
5b4a0 72 29 29 0a 20 20 20 20 28 6c 65 74 72 65 63 20 28 28 67 70 74 65 6c 2d 2d 61 74 74 61 63 68 2d r)).....(letrec.((gptel--attach-
5b4c0 61 66 74 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 62 20 65 after...............(lambda.(b.e
5b4e0 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 61 6e 64 20 62 20 65 ).................(when.(and.b.e
5b500 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 64 64 2d 74 65 78 74 2d 70 72 )...................(add-text-pr
5b520 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 62 20 65 20 operties....................b.e.
5b540 60 28 67 70 74 65 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 `(gptel-history.................
5b560 20 20 20 20 20 20 20 20 20 2c 28 61 70 70 65 6e 64 20 28 65 6e 73 75 72 65 2d 6c 69 73 74 20 68 .........,(append.(ensure-list.h
5b580 69 73 74 6f 72 79 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 istory).........................
5b5a0 20 20 20 28 67 65 74 2d 63 68 61 72 2d 70 72 6f 70 65 72 74 79 20 28 31 2d 20 65 29 20 27 67 70 ...(get-char-property.(1-.e).'gp
5b5c0 74 65 6c 2d 68 69 73 74 6f 72 79 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 tel-history))...................
5b5e0 20 20 20 20 20 20 20 66 72 6f 6e 74 2d 73 74 69 63 6b 79 20 28 67 70 74 65 6c 20 67 70 74 65 6c .......front-sticky.(gptel.gptel
5b600 2d 68 69 73 74 6f 72 79 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 -history)))).................(re
5b620 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 73 65 2d 66 move-hook.'gptel-post-response-f
5b640 75 6e 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 unctions........................
5b660 20 20 20 20 20 20 67 70 74 65 6c 2d 2d 61 74 74 61 63 68 2d 61 66 74 65 72 20 27 6c 6f 63 61 6c ......gptel--attach-after.'local
5b680 29 29 29 29 0a 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 )))).......(add-hook.'gptel-post
5b6a0 2d 72 65 73 70 6f 6e 73 65 2d 66 75 6e 63 74 69 6f 6e 73 20 67 70 74 65 6c 2d 2d 61 74 74 61 63 -response-functions.gptel--attac
5b6c0 68 2d 61 66 74 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 69 6c 20 27 6c 6f 63 h-after.................nil.'loc
5b6e0 61 6c 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 65 64 69 66 66 20 28 26 6f 70 al))))..(defun.gptel--ediff.(&op
5b700 74 69 6f 6e 61 6c 20 61 72 67 20 62 6f 75 6e 64 73 2d 66 75 6e 63 29 0a 20 20 22 45 64 69 66 66 tional.arg.bounds-func)..."Ediff
5b720 20 72 65 73 70 6f 6e 73 65 20 61 74 20 70 6f 69 6e 74 20 61 67 61 69 6e 73 74 20 70 72 65 76 69 .response.at.point.against.previ
5b740 6f 75 73 20 67 70 74 65 6c 20 72 65 73 70 6f 6e 73 65 73 2e 0a 0a 49 66 20 70 72 65 66 69 78 20 ous.gptel.responses...If.prefix.
5b760 41 52 47 20 69 73 20 6e 6f 6e 2d 6e 69 6c 2c 20 73 65 6c 65 63 74 20 74 68 65 20 70 72 65 76 69 ARG.is.non-nil,.select.the.previ
5b780 6f 75 73 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 65 64 69 66 66 0a 61 67 61 69 6e 73 74 20 69 6e ous.response.to.ediff.against.in
5b7a0 74 65 72 61 63 74 69 76 65 6c 79 2e 0a 0a 49 66 20 73 70 65 63 69 66 69 65 64 2c 20 75 73 65 20 teractively...If.specified,.use.
5b7c0 42 4f 55 4e 44 53 2d 46 55 4e 43 20 74 6f 20 63 6f 6d 70 75 74 65 20 74 68 65 20 62 6f 75 6e 64 BOUNDS-FUNC.to.compute.the.bound
5b7e0 73 20 6f 66 20 74 68 65 0a 72 65 73 70 6f 6e 73 65 20 61 74 20 70 6f 69 6e 74 2e 20 20 54 68 69 s.of.the.response.at.point...Thi
5b800 73 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 69 6e 63 6c 75 64 65 20 61 64 64 69 74 69 6f s.can.be.used.to.include.additio
5b820 6e 61 6c 0a 63 6f 6e 74 65 78 74 20 66 6f 72 20 74 68 65 20 65 64 69 66 66 20 73 65 73 73 69 6f nal.context.for.the.ediff.sessio
5b840 6e 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 20 22 50 22 29 0a 20 20 28 77 68 65 6e 20 n."...(interactive."P")...(when.
5b860 28 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 0a 20 (gptel--at-response-history-p)..
5b880 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 20 ...(pcase-let*.((`(,beg...,end).
5b8a0 28 66 75 6e 63 61 6c 6c 20 28 6f 72 20 62 6f 75 6e 64 73 2d 66 75 6e 63 20 23 27 67 70 74 65 6c (funcall.(or.bounds-func.#'gptel
5b8c0 2d 2d 67 65 74 2d 72 65 73 70 6f 6e 73 65 2d 62 6f 75 6e 64 73 29 29 29 0a 20 20 20 20 20 20 20 --get-response-bounds)))........
5b8e0 20 20 20 20 20 20 20 20 20 20 28 70 72 65 76 2d 72 65 73 70 6f 6e 73 65 0a 20 20 20 20 20 20 20 ..........(prev-response........
5b900 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 61 72 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ...........(if.arg..............
5b920 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 20 22 43 68 6f 6f 73 .........(completing-read."Choos
5b940 65 20 72 65 73 70 6f 6e 73 65 20 76 61 72 69 61 6e 74 20 74 6f 20 64 69 66 66 20 61 67 61 69 6e e.response.variant.to.diff.again
5b960 73 74 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 st:."...........................
5b980 20 20 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 .............(get-char-property.
5b9a0 28 70 6f 69 6e 74 29 20 27 67 70 74 65 6c 2d 68 69 73 74 6f 72 79 29 0a 20 20 20 20 20 20 20 20 (point).'gptel-history).........
5b9c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e ...............................n
5b9e0 69 6c 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 61 72 2d 73 il.t).....................(car-s
5ba00 61 66 65 20 28 67 65 74 2d 63 68 61 72 2d 70 72 6f 70 65 72 74 79 20 28 70 6f 69 6e 74 29 20 27 afe.(get-char-property.(point).'
5ba20 67 70 74 65 6c 2d 68 69 73 74 6f 72 79 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 gptel-history))))...............
5ba40 20 20 20 28 62 75 66 66 65 72 2d 6d 6f 64 65 20 6d 61 6a 6f 72 2d 6d 6f 64 65 29 0a 20 20 20 20 ...(buffer-mode.major-mode).....
5ba60 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 6e 61 6d 65 20 28 62 75 66 66 65 72 2d 6e 61 .............(bufname.(buffer-na
5ba80 6d 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 60 28 2c 6e 65 77 2d 62 75 me))..................(`(,new-bu
5baa0 66 20 2c 6e 65 77 2d 62 65 67 20 2c 6e 65 77 2d 65 6e 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 f.,new-beg.,new-end)............
5bac0 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 0a 20 20 20 20 .......(with-current-buffer.....
5bae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 65 74 2d 62 75 66 66 65 72 2d 63 72 ..................(get-buffer-cr
5bb00 65 61 74 65 20 28 63 6f 6e 63 61 74 20 62 75 66 6e 61 6d 65 20 22 2d 50 52 45 56 49 4f 55 53 2d eate.(concat.bufname."-PREVIOUS-
5bb20 2a 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 *")).....................(let.((
5bb40 69 6e 68 69 62 69 74 2d 72 65 61 64 2d 6f 6e 6c 79 20 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 inhibit-read-only.t))...........
5bb60 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 20 ............(erase-buffer)......
5bb80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 65 6c 61 79 2d 6d 6f 64 65 2d 68 6f 6f .................(delay-mode-hoo
5bba0 6b 73 20 28 66 75 6e 63 61 6c 6c 20 62 75 66 66 65 72 2d 6d 6f 64 65 29 29 0a 20 20 20 20 20 20 ks.(funcall.buffer-mode)).......
5bbc0 20 20 20 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 64 ................(visual-line-mod
5bbe0 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 28 69 6e 73 65 72 74 e).......................(insert
5bc00 20 70 72 65 76 2d 72 65 73 70 6f 6e 73 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .prev-response).................
5bc20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 0a 20 20 ......(goto-char.(point-min))...
5bc40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 28 63 75 72 72 65 ....................(list.(curre
5bc60 6e 74 2d 62 75 66 66 65 72 29 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28 70 6f 69 6e 74 2d 6d 61 nt-buffer).(point-min).(point-ma
5bc80 78 29 29 29 29 29 29 0a 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 70 72 65 76 2d 72 65 73 70 6f x)))))).......(unless.prev-respo
5bca0 6e 73 65 20 28 75 73 65 72 2d 65 72 72 6f 72 20 22 67 70 74 65 6c 20 72 65 73 70 6f 6e 73 65 20 nse.(user-error."gptel.response.
5bcc0 69 73 20 61 64 64 69 74 69 76 65 3a 20 6e 6f 20 63 68 61 6e 67 65 73 20 74 6f 20 65 64 69 66 66 is.additive:.no.changes.to.ediff
5bce0 22 29 29 0a 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 20 20 20 ")).......(require.'ediff)......
5bd00 20 28 6c 65 74 72 65 63 20 28 28 63 77 63 20 28 63 75 72 72 65 6e 74 2d 77 69 6e 64 6f 77 2d 63 .(letrec.((cwc.(current-window-c
5bd20 6f 6e 66 69 67 75 72 61 74 69 6f 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 onfiguration))................(g
5bd40 70 74 65 6c 2d 2d 65 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 ptel--ediff-restore.............
5bd60 20 20 20 20 28 6c 61 6d 62 64 61 20 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ....(lambda.()..................
5bd80 20 28 77 68 65 6e 20 28 77 69 6e 64 6f 77 2d 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2d 70 20 63 .(when.(window-configuration-p.c
5bda0 77 63 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 2d 77 69 6e wc).....................(set-win
5bdc0 64 6f 77 2d 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 63 77 63 29 29 0a 20 20 20 20 20 20 20 20 dow-configuration.cwc)).........
5bde0 20 20 20 20 20 20 20 20 20 20 28 6b 69 6c 6c 2d 62 75 66 66 65 72 20 28 67 65 74 2d 62 75 66 66 ..........(kill-buffer.(get-buff
5be00 65 72 20 28 63 6f 6e 63 61 74 20 62 75 66 6e 61 6d 65 20 22 2d 50 52 45 56 49 4f 55 53 2d 2a 22 er.(concat.bufname."-PREVIOUS-*"
5be20 29 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 )))...................(kill-buff
5be40 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."
5be60 2d 43 55 52 52 45 4e 54 2d 2a 22 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -CURRENT-*")))..................
5be80 20 28 72 65 6d 6f 76 65 2d 68 6f 6f 6b 20 27 65 64 69 66 66 2d 71 75 69 74 2d 68 6f 6f 6b 20 67 .(remove-hook.'ediff-quit-hook.g
5bea0 70 74 65 6c 2d 2d 65 64 69 66 66 2d 72 65 73 74 6f 72 65 29 29 29 29 0a 20 20 20 20 20 20 20 20 ptel--ediff-restore)))).........
5bec0 28 61 64 64 2d 68 6f 6f 6b 20 27 65 64 69 66 66 2d 71 75 69 74 2d 68 6f 6f 6b 20 67 70 74 65 6c (add-hook.'ediff-quit-hook.gptel
5bee0 2d 2d 65 64 69 66 66 2d 72 65 73 74 6f 72 65 29 0a 20 20 20 20 20 20 20 20 28 61 70 70 6c 79 0a --ediff-restore).........(apply.
5bf00 20 20 20 20 20 20 20 20 20 23 27 65 64 69 66 66 2d 72 65 67 69 6f 6e 73 2d 69 6e 74 65 72 6e 61 .........#'ediff-regions-interna
5bf20 6c 0a 20 20 20 20 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 l..........(get-buffer.(ediff-ma
5bf40 6b 65 2d 63 6c 6f 6e 65 64 2d 62 75 66 66 65 72 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 ke-cloned-buffer.(current-buffer
5bf60 29 20 22 2d 43 55 52 52 45 4e 54 2d 2a 22 29 29 0a 20 20 20 20 20 20 20 20 20 62 65 67 20 65 6e )."-CURRENT-*"))..........beg.en
5bf80 64 20 6e 65 77 2d 62 75 66 20 6e 65 77 2d 62 65 67 20 6e 65 77 2d 65 6e 64 0a 20 20 20 20 20 20 d.new-buf.new-beg.new-end.......
5bfa0 20 20 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 27 65 64 69 66 66 2d 72 65 67 ...nil..........(list.'ediff-reg
5bfc0 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 6e 69 6c 29 0a 20 20 ions-wordwise.'word-wise.nil)...
5bfe0 20 20 20 20 20 20 20 3b 3b 20 28 69 66 20 28 74 72 61 6e 73 69 65 6e 74 2d 61 72 67 2d 76 61 6c .......;;.(if.(transient-arg-val
5c000 75 65 20 22 2d 77 22 20 61 72 67 73 29 0a 20 20 20 20 20 20 20 20 20 3b 3b 20 20 20 20 20 28 6c ue."-w".args)..........;;.....(l
5c020 69 73 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 ist.'ediff-regions-wordwise.'wor
5c040 64 2d 77 69 73 65 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 3b 3b 20 20 20 28 6c 69 73 74 20 d-wise.nil)..........;;...(list.
5c060 27 65 64 69 66 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 'ediff-regions-linewise.nil.nil)
5c080 29 0a 20 20 20 20 20 20 20 20 20 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d )..........)))))..(defun.gptel--
5c0a0 6d 61 72 6b 2d 72 65 73 70 6f 6e 73 65 20 28 29 0a 20 20 22 4d 61 72 6b 20 67 70 74 65 6c 20 72 mark-response.()..."Mark.gptel.r
5c0c0 65 73 70 6f 6e 73 65 20 61 74 20 70 6f 69 6e 74 2c 20 69 66 20 61 6e 79 2e 22 0a 20 20 28 69 6e esponse.at.point,.if.any."...(in
5c0e0 74 65 72 61 63 74 69 76 65 29 0a 20 20 28 75 6e 6c 65 73 73 20 28 67 70 74 65 6c 2d 2d 69 6e 2d teractive)...(unless.(gptel--in-
5c100 72 65 73 70 6f 6e 73 65 2d 70 29 20 28 75 73 65 72 2d 65 72 72 6f 72 20 22 4e 6f 20 67 70 74 65 response-p).(user-error."No.gpte
5c120 6c 20 72 65 73 70 6f 6e 73 65 20 61 74 20 70 6f 69 6e 74 22 29 29 0a 20 20 28 70 63 61 73 65 2d l.response.at.point"))...(pcase-
5c140 6c 65 74 20 28 28 60 28 2c 62 65 67 20 2e 20 2c 65 6e 64 29 20 28 67 70 74 65 6c 2d 2d 67 65 74 let.((`(,beg...,end).(gptel--get
5c160 2d 72 65 73 70 6f 6e 73 65 2d 62 6f 75 6e 64 73 29 29 29 0a 20 20 20 20 28 67 6f 74 6f 2d 63 68 -response-bounds))).....(goto-ch
5c180 61 72 20 62 65 67 29 20 28 70 75 73 68 2d 6d 61 72 6b 29 20 28 67 6f 74 6f 2d 63 68 61 72 20 65 ar.beg).(push-mark).(goto-char.e
5c1a0 6e 64 29 20 28 61 63 74 69 76 61 74 65 2d 6d 61 72 6b 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 nd).(activate-mark)))..(defun.gp
5c1c0 74 65 6c 2d 2d 70 72 65 76 69 6f 75 73 2d 76 61 72 69 61 6e 74 20 28 26 6f 70 74 69 6f 6e 61 6c tel--previous-variant.(&optional
5c1e0 20 61 72 67 29 0a 20 20 22 53 77 69 74 63 68 20 74 6f 20 70 72 65 76 69 6f 75 73 20 67 70 74 65 .arg)..."Switch.to.previous.gpte
5c200 6c 2d 72 65 73 70 6f 6e 73 65 20 61 74 20 74 68 69 73 20 70 6f 69 6e 74 2c 20 69 66 20 69 74 20 l-response.at.this.point,.if.it.
5c220 65 78 69 73 74 73 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 20 22 70 22 29 0a 20 20 28 exists."...(interactive."p")...(
5c240 70 63 61 73 65 2d 6c 65 74 2a 20 28 28 60 28 2c 62 65 67 20 2e 20 2c 65 6e 64 29 20 28 67 70 74 pcase-let*.((`(,beg...,end).(gpt
5c260 65 6c 2d 2d 67 65 74 2d 72 65 73 70 6f 6e 73 65 2d 62 6f 75 6e 64 73 29 29 0a 20 20 20 20 20 20 el--get-response-bounds)).......
5c280 20 20 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 .........(history.(get-char-prop
5c2a0 65 72 74 79 20 28 70 6f 69 6e 74 29 20 27 67 70 74 65 6c 2d 68 69 73 74 6f 72 79 29 29 0a 20 20 erty.(point).'gptel-history))...
5c2c0 20 20 20 20 20 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 .............(alt-response.(car-
5c2e0 73 61 66 65 20 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 safe.history))................(o
5c300 66 66 73 65 74 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 ffset)).....(unless.(and.history
5c320 20 61 6c 74 2d 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 .alt-response).......(user-error
5c340 20 22 4e 6f 20 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 ."No.variant.responses.available
5c360 22 29 29 0a 20 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 ")).....(if.(>.arg.0).........(s
5c380 65 74 71 20 68 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 etq.history.(append.(cdr.history
5c3a0 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 )...............................
5c3c0 28 6c 69 73 74 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 (list.(buffer-substring-no-prope
5c3e0 72 74 69 65 73 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 rties.beg.end)))).......(setq...
5c400 20 20 20 20 20 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 .....alt-response.(car.(last.his
5c420 74 6f 72 79 29 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 tory))........history.(cons.(buf
5c440 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 62 65 67 20 fer-substring-no-properties.beg.
5c460 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 20 28 6e 62 75 74 6c end)......................(nbutl
5c480 61 73 74 20 68 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 ast.history)))).....(add-text-pr
5c4a0 6f 70 65 72 74 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 operties..............0.(length.
5c4c0 61 6c 74 2d 72 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 alt-response)..............`(gpt
5c4e0 65 6c 20 72 65 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 el.response.gptel-history.,histo
5c500 72 79 29 0a 20 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 ry)..............alt-response)..
5c520 20 20 20 28 73 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 ...(setq.offset.(min.(-.(point).
5c540 62 65 67 29 20 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 beg).(1-.(length.alt-response)))
5c560 29 0a 20 20 20 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 ).....(delete-region.beg.end)...
5c580 20 20 28 69 6e 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 ..(insert.alt-response).....(got
5c5a0 6f 2d 63 68 61 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 o-char.(+.beg.offset)).....(puls
5c5c0 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 62 65 67 e-momentary-highlight-region.beg
5c5e0 20 28 2b 20 62 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 .(+.beg.(length.alt-response))))
5c600 29 0a 0a 28 64 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 )..(defun.gptel--next-variant.(&
5c620 6f 70 74 69 6f 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 optional.arg)..."Switch.to.next.
5c640 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
5c660 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")
5c680 0a 20 20 28 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 2d 20 61 ...(gptel--previous-variant.(-.a
5c6a0 72 67 29 29 29 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 rg)))..(provide.'gptel).;;;.gpte
5c6c0 6c 2e 65 6c 20 65 6e 64 73 20 68 65 72 65 0a 0a 3b 3b 20 4c 6f 63 61 6c 20 56 61 72 69 61 62 6c l.el.ends.here..;;.Local.Variabl
5c6e0 65 73 3a 0a 3b 3b 20 62 75 67 2d 72 65 66 65 72 65 6e 63 65 2d 75 72 6c 2d 66 6f 72 6d 61 74 3a es:.;;.bug-reference-url-format:
5c700 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 69 6e 6b 2f 67 70 ."https://github.com/karthink/gp
5c720 74 65 6c 2f 69 73 73 75 65 73 2f 25 73 22 0a 3b 3b 20 45 6e 64 3a 0a 00 00 00 00 00 00 00 00 00 tel/issues/%s".;;.End:..........
5c740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5c760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5c780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5c7a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5c7c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5c7e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5c800 67 70 74 65 6c 2d 30 2e 39 2e 39 2f 67 70 74 65 6c 2d 61 6e 74 68 72 6f 70 69 63 2e 65 6c 00 00 gptel-0.9.9/gptel-anthropic.el..
5c820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5c840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5c860 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
5c880 30 30 37 35 35 33 35 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 0075535.00000000000.014744..0...
5c8a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5c8c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5c8e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5c900 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...................
5c920 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...................
5c940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5c960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5c980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5c9a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5c9c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5c9e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5ca00 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
5ca20 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..-*-
5ca40 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
5ca60 79 72 69 67 68 74 20 28 43 29 20 32 30 32 33 2d 32 30 32 35 20 20 4b 61 72 74 68 69 6b 20 43 68 yright.(C).2023-2025..Karthik.Ch
5ca80 69 6b 6d 61 67 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 ikmagalur..;;.Author:.Karthik.Ch
5caa0 69 6b 6d 61 67 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 ikmagalur.<karthikchikmagalur@gm
5cac0 61 69 6c 2e 63 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 ail.com>..;;.This.program.is.fre
5cae0 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
5cb00 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
5cb20 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
5cb40 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
5cb60 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
5cb80 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.;
5cba0 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
5cbc0 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
5cbe0 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
5cc00 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
5cc20 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.
5cc40 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
5cc60 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
5cc80 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
5cca0 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...;;
5ccc0 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
5cce0 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
5cd00 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...
5cd20 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
5cd40 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:..;
5cd60 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 66 6f 72 20 41 6e 74 ;.This.file.adds.support.for.Ant
5cd80 68 72 6f 70 69 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 hropic's.Messages.API.to.gptel..
5cda0 3b 3b 3b 20 43 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 ;;;.Code:.(require.'cl-generic).
5cdc0 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 65 20 27 6d 61 70 29 (require.'cl-lib).(require.'map)
5cde0 0a 28 72 65 71 75 69 72 65 20 27 67 70 74 65 6c 29 0a 0a 28 64 65 66 76 61 72 20 6a 73 6f 6e 2d .(require.'gptel)..(defvar.json-
5ce00 6f 62 6a 65 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 object-type)..(declare-function.
5ce20 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 2d prop-match-value."text-property-
5ce40 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 2d search").(declare-function.text-
5ce60 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 70 property-search-backward."text-p
5ce80 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 69 roperty-search").(declare-functi
5cea0 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 63 6c 61 72 65 on.json-read."json".()).(declare
5cec0 2d 66 75 6e 63 74 69 6f 6e 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 77 72 61 70 20 22 67 -function.gptel-context--wrap."g
5cee0 70 74 65 6c 2d 63 6f 6e 74 65 78 74 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e ptel-context").(declare-function
5cf00 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 63 6f 6c 6c 65 63 74 2d 6d 65 64 69 61 20 22 67 .gptel-context--collect-media."g
5cf20 70 74 65 6c 2d 63 6f 6e 74 65 78 74 22 29 0a 0a 3b 3b 3b 20 41 6e 74 68 72 6f 70 69 63 20 28 4d ptel-context")..;;;.Anthropic.(M
5cf40 65 73 73 61 67 65 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 essages.API).(cl-defstruct.(gpte
5cf60 6c 2d 61 6e 74 68 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 l-anthropic.(:constructor.gptel-
5cf80 2d 6d 61 6b 65 2d 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 -make-anthropic)................
5cfa0 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)...
5cfc0 20 20 20 20 20 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 69 .............................(:i
5cfe0 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 3b 3b 20 4e 4f 54 45 nclude.gptel-backend)))..;;.NOTE
5d000 20 74 68 65 20 63 72 75 63 69 61 6c 20 64 69 66 66 65 72 65 6e 63 65 20 62 65 74 77 65 65 6e 0a .the.crucial.difference.between.
5d020 3b 3b 20 2d 20 28 70 75 73 68 20 76 61 6c 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a ;;.-.(push.val.(plist-get.info.:
5d040 6b 65 79 29 29 20 61 6e 64 0a 3b 3b 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 28 70 6c 69 73 74 key)).and.;;...(plist-put.(plist
5d060 2d 67 65 74 20 69 6e 66 6f 20 3a 6b 65 79 29 20 28 63 6f 6e 73 20 76 61 6c 20 2e 2e 2e 29 29 0a -get.info.:key).(cons.val....)).
5d080 3b 3b 0a 3b 3b 20 2d 20 28 73 65 74 66 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 6b ;;.;;.-.(setf.(plist-get.info.:k
5d0a0 65 79 29 20 76 61 6c 29 20 61 6e 64 0a 3b 3b 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 ey).val).and.;;...(plist-put.inf
5d0c0 6f 20 3a 6b 65 79 20 76 61 6c 29 0a 3b 3b 0a 3b 3b 20 69 6e 20 74 68 65 20 66 6f 6c 6c 6f 77 69 o.:key.val).;;.;;.in.the.followi
5d0e0 6e 67 20 66 75 6e 63 74 69 6f 6e 2e 20 20 54 68 65 20 66 69 72 73 74 20 76 61 72 69 61 6e 74 20 ng.function...The.first.variant.
5d100 63 6f 6e 73 65 73 20 61 74 20 74 68 65 20 68 65 61 64 20 6f 66 20 69 6e 66 6f 2c 20 74 68 65 0a conses.at.the.head.of.info,.the.
5d120 3b 3b 20 73 65 63 6f 6e 64 20 6f 6e 65 20 61 74 20 74 68 65 20 74 61 69 6c 2e 20 20 54 68 69 73 ;;.second.one.at.the.tail...This
5d140 20 6d 65 61 6e 73 20 6f 6e 6c 79 20 74 68 65 20 73 65 63 6f 6e 64 20 6f 70 74 69 6f 6e 20 69 73 .means.only.the.second.option.is
5d160 20 76 69 61 62 6c 65 20 66 6f 72 0a 3b 3b 20 6d 75 74 61 74 69 6e 67 20 61 20 70 6c 69 73 74 20 .viable.for.;;.mutating.a.plist.
5d180 66 75 6e 63 74 69 6f 6e 20 61 72 67 75 6d 65 6e 74 20 74 68 61 74 27 73 20 70 61 73 73 65 64 20 function.argument.that's.passed.
5d1a0 62 79 20 72 65 66 65 72 65 6e 63 65 2e 0a 3b 3b 20 44 6f 20 4e 4f 54 20 63 68 61 6e 67 65 20 74 by.reference..;;.Do.NOT.change.t
5d1c0 68 65 20 70 6c 69 73 74 2d 70 75 74 20 74 6f 20 70 75 73 68 20 6f 72 20 73 65 74 66 21 0a 0a 3b he.plist-put.to.push.or.setf!..;
5d1e0 3b 20 4e 4f 54 45 3a 20 54 68 65 20 73 74 72 65 61 6d 20 70 61 72 73 65 72 20 6c 6f 6f 6b 73 20 ;.NOTE:.The.stream.parser.looks.
5d200 63 6f 6d 70 6c 69 63 61 74 65 64 20 6f 6e 6c 79 20 62 65 63 61 75 73 65 20 69 74 20 68 61 6e 64 complicated.only.because.it.hand
5d220 6c 65 73 20 73 74 72 65 61 6d 69 6e 67 0a 3b 3b 20 74 6f 6f 6c 20 63 61 6c 6c 73 2c 20 73 74 72 les.streaming.;;.tool.calls,.str
5d240 65 61 6d 69 6e 67 20 22 74 68 69 6e 6b 69 6e 67 22 20 62 6c 6f 63 6b 73 20 61 6e 64 20 74 68 65 eaming."thinking".blocks.and.the
5d260 69 72 20 69 6e 74 65 72 61 63 74 69 6f 6e 73 2e 20 20 53 74 72 65 61 6d 0a 3b 3b 20 70 61 72 73 ir.interactions...Stream.;;.pars
5d280 69 6e 67 20 69 73 20 73 69 6d 70 6c 65 3a 20 69 66 20 79 6f 75 20 61 72 65 20 73 74 75 64 79 69 ing.is.simple:.if.you.are.studyi
5d2a0 6e 67 20 74 68 69 73 20 63 6f 64 65 2c 20 6c 6f 6f 6b 20 69 6e 73 74 65 61 64 20 61 74 20 61 20 ng.this.code,.look.instead.at.a.
5d2c0 63 6f 6d 6d 69 74 0a 3b 3b 20 66 72 6f 6d 20 62 65 66 6f 72 65 20 74 6f 6f 6c 2d 75 73 65 20 73 commit.;;.from.before.tool-use.s
5d2e0 75 70 70 6f 72 74 20 77 61 73 20 61 64 64 65 64 20 74 6f 20 67 70 74 65 6c 2e 0a 28 63 6c 2d 64 upport.was.added.to.gptel..(cl-d
5d300 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 65 61 efmethod.gptel-curl--parse-strea
5d320 6d 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 69 6e m.((_backend.gptel-anthropic).in
5d340 66 6f 29 0a 20 20 22 50 61 72 73 65 20 61 6e 20 41 6e 74 68 72 6f 70 69 63 20 64 61 74 61 20 73 fo)..."Parse.an.Anthropic.data.s
5d360 74 72 65 61 6d 2e 0a 0a 52 65 74 75 72 6e 20 74 68 65 20 74 65 78 74 20 72 65 73 70 6f 6e 73 65 tream...Return.the.text.response
5d380 20 61 63 63 75 6d 75 6c 61 74 65 64 20 73 69 6e 63 65 20 74 68 65 20 6c 61 73 74 20 63 61 6c 6c .accumulated.since.the.last.call
5d3a0 20 74 6f 20 74 68 69 73 0a 66 75 6e 63 74 69 6f 6e 2e 20 20 41 64 64 69 74 69 6f 6e 61 6c 6c 79 .to.this.function...Additionally
5d3c0 2c 20 6d 75 74 61 74 65 20 73 74 61 74 65 20 49 4e 46 4f 20 74 6f 20 61 64 64 20 74 6f 6f 6c 2d ,.mutate.state.INFO.to.add.tool-
5d3e0 75 73 65 0a 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 66 20 74 68 65 20 73 74 72 65 61 6d 20 63 6f use.information.if.the.stream.co
5d400 6e 74 61 69 6e 73 20 69 74 2e 20 20 4e 6f 74 20 6d 79 20 62 65 73 74 20 77 6f 72 6b 2c 20 49 20 ntains.it...Not.my.best.work,.I.
5d420 6b 6e 6f 77 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 63 6f 6e 74 65 6e 74 2d 73 74 72 73 29 0a 20 know."...(let*.((content-strs)..
5d440 20 20 20 20 20 20 20 20 28 70 74 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 28 63 6f 6e 64 69 ........(pt.(point))).....(condi
5d460 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 69 6c 65 20 28 72 65 tion-case.nil.........(while.(re
5d480 2d 73 65 61 72 63 68 2d 66 6f 72 77 61 72 64 20 22 5e 65 76 65 6e 74 3a 20 22 20 6e 69 6c 20 74 -search-forward."^event:.".nil.t
5d4a0 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 70 74 20 28 6d 61 74 63 68 2d 62 65 67 69 )...........(setq.pt.(match-begi
5d4c0 6e 6e 69 6e 67 20 30 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 65 71 75 61 6c 20 28 nning.0))...........(if.(equal.(
5d4e0 6c 69 6e 65 2d 65 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 0a line-end-position).(point-max)).
5d500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 20 22 44 61 74 61 20 62 6c 6f 63 6b ..............(error."Data.block
5d520 20 69 6e 63 6f 6d 70 6c 65 74 65 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 0a 20 .incomplete"))...........(cond..
5d540 20 20 20 20 20 20 20 20 20 20 28 28 6c 6f 6f 6b 69 6e 67 2d 61 74 20 22 63 6f 6e 74 65 6e 74 5f ..........((looking-at."content_
5d560 62 6c 6f 63 6b 5f 64 65 6c 74 61 22 29 20 3b 63 6f 6c 6c 65 63 74 20 69 6e 63 72 65 6d 65 6e 74 block_delta").;collect.increment
5d580 61 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 77 61 72 64 2d 6c 69 6e 65 20 31 29 20 al.............(forward-line.1).
5d5a0 28 66 6f 72 77 61 72 64 2d 63 68 61 72 20 35 29 20 20 3b 74 65 78 74 2c 20 74 6f 6f 6c 20 6f 72 (forward-char.5)..;text,.tool.or
5d5c0 20 74 68 69 6e 6b 69 6e 67 20 62 6c 6f 63 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 .thinking.block.............(whe
5d5e0 6e 2d 6c 65 74 2a 20 28 28 64 65 6c 74 61 20 28 70 6c 69 73 74 2d 67 65 74 20 28 67 70 74 65 6c n-let*.((delta.(plist-get.(gptel
5d600 2d 2d 6a 73 6f 6e 2d 72 65 61 64 29 20 3a 64 65 6c 74 61 29 29 29 0a 20 20 20 20 20 20 20 20 20 --json-read).:delta)))..........
5d620 20 20 20 20 20 28 69 66 2d 6c 65 74 2a 20 28 28 63 6f 6e 74 65 6e 74 20 28 70 6c 69 73 74 2d 67 .....(if-let*.((content.(plist-g
5d640 65 74 20 64 65 6c 74 61 20 3a 74 65 78 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 et.delta.:text))................
5d660 20 20 20 20 20 20 20 20 20 28 28 6e 6f 74 20 28 65 71 20 63 6f 6e 74 65 6e 74 20 3a 6e 75 6c 6c .........((not.(eq.content.:null
5d680 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 63 6f 6e ))))...................(push.con
5d6a0 74 65 6e 74 20 63 6f 6e 74 65 6e 74 2d 73 74 72 73 29 20 3b 63 6f 6c 6c 65 63 74 20 74 65 78 74 tent.content-strs).;collect.text
5d6c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 2d 6c 65 74 2a 20 28 28 70 61 72 74 .................(if-let*.((part
5d6e0 69 61 6c 2d 6a 73 6f 6e 20 28 70 6c 69 73 74 2d 67 65 74 20 64 65 6c 74 61 20 3a 70 61 72 74 69 ial-json.(plist-get.delta.:parti
5d700 61 6c 5f 6a 73 6f 6e 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 al_json))).....................(
5d720 70 6c 69 73 74 2d 70 75 74 20 20 20 20 20 20 20 20 20 20 3b 63 6f 6c 6c 65 63 74 20 70 61 72 74 plist-put..........;collect.part
5d740 69 61 6c 20 74 6f 6f 6c 20 69 6e 70 75 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ial.tool.input..................
5d760 20 20 20 20 69 6e 66 6f 20 3a 70 61 72 74 69 61 6c 5f 6a 73 6f 6e 0a 20 20 20 20 20 20 20 20 20 ....info.:partial_json..........
5d780 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 20 70 61 72 74 69 61 6c 2d 6a 73 6f 6e 20 28 ............(cons.partial-json.(
5d7a0 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 70 61 72 74 69 61 6c 5f 6a 73 6f 6e 29 29 29 0a plist-get.info.:partial_json))).
5d7c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 2d 6c 65 74 2a 20 28 28 74 68 69 ..................(if-let*.((thi
5d7e0 6e 6b 69 6e 67 20 28 70 6c 69 73 74 2d 67 65 74 20 64 65 6c 74 61 20 3a 74 68 69 6e 6b 69 6e 67 nking.(plist-get.delta.:thinking
5d800 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 28 70 6c 69 73 74 ))).......................(plist
5d820 2d 70 75 74 20 69 6e 66 6f 20 3a 72 65 61 73 6f 6e 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 -put.info.:reasoning............
5d840 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 28 70 ......................(concat.(p
5d860 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 72 65 61 73 6f 6e 69 6e 67 29 20 74 68 69 6e 6b 69 list-get.info.:reasoning).thinki
5d880 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 28 69 66 2d 6c 65 74 ng)).....................(if-let
5d8a0 2a 20 28 28 73 69 67 6e 61 74 75 72 65 20 28 70 6c 69 73 74 2d 67 65 74 20 64 65 6c 74 61 20 3a *.((signature.(plist-get.delta.:
5d8c0 73 69 67 6e 61 74 75 72 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 signature)))....................
5d8e0 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 73 69 67 6e 61 74 75 72 65 0a .....(plist-put.info.:signature.
5d900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
5d920 20 20 20 28 63 6f 6e 63 61 74 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 73 69 67 6e ...(concat.(plist-get.info.:sign
5d940 61 74 75 72 65 29 20 73 69 67 6e 61 74 75 72 65 29 29 29 29 29 29 29 29 0a 0a 20 20 20 20 20 20 ature).signature))))))))........
5d960 20 20 20 20 20 28 28 6c 6f 6f 6b 69 6e 67 2d 61 74 20 22 63 6f 6e 74 65 6e 74 5f 62 6c 6f 63 6b .....((looking-at."content_block
5d980 5f 73 74 61 72 74 22 29 20 3b 49 73 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 62 6c 6f 63 6b _start").;Is.the.following.block
5d9a0 20 74 65 78 74 20 6f 72 20 74 6f 6f 6c 2d 75 73 65 3f 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 .text.or.tool-use?.............(
5d9c0 66 6f 72 77 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 forward-line.1).(forward-char.5)
5d9e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 63 62 6c 6f 63 6b .............(when-let*.((cblock
5da00 20 28 70 6c 69 73 74 2d 67 65 74 20 28 67 70 74 65 6c 2d 2d 6a 73 6f 6e 2d 72 65 61 64 29 20 3a .(plist-get.(gptel--json-read).:
5da20 63 6f 6e 74 65 6e 74 5f 62 6c 6f 63 6b 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 content_block)))...............(
5da40 70 63 61 73 65 20 28 70 6c 69 73 74 2d 67 65 74 20 63 62 6c 6f 63 6b 20 3a 74 79 70 65 29 0a 20 pcase.(plist-get.cblock.:type)..
5da60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 22 74 65 78 74 22 20 28 70 75 73 68 20 28 70 6c ...............("text".(push.(pl
5da80 69 73 74 2d 67 65 74 20 63 62 6c 6f 63 6b 20 3a 74 65 78 74 29 20 63 6f 6e 74 65 6e 74 2d 73 74 ist-get.cblock.:text).content-st
5daa0 72 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 22 74 6f 6f 6c 5f 75 73 65 22 rs)).................("tool_use"
5dac0 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 74 6f 6f 6c 2d 75 73 65 0a 20 20 20 20 20 .(plist-put.info.:tool-use......
5dae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
5db00 20 20 28 63 6f 6e 73 20 28 6c 69 73 74 20 3a 69 64 20 28 70 6c 69 73 74 2d 67 65 74 20 63 62 6c ..(cons.(list.:id.(plist-get.cbl
5db20 6f 63 6b 20 3a 69 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 ock.:id)........................
5db40 20 20 20 20 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 6e 61 6d ............................:nam
5db60 65 20 28 70 6c 69 73 74 2d 67 65 74 20 63 62 6c 6f 63 6b 20 3a 6e 61 6d 65 29 29 0a 20 20 20 20 e.(plist-get.cblock.:name)).....
5db80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
5dba0 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 74 6f 6f 6c 2d 75 .........(plist-get.info.:tool-u
5dbc0 73 65 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 22 74 68 69 6e 6b 69 6e se)))).................("thinkin
5dbe0 67 22 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 72 65 61 73 6f 6e 69 6e 67 20 28 70 g".(plist-put.info.:reasoning.(p
5dc00 6c 69 73 74 2d 67 65 74 20 63 62 6c 6f 63 6b 20 3a 74 68 69 6e 6b 69 6e 67 29 29 0a 20 20 20 20 list-get.cblock.:thinking)).....
5dc20 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 72 65 .............(plist-put.info.:re
5dc40 61 73 6f 6e 69 6e 67 2d 62 6c 6f 63 6b 20 27 69 6e 29 29 29 29 29 0a 0a 20 20 20 20 20 20 20 20 asoning-block.'in)))))..........
5dc60 20 20 20 28 28 6c 6f 6f 6b 69 6e 67 2d 61 74 20 22 63 6f 6e 74 65 6e 74 5f 62 6c 6f 63 6b 5f 73 ...((looking-at."content_block_s
5dc80 74 6f 70 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 top").............(cond.........
5dca0 20 20 20 20 20 28 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 70 61 72 74 69 61 6c 5f 6a .....((plist-get.info.:partial_j
5dcc0 73 6f 6e 29 20 20 20 3b 45 6e 64 20 6f 66 20 74 6f 6f 6c 20 62 6c 6f 63 6b 0a 20 20 20 20 20 20 son)...;End.of.tool.block.......
5dce0 20 20 20 20 20 20 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 2d 75 6e 6c 65 73 73 2d 64 ........(condition-case-unless-d
5dd00 65 62 75 67 20 6e 69 6c 20 3b 43 6f 6d 62 69 6e 65 20 70 61 72 74 69 61 6c 20 74 6f 6f 6c 20 69 ebug.nil.;Combine.partial.tool.i
5dd20 6e 70 75 74 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 nputs...................(let*.((
5dd40 61 72 67 73 2d 6a 73 6f 6e 20 28 61 70 70 6c 79 20 23 27 63 6f 6e 63 61 74 20 28 6e 72 65 76 65 args-json.(apply.#'concat.(nreve
5dd60 72 73 65 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 70 61 72 74 69 61 6c 5f 6a 73 6f rse.(plist-get.info.:partial_jso
5dd80 6e 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 28 n))))..........................(
5dda0 61 72 67 73 2d 64 65 63 6f 64 65 64 20 20 3b 48 61 6e 64 6c 65 20 62 6c 61 6e 6b 20 61 72 67 75 args-decoded..;Handle.blank.argu
5ddc0 6d 65 6e 74 20 73 74 72 69 6e 67 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ment.strings....................
5dde0 20 20 20 20 20 20 20 28 69 66 20 28 73 74 72 69 6e 67 2d 65 6d 70 74 79 2d 70 20 61 72 67 73 2d .......(if.(string-empty-p.args-
5de00 6a 73 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 20 20 json)...........................
5de20 20 20 20 20 6e 69 6c 20 28 67 70 74 65 6c 2d 2d 6a 73 6f 6e 2d 72 65 61 64 2d 73 74 72 69 6e 67 ....nil.(gptel--json-read-string
5de40 20 61 72 67 73 2d 6a 73 6f 6e 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .args-json))))..................
5de60 20 20 20 3b 3b 20 41 64 64 20 74 68 65 20 69 6e 70 75 74 20 74 6f 20 74 68 65 20 74 6f 6f 6c 2d ...;;.Add.the.input.to.the.tool-
5de80 63 61 6c 6c 20 73 70 65 63 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 call.spec.....................(p
5dea0 6c 69 73 74 2d 70 75 74 20 28 63 61 72 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 74 list-put.(car.(plist-get.info.:t
5dec0 6f 6f 6c 2d 75 73 65 29 29 20 3a 69 6e 70 75 74 20 61 72 67 73 2d 64 65 63 6f 64 65 64 29 29 0a ool-use)).:input.args-decoded)).
5dee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 49 66 20 74 68 65 72 65 20 77 61 73 20 ................;;.If.there.was.
5df00 61 6e 20 65 72 72 6f 72 20 69 6e 20 72 65 61 64 69 6e 67 20 74 68 61 74 20 74 6f 6f 6c 2c 20 77 an.error.in.reading.that.tool,.w
5df20 65 20 69 67 6e 6f 72 65 20 69 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 e.ignore.it:.................;;.
5df40 54 4f 44 4f 28 74 6f 6f 6c 29 20 68 61 6e 64 6c 65 20 74 68 69 73 20 65 72 72 6f 72 20 62 65 74 TODO(tool).handle.this.error.bet
5df60 74 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 20 28 70 6f 70 20 ter.................(error.(pop.
5df80 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 74 6f 6f 6c 2d 75 73 65 29 29 29 29 20 3b 54 (plist-get.info.:tool-use)))).;T
5dfa0 4f 44 4f 3a 20 6e 72 65 76 65 72 73 65 20 3a 74 6f 6f 6c 2d 75 73 65 20 6c 69 73 74 0a 20 20 20 ODO:.nreverse.:tool-use.list....
5dfc0 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 70 61 72 74 ...........(plist-put.info.:part
5dfe0 69 61 6c 5f 6a 73 6f 6e 20 6e 69 6c 29 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 65 ial_json.nil))...............((e
5e000 71 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 72 65 61 73 6f 6e 69 6e 67 2d 62 6c 6f q.(plist-get.info.:reasoning-blo
5e020 63 6b 29 20 27 69 6e 29 20 3b 45 6e 64 20 6f 66 20 72 65 61 73 6f 6e 69 6e 67 20 62 6c 6f 63 6b ck).'in).;End.of.reasoning.block
5e040 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.:
5e060 72 65 61 73 6f 6e 69 6e 67 2d 62 6c 6f 63 6b 20 74 29 29 29 29 20 3b 53 69 67 6e 61 6c 20 65 6e reasoning-block.t)))).;Signal.en
5e080 64 20 6f 66 20 72 65 61 73 6f 6e 69 6e 67 20 73 74 72 65 61 6d 20 74 6f 20 66 69 6c 74 65 72 0a d.of.reasoning.stream.to.filter.
5e0a0 0a 20 20 20 20 20 20 20 20 20 20 20 28 28 6c 6f 6f 6b 69 6e 67 2d 61 74 20 22 6d 65 73 73 61 67 ............((looking-at."messag
5e0c0 65 5f 64 65 6c 74 61 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 63 6f 6c 6c 65 63 74 e_delta").............;;.collect
5e0e0 20 73 74 6f 70 5f 72 65 61 73 6f 6e 2c 20 75 73 61 67 65 5f 74 6f 6b 65 6e 73 20 61 6e 64 20 70 .stop_reason,.usage_tokens.and.p
5e100 72 65 70 61 72 65 20 74 6f 6f 6c 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 77 61 72 repare.tools.............(forwar
5e120 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 20 20 d-line.1).(forward-char.5)......
5e140 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 74 6f 6f 6c 2d 75 73 65 20 28 70 6c .......(when-let*.((tool-use.(pl
5e160 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 74 6f 6f 6c 2d 75 73 65 29 29 0a 20 20 20 20 20 20 20 ist-get.info.:tool-use))........
5e180 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 67 70 74 65 .................(response.(gpte
5e1a0 6c 2d 2d 6a 73 6f 6e 2d 72 65 61 64 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c l--json-read)))...............(l
5e1c0 65 74 2a 20 28 28 64 61 74 61 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 64 61 74 61 et*.((data.(plist-get.info.:data
5e1e0 29 29 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 6f 6d 70 74 73 ))......................(prompts
5e200 20 28 70 6c 69 73 74 2d 67 65 74 20 64 61 74 61 20 3a 6d 65 73 73 61 67 65 73 29 29 29 0a 20 20 .(plist-get.data.:messages)))...
5e220 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 3b 20 41 70 70 65 6e ..............(plist-put.;.Appen
5e240 64 20 61 20 43 4f 50 59 20 6f 66 20 72 65 73 70 6f 6e 73 65 20 74 65 78 74 20 2b 20 74 6f 6f 6c d.a.COPY.of.response.text.+.tool
5e260 2d 75 73 65 20 74 6f 20 74 68 65 20 70 72 6f 6d 70 74 73 20 6c 69 73 74 0a 20 20 20 20 20 20 20 -use.to.the.prompts.list........
5e280 20 20 20 20 20 20 20 20 20 20 64 61 74 61 20 3a 6d 65 73 73 61 67 65 73 0a 20 20 20 20 20 20 20 ..........data.:messages........
5e2a0 20 20 20 20 20 20 20 20 20 20 28 76 63 6f 6e 63 61 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ..........(vconcat..............
5e2c0 20 20 20 20 20 70 72 6f 6d 70 74 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 60 .....prompts...................`
5e2e0 28 28 3a 72 6f 6c 65 20 22 61 73 73 69 73 74 61 6e 74 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 ((:role."assistant".............
5e300 20 20 20 20 20 20 20 20 20 3a 63 6f 6e 74 65 6e 74 20 2c 28 76 63 6f 6e 63 61 74 20 3b 49 6e 73 .........:content.,(vconcat.;Ins
5e320 65 72 74 20 61 6e 79 20 4c 4c 4d 20 74 65 78 74 20 61 6e 64 20 74 68 69 6e 6b 69 6e 67 20 74 65 ert.any.LLM.text.and.thinking.te
5e340 78 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 xt..............................
5e360 20 20 20 28 61 6e 64 2d 6c 65 74 2a 20 28 28 72 65 61 73 6f 6e 69 6e 67 20 28 70 6c 69 73 74 2d ...(and-let*.((reasoning.(plist-
5e380 67 65 74 20 69 6e 66 6f 20 3a 70 61 72 74 69 61 6c 5f 72 65 61 73 6f 6e 69 6e 67 29 29 29 0a 20 get.info.:partial_reasoning)))..
5e3a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
5e3c0 60 28 28 3a 74 79 70 65 20 22 74 68 69 6e 6b 69 6e 67 22 20 3a 74 68 69 6e 6b 69 6e 67 20 2c 72 `((:type."thinking".:thinking.,r
5e3e0 65 61 73 6f 6e 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 easoning........................
5e400 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 73 69 67 6e 61 74 75 72 65 20 2c 28 70 6c 69 73 74 2d .............:signature.,(plist-
5e420 67 65 74 20 69 6e 66 6f 20 3a 73 69 67 6e 61 74 75 72 65 29 29 29 29 0a 20 20 20 20 20 20 20 20 get.info.:signature)))).........
5e440 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 6e 64 2d 6c 65 74 ........................(and-let
5e460 2a 20 28 28 73 74 72 73 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 70 61 72 74 69 61 *.((strs.(plist-get.info.:partia
5e480 6c 5f 74 65 78 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 l_text))).......................
5e4a0 20 20 20 20 20 20 20 20 20 20 20 60 28 28 3a 74 79 70 65 20 22 74 65 78 74 22 20 3a 74 65 78 74 ...........`((:type."text".:text
5e4c0 20 2c 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 20 73 74 72 73 .,(apply.#'concat.(nreverse.strs
5e4e0 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 )))))...........................
5e500 20 20 20 20 20 20 28 6d 61 70 63 61 72 20 28 6c 61 6d 62 64 61 20 28 74 6f 6f 6c 2d 63 61 6c 6c ......(mapcar.(lambda.(tool-call
5e520 29 20 3b 66 6f 6c 6c 6f 77 65 64 20 62 79 20 74 68 65 20 74 6f 6f 6c 20 63 61 6c 6c 73 0a 20 20 ).;followed.by.the.tool.calls...
5e540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
5e560 20 20 20 20 20 20 20 20 28 61 70 70 65 6e 64 20 28 6c 69 73 74 20 3a 74 79 70 65 20 22 74 6f 6f ........(append.(list.:type."too
5e580 6c 5f 75 73 65 22 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 l_use").........................
5e5a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 70 79 2d 73 65 71 75 65 6e 63 ...................(copy-sequenc
5e5c0 65 20 74 6f 6f 6c 2d 63 61 6c 6c 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 e.tool-call)))..................
5e5e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 6f 6c 2d 75 73 65 29 29 29 29 29 29 0a 20 ................tool-use))))))..
5e600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a ...............(plist-put.info.:
5e620 70 61 72 74 69 61 6c 5f 74 65 78 74 20 6e 69 6c 29 20 3b 20 43 6c 65 61 72 20 61 6e 79 20 63 61 partial_text.nil).;.Clear.any.ca
5e640 70 74 75 72 65 64 20 74 65 78 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 54 ptured.text.................;;.T
5e660 68 65 6e 20 73 68 61 70 65 20 74 68 65 20 74 6f 6f 6c 2d 75 73 65 20 62 6c 6f 63 6b 20 62 79 20 hen.shape.the.tool-use.block.by.
5e680 61 64 64 69 6e 67 20 61 72 67 73 20 73 6f 20 77 65 20 63 61 6e 20 63 61 6c 6c 20 74 68 65 20 66 adding.args.so.we.can.call.the.f
5e6a0 75 6e 63 74 69 6f 6e 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 70 63 20 28 unctions.................(mapc.(
5e6c0 6c 61 6d 62 64 61 20 28 74 6f 6f 6c 2d 63 61 6c 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 lambda.(tool-call)..............
5e6e0 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 74 6f 6f 6c 2d 63 61 6c 6c 20 ...........(plist-put.tool-call.
5e700 3a 61 72 67 73 20 28 70 6c 69 73 74 2d 67 65 74 20 74 6f 6f 6c 2d 63 61 6c 6c 20 3a 69 6e 70 75 :args.(plist-get.tool-call.:inpu
5e720 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 28 70 6c 69 t)).........................(pli
5e740 73 74 2d 70 75 74 20 74 6f 6f 6c 2d 63 61 6c 6c 20 3a 69 6e 70 75 74 20 6e 69 6c 29 0a 20 20 20 st-put.tool-call.:input.nil)....
5e760 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.
5e780 74 6f 6f 6c 2d 63 61 6c 6c 20 3a 69 64 20 28 70 6c 69 73 74 2d 67 65 74 20 74 6f 6f 6c 2d 63 61 tool-call.:id.(plist-get.tool-ca
5e7a0 6c 6c 20 3a 69 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 20 20 ll.:id))).......................
5e7c0 74 6f 6f 6c 2d 75 73 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d tool-use))...............(plist-
5e7e0 70 75 74 20 69 6e 66 6f 20 3a 6f 75 74 70 75 74 2d 74 6f 6b 65 6e 73 0a 20 20 20 20 20 20 20 20 put.info.:output-tokens.........
5e800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 70 2d 6e 65 73 74 65 64 2d 65 6c 74 .................(map-nested-elt
5e820 20 72 65 73 70 6f 6e 73 65 20 27 28 3a 75 73 61 67 65 20 3a 6f 75 74 70 75 74 5f 74 6f 6b 65 6e .response.'(:usage.:output_token
5e840 73 29 29 29 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 s)))...............(plist-put.in
5e860 66 6f 20 3a 73 74 6f 70 2d 72 65 61 73 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 fo.:stop-reason.................
5e880 20 20 20 20 20 20 20 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 .........(map-nested-elt.respons
5e8a0 65 20 27 28 3a 64 65 6c 74 61 20 3a 73 74 6f 70 5f 72 65 61 73 6f 6e 29 29 29 29 29 29 29 0a 20 e.'(:delta.:stop_reason)))))))..
5e8c0 20 20 20 20 20 28 65 72 72 6f 72 20 28 67 6f 74 6f 2d 63 68 61 72 20 70 74 29 29 29 0a 20 20 20 .....(error.(goto-char.pt)))....
5e8e0 20 28 6c 65 74 20 28 28 72 65 73 70 6f 6e 73 65 2d 74 65 78 74 20 28 61 70 70 6c 79 20 23 27 63 .(let.((response-text.(apply.#'c
5e900 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 73 29 29 29 29 oncat.(nreverse.content-strs))))
5e920 0a 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 72 .......(unless.(string-empty-p.r
5e940 65 73 70 6f 6e 73 65 2d 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 esponse-text).........(plist-put
5e960 20 69 6e 66 6f 20 3a 70 61 72 74 69 61 6c 5f 74 65 78 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 .info.:partial_text.............
5e980 20 20 20 20 20 20 20 28 63 6f 6e 73 20 72 65 73 70 6f 6e 73 65 2d 74 65 78 74 20 28 70 6c 69 73 .......(cons.response-text.(plis
5e9a0 74 2d 67 65 74 20 69 6e 66 6f 20 3a 70 61 72 74 69 61 6c 5f 74 65 78 74 29 29 29 29 0a 20 20 20 t-get.info.:partial_text))))....
5e9c0 20 20 20 28 77 68 65 6e 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 74 6f 6f 6c 73 29 ...(when.(plist-get.info.:tools)
5e9e0 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 72 65 61 73 6f 6e 69 6e 67 20 .........(when-let*.((reasoning.
5ea00 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 72 65 61 73 6f 6e 69 6e 67 29 29 29 0a 20 20 (plist-get.info.:reasoning)))...
5ea20 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 70 61 72 74 69 61 6c ........(plist-put.info.:partial
5ea40 5f 72 65 61 73 6f 6e 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 _reasoning......................
5ea60 28 63 6f 6e 63 61 74 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 70 61 72 74 69 61 6c (concat.(plist-get.info.:partial
5ea80 5f 72 65 61 73 6f 6e 69 6e 67 29 20 72 65 61 73 6f 6e 69 6e 67 29 29 29 29 0a 20 20 20 20 20 20 _reasoning).reasoning)))).......
5eaa0 72 65 73 70 6f 6e 73 65 2d 74 65 78 74 29 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 response-text)))..(cl-defmethod.
5eac0 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 64 gptel--parse-response.((_backend
5eae0 20 67 70 74 65 6c 2d 61 6e 74 68 72 6f 70 69 63 29 20 72 65 73 70 6f 6e 73 65 20 69 6e 66 6f 29 .gptel-anthropic).response.info)
5eb00 0a 20 20 22 50 61 72 73 65 20 61 6e 20 41 6e 74 68 72 6f 70 69 63 20 28 6e 6f 6e 2d 73 74 72 65 ..."Parse.an.Anthropic.(non-stre
5eb20 61 6d 69 6e 67 29 20 52 45 53 50 4f 4e 53 45 20 61 6e 64 20 72 65 74 75 72 6e 20 72 65 73 70 6f aming).RESPONSE.and.return.respo
5eb40 6e 73 65 20 74 65 78 74 2e 0a 0a 4d 75 74 61 74 65 20 73 74 61 74 65 20 49 4e 46 4f 20 77 69 74 nse.text...Mutate.state.INFO.wit
5eb60 68 20 72 65 73 70 6f 6e 73 65 20 6d 65 74 61 64 61 74 61 2e 22 0a 20 20 28 70 6c 69 73 74 2d 70 h.response.metadata."...(plist-p
5eb80 75 74 20 69 6e 66 6f 20 3a 73 74 6f 70 2d 72 65 61 73 6f 6e 20 28 70 6c 69 73 74 2d 67 65 74 20 ut.info.:stop-reason.(plist-get.
5eba0 72 65 73 70 6f 6e 73 65 20 3a 73 74 6f 70 5f 72 65 61 73 6f 6e 29 29 0a 20 20 28 70 6c 69 73 74 response.:stop_reason))...(plist
5ebc0 2d 70 75 74 20 69 6e 66 6f 20 3a 6f 75 74 70 75 74 2d 74 6f 6b 65 6e 73 0a 20 20 20 20 20 20 20 -put.info.:output-tokens........
5ebe0 20 20 20 20 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 ......(map-nested-elt.response.'
5ec00 28 3a 75 73 61 67 65 20 3a 6f 75 74 70 75 74 5f 74 6f 6b 65 6e 73 29 29 29 0a 20 20 28 63 6c 2d (:usage.:output_tokens)))...(cl-
5ec20 6c 6f 6f 70 0a 20 20 20 77 69 74 68 20 63 6f 6e 74 65 6e 74 20 3d 20 28 70 6c 69 73 74 2d 67 65 loop....with.content.=.(plist-ge
5ec40 74 20 72 65 73 70 6f 6e 73 65 20 3a 63 6f 6e 74 65 6e 74 29 0a 20 20 20 66 6f 72 20 63 62 6c 6f t.response.:content)....for.cblo
5ec60 63 6b 20 61 63 72 6f 73 73 20 63 6f 6e 74 65 6e 74 0a 20 20 20 66 6f 72 20 74 79 70 65 20 3d 20 ck.across.content....for.type.=.
5ec80 28 70 6c 69 73 74 2d 67 65 74 20 63 62 6c 6f 63 6b 20 3a 74 79 70 65 29 0a 20 20 20 69 66 20 28 (plist-get.cblock.:type)....if.(
5eca0 65 71 75 61 6c 20 74 79 70 65 20 22 74 65 78 74 22 29 0a 20 20 20 3b 3b 20 54 4f 44 4f 28 74 6f equal.type."text")....;;.TODO(to
5ecc0 6f 6c 29 20 63 61 6e 20 3a 74 65 78 74 20 62 65 20 3a 6e 75 6c 6c 3f 0a 20 20 20 63 6f 6c 6c 65 ol).can.:text.be.:null?....colle
5ece0 63 74 20 28 70 6c 69 73 74 2d 67 65 74 20 63 62 6c 6f 63 6b 20 3a 74 65 78 74 29 20 69 6e 74 6f ct.(plist-get.cblock.:text).into
5ed00 20 63 6f 6e 74 65 6e 74 2d 73 74 72 73 0a 20 20 20 65 6c 73 65 20 69 66 20 28 65 71 75 61 6c 20 .content-strs....else.if.(equal.
5ed20 74 79 70 65 20 22 74 6f 6f 6c 5f 75 73 65 22 29 0a 20 20 20 63 6f 6c 6c 65 63 74 20 63 62 6c 6f type."tool_use")....collect.cblo
5ed40 63 6b 20 69 6e 74 6f 20 74 6f 6f 6c 2d 75 73 65 0a 20 20 20 65 6c 73 65 20 69 66 20 28 65 71 75 ck.into.tool-use....else.if.(equ
5ed60 61 6c 20 74 79 70 65 20 22 74 68 69 6e 6b 69 6e 67 22 29 0a 20 20 20 64 6f 0a 20 20 20 28 70 6c al.type."thinking")....do....(pl
5ed80 69 73 74 2d 70 75 74 0a 20 20 20 20 69 6e 66 6f 20 3a 72 65 61 73 6f 6e 69 6e 67 0a 20 20 20 20 ist-put.....info.:reasoning.....
5eda0 28 63 6f 6e 63 61 74 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 72 65 61 73 6f 6e 69 (concat.(plist-get.info.:reasoni
5edc0 6e 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 67 65 74 20 63 62 6c 6f 63 ng).............(plist-get.cbloc
5ede0 6b 20 3a 74 68 69 6e 6b 69 6e 67 29 29 29 0a 20 20 20 66 69 6e 61 6c 6c 79 20 64 6f 0a 20 20 20 k.:thinking)))....finally.do....
5ee00 28 77 68 65 6e 20 74 6f 6f 6c 2d 75 73 65 0a 20 20 20 20 20 3b 3b 20 46 69 72 73 74 2c 20 61 64 (when.tool-use......;;.First,.ad
5ee20 64 20 74 68 65 20 74 6f 6f 6c 20 63 61 6c 6c 20 74 6f 20 74 68 65 20 70 72 6f 6d 70 74 73 20 6c d.the.tool.call.to.the.prompts.l
5ee40 69 73 74 0a 20 20 20 20 20 28 6c 65 74 2a 20 28 28 64 61 74 61 20 28 70 6c 69 73 74 2d 67 65 74 ist......(let*.((data.(plist-get
5ee60 20 69 6e 66 6f 20 3a 64 61 74 61 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 6d 70 .info.:data)).............(promp
5ee80 74 73 20 28 70 6c 69 73 74 2d 67 65 74 20 64 61 74 61 20 3a 6d 65 73 73 61 67 65 73 29 29 29 0a ts.(plist-get.data.:messages))).
5eea0 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 0a 20 20 20 20 20 20 20 20 64 61 74 61 20 3a .......(plist-put.........data.:
5eec0 6d 65 73 73 61 67 65 73 0a 20 20 20 20 20 20 20 20 28 76 63 6f 6e 63 61 74 20 70 72 6f 6d 70 74 messages.........(vconcat.prompt
5eee0 73 20 60 28 28 3a 72 6f 6c 65 20 22 61 73 73 69 73 74 61 6e 74 22 20 3a 63 6f 6e 74 65 6e 74 20 s.`((:role."assistant".:content.
5ef00 2c 63 6f 6e 74 65 6e 74 29 29 29 29 29 0a 20 20 20 20 20 3b 3b 20 54 68 65 6e 20 63 61 70 74 75 ,content)))))......;;.Then.captu
5ef20 72 65 20 74 68 65 20 74 6f 6f 6c 20 63 61 6c 6c 20 64 61 74 61 20 66 6f 72 20 72 75 6e 6e 69 6e re.the.tool.call.data.for.runnin
5ef40 67 20 74 68 65 20 74 6f 6f 6c 0a 20 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 0a 20 20 20 20 20 20 66 g.the.tool......(cl-loop.......f
5ef60 6f 72 20 63 61 6c 6c 2d 72 61 77 20 69 6e 20 74 6f 6f 6c 2d 75 73 65 0a 20 20 20 20 20 20 66 6f or.call-raw.in.tool-use.......fo
5ef80 72 20 63 61 6c 6c 20 3d 20 28 63 6f 70 79 2d 73 65 71 75 65 6e 63 65 20 63 61 6c 6c 2d 72 61 77 r.call.=.(copy-sequence.call-raw
5efa0 29 20 64 6f 0a 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 63 61 6c 6c 20 3a 61 72 67 73 ).do.......(plist-put.call.:args
5efc0 20 28 70 6c 69 73 74 2d 67 65 74 20 63 61 6c 6c 20 3a 69 6e 70 75 74 29 29 0a 20 20 20 20 20 20 .(plist-get.call.:input)).......
5efe0 28 70 6c 69 73 74 2d 70 75 74 20 63 61 6c 6c 20 3a 69 6e 70 75 74 20 6e 69 6c 29 0a 20 20 20 20 (plist-put.call.:input.nil).....
5f000 20 20 28 70 6c 69 73 74 2d 70 75 74 20 63 61 6c 6c 20 3a 69 64 20 28 70 6c 69 73 74 2d 67 65 74 ..(plist-put.call.:id.(plist-get
5f020 20 63 61 6c 6c 20 3a 69 64 29 29 0a 20 20 20 20 20 20 63 6f 6c 6c 65 63 74 20 63 61 6c 6c 20 69 .call.:id)).......collect.call.i
5f040 6e 74 6f 20 63 61 6c 6c 73 0a 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 20 64 6f 20 28 70 6c 69 73 nto.calls.......finally.do.(plis
5f060 74 2d 70 75 74 20 69 6e 66 6f 20 3a 74 6f 6f 6c 2d 75 73 65 20 63 61 6c 6c 73 29 29 29 0a 20 20 t-put.info.:tool-use.calls)))...
5f080 20 66 69 6e 61 6c 6c 79 20 72 65 74 75 72 6e 0a 20 20 20 28 61 6e 64 20 63 6f 6e 74 65 6e 74 2d .finally.return....(and.content-
5f0a0 73 74 72 73 20 28 61 70 70 6c 79 20 23 27 63 6f 6e 63 61 74 20 63 6f 6e 74 65 6e 74 2d 73 74 72 strs.(apply.#'concat.content-str
5f0c0 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 72 65 71 75 s))))..(cl-defmethod.gptel--requ
5f0e0 65 73 74 2d 64 61 74 61 20 28 28 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 61 6e 74 68 72 6f 70 est-data.((backend.gptel-anthrop
5f100 69 63 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 50 52 4f 4d ic).prompts)..."JSON.encode.PROM
5f120 50 54 53 20 66 6f 72 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 PTS.for.sending.to.ChatGPT."...(
5f140 6c 65 74 20 28 28 70 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 let.((prompts-plist..........`(:
5f160 6d 6f 64 65 6c 20 2c 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 6e 61 6d 65 20 67 70 74 65 6c 2d model.,(gptel--model-name.gptel-
5f180 6d 6f 64 65 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 3a 73 74 72 65 61 6d 20 2c 28 6f 72 20 67 model)............:stream.,(or.g
5f1a0 70 74 65 6c 2d 73 74 72 65 61 6d 20 3a 6a 73 6f 6e 2d 66 61 6c 73 65 29 0a 20 20 20 20 20 20 20 ptel-stream.:json-false)........
5f1c0 20 20 20 20 3a 6d 61 78 5f 74 6f 6b 65 6e 73 20 2c 28 6f 72 20 67 70 74 65 6c 2d 6d 61 78 2d 74 ....:max_tokens.,(or.gptel-max-t
5f1e0 6f 6b 65 6e 73 20 34 30 39 36 29 0a 20 20 20 20 20 20 20 20 20 20 20 3a 6d 65 73 73 61 67 65 73 okens.4096)............:messages
5f200 20 5b 2c 40 70 72 6f 6d 70 74 73 5d 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d .[,@prompts]))).....(when.gptel-
5f220 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 0a 20 20 20 20 20 20 28 69 66 20 28 61 6e 64 20 28 -system-message.......(if.(and.(
5f240 6f 72 20 28 65 71 20 67 70 74 65 6c 2d 63 61 63 68 65 20 74 29 20 28 6d 65 6d 71 20 27 73 79 73 or.(eq.gptel-cache.t).(memq.'sys
5f260 74 65 6d 20 67 70 74 65 6c 2d 63 61 63 68 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 tem.gptel-cache))...............
5f280 20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 63 61 70 61 62 6c 65 2d 70 20 27 63 61 63 68 65 29 .(gptel--model-capable-p.'cache)
5f2a0 29 0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 )...........;;.gptel--system-mes
5f2c0 73 61 67 65 20 69 73 20 67 75 61 72 61 6e 74 65 65 64 20 74 6f 20 62 65 20 61 20 73 74 72 69 6e sage.is.guaranteed.to.be.a.strin
5f2e0 67 0a 20 20 20 20 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 g...........(plist-put.prompts-p
5f300 6c 69 73 74 20 3a 73 79 73 74 65 6d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 list.:system....................
5f320 20 20 60 5b 28 3a 74 79 70 65 20 22 74 65 78 74 22 20 3a 74 65 78 74 20 2c 67 70 74 65 6c 2d 2d ..`[(:type."text".:text.,gptel--
5f340 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 system-message..................
5f360 20 20 20 20 20 20 20 3a 63 61 63 68 65 5f 63 6f 6e 74 72 6f 6c 20 28 3a 74 79 70 65 20 22 65 70 .......:cache_control.(:type."ep
5f380 68 65 6d 65 72 61 6c 22 20 3a 74 74 6c 20 22 31 68 22 29 29 5d 29 0a 20 20 20 20 20 20 20 20 28 hemeral".:ttl."1h"))]).........(
5f3a0 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 73 79 73 74 65 6d 20 plist-put.prompts-plist.:system.
5f3c0 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 29 29 29 0a 20 20 20 20 28 77 68 gptel--system-message))).....(wh
5f3e0 65 6e 20 67 70 74 65 6c 2d 74 65 6d 70 65 72 61 74 75 72 65 0a 20 20 20 20 20 20 28 70 6c 69 73 en.gptel-temperature.......(plis
5f400 74 2d 70 75 74 20 70 72 6f 6d 70 74 73 2d 70 6c 69 73 74 20 3a 74 65 6d 70 65 72 61 74 75 72 65 t-put.prompts-plist.:temperature
5f420 20 67 70 74 65 6c 2d 74 65 6d 70 65 72 61 74 75 72 65 29 29 0a 20 20 20 20 28 77 68 65 6e 20 67 .gptel-temperature)).....(when.g
5f440 70 74 65 6c 2d 75 73 65 2d 74 6f 6f 6c 73 0a 20 20 20 20 20 20 28 77 68 65 6e 20 28 65 71 20 67 ptel-use-tools.......(when.(eq.g
5f460 70 74 65 6c 2d 75 73 65 2d 74 6f 6f 6c 73 20 27 66 6f 72 63 65 29 0a 20 20 20 20 20 20 20 20 28 ptel-use-tools.'force).........(
5f480 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 74 6f 6f 6c 5f 63 68 plist-put.prompts-plist.:tool_ch
5f4a0 6f 69 63 65 20 27 28 3a 74 79 70 65 20 22 61 6e 79 22 29 29 29 0a 20 20 20 20 20 20 28 77 68 65 oice.'(:type."any"))).......(whe
5f4c0 6e 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 0a 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 74 6f 6f n.gptel-tools.........(let.((too
5f4e0 6c 73 2d 61 72 72 61 79 20 28 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 74 6f 6f 6c 73 20 62 61 63 ls-array.(gptel--parse-tools.bac
5f500 6b 65 6e 64 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 kend.gptel-tools)))...........(p
5f520 6c 69 73 74 2d 70 75 74 20 70 72 6f 6d 70 74 73 2d 70 6c 69 73 74 20 3a 74 6f 6f 6c 73 20 74 6f list-put.prompts-plist.:tools.to
5f540 6f 6c 73 2d 61 72 72 61 79 29 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 61 6e 64 20 ols-array)...........(when.(and.
5f560 28 6f 72 20 28 65 71 20 67 70 74 65 6c 2d 63 61 63 68 65 20 74 29 20 28 6d 65 6d 71 20 27 74 6f (or.(eq.gptel-cache.t).(memq.'to
5f580 6f 6c 20 67 70 74 65 6c 2d 63 61 63 68 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ol.gptel-cache))................
5f5a0 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 63 61 70 61 62 6c 65 2d 70 20 27 63 ......(gptel--model-capable-p.'c
5f5c0 61 63 68 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 63 6f 6e 63 20 28 61 72 65 66 20 ache)).............(nconc.(aref.
5f5e0 74 6f 6f 6c 73 2d 61 72 72 61 79 20 28 31 2d 20 28 6c 65 6e 67 74 68 20 74 6f 6f 6c 73 2d 61 72 tools-array.(1-.(length.tools-ar
5f600 72 61 79 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 28 3a 63 61 63 ray)))....................'(:cac
5f620 68 65 5f 63 6f 6e 74 72 6f 6c 20 28 3a 74 79 70 65 20 22 65 70 68 65 6d 65 72 61 6c 22 20 3a 74 he_control.(:type."ephemeral".:t
5f640 74 6c 20 22 31 68 22 29 29 29 29 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 2d tl."1h"))))))).....(when.gptel--
5f660 73 63 68 65 6d 61 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 schema.......(plist-put.prompts-
5f680 70 6c 69 73 74 20 3a 74 6f 6f 6c 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 76 plist.:tools..................(v
5f6a0 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 28 6c 69 73 74 20 28 concat...................(list.(
5f6c0 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 73 63 68 65 6d 61 20 62 61 63 6b 65 6e 64 20 67 70 74 65 gptel--parse-schema.backend.gpte
5f6e0 6c 2d 2d 73 63 68 65 6d 61 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 l--schema))...................(p
5f700 6c 69 73 74 2d 67 65 74 20 70 72 6f 6d 70 74 73 2d 70 6c 69 73 74 20 3a 74 6f 6f 6c 73 29 29 29 list-get.prompts-plist.:tools)))
5f720 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 20 .......(plist-put.prompts-plist.
5f740 3a 74 6f 6f 6c 5f 63 68 6f 69 63 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 60 28 :tool_choice..................`(
5f760 3a 74 79 70 65 20 22 74 6f 6f 6c 22 20 3a 6e 61 6d 65 20 2c 67 70 74 65 6c 2d 2d 65 72 73 61 74 :type."tool".:name.,gptel--ersat
5f780 7a 2d 6a 73 6f 6e 2d 74 6f 6f 6c 29 29 29 0a 20 20 20 20 3b 3b 20 4d 65 72 67 65 20 72 65 71 75 z-json-tool))).....;;.Merge.requ
5f7a0 65 73 74 20 70 61 72 61 6d 73 20 77 69 74 68 20 6d 6f 64 65 6c 20 61 6e 64 20 62 61 63 6b 65 6e est.params.with.model.and.backen
5f7c0 64 20 70 61 72 61 6d 73 2e 0a 20 20 20 20 28 67 70 74 65 6c 2d 2d 6d 65 72 67 65 2d 70 6c 69 73 d.params......(gptel--merge-plis
5f7e0 74 73 0a 20 20 20 20 20 70 72 6f 6d 70 74 73 2d 70 6c 69 73 74 0a 20 20 20 20 20 67 70 74 65 6c ts......prompts-plist......gptel
5f800 2d 2d 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 0a 20 20 20 20 20 28 67 70 74 65 6c 2d 62 61 63 --request-params......(gptel-bac
5f820 6b 65 6e 64 2d 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e kend-request-params.gptel-backen
5f840 64 29 0a 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 72 65 71 75 65 73 74 2d 70 61 d)......(gptel--model-request-pa
5f860 72 61 6d 73 20 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 29 29 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 rams..gptel-model))))..(cl-defme
5f880 74 68 6f 64 20 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 73 63 68 65 6d 61 20 28 28 5f 62 61 63 6b thod.gptel--parse-schema.((_back
5f8a0 65 6e 64 20 67 70 74 65 6c 2d 61 6e 74 68 72 6f 70 69 63 29 20 73 63 68 65 6d 61 29 0a 20 20 3b end.gptel-anthropic).schema)...;
5f8c0 3b 20 55 6e 6c 69 6b 65 20 74 68 65 20 6f 74 68 65 72 20 62 61 63 6b 65 6e 64 73 2c 20 41 6e 74 ;.Unlike.the.other.backends,.Ant
5f8e0 68 72 6f 70 69 63 20 67 65 6e 65 72 61 74 65 73 20 4a 53 4f 4e 20 75 73 69 6e 67 20 61 20 74 6f hropic.generates.JSON.using.a.to
5f900 6f 6c 20 63 61 6c 6c 2e 20 20 57 65 0a 20 20 3b 3b 20 77 72 69 74 65 20 74 68 65 20 74 6f 6f 6c ol.call...We...;;.write.the.tool
5f920 20 68 65 72 65 2c 20 6d 65 61 6e 74 20 74 6f 20 62 65 20 61 64 64 65 64 20 74 6f 20 3a 74 6f 6f .here,.meant.to.be.added.to.:too
5f940 6c 73 2e 0a 20 20 28 6c 69 73 74 0a 20 20 20 3a 6e 61 6d 65 20 22 72 65 73 70 6f 6e 73 65 5f 6a ls....(list....:name."response_j
5f960 73 6f 6e 22 0a 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 52 65 63 6f 72 64 20 4a 53 4f son"....:description."Record.JSO
5f980 4e 20 6f 75 74 70 75 74 20 61 63 63 6f 72 64 69 6e 67 20 74 6f 20 75 73 65 72 20 70 72 6f 6d 70 N.output.according.to.user.promp
5f9a0 74 22 0a 20 20 20 3a 69 6e 70 75 74 5f 73 63 68 65 6d 61 20 28 67 70 74 65 6c 2d 2d 70 72 65 70 t"....:input_schema.(gptel--prep
5f9c0 72 6f 63 65 73 73 2d 73 63 68 65 6d 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rocess-schema...................
5f9e0 28 67 70 74 65 6c 2d 2d 64 69 73 70 61 74 63 68 2d 73 63 68 65 6d 61 2d 74 79 70 65 20 73 63 68 (gptel--dispatch-schema-type.sch
5fa00 65 6d 61 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 ema))))..(cl-defmethod.gptel--pa
5fa20 72 73 65 2d 74 6f 6f 6c 73 20 28 28 5f 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 61 6e 74 68 72 rse-tools.((_backend.gptel-anthr
5fa40 6f 70 69 63 29 20 74 6f 6f 6c 73 29 0a 20 20 22 50 61 72 73 65 20 54 4f 4f 4c 53 20 74 6f 20 74 opic).tools)..."Parse.TOOLS.to.t
5fa60 68 65 20 41 6e 74 68 72 6f 70 69 63 20 41 50 49 20 74 6f 6f 6c 20 64 65 66 69 6e 69 74 69 6f 6e he.Anthropic.API.tool.definition
5fa80 20 73 70 65 63 2e 0a 0a 54 4f 4f 4c 53 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 60 67 70 74 65 .spec...TOOLS.is.a.list.of.`gpte
5faa0 6c 2d 74 6f 6f 6c 27 20 73 74 72 75 63 74 73 2c 20 77 68 69 63 68 20 73 65 65 2e 22 0a 20 20 28 l-tool'.structs,.which.see."...(
5fac0 76 63 6f 6e 63 61 74 0a 20 20 20 28 6d 61 70 63 61 72 0a 20 20 20 20 28 6c 61 6d 62 64 61 20 28 vconcat....(mapcar.....(lambda.(
5fae0 74 6f 6f 6c 29 0a 20 20 20 20 20 20 28 6c 69 73 74 20 3a 6e 61 6d 65 20 28 67 70 74 65 6c 2d 74 tool).......(list.:name.(gptel-t
5fb00 6f 6f 6c 2d 6e 61 6d 65 20 74 6f 6f 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 64 65 73 63 ool-name.tool).............:desc
5fb20 72 69 70 74 69 6f 6e 20 28 67 70 74 65 6c 2d 74 6f 6f 6c 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 ription.(gptel-tool-description.
5fb40 74 6f 6f 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 69 6e 70 75 74 5f 73 63 68 65 6d 61 20 tool).............:input_schema.
5fb60 3b 4e 4f 54 45 3a 20 41 6e 74 68 72 6f 70 69 63 20 77 61 6e 74 73 20 22 7b 7d 22 20 69 66 20 74 ;NOTE:.Anthropic.wants."{}".if.t
5fb80 68 65 20 66 75 6e 63 74 69 6f 6e 20 74 61 6b 65 73 20 6e 6f 20 61 72 67 73 2c 20 6e 6f 74 20 6e he.function.takes.no.args,.not.n
5fba0 75 6c 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 3a 74 79 70 65 20 22 6f 62 6a ull.............(list.:type."obj
5fbc0 65 63 74 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 53 65 65 20 74 68 ect"...................;;.See.th
5fbe0 65 20 67 65 6e 65 72 69 63 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 61 6e 20 e.generic.implementation.for.an.
5fc00 65 78 70 6c 61 6e 61 74 69 6f 6e 20 6f 66 20 74 68 69 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 explanation.of.this.............
5fc20 20 20 20 20 20 20 3b 3b 20 74 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 2e 0a 20 20 20 20 20 20 20 ......;;.transformation.........
5fc40 20 20 20 20 20 20 20 20 20 20 20 3a 70 72 6f 70 65 72 74 69 65 73 0a 20 20 20 20 20 20 20 20 20 ...........:properties..........
5fc60 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 20 20 20 20 20 20 20 .........(cl-loop...............
5fc80 20 20 20 20 20 66 6f 72 20 61 72 67 20 69 6e 20 28 67 70 74 65 6c 2d 74 6f 6f 6c 2d 61 72 67 73 .....for.arg.in.(gptel-tool-args
5fca0 20 74 6f 6f 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 61 72 .tool)....................for.ar
5fcc0 67 73 70 65 63 20 3d 20 28 63 6f 70 79 2d 73 65 71 75 65 6e 63 65 20 61 72 67 29 0a 20 20 20 20 gspec.=.(copy-sequence.arg).....
5fce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 6e 61 6d 65 20 3d 20 28 70 6c 69 73 74 ...............for.name.=.(plist
5fd00 2d 67 65 74 20 61 72 67 20 3a 6e 61 6d 65 29 20 3b 68 61 6e 64 6c 65 64 20 64 69 66 66 65 72 65 -get.arg.:name).;handled.differe
5fd20 6e 74 6c 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 6e 65 77 6e ntly....................for.newn
5fd40 61 6d 65 20 3d 20 28 6f 72 20 28 61 6e 64 20 28 6b 65 79 77 6f 72 64 70 20 6e 61 6d 65 29 20 6e ame.=.(or.(and.(keywordp.name).n
5fd60 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)............................
5fd80 20 20 20 20 20 20 20 20 20 20 28 6d 61 6b 65 2d 73 79 6d 62 6f 6c 20 28 63 6f 6e 63 61 74 20 22 ..........(make-symbol.(concat."
5fda0 3a 22 20 6e 61 6d 65 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 :".name)))....................do
5fdc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 41 52 47 53 50 45 43 20 69 73 20 41 52 ..................;ARGSPEC.is.AR
5fde0 47 20 77 69 74 68 6f 75 74 20 75 6e 72 65 63 6f 67 6e 69 7a 65 64 20 6b 65 79 73 0a 20 20 20 20 G.without.unrecognized.keys.....
5fe00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 72 65 6d 66 20 61 72 67 73 70 65 63 20 ...............(cl-remf.argspec.
5fe20 3a 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 28 63 6c 2d 72 65 :name)....................(cl-re
5fe40 6d 66 20 61 72 67 73 70 65 63 20 3a 6f 70 74 69 6f 6e 61 6c 29 0a 20 20 20 20 20 20 20 20 20 20 mf.argspec.:optional)...........
5fe60 20 20 20 20 20 20 20 20 20 69 66 20 28 65 71 75 61 6c 20 28 70 6c 69 73 74 2d 67 65 74 20 61 72 .........if.(equal.(plist-get.ar
5fe80 67 20 3a 74 79 70 65 29 20 22 6f 62 6a 65 63 74 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 g.:type)."object")..............
5fea0 20 20 20 20 20 20 64 6f 20 28 75 6e 6c 65 73 73 20 28 70 6c 69 73 74 2d 6d 65 6d 62 65 72 20 61 ......do.(unless.(plist-member.a
5fec0 72 67 73 70 65 63 20 3a 72 65 71 75 69 72 65 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rgspec.:required)...............
5fee0 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 61 72 67 73 70 65 63 20 3a 72 65 ..........(plist-put.argspec.:re
5ff00 71 75 69 72 65 64 20 5b 5d 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 quired.[]))....................a
5ff20 70 70 65 6e 64 20 28 6c 69 73 74 20 6e 65 77 6e 61 6d 65 20 61 72 67 73 70 65 63 29 29 0a 20 20 ppend.(list.newname.argspec))...
5ff40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 72 65 71 75 69 72 65 64 0a 20 20 20 20 20 20 ................:required.......
5ff60 20 20 20 20 20 20 20 20 20 20 20 20 28 76 63 6f 6e 63 61 74 0a 20 20 20 20 20 20 20 20 20 20 20 ............(vconcat............
5ff80 20 20 20 20 20 20 20 20 28 64 65 6c 71 20 6e 69 6c 20 28 6d 61 70 63 61 72 0a 20 20 20 20 20 20 ........(delq.nil.(mapcar.......
5ffa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 ........................(lambda.
5ffc0 28 61 72 67 29 20 28 61 6e 64 20 28 6e 6f 74 20 28 70 6c 69 73 74 2d 67 65 74 20 61 72 67 20 3a (arg).(and.(not.(plist-get.arg.:
5ffe0 6f 70 74 69 6f 6e 61 6c 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 optional))......................
60000 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 6c 69 73 74 2d 67 65 .......................(plist-ge
60020 74 20 61 72 67 20 3a 6e 61 6d 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 t.arg.:name)))..................
60040 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 74 6f 6f 6c 2d 61 72 67 73 20 74 6f .............(gptel-tool-args.to
60060 6f 6c 29 29 29 29 29 29 29 0a 20 20 20 20 28 65 6e 73 75 72 65 2d 6c 69 73 74 20 74 6f 6f 6c 73 ol))))))).....(ensure-list.tools
60080 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 65 ))))..(cl-defmethod.gptel--parse
600a0 2d 74 6f 6f 6c 2d 72 65 73 75 6c 74 73 20 28 28 5f 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 61 -tool-results.((_backend.gptel-a
600c0 6e 74 68 72 6f 70 69 63 29 20 74 6f 6f 6c 2d 75 73 65 29 0a 20 20 22 52 65 74 75 72 6e 20 61 20 nthropic).tool-use)..."Return.a.
600e0 70 72 6f 6d 70 74 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 6f 6f 6c 20 63 61 6c 6c 20 72 65 73 75 prompt.containing.tool.call.resu
60100 6c 74 73 20 69 6e 20 54 4f 4f 4c 2d 55 53 45 2e 0a 0a 54 4f 4f 4c 2d 55 53 45 20 69 73 20 61 20 lts.in.TOOL-USE...TOOL-USE.is.a.
60120 6c 69 73 74 20 6f 66 20 70 6c 69 73 74 73 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 6f 6f 6c 20 6e list.of.plists.containing.tool.n
60140 61 6d 65 73 2c 20 61 72 67 75 6d 65 6e 74 73 20 61 6e 64 20 63 61 6c 6c 20 72 65 73 75 6c 74 73 ames,.arguments.and.call.results
60160 2e 22 0a 20 20 3b 3b 20 28 64 65 63 6c 61 72 65 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 ."...;;.(declare.(side-effect-fr
60180 65 65 20 74 29 29 0a 20 20 28 6c 69 73 74 0a 20 20 20 3a 72 6f 6c 65 20 22 75 73 65 72 22 0a 20 ee.t))...(list....:role."user"..
601a0 20 20 3a 63 6f 6e 74 65 6e 74 0a 20 20 20 28 76 63 6f 6e 63 61 74 0a 20 20 20 20 28 6d 61 70 63 ..:content....(vconcat.....(mapc
601c0 61 72 0a 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 74 6f 6f 6c 2d 63 61 6c 6c 29 0a 20 20 20 20 ar......(lambda.(tool-call).....
601e0 20 20 20 28 6c 65 74 2a 20 28 28 72 65 73 75 6c 74 20 28 70 6c 69 73 74 2d 67 65 74 20 74 6f 6f ...(let*.((result.(plist-get.too
60200 6c 2d 63 61 6c 6c 20 3a 72 65 73 75 6c 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 l-call.:result))...............(
60220 66 6f 72 6d 61 74 74 65 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 3a formatted................(list.:
60240 74 79 70 65 20 22 74 6f 6f 6c 5f 72 65 73 75 6c 74 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 type."tool_result"..............
60260 20 20 20 20 20 20 20 20 3a 74 6f 6f 6c 5f 75 73 65 5f 69 64 20 28 70 6c 69 73 74 2d 67 65 74 20 ........:tool_use_id.(plist-get.
60280 74 6f 6f 6c 2d 63 61 6c 6c 20 3a 69 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 tool-call.:id)..................
602a0 20 20 20 20 3a 63 6f 6e 74 65 6e 74 20 28 69 66 20 28 73 74 72 69 6e 67 70 20 72 65 73 75 6c 74 ....:content.(if.(stringp.result
602c0 29 20 72 65 73 75 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 ).result........................
602e0 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 72 65 73 75 6c 74 .........(prin1-to-string.result
60300 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 70 72 6f 67 31 20 66 6f 72 6d 61 74 74 65 64 0a )))))..........(prog1.formatted.
60320 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 70 6c 69 73 74 2d 67 65 74 20 74 6f 6f 6c ...........(when.(plist-get.tool
60340 2d 63 61 6c 6c 20 3a 65 72 72 6f 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 -call.:error)..............(plis
60360 74 2d 70 75 74 20 66 6f 72 6d 61 74 74 65 64 20 3a 69 73 5f 65 72 72 6f 72 20 74 29 29 29 29 29 t-put.formatted.:is_error.t)))))
60380 0a 20 20 20 20 20 74 6f 6f 6c 2d 75 73 65 29 29 29 29 0a 0a 3b 3b 20 4e 4f 54 45 3a 20 4e 6f 20 ......tool-use))))..;;.NOTE:.No.
603a0 60 67 70 74 65 6c 2d 2d 69 6e 6a 65 63 74 2d 70 72 6f 6d 70 74 27 20 6d 65 74 68 6f 64 20 72 65 `gptel--inject-prompt'.method.re
603c0 71 75 69 72 65 64 20 66 6f 72 20 67 70 74 65 6c 2d 61 6e 74 68 72 6f 70 69 63 2c 20 73 69 6e 63 quired.for.gptel-anthropic,.sinc
603e0 65 0a 3b 3b 20 74 68 69 73 20 69 73 20 68 61 6e 64 6c 65 64 20 62 79 20 69 74 73 20 64 65 66 67 e.;;.this.is.handled.by.its.defg
60400 65 6e 65 72 69 63 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 0a 0a 3b 3b 20 54 4f 44 4f 3a 20 eneric.implementation..;;.TODO:.
60420 52 65 6d 6f 76 65 20 74 68 65 73 65 20 66 75 6e 63 74 69 6f 6e 73 20 28 23 37 39 32 29 0a 28 64 Remove.these.functions.(#792).(d
60440 65 66 75 6e 20 67 70 74 65 6c 2d 2d 61 6e 74 68 72 6f 70 69 63 2d 66 6f 72 6d 61 74 2d 74 6f 6f efun.gptel--anthropic-format-too
60460 6c 2d 69 64 20 28 74 6f 6f 6c 2d 69 64 29 0a 20 20 28 75 6e 6c 65 73 73 20 74 6f 6f 6c 2d 69 64 l-id.(tool-id)...(unless.tool-id
60480 0a 20 20 20 20 28 73 65 74 71 20 74 6f 6f 6c 2d 69 64 20 28 73 75 62 73 74 72 69 6e 67 0a 20 20 .....(setq.tool-id.(substring...
604a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 64 35 20 28 66 6f 72 6d 61 74 20 22 25 .................(md5.(format."%
604c0 73 25 73 22 20 28 72 61 6e 64 6f 6d 29 20 28 66 6c 6f 61 74 2d 74 69 6d 65 29 29 29 0a 20 20 20 s%s".(random).(float-time)))....
604e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 69 6c 20 32 34 29 29 29 0a 20 20 28 69 66 20 ................nil.24)))...(if.
60500 28 6f 72 20 28 73 74 72 69 6e 67 2d 70 72 65 66 69 78 2d 70 20 22 63 61 6c 6c 5f 22 20 74 6f 6f (or.(string-prefix-p."call_".too
60520 6c 2d 69 64 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 2d 70 72 65 66 69 78 2d 70 l-id)...........(string-prefix-p
60540 20 22 74 6f 6f 6c 75 5f 22 20 74 6f 6f 6c 2d 69 64 29 29 0a 20 20 20 20 20 20 74 6f 6f 6c 2d 69 ."toolu_".tool-id)).......tool-i
60560 64 0a 20 20 20 20 28 66 6f 72 6d 61 74 20 22 74 6f 6f 6c 75 5f 25 73 22 20 74 6f 6f 6c 2d 69 64 d.....(format."toolu_%s".tool-id
60580 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 61 6e 74 68 72 6f 70 69 63 2d 75 6e 66 )))..(defun.gptel--anthropic-unf
605a0 6f 72 6d 61 74 2d 74 6f 6f 6c 2d 69 64 20 28 74 6f 6f 6c 2d 69 64 29 0a 20 20 28 6f 72 20 28 61 ormat-tool-id.(tool-id)...(or.(a
605c0 6e 64 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 20 22 74 6f 6f 6c 75 5f 5c 5c 28 2e 2b 5c 5c 29 nd.(string-match."toolu_\\(.+\\)
605e0 22 20 74 6f 6f 6c 2d 69 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 74 63 68 2d 73 74 72 ".tool-id)............(match-str
60600 69 6e 67 20 31 20 74 6f 6f 6c 2d 69 64 29 29 0a 20 20 20 20 20 20 74 6f 6f 6c 2d 69 64 29 29 0a ing.1.tool-id)).......tool-id)).
60620 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 6c 69 73 74 .(cl-defmethod.gptel--parse-list
60640 20 28 28 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 6d .((backend.gptel-anthropic).prom
60660 70 74 2d 6c 69 73 74 29 0a 20 20 28 6c 65 74 20 28 28 66 75 6c 6c 2d 70 72 6f 6d 70 74 0a 20 20 pt-list)...(let.((full-prompt...
60680 20 20 20 20 20 20 20 28 69 66 20 28 63 6f 6e 73 70 20 28 63 61 72 20 70 72 6f 6d 70 74 2d 6c 69 .......(if.(consp.(car.prompt-li
606a0 73 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 70 72 6f 6d 70 74 73 st))..............(let.((prompts
606c0 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 6f 6c 69 73 74 20 28 65 6e 74 72 79 ))................(dolist.(entry
606e0 20 70 72 6f 6d 70 74 2d 6c 69 73 74 29 20 3b 20 41 64 76 61 6e 63 65 64 20 66 6f 72 6d 61 74 2c .prompt-list).;.Advanced.format,
60700 20 6c 69 73 74 20 6f 66 20 6c 69 73 74 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .list.of.lists..................
60720 28 70 63 61 73 65 20 65 6e 74 72 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (pcase.entry....................
60740 28 60 28 70 72 6f 6d 70 74 20 2e 20 2c 6d 73 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (`(prompt...,msg)...............
60760 20 20 20 20 20 20 28 70 75 73 68 20 28 6c 69 73 74 20 3a 72 6f 6c 65 20 22 75 73 65 72 22 0a 20 ......(push.(list.:role."user"..
60780 20 20 20 20 20 20 20 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 ...............................:
607a0 63 6f 6e 74 65 6e 74 20 60 5b 28 3a 74 79 70 65 20 22 74 65 78 74 22 20 3a 74 65 78 74 20 2c 28 content.`[(:type."text".:text.,(
607c0 6f 72 20 28 63 61 72 2d 73 61 66 65 20 6d 73 67 29 20 6d 73 67 29 29 5d 29 0a 20 20 20 20 20 20 or.(car-safe.msg).msg))]).......
607e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 6d 70 74 73 29 29 0a 20 20 ....................prompts))...
60800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 60 28 72 65 73 70 6f 6e 73 65 20 2e 20 2c .................(`(response...,
60820 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 28 70 75 73 68 20 28 msg).....................(push.(
60840 6c 69 73 74 20 3a 72 6f 6c 65 20 22 61 73 73 69 73 74 61 6e 74 22 0a 20 20 20 20 20 20 20 20 20 list.:role."assistant"..........
60860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 6f 6e 74 65 6e 74 20 .......................:content.
60880 60 5b 28 3a 74 79 70 65 20 22 74 65 78 74 22 20 3a 74 65 78 74 20 2c 28 6f 72 20 28 63 61 72 2d `[(:type."text".:text.,(or.(car-
608a0 73 61 66 65 20 6d 73 67 29 20 6d 73 67 29 29 5d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 safe.msg).msg))])...............
608c0 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 6d 70 74 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 ............prompts))...........
608e0 20 20 20 20 20 20 20 20 20 28 60 28 74 6f 6f 6c 20 2e 20 2c 63 61 6c 6c 29 0a 20 20 20 20 20 20 .........(`(tool...,call).......
60900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 70 6c 69 73 74 2d 67 65 74 ..............(unless.(plist-get
60920 20 63 61 6c 6c 20 3a 69 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .call.:id)......................
60940 20 28 70 6c 69 73 74 2d 70 75 74 20 63 61 6c 6c 20 3a 69 64 20 28 67 70 74 65 6c 2d 2d 61 6e 74 .(plist-put.call.:id.(gptel--ant
60960 68 72 6f 70 69 63 2d 66 6f 72 6d 61 74 2d 74 6f 6f 6c 2d 69 64 20 6e 69 6c 29 29 29 0a 20 20 20 hropic-format-tool-id.nil)))....
60980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 6c 69 73 74 20 3a 72 6f .................(push.(list.:ro
609a0 6c 65 20 22 61 73 73 69 73 74 61 6e 74 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 le."assistant"..................
609c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 6f 6e 74 65 6e 74 20 60 5b 28 20 3a 74 79 70 ...............:content.`[(.:typ
609e0 65 20 22 74 6f 6f 6c 5f 75 73 65 22 20 3a 69 64 20 2c 28 70 6c 69 73 74 2d 67 65 74 20 63 61 6c e."tool_use".:id.,(plist-get.cal
60a00 6c 20 3a 69 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 l.:id)..........................
60a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6e 61 6d 65 20 2c 28 70 6c 69 73 ....................:name.,(plis
60a40 74 2d 67 65 74 20 63 61 6c 6c 20 3a 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 t-get.call.:name)...............
60a60 20 20 20 20 20 20 20 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 ...............................:
60a80 69 6e 70 75 74 20 2c 28 70 6c 69 73 74 2d 67 65 74 20 63 61 6c 6c 20 3a 61 72 67 73 29 29 5d 29 input.,(plist-get.call.:args))])
60aa0 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 70 72 6f 6d 70 ...........................promp
60ac0 74 73 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 73 68 20 28 67 ts).....................(push.(g
60ae0 70 74 65 6c 2d 2d 70 61 72 73 65 2d 74 6f 6f 6c 2d 72 65 73 75 6c 74 73 20 62 61 63 6b 65 6e 64 ptel--parse-tool-results.backend
60b00 20 28 6c 69 73 74 20 28 63 64 72 20 65 6e 74 72 79 29 29 29 20 70 72 6f 6d 70 74 73 29 29 29 29 .(list.(cdr.entry))).prompts))))
60b20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 72 65 76 65 72 73 65 20 70 72 6f 6d 70 74 ................(nreverse.prompt
60b40 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 74 65 78 74 s))............(cl-loop.for.text
60b60 20 69 6e 20 70 72 6f 6d 70 74 2d 6c 69 73 74 20 3b 20 53 69 6d 70 6c 65 20 66 6f 72 6d 61 74 2c .in.prompt-list.;.Simple.format,
60b80 20 6c 69 73 74 20 6f 66 20 73 74 72 69 6e 67 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .list.of.strings................
60ba0 20 20 20 20 20 66 6f 72 20 72 6f 6c 65 20 3d 20 74 20 74 68 65 6e 20 28 6e 6f 74 20 72 6f 6c 65 .....for.role.=.t.then.(not.role
60bc0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 74 65 78 74 0a 20 20 ).....................if.text...
60be0 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 28 6c 69 73 74 20 ..................collect.(list.
60c00 3a 72 6f 6c 65 20 28 69 66 20 72 6f 6c 65 20 22 75 73 65 72 22 20 22 61 73 73 69 73 74 61 6e 74 :role.(if.role."user"."assistant
60c20 22 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 ")..............................
60c40 20 20 20 20 20 3a 63 6f 6e 74 65 6e 74 20 60 5b 28 3a 74 79 70 65 20 22 74 65 78 74 22 20 3a 74 .....:content.`[(:type."text".:t
60c60 65 78 74 20 2c 74 65 78 74 29 5d 29 29 29 29 29 0a 20 20 20 20 3b 3b 20 63 61 63 68 65 20 6d 65 ext.,text)]))))).....;;.cache.me
60c80 73 73 61 67 65 73 20 69 66 20 72 65 71 75 69 72 65 64 3a 20 61 64 64 20 63 61 63 68 65 5f 63 6f ssages.if.required:.add.cache_co
60ca0 6e 74 72 6f 6c 20 74 6f 20 74 68 65 20 6c 61 73 74 20 6d 65 73 73 61 67 65 0a 20 20 20 20 28 77 ntrol.to.the.last.message.....(w
60cc0 68 65 6e 20 28 61 6e 64 20 28 6f 72 20 28 65 71 20 67 70 74 65 6c 2d 63 61 63 68 65 20 74 29 20 hen.(and.(or.(eq.gptel-cache.t).
60ce0 28 6d 65 6d 71 20 27 6d 65 73 73 61 67 65 20 67 70 74 65 6c 2d 63 61 63 68 65 29 29 0a 20 20 20 (memq.'message.gptel-cache))....
60d00 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 63 61 70 61 62 6c ............(gptel--model-capabl
60d20 65 2d 70 20 27 63 61 63 68 65 29 29 0a 20 20 20 20 20 20 28 6e 63 6f 6e 63 20 28 61 72 65 66 20 e-p.'cache)).......(nconc.(aref.
60d40 28 70 6c 69 73 74 2d 67 65 74 20 28 63 61 72 20 28 6c 61 73 74 20 66 75 6c 6c 2d 70 72 6f 6d 70 (plist-get.(car.(last.full-promp
60d60 74 29 29 20 3a 63 6f 6e 74 65 6e 74 29 20 30 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 27 28 t)).:content).0)..............'(
60d80 3a 63 61 63 68 65 5f 63 6f 6e 74 72 6f 6c 20 28 3a 74 79 70 65 20 22 65 70 68 65 6d 65 72 61 6c :cache_control.(:type."ephemeral
60da0 22 20 3a 74 74 6c 20 22 31 68 22 29 29 29 29 0a 20 20 20 20 66 75 6c 6c 2d 70 72 6f 6d 70 74 29 ".:ttl."1h")))).....full-prompt)
60dc0 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 62 75 )..(cl-defmethod.gptel--parse-bu
60de0 66 66 65 72 20 28 28 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 ffer.((backend.gptel-anthropic).
60e00 26 6f 70 74 69 6f 6e 61 6c 20 6d 61 78 2d 65 6e 74 72 69 65 73 29 0a 20 20 28 6c 65 74 20 28 28 &optional.max-entries)...(let.((
60e20 70 72 6f 6d 70 74 73 29 20 28 70 72 65 76 2d 70 74 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 prompts).(prev-pt.(point))).....
60e40 28 69 66 20 28 6f 72 20 67 70 74 65 6c 2d 6d 6f 64 65 20 67 70 74 65 6c 2d 74 72 61 63 6b 2d 72 (if.(or.gptel-mode.gptel-track-r
60e60 65 73 70 6f 6e 73 65 29 0a 20 20 20 20 20 20 20 20 28 77 68 69 6c 65 20 28 61 6e 64 20 28 6f 72 esponse).........(while.(and.(or
60e80 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 2d 65 6e 74 72 69 .(not.max-entries).(>=.max-entri
60ea0 65 73 20 30 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f es.0)).....................(goto
60ec0 2d 63 68 61 72 20 28 70 72 65 76 69 6f 75 73 2d 73 69 6e 67 6c 65 2d 70 72 6f 70 65 72 74 79 2d -char.(previous-single-property-
60ee0 63 68 61 6e 67 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 change..........................
60f00 20 20 20 20 20 20 20 28 70 6f 69 6e 74 29 20 27 67 70 74 65 6c 20 6e 69 6c 20 28 70 6f 69 6e 74 .......(point).'gptel.nil.(point
60f20 2d 6d 69 6e 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 6e 6f 74 -min))).....................(not
60f40 20 28 3d 20 28 70 6f 69 6e 74 29 20 70 72 65 76 2d 70 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 .(=.(point).prev-pt)))..........
60f60 20 3b 3b 20 48 41 43 4b 20 55 6e 74 69 6c 20 77 65 20 63 61 6e 20 66 69 6e 64 20 61 20 6d 6f 72 .;;.HACK.Until.we.can.find.a.mor
60f80 65 20 72 6f 62 75 73 74 20 73 6f 6c 75 74 69 6f 6e 20 66 6f 72 20 65 64 69 74 69 6e 67 0a 20 20 e.robust.solution.for.editing...
60fa0 20 20 20 20 20 20 20 20 3b 3b 20 72 65 73 70 6f 6e 73 65 73 2c 20 69 67 6e 6f 72 65 20 70 72 6f ........;;.responses,.ignore.pro
60fc0 6d 70 74 73 20 63 6f 6e 74 61 69 6e 69 6e 67 20 6f 6e 6c 79 20 77 68 69 74 65 73 70 61 63 65 2c mpts.containing.only.whitespace,
60fe0 20 61 73 20 74 68 65 0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20 41 6e 74 68 72 6f 70 69 63 20 41 .as.the...........;;.Anthropic.A
61000 50 49 20 63 61 6e 27 74 20 68 61 6e 64 6c 65 20 69 74 2e 20 20 53 65 65 20 23 34 35 32 2c 20 23 PI.can't.handle.it...See.#452,.#
61020 34 30 39 2c 20 23 34 30 36 2c 20 23 33 35 31 20 61 6e 64 20 23 33 32 31 0a 20 20 20 20 20 20 20 409,.#406,.#351.and.#321........
61040 20 20 20 3b 3b 20 57 65 20 63 68 65 63 6b 20 66 6f 72 20 62 6c 61 6e 6b 20 70 72 6f 6d 70 74 73 ...;;.We.check.for.blank.prompts
61060 20 62 79 20 73 6b 69 70 70 69 6e 67 20 77 68 69 74 65 73 70 61 63 65 20 61 6e 64 20 63 6f 6d 70 .by.skipping.whitespace.and.comp
61080 61 72 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20 70 6f 69 6e 74 20 61 67 61 69 6e 73 74 aring...........;;.point.against
610a0 20 74 68 65 20 70 72 65 76 69 6f 75 73 2e 0a 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 .the.previous............(unless
610c0 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 20 28 73 6b 69 70 2d 73 79 6e 74 61 78 2d 66 6f .(save-excursion.(skip-syntax-fo
610e0 72 77 61 72 64 20 22 20 22 29 20 28 3e 3d 20 28 70 6f 69 6e 74 29 20 70 72 65 76 2d 70 74 29 29 rward.".").(>=.(point).prev-pt))
61100 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 63 61 73 65 20 28 67 65 74 2d 63 68 61 72 2d 70 72 .............(pcase.(get-char-pr
61120 6f 70 65 72 74 79 20 28 70 6f 69 6e 74 29 20 27 67 70 74 65 6c 29 0a 20 20 20 20 20 20 20 20 20 operty.(point).'gptel)..........
61140 20 20 20 20 20 28 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 28 .....('response................(
61160 77 68 65 6e 2d 6c 65 74 2a 20 28 28 63 6f 6e 74 65 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 when-let*.((content.............
61180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 74 72 69 6d 2d 70 72 65 ................(gptel--trim-pre
611a0 66 69 78 65 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 fixes...........................
611c0 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 65 72 74 69 ...(buffer-substring-no-properti
611e0 65 73 20 28 70 6f 69 6e 74 29 20 70 72 65 76 2d 70 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 es.(point).prev-pt))))..........
61200 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 6e 6f 74 20 28 73 74 72 69 6e 67 2d 62 6c 61 6e 6b ........(when.(not.(string-blank
61220 2d 70 20 63 6f 6e 74 65 6e 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -p.content))....................
61240 28 70 75 73 68 20 28 6c 69 73 74 20 3a 72 6f 6c 65 20 22 61 73 73 69 73 74 61 6e 74 22 20 3a 63 (push.(list.:role."assistant".:c
61260 6f 6e 74 65 6e 74 20 63 6f 6e 74 65 6e 74 29 20 70 72 6f 6d 70 74 73 29 29 29 29 0a 20 20 20 20 ontent.content).prompts)))).....
61280 20 20 20 20 20 20 20 20 20 20 28 60 28 74 6f 6f 6c 20 2e 20 2c 69 64 29 0a 20 20 20 20 20 20 20 ..........(`(tool...,id)........
612a0 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.........
612c0 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 20 .........(condition-case.nil....
612e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 74 6f 6f 6c 2d 63 ..................(let*.((tool-c
61300 61 6c 6c 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 0a 20 20 20 all.(read.(current-buffer)))....
61320 20 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 28 69 64 20 .........................;;.(id.
61340 28 67 70 74 65 6c 2d 2d 61 6e 74 68 72 6f 70 69 63 2d 66 6f 72 6d 61 74 2d 74 6f 6f 6c 2d 69 64 (gptel--anthropic-format-tool-id
61360 20 69 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 20 .id))...........................
61380 20 20 28 6e 61 6d 65 20 28 70 6c 69 73 74 2d 67 65 74 20 74 6f 6f 6c 2d 63 61 6c 6c 20 3a 6e 61 ..(name.(plist-get.tool-call.:na
613a0 6d 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 20 20 20 20 20 me))............................
613c0 20 28 61 72 67 75 6d 65 6e 74 73 20 28 70 6c 69 73 74 2d 67 65 74 20 74 6f 6f 6c 2d 63 61 6c 6c .(arguments.(plist-get.tool-call
613e0 20 3a 61 72 67 73 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 .:args))).......................
61400 20 28 70 6c 69 73 74 2d 70 75 74 20 74 6f 6f 6c 2d 63 61 6c 6c 20 3a 69 64 20 69 64 29 0a 20 20 .(plist-put.tool-call.:id.id)...
61420 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.
61440 74 6f 6f 6c 2d 63 61 6c 6c 20 3a 72 65 73 75 6c 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 tool-call.:result...............
61460 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 74 72 69 6d ....................(string-trim
61480 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
614a0 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 ................................
614c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6f 69 6e 74 29 20 70 72 65 76 2d 70 74 .................(point).prev-pt
614e0 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 70 75 73 68 )))........................(push
61500 20 28 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 74 6f 6f 6c 2d 72 65 73 75 6c 74 73 20 62 61 63 6b .(gptel--parse-tool-results.back
61520 65 6e 64 20 28 6c 69 73 74 20 74 6f 6f 6c 2d 63 61 6c 6c 29 29 0a 20 20 20 20 20 20 20 20 20 20 end.(list.tool-call))...........
61540 20 20 20 20 20 20 20 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 ...................prompts).....
61560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 6c 69 73 74 20 3a ...................(push.(list.:
61580 72 6f 6c 65 20 22 61 73 73 69 73 74 61 6e 74 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 role."assistant"................
615a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 6f 6e 74 65 6e 74 20 60 5b 28 ....................:content.`[(
615c0 20 3a 74 79 70 65 20 22 74 6f 6f 6c 5f 75 73 65 22 20 3a 69 64 20 2c 69 64 20 3a 6e 61 6d 65 20 .:type."tool_use".:id.,id.:name.
615e0 2c 6e 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 ,name...........................
61600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 69 6e 70 75 74 20 2c 61 72 ......................:input.,ar
61620 67 75 6d 65 6e 74 73 29 5d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 guments)])......................
61640 20 20 20 20 20 20 20 20 70 72 6f 6d 70 74 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ........prompts))...............
61660 20 20 20 20 20 28 28 65 6e 64 2d 6f 66 2d 66 69 6c 65 20 69 6e 76 61 6c 69 64 2d 72 65 61 64 2d .....((end-of-file.invalid-read-
61680 73 79 6e 74 61 78 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 syntax).....................(mes
616a0 73 61 67 65 20 28 66 6f 72 6d 61 74 20 22 43 6f 75 6c 64 20 6e 6f 74 20 70 61 72 73 65 20 74 6f sage.(format."Could.not.parse.to
616c0 6f 6c 2d 63 61 6c 6c 20 25 73 20 6f 6e 20 6c 69 6e 65 20 25 73 22 0a 20 20 20 20 20 20 20 20 20 ol-call.%s.on.line.%s"..........
616e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 64 20 28 ............................id.(
61700 6c 69 6e 65 2d 6e 75 6d 62 65 72 2d 61 74 2d 70 6f 73 20 28 70 6f 69 6e 74 29 29 29 29 29 29 29 line-number-at-pos.(point)))))))
61720 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 27 69 67 6e 6f 72 65 29 0a 20 20 20 20 20 20 )...............('ignore).......
61740 20 20 20 20 20 20 20 20 28 27 6e 69 6c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ........('nil...................
61760 20 20 3b 20 75 73 65 72 20 72 6f 6c 65 3a 20 70 6f 73 73 69 62 6c 79 20 77 69 74 68 20 6d 65 64 ..;.user.role:.possibly.with.med
61780 69 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 67 70 74 65 6c 2d 74 72 61 63 ia................(if.gptel-trac
617a0 6b 2d 6d 65 64 69 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e k-media....................(when
617c0 2d 6c 65 74 2a 20 28 28 63 6f 6e 74 65 6e 74 20 28 67 70 74 65 6c 2d 2d 61 6e 74 68 72 6f 70 69 -let*.((content.(gptel--anthropi
617e0 63 2d 70 61 72 73 65 2d 6d 75 6c 74 69 70 61 72 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 c-parse-multipart...............
61800 20 20 20 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
61820 6c 2d 2d 70 61 72 73 65 2d 6d 65 64 69 61 2d 6c 69 6e 6b 73 20 6d 61 6a 6f 72 2d 6d 6f 64 65 20 l--parse-media-links.major-mode.
61840 28 70 6f 69 6e 74 29 20 70 72 65 76 2d 70 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 (point).prev-pt)))).............
61860 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 3e 20 28 6c 65 6e 67 74 68 20 63 6f 6e 74 65 6e .........(when.(>.(length.conten
61880 74 29 20 30 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 70 75 t).0)........................(pu
618a0 73 68 20 28 6c 69 73 74 20 3a 72 6f 6c 65 20 22 75 73 65 72 22 20 3a 63 6f 6e 74 65 6e 74 20 63 sh.(list.:role."user".:content.c
618c0 6f 6e 74 65 6e 74 29 20 70 72 6f 6d 70 74 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ontent).prompts)))..............
618e0 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 63 6f 6e 74 65 6e 74 20 28 67 70 74 65 6c 2d ....(when-let*.((content.(gptel-
61900 2d 74 72 69 6d 2d 70 72 65 66 69 78 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -trim-prefixes..................
61920 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 73 75 ......................(buffer-su
61940 62 73 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 20 28 70 6f 69 6e 74 29 20 70 72 bstring-no-properties.(point).pr
61960 65 76 2d 70 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 28 70 75 ev-pt))))....................(pu
61980 73 68 20 28 6c 69 73 74 20 3a 72 6f 6c 65 20 22 75 73 65 72 22 20 3a 63 6f 6e 74 65 6e 74 20 63 sh.(list.:role."user".:content.c
619a0 6f 6e 74 65 6e 74 29 20 70 72 6f 6d 70 74 73 29 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 ontent).prompts))))))...........
619c0 28 73 65 74 71 20 70 72 65 76 2d 70 74 20 28 70 6f 69 6e 74 29 29 0a 20 20 20 20 20 20 20 20 20 (setq.prev-pt.(point))..........
619e0 20 28 61 6e 64 20 6d 61 78 2d 65 6e 74 72 69 65 73 20 28 63 6c 2d 64 65 63 66 20 6d 61 78 2d 65 .(and.max-entries.(cl-decf.max-e
61a00 6e 74 72 69 65 73 29 29 29 0a 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 63 6f 6e ntries))).......(when-let*.((con
61a20 74 65 6e 74 20 28 73 74 72 69 6e 67 2d 74 72 69 6d 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 tent.(string-trim.(buffer-substr
61a40 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...............
61a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6f 69 6e ...........................(poin
61a80 74 2d 6d 69 6e 29 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 3b t-min).(point-max))))).........;
61aa0 3b 20 58 58 58 20 66 61 69 6c 73 20 69 66 20 63 6f 6e 74 65 6e 74 20 69 73 20 65 6d 70 74 79 2e ;.XXX.fails.if.content.is.empty.
61ac0 20 20 54 68 65 20 63 6f 72 72 65 63 74 20 65 72 72 6f 72 20 62 65 68 61 76 69 6f 72 20 69 73 20 ..The.correct.error.behavior.is.
61ae0 6c 65 66 74 20 74 6f 0a 20 20 20 20 20 20 20 20 3b 3b 20 61 20 66 75 74 75 72 65 20 64 69 73 63 left.to.........;;.a.future.disc
61b00 75 73 73 69 6f 6e 2e 0a 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 6c 69 73 74 20 3a 72 6f 6c ussion..........(push.(list.:rol
61b20 65 20 22 75 73 65 72 22 20 3a 63 6f 6e 74 65 6e 74 20 63 6f 6e 74 65 6e 74 29 20 70 72 6f 6d 70 e."user".:content.content).promp
61b40 74 73 29 29 29 0a 20 20 20 20 3b 3b 20 43 61 63 68 65 20 6d 65 73 73 61 67 65 73 20 69 66 20 72 ts))).....;;.Cache.messages.if.r
61b60 65 71 75 69 72 65 64 3a 20 61 64 64 20 63 61 63 68 65 5f 63 6f 6e 74 72 6f 6c 20 74 6f 20 74 68 equired:.add.cache_control.to.th
61b80 65 20 6c 61 73 74 20 6d 65 73 73 61 67 65 0a 20 20 20 20 28 69 66 20 28 61 6e 64 20 28 6f 72 20 e.last.message.....(if.(and.(or.
61ba0 28 65 71 20 67 70 74 65 6c 2d 63 61 63 68 65 20 74 29 20 28 6d 65 6d 71 20 27 6d 65 73 73 61 67 (eq.gptel-cache.t).(memq.'messag
61bc0 65 20 67 70 74 65 6c 2d 63 61 63 68 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 e.gptel-cache))..............(gp
61be0 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 63 61 70 61 62 6c 65 2d 70 20 27 63 61 63 68 65 29 29 0a 20 20 tel--model-capable-p.'cache))...
61c00 20 20 20 20 20 20 28 6c 65 74 20 28 28 6c 61 73 74 2d 6d 65 73 73 61 67 65 20 28 70 6c 69 73 74 ......(let.((last-message.(plist
61c20 2d 67 65 74 20 28 63 61 72 20 28 6c 61 73 74 20 70 72 6f 6d 70 74 73 29 29 20 3a 63 6f 6e 74 65 -get.(car.(last.prompts)).:conte
61c40 6e 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 73 74 72 69 6e 67 70 20 6c 61 73 nt)))...........(if.(stringp.las
61c60 74 2d 6d 65 73 73 61 67 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d t-message)...............(plist-
61c80 70 75 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 61 72 20 28 6c 61 73 74 20 70 72 put................(car.(last.pr
61ca0 6f 6d 70 74 73 29 29 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 ompts)).:content................
61cc0 60 5b 28 3a 74 79 70 65 20 22 74 65 78 74 22 20 3a 74 65 78 74 20 2c 6c 61 73 74 2d 6d 65 73 73 `[(:type."text".:text.,last-mess
61ce0 61 67 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 61 63 68 65 5f 63 6f 6e age...................:cache_con
61d00 74 72 6f 6c 20 28 3a 74 79 70 65 20 22 65 70 68 65 6d 65 72 61 6c 22 20 3a 74 74 6c 20 22 31 68 trol.(:type."ephemeral".:ttl."1h
61d20 22 29 29 5d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 63 6f 6e 63 20 28 61 72 65 66 20 28 "))]).............(nconc.(aref.(
61d40 70 6c 69 73 74 2d 67 65 74 20 28 63 61 72 20 28 6c 61 73 74 20 70 72 6f 6d 70 74 73 29 29 20 3a plist-get.(car.(last.prompts)).:
61d60 63 6f 6e 74 65 6e 74 29 20 30 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 content).0)....................'
61d80 28 3a 63 61 63 68 65 5f 63 6f 6e 74 72 6f 6c 20 28 3a 74 79 70 65 20 22 65 70 68 65 6d 65 72 61 (:cache_control.(:type."ephemera
61da0 6c 22 20 3a 74 74 6c 20 22 31 68 22 29 29 29 29 29 29 0a 20 20 20 20 70 72 6f 6d 70 74 73 29 29 l".:ttl."1h")))))).....prompts))
61dc0 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 61 6e 74 68 72 6f 70 69 63 2d 70 61 72 73 65 2d ..(defun.gptel--anthropic-parse-
61de0 6d 75 6c 74 69 70 61 72 74 20 28 70 61 72 74 73 29 0a 20 20 22 43 6f 6e 76 65 72 74 20 61 20 6d multipart.(parts)..."Convert.a.m
61e00 75 6c 74 69 70 61 72 74 20 70 72 6f 6d 70 74 20 50 41 52 54 53 20 74 6f 20 74 68 65 20 41 6e 74 ultipart.prompt.PARTS.to.the.Ant
61e20 68 72 6f 70 69 63 20 41 50 49 20 66 6f 72 6d 61 74 2e 0a 0a 54 68 65 20 69 6e 70 75 74 20 69 73 hropic.API.format...The.input.is
61e40 20 61 6e 20 61 6c 69 73 74 20 6f 66 20 74 68 65 20 66 6f 72 6d 0a 20 28 28 3a 74 65 78 74 20 5c .an.alist.of.the.form..((:text.\
61e60 22 73 6f 6d 65 20 74 65 78 74 5c 22 29 0a 20 20 28 3a 6d 65 64 69 61 20 5c 22 2f 70 61 74 68 2f "some.text\")...(:media.\"/path/
61e80 74 6f 2f 6d 65 64 69 61 2e 70 6e 67 5c 22 20 3a 6d 69 6d 65 20 5c 22 69 6d 61 67 65 2f 70 6e 67 to/media.png\".:mime.\"image/png
61ea0 5c 22 29 0a 20 20 28 3a 74 65 78 74 20 5c 22 4d 6f 72 65 20 74 65 78 74 5c 22 29 29 2e 0a 0a 54 \")...(:text.\"More.text\"))...T
61ec0 68 65 20 6f 75 74 70 75 74 20 69 73 20 61 20 76 65 63 74 6f 72 20 6f 66 20 65 6e 74 72 69 65 73 he.output.is.a.vector.of.entries
61ee0 20 69 6e 20 61 20 62 61 63 6b 65 6e 64 2d 61 70 70 72 6f 70 72 69 61 74 65 0a 66 6f 72 6d 61 74 .in.a.backend-appropriate.format
61f00 2e 22 0a 20 20 28 63 6c 2d 6c 6f 6f 70 0a 20 20 20 66 6f 72 20 70 61 72 74 20 69 6e 20 70 61 72 ."...(cl-loop....for.part.in.par
61f20 74 73 0a 20 20 20 66 6f 72 20 6e 20 75 70 66 72 6f 6d 20 31 0a 20 20 20 77 69 74 68 20 6c 61 73 ts....for.n.upfrom.1....with.las
61f40 74 20 3d 20 28 6c 65 6e 67 74 68 20 70 61 72 74 73 29 0a 20 20 20 77 69 74 68 20 74 79 70 65 0a t.=.(length.parts)....with.type.
61f60 20 20 20 66 6f 72 20 74 65 78 74 20 3d 20 28 70 6c 69 73 74 2d 67 65 74 20 70 61 72 74 20 3a 74 ...for.text.=.(plist-get.part.:t
61f80 65 78 74 29 0a 20 20 20 66 6f 72 20 6d 69 6d 65 20 3d 20 28 70 6c 69 73 74 2d 67 65 74 20 70 61 ext)....for.mime.=.(plist-get.pa
61fa0 72 74 20 3a 6d 69 6d 65 29 0a 20 20 20 66 6f 72 20 6d 65 64 69 61 20 3d 20 28 70 6c 69 73 74 2d rt.:mime)....for.media.=.(plist-
61fc0 67 65 74 20 70 61 72 74 20 3a 6d 65 64 69 61 29 0a 20 20 20 69 66 20 74 65 78 74 20 64 6f 0a 20 get.part.:media)....if.text.do..
61fe0 20 20 28 61 6e 64 20 28 6f 72 20 28 3d 20 6e 20 31 29 20 28 3d 20 6e 20 6c 61 73 74 29 29 20 28 ..(and.(or.(=.n.1).(=.n.last)).(
62000 73 65 74 71 20 74 65 78 74 20 28 67 70 74 65 6c 2d 2d 74 72 69 6d 2d 70 72 65 66 69 78 65 73 20 setq.text.(gptel--trim-prefixes.
62020 74 65 78 74 29 29 29 20 61 6e 64 0a 20 20 20 69 66 20 74 65 78 74 0a 20 20 20 63 6f 6c 6c 65 63 text))).and....if.text....collec
62040 74 20 60 28 3a 74 79 70 65 20 22 74 65 78 74 22 20 3a 74 65 78 74 20 2c 74 65 78 74 29 20 69 6e t.`(:type."text".:text.,text).in
62060 74 6f 20 70 61 72 74 73 2d 61 72 72 61 79 20 65 6e 64 0a 20 20 20 65 6c 73 65 20 69 66 20 6d 65 to.parts-array.end....else.if.me
62080 64 69 61 0a 20 20 20 64 6f 0a 20 20 20 28 73 65 74 71 20 74 79 70 65 20 28 63 6f 6e 64 20 20 20 dia....do....(setq.type.(cond...
620a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 43 75 72 72 65 6e 74 6c 79 20 73 75 70 ..................;Currently.sup
620c0 70 6f 72 74 65 64 3a 20 49 6d 61 67 65 73 20 61 6e 64 20 50 44 46 73 0a 20 20 20 20 20 20 20 20 ported:.Images.and.PDFs.........
620e0 20 20 20 20 20 20 20 28 28 65 71 75 61 6c 20 28 73 75 62 73 74 72 69 6e 67 20 6d 69 6d 65 20 30 .......((equal.(substring.mime.0
62100 20 35 29 20 22 69 6d 61 67 65 22 29 20 22 69 6d 61 67 65 22 29 0a 20 20 20 20 20 20 20 20 20 20 .5)."image")."image")...........
62120 20 20 20 20 20 3b 3b 20 4e 4f 54 45 3a 20 4f 6e 6c 79 20 43 6c 61 75 64 65 20 33 2e 35 20 53 6f .....;;.NOTE:.Only.Claude.3.5.So
62140 6e 6e 65 74 20 73 75 70 70 6f 72 74 73 20 50 44 46 20 64 6f 63 75 6d 65 6e 74 73 3a 0a 20 20 20 nnet.supports.PDF.documents:....
62160 20 20 20 20 20 20 20 20 20 20 20 20 28 28 65 71 75 61 6c 20 6d 69 6d 65 20 22 61 70 70 6c 69 63 ............((equal.mime."applic
62180 61 74 69 6f 6e 2f 70 64 66 22 29 20 22 64 6f 63 75 6d 65 6e 74 22 29 0a 20 20 20 20 20 20 20 20 ation/pdf")."document").........
621a0 20 20 20 20 20 20 20 28 74 20 28 65 72 72 6f 72 20 28 63 6f 6e 63 61 74 20 22 28 67 70 74 65 6c .......(t.(error.(concat."(gptel
621c0 2d 61 6e 74 68 72 6f 70 69 63 29 20 52 65 71 75 65 73 74 20 61 62 6f 72 74 65 64 3a 20 22 0a 20 -anthropic).Request.aborted:."..
621e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
62200 22 74 72 79 69 6e 67 20 74 6f 20 73 65 6e 64 20 75 6e 73 75 70 70 6f 72 74 65 64 20 4d 49 4d 45 "trying.to.send.unsupported.MIME
62220 20 74 79 70 65 20 25 73 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .type.%s")......................
62240 20 20 20 20 6d 69 6d 65 29 29 29 29 0a 20 20 20 61 6e 64 20 63 6f 6c 6c 65 63 74 0a 20 20 20 60 ....mime))))....and.collect....`
62260 28 3a 74 79 70 65 20 2c 74 79 70 65 0a 20 20 20 20 20 3a 73 6f 75 72 63 65 20 28 3a 74 79 70 65 (:type.,type......:source.(:type
62280 20 22 62 61 73 65 36 34 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6d 65 64 69 61 5f 74 ."base64"...............:media_t
622a0 79 70 65 20 2c 28 70 6c 69 73 74 2d 67 65 74 20 70 61 72 74 20 3a 6d 69 6d 65 29 0a 20 20 20 20 ype.,(plist-get.part.:mime).....
622c0 20 20 20 20 20 20 20 20 20 20 3a 64 61 74 61 20 2c 28 67 70 74 65 6c 2d 2d 62 61 73 65 36 34 2d ..........:data.,(gptel--base64-
622e0 65 6e 63 6f 64 65 20 6d 65 64 69 61 29 29 29 0a 20 20 20 69 6e 74 6f 20 70 61 72 74 73 2d 61 72 encode.media)))....into.parts-ar
62300 72 61 79 0a 20 20 20 65 6c 73 65 20 69 66 20 28 70 6c 69 73 74 2d 67 65 74 20 70 61 72 74 20 3a ray....else.if.(plist-get.part.:
62320 74 65 78 74 66 69 6c 65 29 20 63 6f 6c 6c 65 63 74 0a 20 20 20 60 28 3a 74 79 70 65 20 22 74 65 textfile).collect....`(:type."te
62340 78 74 22 0a 20 20 20 20 20 3a 74 65 78 74 20 2c 28 77 69 74 68 2d 74 65 6d 70 2d 62 75 66 66 65 xt"......:text.,(with-temp-buffe
62360 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 69 6e 73 65 72 74 2d 66 r...............(gptel--insert-f
62380 69 6c 65 2d 73 74 72 69 6e 67 20 28 70 6c 69 73 74 2d 67 65 74 20 70 61 72 74 20 3a 74 65 78 74 ile-string.(plist-get.part.:text
623a0 66 69 6c 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 2d 73 74 72 file))...............(buffer-str
623c0 69 6e 67 29 29 29 0a 20 20 20 69 6e 74 6f 20 70 61 72 74 73 2d 61 72 72 61 79 0a 20 20 20 66 69 ing)))....into.parts-array....fi
623e0 6e 61 6c 6c 79 20 72 65 74 75 72 6e 20 28 76 63 6f 6e 63 61 74 20 70 61 72 74 73 2d 61 72 72 61 nally.return.(vconcat.parts-arra
62400 79 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 77 72 61 70 2d y)))..(cl-defmethod.gptel--wrap-
62420 75 73 65 72 2d 70 72 6f 6d 70 74 20 28 28 5f 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 61 6e 74 user-prompt.((_backend.gptel-ant
62440 68 72 6f 70 69 63 29 20 70 72 6f 6d 70 74 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 hropic).prompts.................
62460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 26 6f 70 74 69 6f 6e 61 6c .......................&optional
62480 20 69 6e 6a 65 63 74 2d 6d 65 64 69 61 29 0a 20 20 22 57 72 61 70 20 74 68 65 20 6c 61 73 74 20 .inject-media)..."Wrap.the.last.
624a0 75 73 65 72 20 70 72 6f 6d 70 74 20 69 6e 20 50 52 4f 4d 50 54 53 20 77 69 74 68 20 74 68 65 20 user.prompt.in.PROMPTS.with.the.
624c0 63 6f 6e 74 65 78 74 20 73 74 72 69 6e 67 2e 0a 0a 49 66 20 49 4e 4a 45 43 54 2d 4d 45 44 49 41 context.string...If.INJECT-MEDIA
624e0 20 69 73 20 6e 6f 6e 2d 6e 69 6c 20 77 72 61 70 20 69 74 20 77 69 74 68 20 62 61 73 65 36 34 2d .is.non-nil.wrap.it.with.base64-
62500 65 6e 63 6f 64 65 64 20 6d 65 64 69 61 0a 66 69 6c 65 73 20 69 6e 20 74 68 65 20 63 6f 6e 74 65 encoded.media.files.in.the.conte
62520 78 74 2e 22 0a 20 20 28 69 66 20 69 6e 6a 65 63 74 2d 6d 65 64 69 61 0a 20 20 20 20 20 20 3b 3b xt."...(if.inject-media.......;;
62540 20 57 72 61 70 20 74 68 65 20 66 69 72 73 74 20 75 73 65 72 20 70 72 6f 6d 70 74 20 77 69 74 68 .Wrap.the.first.user.prompt.with
62560 20 69 6e 63 6c 75 64 65 64 20 6d 65 64 69 61 20 66 69 6c 65 73 2f 63 6f 6e 74 65 78 74 73 0a 20 .included.media.files/contexts..
62580 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 6d 65 64 69 61 2d 6c 69 73 74 20 28 67 70 .....(when-let*.((media-list.(gp
625a0 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 63 6f 6c 6c 65 63 74 2d 6d 65 64 69 61 29 29 29 0a 20 20 tel-context--collect-media)))...
625c0 20 20 20 20 20 20 28 63 6c 2d 63 61 6c 6c 66 20 28 6c 61 6d 62 64 61 20 28 63 75 72 72 65 6e 74 ......(cl-callf.(lambda.(current
625e0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 76 63 6f 6e 63 61 74 0a 20 ).....................(vconcat..
62600 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 6e 74 68 ....................(gptel--anth
62620 72 6f 70 69 63 2d 70 61 72 73 65 2d 6d 75 6c 74 69 70 61 72 74 20 6d 65 64 69 61 2d 6c 69 73 74 ropic-parse-multipart.media-list
62640 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 74 79 70 65 63 )......................(cl-typec
62660 61 73 65 20 63 75 72 72 65 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ase.current.....................
62680 20 20 20 28 73 74 72 69 6e 67 20 60 28 28 3a 74 79 70 65 20 22 74 65 78 74 22 20 3a 74 65 78 74 ...(string.`((:type."text".:text
626a0 20 2c 63 75 72 72 65 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 .,current)))....................
626c0 20 20 20 20 28 76 65 63 74 6f 72 20 63 75 72 72 65 6e 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 ....(vector.current)............
626e0 20 20 20 20 20 20 20 20 20 20 20 20 28 74 20 63 75 72 72 65 6e 74 29 29 29 29 0a 20 20 20 20 20 ............(t.current))))......
62700 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 67 65 74 20 28 63 61 72 20 70 72 6f 6d 70 74 73 29 20 .......(plist-get.(car.prompts).
62720 3a 63 6f 6e 74 65 6e 74 29 29 29 0a 20 20 20 20 3b 3b 20 57 72 61 70 20 74 68 65 20 6c 61 73 74 :content))).....;;.Wrap.the.last
62740 20 75 73 65 72 20 70 72 6f 6d 70 74 20 77 69 74 68 20 69 6e 63 6c 75 64 65 64 20 74 65 78 74 20 .user.prompt.with.included.text.
62760 63 6f 6e 74 65 78 74 73 0a 20 20 20 20 28 63 6c 2d 63 61 6c 6c 66 20 28 6c 61 6d 62 64 61 20 28 contexts.....(cl-callf.(lambda.(
62780 63 75 72 72 65 6e 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 65 74 79 current).................(cl-ety
627a0 70 65 63 61 73 65 20 63 75 72 72 65 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 pecase.current..................
627c0 20 28 73 74 72 69 6e 67 20 28 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 77 72 61 70 20 63 75 .(string.(gptel-context--wrap.cu
627e0 72 72 65 6e 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 76 65 63 74 6f rrent))...................(vecto
62800 72 20 28 69 66 2d 6c 65 74 2a 20 28 28 77 72 61 70 70 65 64 20 28 67 70 74 65 6c 2d 63 6f 6e 74 r.(if-let*.((wrapped.(gptel-cont
62820 65 78 74 2d 2d 77 72 61 70 20 6e 69 6c 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ext--wrap.nil)))................
62840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 76 63 6f 6e 63 61 74 20 60 28 28 3a 74 79 70 65 ...............(vconcat.`((:type
62860 20 22 74 65 78 74 22 20 3a 74 65 78 74 20 2c 77 72 61 70 70 65 64 29 29 0a 20 20 20 20 20 20 20 ."text".:text.,wrapped))........
62880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
628a0 63 75 72 72 65 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 current)........................
628c0 20 20 20 20 20 63 75 72 72 65 6e 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d .....current)))).........(plist-
628e0 67 65 74 20 28 63 61 72 20 28 6c 61 73 74 20 70 72 6f 6d 70 74 73 29 29 20 3a 63 6f 6e 74 65 6e get.(car.(last.prompts)).:conten
62900 74 29 29 29 29 0a 0a 3b 3b 20 28 69 66 2d 6c 65 74 2a 20 28 28 63 6f 6e 74 65 78 74 2d 73 74 72 t))))..;;.(if-let*.((context-str
62920 69 6e 67 20 28 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 73 74 72 69 6e 67 20 67 70 74 65 6c ing.(gptel-context--string.gptel
62940 2d 63 6f 6e 74 65 78 74 2d 2d 61 6c 69 73 74 29 29 29 0a 3b 3b 20 20 20 20 20 28 63 6c 2d 63 61 -context--alist))).;;.....(cl-ca
62960 6c 6c 66 20 28 6c 61 6d 62 64 61 20 28 70 72 65 76 69 6f 75 73 29 0a 3b 3b 20 20 20 20 20 20 20 llf.(lambda.(previous).;;.......
62980 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 74 79 70 65 63 61 73 65 20 70 72 65 76 69 6f 75 73 0a ..........(cl-typecase.previous.
629a0 3b 3b 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 20 28 63 6f ;;...................(string.(co
629c0 6e 63 61 74 20 63 6f 6e 74 65 78 74 2d 73 74 72 69 6e 67 20 70 72 65 76 69 6f 75 73 29 29 0a 3b ncat.context-string.previous)).;
629e0 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 76 65 63 74 6f 72 20 28 76 63 6f ;...................(vector.(vco
62a00 6e 63 61 74 20 60 28 28 3a 74 79 70 65 20 22 74 65 78 74 22 20 3a 74 65 78 74 20 2c 70 72 65 76 ncat.`((:type."text".:text.,prev
62a20 69 6f 75 73 29 29 0a 3b 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ious)).;;.......................
62a40 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 65 76 69 6f 75 73 29 29 0a 3b 3b 20 20 20 20 20 20 .............previous)).;;......
62a60 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 20 63 6f 6e 74 65 78 74 2d 73 74 72 69 6e 67 29 29 .............(t.context-string))
62a80 29 0a 3b 3b 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 67 65 74 20 28 63 61 72 20 28 6c 61 ).;;.........(plist-get.(car.(la
62aa0 73 74 20 70 72 6f 6d 70 74 73 29 29 20 3a 63 6f 6e 74 65 6e 74 29 29 29 0a 0a 28 64 65 66 63 6f st.prompts)).:content)))..(defco
62ac0 6e 73 74 20 67 70 74 65 6c 2d 2d 61 6e 74 68 72 6f 70 69 63 2d 6d 6f 64 65 6c 73 0a 20 20 27 28 nst.gptel--anthropic-models...'(
62ae0 28 63 6c 61 75 64 65 2d 33 2d 37 2d 73 6f 6e 6e 65 74 2d 32 30 32 35 30 32 31 39 0a 20 20 20 20 (claude-3-7-sonnet-20250219.....
62b00 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 48 79 62 72 69 64 20 6d 6f 64 65 6c 20 63 61 70 61 .:description."Hybrid.model.capa
62b20 62 6c 65 20 6f 66 20 73 74 61 6e 64 61 72 64 20 74 68 69 6e 6b 69 6e 67 20 61 6e 64 20 65 78 74 ble.of.standard.thinking.and.ext
62b40 65 6e 64 65 64 20 74 68 69 6e 6b 69 6e 67 20 6d 6f 64 65 73 22 0a 20 20 20 20 20 3a 63 61 70 61 ended.thinking.modes"......:capa
62b60 62 69 6c 69 74 69 65 73 20 28 6d 65 64 69 61 20 74 6f 6f 6c 2d 75 73 65 20 63 61 63 68 65 29 0a bilities.(media.tool-use.cache).
62b80 20 20 20 20 20 3a 6d 69 6d 65 2d 74 79 70 65 73 20 28 22 69 6d 61 67 65 2f 6a 70 65 67 22 20 22 .....:mime-types.("image/jpeg"."
62ba0 69 6d 61 67 65 2f 70 6e 67 22 20 22 69 6d 61 67 65 2f 67 69 66 22 20 22 69 6d 61 67 65 2f 77 65 image/png"."image/gif"."image/we
62bc0 62 70 22 20 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 70 64 66 22 29 0a 20 20 20 20 20 3a 63 6f 6e bp"."application/pdf")......:con
62be0 74 65 78 74 2d 77 69 6e 64 6f 77 20 32 30 30 0a 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 text-window.200......:input-cost
62c00 20 33 0a 20 20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 31 35 0a 20 20 20 20 20 3a 63 75 .3......:output-cost.15......:cu
62c20 74 6f 66 66 2d 64 61 74 65 20 22 32 30 32 35 2d 30 32 22 29 0a 20 20 20 20 28 63 6c 61 75 64 65 toff-date."2025-02").....(claude
62c40 2d 73 6f 6e 6e 65 74 2d 34 2d 32 30 32 35 30 35 31 34 0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 -sonnet-4-20250514......:descrip
62c60 74 69 6f 6e 20 22 48 69 67 68 2d 70 65 72 66 6f 72 6d 61 6e 63 65 20 6d 6f 64 65 6c 20 77 69 74 tion."High-performance.model.wit
62c80 68 20 65 78 63 65 70 74 69 6f 6e 61 6c 20 72 65 61 73 6f 6e 69 6e 67 20 61 6e 64 20 65 66 66 69 h.exceptional.reasoning.and.effi
62ca0 63 69 65 6e 63 79 22 0a 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 6d 65 64 69 ciency"......:capabilities.(medi
62cc0 61 20 74 6f 6f 6c 2d 75 73 65 20 63 61 63 68 65 29 0a 20 20 20 20 20 3a 6d 69 6d 65 2d 74 79 70 a.tool-use.cache)......:mime-typ
62ce0 65 73 20 28 22 69 6d 61 67 65 2f 6a 70 65 67 22 20 22 69 6d 61 67 65 2f 70 6e 67 22 20 22 69 6d es.("image/jpeg"."image/png"."im
62d00 61 67 65 2f 67 69 66 22 20 22 69 6d 61 67 65 2f 77 65 62 70 22 20 22 61 70 70 6c 69 63 61 74 69 age/gif"."image/webp"."applicati
62d20 6f 6e 2f 70 64 66 22 29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 32 30 on/pdf")......:context-window.20
62d40 30 0a 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 33 0a 20 20 20 20 20 3a 6f 75 74 70 75 0......:input-cost.3......:outpu
62d60 74 2d 63 6f 73 74 20 31 35 0a 20 20 20 20 20 3a 63 75 74 6f 66 66 2d 64 61 74 65 20 22 32 30 32 t-cost.15......:cutoff-date."202
62d80 35 2d 30 33 22 29 0a 20 20 20 20 28 63 6c 61 75 64 65 2d 6f 70 75 73 2d 34 2d 31 2d 32 30 32 35 5-03").....(claude-opus-4-1-2025
62da0 30 38 30 35 0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 4d 6f 73 74 20 63 61 70 0805......:description."Most.cap
62dc0 61 62 6c 65 20 6d 6f 64 65 6c 20 66 6f 72 20 63 6f 6d 70 6c 65 78 20 72 65 61 73 6f 6e 69 6e 67 able.model.for.complex.reasoning
62de0 20 61 6e 64 20 61 64 76 61 6e 63 65 64 20 63 6f 64 69 6e 67 22 0a 20 20 20 20 20 3a 63 61 70 61 .and.advanced.coding"......:capa
62e00 62 69 6c 69 74 69 65 73 20 28 6d 65 64 69 61 20 74 6f 6f 6c 2d 75 73 65 20 63 61 63 68 65 29 0a bilities.(media.tool-use.cache).
62e20 20 20 20 20 20 3a 6d 69 6d 65 2d 74 79 70 65 73 20 28 22 69 6d 61 67 65 2f 6a 70 65 67 22 20 22 .....:mime-types.("image/jpeg"."
62e40 69 6d 61 67 65 2f 70 6e 67 22 20 22 69 6d 61 67 65 2f 67 69 66 22 20 22 69 6d 61 67 65 2f 77 65 image/png"."image/gif"."image/we
62e60 62 70 22 20 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 70 64 66 22 29 0a 20 20 20 20 20 3a 63 6f 6e bp"."application/pdf")......:con
62e80 74 65 78 74 2d 77 69 6e 64 6f 77 20 32 30 30 0a 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 text-window.200......:input-cost
62ea0 20 31 35 0a 20 20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 37 35 0a 20 20 20 20 20 3a 63 .15......:output-cost.75......:c
62ec0 75 74 6f 66 66 2d 64 61 74 65 20 22 32 30 32 35 2d 30 33 22 29 0a 20 20 20 20 28 63 6c 61 75 64 utoff-date."2025-03").....(claud
62ee0 65 2d 6f 70 75 73 2d 34 2d 32 30 32 35 30 35 31 34 0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 e-opus-4-20250514......:descript
62f00 69 6f 6e 20 22 41 6e 74 68 72 6f 70 69 63 27 73 20 70 72 65 76 69 6f 75 73 20 66 6c 61 67 73 68 ion."Anthropic's.previous.flagsh
62f20 69 70 20 6d 6f 64 65 6c 22 0a 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 6d 65 ip.model"......:capabilities.(me
62f40 64 69 61 20 74 6f 6f 6c 2d 75 73 65 20 63 61 63 68 65 29 0a 20 20 20 20 20 3a 6d 69 6d 65 2d 74 dia.tool-use.cache)......:mime-t
62f60 79 70 65 73 20 28 22 69 6d 61 67 65 2f 6a 70 65 67 22 20 22 69 6d 61 67 65 2f 70 6e 67 22 20 22 ypes.("image/jpeg"."image/png"."
62f80 69 6d 61 67 65 2f 67 69 66 22 20 22 69 6d 61 67 65 2f 77 65 62 70 22 20 22 61 70 70 6c 69 63 61 image/gif"."image/webp"."applica
62fa0 74 69 6f 6e 2f 70 64 66 22 29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 tion/pdf")......:context-window.
62fc0 32 30 30 0a 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 31 35 0a 20 20 20 20 20 3a 6f 75 200......:input-cost.15......:ou
62fe0 74 70 75 74 2d 63 6f 73 74 20 37 35 0a 20 20 20 20 20 3a 63 75 74 6f 66 66 2d 64 61 74 65 20 22 tput-cost.75......:cutoff-date."
63000 32 30 32 35 2d 30 33 22 29 0a 20 20 20 20 28 63 6c 61 75 64 65 2d 33 2d 35 2d 73 6f 6e 6e 65 74 2025-03").....(claude-3-5-sonnet
63020 2d 32 30 32 34 31 30 32 32 0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 48 69 67 -20241022......:description."Hig
63040 68 65 73 74 20 6c 65 76 65 6c 20 6f 66 20 69 6e 74 65 6c 6c 69 67 65 6e 63 65 20 61 6e 64 20 63 hest.level.of.intelligence.and.c
63060 61 70 61 62 69 6c 69 74 79 22 0a 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 6d apability"......:capabilities.(m
63080 65 64 69 61 20 74 6f 6f 6c 2d 75 73 65 20 63 61 63 68 65 29 0a 20 20 20 20 20 3a 6d 69 6d 65 2d edia.tool-use.cache)......:mime-
630a0 74 79 70 65 73 20 28 22 69 6d 61 67 65 2f 6a 70 65 67 22 20 22 69 6d 61 67 65 2f 70 6e 67 22 20 types.("image/jpeg"."image/png".
630c0 22 69 6d 61 67 65 2f 67 69 66 22 20 22 69 6d 61 67 65 2f 77 65 62 70 22 20 22 61 70 70 6c 69 63 "image/gif"."image/webp"."applic
630e0 61 74 69 6f 6e 2f 70 64 66 22 29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 ation/pdf")......:context-window
63100 20 32 30 30 0a 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 33 0a 20 20 20 20 20 3a 6f 75 .200......:input-cost.3......:ou
63120 74 70 75 74 2d 63 6f 73 74 20 31 35 0a 20 20 20 20 20 3a 63 75 74 6f 66 66 2d 64 61 74 65 20 22 tput-cost.15......:cutoff-date."
63140 32 30 32 34 2d 30 34 22 29 0a 20 20 20 20 28 63 6c 61 75 64 65 2d 33 2d 35 2d 73 6f 6e 6e 65 74 2024-04").....(claude-3-5-sonnet
63160 2d 32 30 32 34 30 36 32 30 0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 48 69 67 -20240620......:description."Hig
63180 68 65 73 74 20 6c 65 76 65 6c 20 6f 66 20 69 6e 74 65 6c 6c 69 67 65 6e 63 65 20 61 6e 64 20 63 hest.level.of.intelligence.and.c
631a0 61 70 61 62 69 6c 69 74 79 20 28 65 61 72 6c 69 65 72 20 76 65 72 73 69 6f 6e 29 22 0a 20 20 20 apability.(earlier.version)"....
631c0 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 6d 65 64 69 61 20 74 6f 6f 6c 2d 75 73 65 20 ..:capabilities.(media.tool-use.
631e0 63 61 63 68 65 29 0a 20 20 20 20 20 3a 6d 69 6d 65 2d 74 79 70 65 73 20 28 22 69 6d 61 67 65 2f cache)......:mime-types.("image/
63200 6a 70 65 67 22 20 22 69 6d 61 67 65 2f 70 6e 67 22 20 22 69 6d 61 67 65 2f 67 69 66 22 20 22 69 jpeg"."image/png"."image/gif"."i
63220 6d 61 67 65 2f 77 65 62 70 22 29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 mage/webp")......:context-window
63240 20 32 30 30 0a 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 33 0a 20 20 20 20 20 3a 6f 75 .200......:input-cost.3......:ou
63260 74 70 75 74 2d 63 6f 73 74 20 31 35 0a 20 20 20 20 20 3a 63 75 74 6f 66 66 2d 64 61 74 65 20 22 tput-cost.15......:cutoff-date."
63280 32 30 32 34 2d 30 34 22 29 0a 20 20 20 20 28 63 6c 61 75 64 65 2d 33 2d 35 2d 68 61 69 6b 75 2d 2024-04").....(claude-3-5-haiku-
632a0 32 30 32 34 31 30 32 32 0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 49 6e 74 65 20241022......:description."Inte
632c0 6c 6c 69 67 65 6e 63 65 20 61 74 20 62 6c 61 7a 69 6e 67 20 73 70 65 65 64 73 22 0a 20 20 20 20 lligence.at.blazing.speeds".....
632e0 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 74 6f 6f 6c 2d 75 73 65 20 63 61 63 68 65 29 0a .:capabilities.(tool-use.cache).
63300 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 32 30 30 0a 20 20 20 20 20 3a 69 .....:context-window.200......:i
63320 6e 70 75 74 2d 63 6f 73 74 20 31 2e 30 30 0a 20 20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 nput-cost.1.00......:output-cost
63340 20 35 2e 30 30 0a 20 20 20 20 20 3a 63 75 74 6f 66 66 2d 64 61 74 65 20 22 32 30 32 34 2d 30 37 .5.00......:cutoff-date."2024-07
63360 22 29 0a 20 20 20 20 28 63 6c 61 75 64 65 2d 33 2d 6f 70 75 73 2d 32 30 32 34 30 32 32 39 0a 20 ").....(claude-3-opus-20240229..
63380 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 54 6f 70 2d 6c 65 76 65 6c 20 70 65 72 66 ....:description."Top-level.perf
633a0 6f 72 6d 61 6e 63 65 2c 20 69 6e 74 65 6c 6c 69 67 65 6e 63 65 2c 20 66 6c 75 65 6e 63 79 2c 20 ormance,.intelligence,.fluency,.
633c0 61 6e 64 20 75 6e 64 65 72 73 74 61 6e 64 69 6e 67 22 0a 20 20 20 20 20 3a 63 61 70 61 62 69 6c and.understanding"......:capabil
633e0 69 74 69 65 73 20 28 6d 65 64 69 61 20 74 6f 6f 6c 2d 75 73 65 20 63 61 63 68 65 29 0a 20 20 20 ities.(media.tool-use.cache)....
63400 20 20 3a 6d 69 6d 65 2d 74 79 70 65 73 20 28 22 69 6d 61 67 65 2f 6a 70 65 67 22 20 22 69 6d 61 ..:mime-types.("image/jpeg"."ima
63420 67 65 2f 70 6e 67 22 20 22 69 6d 61 67 65 2f 67 69 66 22 20 22 69 6d 61 67 65 2f 77 65 62 70 22 ge/png"."image/gif"."image/webp"
63440 29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 32 30 30 0a 20 20 20 20 20 )......:context-window.200......
63460 3a 69 6e 70 75 74 2d 63 6f 73 74 20 31 35 0a 20 20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 :input-cost.15......:output-cost
63480 20 37 35 0a 20 20 20 20 20 3a 63 75 74 6f 66 66 2d 64 61 74 65 20 22 32 30 32 33 2d 30 38 22 29 .75......:cutoff-date."2023-08")
634a0 0a 20 20 20 20 28 63 6c 61 75 64 65 2d 33 2d 73 6f 6e 6e 65 74 2d 32 30 32 34 30 32 32 39 0a 20 .....(claude-3-sonnet-20240229..
634c0 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 42 61 6c 61 6e 63 65 20 6f 66 20 69 6e 74 ....:description."Balance.of.int
634e0 65 6c 6c 69 67 65 6e 63 65 20 61 6e 64 20 73 70 65 65 64 20 28 6c 65 67 61 63 79 20 6d 6f 64 65 elligence.and.speed.(legacy.mode
63500 6c 29 22 0a 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 6d 65 64 69 61 20 74 6f l)"......:capabilities.(media.to
63520 6f 6c 2d 75 73 65 29 0a 20 20 20 20 20 3a 6d 69 6d 65 2d 74 79 70 65 73 20 28 22 69 6d 61 67 65 ol-use)......:mime-types.("image
63540 2f 6a 70 65 67 22 20 22 69 6d 61 67 65 2f 70 6e 67 22 20 22 69 6d 61 67 65 2f 67 69 66 22 20 22 /jpeg"."image/png"."image/gif"."
63560 69 6d 61 67 65 2f 77 65 62 70 22 29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f image/webp")......:context-windo
63580 77 20 32 30 30 0a 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 33 0a 20 20 20 20 20 3a 6f w.200......:input-cost.3......:o
635a0 75 74 70 75 74 2d 63 6f 73 74 20 31 35 0a 20 20 20 20 20 3a 63 75 74 6f 66 66 2d 64 61 74 65 20 utput-cost.15......:cutoff-date.
635c0 22 32 30 32 33 2d 30 38 22 29 0a 20 20 20 20 28 63 6c 61 75 64 65 2d 33 2d 68 61 69 6b 75 2d 32 "2023-08").....(claude-3-haiku-2
635e0 30 32 34 30 33 30 37 0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 46 61 73 74 20 0240307......:description."Fast.
63600 61 6e 64 20 6d 6f 73 74 20 63 6f 6d 70 61 63 74 20 6d 6f 64 65 6c 20 66 6f 72 20 6e 65 61 72 2d and.most.compact.model.for.near-
63620 69 6e 73 74 61 6e 74 20 72 65 73 70 6f 6e 73 69 76 65 6e 65 73 73 22 0a 20 20 20 20 20 3a 63 61 instant.responsiveness"......:ca
63640 70 61 62 69 6c 69 74 69 65 73 20 28 74 6f 6f 6c 2d 75 73 65 20 63 61 63 68 65 29 0a 20 20 20 20 pabilities.(tool-use.cache).....
63660 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 32 30 30 0a 20 20 20 20 20 3a 69 6e 70 75 74 .:context-window.200......:input
63680 2d 63 6f 73 74 20 30 2e 32 35 0a 20 20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 31 2e 32 -cost.0.25......:output-cost.1.2
636a0 35 0a 20 20 20 20 20 3a 63 75 74 6f 66 66 2d 64 61 74 65 20 22 32 30 32 33 2d 30 38 22 29 29 0a 5......:cutoff-date."2023-08")).
636c0 20 20 22 4c 69 73 74 20 6f 66 20 61 76 61 69 6c 61 62 6c 65 20 41 6e 74 68 72 6f 70 69 63 20 6d .."List.of.available.Anthropic.m
636e0 6f 64 65 6c 73 20 61 6e 64 20 61 73 73 6f 63 69 61 74 65 64 20 70 72 6f 70 65 72 74 69 65 73 2e odels.and.associated.properties.
63700 0a 4b 65 79 73 3a 0a 0a 2d 20 60 3a 64 65 73 63 72 69 70 74 69 6f 6e 27 3a 20 61 20 62 72 69 65 .Keys:..-.`:description':.a.brie
63720 66 20 64 65 73 63 72 69 70 74 69 6f 6e 20 6f 66 20 74 68 65 20 6d 6f 64 65 6c 2e 0a 0a 2d 20 60 f.description.of.the.model...-.`
63740 3a 63 61 70 61 62 69 6c 69 74 69 65 73 27 3a 20 61 20 6c 69 73 74 20 6f 66 20 63 61 70 61 62 69 :capabilities':.a.list.of.capabi
63760 6c 69 74 69 65 73 20 73 75 70 70 6f 72 74 65 64 20 62 79 20 74 68 65 20 6d 6f 64 65 6c 2e 0a 0a lities.supported.by.the.model...
63780 2d 20 60 3a 6d 69 6d 65 2d 74 79 70 65 73 27 3a 20 61 20 6c 69 73 74 20 6f 66 20 73 75 70 70 6f -.`:mime-types':.a.list.of.suppo
637a0 72 74 65 64 20 4d 49 4d 45 20 74 79 70 65 73 20 66 6f 72 20 6d 65 64 69 61 20 66 69 6c 65 73 2e rted.MIME.types.for.media.files.
637c0 0a 0a 2d 20 60 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 27 3a 20 74 68 65 20 63 6f 6e 74 65 ..-.`:context-window':.the.conte
637e0 78 74 20 77 69 6e 64 6f 77 20 73 69 7a 65 2c 20 69 6e 20 74 68 6f 75 73 61 6e 64 73 20 6f 66 20 xt.window.size,.in.thousands.of.
63800 74 6f 6b 65 6e 73 2e 0a 0a 2d 20 60 3a 69 6e 70 75 74 2d 63 6f 73 74 27 3a 20 74 68 65 20 69 6e tokens...-.`:input-cost':.the.in
63820 70 75 74 20 63 6f 73 74 2c 20 69 6e 20 55 53 20 64 6f 6c 6c 61 72 73 20 70 65 72 20 6d 69 6c 6c put.cost,.in.US.dollars.per.mill
63840 69 6f 6e 20 74 6f 6b 65 6e 73 2e 0a 0a 2d 20 60 3a 6f 75 74 70 75 74 2d 63 6f 73 74 27 3a 20 74 ion.tokens...-.`:output-cost':.t
63860 68 65 20 6f 75 74 70 75 74 20 63 6f 73 74 2c 20 69 6e 20 55 53 20 64 6f 6c 6c 61 72 73 20 70 65 he.output.cost,.in.US.dollars.pe
63880 72 20 6d 69 6c 6c 69 6f 6e 20 74 6f 6b 65 6e 73 2e 0a 0a 2d 20 60 3a 63 75 74 6f 66 66 2d 64 61 r.million.tokens...-.`:cutoff-da
638a0 74 65 27 3a 20 74 68 65 20 6b 6e 6f 77 6c 65 64 67 65 20 63 75 74 6f 66 66 20 64 61 74 65 2e 0a te':.the.knowledge.cutoff.date..
638c0 0a 2d 20 60 3a 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 27 3a 20 61 20 70 6c 69 73 74 20 6f 66 .-.`:request-params':.a.plist.of
638e0 20 61 64 64 69 74 69 6f 6e 61 6c 20 72 65 71 75 65 73 74 20 70 61 72 61 6d 65 74 65 72 73 20 74 .additional.request.parameters.t
63900 6f 0a 20 20 69 6e 63 6c 75 64 65 20 77 68 65 6e 20 75 73 69 6e 67 20 74 68 69 73 20 6d 6f 64 65 o...include.when.using.this.mode
63920 6c 2e 0a 0a 49 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 74 68 65 20 41 6e 74 68 72 6f l...Information.about.the.Anthro
63940 70 69 63 20 6d 6f 64 65 6c 73 20 77 61 73 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 74 68 65 pic.models.was.obtained.from.the
63960 20 66 6f 6c 6c 6f 77 69 6e 67 0a 63 6f 6d 70 61 72 69 73 6f 6e 20 74 61 62 6c 65 3a 0a 0a 55 52 .following.comparison.table:..UR
63980 4c 20 60 68 74 74 70 73 3a 2f 2f 64 6f 63 73 2e 61 6e 74 68 72 6f 70 69 63 2e 63 6f 6d 2f 65 6e L.`https://docs.anthropic.com/en
639a0 2f 64 6f 63 73 2f 61 62 6f 75 74 2d 63 6c 61 75 64 65 2f 6d 6f 64 65 6c 73 23 6d 6f 64 65 6c 2d /docs/about-claude/models#model-
639c0 63 6f 6d 70 61 72 69 73 6f 6e 2d 74 61 62 6c 65 27 22 29 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c comparison-table'")..;;;###autol
639e0 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 6e 74 68 72 6f 70 oad.(cl-defun.gptel-make-anthrop
63a00 69 63 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 73 74 72 65 ic.....(name.&key.curl-args.stre
63a20 61 6d 20 6b 65 79 20 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 0a 20 20 20 20 20 20 20 20 20 20 am.key.request-params...........
63a40 28 68 65 61 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 (header............(lambda.().(w
63a60 68 65 6e 2d 6c 65 74 2a 20 28 28 6b 65 79 20 28 67 70 74 65 6c 2d 2d 67 65 74 2d 61 70 69 2d 6b hen-let*.((key.(gptel--get-api-k
63a80 65 79 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 60 28 28 22 78 2d 61 ey)))....................`(("x-a
63aa0 70 69 2d 6b 65 79 22 20 2e 20 2c 6b 65 79 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 pi-key"...,key).................
63ac0 20 20 20 20 20 28 22 61 6e 74 68 72 6f 70 69 63 2d 76 65 72 73 69 6f 6e 22 20 2e 20 22 32 30 32 .....("anthropic-version"..."202
63ae0 33 2d 30 36 2d 30 31 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 3-06-01")......................(
63b00 22 61 6e 74 68 72 6f 70 69 63 2d 62 65 74 61 22 20 2e 20 22 65 78 74 65 6e 64 65 64 2d 63 61 63 "anthropic-beta"..."extended-cac
63b20 68 65 2d 74 74 6c 2d 32 30 32 35 2d 30 34 2d 31 31 22 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 he-ttl-2025-04-11"))))).........
63b40 20 20 28 6d 6f 64 65 6c 73 20 67 70 74 65 6c 2d 2d 61 6e 74 68 72 6f 70 69 63 2d 6d 6f 64 65 6c ..(models.gptel--anthropic-model
63b60 73 29 0a 20 20 20 20 20 20 20 20 20 20 28 68 6f 73 74 20 22 61 70 69 2e 61 6e 74 68 72 6f 70 69 s)...........(host."api.anthropi
63b80 63 2e 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 c.com")...........(protocol."htt
63ba0 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 76 31 2f 6d 65 ps")...........(endpoint."/v1/me
63bc0 73 73 61 67 65 73 22 29 29 0a 20 20 22 52 65 67 69 73 74 65 72 20 61 6e 20 41 6e 74 68 72 6f 70 ssages"))..."Register.an.Anthrop
63be0 69 63 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 20 67 70 ic.API-compatible.backend.for.gp
63c00 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 65 6e 74 tel.with.NAME...Keyword.argument
63c20 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 20 6c 69 s:..CURL-ARGS.(optional).is.a.li
63c40 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 74 73 2e st.of.additional.Curl.arguments.
63c60 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 68 6f 73 ..HOST.(optional).is.the.API.hos
63c80 74 2c 20 5c 22 61 70 69 2e 61 6e 74 68 72 6f 70 69 63 2e 63 6f 6d 5c 22 20 62 79 20 64 65 66 61 t,.\"api.anthropic.com\".by.defa
63ca0 75 6c 74 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 ult...MODELS.is.a.list.of.availa
63cc0 62 6c 65 20 6d 6f 64 65 6c 20 6e 61 6d 65 73 2c 20 61 73 20 73 79 6d 62 6f 6c 73 2e 0a 41 64 64 ble.model.names,.as.symbols..Add
63ce0 69 74 69 6f 6e 61 6c 6c 79 2c 20 79 6f 75 20 63 61 6e 20 73 70 65 63 69 66 79 20 73 75 70 70 6f itionally,.you.can.specify.suppo
63d00 72 74 65 64 20 4c 4c 4d 20 63 61 70 61 62 69 6c 69 74 69 65 73 20 6c 69 6b 65 0a 76 69 73 69 6f rted.LLM.capabilities.like.visio
63d20 6e 20 6f 72 20 74 6f 6f 6c 2d 75 73 65 20 62 79 20 61 70 70 65 6e 64 69 6e 67 20 61 20 70 6c 69 n.or.tool-use.by.appending.a.pli
63d40 73 74 20 74 6f 20 74 68 65 20 6d 6f 64 65 6c 20 77 69 74 68 20 6d 6f 72 65 0a 69 6e 66 6f 72 6d st.to.the.model.with.more.inform
63d60 61 74 69 6f 6e 2c 20 69 6e 20 74 68 65 20 66 6f 72 6d 0a 0a 20 28 6d 6f 64 65 6c 2d 6e 61 6d 65 ation,.in.the.form...(model-name
63d80 20 2e 20 70 6c 69 73 74 29 0a 0a 46 6f 72 20 61 20 6c 69 73 74 20 6f 66 20 63 75 72 72 65 6e 74 ...plist)..For.a.list.of.current
63da0 6c 79 20 72 65 63 6f 67 6e 69 7a 65 64 20 70 6c 69 73 74 20 6b 65 79 73 2c 20 73 65 65 0a 60 67 ly.recognized.plist.keys,.see.`g
63dc0 70 74 65 6c 2d 2d 61 6e 74 68 72 6f 70 69 63 2d 6d 6f 64 65 6c 73 27 2e 20 41 6e 20 65 78 61 6d ptel--anthropic-models'..An.exam
63de0 70 6c 65 20 6f 66 20 61 20 6d 6f 64 65 6c 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e 0a 69 6e 63 ple.of.a.model.specification.inc
63e00 6c 75 64 69 6e 67 20 62 6f 74 68 20 6b 69 6e 64 73 20 6f 66 20 73 70 65 63 73 3a 0a 0a 3a 6d 6f luding.both.kinds.of.specs:..:mo
63e20 64 65 6c 73 0a 5c 5c 3d 27 28 63 6c 61 75 64 65 2d 33 2d 68 61 69 6b 75 2d 32 30 32 34 30 33 30 dels.\\='(claude-3-haiku-2024030
63e40 37 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 53 69 6d 70 6c 65 20 73 70 65 63 73 0a 20 20 7...............;Simple.specs...
63e60 63 6c 61 75 64 65 2d 33 2d 6f 70 75 73 2d 32 30 32 34 30 32 32 39 0a 20 20 28 63 6c 61 75 64 65 claude-3-opus-20240229...(claude
63e80 2d 33 2d 35 2d 73 6f 6e 6e 65 74 2d 32 30 32 34 30 36 32 30 20 20 20 20 20 20 20 20 20 20 20 3b -3-5-sonnet-20240620...........;
63ea0 46 75 6c 6c 20 73 70 65 63 0a 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 20 5c 22 42 61 6c Full.spec....:description..\"Bal
63ec0 61 6e 63 65 20 6f 66 20 69 6e 74 65 6c 6c 69 67 65 6e 63 65 20 61 6e 64 20 73 70 65 65 64 5c 22 ance.of.intelligence.and.speed\"
63ee0 0a 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 6d 65 64 69 61 20 74 6f 6f 6c 20 6a 73 ....:capabilities.(media.tool.js
63f00 6f 6e 29 0a 20 20 20 3a 6d 69 6d 65 2d 74 79 70 65 73 0a 20 20 20 28 5c 22 69 6d 61 67 65 2f 6a on)....:mime-types....(\"image/j
63f20 70 65 67 5c 22 20 5c 22 69 6d 61 67 65 2f 70 6e 67 5c 22 20 5c 22 69 6d 61 67 65 2f 67 69 66 5c peg\".\"image/png\".\"image/gif\
63f40 22 20 5c 22 69 6d 61 67 65 2f 77 65 62 70 5c 22 29 29 29 0a 0a 53 54 52 45 41 4d 20 69 73 20 61 ".\"image/webp\")))..STREAM.is.a
63f60 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 73 .boolean.to.toggle.streaming.res
63f80 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 54 ponses,.defaults.to.false...PROT
63fa0 4f 43 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 OCOL.(optional).specifies.the.pr
63fc0 6f 74 6f 63 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 otocol,.https.by.default...ENDPO
63fe0 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 6f 69 INT.(optional).is.the.API.endpoi
64000 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 6f 0a nt.for.completions,.defaults.to.
64020 5c 22 2f 76 31 2f 6d 65 73 73 61 67 65 73 5c 22 2e 0a 0a 48 45 41 44 45 52 20 28 6f 70 74 69 6f \"/v1/messages\"...HEADER.(optio
64040 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 72 73 20 74 nal).is.for.additional.headers.t
64060 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 20 49 74 20 73 68 o.send.with.each.request...It.sh
64080 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 6e 20 74 ould.be.an.alist.or.a.function.t
640a0 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 20 28 28 5c 22 hat.retuns.an.alist,.like:..((\"
640c0 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 2f 6a Content-Type\"...\"application/j
640e0 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 20 77 68 6f 73 65 son\"))..KEY.is.a.variable.whose
64100 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 66 75 6e 63 74 69 .value.is.the.API.key,.or.functi
64120 6f 6e 20 74 68 61 74 0a 72 65 74 75 72 6e 73 20 74 68 65 20 6b 65 79 2e 0a 0a 52 45 51 55 45 53 on.that.returns.the.key...REQUES
64140 54 2d 50 41 52 41 4d 53 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 61 20 70 6c 69 73 74 20 6f T-PARAMS.(optional).is.a.plist.o
64160 66 20 61 64 64 69 74 69 6f 6e 61 6c 20 48 54 54 50 20 72 65 71 75 65 73 74 0a 70 61 72 61 6d 65 f.additional.HTTP.request.parame
64180 74 65 72 73 20 28 61 73 20 70 6c 69 73 74 20 6b 65 79 73 29 20 61 6e 64 20 76 61 6c 75 65 73 20 ters.(as.plist.keys).and.values.
641a0 73 75 70 70 6f 72 74 65 64 20 62 79 20 74 68 65 20 41 50 49 2e 20 20 55 73 65 0a 74 68 65 73 65 supported.by.the.API...Use.these
641c0 20 74 6f 20 73 65 74 20 70 61 72 61 6d 65 74 65 72 73 20 74 68 61 74 20 67 70 74 65 6c 20 64 6f .to.set.parameters.that.gptel.do
641e0 65 73 20 6e 6f 74 20 70 72 6f 76 69 64 65 20 75 73 65 72 20 6f 70 74 69 6f 6e 73 0a 66 6f 72 2e es.not.provide.user.options.for.
64200 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 28 6c 65 74 20 "...(declare.(indent.1))...(let.
64220 28 28 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 ((backend.(gptel--make-anthropic
64240 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 63 75 ...................:curl-args.cu
64260 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 65 20 rl-args...................:name.
64280 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 6f 73 name...................:host.hos
642a0 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 61 64 t...................:header.head
642c0 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 20 20 er...................:key.key...
642e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6d 6f 64 65 6c 73 20 28 67 70 74 65 6c 2d 2d ................:models.(gptel--
64300 70 72 6f 63 65 73 73 2d 6d 6f 64 65 6c 73 20 6d 6f 64 65 6c 73 29 0a 20 20 20 20 20 20 20 20 20 process-models.models)..........
64320 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.....
64340 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
64360 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
64380 6d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 72 65 71 75 65 73 74 2d 70 61 72 m...................:request-par
643a0 61 6d 73 20 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ams.request-params..............
643c0 20 20 20 20 20 3a 75 72 6c 20 28 69 66 20 70 72 6f 74 6f 63 6f 6c 0a 20 20 20 20 20 20 20 20 20 .....:url.(if.protocol..........
643e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 70 72 6f 74 6f 63 ..................(concat.protoc
64400 6f 6c 20 22 3a 2f 2f 22 20 68 6f 73 74 20 65 6e 64 70 6f 69 6e 74 29 0a 20 20 20 20 20 20 20 20 ol."://".host.endpoint).........
64420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 68 6f 73 74 20 65 6e .................(concat.host.en
64440 64 70 6f 69 6e 74 29 29 29 29 29 0a 20 20 20 20 28 70 72 6f 67 31 20 62 61 63 6b 65 6e 64 0a 20 dpoint))))).....(prog1.backend..
64460 20 20 20 20 20 28 73 65 74 66 20 28 61 6c 69 73 74 2d 67 65 74 20 6e 61 6d 65 20 67 70 74 65 6c .....(setf.(alist-get.name.gptel
64480 2d 2d 6b 6e 6f 77 6e 2d 62 61 63 6b 65 6e 64 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 --known-backends................
644a0 20 20 20 20 20 20 20 20 6e 69 6c 20 6e 69 6c 20 23 27 65 71 75 61 6c 29 0a 20 20 20 20 20 20 20 ........nil.nil.#'equal)........
644c0 20 20 20 20 20 20 20 20 20 20 20 62 61 63 6b 65 6e 64 29 29 29 29 0a 0a 28 70 72 6f 76 69 64 65 ...........backend))))..(provide
644e0 20 27 67 70 74 65 6c 2d 61 6e 74 68 72 6f 70 69 63 29 0a 3b 3b 3b 20 67 70 74 65 6c 2d 61 6e 74 .'gptel-anthropic).;;;.gptel-ant
64500 68 72 6f 70 69 63 2e 65 6c 20 65 6e 64 73 20 68 65 72 65 0a 0a 3b 3b 20 4c 6f 63 61 6c 20 56 61 hropic.el.ends.here..;;.Local.Va
64520 72 69 61 62 6c 65 73 3a 0a 3b 3b 20 62 79 74 65 2d 63 6f 6d 70 69 6c 65 2d 77 61 72 6e 69 6e 67 riables:.;;.byte-compile-warning
64540 73 3a 20 28 6e 6f 74 20 64 6f 63 73 74 72 69 6e 67 73 29 0a 3b 3b 20 45 6e 64 3a 0a 0a 00 00 00 s:.(not.docstrings).;;.End:.....
64560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
64580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
645a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
645c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
645e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
64600 67 70 74 65 6c 2d 30 2e 39 2e 39 2f 4c 49 43 45 4e 53 45 00 00 00 00 00 00 00 00 00 00 00 00 00 gptel-0.9.9/LICENSE.............
64620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
64640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
64660 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
64680 30 31 30 34 35 31 31 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 32 33 31 32 00 20 30 00 00 00 0104511.00000000000.012312..0...
646a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
646c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
646e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
64700 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...................
64720 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...................
64740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
64760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
64780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
647a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
647c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
647e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
64800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 47 4e 55 20 47 45 4e 45 52 41 4c 20 ....................GNU.GENERAL.
64820 50 55 42 4c 49 43 20 4c 49 43 45 4e 53 45 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 PUBLIC.LICENSE..................
64840 20 20 20 20 20 20 56 65 72 73 69 6f 6e 20 33 2c 20 32 39 20 4a 75 6e 65 20 32 30 30 37 0a 0a 20 ......Version.3,.29.June.2007...
64860 43 6f 70 79 72 69 67 68 74 20 28 43 29 20 32 30 30 37 20 46 72 65 65 20 53 6f 66 74 77 61 72 65 Copyright.(C).2007.Free.Software
64880 20 46 6f 75 6e 64 61 74 69 6f 6e 2c 20 49 6e 63 2e 20 3c 68 74 74 70 73 3a 2f 2f 66 73 66 2e 6f .Foundation,.Inc..<https://fsf.o
648a0 72 67 2f 3e 0a 20 45 76 65 72 79 6f 6e 65 20 69 73 20 70 65 72 6d 69 74 74 65 64 20 74 6f 20 63 rg/>..Everyone.is.permitted.to.c
648c0 6f 70 79 20 61 6e 64 20 64 69 73 74 72 69 62 75 74 65 20 76 65 72 62 61 74 69 6d 20 63 6f 70 69 opy.and.distribute.verbatim.copi
648e0 65 73 0a 20 6f 66 20 74 68 69 73 20 6c 69 63 65 6e 73 65 20 64 6f 63 75 6d 65 6e 74 2c 20 62 75 es..of.this.license.document,.bu
64900 74 20 63 68 61 6e 67 69 6e 67 20 69 74 20 69 73 20 6e 6f 74 20 61 6c 6c 6f 77 65 64 2e 0a 0a 20 t.changing.it.is.not.allowed....
64920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 50 72 65 61 6d ...........................Pream
64940 62 6c 65 0a 0a 20 20 54 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 ble....The.GNU.General.Public.Li
64960 63 65 6e 73 65 20 69 73 20 61 20 66 72 65 65 2c 20 63 6f 70 79 6c 65 66 74 20 6c 69 63 65 6e 73 cense.is.a.free,.copyleft.licens
64980 65 20 66 6f 72 0a 73 6f 66 74 77 61 72 65 20 61 6e 64 20 6f 74 68 65 72 20 6b 69 6e 64 73 20 6f e.for.software.and.other.kinds.o
649a0 66 20 77 6f 72 6b 73 2e 0a 0a 20 20 54 68 65 20 6c 69 63 65 6e 73 65 73 20 66 6f 72 20 6d 6f 73 f.works.....The.licenses.for.mos
649c0 74 20 73 6f 66 74 77 61 72 65 20 61 6e 64 20 6f 74 68 65 72 20 70 72 61 63 74 69 63 61 6c 20 77 t.software.and.other.practical.w
649e0 6f 72 6b 73 20 61 72 65 20 64 65 73 69 67 6e 65 64 0a 74 6f 20 74 61 6b 65 20 61 77 61 79 20 79 orks.are.designed.to.take.away.y
64a00 6f 75 72 20 66 72 65 65 64 6f 6d 20 74 6f 20 73 68 61 72 65 20 61 6e 64 20 63 68 61 6e 67 65 20 our.freedom.to.share.and.change.
64a20 74 68 65 20 77 6f 72 6b 73 2e 20 20 42 79 20 63 6f 6e 74 72 61 73 74 2c 0a 74 68 65 20 47 4e 55 the.works...By.contrast,.the.GNU
64a40 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 69 73 20 69 6e 74 65 6e .General.Public.License.is.inten
64a60 64 65 64 20 74 6f 20 67 75 61 72 61 6e 74 65 65 20 79 6f 75 72 20 66 72 65 65 64 6f 6d 20 74 6f ded.to.guarantee.your.freedom.to
64a80 0a 73 68 61 72 65 20 61 6e 64 20 63 68 61 6e 67 65 20 61 6c 6c 20 76 65 72 73 69 6f 6e 73 20 6f .share.and.change.all.versions.o
64aa0 66 20 61 20 70 72 6f 67 72 61 6d 2d 2d 74 6f 20 6d 61 6b 65 20 73 75 72 65 20 69 74 20 72 65 6d f.a.program--to.make.sure.it.rem
64ac0 61 69 6e 73 20 66 72 65 65 0a 73 6f 66 74 77 61 72 65 20 66 6f 72 20 61 6c 6c 20 69 74 73 20 75 ains.free.software.for.all.its.u
64ae0 73 65 72 73 2e 20 20 57 65 2c 20 74 68 65 20 46 72 65 65 20 53 6f 66 74 77 61 72 65 20 46 6f 75 sers...We,.the.Free.Software.Fou
64b00 6e 64 61 74 69 6f 6e 2c 20 75 73 65 20 74 68 65 0a 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 ndation,.use.the.GNU.General.Pub
64b20 6c 69 63 20 4c 69 63 65 6e 73 65 20 66 6f 72 20 6d 6f 73 74 20 6f 66 20 6f 75 72 20 73 6f 66 74 lic.License.for.most.of.our.soft
64b40 77 61 72 65 3b 20 69 74 20 61 70 70 6c 69 65 73 20 61 6c 73 6f 20 74 6f 0a 61 6e 79 20 6f 74 68 ware;.it.applies.also.to.any.oth
64b60 65 72 20 77 6f 72 6b 20 72 65 6c 65 61 73 65 64 20 74 68 69 73 20 77 61 79 20 62 79 20 69 74 73 er.work.released.this.way.by.its
64b80 20 61 75 74 68 6f 72 73 2e 20 20 59 6f 75 20 63 61 6e 20 61 70 70 6c 79 20 69 74 20 74 6f 0a 79 .authors...You.can.apply.it.to.y
64ba0 6f 75 72 20 70 72 6f 67 72 61 6d 73 2c 20 74 6f 6f 2e 0a 0a 20 20 57 68 65 6e 20 77 65 20 73 70 our.programs,.too.....When.we.sp
64bc0 65 61 6b 20 6f 66 20 66 72 65 65 20 73 6f 66 74 77 61 72 65 2c 20 77 65 20 61 72 65 20 72 65 66 eak.of.free.software,.we.are.ref
64be0 65 72 72 69 6e 67 20 74 6f 20 66 72 65 65 64 6f 6d 2c 20 6e 6f 74 0a 70 72 69 63 65 2e 20 20 4f erring.to.freedom,.not.price...O
64c00 75 72 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 73 20 61 72 65 20 64 ur.General.Public.Licenses.are.d
64c20 65 73 69 67 6e 65 64 20 74 6f 20 6d 61 6b 65 20 73 75 72 65 20 74 68 61 74 20 79 6f 75 0a 68 61 esigned.to.make.sure.that.you.ha
64c40 76 65 20 74 68 65 20 66 72 65 65 64 6f 6d 20 74 6f 20 64 69 73 74 72 69 62 75 74 65 20 63 6f 70 ve.the.freedom.to.distribute.cop
64c60 69 65 73 20 6f 66 20 66 72 65 65 20 73 6f 66 74 77 61 72 65 20 28 61 6e 64 20 63 68 61 72 67 65 ies.of.free.software.(and.charge
64c80 20 66 6f 72 0a 74 68 65 6d 20 69 66 20 79 6f 75 20 77 69 73 68 29 2c 20 74 68 61 74 20 79 6f 75 .for.them.if.you.wish),.that.you
64ca0 20 72 65 63 65 69 76 65 20 73 6f 75 72 63 65 20 63 6f 64 65 20 6f 72 20 63 61 6e 20 67 65 74 20 .receive.source.code.or.can.get.
64cc0 69 74 20 69 66 20 79 6f 75 0a 77 61 6e 74 20 69 74 2c 20 74 68 61 74 20 79 6f 75 20 63 61 6e 20 it.if.you.want.it,.that.you.can.
64ce0 63 68 61 6e 67 65 20 74 68 65 20 73 6f 66 74 77 61 72 65 20 6f 72 20 75 73 65 20 70 69 65 63 65 change.the.software.or.use.piece
64d00 73 20 6f 66 20 69 74 20 69 6e 20 6e 65 77 0a 66 72 65 65 20 70 72 6f 67 72 61 6d 73 2c 20 61 6e s.of.it.in.new.free.programs,.an
64d20 64 20 74 68 61 74 20 79 6f 75 20 6b 6e 6f 77 20 79 6f 75 20 63 61 6e 20 64 6f 20 74 68 65 73 65 d.that.you.know.you.can.do.these
64d40 20 74 68 69 6e 67 73 2e 0a 0a 20 20 54 6f 20 70 72 6f 74 65 63 74 20 79 6f 75 72 20 72 69 67 68 .things.....To.protect.your.righ
64d60 74 73 2c 20 77 65 20 6e 65 65 64 20 74 6f 20 70 72 65 76 65 6e 74 20 6f 74 68 65 72 73 20 66 72 ts,.we.need.to.prevent.others.fr
64d80 6f 6d 20 64 65 6e 79 69 6e 67 20 79 6f 75 0a 74 68 65 73 65 20 72 69 67 68 74 73 20 6f 72 20 61 om.denying.you.these.rights.or.a
64da0 73 6b 69 6e 67 20 79 6f 75 20 74 6f 20 73 75 72 72 65 6e 64 65 72 20 74 68 65 20 72 69 67 68 74 sking.you.to.surrender.the.right
64dc0 73 2e 20 20 54 68 65 72 65 66 6f 72 65 2c 20 79 6f 75 20 68 61 76 65 0a 63 65 72 74 61 69 6e 20 s...Therefore,.you.have.certain.
64de0 72 65 73 70 6f 6e 73 69 62 69 6c 69 74 69 65 73 20 69 66 20 79 6f 75 20 64 69 73 74 72 69 62 75 responsibilities.if.you.distribu
64e00 74 65 20 63 6f 70 69 65 73 20 6f 66 20 74 68 65 20 73 6f 66 74 77 61 72 65 2c 20 6f 72 20 69 66 te.copies.of.the.software,.or.if
64e20 0a 79 6f 75 20 6d 6f 64 69 66 79 20 69 74 3a 20 72 65 73 70 6f 6e 73 69 62 69 6c 69 74 69 65 73 .you.modify.it:.responsibilities
64e40 20 74 6f 20 72 65 73 70 65 63 74 20 74 68 65 20 66 72 65 65 64 6f 6d 20 6f 66 20 6f 74 68 65 72 .to.respect.the.freedom.of.other
64e60 73 2e 0a 0a 20 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 69 66 20 79 6f 75 20 64 69 73 74 72 69 s.....For.example,.if.you.distri
64e80 62 75 74 65 20 63 6f 70 69 65 73 20 6f 66 20 73 75 63 68 20 61 20 70 72 6f 67 72 61 6d 2c 20 77 bute.copies.of.such.a.program,.w
64ea0 68 65 74 68 65 72 0a 67 72 61 74 69 73 20 6f 72 20 66 6f 72 20 61 20 66 65 65 2c 20 79 6f 75 20 hether.gratis.or.for.a.fee,.you.
64ec0 6d 75 73 74 20 70 61 73 73 20 6f 6e 20 74 6f 20 74 68 65 20 72 65 63 69 70 69 65 6e 74 73 20 74 must.pass.on.to.the.recipients.t
64ee0 68 65 20 73 61 6d 65 0a 66 72 65 65 64 6f 6d 73 20 74 68 61 74 20 79 6f 75 20 72 65 63 65 69 76 he.same.freedoms.that.you.receiv
64f00 65 64 2e 20 20 59 6f 75 20 6d 75 73 74 20 6d 61 6b 65 20 73 75 72 65 20 74 68 61 74 20 74 68 65 ed...You.must.make.sure.that.the
64f20 79 2c 20 74 6f 6f 2c 20 72 65 63 65 69 76 65 0a 6f 72 20 63 61 6e 20 67 65 74 20 74 68 65 20 73 y,.too,.receive.or.can.get.the.s
64f40 6f 75 72 63 65 20 63 6f 64 65 2e 20 20 41 6e 64 20 79 6f 75 20 6d 75 73 74 20 73 68 6f 77 20 74 ource.code...And.you.must.show.t
64f60 68 65 6d 20 74 68 65 73 65 20 74 65 72 6d 73 20 73 6f 20 74 68 65 79 0a 6b 6e 6f 77 20 74 68 65 hem.these.terms.so.they.know.the
64f80 69 72 20 72 69 67 68 74 73 2e 0a 0a 20 20 44 65 76 65 6c 6f 70 65 72 73 20 74 68 61 74 20 75 73 ir.rights.....Developers.that.us
64fa0 65 20 74 68 65 20 47 4e 55 20 47 50 4c 20 70 72 6f 74 65 63 74 20 79 6f 75 72 20 72 69 67 68 74 e.the.GNU.GPL.protect.your.right
64fc0 73 20 77 69 74 68 20 74 77 6f 20 73 74 65 70 73 3a 0a 28 31 29 20 61 73 73 65 72 74 20 63 6f 70 s.with.two.steps:.(1).assert.cop
64fe0 79 72 69 67 68 74 20 6f 6e 20 74 68 65 20 73 6f 66 74 77 61 72 65 2c 20 61 6e 64 20 28 32 29 20 yright.on.the.software,.and.(2).
65000 6f 66 66 65 72 20 79 6f 75 20 74 68 69 73 20 4c 69 63 65 6e 73 65 0a 67 69 76 69 6e 67 20 79 6f offer.you.this.License.giving.yo
65020 75 20 6c 65 67 61 6c 20 70 65 72 6d 69 73 73 69 6f 6e 20 74 6f 20 63 6f 70 79 2c 20 64 69 73 74 u.legal.permission.to.copy,.dist
65040 72 69 62 75 74 65 20 61 6e 64 2f 6f 72 20 6d 6f 64 69 66 79 20 69 74 2e 0a 0a 20 20 46 6f 72 20 ribute.and/or.modify.it.....For.
65060 74 68 65 20 64 65 76 65 6c 6f 70 65 72 73 27 20 61 6e 64 20 61 75 74 68 6f 72 73 27 20 70 72 6f the.developers'.and.authors'.pro
65080 74 65 63 74 69 6f 6e 2c 20 74 68 65 20 47 50 4c 20 63 6c 65 61 72 6c 79 20 65 78 70 6c 61 69 6e tection,.the.GPL.clearly.explain
650a0 73 0a 74 68 61 74 20 74 68 65 72 65 20 69 73 20 6e 6f 20 77 61 72 72 61 6e 74 79 20 66 6f 72 20 s.that.there.is.no.warranty.for.
650c0 74 68 69 73 20 66 72 65 65 20 73 6f 66 74 77 61 72 65 2e 20 20 46 6f 72 20 62 6f 74 68 20 75 73 this.free.software...For.both.us
650e0 65 72 73 27 20 61 6e 64 0a 61 75 74 68 6f 72 73 27 20 73 61 6b 65 2c 20 74 68 65 20 47 50 4c 20 ers'.and.authors'.sake,.the.GPL.
65100 72 65 71 75 69 72 65 73 20 74 68 61 74 20 6d 6f 64 69 66 69 65 64 20 76 65 72 73 69 6f 6e 73 20 requires.that.modified.versions.
65120 62 65 20 6d 61 72 6b 65 64 20 61 73 0a 63 68 61 6e 67 65 64 2c 20 73 6f 20 74 68 61 74 20 74 68 be.marked.as.changed,.so.that.th
65140 65 69 72 20 70 72 6f 62 6c 65 6d 73 20 77 69 6c 6c 20 6e 6f 74 20 62 65 20 61 74 74 72 69 62 75 eir.problems.will.not.be.attribu
65160 74 65 64 20 65 72 72 6f 6e 65 6f 75 73 6c 79 20 74 6f 0a 61 75 74 68 6f 72 73 20 6f 66 20 70 72 ted.erroneously.to.authors.of.pr
65180 65 76 69 6f 75 73 20 76 65 72 73 69 6f 6e 73 2e 0a 0a 20 20 53 6f 6d 65 20 64 65 76 69 63 65 73 evious.versions.....Some.devices
651a0 20 61 72 65 20 64 65 73 69 67 6e 65 64 20 74 6f 20 64 65 6e 79 20 75 73 65 72 73 20 61 63 63 65 .are.designed.to.deny.users.acce
651c0 73 73 20 74 6f 20 69 6e 73 74 61 6c 6c 20 6f 72 20 72 75 6e 0a 6d 6f 64 69 66 69 65 64 20 76 65 ss.to.install.or.run.modified.ve
651e0 72 73 69 6f 6e 73 20 6f 66 20 74 68 65 20 73 6f 66 74 77 61 72 65 20 69 6e 73 69 64 65 20 74 68 rsions.of.the.software.inside.th
65200 65 6d 2c 20 61 6c 74 68 6f 75 67 68 20 74 68 65 20 6d 61 6e 75 66 61 63 74 75 72 65 72 0a 63 61 em,.although.the.manufacturer.ca
65220 6e 20 64 6f 20 73 6f 2e 20 20 54 68 69 73 20 69 73 20 66 75 6e 64 61 6d 65 6e 74 61 6c 6c 79 20 n.do.so...This.is.fundamentally.
65240 69 6e 63 6f 6d 70 61 74 69 62 6c 65 20 77 69 74 68 20 74 68 65 20 61 69 6d 20 6f 66 0a 70 72 6f incompatible.with.the.aim.of.pro
65260 74 65 63 74 69 6e 67 20 75 73 65 72 73 27 20 66 72 65 65 64 6f 6d 20 74 6f 20 63 68 61 6e 67 65 tecting.users'.freedom.to.change
65280 20 74 68 65 20 73 6f 66 74 77 61 72 65 2e 20 20 54 68 65 20 73 79 73 74 65 6d 61 74 69 63 0a 70 .the.software...The.systematic.p
652a0 61 74 74 65 72 6e 20 6f 66 20 73 75 63 68 20 61 62 75 73 65 20 6f 63 63 75 72 73 20 69 6e 20 74 attern.of.such.abuse.occurs.in.t
652c0 68 65 20 61 72 65 61 20 6f 66 20 70 72 6f 64 75 63 74 73 20 66 6f 72 20 69 6e 64 69 76 69 64 75 he.area.of.products.for.individu
652e0 61 6c 73 20 74 6f 0a 75 73 65 2c 20 77 68 69 63 68 20 69 73 20 70 72 65 63 69 73 65 6c 79 20 77 als.to.use,.which.is.precisely.w
65300 68 65 72 65 20 69 74 20 69 73 20 6d 6f 73 74 20 75 6e 61 63 63 65 70 74 61 62 6c 65 2e 20 20 54 here.it.is.most.unacceptable...T
65320 68 65 72 65 66 6f 72 65 2c 20 77 65 0a 68 61 76 65 20 64 65 73 69 67 6e 65 64 20 74 68 69 73 20 herefore,.we.have.designed.this.
65340 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65 20 47 50 4c 20 74 6f 20 70 72 6f 68 69 62 69 74 20 74 version.of.the.GPL.to.prohibit.t
65360 68 65 20 70 72 61 63 74 69 63 65 20 66 6f 72 20 74 68 6f 73 65 0a 70 72 6f 64 75 63 74 73 2e 20 he.practice.for.those.products..
65380 20 49 66 20 73 75 63 68 20 70 72 6f 62 6c 65 6d 73 20 61 72 69 73 65 20 73 75 62 73 74 61 6e 74 .If.such.problems.arise.substant
653a0 69 61 6c 6c 79 20 69 6e 20 6f 74 68 65 72 20 64 6f 6d 61 69 6e 73 2c 20 77 65 0a 73 74 61 6e 64 ially.in.other.domains,.we.stand
653c0 20 72 65 61 64 79 20 74 6f 20 65 78 74 65 6e 64 20 74 68 69 73 20 70 72 6f 76 69 73 69 6f 6e 20 .ready.to.extend.this.provision.
653e0 74 6f 20 74 68 6f 73 65 20 64 6f 6d 61 69 6e 73 20 69 6e 20 66 75 74 75 72 65 20 76 65 72 73 69 to.those.domains.in.future.versi
65400 6f 6e 73 0a 6f 66 20 74 68 65 20 47 50 4c 2c 20 61 73 20 6e 65 65 64 65 64 20 74 6f 20 70 72 6f ons.of.the.GPL,.as.needed.to.pro
65420 74 65 63 74 20 74 68 65 20 66 72 65 65 64 6f 6d 20 6f 66 20 75 73 65 72 73 2e 0a 0a 20 20 46 69 tect.the.freedom.of.users.....Fi
65440 6e 61 6c 6c 79 2c 20 65 76 65 72 79 20 70 72 6f 67 72 61 6d 20 69 73 20 74 68 72 65 61 74 65 6e nally,.every.program.is.threaten
65460 65 64 20 63 6f 6e 73 74 61 6e 74 6c 79 20 62 79 20 73 6f 66 74 77 61 72 65 20 70 61 74 65 6e 74 ed.constantly.by.software.patent
65480 73 2e 0a 53 74 61 74 65 73 20 73 68 6f 75 6c 64 20 6e 6f 74 20 61 6c 6c 6f 77 20 70 61 74 65 6e s..States.should.not.allow.paten
654a0 74 73 20 74 6f 20 72 65 73 74 72 69 63 74 20 64 65 76 65 6c 6f 70 6d 65 6e 74 20 61 6e 64 20 75 ts.to.restrict.development.and.u
654c0 73 65 20 6f 66 0a 73 6f 66 74 77 61 72 65 20 6f 6e 20 67 65 6e 65 72 61 6c 2d 70 75 72 70 6f 73 se.of.software.on.general-purpos
654e0 65 20 63 6f 6d 70 75 74 65 72 73 2c 20 62 75 74 20 69 6e 20 74 68 6f 73 65 20 74 68 61 74 20 64 e.computers,.but.in.those.that.d
65500 6f 2c 20 77 65 20 77 69 73 68 20 74 6f 0a 61 76 6f 69 64 20 74 68 65 20 73 70 65 63 69 61 6c 20 o,.we.wish.to.avoid.the.special.
65520 64 61 6e 67 65 72 20 74 68 61 74 20 70 61 74 65 6e 74 73 20 61 70 70 6c 69 65 64 20 74 6f 20 61 danger.that.patents.applied.to.a
65540 20 66 72 65 65 20 70 72 6f 67 72 61 6d 20 63 6f 75 6c 64 0a 6d 61 6b 65 20 69 74 20 65 66 66 65 .free.program.could.make.it.effe
65560 63 74 69 76 65 6c 79 20 70 72 6f 70 72 69 65 74 61 72 79 2e 20 20 54 6f 20 70 72 65 76 65 6e 74 ctively.proprietary...To.prevent
65580 20 74 68 69 73 2c 20 74 68 65 20 47 50 4c 20 61 73 73 75 72 65 73 20 74 68 61 74 0a 70 61 74 65 .this,.the.GPL.assures.that.pate
655a0 6e 74 73 20 63 61 6e 6e 6f 74 20 62 65 20 75 73 65 64 20 74 6f 20 72 65 6e 64 65 72 20 74 68 65 nts.cannot.be.used.to.render.the
655c0 20 70 72 6f 67 72 61 6d 20 6e 6f 6e 2d 66 72 65 65 2e 0a 0a 20 20 54 68 65 20 70 72 65 63 69 73 .program.non-free.....The.precis
655e0 65 20 74 65 72 6d 73 20 61 6e 64 20 63 6f 6e 64 69 74 69 6f 6e 73 20 66 6f 72 20 63 6f 70 79 69 e.terms.and.conditions.for.copyi
65600 6e 67 2c 20 64 69 73 74 72 69 62 75 74 69 6f 6e 20 61 6e 64 0a 6d 6f 64 69 66 69 63 61 74 69 6f ng,.distribution.and.modificatio
65620 6e 20 66 6f 6c 6c 6f 77 2e 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 n.follow........................
65640 20 20 54 45 52 4d 53 20 41 4e 44 20 43 4f 4e 44 49 54 49 4f 4e 53 0a 0a 20 20 30 2e 20 44 65 66 ..TERMS.AND.CONDITIONS....0..Def
65660 69 6e 69 74 69 6f 6e 73 2e 0a 0a 20 20 22 54 68 69 73 20 4c 69 63 65 6e 73 65 22 20 72 65 66 65 initions....."This.License".refe
65680 72 73 20 74 6f 20 76 65 72 73 69 6f 6e 20 33 20 6f 66 20 74 68 65 20 47 4e 55 20 47 65 6e 65 72 rs.to.version.3.of.the.GNU.Gener
656a0 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 2e 0a 0a 20 20 22 43 6f 70 79 72 69 67 68 74 al.Public.License....."Copyright
656c0 22 20 61 6c 73 6f 20 6d 65 61 6e 73 20 63 6f 70 79 72 69 67 68 74 2d 6c 69 6b 65 20 6c 61 77 73 ".also.means.copyright-like.laws
656e0 20 74 68 61 74 20 61 70 70 6c 79 20 74 6f 20 6f 74 68 65 72 20 6b 69 6e 64 73 20 6f 66 0a 77 6f .that.apply.to.other.kinds.of.wo
65700 72 6b 73 2c 20 73 75 63 68 20 61 73 20 73 65 6d 69 63 6f 6e 64 75 63 74 6f 72 20 6d 61 73 6b 73 rks,.such.as.semiconductor.masks
65720 2e 0a 0a 20 20 22 54 68 65 20 50 72 6f 67 72 61 6d 22 20 72 65 66 65 72 73 20 74 6f 20 61 6e 79 ....."The.Program".refers.to.any
65740 20 63 6f 70 79 72 69 67 68 74 61 62 6c 65 20 77 6f 72 6b 20 6c 69 63 65 6e 73 65 64 20 75 6e 64 .copyrightable.work.licensed.und
65760 65 72 20 74 68 69 73 0a 4c 69 63 65 6e 73 65 2e 20 20 45 61 63 68 20 6c 69 63 65 6e 73 65 65 20 er.this.License...Each.licensee.
65780 69 73 20 61 64 64 72 65 73 73 65 64 20 61 73 20 22 79 6f 75 22 2e 20 20 22 4c 69 63 65 6e 73 65 is.addressed.as."you"..."License
657a0 65 73 22 20 61 6e 64 0a 22 72 65 63 69 70 69 65 6e 74 73 22 20 6d 61 79 20 62 65 20 69 6e 64 69 es".and."recipients".may.be.indi
657c0 76 69 64 75 61 6c 73 20 6f 72 20 6f 72 67 61 6e 69 7a 61 74 69 6f 6e 73 2e 0a 0a 20 20 54 6f 20 viduals.or.organizations.....To.
657e0 22 6d 6f 64 69 66 79 22 20 61 20 77 6f 72 6b 20 6d 65 61 6e 73 20 74 6f 20 63 6f 70 79 20 66 72 "modify".a.work.means.to.copy.fr
65800 6f 6d 20 6f 72 20 61 64 61 70 74 20 61 6c 6c 20 6f 72 20 70 61 72 74 20 6f 66 20 74 68 65 20 77 om.or.adapt.all.or.part.of.the.w
65820 6f 72 6b 0a 69 6e 20 61 20 66 61 73 68 69 6f 6e 20 72 65 71 75 69 72 69 6e 67 20 63 6f 70 79 72 ork.in.a.fashion.requiring.copyr
65840 69 67 68 74 20 70 65 72 6d 69 73 73 69 6f 6e 2c 20 6f 74 68 65 72 20 74 68 61 6e 20 74 68 65 20 ight.permission,.other.than.the.
65860 6d 61 6b 69 6e 67 20 6f 66 20 61 6e 0a 65 78 61 63 74 20 63 6f 70 79 2e 20 20 54 68 65 20 72 65 making.of.an.exact.copy...The.re
65880 73 75 6c 74 69 6e 67 20 77 6f 72 6b 20 69 73 20 63 61 6c 6c 65 64 20 61 20 22 6d 6f 64 69 66 69 sulting.work.is.called.a."modifi
658a0 65 64 20 76 65 72 73 69 6f 6e 22 20 6f 66 20 74 68 65 0a 65 61 72 6c 69 65 72 20 77 6f 72 6b 20 ed.version".of.the.earlier.work.
658c0 6f 72 20 61 20 77 6f 72 6b 20 22 62 61 73 65 64 20 6f 6e 22 20 74 68 65 20 65 61 72 6c 69 65 72 or.a.work."based.on".the.earlier
658e0 20 77 6f 72 6b 2e 0a 0a 20 20 41 20 22 63 6f 76 65 72 65 64 20 77 6f 72 6b 22 20 6d 65 61 6e 73 .work.....A."covered.work".means
65900 20 65 69 74 68 65 72 20 74 68 65 20 75 6e 6d 6f 64 69 66 69 65 64 20 50 72 6f 67 72 61 6d 20 6f .either.the.unmodified.Program.o
65920 72 20 61 20 77 6f 72 6b 20 62 61 73 65 64 0a 6f 6e 20 74 68 65 20 50 72 6f 67 72 61 6d 2e 0a 0a r.a.work.based.on.the.Program...
65940 20 20 54 6f 20 22 70 72 6f 70 61 67 61 74 65 22 20 61 20 77 6f 72 6b 20 6d 65 61 6e 73 20 74 6f ..To."propagate".a.work.means.to
65960 20 64 6f 20 61 6e 79 74 68 69 6e 67 20 77 69 74 68 20 69 74 20 74 68 61 74 2c 20 77 69 74 68 6f .do.anything.with.it.that,.witho
65980 75 74 0a 70 65 72 6d 69 73 73 69 6f 6e 2c 20 77 6f 75 6c 64 20 6d 61 6b 65 20 79 6f 75 20 64 69 ut.permission,.would.make.you.di
659a0 72 65 63 74 6c 79 20 6f 72 20 73 65 63 6f 6e 64 61 72 69 6c 79 20 6c 69 61 62 6c 65 20 66 6f 72 rectly.or.secondarily.liable.for
659c0 0a 69 6e 66 72 69 6e 67 65 6d 65 6e 74 20 75 6e 64 65 72 20 61 70 70 6c 69 63 61 62 6c 65 20 63 .infringement.under.applicable.c
659e0 6f 70 79 72 69 67 68 74 20 6c 61 77 2c 20 65 78 63 65 70 74 20 65 78 65 63 75 74 69 6e 67 20 69 opyright.law,.except.executing.i
65a00 74 20 6f 6e 20 61 0a 63 6f 6d 70 75 74 65 72 20 6f 72 20 6d 6f 64 69 66 79 69 6e 67 20 61 20 70 t.on.a.computer.or.modifying.a.p
65a20 72 69 76 61 74 65 20 63 6f 70 79 2e 20 20 50 72 6f 70 61 67 61 74 69 6f 6e 20 69 6e 63 6c 75 64 rivate.copy...Propagation.includ
65a40 65 73 20 63 6f 70 79 69 6e 67 2c 0a 64 69 73 74 72 69 62 75 74 69 6f 6e 20 28 77 69 74 68 20 6f es.copying,.distribution.(with.o
65a60 72 20 77 69 74 68 6f 75 74 20 6d 6f 64 69 66 69 63 61 74 69 6f 6e 29 2c 20 6d 61 6b 69 6e 67 20 r.without.modification),.making.
65a80 61 76 61 69 6c 61 62 6c 65 20 74 6f 20 74 68 65 0a 70 75 62 6c 69 63 2c 20 61 6e 64 20 69 6e 20 available.to.the.public,.and.in.
65aa0 73 6f 6d 65 20 63 6f 75 6e 74 72 69 65 73 20 6f 74 68 65 72 20 61 63 74 69 76 69 74 69 65 73 20 some.countries.other.activities.
65ac0 61 73 20 77 65 6c 6c 2e 0a 0a 20 20 54 6f 20 22 63 6f 6e 76 65 79 22 20 61 20 77 6f 72 6b 20 6d as.well.....To."convey".a.work.m
65ae0 65 61 6e 73 20 61 6e 79 20 6b 69 6e 64 20 6f 66 20 70 72 6f 70 61 67 61 74 69 6f 6e 20 74 68 61 eans.any.kind.of.propagation.tha
65b00 74 20 65 6e 61 62 6c 65 73 20 6f 74 68 65 72 0a 70 61 72 74 69 65 73 20 74 6f 20 6d 61 6b 65 20 t.enables.other.parties.to.make.
65b20 6f 72 20 72 65 63 65 69 76 65 20 63 6f 70 69 65 73 2e 20 20 4d 65 72 65 20 69 6e 74 65 72 61 63 or.receive.copies...Mere.interac
65b40 74 69 6f 6e 20 77 69 74 68 20 61 20 75 73 65 72 20 74 68 72 6f 75 67 68 0a 61 20 63 6f 6d 70 75 tion.with.a.user.through.a.compu
65b60 74 65 72 20 6e 65 74 77 6f 72 6b 2c 20 77 69 74 68 20 6e 6f 20 74 72 61 6e 73 66 65 72 20 6f 66 ter.network,.with.no.transfer.of
65b80 20 61 20 63 6f 70 79 2c 20 69 73 20 6e 6f 74 20 63 6f 6e 76 65 79 69 6e 67 2e 0a 0a 20 20 41 6e .a.copy,.is.not.conveying.....An
65ba0 20 69 6e 74 65 72 61 63 74 69 76 65 20 75 73 65 72 20 69 6e 74 65 72 66 61 63 65 20 64 69 73 70 .interactive.user.interface.disp
65bc0 6c 61 79 73 20 22 41 70 70 72 6f 70 72 69 61 74 65 20 4c 65 67 61 6c 20 4e 6f 74 69 63 65 73 22 lays."Appropriate.Legal.Notices"
65be0 0a 74 6f 20 74 68 65 20 65 78 74 65 6e 74 20 74 68 61 74 20 69 74 20 69 6e 63 6c 75 64 65 73 20 .to.the.extent.that.it.includes.
65c00 61 20 63 6f 6e 76 65 6e 69 65 6e 74 20 61 6e 64 20 70 72 6f 6d 69 6e 65 6e 74 6c 79 20 76 69 73 a.convenient.and.prominently.vis
65c20 69 62 6c 65 0a 66 65 61 74 75 72 65 20 74 68 61 74 20 28 31 29 20 64 69 73 70 6c 61 79 73 20 61 ible.feature.that.(1).displays.a
65c40 6e 20 61 70 70 72 6f 70 72 69 61 74 65 20 63 6f 70 79 72 69 67 68 74 20 6e 6f 74 69 63 65 2c 20 n.appropriate.copyright.notice,.
65c60 61 6e 64 20 28 32 29 0a 74 65 6c 6c 73 20 74 68 65 20 75 73 65 72 20 74 68 61 74 20 74 68 65 72 and.(2).tells.the.user.that.ther
65c80 65 20 69 73 20 6e 6f 20 77 61 72 72 61 6e 74 79 20 66 6f 72 20 74 68 65 20 77 6f 72 6b 20 28 65 e.is.no.warranty.for.the.work.(e
65ca0 78 63 65 70 74 20 74 6f 20 74 68 65 0a 65 78 74 65 6e 74 20 74 68 61 74 20 77 61 72 72 61 6e 74 xcept.to.the.extent.that.warrant
65cc0 69 65 73 20 61 72 65 20 70 72 6f 76 69 64 65 64 29 2c 20 74 68 61 74 20 6c 69 63 65 6e 73 65 65 ies.are.provided),.that.licensee
65ce0 73 20 6d 61 79 20 63 6f 6e 76 65 79 20 74 68 65 0a 77 6f 72 6b 20 75 6e 64 65 72 20 74 68 69 73 s.may.convey.the.work.under.this
65d00 20 4c 69 63 65 6e 73 65 2c 20 61 6e 64 20 68 6f 77 20 74 6f 20 76 69 65 77 20 61 20 63 6f 70 79 .License,.and.how.to.view.a.copy
65d20 20 6f 66 20 74 68 69 73 20 4c 69 63 65 6e 73 65 2e 20 20 49 66 0a 74 68 65 20 69 6e 74 65 72 66 .of.this.License...If.the.interf
65d40 61 63 65 20 70 72 65 73 65 6e 74 73 20 61 20 6c 69 73 74 20 6f 66 20 75 73 65 72 20 63 6f 6d 6d ace.presents.a.list.of.user.comm
65d60 61 6e 64 73 20 6f 72 20 6f 70 74 69 6f 6e 73 2c 20 73 75 63 68 20 61 73 20 61 0a 6d 65 6e 75 2c ands.or.options,.such.as.a.menu,
65d80 20 61 20 70 72 6f 6d 69 6e 65 6e 74 20 69 74 65 6d 20 69 6e 20 74 68 65 20 6c 69 73 74 20 6d 65 .a.prominent.item.in.the.list.me
65da0 65 74 73 20 74 68 69 73 20 63 72 69 74 65 72 69 6f 6e 2e 0a 0a 20 20 31 2e 20 53 6f 75 72 63 65 ets.this.criterion.....1..Source
65dc0 20 43 6f 64 65 2e 0a 0a 20 20 54 68 65 20 22 73 6f 75 72 63 65 20 63 6f 64 65 22 20 66 6f 72 20 .Code.....The."source.code".for.
65de0 61 20 77 6f 72 6b 20 6d 65 61 6e 73 20 74 68 65 20 70 72 65 66 65 72 72 65 64 20 66 6f 72 6d 20 a.work.means.the.preferred.form.
65e00 6f 66 20 74 68 65 20 77 6f 72 6b 0a 66 6f 72 20 6d 61 6b 69 6e 67 20 6d 6f 64 69 66 69 63 61 74 of.the.work.for.making.modificat
65e20 69 6f 6e 73 20 74 6f 20 69 74 2e 20 20 22 4f 62 6a 65 63 74 20 63 6f 64 65 22 20 6d 65 61 6e 73 ions.to.it..."Object.code".means
65e40 20 61 6e 79 20 6e 6f 6e 2d 73 6f 75 72 63 65 0a 66 6f 72 6d 20 6f 66 20 61 20 77 6f 72 6b 2e 0a .any.non-source.form.of.a.work..
65e60 0a 20 20 41 20 22 53 74 61 6e 64 61 72 64 20 49 6e 74 65 72 66 61 63 65 22 20 6d 65 61 6e 73 20 ...A."Standard.Interface".means.
65e80 61 6e 20 69 6e 74 65 72 66 61 63 65 20 74 68 61 74 20 65 69 74 68 65 72 20 69 73 20 61 6e 20 6f an.interface.that.either.is.an.o
65ea0 66 66 69 63 69 61 6c 0a 73 74 61 6e 64 61 72 64 20 64 65 66 69 6e 65 64 20 62 79 20 61 20 72 65 fficial.standard.defined.by.a.re
65ec0 63 6f 67 6e 69 7a 65 64 20 73 74 61 6e 64 61 72 64 73 20 62 6f 64 79 2c 20 6f 72 2c 20 69 6e 20 cognized.standards.body,.or,.in.
65ee0 74 68 65 20 63 61 73 65 20 6f 66 0a 69 6e 74 65 72 66 61 63 65 73 20 73 70 65 63 69 66 69 65 64 the.case.of.interfaces.specified
65f00 20 66 6f 72 20 61 20 70 61 72 74 69 63 75 6c 61 72 20 70 72 6f 67 72 61 6d 6d 69 6e 67 20 6c 61 .for.a.particular.programming.la
65f20 6e 67 75 61 67 65 2c 20 6f 6e 65 20 74 68 61 74 0a 69 73 20 77 69 64 65 6c 79 20 75 73 65 64 20 nguage,.one.that.is.widely.used.
65f40 61 6d 6f 6e 67 20 64 65 76 65 6c 6f 70 65 72 73 20 77 6f 72 6b 69 6e 67 20 69 6e 20 74 68 61 74 among.developers.working.in.that
65f60 20 6c 61 6e 67 75 61 67 65 2e 0a 0a 20 20 54 68 65 20 22 53 79 73 74 65 6d 20 4c 69 62 72 61 72 .language.....The."System.Librar
65f80 69 65 73 22 20 6f 66 20 61 6e 20 65 78 65 63 75 74 61 62 6c 65 20 77 6f 72 6b 20 69 6e 63 6c 75 ies".of.an.executable.work.inclu
65fa0 64 65 20 61 6e 79 74 68 69 6e 67 2c 20 6f 74 68 65 72 0a 74 68 61 6e 20 74 68 65 20 77 6f 72 6b de.anything,.other.than.the.work
65fc0 20 61 73 20 61 20 77 68 6f 6c 65 2c 20 74 68 61 74 20 28 61 29 20 69 73 20 69 6e 63 6c 75 64 65 .as.a.whole,.that.(a).is.include
65fe0 64 20 69 6e 20 74 68 65 20 6e 6f 72 6d 61 6c 20 66 6f 72 6d 20 6f 66 0a 70 61 63 6b 61 67 69 6e d.in.the.normal.form.of.packagin
66000 67 20 61 20 4d 61 6a 6f 72 20 43 6f 6d 70 6f 6e 65 6e 74 2c 20 62 75 74 20 77 68 69 63 68 20 69 g.a.Major.Component,.but.which.i
66020 73 20 6e 6f 74 20 70 61 72 74 20 6f 66 20 74 68 61 74 20 4d 61 6a 6f 72 0a 43 6f 6d 70 6f 6e 65 s.not.part.of.that.Major.Compone
66040 6e 74 2c 20 61 6e 64 20 28 62 29 20 73 65 72 76 65 73 20 6f 6e 6c 79 20 74 6f 20 65 6e 61 62 6c nt,.and.(b).serves.only.to.enabl
66060 65 20 75 73 65 20 6f 66 20 74 68 65 20 77 6f 72 6b 20 77 69 74 68 20 74 68 61 74 0a 4d 61 6a 6f e.use.of.the.work.with.that.Majo
66080 72 20 43 6f 6d 70 6f 6e 65 6e 74 2c 20 6f 72 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 61 20 53 r.Component,.or.to.implement.a.S
660a0 74 61 6e 64 61 72 64 20 49 6e 74 65 72 66 61 63 65 20 66 6f 72 20 77 68 69 63 68 20 61 6e 0a 69 tandard.Interface.for.which.an.i
660c0 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 69 73 20 61 76 61 69 6c 61 62 6c 65 20 74 6f 20 74 68 mplementation.is.available.to.th
660e0 65 20 70 75 62 6c 69 63 20 69 6e 20 73 6f 75 72 63 65 20 63 6f 64 65 20 66 6f 72 6d 2e 20 20 41 e.public.in.source.code.form...A
66100 0a 22 4d 61 6a 6f 72 20 43 6f 6d 70 6f 6e 65 6e 74 22 2c 20 69 6e 20 74 68 69 73 20 63 6f 6e 74 ."Major.Component",.in.this.cont
66120 65 78 74 2c 20 6d 65 61 6e 73 20 61 20 6d 61 6a 6f 72 20 65 73 73 65 6e 74 69 61 6c 20 63 6f 6d ext,.means.a.major.essential.com
66140 70 6f 6e 65 6e 74 0a 28 6b 65 72 6e 65 6c 2c 20 77 69 6e 64 6f 77 20 73 79 73 74 65 6d 2c 20 61 ponent.(kernel,.window.system,.a
66160 6e 64 20 73 6f 20 6f 6e 29 20 6f 66 20 74 68 65 20 73 70 65 63 69 66 69 63 20 6f 70 65 72 61 74 nd.so.on).of.the.specific.operat
66180 69 6e 67 20 73 79 73 74 65 6d 0a 28 69 66 20 61 6e 79 29 20 6f 6e 20 77 68 69 63 68 20 74 68 65 ing.system.(if.any).on.which.the
661a0 20 65 78 65 63 75 74 61 62 6c 65 20 77 6f 72 6b 20 72 75 6e 73 2c 20 6f 72 20 61 20 63 6f 6d 70 .executable.work.runs,.or.a.comp
661c0 69 6c 65 72 20 75 73 65 64 20 74 6f 0a 70 72 6f 64 75 63 65 20 74 68 65 20 77 6f 72 6b 2c 20 6f iler.used.to.produce.the.work,.o
661e0 72 20 61 6e 20 6f 62 6a 65 63 74 20 63 6f 64 65 20 69 6e 74 65 72 70 72 65 74 65 72 20 75 73 65 r.an.object.code.interpreter.use
66200 64 20 74 6f 20 72 75 6e 20 69 74 2e 0a 0a 20 20 54 68 65 20 22 43 6f 72 72 65 73 70 6f 6e 64 69 d.to.run.it.....The."Correspondi
66220 6e 67 20 53 6f 75 72 63 65 22 20 66 6f 72 20 61 20 77 6f 72 6b 20 69 6e 20 6f 62 6a 65 63 74 20 ng.Source".for.a.work.in.object.
66240 63 6f 64 65 20 66 6f 72 6d 20 6d 65 61 6e 73 20 61 6c 6c 0a 74 68 65 20 73 6f 75 72 63 65 20 63 code.form.means.all.the.source.c
66260 6f 64 65 20 6e 65 65 64 65 64 20 74 6f 20 67 65 6e 65 72 61 74 65 2c 20 69 6e 73 74 61 6c 6c 2c ode.needed.to.generate,.install,
66280 20 61 6e 64 20 28 66 6f 72 20 61 6e 20 65 78 65 63 75 74 61 62 6c 65 0a 77 6f 72 6b 29 20 72 75 .and.(for.an.executable.work).ru
662a0 6e 20 74 68 65 20 6f 62 6a 65 63 74 20 63 6f 64 65 20 61 6e 64 20 74 6f 20 6d 6f 64 69 66 79 20 n.the.object.code.and.to.modify.
662c0 74 68 65 20 77 6f 72 6b 2c 20 69 6e 63 6c 75 64 69 6e 67 20 73 63 72 69 70 74 73 20 74 6f 0a 63 the.work,.including.scripts.to.c
662e0 6f 6e 74 72 6f 6c 20 74 68 6f 73 65 20 61 63 74 69 76 69 74 69 65 73 2e 20 20 48 6f 77 65 76 65 ontrol.those.activities...Howeve
66300 72 2c 20 69 74 20 64 6f 65 73 20 6e 6f 74 20 69 6e 63 6c 75 64 65 20 74 68 65 20 77 6f 72 6b 27 r,.it.does.not.include.the.work'
66320 73 0a 53 79 73 74 65 6d 20 4c 69 62 72 61 72 69 65 73 2c 20 6f 72 20 67 65 6e 65 72 61 6c 2d 70 s.System.Libraries,.or.general-p
66340 75 72 70 6f 73 65 20 74 6f 6f 6c 73 20 6f 72 20 67 65 6e 65 72 61 6c 6c 79 20 61 76 61 69 6c 61 urpose.tools.or.generally.availa
66360 62 6c 65 20 66 72 65 65 0a 70 72 6f 67 72 61 6d 73 20 77 68 69 63 68 20 61 72 65 20 75 73 65 64 ble.free.programs.which.are.used
66380 20 75 6e 6d 6f 64 69 66 69 65 64 20 69 6e 20 70 65 72 66 6f 72 6d 69 6e 67 20 74 68 6f 73 65 20 .unmodified.in.performing.those.
663a0 61 63 74 69 76 69 74 69 65 73 20 62 75 74 0a 77 68 69 63 68 20 61 72 65 20 6e 6f 74 20 70 61 72 activities.but.which.are.not.par
663c0 74 20 6f 66 20 74 68 65 20 77 6f 72 6b 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 43 6f 72 t.of.the.work...For.example,.Cor
663e0 72 65 73 70 6f 6e 64 69 6e 67 20 53 6f 75 72 63 65 0a 69 6e 63 6c 75 64 65 73 20 69 6e 74 65 72 responding.Source.includes.inter
66400 66 61 63 65 20 64 65 66 69 6e 69 74 69 6f 6e 20 66 69 6c 65 73 20 61 73 73 6f 63 69 61 74 65 64 face.definition.files.associated
66420 20 77 69 74 68 20 73 6f 75 72 63 65 20 66 69 6c 65 73 20 66 6f 72 0a 74 68 65 20 77 6f 72 6b 2c .with.source.files.for.the.work,
66440 20 61 6e 64 20 74 68 65 20 73 6f 75 72 63 65 20 63 6f 64 65 20 66 6f 72 20 73 68 61 72 65 64 20 .and.the.source.code.for.shared.
66460 6c 69 62 72 61 72 69 65 73 20 61 6e 64 20 64 79 6e 61 6d 69 63 61 6c 6c 79 0a 6c 69 6e 6b 65 64 libraries.and.dynamically.linked
66480 20 73 75 62 70 72 6f 67 72 61 6d 73 20 74 68 61 74 20 74 68 65 20 77 6f 72 6b 20 69 73 20 73 70 .subprograms.that.the.work.is.sp
664a0 65 63 69 66 69 63 61 6c 6c 79 20 64 65 73 69 67 6e 65 64 20 74 6f 20 72 65 71 75 69 72 65 2c 0a ecifically.designed.to.require,.
664c0 73 75 63 68 20 61 73 20 62 79 20 69 6e 74 69 6d 61 74 65 20 64 61 74 61 20 63 6f 6d 6d 75 6e 69 such.as.by.intimate.data.communi
664e0 63 61 74 69 6f 6e 20 6f 72 20 63 6f 6e 74 72 6f 6c 20 66 6c 6f 77 20 62 65 74 77 65 65 6e 20 74 cation.or.control.flow.between.t
66500 68 6f 73 65 0a 73 75 62 70 72 6f 67 72 61 6d 73 20 61 6e 64 20 6f 74 68 65 72 20 70 61 72 74 73 hose.subprograms.and.other.parts
66520 20 6f 66 20 74 68 65 20 77 6f 72 6b 2e 0a 0a 20 20 54 68 65 20 43 6f 72 72 65 73 70 6f 6e 64 69 .of.the.work.....The.Correspondi
66540 6e 67 20 53 6f 75 72 63 65 20 6e 65 65 64 20 6e 6f 74 20 69 6e 63 6c 75 64 65 20 61 6e 79 74 68 ng.Source.need.not.include.anyth
66560 69 6e 67 20 74 68 61 74 20 75 73 65 72 73 0a 63 61 6e 20 72 65 67 65 6e 65 72 61 74 65 20 61 75 ing.that.users.can.regenerate.au
66580 74 6f 6d 61 74 69 63 61 6c 6c 79 20 66 72 6f 6d 20 6f 74 68 65 72 20 70 61 72 74 73 20 6f 66 20 tomatically.from.other.parts.of.
665a0 74 68 65 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 0a 53 6f 75 72 63 65 2e 0a 0a 20 20 54 68 65 the.Corresponding.Source.....The
665c0 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 53 6f 75 72 63 65 20 66 6f 72 20 61 20 77 6f 72 6b .Corresponding.Source.for.a.work
665e0 20 69 6e 20 73 6f 75 72 63 65 20 63 6f 64 65 20 66 6f 72 6d 20 69 73 20 74 68 61 74 0a 73 61 6d .in.source.code.form.is.that.sam
66600 65 20 77 6f 72 6b 2e 0a 0a 20 20 32 2e 20 42 61 73 69 63 20 50 65 72 6d 69 73 73 69 6f 6e 73 2e e.work.....2..Basic.Permissions.
66620 0a 0a 20 20 41 6c 6c 20 72 69 67 68 74 73 20 67 72 61 6e 74 65 64 20 75 6e 64 65 72 20 74 68 69 ....All.rights.granted.under.thi
66640 73 20 4c 69 63 65 6e 73 65 20 61 72 65 20 67 72 61 6e 74 65 64 20 66 6f 72 20 74 68 65 20 74 65 s.License.are.granted.for.the.te
66660 72 6d 20 6f 66 0a 63 6f 70 79 72 69 67 68 74 20 6f 6e 20 74 68 65 20 50 72 6f 67 72 61 6d 2c 20 rm.of.copyright.on.the.Program,.
66680 61 6e 64 20 61 72 65 20 69 72 72 65 76 6f 63 61 62 6c 65 20 70 72 6f 76 69 64 65 64 20 74 68 65 and.are.irrevocable.provided.the
666a0 20 73 74 61 74 65 64 0a 63 6f 6e 64 69 74 69 6f 6e 73 20 61 72 65 20 6d 65 74 2e 20 20 54 68 69 .stated.conditions.are.met...Thi
666c0 73 20 4c 69 63 65 6e 73 65 20 65 78 70 6c 69 63 69 74 6c 79 20 61 66 66 69 72 6d 73 20 79 6f 75 s.License.explicitly.affirms.you
666e0 72 20 75 6e 6c 69 6d 69 74 65 64 0a 70 65 72 6d 69 73 73 69 6f 6e 20 74 6f 20 72 75 6e 20 74 68 r.unlimited.permission.to.run.th
66700 65 20 75 6e 6d 6f 64 69 66 69 65 64 20 50 72 6f 67 72 61 6d 2e 20 20 54 68 65 20 6f 75 74 70 75 e.unmodified.Program...The.outpu
66720 74 20 66 72 6f 6d 20 72 75 6e 6e 69 6e 67 20 61 0a 63 6f 76 65 72 65 64 20 77 6f 72 6b 20 69 73 t.from.running.a.covered.work.is
66740 20 63 6f 76 65 72 65 64 20 62 79 20 74 68 69 73 20 4c 69 63 65 6e 73 65 20 6f 6e 6c 79 20 69 66 .covered.by.this.License.only.if
66760 20 74 68 65 20 6f 75 74 70 75 74 2c 20 67 69 76 65 6e 20 69 74 73 0a 63 6f 6e 74 65 6e 74 2c 20 .the.output,.given.its.content,.
66780 63 6f 6e 73 74 69 74 75 74 65 73 20 61 20 63 6f 76 65 72 65 64 20 77 6f 72 6b 2e 20 20 54 68 69 constitutes.a.covered.work...Thi
667a0 73 20 4c 69 63 65 6e 73 65 20 61 63 6b 6e 6f 77 6c 65 64 67 65 73 20 79 6f 75 72 0a 72 69 67 68 s.License.acknowledges.your.righ
667c0 74 73 20 6f 66 20 66 61 69 72 20 75 73 65 20 6f 72 20 6f 74 68 65 72 20 65 71 75 69 76 61 6c 65 ts.of.fair.use.or.other.equivale
667e0 6e 74 2c 20 61 73 20 70 72 6f 76 69 64 65 64 20 62 79 20 63 6f 70 79 72 69 67 68 74 20 6c 61 77 nt,.as.provided.by.copyright.law
66800 2e 0a 0a 20 20 59 6f 75 20 6d 61 79 20 6d 61 6b 65 2c 20 72 75 6e 20 61 6e 64 20 70 72 6f 70 61 .....You.may.make,.run.and.propa
66820 67 61 74 65 20 63 6f 76 65 72 65 64 20 77 6f 72 6b 73 20 74 68 61 74 20 79 6f 75 20 64 6f 20 6e gate.covered.works.that.you.do.n
66840 6f 74 0a 63 6f 6e 76 65 79 2c 20 77 69 74 68 6f 75 74 20 63 6f 6e 64 69 74 69 6f 6e 73 20 73 6f ot.convey,.without.conditions.so
66860 20 6c 6f 6e 67 20 61 73 20 79 6f 75 72 20 6c 69 63 65 6e 73 65 20 6f 74 68 65 72 77 69 73 65 20 .long.as.your.license.otherwise.
66880 72 65 6d 61 69 6e 73 0a 69 6e 20 66 6f 72 63 65 2e 20 20 59 6f 75 20 6d 61 79 20 63 6f 6e 76 65 remains.in.force...You.may.conve
668a0 79 20 63 6f 76 65 72 65 64 20 77 6f 72 6b 73 20 74 6f 20 6f 74 68 65 72 73 20 66 6f 72 20 74 68 y.covered.works.to.others.for.th
668c0 65 20 73 6f 6c 65 20 70 75 72 70 6f 73 65 0a 6f 66 20 68 61 76 69 6e 67 20 74 68 65 6d 20 6d 61 e.sole.purpose.of.having.them.ma
668e0 6b 65 20 6d 6f 64 69 66 69 63 61 74 69 6f 6e 73 20 65 78 63 6c 75 73 69 76 65 6c 79 20 66 6f 72 ke.modifications.exclusively.for
66900 20 79 6f 75 2c 20 6f 72 20 70 72 6f 76 69 64 65 20 79 6f 75 0a 77 69 74 68 20 66 61 63 69 6c 69 .you,.or.provide.you.with.facili
66920 74 69 65 73 20 66 6f 72 20 72 75 6e 6e 69 6e 67 20 74 68 6f 73 65 20 77 6f 72 6b 73 2c 20 70 72 ties.for.running.those.works,.pr
66940 6f 76 69 64 65 64 20 74 68 61 74 20 79 6f 75 20 63 6f 6d 70 6c 79 20 77 69 74 68 0a 74 68 65 20 ovided.that.you.comply.with.the.
66960 74 65 72 6d 73 20 6f 66 20 74 68 69 73 20 4c 69 63 65 6e 73 65 20 69 6e 20 63 6f 6e 76 65 79 69 terms.of.this.License.in.conveyi
66980 6e 67 20 61 6c 6c 20 6d 61 74 65 72 69 61 6c 20 66 6f 72 20 77 68 69 63 68 20 79 6f 75 20 64 6f ng.all.material.for.which.you.do
669a0 0a 6e 6f 74 20 63 6f 6e 74 72 6f 6c 20 63 6f 70 79 72 69 67 68 74 2e 20 20 54 68 6f 73 65 20 74 .not.control.copyright...Those.t
669c0 68 75 73 20 6d 61 6b 69 6e 67 20 6f 72 20 72 75 6e 6e 69 6e 67 20 74 68 65 20 63 6f 76 65 72 65 hus.making.or.running.the.covere
669e0 64 20 77 6f 72 6b 73 0a 66 6f 72 20 79 6f 75 20 6d 75 73 74 20 64 6f 20 73 6f 20 65 78 63 6c 75 d.works.for.you.must.do.so.exclu
66a00 73 69 76 65 6c 79 20 6f 6e 20 79 6f 75 72 20 62 65 68 61 6c 66 2c 20 75 6e 64 65 72 20 79 6f 75 sively.on.your.behalf,.under.you
66a20 72 20 64 69 72 65 63 74 69 6f 6e 0a 61 6e 64 20 63 6f 6e 74 72 6f 6c 2c 20 6f 6e 20 74 65 72 6d r.direction.and.control,.on.term
66a40 73 20 74 68 61 74 20 70 72 6f 68 69 62 69 74 20 74 68 65 6d 20 66 72 6f 6d 20 6d 61 6b 69 6e 67 s.that.prohibit.them.from.making
66a60 20 61 6e 79 20 63 6f 70 69 65 73 20 6f 66 0a 79 6f 75 72 20 63 6f 70 79 72 69 67 68 74 65 64 20 .any.copies.of.your.copyrighted.
66a80 6d 61 74 65 72 69 61 6c 20 6f 75 74 73 69 64 65 20 74 68 65 69 72 20 72 65 6c 61 74 69 6f 6e 73 material.outside.their.relations
66aa0 68 69 70 20 77 69 74 68 20 79 6f 75 2e 0a 0a 20 20 43 6f 6e 76 65 79 69 6e 67 20 75 6e 64 65 72 hip.with.you.....Conveying.under
66ac0 20 61 6e 79 20 6f 74 68 65 72 20 63 69 72 63 75 6d 73 74 61 6e 63 65 73 20 69 73 20 70 65 72 6d .any.other.circumstances.is.perm
66ae0 69 74 74 65 64 20 73 6f 6c 65 6c 79 20 75 6e 64 65 72 0a 74 68 65 20 63 6f 6e 64 69 74 69 6f 6e itted.solely.under.the.condition
66b00 73 20 73 74 61 74 65 64 20 62 65 6c 6f 77 2e 20 20 53 75 62 6c 69 63 65 6e 73 69 6e 67 20 69 73 s.stated.below...Sublicensing.is
66b20 20 6e 6f 74 20 61 6c 6c 6f 77 65 64 3b 20 73 65 63 74 69 6f 6e 20 31 30 0a 6d 61 6b 65 73 20 69 .not.allowed;.section.10.makes.i
66b40 74 20 75 6e 6e 65 63 65 73 73 61 72 79 2e 0a 0a 20 20 33 2e 20 50 72 6f 74 65 63 74 69 6e 67 20 t.unnecessary.....3..Protecting.
66b60 55 73 65 72 73 27 20 4c 65 67 61 6c 20 52 69 67 68 74 73 20 46 72 6f 6d 20 41 6e 74 69 2d 43 69 Users'.Legal.Rights.From.Anti-Ci
66b80 72 63 75 6d 76 65 6e 74 69 6f 6e 20 4c 61 77 2e 0a 0a 20 20 4e 6f 20 63 6f 76 65 72 65 64 20 77 rcumvention.Law.....No.covered.w
66ba0 6f 72 6b 20 73 68 61 6c 6c 20 62 65 20 64 65 65 6d 65 64 20 70 61 72 74 20 6f 66 20 61 6e 20 65 ork.shall.be.deemed.part.of.an.e
66bc0 66 66 65 63 74 69 76 65 20 74 65 63 68 6e 6f 6c 6f 67 69 63 61 6c 0a 6d 65 61 73 75 72 65 20 75 ffective.technological.measure.u
66be0 6e 64 65 72 20 61 6e 79 20 61 70 70 6c 69 63 61 62 6c 65 20 6c 61 77 20 66 75 6c 66 69 6c 6c 69 nder.any.applicable.law.fulfilli
66c00 6e 67 20 6f 62 6c 69 67 61 74 69 6f 6e 73 20 75 6e 64 65 72 20 61 72 74 69 63 6c 65 0a 31 31 20 ng.obligations.under.article.11.
66c20 6f 66 20 74 68 65 20 57 49 50 4f 20 63 6f 70 79 72 69 67 68 74 20 74 72 65 61 74 79 20 61 64 6f of.the.WIPO.copyright.treaty.ado
66c40 70 74 65 64 20 6f 6e 20 32 30 20 44 65 63 65 6d 62 65 72 20 31 39 39 36 2c 20 6f 72 0a 73 69 6d pted.on.20.December.1996,.or.sim
66c60 69 6c 61 72 20 6c 61 77 73 20 70 72 6f 68 69 62 69 74 69 6e 67 20 6f 72 20 72 65 73 74 72 69 63 ilar.laws.prohibiting.or.restric
66c80 74 69 6e 67 20 63 69 72 63 75 6d 76 65 6e 74 69 6f 6e 20 6f 66 20 73 75 63 68 0a 6d 65 61 73 75 ting.circumvention.of.such.measu
66ca0 72 65 73 2e 0a 0a 20 20 57 68 65 6e 20 79 6f 75 20 63 6f 6e 76 65 79 20 61 20 63 6f 76 65 72 65 res.....When.you.convey.a.covere
66cc0 64 20 77 6f 72 6b 2c 20 79 6f 75 20 77 61 69 76 65 20 61 6e 79 20 6c 65 67 61 6c 20 70 6f 77 65 d.work,.you.waive.any.legal.powe
66ce0 72 20 74 6f 20 66 6f 72 62 69 64 0a 63 69 72 63 75 6d 76 65 6e 74 69 6f 6e 20 6f 66 20 74 65 63 r.to.forbid.circumvention.of.tec
66d00 68 6e 6f 6c 6f 67 69 63 61 6c 20 6d 65 61 73 75 72 65 73 20 74 6f 20 74 68 65 20 65 78 74 65 6e hnological.measures.to.the.exten
66d20 74 20 73 75 63 68 20 63 69 72 63 75 6d 76 65 6e 74 69 6f 6e 0a 69 73 20 65 66 66 65 63 74 65 64 t.such.circumvention.is.effected
66d40 20 62 79 20 65 78 65 72 63 69 73 69 6e 67 20 72 69 67 68 74 73 20 75 6e 64 65 72 20 74 68 69 73 .by.exercising.rights.under.this
66d60 20 4c 69 63 65 6e 73 65 20 77 69 74 68 20 72 65 73 70 65 63 74 20 74 6f 0a 74 68 65 20 63 6f 76 .License.with.respect.to.the.cov
66d80 65 72 65 64 20 77 6f 72 6b 2c 20 61 6e 64 20 79 6f 75 20 64 69 73 63 6c 61 69 6d 20 61 6e 79 20 ered.work,.and.you.disclaim.any.
66da0 69 6e 74 65 6e 74 69 6f 6e 20 74 6f 20 6c 69 6d 69 74 20 6f 70 65 72 61 74 69 6f 6e 20 6f 72 0a intention.to.limit.operation.or.
66dc0 6d 6f 64 69 66 69 63 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 77 6f 72 6b 20 61 73 20 61 20 6d 65 modification.of.the.work.as.a.me
66de0 61 6e 73 20 6f 66 20 65 6e 66 6f 72 63 69 6e 67 2c 20 61 67 61 69 6e 73 74 20 74 68 65 20 77 6f ans.of.enforcing,.against.the.wo
66e00 72 6b 27 73 0a 75 73 65 72 73 2c 20 79 6f 75 72 20 6f 72 20 74 68 69 72 64 20 70 61 72 74 69 65 rk's.users,.your.or.third.partie
66e20 73 27 20 6c 65 67 61 6c 20 72 69 67 68 74 73 20 74 6f 20 66 6f 72 62 69 64 20 63 69 72 63 75 6d s'.legal.rights.to.forbid.circum
66e40 76 65 6e 74 69 6f 6e 20 6f 66 0a 74 65 63 68 6e 6f 6c 6f 67 69 63 61 6c 20 6d 65 61 73 75 72 65 vention.of.technological.measure
66e60 73 2e 0a 0a 20 20 34 2e 20 43 6f 6e 76 65 79 69 6e 67 20 56 65 72 62 61 74 69 6d 20 43 6f 70 69 s.....4..Conveying.Verbatim.Copi
66e80 65 73 2e 0a 0a 20 20 59 6f 75 20 6d 61 79 20 63 6f 6e 76 65 79 20 76 65 72 62 61 74 69 6d 20 63 es.....You.may.convey.verbatim.c
66ea0 6f 70 69 65 73 20 6f 66 20 74 68 65 20 50 72 6f 67 72 61 6d 27 73 20 73 6f 75 72 63 65 20 63 6f opies.of.the.Program's.source.co
66ec0 64 65 20 61 73 20 79 6f 75 0a 72 65 63 65 69 76 65 20 69 74 2c 20 69 6e 20 61 6e 79 20 6d 65 64 de.as.you.receive.it,.in.any.med
66ee0 69 75 6d 2c 20 70 72 6f 76 69 64 65 64 20 74 68 61 74 20 79 6f 75 20 63 6f 6e 73 70 69 63 75 6f ium,.provided.that.you.conspicuo
66f00 75 73 6c 79 20 61 6e 64 0a 61 70 70 72 6f 70 72 69 61 74 65 6c 79 20 70 75 62 6c 69 73 68 20 6f usly.and.appropriately.publish.o
66f20 6e 20 65 61 63 68 20 63 6f 70 79 20 61 6e 20 61 70 70 72 6f 70 72 69 61 74 65 20 63 6f 70 79 72 n.each.copy.an.appropriate.copyr
66f40 69 67 68 74 20 6e 6f 74 69 63 65 3b 0a 6b 65 65 70 20 69 6e 74 61 63 74 20 61 6c 6c 20 6e 6f 74 ight.notice;.keep.intact.all.not
66f60 69 63 65 73 20 73 74 61 74 69 6e 67 20 74 68 61 74 20 74 68 69 73 20 4c 69 63 65 6e 73 65 20 61 ices.stating.that.this.License.a
66f80 6e 64 20 61 6e 79 0a 6e 6f 6e 2d 70 65 72 6d 69 73 73 69 76 65 20 74 65 72 6d 73 20 61 64 64 65 nd.any.non-permissive.terms.adde
66fa0 64 20 69 6e 20 61 63 63 6f 72 64 20 77 69 74 68 20 73 65 63 74 69 6f 6e 20 37 20 61 70 70 6c 79 d.in.accord.with.section.7.apply
66fc0 20 74 6f 20 74 68 65 20 63 6f 64 65 3b 0a 6b 65 65 70 20 69 6e 74 61 63 74 20 61 6c 6c 20 6e 6f .to.the.code;.keep.intact.all.no
66fe0 74 69 63 65 73 20 6f 66 20 74 68 65 20 61 62 73 65 6e 63 65 20 6f 66 20 61 6e 79 20 77 61 72 72 tices.of.the.absence.of.any.warr
67000 61 6e 74 79 3b 20 61 6e 64 20 67 69 76 65 20 61 6c 6c 0a 72 65 63 69 70 69 65 6e 74 73 20 61 20 anty;.and.give.all.recipients.a.
67020 63 6f 70 79 20 6f 66 20 74 68 69 73 20 4c 69 63 65 6e 73 65 20 61 6c 6f 6e 67 20 77 69 74 68 20 copy.of.this.License.along.with.
67040 74 68 65 20 50 72 6f 67 72 61 6d 2e 0a 0a 20 20 59 6f 75 20 6d 61 79 20 63 68 61 72 67 65 20 61 the.Program.....You.may.charge.a
67060 6e 79 20 70 72 69 63 65 20 6f 72 20 6e 6f 20 70 72 69 63 65 20 66 6f 72 20 65 61 63 68 20 63 6f ny.price.or.no.price.for.each.co
67080 70 79 20 74 68 61 74 20 79 6f 75 20 63 6f 6e 76 65 79 2c 0a 61 6e 64 20 79 6f 75 20 6d 61 79 20 py.that.you.convey,.and.you.may.
670a0 6f 66 66 65 72 20 73 75 70 70 6f 72 74 20 6f 72 20 77 61 72 72 61 6e 74 79 20 70 72 6f 74 65 63 offer.support.or.warranty.protec
670c0 74 69 6f 6e 20 66 6f 72 20 61 20 66 65 65 2e 0a 0a 20 20 35 2e 20 43 6f 6e 76 65 79 69 6e 67 20 tion.for.a.fee.....5..Conveying.
670e0 4d 6f 64 69 66 69 65 64 20 53 6f 75 72 63 65 20 56 65 72 73 69 6f 6e 73 2e 0a 0a 20 20 59 6f 75 Modified.Source.Versions.....You
67100 20 6d 61 79 20 63 6f 6e 76 65 79 20 61 20 77 6f 72 6b 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20 .may.convey.a.work.based.on.the.
67120 50 72 6f 67 72 61 6d 2c 20 6f 72 20 74 68 65 20 6d 6f 64 69 66 69 63 61 74 69 6f 6e 73 20 74 6f Program,.or.the.modifications.to
67140 0a 70 72 6f 64 75 63 65 20 69 74 20 66 72 6f 6d 20 74 68 65 20 50 72 6f 67 72 61 6d 2c 20 69 6e .produce.it.from.the.Program,.in
67160 20 74 68 65 20 66 6f 72 6d 20 6f 66 20 73 6f 75 72 63 65 20 63 6f 64 65 20 75 6e 64 65 72 20 74 .the.form.of.source.code.under.t
67180 68 65 0a 74 65 72 6d 73 20 6f 66 20 73 65 63 74 69 6f 6e 20 34 2c 20 70 72 6f 76 69 64 65 64 20 he.terms.of.section.4,.provided.
671a0 74 68 61 74 20 79 6f 75 20 61 6c 73 6f 20 6d 65 65 74 20 61 6c 6c 20 6f 66 20 74 68 65 73 65 20 that.you.also.meet.all.of.these.
671c0 63 6f 6e 64 69 74 69 6f 6e 73 3a 0a 0a 20 20 20 20 61 29 20 54 68 65 20 77 6f 72 6b 20 6d 75 73 conditions:......a).The.work.mus
671e0 74 20 63 61 72 72 79 20 70 72 6f 6d 69 6e 65 6e 74 20 6e 6f 74 69 63 65 73 20 73 74 61 74 69 6e t.carry.prominent.notices.statin
67200 67 20 74 68 61 74 20 79 6f 75 20 6d 6f 64 69 66 69 65 64 0a 20 20 20 20 69 74 2c 20 61 6e 64 20 g.that.you.modified.....it,.and.
67220 67 69 76 69 6e 67 20 61 20 72 65 6c 65 76 61 6e 74 20 64 61 74 65 2e 0a 0a 20 20 20 20 62 29 20 giving.a.relevant.date.......b).
67240 54 68 65 20 77 6f 72 6b 20 6d 75 73 74 20 63 61 72 72 79 20 70 72 6f 6d 69 6e 65 6e 74 20 6e 6f The.work.must.carry.prominent.no
67260 74 69 63 65 73 20 73 74 61 74 69 6e 67 20 74 68 61 74 20 69 74 20 69 73 0a 20 20 20 20 72 65 6c tices.stating.that.it.is.....rel
67280 65 61 73 65 64 20 75 6e 64 65 72 20 74 68 69 73 20 4c 69 63 65 6e 73 65 20 61 6e 64 20 61 6e 79 eased.under.this.License.and.any
672a0 20 63 6f 6e 64 69 74 69 6f 6e 73 20 61 64 64 65 64 20 75 6e 64 65 72 20 73 65 63 74 69 6f 6e 0a .conditions.added.under.section.
672c0 20 20 20 20 37 2e 20 20 54 68 69 73 20 72 65 71 75 69 72 65 6d 65 6e 74 20 6d 6f 64 69 66 69 65 ....7...This.requirement.modifie
672e0 73 20 74 68 65 20 72 65 71 75 69 72 65 6d 65 6e 74 20 69 6e 20 73 65 63 74 69 6f 6e 20 34 20 74 s.the.requirement.in.section.4.t
67300 6f 0a 20 20 20 20 22 6b 65 65 70 20 69 6e 74 61 63 74 20 61 6c 6c 20 6e 6f 74 69 63 65 73 22 2e o....."keep.intact.all.notices".
67320 0a 0a 20 20 20 20 63 29 20 59 6f 75 20 6d 75 73 74 20 6c 69 63 65 6e 73 65 20 74 68 65 20 65 6e ......c).You.must.license.the.en
67340 74 69 72 65 20 77 6f 72 6b 2c 20 61 73 20 61 20 77 68 6f 6c 65 2c 20 75 6e 64 65 72 20 74 68 69 tire.work,.as.a.whole,.under.thi
67360 73 0a 20 20 20 20 4c 69 63 65 6e 73 65 20 74 6f 20 61 6e 79 6f 6e 65 20 77 68 6f 20 63 6f 6d 65 s.....License.to.anyone.who.come
67380 73 20 69 6e 74 6f 20 70 6f 73 73 65 73 73 69 6f 6e 20 6f 66 20 61 20 63 6f 70 79 2e 20 20 54 68 s.into.possession.of.a.copy...Th
673a0 69 73 0a 20 20 20 20 4c 69 63 65 6e 73 65 20 77 69 6c 6c 20 74 68 65 72 65 66 6f 72 65 20 61 70 is.....License.will.therefore.ap
673c0 70 6c 79 2c 20 61 6c 6f 6e 67 20 77 69 74 68 20 61 6e 79 20 61 70 70 6c 69 63 61 62 6c 65 20 73 ply,.along.with.any.applicable.s
673e0 65 63 74 69 6f 6e 20 37 0a 20 20 20 20 61 64 64 69 74 69 6f 6e 61 6c 20 74 65 72 6d 73 2c 20 74 ection.7.....additional.terms,.t
67400 6f 20 74 68 65 20 77 68 6f 6c 65 20 6f 66 20 74 68 65 20 77 6f 72 6b 2c 20 61 6e 64 20 61 6c 6c o.the.whole.of.the.work,.and.all
67420 20 69 74 73 20 70 61 72 74 73 2c 0a 20 20 20 20 72 65 67 61 72 64 6c 65 73 73 20 6f 66 20 68 6f .its.parts,.....regardless.of.ho
67440 77 20 74 68 65 79 20 61 72 65 20 70 61 63 6b 61 67 65 64 2e 20 20 54 68 69 73 20 4c 69 63 65 6e w.they.are.packaged...This.Licen
67460 73 65 20 67 69 76 65 73 20 6e 6f 0a 20 20 20 20 70 65 72 6d 69 73 73 69 6f 6e 20 74 6f 20 6c 69 se.gives.no.....permission.to.li
67480 63 65 6e 73 65 20 74 68 65 20 77 6f 72 6b 20 69 6e 20 61 6e 79 20 6f 74 68 65 72 20 77 61 79 2c cense.the.work.in.any.other.way,
674a0 20 62 75 74 20 69 74 20 64 6f 65 73 20 6e 6f 74 0a 20 20 20 20 69 6e 76 61 6c 69 64 61 74 65 20 .but.it.does.not.....invalidate.
674c0 73 75 63 68 20 70 65 72 6d 69 73 73 69 6f 6e 20 69 66 20 79 6f 75 20 68 61 76 65 20 73 65 70 61 such.permission.if.you.have.sepa
674e0 72 61 74 65 6c 79 20 72 65 63 65 69 76 65 64 20 69 74 2e 0a 0a 20 20 20 20 64 29 20 49 66 20 74 rately.received.it.......d).If.t
67500 68 65 20 77 6f 72 6b 20 68 61 73 20 69 6e 74 65 72 61 63 74 69 76 65 20 75 73 65 72 20 69 6e 74 he.work.has.interactive.user.int
67520 65 72 66 61 63 65 73 2c 20 65 61 63 68 20 6d 75 73 74 20 64 69 73 70 6c 61 79 0a 20 20 20 20 41 erfaces,.each.must.display.....A
67540 70 70 72 6f 70 72 69 61 74 65 20 4c 65 67 61 6c 20 4e 6f 74 69 63 65 73 3b 20 68 6f 77 65 76 65 ppropriate.Legal.Notices;.howeve
67560 72 2c 20 69 66 20 74 68 65 20 50 72 6f 67 72 61 6d 20 68 61 73 20 69 6e 74 65 72 61 63 74 69 76 r,.if.the.Program.has.interactiv
67580 65 0a 20 20 20 20 69 6e 74 65 72 66 61 63 65 73 20 74 68 61 74 20 64 6f 20 6e 6f 74 20 64 69 73 e.....interfaces.that.do.not.dis
675a0 70 6c 61 79 20 41 70 70 72 6f 70 72 69 61 74 65 20 4c 65 67 61 6c 20 4e 6f 74 69 63 65 73 2c 20 play.Appropriate.Legal.Notices,.
675c0 79 6f 75 72 0a 20 20 20 20 77 6f 72 6b 20 6e 65 65 64 20 6e 6f 74 20 6d 61 6b 65 20 74 68 65 6d your.....work.need.not.make.them
675e0 20 64 6f 20 73 6f 2e 0a 0a 20 20 41 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 6f 66 20 61 20 63 6f .do.so.....A.compilation.of.a.co
67600 76 65 72 65 64 20 77 6f 72 6b 20 77 69 74 68 20 6f 74 68 65 72 20 73 65 70 61 72 61 74 65 20 61 vered.work.with.other.separate.a
67620 6e 64 20 69 6e 64 65 70 65 6e 64 65 6e 74 0a 77 6f 72 6b 73 2c 20 77 68 69 63 68 20 61 72 65 20 nd.independent.works,.which.are.
67640 6e 6f 74 20 62 79 20 74 68 65 69 72 20 6e 61 74 75 72 65 20 65 78 74 65 6e 73 69 6f 6e 73 20 6f not.by.their.nature.extensions.o
67660 66 20 74 68 65 20 63 6f 76 65 72 65 64 20 77 6f 72 6b 2c 0a 61 6e 64 20 77 68 69 63 68 20 61 72 f.the.covered.work,.and.which.ar
67680 65 20 6e 6f 74 20 63 6f 6d 62 69 6e 65 64 20 77 69 74 68 20 69 74 20 73 75 63 68 20 61 73 20 74 e.not.combined.with.it.such.as.t
676a0 6f 20 66 6f 72 6d 20 61 20 6c 61 72 67 65 72 20 70 72 6f 67 72 61 6d 2c 0a 69 6e 20 6f 72 20 6f o.form.a.larger.program,.in.or.o
676c0 6e 20 61 20 76 6f 6c 75 6d 65 20 6f 66 20 61 20 73 74 6f 72 61 67 65 20 6f 72 20 64 69 73 74 72 n.a.volume.of.a.storage.or.distr
676e0 69 62 75 74 69 6f 6e 20 6d 65 64 69 75 6d 2c 20 69 73 20 63 61 6c 6c 65 64 20 61 6e 0a 22 61 67 ibution.medium,.is.called.an."ag
67700 67 72 65 67 61 74 65 22 20 69 66 20 74 68 65 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 61 6e 64 20 gregate".if.the.compilation.and.
67720 69 74 73 20 72 65 73 75 6c 74 69 6e 67 20 63 6f 70 79 72 69 67 68 74 20 61 72 65 20 6e 6f 74 0a its.resulting.copyright.are.not.
67740 75 73 65 64 20 74 6f 20 6c 69 6d 69 74 20 74 68 65 20 61 63 63 65 73 73 20 6f 72 20 6c 65 67 61 used.to.limit.the.access.or.lega
67760 6c 20 72 69 67 68 74 73 20 6f 66 20 74 68 65 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 27 73 20 75 73 l.rights.of.the.compilation's.us
67780 65 72 73 0a 62 65 79 6f 6e 64 20 77 68 61 74 20 74 68 65 20 69 6e 64 69 76 69 64 75 61 6c 20 77 ers.beyond.what.the.individual.w
677a0 6f 72 6b 73 20 70 65 72 6d 69 74 2e 20 20 49 6e 63 6c 75 73 69 6f 6e 20 6f 66 20 61 20 63 6f 76 orks.permit...Inclusion.of.a.cov
677c0 65 72 65 64 20 77 6f 72 6b 0a 69 6e 20 61 6e 20 61 67 67 72 65 67 61 74 65 20 64 6f 65 73 20 6e ered.work.in.an.aggregate.does.n
677e0 6f 74 20 63 61 75 73 65 20 74 68 69 73 20 4c 69 63 65 6e 73 65 20 74 6f 20 61 70 70 6c 79 20 74 ot.cause.this.License.to.apply.t
67800 6f 20 74 68 65 20 6f 74 68 65 72 0a 70 61 72 74 73 20 6f 66 20 74 68 65 20 61 67 67 72 65 67 61 o.the.other.parts.of.the.aggrega
67820 74 65 2e 0a 0a 20 20 36 2e 20 43 6f 6e 76 65 79 69 6e 67 20 4e 6f 6e 2d 53 6f 75 72 63 65 20 46 te.....6..Conveying.Non-Source.F
67840 6f 72 6d 73 2e 0a 0a 20 20 59 6f 75 20 6d 61 79 20 63 6f 6e 76 65 79 20 61 20 63 6f 76 65 72 65 orms.....You.may.convey.a.covere
67860 64 20 77 6f 72 6b 20 69 6e 20 6f 62 6a 65 63 74 20 63 6f 64 65 20 66 6f 72 6d 20 75 6e 64 65 72 d.work.in.object.code.form.under
67880 20 74 68 65 20 74 65 72 6d 73 0a 6f 66 20 73 65 63 74 69 6f 6e 73 20 34 20 61 6e 64 20 35 2c 20 .the.terms.of.sections.4.and.5,.
678a0 70 72 6f 76 69 64 65 64 20 74 68 61 74 20 79 6f 75 20 61 6c 73 6f 20 63 6f 6e 76 65 79 20 74 68 provided.that.you.also.convey.th
678c0 65 0a 6d 61 63 68 69 6e 65 2d 72 65 61 64 61 62 6c 65 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 e.machine-readable.Corresponding
678e0 20 53 6f 75 72 63 65 20 75 6e 64 65 72 20 74 68 65 20 74 65 72 6d 73 20 6f 66 20 74 68 69 73 20 .Source.under.the.terms.of.this.
67900 4c 69 63 65 6e 73 65 2c 0a 69 6e 20 6f 6e 65 20 6f 66 20 74 68 65 73 65 20 77 61 79 73 3a 0a 0a License,.in.one.of.these.ways:..
67920 20 20 20 20 61 29 20 43 6f 6e 76 65 79 20 74 68 65 20 6f 62 6a 65 63 74 20 63 6f 64 65 20 69 6e ....a).Convey.the.object.code.in
67940 2c 20 6f 72 20 65 6d 62 6f 64 69 65 64 20 69 6e 2c 20 61 20 70 68 79 73 69 63 61 6c 20 70 72 6f ,.or.embodied.in,.a.physical.pro
67960 64 75 63 74 0a 20 20 20 20 28 69 6e 63 6c 75 64 69 6e 67 20 61 20 70 68 79 73 69 63 61 6c 20 64 duct.....(including.a.physical.d
67980 69 73 74 72 69 62 75 74 69 6f 6e 20 6d 65 64 69 75 6d 29 2c 20 61 63 63 6f 6d 70 61 6e 69 65 64 istribution.medium),.accompanied
679a0 20 62 79 20 74 68 65 0a 20 20 20 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 53 6f 75 72 63 65 .by.the.....Corresponding.Source
679c0 20 66 69 78 65 64 20 6f 6e 20 61 20 64 75 72 61 62 6c 65 20 70 68 79 73 69 63 61 6c 20 6d 65 64 .fixed.on.a.durable.physical.med
679e0 69 75 6d 0a 20 20 20 20 63 75 73 74 6f 6d 61 72 69 6c 79 20 75 73 65 64 20 66 6f 72 20 73 6f 66 ium.....customarily.used.for.sof
67a00 74 77 61 72 65 20 69 6e 74 65 72 63 68 61 6e 67 65 2e 0a 0a 20 20 20 20 62 29 20 43 6f 6e 76 65 tware.interchange.......b).Conve
67a20 79 20 74 68 65 20 6f 62 6a 65 63 74 20 63 6f 64 65 20 69 6e 2c 20 6f 72 20 65 6d 62 6f 64 69 65 y.the.object.code.in,.or.embodie
67a40 64 20 69 6e 2c 20 61 20 70 68 79 73 69 63 61 6c 20 70 72 6f 64 75 63 74 0a 20 20 20 20 28 69 6e d.in,.a.physical.product.....(in
67a60 63 6c 75 64 69 6e 67 20 61 20 70 68 79 73 69 63 61 6c 20 64 69 73 74 72 69 62 75 74 69 6f 6e 20 cluding.a.physical.distribution.
67a80 6d 65 64 69 75 6d 29 2c 20 61 63 63 6f 6d 70 61 6e 69 65 64 20 62 79 20 61 0a 20 20 20 20 77 72 medium),.accompanied.by.a.....wr
67aa0 69 74 74 65 6e 20 6f 66 66 65 72 2c 20 76 61 6c 69 64 20 66 6f 72 20 61 74 20 6c 65 61 73 74 20 itten.offer,.valid.for.at.least.
67ac0 74 68 72 65 65 20 79 65 61 72 73 20 61 6e 64 20 76 61 6c 69 64 20 66 6f 72 20 61 73 0a 20 20 20 three.years.and.valid.for.as....
67ae0 20 6c 6f 6e 67 20 61 73 20 79 6f 75 20 6f 66 66 65 72 20 73 70 61 72 65 20 70 61 72 74 73 20 6f .long.as.you.offer.spare.parts.o
67b00 72 20 63 75 73 74 6f 6d 65 72 20 73 75 70 70 6f 72 74 20 66 6f 72 20 74 68 61 74 20 70 72 6f 64 r.customer.support.for.that.prod
67b20 75 63 74 0a 20 20 20 20 6d 6f 64 65 6c 2c 20 74 6f 20 67 69 76 65 20 61 6e 79 6f 6e 65 20 77 68 uct.....model,.to.give.anyone.wh
67b40 6f 20 70 6f 73 73 65 73 73 65 73 20 74 68 65 20 6f 62 6a 65 63 74 20 63 6f 64 65 20 65 69 74 68 o.possesses.the.object.code.eith
67b60 65 72 20 28 31 29 20 61 0a 20 20 20 20 63 6f 70 79 20 6f 66 20 74 68 65 20 43 6f 72 72 65 73 70 er.(1).a.....copy.of.the.Corresp
67b80 6f 6e 64 69 6e 67 20 53 6f 75 72 63 65 20 66 6f 72 20 61 6c 6c 20 74 68 65 20 73 6f 66 74 77 61 onding.Source.for.all.the.softwa
67ba0 72 65 20 69 6e 20 74 68 65 0a 20 20 20 20 70 72 6f 64 75 63 74 20 74 68 61 74 20 69 73 20 63 6f re.in.the.....product.that.is.co
67bc0 76 65 72 65 64 20 62 79 20 74 68 69 73 20 4c 69 63 65 6e 73 65 2c 20 6f 6e 20 61 20 64 75 72 61 vered.by.this.License,.on.a.dura
67be0 62 6c 65 20 70 68 79 73 69 63 61 6c 0a 20 20 20 20 6d 65 64 69 75 6d 20 63 75 73 74 6f 6d 61 72 ble.physical.....medium.customar
67c00 69 6c 79 20 75 73 65 64 20 66 6f 72 20 73 6f 66 74 77 61 72 65 20 69 6e 74 65 72 63 68 61 6e 67 ily.used.for.software.interchang
67c20 65 2c 20 66 6f 72 20 61 20 70 72 69 63 65 20 6e 6f 0a 20 20 20 20 6d 6f 72 65 20 74 68 61 6e 20 e,.for.a.price.no.....more.than.
67c40 79 6f 75 72 20 72 65 61 73 6f 6e 61 62 6c 65 20 63 6f 73 74 20 6f 66 20 70 68 79 73 69 63 61 6c your.reasonable.cost.of.physical
67c60 6c 79 20 70 65 72 66 6f 72 6d 69 6e 67 20 74 68 69 73 0a 20 20 20 20 63 6f 6e 76 65 79 69 6e 67 ly.performing.this.....conveying
67c80 20 6f 66 20 73 6f 75 72 63 65 2c 20 6f 72 20 28 32 29 20 61 63 63 65 73 73 20 74 6f 20 63 6f 70 .of.source,.or.(2).access.to.cop
67ca0 79 20 74 68 65 0a 20 20 20 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 53 6f 75 72 63 65 20 66 y.the.....Corresponding.Source.f
67cc0 72 6f 6d 20 61 20 6e 65 74 77 6f 72 6b 20 73 65 72 76 65 72 20 61 74 20 6e 6f 20 63 68 61 72 67 rom.a.network.server.at.no.charg
67ce0 65 2e 0a 0a 20 20 20 20 63 29 20 43 6f 6e 76 65 79 20 69 6e 64 69 76 69 64 75 61 6c 20 63 6f 70 e.......c).Convey.individual.cop
67d00 69 65 73 20 6f 66 20 74 68 65 20 6f 62 6a 65 63 74 20 63 6f 64 65 20 77 69 74 68 20 61 20 63 6f ies.of.the.object.code.with.a.co
67d20 70 79 20 6f 66 20 74 68 65 0a 20 20 20 20 77 72 69 74 74 65 6e 20 6f 66 66 65 72 20 74 6f 20 70 py.of.the.....written.offer.to.p
67d40 72 6f 76 69 64 65 20 74 68 65 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 53 6f 75 72 63 65 2e rovide.the.Corresponding.Source.
67d60 20 20 54 68 69 73 0a 20 20 20 20 61 6c 74 65 72 6e 61 74 69 76 65 20 69 73 20 61 6c 6c 6f 77 65 ..This.....alternative.is.allowe
67d80 64 20 6f 6e 6c 79 20 6f 63 63 61 73 69 6f 6e 61 6c 6c 79 20 61 6e 64 20 6e 6f 6e 63 6f 6d 6d 65 d.only.occasionally.and.noncomme
67da0 72 63 69 61 6c 6c 79 2c 20 61 6e 64 0a 20 20 20 20 6f 6e 6c 79 20 69 66 20 79 6f 75 20 72 65 63 rcially,.and.....only.if.you.rec
67dc0 65 69 76 65 64 20 74 68 65 20 6f 62 6a 65 63 74 20 63 6f 64 65 20 77 69 74 68 20 73 75 63 68 20 eived.the.object.code.with.such.
67de0 61 6e 20 6f 66 66 65 72 2c 20 69 6e 20 61 63 63 6f 72 64 0a 20 20 20 20 77 69 74 68 20 73 75 62 an.offer,.in.accord.....with.sub
67e00 73 65 63 74 69 6f 6e 20 36 62 2e 0a 0a 20 20 20 20 64 29 20 43 6f 6e 76 65 79 20 74 68 65 20 6f section.6b.......d).Convey.the.o
67e20 62 6a 65 63 74 20 63 6f 64 65 20 62 79 20 6f 66 66 65 72 69 6e 67 20 61 63 63 65 73 73 20 66 72 bject.code.by.offering.access.fr
67e40 6f 6d 20 61 20 64 65 73 69 67 6e 61 74 65 64 0a 20 20 20 20 70 6c 61 63 65 20 28 67 72 61 74 69 om.a.designated.....place.(grati
67e60 73 20 6f 72 20 66 6f 72 20 61 20 63 68 61 72 67 65 29 2c 20 61 6e 64 20 6f 66 66 65 72 20 65 71 s.or.for.a.charge),.and.offer.eq
67e80 75 69 76 61 6c 65 6e 74 20 61 63 63 65 73 73 20 74 6f 20 74 68 65 0a 20 20 20 20 43 6f 72 72 65 uivalent.access.to.the.....Corre
67ea0 73 70 6f 6e 64 69 6e 67 20 53 6f 75 72 63 65 20 69 6e 20 74 68 65 20 73 61 6d 65 20 77 61 79 20 sponding.Source.in.the.same.way.
67ec0 74 68 72 6f 75 67 68 20 74 68 65 20 73 61 6d 65 20 70 6c 61 63 65 20 61 74 20 6e 6f 0a 20 20 20 through.the.same.place.at.no....
67ee0 20 66 75 72 74 68 65 72 20 63 68 61 72 67 65 2e 20 20 59 6f 75 20 6e 65 65 64 20 6e 6f 74 20 72 .further.charge...You.need.not.r
67f00 65 71 75 69 72 65 20 72 65 63 69 70 69 65 6e 74 73 20 74 6f 20 63 6f 70 79 20 74 68 65 0a 20 20 equire.recipients.to.copy.the...
67f20 20 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 53 6f 75 72 63 65 20 61 6c 6f 6e 67 20 77 69 74 ..Corresponding.Source.along.wit
67f40 68 20 74 68 65 20 6f 62 6a 65 63 74 20 63 6f 64 65 2e 20 20 49 66 20 74 68 65 20 70 6c 61 63 65 h.the.object.code...If.the.place
67f60 20 74 6f 0a 20 20 20 20 63 6f 70 79 20 74 68 65 20 6f 62 6a 65 63 74 20 63 6f 64 65 20 69 73 20 .to.....copy.the.object.code.is.
67f80 61 20 6e 65 74 77 6f 72 6b 20 73 65 72 76 65 72 2c 20 74 68 65 20 43 6f 72 72 65 73 70 6f 6e 64 a.network.server,.the.Correspond
67fa0 69 6e 67 20 53 6f 75 72 63 65 0a 20 20 20 20 6d 61 79 20 62 65 20 6f 6e 20 61 20 64 69 66 66 65 ing.Source.....may.be.on.a.diffe
67fc0 72 65 6e 74 20 73 65 72 76 65 72 20 28 6f 70 65 72 61 74 65 64 20 62 79 20 79 6f 75 20 6f 72 20 rent.server.(operated.by.you.or.
67fe0 61 20 74 68 69 72 64 20 70 61 72 74 79 29 0a 20 20 20 20 74 68 61 74 20 73 75 70 70 6f 72 74 73 a.third.party).....that.supports
68000 20 65 71 75 69 76 61 6c 65 6e 74 20 63 6f 70 79 69 6e 67 20 66 61 63 69 6c 69 74 69 65 73 2c 20 .equivalent.copying.facilities,.
68020 70 72 6f 76 69 64 65 64 20 79 6f 75 20 6d 61 69 6e 74 61 69 6e 0a 20 20 20 20 63 6c 65 61 72 20 provided.you.maintain.....clear.
68040 64 69 72 65 63 74 69 6f 6e 73 20 6e 65 78 74 20 74 6f 20 74 68 65 20 6f 62 6a 65 63 74 20 63 6f directions.next.to.the.object.co
68060 64 65 20 73 61 79 69 6e 67 20 77 68 65 72 65 20 74 6f 20 66 69 6e 64 20 74 68 65 0a 20 20 20 20 de.saying.where.to.find.the.....
68080 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 53 6f 75 72 63 65 2e 20 20 52 65 67 61 72 64 6c 65 73 Corresponding.Source...Regardles
680a0 73 20 6f 66 20 77 68 61 74 20 73 65 72 76 65 72 20 68 6f 73 74 73 20 74 68 65 0a 20 20 20 20 43 s.of.what.server.hosts.the.....C
680c0 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 53 6f 75 72 63 65 2c 20 79 6f 75 20 72 65 6d 61 69 6e 20 orresponding.Source,.you.remain.
680e0 6f 62 6c 69 67 61 74 65 64 20 74 6f 20 65 6e 73 75 72 65 20 74 68 61 74 20 69 74 20 69 73 0a 20 obligated.to.ensure.that.it.is..
68100 20 20 20 61 76 61 69 6c 61 62 6c 65 20 66 6f 72 20 61 73 20 6c 6f 6e 67 20 61 73 20 6e 65 65 64 ...available.for.as.long.as.need
68120 65 64 20 74 6f 20 73 61 74 69 73 66 79 20 74 68 65 73 65 20 72 65 71 75 69 72 65 6d 65 6e 74 73 ed.to.satisfy.these.requirements
68140 2e 0a 0a 20 20 20 20 65 29 20 43 6f 6e 76 65 79 20 74 68 65 20 6f 62 6a 65 63 74 20 63 6f 64 65 .......e).Convey.the.object.code
68160 20 75 73 69 6e 67 20 70 65 65 72 2d 74 6f 2d 70 65 65 72 20 74 72 61 6e 73 6d 69 73 73 69 6f 6e .using.peer-to-peer.transmission
68180 2c 20 70 72 6f 76 69 64 65 64 0a 20 20 20 20 79 6f 75 20 69 6e 66 6f 72 6d 20 6f 74 68 65 72 20 ,.provided.....you.inform.other.
681a0 70 65 65 72 73 20 77 68 65 72 65 20 74 68 65 20 6f 62 6a 65 63 74 20 63 6f 64 65 20 61 6e 64 20 peers.where.the.object.code.and.
681c0 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 0a 20 20 20 20 53 6f 75 72 63 65 20 6f 66 20 74 68 65 20 Corresponding.....Source.of.the.
681e0 77 6f 72 6b 20 61 72 65 20 62 65 69 6e 67 20 6f 66 66 65 72 65 64 20 74 6f 20 74 68 65 20 67 65 work.are.being.offered.to.the.ge
68200 6e 65 72 61 6c 20 70 75 62 6c 69 63 20 61 74 20 6e 6f 0a 20 20 20 20 63 68 61 72 67 65 20 75 6e neral.public.at.no.....charge.un
68220 64 65 72 20 73 75 62 73 65 63 74 69 6f 6e 20 36 64 2e 0a 0a 20 20 41 20 73 65 70 61 72 61 62 6c der.subsection.6d.....A.separabl
68240 65 20 70 6f 72 74 69 6f 6e 20 6f 66 20 74 68 65 20 6f 62 6a 65 63 74 20 63 6f 64 65 2c 20 77 68 e.portion.of.the.object.code,.wh
68260 6f 73 65 20 73 6f 75 72 63 65 20 63 6f 64 65 20 69 73 20 65 78 63 6c 75 64 65 64 0a 66 72 6f 6d ose.source.code.is.excluded.from
68280 20 74 68 65 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 53 6f 75 72 63 65 20 61 73 20 61 20 53 .the.Corresponding.Source.as.a.S
682a0 79 73 74 65 6d 20 4c 69 62 72 61 72 79 2c 20 6e 65 65 64 20 6e 6f 74 20 62 65 0a 69 6e 63 6c 75 ystem.Library,.need.not.be.inclu
682c0 64 65 64 20 69 6e 20 63 6f 6e 76 65 79 69 6e 67 20 74 68 65 20 6f 62 6a 65 63 74 20 63 6f 64 65 ded.in.conveying.the.object.code
682e0 20 77 6f 72 6b 2e 0a 0a 20 20 41 20 22 55 73 65 72 20 50 72 6f 64 75 63 74 22 20 69 73 20 65 69 .work.....A."User.Product".is.ei
68300 74 68 65 72 20 28 31 29 20 61 20 22 63 6f 6e 73 75 6d 65 72 20 70 72 6f 64 75 63 74 22 2c 20 77 ther.(1).a."consumer.product",.w
68320 68 69 63 68 20 6d 65 61 6e 73 20 61 6e 79 0a 74 61 6e 67 69 62 6c 65 20 70 65 72 73 6f 6e 61 6c hich.means.any.tangible.personal
68340 20 70 72 6f 70 65 72 74 79 20 77 68 69 63 68 20 69 73 20 6e 6f 72 6d 61 6c 6c 79 20 75 73 65 64 .property.which.is.normally.used
68360 20 66 6f 72 20 70 65 72 73 6f 6e 61 6c 2c 20 66 61 6d 69 6c 79 2c 0a 6f 72 20 68 6f 75 73 65 68 .for.personal,.family,.or.househ
68380 6f 6c 64 20 70 75 72 70 6f 73 65 73 2c 20 6f 72 20 28 32 29 20 61 6e 79 74 68 69 6e 67 20 64 65 old.purposes,.or.(2).anything.de
683a0 73 69 67 6e 65 64 20 6f 72 20 73 6f 6c 64 20 66 6f 72 20 69 6e 63 6f 72 70 6f 72 61 74 69 6f 6e signed.or.sold.for.incorporation
683c0 0a 69 6e 74 6f 20 61 20 64 77 65 6c 6c 69 6e 67 2e 20 20 49 6e 20 64 65 74 65 72 6d 69 6e 69 6e .into.a.dwelling...In.determinin
683e0 67 20 77 68 65 74 68 65 72 20 61 20 70 72 6f 64 75 63 74 20 69 73 20 61 20 63 6f 6e 73 75 6d 65 g.whether.a.product.is.a.consume
68400 72 20 70 72 6f 64 75 63 74 2c 0a 64 6f 75 62 74 66 75 6c 20 63 61 73 65 73 20 73 68 61 6c 6c 20 r.product,.doubtful.cases.shall.
68420 62 65 20 72 65 73 6f 6c 76 65 64 20 69 6e 20 66 61 76 6f 72 20 6f 66 20 63 6f 76 65 72 61 67 65 be.resolved.in.favor.of.coverage
68440 2e 20 20 46 6f 72 20 61 20 70 61 72 74 69 63 75 6c 61 72 0a 70 72 6f 64 75 63 74 20 72 65 63 65 ...For.a.particular.product.rece
68460 69 76 65 64 20 62 79 20 61 20 70 61 72 74 69 63 75 6c 61 72 20 75 73 65 72 2c 20 22 6e 6f 72 6d ived.by.a.particular.user,."norm
68480 61 6c 6c 79 20 75 73 65 64 22 20 72 65 66 65 72 73 20 74 6f 20 61 0a 74 79 70 69 63 61 6c 20 6f ally.used".refers.to.a.typical.o
684a0 72 20 63 6f 6d 6d 6f 6e 20 75 73 65 20 6f 66 20 74 68 61 74 20 63 6c 61 73 73 20 6f 66 20 70 72 r.common.use.of.that.class.of.pr
684c0 6f 64 75 63 74 2c 20 72 65 67 61 72 64 6c 65 73 73 20 6f 66 20 74 68 65 20 73 74 61 74 75 73 0a oduct,.regardless.of.the.status.
684e0 6f 66 20 74 68 65 20 70 61 72 74 69 63 75 6c 61 72 20 75 73 65 72 20 6f 72 20 6f 66 20 74 68 65 of.the.particular.user.or.of.the
68500 20 77 61 79 20 69 6e 20 77 68 69 63 68 20 74 68 65 20 70 61 72 74 69 63 75 6c 61 72 20 75 73 65 .way.in.which.the.particular.use
68520 72 0a 61 63 74 75 61 6c 6c 79 20 75 73 65 73 2c 20 6f 72 20 65 78 70 65 63 74 73 20 6f 72 20 69 r.actually.uses,.or.expects.or.i
68540 73 20 65 78 70 65 63 74 65 64 20 74 6f 20 75 73 65 2c 20 74 68 65 20 70 72 6f 64 75 63 74 2e 20 s.expected.to.use,.the.product..
68560 20 41 20 70 72 6f 64 75 63 74 0a 69 73 20 61 20 63 6f 6e 73 75 6d 65 72 20 70 72 6f 64 75 63 74 .A.product.is.a.consumer.product
68580 20 72 65 67 61 72 64 6c 65 73 73 20 6f 66 20 77 68 65 74 68 65 72 20 74 68 65 20 70 72 6f 64 75 .regardless.of.whether.the.produ
685a0 63 74 20 68 61 73 20 73 75 62 73 74 61 6e 74 69 61 6c 0a 63 6f 6d 6d 65 72 63 69 61 6c 2c 20 69 ct.has.substantial.commercial,.i
685c0 6e 64 75 73 74 72 69 61 6c 20 6f 72 20 6e 6f 6e 2d 63 6f 6e 73 75 6d 65 72 20 75 73 65 73 2c 20 ndustrial.or.non-consumer.uses,.
685e0 75 6e 6c 65 73 73 20 73 75 63 68 20 75 73 65 73 20 72 65 70 72 65 73 65 6e 74 0a 74 68 65 20 6f unless.such.uses.represent.the.o
68600 6e 6c 79 20 73 69 67 6e 69 66 69 63 61 6e 74 20 6d 6f 64 65 20 6f 66 20 75 73 65 20 6f 66 20 74 nly.significant.mode.of.use.of.t
68620 68 65 20 70 72 6f 64 75 63 74 2e 0a 0a 20 20 22 49 6e 73 74 61 6c 6c 61 74 69 6f 6e 20 49 6e 66 he.product....."Installation.Inf
68640 6f 72 6d 61 74 69 6f 6e 22 20 66 6f 72 20 61 20 55 73 65 72 20 50 72 6f 64 75 63 74 20 6d 65 61 ormation".for.a.User.Product.mea
68660 6e 73 20 61 6e 79 20 6d 65 74 68 6f 64 73 2c 0a 70 72 6f 63 65 64 75 72 65 73 2c 20 61 75 74 68 ns.any.methods,.procedures,.auth
68680 6f 72 69 7a 61 74 69 6f 6e 20 6b 65 79 73 2c 20 6f 72 20 6f 74 68 65 72 20 69 6e 66 6f 72 6d 61 orization.keys,.or.other.informa
686a0 74 69 6f 6e 20 72 65 71 75 69 72 65 64 20 74 6f 20 69 6e 73 74 61 6c 6c 0a 61 6e 64 20 65 78 65 tion.required.to.install.and.exe
686c0 63 75 74 65 20 6d 6f 64 69 66 69 65 64 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 61 20 63 6f 76 65 cute.modified.versions.of.a.cove
686e0 72 65 64 20 77 6f 72 6b 20 69 6e 20 74 68 61 74 20 55 73 65 72 20 50 72 6f 64 75 63 74 20 66 72 red.work.in.that.User.Product.fr
68700 6f 6d 0a 61 20 6d 6f 64 69 66 69 65 64 20 76 65 72 73 69 6f 6e 20 6f 66 20 69 74 73 20 43 6f 72 om.a.modified.version.of.its.Cor
68720 72 65 73 70 6f 6e 64 69 6e 67 20 53 6f 75 72 63 65 2e 20 20 54 68 65 20 69 6e 66 6f 72 6d 61 74 responding.Source...The.informat
68740 69 6f 6e 20 6d 75 73 74 0a 73 75 66 66 69 63 65 20 74 6f 20 65 6e 73 75 72 65 20 74 68 61 74 20 ion.must.suffice.to.ensure.that.
68760 74 68 65 20 63 6f 6e 74 69 6e 75 65 64 20 66 75 6e 63 74 69 6f 6e 69 6e 67 20 6f 66 20 74 68 65 the.continued.functioning.of.the
68780 20 6d 6f 64 69 66 69 65 64 20 6f 62 6a 65 63 74 0a 63 6f 64 65 20 69 73 20 69 6e 20 6e 6f 20 63 .modified.object.code.is.in.no.c
687a0 61 73 65 20 70 72 65 76 65 6e 74 65 64 20 6f 72 20 69 6e 74 65 72 66 65 72 65 64 20 77 69 74 68 ase.prevented.or.interfered.with
687c0 20 73 6f 6c 65 6c 79 20 62 65 63 61 75 73 65 0a 6d 6f 64 69 66 69 63 61 74 69 6f 6e 20 68 61 73 .solely.because.modification.has
687e0 20 62 65 65 6e 20 6d 61 64 65 2e 0a 0a 20 20 49 66 20 79 6f 75 20 63 6f 6e 76 65 79 20 61 6e 20 .been.made.....If.you.convey.an.
68800 6f 62 6a 65 63 74 20 63 6f 64 65 20 77 6f 72 6b 20 75 6e 64 65 72 20 74 68 69 73 20 73 65 63 74 object.code.work.under.this.sect
68820 69 6f 6e 20 69 6e 2c 20 6f 72 20 77 69 74 68 2c 20 6f 72 0a 73 70 65 63 69 66 69 63 61 6c 6c 79 ion.in,.or.with,.or.specifically
68840 20 66 6f 72 20 75 73 65 20 69 6e 2c 20 61 20 55 73 65 72 20 50 72 6f 64 75 63 74 2c 20 61 6e 64 .for.use.in,.a.User.Product,.and
68860 20 74 68 65 20 63 6f 6e 76 65 79 69 6e 67 20 6f 63 63 75 72 73 20 61 73 0a 70 61 72 74 20 6f 66 .the.conveying.occurs.as.part.of
68880 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 69 6e 20 77 68 69 63 68 20 74 68 65 20 72 69 67 68 .a.transaction.in.which.the.righ
688a0 74 20 6f 66 20 70 6f 73 73 65 73 73 69 6f 6e 20 61 6e 64 20 75 73 65 20 6f 66 20 74 68 65 0a 55 t.of.possession.and.use.of.the.U
688c0 73 65 72 20 50 72 6f 64 75 63 74 20 69 73 20 74 72 61 6e 73 66 65 72 72 65 64 20 74 6f 20 74 68 ser.Product.is.transferred.to.th
688e0 65 20 72 65 63 69 70 69 65 6e 74 20 69 6e 20 70 65 72 70 65 74 75 69 74 79 20 6f 72 20 66 6f 72 e.recipient.in.perpetuity.or.for
68900 20 61 0a 66 69 78 65 64 20 74 65 72 6d 20 28 72 65 67 61 72 64 6c 65 73 73 20 6f 66 20 68 6f 77 .a.fixed.term.(regardless.of.how
68920 20 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 69 73 20 63 68 61 72 61 63 74 65 72 69 7a 65 .the.transaction.is.characterize
68940 64 29 2c 20 74 68 65 0a 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 53 6f 75 72 63 65 20 63 6f 6e d),.the.Corresponding.Source.con
68960 76 65 79 65 64 20 75 6e 64 65 72 20 74 68 69 73 20 73 65 63 74 69 6f 6e 20 6d 75 73 74 20 62 65 veyed.under.this.section.must.be
68980 20 61 63 63 6f 6d 70 61 6e 69 65 64 0a 62 79 20 74 68 65 20 49 6e 73 74 61 6c 6c 61 74 69 6f 6e .accompanied.by.the.Installation
689a0 20 49 6e 66 6f 72 6d 61 74 69 6f 6e 2e 20 20 42 75 74 20 74 68 69 73 20 72 65 71 75 69 72 65 6d .Information...But.this.requirem
689c0 65 6e 74 20 64 6f 65 73 20 6e 6f 74 20 61 70 70 6c 79 0a 69 66 20 6e 65 69 74 68 65 72 20 79 6f ent.does.not.apply.if.neither.yo
689e0 75 20 6e 6f 72 20 61 6e 79 20 74 68 69 72 64 20 70 61 72 74 79 20 72 65 74 61 69 6e 73 20 74 68 u.nor.any.third.party.retains.th
68a00 65 20 61 62 69 6c 69 74 79 20 74 6f 20 69 6e 73 74 61 6c 6c 0a 6d 6f 64 69 66 69 65 64 20 6f 62 e.ability.to.install.modified.ob
68a20 6a 65 63 74 20 63 6f 64 65 20 6f 6e 20 74 68 65 20 55 73 65 72 20 50 72 6f 64 75 63 74 20 28 66 ject.code.on.the.User.Product.(f
68a40 6f 72 20 65 78 61 6d 70 6c 65 2c 20 74 68 65 20 77 6f 72 6b 20 68 61 73 0a 62 65 65 6e 20 69 6e or.example,.the.work.has.been.in
68a60 73 74 61 6c 6c 65 64 20 69 6e 20 52 4f 4d 29 2e 0a 0a 20 20 54 68 65 20 72 65 71 75 69 72 65 6d stalled.in.ROM).....The.requirem
68a80 65 6e 74 20 74 6f 20 70 72 6f 76 69 64 65 20 49 6e 73 74 61 6c 6c 61 74 69 6f 6e 20 49 6e 66 6f ent.to.provide.Installation.Info
68aa0 72 6d 61 74 69 6f 6e 20 64 6f 65 73 20 6e 6f 74 20 69 6e 63 6c 75 64 65 20 61 0a 72 65 71 75 69 rmation.does.not.include.a.requi
68ac0 72 65 6d 65 6e 74 20 74 6f 20 63 6f 6e 74 69 6e 75 65 20 74 6f 20 70 72 6f 76 69 64 65 20 73 75 rement.to.continue.to.provide.su
68ae0 70 70 6f 72 74 20 73 65 72 76 69 63 65 2c 20 77 61 72 72 61 6e 74 79 2c 20 6f 72 20 75 70 64 61 pport.service,.warranty,.or.upda
68b00 74 65 73 0a 66 6f 72 20 61 20 77 6f 72 6b 20 74 68 61 74 20 68 61 73 20 62 65 65 6e 20 6d 6f 64 tes.for.a.work.that.has.been.mod
68b20 69 66 69 65 64 20 6f 72 20 69 6e 73 74 61 6c 6c 65 64 20 62 79 20 74 68 65 20 72 65 63 69 70 69 ified.or.installed.by.the.recipi
68b40 65 6e 74 2c 20 6f 72 20 66 6f 72 0a 74 68 65 20 55 73 65 72 20 50 72 6f 64 75 63 74 20 69 6e 20 ent,.or.for.the.User.Product.in.
68b60 77 68 69 63 68 20 69 74 20 68 61 73 20 62 65 65 6e 20 6d 6f 64 69 66 69 65 64 20 6f 72 20 69 6e which.it.has.been.modified.or.in
68b80 73 74 61 6c 6c 65 64 2e 20 20 41 63 63 65 73 73 20 74 6f 20 61 0a 6e 65 74 77 6f 72 6b 20 6d 61 stalled...Access.to.a.network.ma
68ba0 79 20 62 65 20 64 65 6e 69 65 64 20 77 68 65 6e 20 74 68 65 20 6d 6f 64 69 66 69 63 61 74 69 6f y.be.denied.when.the.modificatio
68bc0 6e 20 69 74 73 65 6c 66 20 6d 61 74 65 72 69 61 6c 6c 79 20 61 6e 64 0a 61 64 76 65 72 73 65 6c n.itself.materially.and.adversel
68be0 79 20 61 66 66 65 63 74 73 20 74 68 65 20 6f 70 65 72 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 6e y.affects.the.operation.of.the.n
68c00 65 74 77 6f 72 6b 20 6f 72 20 76 69 6f 6c 61 74 65 73 20 74 68 65 20 72 75 6c 65 73 20 61 6e 64 etwork.or.violates.the.rules.and
68c20 0a 70 72 6f 74 6f 63 6f 6c 73 20 66 6f 72 20 63 6f 6d 6d 75 6e 69 63 61 74 69 6f 6e 20 61 63 72 .protocols.for.communication.acr
68c40 6f 73 73 20 74 68 65 20 6e 65 74 77 6f 72 6b 2e 0a 0a 20 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e oss.the.network.....Correspondin
68c60 67 20 53 6f 75 72 63 65 20 63 6f 6e 76 65 79 65 64 2c 20 61 6e 64 20 49 6e 73 74 61 6c 6c 61 74 g.Source.conveyed,.and.Installat
68c80 69 6f 6e 20 49 6e 66 6f 72 6d 61 74 69 6f 6e 20 70 72 6f 76 69 64 65 64 2c 0a 69 6e 20 61 63 63 ion.Information.provided,.in.acc
68ca0 6f 72 64 20 77 69 74 68 20 74 68 69 73 20 73 65 63 74 69 6f 6e 20 6d 75 73 74 20 62 65 20 69 6e ord.with.this.section.must.be.in
68cc0 20 61 20 66 6f 72 6d 61 74 20 74 68 61 74 20 69 73 20 70 75 62 6c 69 63 6c 79 0a 64 6f 63 75 6d .a.format.that.is.publicly.docum
68ce0 65 6e 74 65 64 20 28 61 6e 64 20 77 69 74 68 20 61 6e 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f ented.(and.with.an.implementatio
68d00 6e 20 61 76 61 69 6c 61 62 6c 65 20 74 6f 20 74 68 65 20 70 75 62 6c 69 63 20 69 6e 0a 73 6f 75 n.available.to.the.public.in.sou
68d20 72 63 65 20 63 6f 64 65 20 66 6f 72 6d 29 2c 20 61 6e 64 20 6d 75 73 74 20 72 65 71 75 69 72 65 rce.code.form),.and.must.require
68d40 20 6e 6f 20 73 70 65 63 69 61 6c 20 70 61 73 73 77 6f 72 64 20 6f 72 20 6b 65 79 20 66 6f 72 0a .no.special.password.or.key.for.
68d60 75 6e 70 61 63 6b 69 6e 67 2c 20 72 65 61 64 69 6e 67 20 6f 72 20 63 6f 70 79 69 6e 67 2e 0a 0a unpacking,.reading.or.copying...
68d80 20 20 37 2e 20 41 64 64 69 74 69 6f 6e 61 6c 20 54 65 72 6d 73 2e 0a 0a 20 20 22 41 64 64 69 74 ..7..Additional.Terms....."Addit
68da0 69 6f 6e 61 6c 20 70 65 72 6d 69 73 73 69 6f 6e 73 22 20 61 72 65 20 74 65 72 6d 73 20 74 68 61 ional.permissions".are.terms.tha
68dc0 74 20 73 75 70 70 6c 65 6d 65 6e 74 20 74 68 65 20 74 65 72 6d 73 20 6f 66 20 74 68 69 73 0a 4c t.supplement.the.terms.of.this.L
68de0 69 63 65 6e 73 65 20 62 79 20 6d 61 6b 69 6e 67 20 65 78 63 65 70 74 69 6f 6e 73 20 66 72 6f 6d icense.by.making.exceptions.from
68e00 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 6f 66 20 69 74 73 20 63 6f 6e 64 69 74 69 6f 6e 73 2e 0a .one.or.more.of.its.conditions..
68e20 41 64 64 69 74 69 6f 6e 61 6c 20 70 65 72 6d 69 73 73 69 6f 6e 73 20 74 68 61 74 20 61 72 65 20 Additional.permissions.that.are.
68e40 61 70 70 6c 69 63 61 62 6c 65 20 74 6f 20 74 68 65 20 65 6e 74 69 72 65 20 50 72 6f 67 72 61 6d applicable.to.the.entire.Program
68e60 20 73 68 61 6c 6c 0a 62 65 20 74 72 65 61 74 65 64 20 61 73 20 74 68 6f 75 67 68 20 74 68 65 79 .shall.be.treated.as.though.they
68e80 20 77 65 72 65 20 69 6e 63 6c 75 64 65 64 20 69 6e 20 74 68 69 73 20 4c 69 63 65 6e 73 65 2c 20 .were.included.in.this.License,.
68ea0 74 6f 20 74 68 65 20 65 78 74 65 6e 74 0a 74 68 61 74 20 74 68 65 79 20 61 72 65 20 76 61 6c 69 to.the.extent.that.they.are.vali
68ec0 64 20 75 6e 64 65 72 20 61 70 70 6c 69 63 61 62 6c 65 20 6c 61 77 2e 20 20 49 66 20 61 64 64 69 d.under.applicable.law...If.addi
68ee0 74 69 6f 6e 61 6c 20 70 65 72 6d 69 73 73 69 6f 6e 73 0a 61 70 70 6c 79 20 6f 6e 6c 79 20 74 6f tional.permissions.apply.only.to
68f00 20 70 61 72 74 20 6f 66 20 74 68 65 20 50 72 6f 67 72 61 6d 2c 20 74 68 61 74 20 70 61 72 74 20 .part.of.the.Program,.that.part.
68f20 6d 61 79 20 62 65 20 75 73 65 64 20 73 65 70 61 72 61 74 65 6c 79 0a 75 6e 64 65 72 20 74 68 6f may.be.used.separately.under.tho
68f40 73 65 20 70 65 72 6d 69 73 73 69 6f 6e 73 2c 20 62 75 74 20 74 68 65 20 65 6e 74 69 72 65 20 50 se.permissions,.but.the.entire.P
68f60 72 6f 67 72 61 6d 20 72 65 6d 61 69 6e 73 20 67 6f 76 65 72 6e 65 64 20 62 79 0a 74 68 69 73 20 rogram.remains.governed.by.this.
68f80 4c 69 63 65 6e 73 65 20 77 69 74 68 6f 75 74 20 72 65 67 61 72 64 20 74 6f 20 74 68 65 20 61 64 License.without.regard.to.the.ad
68fa0 64 69 74 69 6f 6e 61 6c 20 70 65 72 6d 69 73 73 69 6f 6e 73 2e 0a 0a 20 20 57 68 65 6e 20 79 6f ditional.permissions.....When.yo
68fc0 75 20 63 6f 6e 76 65 79 20 61 20 63 6f 70 79 20 6f 66 20 61 20 63 6f 76 65 72 65 64 20 77 6f 72 u.convey.a.copy.of.a.covered.wor
68fe0 6b 2c 20 79 6f 75 20 6d 61 79 20 61 74 20 79 6f 75 72 20 6f 70 74 69 6f 6e 0a 72 65 6d 6f 76 65 k,.you.may.at.your.option.remove
69000 20 61 6e 79 20 61 64 64 69 74 69 6f 6e 61 6c 20 70 65 72 6d 69 73 73 69 6f 6e 73 20 66 72 6f 6d .any.additional.permissions.from
69020 20 74 68 61 74 20 63 6f 70 79 2c 20 6f 72 20 66 72 6f 6d 20 61 6e 79 20 70 61 72 74 20 6f 66 0a .that.copy,.or.from.any.part.of.
69040 69 74 2e 20 20 28 41 64 64 69 74 69 6f 6e 61 6c 20 70 65 72 6d 69 73 73 69 6f 6e 73 20 6d 61 79 it...(Additional.permissions.may
69060 20 62 65 20 77 72 69 74 74 65 6e 20 74 6f 20 72 65 71 75 69 72 65 20 74 68 65 69 72 20 6f 77 6e .be.written.to.require.their.own
69080 0a 72 65 6d 6f 76 61 6c 20 69 6e 20 63 65 72 74 61 69 6e 20 63 61 73 65 73 20 77 68 65 6e 20 79 .removal.in.certain.cases.when.y
690a0 6f 75 20 6d 6f 64 69 66 79 20 74 68 65 20 77 6f 72 6b 2e 29 20 20 59 6f 75 20 6d 61 79 20 70 6c ou.modify.the.work.)..You.may.pl
690c0 61 63 65 0a 61 64 64 69 74 69 6f 6e 61 6c 20 70 65 72 6d 69 73 73 69 6f 6e 73 20 6f 6e 20 6d 61 ace.additional.permissions.on.ma
690e0 74 65 72 69 61 6c 2c 20 61 64 64 65 64 20 62 79 20 79 6f 75 20 74 6f 20 61 20 63 6f 76 65 72 65 terial,.added.by.you.to.a.covere
69100 64 20 77 6f 72 6b 2c 0a 66 6f 72 20 77 68 69 63 68 20 79 6f 75 20 68 61 76 65 20 6f 72 20 63 61 d.work,.for.which.you.have.or.ca
69120 6e 20 67 69 76 65 20 61 70 70 72 6f 70 72 69 61 74 65 20 63 6f 70 79 72 69 67 68 74 20 70 65 72 n.give.appropriate.copyright.per
69140 6d 69 73 73 69 6f 6e 2e 0a 0a 20 20 4e 6f 74 77 69 74 68 73 74 61 6e 64 69 6e 67 20 61 6e 79 20 mission.....Notwithstanding.any.
69160 6f 74 68 65 72 20 70 72 6f 76 69 73 69 6f 6e 20 6f 66 20 74 68 69 73 20 4c 69 63 65 6e 73 65 2c other.provision.of.this.License,
69180 20 66 6f 72 20 6d 61 74 65 72 69 61 6c 20 79 6f 75 0a 61 64 64 20 74 6f 20 61 20 63 6f 76 65 72 .for.material.you.add.to.a.cover
691a0 65 64 20 77 6f 72 6b 2c 20 79 6f 75 20 6d 61 79 20 28 69 66 20 61 75 74 68 6f 72 69 7a 65 64 20 ed.work,.you.may.(if.authorized.
691c0 62 79 20 74 68 65 20 63 6f 70 79 72 69 67 68 74 20 68 6f 6c 64 65 72 73 20 6f 66 0a 74 68 61 74 by.the.copyright.holders.of.that
691e0 20 6d 61 74 65 72 69 61 6c 29 20 73 75 70 70 6c 65 6d 65 6e 74 20 74 68 65 20 74 65 72 6d 73 20 .material).supplement.the.terms.
69200 6f 66 20 74 68 69 73 20 4c 69 63 65 6e 73 65 20 77 69 74 68 20 74 65 72 6d 73 3a 0a 0a 20 20 20 of.this.License.with.terms:.....
69220 20 61 29 20 44 69 73 63 6c 61 69 6d 69 6e 67 20 77 61 72 72 61 6e 74 79 20 6f 72 20 6c 69 6d 69 .a).Disclaiming.warranty.or.limi
69240 74 69 6e 67 20 6c 69 61 62 69 6c 69 74 79 20 64 69 66 66 65 72 65 6e 74 6c 79 20 66 72 6f 6d 20 ting.liability.differently.from.
69260 74 68 65 0a 20 20 20 20 74 65 72 6d 73 20 6f 66 20 73 65 63 74 69 6f 6e 73 20 31 35 20 61 6e 64 the.....terms.of.sections.15.and
69280 20 31 36 20 6f 66 20 74 68 69 73 20 4c 69 63 65 6e 73 65 3b 20 6f 72 0a 0a 20 20 20 20 62 29 20 .16.of.this.License;.or......b).
692a0 52 65 71 75 69 72 69 6e 67 20 70 72 65 73 65 72 76 61 74 69 6f 6e 20 6f 66 20 73 70 65 63 69 66 Requiring.preservation.of.specif
692c0 69 65 64 20 72 65 61 73 6f 6e 61 62 6c 65 20 6c 65 67 61 6c 20 6e 6f 74 69 63 65 73 20 6f 72 0a ied.reasonable.legal.notices.or.
692e0 20 20 20 20 61 75 74 68 6f 72 20 61 74 74 72 69 62 75 74 69 6f 6e 73 20 69 6e 20 74 68 61 74 20 ....author.attributions.in.that.
69300 6d 61 74 65 72 69 61 6c 20 6f 72 20 69 6e 20 74 68 65 20 41 70 70 72 6f 70 72 69 61 74 65 20 4c material.or.in.the.Appropriate.L
69320 65 67 61 6c 0a 20 20 20 20 4e 6f 74 69 63 65 73 20 64 69 73 70 6c 61 79 65 64 20 62 79 20 77 6f egal.....Notices.displayed.by.wo
69340 72 6b 73 20 63 6f 6e 74 61 69 6e 69 6e 67 20 69 74 3b 20 6f 72 0a 0a 20 20 20 20 63 29 20 50 72 rks.containing.it;.or......c).Pr
69360 6f 68 69 62 69 74 69 6e 67 20 6d 69 73 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 ohibiting.misrepresentation.of.t
69380 68 65 20 6f 72 69 67 69 6e 20 6f 66 20 74 68 61 74 20 6d 61 74 65 72 69 61 6c 2c 20 6f 72 0a 20 he.origin.of.that.material,.or..
693a0 20 20 20 72 65 71 75 69 72 69 6e 67 20 74 68 61 74 20 6d 6f 64 69 66 69 65 64 20 76 65 72 73 69 ...requiring.that.modified.versi
693c0 6f 6e 73 20 6f 66 20 73 75 63 68 20 6d 61 74 65 72 69 61 6c 20 62 65 20 6d 61 72 6b 65 64 20 69 ons.of.such.material.be.marked.i
693e0 6e 0a 20 20 20 20 72 65 61 73 6f 6e 61 62 6c 65 20 77 61 79 73 20 61 73 20 64 69 66 66 65 72 65 n.....reasonable.ways.as.differe
69400 6e 74 20 66 72 6f 6d 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 76 65 72 73 69 6f 6e 3b 20 6f 72 nt.from.the.original.version;.or
69420 0a 0a 20 20 20 20 64 29 20 4c 69 6d 69 74 69 6e 67 20 74 68 65 20 75 73 65 20 66 6f 72 20 70 75 ......d).Limiting.the.use.for.pu
69440 62 6c 69 63 69 74 79 20 70 75 72 70 6f 73 65 73 20 6f 66 20 6e 61 6d 65 73 20 6f 66 20 6c 69 63 blicity.purposes.of.names.of.lic
69460 65 6e 73 6f 72 73 20 6f 72 0a 20 20 20 20 61 75 74 68 6f 72 73 20 6f 66 20 74 68 65 20 6d 61 74 ensors.or.....authors.of.the.mat
69480 65 72 69 61 6c 3b 20 6f 72 0a 0a 20 20 20 20 65 29 20 44 65 63 6c 69 6e 69 6e 67 20 74 6f 20 67 erial;.or......e).Declining.to.g
694a0 72 61 6e 74 20 72 69 67 68 74 73 20 75 6e 64 65 72 20 74 72 61 64 65 6d 61 72 6b 20 6c 61 77 20 rant.rights.under.trademark.law.
694c0 66 6f 72 20 75 73 65 20 6f 66 20 73 6f 6d 65 0a 20 20 20 20 74 72 61 64 65 20 6e 61 6d 65 73 2c for.use.of.some.....trade.names,
694e0 20 74 72 61 64 65 6d 61 72 6b 73 2c 20 6f 72 20 73 65 72 76 69 63 65 20 6d 61 72 6b 73 3b 20 6f .trademarks,.or.service.marks;.o
69500 72 0a 0a 20 20 20 20 66 29 20 52 65 71 75 69 72 69 6e 67 20 69 6e 64 65 6d 6e 69 66 69 63 61 74 r......f).Requiring.indemnificat
69520 69 6f 6e 20 6f 66 20 6c 69 63 65 6e 73 6f 72 73 20 61 6e 64 20 61 75 74 68 6f 72 73 20 6f 66 20 ion.of.licensors.and.authors.of.
69540 74 68 61 74 0a 20 20 20 20 6d 61 74 65 72 69 61 6c 20 62 79 20 61 6e 79 6f 6e 65 20 77 68 6f 20 that.....material.by.anyone.who.
69560 63 6f 6e 76 65 79 73 20 74 68 65 20 6d 61 74 65 72 69 61 6c 20 28 6f 72 20 6d 6f 64 69 66 69 65 conveys.the.material.(or.modifie
69580 64 20 76 65 72 73 69 6f 6e 73 20 6f 66 0a 20 20 20 20 69 74 29 20 77 69 74 68 20 63 6f 6e 74 72 d.versions.of.....it).with.contr
695a0 61 63 74 75 61 6c 20 61 73 73 75 6d 70 74 69 6f 6e 73 20 6f 66 20 6c 69 61 62 69 6c 69 74 79 20 actual.assumptions.of.liability.
695c0 74 6f 20 74 68 65 20 72 65 63 69 70 69 65 6e 74 2c 20 66 6f 72 0a 20 20 20 20 61 6e 79 20 6c 69 to.the.recipient,.for.....any.li
695e0 61 62 69 6c 69 74 79 20 74 68 61 74 20 74 68 65 73 65 20 63 6f 6e 74 72 61 63 74 75 61 6c 20 61 ability.that.these.contractual.a
69600 73 73 75 6d 70 74 69 6f 6e 73 20 64 69 72 65 63 74 6c 79 20 69 6d 70 6f 73 65 20 6f 6e 0a 20 20 ssumptions.directly.impose.on...
69620 20 20 74 68 6f 73 65 20 6c 69 63 65 6e 73 6f 72 73 20 61 6e 64 20 61 75 74 68 6f 72 73 2e 0a 0a ..those.licensors.and.authors...
69640 20 20 41 6c 6c 20 6f 74 68 65 72 20 6e 6f 6e 2d 70 65 72 6d 69 73 73 69 76 65 20 61 64 64 69 74 ..All.other.non-permissive.addit
69660 69 6f 6e 61 6c 20 74 65 72 6d 73 20 61 72 65 20 63 6f 6e 73 69 64 65 72 65 64 20 22 66 75 72 74 ional.terms.are.considered."furt
69680 68 65 72 0a 72 65 73 74 72 69 63 74 69 6f 6e 73 22 20 77 69 74 68 69 6e 20 74 68 65 20 6d 65 61 her.restrictions".within.the.mea
696a0 6e 69 6e 67 20 6f 66 20 73 65 63 74 69 6f 6e 20 31 30 2e 20 20 49 66 20 74 68 65 20 50 72 6f 67 ning.of.section.10...If.the.Prog
696c0 72 61 6d 20 61 73 20 79 6f 75 0a 72 65 63 65 69 76 65 64 20 69 74 2c 20 6f 72 20 61 6e 79 20 70 ram.as.you.received.it,.or.any.p
696e0 61 72 74 20 6f 66 20 69 74 2c 20 63 6f 6e 74 61 69 6e 73 20 61 20 6e 6f 74 69 63 65 20 73 74 61 art.of.it,.contains.a.notice.sta
69700 74 69 6e 67 20 74 68 61 74 20 69 74 20 69 73 0a 67 6f 76 65 72 6e 65 64 20 62 79 20 74 68 69 73 ting.that.it.is.governed.by.this
69720 20 4c 69 63 65 6e 73 65 20 61 6c 6f 6e 67 20 77 69 74 68 20 61 20 74 65 72 6d 20 74 68 61 74 20 .License.along.with.a.term.that.
69740 69 73 20 61 20 66 75 72 74 68 65 72 0a 72 65 73 74 72 69 63 74 69 6f 6e 2c 20 79 6f 75 20 6d 61 is.a.further.restriction,.you.ma
69760 79 20 72 65 6d 6f 76 65 20 74 68 61 74 20 74 65 72 6d 2e 20 20 49 66 20 61 20 6c 69 63 65 6e 73 y.remove.that.term...If.a.licens
69780 65 20 64 6f 63 75 6d 65 6e 74 20 63 6f 6e 74 61 69 6e 73 0a 61 20 66 75 72 74 68 65 72 20 72 65 e.document.contains.a.further.re
697a0 73 74 72 69 63 74 69 6f 6e 20 62 75 74 20 70 65 72 6d 69 74 73 20 72 65 6c 69 63 65 6e 73 69 6e striction.but.permits.relicensin
697c0 67 20 6f 72 20 63 6f 6e 76 65 79 69 6e 67 20 75 6e 64 65 72 20 74 68 69 73 0a 4c 69 63 65 6e 73 g.or.conveying.under.this.Licens
697e0 65 2c 20 79 6f 75 20 6d 61 79 20 61 64 64 20 74 6f 20 61 20 63 6f 76 65 72 65 64 20 77 6f 72 6b e,.you.may.add.to.a.covered.work
69800 20 6d 61 74 65 72 69 61 6c 20 67 6f 76 65 72 6e 65 64 20 62 79 20 74 68 65 20 74 65 72 6d 73 0a .material.governed.by.the.terms.
69820 6f 66 20 74 68 61 74 20 6c 69 63 65 6e 73 65 20 64 6f 63 75 6d 65 6e 74 2c 20 70 72 6f 76 69 64 of.that.license.document,.provid
69840 65 64 20 74 68 61 74 20 74 68 65 20 66 75 72 74 68 65 72 20 72 65 73 74 72 69 63 74 69 6f 6e 20 ed.that.the.further.restriction.
69860 64 6f 65 73 0a 6e 6f 74 20 73 75 72 76 69 76 65 20 73 75 63 68 20 72 65 6c 69 63 65 6e 73 69 6e does.not.survive.such.relicensin
69880 67 20 6f 72 20 63 6f 6e 76 65 79 69 6e 67 2e 0a 0a 20 20 49 66 20 79 6f 75 20 61 64 64 20 74 65 g.or.conveying.....If.you.add.te
698a0 72 6d 73 20 74 6f 20 61 20 63 6f 76 65 72 65 64 20 77 6f 72 6b 20 69 6e 20 61 63 63 6f 72 64 20 rms.to.a.covered.work.in.accord.
698c0 77 69 74 68 20 74 68 69 73 20 73 65 63 74 69 6f 6e 2c 20 79 6f 75 0a 6d 75 73 74 20 70 6c 61 63 with.this.section,.you.must.plac
698e0 65 2c 20 69 6e 20 74 68 65 20 72 65 6c 65 76 61 6e 74 20 73 6f 75 72 63 65 20 66 69 6c 65 73 2c e,.in.the.relevant.source.files,
69900 20 61 20 73 74 61 74 65 6d 65 6e 74 20 6f 66 20 74 68 65 0a 61 64 64 69 74 69 6f 6e 61 6c 20 74 .a.statement.of.the.additional.t
69920 65 72 6d 73 20 74 68 61 74 20 61 70 70 6c 79 20 74 6f 20 74 68 6f 73 65 20 66 69 6c 65 73 2c 20 erms.that.apply.to.those.files,.
69940 6f 72 20 61 20 6e 6f 74 69 63 65 20 69 6e 64 69 63 61 74 69 6e 67 0a 77 68 65 72 65 20 74 6f 20 or.a.notice.indicating.where.to.
69960 66 69 6e 64 20 74 68 65 20 61 70 70 6c 69 63 61 62 6c 65 20 74 65 72 6d 73 2e 0a 0a 20 20 41 64 find.the.applicable.terms.....Ad
69980 64 69 74 69 6f 6e 61 6c 20 74 65 72 6d 73 2c 20 70 65 72 6d 69 73 73 69 76 65 20 6f 72 20 6e 6f ditional.terms,.permissive.or.no
699a0 6e 2d 70 65 72 6d 69 73 73 69 76 65 2c 20 6d 61 79 20 62 65 20 73 74 61 74 65 64 20 69 6e 20 74 n-permissive,.may.be.stated.in.t
699c0 68 65 0a 66 6f 72 6d 20 6f 66 20 61 20 73 65 70 61 72 61 74 65 6c 79 20 77 72 69 74 74 65 6e 20 he.form.of.a.separately.written.
699e0 6c 69 63 65 6e 73 65 2c 20 6f 72 20 73 74 61 74 65 64 20 61 73 20 65 78 63 65 70 74 69 6f 6e 73 license,.or.stated.as.exceptions
69a00 3b 0a 74 68 65 20 61 62 6f 76 65 20 72 65 71 75 69 72 65 6d 65 6e 74 73 20 61 70 70 6c 79 20 65 ;.the.above.requirements.apply.e
69a20 69 74 68 65 72 20 77 61 79 2e 0a 0a 20 20 38 2e 20 54 65 72 6d 69 6e 61 74 69 6f 6e 2e 0a 0a 20 ither.way.....8..Termination....
69a40 20 59 6f 75 20 6d 61 79 20 6e 6f 74 20 70 72 6f 70 61 67 61 74 65 20 6f 72 20 6d 6f 64 69 66 79 .You.may.not.propagate.or.modify
69a60 20 61 20 63 6f 76 65 72 65 64 20 77 6f 72 6b 20 65 78 63 65 70 74 20 61 73 20 65 78 70 72 65 73 .a.covered.work.except.as.expres
69a80 73 6c 79 0a 70 72 6f 76 69 64 65 64 20 75 6e 64 65 72 20 74 68 69 73 20 4c 69 63 65 6e 73 65 2e sly.provided.under.this.License.
69aa0 20 20 41 6e 79 20 61 74 74 65 6d 70 74 20 6f 74 68 65 72 77 69 73 65 20 74 6f 20 70 72 6f 70 61 ..Any.attempt.otherwise.to.propa
69ac0 67 61 74 65 20 6f 72 0a 6d 6f 64 69 66 79 20 69 74 20 69 73 20 76 6f 69 64 2c 20 61 6e 64 20 77 gate.or.modify.it.is.void,.and.w
69ae0 69 6c 6c 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 74 65 72 6d 69 6e 61 74 65 20 79 6f 75 72 ill.automatically.terminate.your
69b00 20 72 69 67 68 74 73 20 75 6e 64 65 72 0a 74 68 69 73 20 4c 69 63 65 6e 73 65 20 28 69 6e 63 6c .rights.under.this.License.(incl
69b20 75 64 69 6e 67 20 61 6e 79 20 70 61 74 65 6e 74 20 6c 69 63 65 6e 73 65 73 20 67 72 61 6e 74 65 uding.any.patent.licenses.grante
69b40 64 20 75 6e 64 65 72 20 74 68 65 20 74 68 69 72 64 0a 70 61 72 61 67 72 61 70 68 20 6f 66 20 73 d.under.the.third.paragraph.of.s
69b60 65 63 74 69 6f 6e 20 31 31 29 2e 0a 0a 20 20 48 6f 77 65 76 65 72 2c 20 69 66 20 79 6f 75 20 63 ection.11).....However,.if.you.c
69b80 65 61 73 65 20 61 6c 6c 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 66 20 74 68 69 73 20 4c 69 63 65 6e ease.all.violation.of.this.Licen
69ba0 73 65 2c 20 74 68 65 6e 20 79 6f 75 72 0a 6c 69 63 65 6e 73 65 20 66 72 6f 6d 20 61 20 70 61 72 se,.then.your.license.from.a.par
69bc0 74 69 63 75 6c 61 72 20 63 6f 70 79 72 69 67 68 74 20 68 6f 6c 64 65 72 20 69 73 20 72 65 69 6e ticular.copyright.holder.is.rein
69be0 73 74 61 74 65 64 20 28 61 29 0a 70 72 6f 76 69 73 69 6f 6e 61 6c 6c 79 2c 20 75 6e 6c 65 73 73 stated.(a).provisionally,.unless
69c00 20 61 6e 64 20 75 6e 74 69 6c 20 74 68 65 20 63 6f 70 79 72 69 67 68 74 20 68 6f 6c 64 65 72 20 .and.until.the.copyright.holder.
69c20 65 78 70 6c 69 63 69 74 6c 79 20 61 6e 64 0a 66 69 6e 61 6c 6c 79 20 74 65 72 6d 69 6e 61 74 65 explicitly.and.finally.terminate
69c40 73 20 79 6f 75 72 20 6c 69 63 65 6e 73 65 2c 20 61 6e 64 20 28 62 29 20 70 65 72 6d 61 6e 65 6e s.your.license,.and.(b).permanen
69c60 74 6c 79 2c 20 69 66 20 74 68 65 20 63 6f 70 79 72 69 67 68 74 0a 68 6f 6c 64 65 72 20 66 61 69 tly,.if.the.copyright.holder.fai
69c80 6c 73 20 74 6f 20 6e 6f 74 69 66 79 20 79 6f 75 20 6f 66 20 74 68 65 20 76 69 6f 6c 61 74 69 6f ls.to.notify.you.of.the.violatio
69ca0 6e 20 62 79 20 73 6f 6d 65 20 72 65 61 73 6f 6e 61 62 6c 65 20 6d 65 61 6e 73 0a 70 72 69 6f 72 n.by.some.reasonable.means.prior
69cc0 20 74 6f 20 36 30 20 64 61 79 73 20 61 66 74 65 72 20 74 68 65 20 63 65 73 73 61 74 69 6f 6e 2e .to.60.days.after.the.cessation.
69ce0 0a 0a 20 20 4d 6f 72 65 6f 76 65 72 2c 20 79 6f 75 72 20 6c 69 63 65 6e 73 65 20 66 72 6f 6d 20 ....Moreover,.your.license.from.
69d00 61 20 70 61 72 74 69 63 75 6c 61 72 20 63 6f 70 79 72 69 67 68 74 20 68 6f 6c 64 65 72 20 69 73 a.particular.copyright.holder.is
69d20 0a 72 65 69 6e 73 74 61 74 65 64 20 70 65 72 6d 61 6e 65 6e 74 6c 79 20 69 66 20 74 68 65 20 63 .reinstated.permanently.if.the.c
69d40 6f 70 79 72 69 67 68 74 20 68 6f 6c 64 65 72 20 6e 6f 74 69 66 69 65 73 20 79 6f 75 20 6f 66 20 opyright.holder.notifies.you.of.
69d60 74 68 65 0a 76 69 6f 6c 61 74 69 6f 6e 20 62 79 20 73 6f 6d 65 20 72 65 61 73 6f 6e 61 62 6c 65 the.violation.by.some.reasonable
69d80 20 6d 65 61 6e 73 2c 20 74 68 69 73 20 69 73 20 74 68 65 20 66 69 72 73 74 20 74 69 6d 65 20 79 .means,.this.is.the.first.time.y
69da0 6f 75 20 68 61 76 65 0a 72 65 63 65 69 76 65 64 20 6e 6f 74 69 63 65 20 6f 66 20 76 69 6f 6c 61 ou.have.received.notice.of.viola
69dc0 74 69 6f 6e 20 6f 66 20 74 68 69 73 20 4c 69 63 65 6e 73 65 20 28 66 6f 72 20 61 6e 79 20 77 6f tion.of.this.License.(for.any.wo
69de0 72 6b 29 20 66 72 6f 6d 20 74 68 61 74 0a 63 6f 70 79 72 69 67 68 74 20 68 6f 6c 64 65 72 2c 20 rk).from.that.copyright.holder,.
69e00 61 6e 64 20 79 6f 75 20 63 75 72 65 20 74 68 65 20 76 69 6f 6c 61 74 69 6f 6e 20 70 72 69 6f 72 and.you.cure.the.violation.prior
69e20 20 74 6f 20 33 30 20 64 61 79 73 20 61 66 74 65 72 0a 79 6f 75 72 20 72 65 63 65 69 70 74 20 6f .to.30.days.after.your.receipt.o
69e40 66 20 74 68 65 20 6e 6f 74 69 63 65 2e 0a 0a 20 20 54 65 72 6d 69 6e 61 74 69 6f 6e 20 6f 66 20 f.the.notice.....Termination.of.
69e60 79 6f 75 72 20 72 69 67 68 74 73 20 75 6e 64 65 72 20 74 68 69 73 20 73 65 63 74 69 6f 6e 20 64 your.rights.under.this.section.d
69e80 6f 65 73 20 6e 6f 74 20 74 65 72 6d 69 6e 61 74 65 20 74 68 65 0a 6c 69 63 65 6e 73 65 73 20 6f oes.not.terminate.the.licenses.o
69ea0 66 20 70 61 72 74 69 65 73 20 77 68 6f 20 68 61 76 65 20 72 65 63 65 69 76 65 64 20 63 6f 70 69 f.parties.who.have.received.copi
69ec0 65 73 20 6f 72 20 72 69 67 68 74 73 20 66 72 6f 6d 20 79 6f 75 20 75 6e 64 65 72 0a 74 68 69 73 es.or.rights.from.you.under.this
69ee0 20 4c 69 63 65 6e 73 65 2e 20 20 49 66 20 79 6f 75 72 20 72 69 67 68 74 73 20 68 61 76 65 20 62 .License...If.your.rights.have.b
69f00 65 65 6e 20 74 65 72 6d 69 6e 61 74 65 64 20 61 6e 64 20 6e 6f 74 20 70 65 72 6d 61 6e 65 6e 74 een.terminated.and.not.permanent
69f20 6c 79 0a 72 65 69 6e 73 74 61 74 65 64 2c 20 79 6f 75 20 64 6f 20 6e 6f 74 20 71 75 61 6c 69 66 ly.reinstated,.you.do.not.qualif
69f40 79 20 74 6f 20 72 65 63 65 69 76 65 20 6e 65 77 20 6c 69 63 65 6e 73 65 73 20 66 6f 72 20 74 68 y.to.receive.new.licenses.for.th
69f60 65 20 73 61 6d 65 0a 6d 61 74 65 72 69 61 6c 20 75 6e 64 65 72 20 73 65 63 74 69 6f 6e 20 31 30 e.same.material.under.section.10
69f80 2e 0a 0a 20 20 39 2e 20 41 63 63 65 70 74 61 6e 63 65 20 4e 6f 74 20 52 65 71 75 69 72 65 64 20 .....9..Acceptance.Not.Required.
69fa0 66 6f 72 20 48 61 76 69 6e 67 20 43 6f 70 69 65 73 2e 0a 0a 20 20 59 6f 75 20 61 72 65 20 6e 6f for.Having.Copies.....You.are.no
69fc0 74 20 72 65 71 75 69 72 65 64 20 74 6f 20 61 63 63 65 70 74 20 74 68 69 73 20 4c 69 63 65 6e 73 t.required.to.accept.this.Licens
69fe0 65 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 72 65 63 65 69 76 65 20 6f 72 0a 72 75 6e 20 61 20 63 e.in.order.to.receive.or.run.a.c
6a000 6f 70 79 20 6f 66 20 74 68 65 20 50 72 6f 67 72 61 6d 2e 20 20 41 6e 63 69 6c 6c 61 72 79 20 70 opy.of.the.Program...Ancillary.p
6a020 72 6f 70 61 67 61 74 69 6f 6e 20 6f 66 20 61 20 63 6f 76 65 72 65 64 20 77 6f 72 6b 0a 6f 63 63 ropagation.of.a.covered.work.occ
6a040 75 72 72 69 6e 67 20 73 6f 6c 65 6c 79 20 61 73 20 61 20 63 6f 6e 73 65 71 75 65 6e 63 65 20 6f urring.solely.as.a.consequence.o
6a060 66 20 75 73 69 6e 67 20 70 65 65 72 2d 74 6f 2d 70 65 65 72 20 74 72 61 6e 73 6d 69 73 73 69 6f f.using.peer-to-peer.transmissio
6a080 6e 0a 74 6f 20 72 65 63 65 69 76 65 20 61 20 63 6f 70 79 20 6c 69 6b 65 77 69 73 65 20 64 6f 65 n.to.receive.a.copy.likewise.doe
6a0a0 73 20 6e 6f 74 20 72 65 71 75 69 72 65 20 61 63 63 65 70 74 61 6e 63 65 2e 20 20 48 6f 77 65 76 s.not.require.acceptance...Howev
6a0c0 65 72 2c 0a 6e 6f 74 68 69 6e 67 20 6f 74 68 65 72 20 74 68 61 6e 20 74 68 69 73 20 4c 69 63 65 er,.nothing.other.than.this.Lice
6a0e0 6e 73 65 20 67 72 61 6e 74 73 20 79 6f 75 20 70 65 72 6d 69 73 73 69 6f 6e 20 74 6f 20 70 72 6f nse.grants.you.permission.to.pro
6a100 70 61 67 61 74 65 20 6f 72 0a 6d 6f 64 69 66 79 20 61 6e 79 20 63 6f 76 65 72 65 64 20 77 6f 72 pagate.or.modify.any.covered.wor
6a120 6b 2e 20 20 54 68 65 73 65 20 61 63 74 69 6f 6e 73 20 69 6e 66 72 69 6e 67 65 20 63 6f 70 79 72 k...These.actions.infringe.copyr
6a140 69 67 68 74 20 69 66 20 79 6f 75 20 64 6f 0a 6e 6f 74 20 61 63 63 65 70 74 20 74 68 69 73 20 4c ight.if.you.do.not.accept.this.L
6a160 69 63 65 6e 73 65 2e 20 20 54 68 65 72 65 66 6f 72 65 2c 20 62 79 20 6d 6f 64 69 66 79 69 6e 67 icense...Therefore,.by.modifying
6a180 20 6f 72 20 70 72 6f 70 61 67 61 74 69 6e 67 20 61 0a 63 6f 76 65 72 65 64 20 77 6f 72 6b 2c 20 .or.propagating.a.covered.work,.
6a1a0 79 6f 75 20 69 6e 64 69 63 61 74 65 20 79 6f 75 72 20 61 63 63 65 70 74 61 6e 63 65 20 6f 66 20 you.indicate.your.acceptance.of.
6a1c0 74 68 69 73 20 4c 69 63 65 6e 73 65 20 74 6f 20 64 6f 20 73 6f 2e 0a 0a 20 20 31 30 2e 20 41 75 this.License.to.do.so.....10..Au
6a1e0 74 6f 6d 61 74 69 63 20 4c 69 63 65 6e 73 69 6e 67 20 6f 66 20 44 6f 77 6e 73 74 72 65 61 6d 20 tomatic.Licensing.of.Downstream.
6a200 52 65 63 69 70 69 65 6e 74 73 2e 0a 0a 20 20 45 61 63 68 20 74 69 6d 65 20 79 6f 75 20 63 6f 6e Recipients.....Each.time.you.con
6a220 76 65 79 20 61 20 63 6f 76 65 72 65 64 20 77 6f 72 6b 2c 20 74 68 65 20 72 65 63 69 70 69 65 6e vey.a.covered.work,.the.recipien
6a240 74 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 0a 72 65 63 65 69 76 65 73 20 61 20 6c 69 63 65 6e t.automatically.receives.a.licen
6a260 73 65 20 66 72 6f 6d 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 6c 69 63 65 6e 73 6f 72 73 2c 20 se.from.the.original.licensors,.
6a280 74 6f 20 72 75 6e 2c 20 6d 6f 64 69 66 79 20 61 6e 64 0a 70 72 6f 70 61 67 61 74 65 20 74 68 61 to.run,.modify.and.propagate.tha
6a2a0 74 20 77 6f 72 6b 2c 20 73 75 62 6a 65 63 74 20 74 6f 20 74 68 69 73 20 4c 69 63 65 6e 73 65 2e t.work,.subject.to.this.License.
6a2c0 20 20 59 6f 75 20 61 72 65 20 6e 6f 74 20 72 65 73 70 6f 6e 73 69 62 6c 65 0a 66 6f 72 20 65 6e ..You.are.not.responsible.for.en
6a2e0 66 6f 72 63 69 6e 67 20 63 6f 6d 70 6c 69 61 6e 63 65 20 62 79 20 74 68 69 72 64 20 70 61 72 74 forcing.compliance.by.third.part
6a300 69 65 73 20 77 69 74 68 20 74 68 69 73 20 4c 69 63 65 6e 73 65 2e 0a 0a 20 20 41 6e 20 22 65 6e ies.with.this.License.....An."en
6a320 74 69 74 79 20 74 72 61 6e 73 61 63 74 69 6f 6e 22 20 69 73 20 61 20 74 72 61 6e 73 61 63 74 69 tity.transaction".is.a.transacti
6a340 6f 6e 20 74 72 61 6e 73 66 65 72 72 69 6e 67 20 63 6f 6e 74 72 6f 6c 20 6f 66 20 61 6e 0a 6f 72 on.transferring.control.of.an.or
6a360 67 61 6e 69 7a 61 74 69 6f 6e 2c 20 6f 72 20 73 75 62 73 74 61 6e 74 69 61 6c 6c 79 20 61 6c 6c ganization,.or.substantially.all
6a380 20 61 73 73 65 74 73 20 6f 66 20 6f 6e 65 2c 20 6f 72 20 73 75 62 64 69 76 69 64 69 6e 67 20 61 .assets.of.one,.or.subdividing.a
6a3a0 6e 0a 6f 72 67 61 6e 69 7a 61 74 69 6f 6e 2c 20 6f 72 20 6d 65 72 67 69 6e 67 20 6f 72 67 61 6e n.organization,.or.merging.organ
6a3c0 69 7a 61 74 69 6f 6e 73 2e 20 20 49 66 20 70 72 6f 70 61 67 61 74 69 6f 6e 20 6f 66 20 61 20 63 izations...If.propagation.of.a.c
6a3e0 6f 76 65 72 65 64 0a 77 6f 72 6b 20 72 65 73 75 6c 74 73 20 66 72 6f 6d 20 61 6e 20 65 6e 74 69 overed.work.results.from.an.enti
6a400 74 79 20 74 72 61 6e 73 61 63 74 69 6f 6e 2c 20 65 61 63 68 20 70 61 72 74 79 20 74 6f 20 74 68 ty.transaction,.each.party.to.th
6a420 61 74 0a 74 72 61 6e 73 61 63 74 69 6f 6e 20 77 68 6f 20 72 65 63 65 69 76 65 73 20 61 20 63 6f at.transaction.who.receives.a.co
6a440 70 79 20 6f 66 20 74 68 65 20 77 6f 72 6b 20 61 6c 73 6f 20 72 65 63 65 69 76 65 73 20 77 68 61 py.of.the.work.also.receives.wha
6a460 74 65 76 65 72 0a 6c 69 63 65 6e 73 65 73 20 74 6f 20 74 68 65 20 77 6f 72 6b 20 74 68 65 20 70 tever.licenses.to.the.work.the.p
6a480 61 72 74 79 27 73 20 70 72 65 64 65 63 65 73 73 6f 72 20 69 6e 20 69 6e 74 65 72 65 73 74 20 68 arty's.predecessor.in.interest.h
6a4a0 61 64 20 6f 72 20 63 6f 75 6c 64 0a 67 69 76 65 20 75 6e 64 65 72 20 74 68 65 20 70 72 65 76 69 ad.or.could.give.under.the.previ
6a4c0 6f 75 73 20 70 61 72 61 67 72 61 70 68 2c 20 70 6c 75 73 20 61 20 72 69 67 68 74 20 74 6f 20 70 ous.paragraph,.plus.a.right.to.p
6a4e0 6f 73 73 65 73 73 69 6f 6e 20 6f 66 20 74 68 65 0a 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 53 ossession.of.the.Corresponding.S
6a500 6f 75 72 63 65 20 6f 66 20 74 68 65 20 77 6f 72 6b 20 66 72 6f 6d 20 74 68 65 20 70 72 65 64 65 ource.of.the.work.from.the.prede
6a520 63 65 73 73 6f 72 20 69 6e 20 69 6e 74 65 72 65 73 74 2c 20 69 66 0a 74 68 65 20 70 72 65 64 65 cessor.in.interest,.if.the.prede
6a540 63 65 73 73 6f 72 20 68 61 73 20 69 74 20 6f 72 20 63 61 6e 20 67 65 74 20 69 74 20 77 69 74 68 cessor.has.it.or.can.get.it.with
6a560 20 72 65 61 73 6f 6e 61 62 6c 65 20 65 66 66 6f 72 74 73 2e 0a 0a 20 20 59 6f 75 20 6d 61 79 20 .reasonable.efforts.....You.may.
6a580 6e 6f 74 20 69 6d 70 6f 73 65 20 61 6e 79 20 66 75 72 74 68 65 72 20 72 65 73 74 72 69 63 74 69 not.impose.any.further.restricti
6a5a0 6f 6e 73 20 6f 6e 20 74 68 65 20 65 78 65 72 63 69 73 65 20 6f 66 20 74 68 65 0a 72 69 67 68 74 ons.on.the.exercise.of.the.right
6a5c0 73 20 67 72 61 6e 74 65 64 20 6f 72 20 61 66 66 69 72 6d 65 64 20 75 6e 64 65 72 20 74 68 69 73 s.granted.or.affirmed.under.this
6a5e0 20 4c 69 63 65 6e 73 65 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 79 6f 75 20 6d 61 79 0a .License...For.example,.you.may.
6a600 6e 6f 74 20 69 6d 70 6f 73 65 20 61 20 6c 69 63 65 6e 73 65 20 66 65 65 2c 20 72 6f 79 61 6c 74 not.impose.a.license.fee,.royalt
6a620 79 2c 20 6f 72 20 6f 74 68 65 72 20 63 68 61 72 67 65 20 66 6f 72 20 65 78 65 72 63 69 73 65 20 y,.or.other.charge.for.exercise.
6a640 6f 66 0a 72 69 67 68 74 73 20 67 72 61 6e 74 65 64 20 75 6e 64 65 72 20 74 68 69 73 20 4c 69 63 of.rights.granted.under.this.Lic
6a660 65 6e 73 65 2c 20 61 6e 64 20 79 6f 75 20 6d 61 79 20 6e 6f 74 20 69 6e 69 74 69 61 74 65 20 6c ense,.and.you.may.not.initiate.l
6a680 69 74 69 67 61 74 69 6f 6e 0a 28 69 6e 63 6c 75 64 69 6e 67 20 61 20 63 72 6f 73 73 2d 63 6c 61 itigation.(including.a.cross-cla
6a6a0 69 6d 20 6f 72 20 63 6f 75 6e 74 65 72 63 6c 61 69 6d 20 69 6e 20 61 20 6c 61 77 73 75 69 74 29 im.or.counterclaim.in.a.lawsuit)
6a6c0 20 61 6c 6c 65 67 69 6e 67 20 74 68 61 74 0a 61 6e 79 20 70 61 74 65 6e 74 20 63 6c 61 69 6d 20 .alleging.that.any.patent.claim.
6a6e0 69 73 20 69 6e 66 72 69 6e 67 65 64 20 62 79 20 6d 61 6b 69 6e 67 2c 20 75 73 69 6e 67 2c 20 73 is.infringed.by.making,.using,.s
6a700 65 6c 6c 69 6e 67 2c 20 6f 66 66 65 72 69 6e 67 20 66 6f 72 0a 73 61 6c 65 2c 20 6f 72 20 69 6d elling,.offering.for.sale,.or.im
6a720 70 6f 72 74 69 6e 67 20 74 68 65 20 50 72 6f 67 72 61 6d 20 6f 72 20 61 6e 79 20 70 6f 72 74 69 porting.the.Program.or.any.porti
6a740 6f 6e 20 6f 66 20 69 74 2e 0a 0a 20 20 31 31 2e 20 50 61 74 65 6e 74 73 2e 0a 0a 20 20 41 20 22 on.of.it.....11..Patents.....A."
6a760 63 6f 6e 74 72 69 62 75 74 6f 72 22 20 69 73 20 61 20 63 6f 70 79 72 69 67 68 74 20 68 6f 6c 64 contributor".is.a.copyright.hold
6a780 65 72 20 77 68 6f 20 61 75 74 68 6f 72 69 7a 65 73 20 75 73 65 20 75 6e 64 65 72 20 74 68 69 73 er.who.authorizes.use.under.this
6a7a0 0a 4c 69 63 65 6e 73 65 20 6f 66 20 74 68 65 20 50 72 6f 67 72 61 6d 20 6f 72 20 61 20 77 6f 72 .License.of.the.Program.or.a.wor
6a7c0 6b 20 6f 6e 20 77 68 69 63 68 20 74 68 65 20 50 72 6f 67 72 61 6d 20 69 73 20 62 61 73 65 64 2e k.on.which.the.Program.is.based.
6a7e0 20 20 54 68 65 0a 77 6f 72 6b 20 74 68 75 73 20 6c 69 63 65 6e 73 65 64 20 69 73 20 63 61 6c 6c ..The.work.thus.licensed.is.call
6a800 65 64 20 74 68 65 20 63 6f 6e 74 72 69 62 75 74 6f 72 27 73 20 22 63 6f 6e 74 72 69 62 75 74 6f ed.the.contributor's."contributo
6a820 72 20 76 65 72 73 69 6f 6e 22 2e 0a 0a 20 20 41 20 63 6f 6e 74 72 69 62 75 74 6f 72 27 73 20 22 r.version".....A.contributor's."
6a840 65 73 73 65 6e 74 69 61 6c 20 70 61 74 65 6e 74 20 63 6c 61 69 6d 73 22 20 61 72 65 20 61 6c 6c essential.patent.claims".are.all
6a860 20 70 61 74 65 6e 74 20 63 6c 61 69 6d 73 0a 6f 77 6e 65 64 20 6f 72 20 63 6f 6e 74 72 6f 6c 6c .patent.claims.owned.or.controll
6a880 65 64 20 62 79 20 74 68 65 20 63 6f 6e 74 72 69 62 75 74 6f 72 2c 20 77 68 65 74 68 65 72 20 61 ed.by.the.contributor,.whether.a
6a8a0 6c 72 65 61 64 79 20 61 63 71 75 69 72 65 64 20 6f 72 0a 68 65 72 65 61 66 74 65 72 20 61 63 71 lready.acquired.or.hereafter.acq
6a8c0 75 69 72 65 64 2c 20 74 68 61 74 20 77 6f 75 6c 64 20 62 65 20 69 6e 66 72 69 6e 67 65 64 20 62 uired,.that.would.be.infringed.b
6a8e0 79 20 73 6f 6d 65 20 6d 61 6e 6e 65 72 2c 20 70 65 72 6d 69 74 74 65 64 0a 62 79 20 74 68 69 73 y.some.manner,.permitted.by.this
6a900 20 4c 69 63 65 6e 73 65 2c 20 6f 66 20 6d 61 6b 69 6e 67 2c 20 75 73 69 6e 67 2c 20 6f 72 20 73 .License,.of.making,.using,.or.s
6a920 65 6c 6c 69 6e 67 20 69 74 73 20 63 6f 6e 74 72 69 62 75 74 6f 72 20 76 65 72 73 69 6f 6e 2c 0a elling.its.contributor.version,.
6a940 62 75 74 20 64 6f 20 6e 6f 74 20 69 6e 63 6c 75 64 65 20 63 6c 61 69 6d 73 20 74 68 61 74 20 77 but.do.not.include.claims.that.w
6a960 6f 75 6c 64 20 62 65 20 69 6e 66 72 69 6e 67 65 64 20 6f 6e 6c 79 20 61 73 20 61 0a 63 6f 6e 73 ould.be.infringed.only.as.a.cons
6a980 65 71 75 65 6e 63 65 20 6f 66 20 66 75 72 74 68 65 72 20 6d 6f 64 69 66 69 63 61 74 69 6f 6e 20 equence.of.further.modification.
6a9a0 6f 66 20 74 68 65 20 63 6f 6e 74 72 69 62 75 74 6f 72 20 76 65 72 73 69 6f 6e 2e 20 20 46 6f 72 of.the.contributor.version...For
6a9c0 0a 70 75 72 70 6f 73 65 73 20 6f 66 20 74 68 69 73 20 64 65 66 69 6e 69 74 69 6f 6e 2c 20 22 63 .purposes.of.this.definition,."c
6a9e0 6f 6e 74 72 6f 6c 22 20 69 6e 63 6c 75 64 65 73 20 74 68 65 20 72 69 67 68 74 20 74 6f 20 67 72 ontrol".includes.the.right.to.gr
6aa00 61 6e 74 0a 70 61 74 65 6e 74 20 73 75 62 6c 69 63 65 6e 73 65 73 20 69 6e 20 61 20 6d 61 6e 6e ant.patent.sublicenses.in.a.mann
6aa20 65 72 20 63 6f 6e 73 69 73 74 65 6e 74 20 77 69 74 68 20 74 68 65 20 72 65 71 75 69 72 65 6d 65 er.consistent.with.the.requireme
6aa40 6e 74 73 20 6f 66 0a 74 68 69 73 20 4c 69 63 65 6e 73 65 2e 0a 0a 20 20 45 61 63 68 20 63 6f 6e nts.of.this.License.....Each.con
6aa60 74 72 69 62 75 74 6f 72 20 67 72 61 6e 74 73 20 79 6f 75 20 61 20 6e 6f 6e 2d 65 78 63 6c 75 73 tributor.grants.you.a.non-exclus
6aa80 69 76 65 2c 20 77 6f 72 6c 64 77 69 64 65 2c 20 72 6f 79 61 6c 74 79 2d 66 72 65 65 0a 70 61 74 ive,.worldwide,.royalty-free.pat
6aaa0 65 6e 74 20 6c 69 63 65 6e 73 65 20 75 6e 64 65 72 20 74 68 65 20 63 6f 6e 74 72 69 62 75 74 6f ent.license.under.the.contributo
6aac0 72 27 73 20 65 73 73 65 6e 74 69 61 6c 20 70 61 74 65 6e 74 20 63 6c 61 69 6d 73 2c 20 74 6f 0a r's.essential.patent.claims,.to.
6aae0 6d 61 6b 65 2c 20 75 73 65 2c 20 73 65 6c 6c 2c 20 6f 66 66 65 72 20 66 6f 72 20 73 61 6c 65 2c make,.use,.sell,.offer.for.sale,
6ab00 20 69 6d 70 6f 72 74 20 61 6e 64 20 6f 74 68 65 72 77 69 73 65 20 72 75 6e 2c 20 6d 6f 64 69 66 .import.and.otherwise.run,.modif
6ab20 79 20 61 6e 64 0a 70 72 6f 70 61 67 61 74 65 20 74 68 65 20 63 6f 6e 74 65 6e 74 73 20 6f 66 20 y.and.propagate.the.contents.of.
6ab40 69 74 73 20 63 6f 6e 74 72 69 62 75 74 6f 72 20 76 65 72 73 69 6f 6e 2e 0a 0a 20 20 49 6e 20 74 its.contributor.version.....In.t
6ab60 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 68 72 65 65 20 70 61 72 61 67 72 61 70 68 73 2c 20 61 he.following.three.paragraphs,.a
6ab80 20 22 70 61 74 65 6e 74 20 6c 69 63 65 6e 73 65 22 20 69 73 20 61 6e 79 20 65 78 70 72 65 73 73 ."patent.license".is.any.express
6aba0 0a 61 67 72 65 65 6d 65 6e 74 20 6f 72 20 63 6f 6d 6d 69 74 6d 65 6e 74 2c 20 68 6f 77 65 76 65 .agreement.or.commitment,.howeve
6abc0 72 20 64 65 6e 6f 6d 69 6e 61 74 65 64 2c 20 6e 6f 74 20 74 6f 20 65 6e 66 6f 72 63 65 20 61 20 r.denominated,.not.to.enforce.a.
6abe0 70 61 74 65 6e 74 0a 28 73 75 63 68 20 61 73 20 61 6e 20 65 78 70 72 65 73 73 20 70 65 72 6d 69 patent.(such.as.an.express.permi
6ac00 73 73 69 6f 6e 20 74 6f 20 70 72 61 63 74 69 63 65 20 61 20 70 61 74 65 6e 74 20 6f 72 20 63 6f ssion.to.practice.a.patent.or.co
6ac20 76 65 6e 61 6e 74 20 6e 6f 74 20 74 6f 0a 73 75 65 20 66 6f 72 20 70 61 74 65 6e 74 20 69 6e 66 venant.not.to.sue.for.patent.inf
6ac40 72 69 6e 67 65 6d 65 6e 74 29 2e 20 20 54 6f 20 22 67 72 61 6e 74 22 20 73 75 63 68 20 61 20 70 ringement)...To."grant".such.a.p
6ac60 61 74 65 6e 74 20 6c 69 63 65 6e 73 65 20 74 6f 20 61 0a 70 61 72 74 79 20 6d 65 61 6e 73 20 74 atent.license.to.a.party.means.t
6ac80 6f 20 6d 61 6b 65 20 73 75 63 68 20 61 6e 20 61 67 72 65 65 6d 65 6e 74 20 6f 72 20 63 6f 6d 6d o.make.such.an.agreement.or.comm
6aca0 69 74 6d 65 6e 74 20 6e 6f 74 20 74 6f 20 65 6e 66 6f 72 63 65 20 61 0a 70 61 74 65 6e 74 20 61 itment.not.to.enforce.a.patent.a
6acc0 67 61 69 6e 73 74 20 74 68 65 20 70 61 72 74 79 2e 0a 0a 20 20 49 66 20 79 6f 75 20 63 6f 6e 76 gainst.the.party.....If.you.conv
6ace0 65 79 20 61 20 63 6f 76 65 72 65 64 20 77 6f 72 6b 2c 20 6b 6e 6f 77 69 6e 67 6c 79 20 72 65 6c ey.a.covered.work,.knowingly.rel
6ad00 79 69 6e 67 20 6f 6e 20 61 20 70 61 74 65 6e 74 20 6c 69 63 65 6e 73 65 2c 0a 61 6e 64 20 74 68 ying.on.a.patent.license,.and.th
6ad20 65 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 53 6f 75 72 63 65 20 6f 66 20 74 68 65 20 77 6f e.Corresponding.Source.of.the.wo
6ad40 72 6b 20 69 73 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c 65 20 66 6f 72 20 61 6e 79 6f 6e 65 0a 74 rk.is.not.available.for.anyone.t
6ad60 6f 20 63 6f 70 79 2c 20 66 72 65 65 20 6f 66 20 63 68 61 72 67 65 20 61 6e 64 20 75 6e 64 65 72 o.copy,.free.of.charge.and.under
6ad80 20 74 68 65 20 74 65 72 6d 73 20 6f 66 20 74 68 69 73 20 4c 69 63 65 6e 73 65 2c 20 74 68 72 6f .the.terms.of.this.License,.thro
6ada0 75 67 68 20 61 0a 70 75 62 6c 69 63 6c 79 20 61 76 61 69 6c 61 62 6c 65 20 6e 65 74 77 6f 72 6b ugh.a.publicly.available.network
6adc0 20 73 65 72 76 65 72 20 6f 72 20 6f 74 68 65 72 20 72 65 61 64 69 6c 79 20 61 63 63 65 73 73 69 .server.or.other.readily.accessi
6ade0 62 6c 65 20 6d 65 61 6e 73 2c 0a 74 68 65 6e 20 79 6f 75 20 6d 75 73 74 20 65 69 74 68 65 72 20 ble.means,.then.you.must.either.
6ae00 28 31 29 20 63 61 75 73 65 20 74 68 65 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 53 6f 75 72 (1).cause.the.Corresponding.Sour
6ae20 63 65 20 74 6f 20 62 65 20 73 6f 0a 61 76 61 69 6c 61 62 6c 65 2c 20 6f 72 20 28 32 29 20 61 72 ce.to.be.so.available,.or.(2).ar
6ae40 72 61 6e 67 65 20 74 6f 20 64 65 70 72 69 76 65 20 79 6f 75 72 73 65 6c 66 20 6f 66 20 74 68 65 range.to.deprive.yourself.of.the
6ae60 20 62 65 6e 65 66 69 74 20 6f 66 20 74 68 65 0a 70 61 74 65 6e 74 20 6c 69 63 65 6e 73 65 20 66 .benefit.of.the.patent.license.f
6ae80 6f 72 20 74 68 69 73 20 70 61 72 74 69 63 75 6c 61 72 20 77 6f 72 6b 2c 20 6f 72 20 28 33 29 20 or.this.particular.work,.or.(3).
6aea0 61 72 72 61 6e 67 65 2c 20 69 6e 20 61 20 6d 61 6e 6e 65 72 0a 63 6f 6e 73 69 73 74 65 6e 74 20 arrange,.in.a.manner.consistent.
6aec0 77 69 74 68 20 74 68 65 20 72 65 71 75 69 72 65 6d 65 6e 74 73 20 6f 66 20 74 68 69 73 20 4c 69 with.the.requirements.of.this.Li
6aee0 63 65 6e 73 65 2c 20 74 6f 20 65 78 74 65 6e 64 20 74 68 65 20 70 61 74 65 6e 74 0a 6c 69 63 65 cense,.to.extend.the.patent.lice
6af00 6e 73 65 20 74 6f 20 64 6f 77 6e 73 74 72 65 61 6d 20 72 65 63 69 70 69 65 6e 74 73 2e 20 20 22 nse.to.downstream.recipients..."
6af20 4b 6e 6f 77 69 6e 67 6c 79 20 72 65 6c 79 69 6e 67 22 20 6d 65 61 6e 73 20 79 6f 75 20 68 61 76 Knowingly.relying".means.you.hav
6af40 65 0a 61 63 74 75 61 6c 20 6b 6e 6f 77 6c 65 64 67 65 20 74 68 61 74 2c 20 62 75 74 20 66 6f 72 e.actual.knowledge.that,.but.for
6af60 20 74 68 65 20 70 61 74 65 6e 74 20 6c 69 63 65 6e 73 65 2c 20 79 6f 75 72 20 63 6f 6e 76 65 79 .the.patent.license,.your.convey
6af80 69 6e 67 20 74 68 65 0a 63 6f 76 65 72 65 64 20 77 6f 72 6b 20 69 6e 20 61 20 63 6f 75 6e 74 72 ing.the.covered.work.in.a.countr
6afa0 79 2c 20 6f 72 20 79 6f 75 72 20 72 65 63 69 70 69 65 6e 74 27 73 20 75 73 65 20 6f 66 20 74 68 y,.or.your.recipient's.use.of.th
6afc0 65 20 63 6f 76 65 72 65 64 20 77 6f 72 6b 0a 69 6e 20 61 20 63 6f 75 6e 74 72 79 2c 20 77 6f 75 e.covered.work.in.a.country,.wou
6afe0 6c 64 20 69 6e 66 72 69 6e 67 65 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 69 64 65 6e 74 69 66 69 ld.infringe.one.or.more.identifi
6b000 61 62 6c 65 20 70 61 74 65 6e 74 73 20 69 6e 20 74 68 61 74 0a 63 6f 75 6e 74 72 79 20 74 68 61 able.patents.in.that.country.tha
6b020 74 20 79 6f 75 20 68 61 76 65 20 72 65 61 73 6f 6e 20 74 6f 20 62 65 6c 69 65 76 65 20 61 72 65 t.you.have.reason.to.believe.are
6b040 20 76 61 6c 69 64 2e 0a 0a 20 20 49 66 2c 20 70 75 72 73 75 61 6e 74 20 74 6f 20 6f 72 20 69 6e .valid.....If,.pursuant.to.or.in
6b060 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 77 69 74 68 20 61 20 73 69 6e 67 6c 65 20 74 72 61 6e 73 61 .connection.with.a.single.transa
6b080 63 74 69 6f 6e 20 6f 72 0a 61 72 72 61 6e 67 65 6d 65 6e 74 2c 20 79 6f 75 20 63 6f 6e 76 65 79 ction.or.arrangement,.you.convey
6b0a0 2c 20 6f 72 20 70 72 6f 70 61 67 61 74 65 20 62 79 20 70 72 6f 63 75 72 69 6e 67 20 63 6f 6e 76 ,.or.propagate.by.procuring.conv
6b0c0 65 79 61 6e 63 65 20 6f 66 2c 20 61 0a 63 6f 76 65 72 65 64 20 77 6f 72 6b 2c 20 61 6e 64 20 67 eyance.of,.a.covered.work,.and.g
6b0e0 72 61 6e 74 20 61 20 70 61 74 65 6e 74 20 6c 69 63 65 6e 73 65 20 74 6f 20 73 6f 6d 65 20 6f 66 rant.a.patent.license.to.some.of
6b100 20 74 68 65 20 70 61 72 74 69 65 73 0a 72 65 63 65 69 76 69 6e 67 20 74 68 65 20 63 6f 76 65 72 .the.parties.receiving.the.cover
6b120 65 64 20 77 6f 72 6b 20 61 75 74 68 6f 72 69 7a 69 6e 67 20 74 68 65 6d 20 74 6f 20 75 73 65 2c ed.work.authorizing.them.to.use,
6b140 20 70 72 6f 70 61 67 61 74 65 2c 20 6d 6f 64 69 66 79 0a 6f 72 20 63 6f 6e 76 65 79 20 61 20 73 .propagate,.modify.or.convey.a.s
6b160 70 65 63 69 66 69 63 20 63 6f 70 79 20 6f 66 20 74 68 65 20 63 6f 76 65 72 65 64 20 77 6f 72 6b pecific.copy.of.the.covered.work
6b180 2c 20 74 68 65 6e 20 74 68 65 20 70 61 74 65 6e 74 20 6c 69 63 65 6e 73 65 0a 79 6f 75 20 67 72 ,.then.the.patent.license.you.gr
6b1a0 61 6e 74 20 69 73 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 65 78 74 65 6e 64 65 64 20 74 6f ant.is.automatically.extended.to
6b1c0 20 61 6c 6c 20 72 65 63 69 70 69 65 6e 74 73 20 6f 66 20 74 68 65 20 63 6f 76 65 72 65 64 0a 77 .all.recipients.of.the.covered.w
6b1e0 6f 72 6b 20 61 6e 64 20 77 6f 72 6b 73 20 62 61 73 65 64 20 6f 6e 20 69 74 2e 0a 0a 20 20 41 20 ork.and.works.based.on.it.....A.
6b200 70 61 74 65 6e 74 20 6c 69 63 65 6e 73 65 20 69 73 20 22 64 69 73 63 72 69 6d 69 6e 61 74 6f 72 patent.license.is."discriminator
6b220 79 22 20 69 66 20 69 74 20 64 6f 65 73 20 6e 6f 74 20 69 6e 63 6c 75 64 65 20 77 69 74 68 69 6e y".if.it.does.not.include.within
6b240 0a 74 68 65 20 73 63 6f 70 65 20 6f 66 20 69 74 73 20 63 6f 76 65 72 61 67 65 2c 20 70 72 6f 68 .the.scope.of.its.coverage,.proh
6b260 69 62 69 74 73 20 74 68 65 20 65 78 65 72 63 69 73 65 20 6f 66 2c 20 6f 72 20 69 73 0a 63 6f 6e ibits.the.exercise.of,.or.is.con
6b280 64 69 74 69 6f 6e 65 64 20 6f 6e 20 74 68 65 20 6e 6f 6e 2d 65 78 65 72 63 69 73 65 20 6f 66 20 ditioned.on.the.non-exercise.of.
6b2a0 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 6f 66 20 74 68 65 20 72 69 67 68 74 73 20 74 68 61 74 20 61 one.or.more.of.the.rights.that.a
6b2c0 72 65 0a 73 70 65 63 69 66 69 63 61 6c 6c 79 20 67 72 61 6e 74 65 64 20 75 6e 64 65 72 20 74 68 re.specifically.granted.under.th
6b2e0 69 73 20 4c 69 63 65 6e 73 65 2e 20 20 59 6f 75 20 6d 61 79 20 6e 6f 74 20 63 6f 6e 76 65 79 20 is.License...You.may.not.convey.
6b300 61 20 63 6f 76 65 72 65 64 0a 77 6f 72 6b 20 69 66 20 79 6f 75 20 61 72 65 20 61 20 70 61 72 74 a.covered.work.if.you.are.a.part
6b320 79 20 74 6f 20 61 6e 20 61 72 72 61 6e 67 65 6d 65 6e 74 20 77 69 74 68 20 61 20 74 68 69 72 64 y.to.an.arrangement.with.a.third
6b340 20 70 61 72 74 79 20 74 68 61 74 20 69 73 0a 69 6e 20 74 68 65 20 62 75 73 69 6e 65 73 73 20 6f .party.that.is.in.the.business.o
6b360 66 20 64 69 73 74 72 69 62 75 74 69 6e 67 20 73 6f 66 74 77 61 72 65 2c 20 75 6e 64 65 72 20 77 f.distributing.software,.under.w
6b380 68 69 63 68 20 79 6f 75 20 6d 61 6b 65 20 70 61 79 6d 65 6e 74 0a 74 6f 20 74 68 65 20 74 68 69 hich.you.make.payment.to.the.thi
6b3a0 72 64 20 70 61 72 74 79 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20 65 78 74 65 6e 74 20 6f 66 20 rd.party.based.on.the.extent.of.
6b3c0 79 6f 75 72 20 61 63 74 69 76 69 74 79 20 6f 66 20 63 6f 6e 76 65 79 69 6e 67 0a 74 68 65 20 77 your.activity.of.conveying.the.w
6b3e0 6f 72 6b 2c 20 61 6e 64 20 75 6e 64 65 72 20 77 68 69 63 68 20 74 68 65 20 74 68 69 72 64 20 70 ork,.and.under.which.the.third.p
6b400 61 72 74 79 20 67 72 61 6e 74 73 2c 20 74 6f 20 61 6e 79 20 6f 66 20 74 68 65 0a 70 61 72 74 69 arty.grants,.to.any.of.the.parti
6b420 65 73 20 77 68 6f 20 77 6f 75 6c 64 20 72 65 63 65 69 76 65 20 74 68 65 20 63 6f 76 65 72 65 64 es.who.would.receive.the.covered
6b440 20 77 6f 72 6b 20 66 72 6f 6d 20 79 6f 75 2c 20 61 20 64 69 73 63 72 69 6d 69 6e 61 74 6f 72 79 .work.from.you,.a.discriminatory
6b460 0a 70 61 74 65 6e 74 20 6c 69 63 65 6e 73 65 20 28 61 29 20 69 6e 20 63 6f 6e 6e 65 63 74 69 6f .patent.license.(a).in.connectio
6b480 6e 20 77 69 74 68 20 63 6f 70 69 65 73 20 6f 66 20 74 68 65 20 63 6f 76 65 72 65 64 20 77 6f 72 n.with.copies.of.the.covered.wor
6b4a0 6b 0a 63 6f 6e 76 65 79 65 64 20 62 79 20 79 6f 75 20 28 6f 72 20 63 6f 70 69 65 73 20 6d 61 64 k.conveyed.by.you.(or.copies.mad
6b4c0 65 20 66 72 6f 6d 20 74 68 6f 73 65 20 63 6f 70 69 65 73 29 2c 20 6f 72 20 28 62 29 20 70 72 69 e.from.those.copies),.or.(b).pri
6b4e0 6d 61 72 69 6c 79 0a 66 6f 72 20 61 6e 64 20 69 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 77 69 74 marily.for.and.in.connection.wit
6b500 68 20 73 70 65 63 69 66 69 63 20 70 72 6f 64 75 63 74 73 20 6f 72 20 63 6f 6d 70 69 6c 61 74 69 h.specific.products.or.compilati
6b520 6f 6e 73 20 74 68 61 74 0a 63 6f 6e 74 61 69 6e 20 74 68 65 20 63 6f 76 65 72 65 64 20 77 6f 72 ons.that.contain.the.covered.wor
6b540 6b 2c 20 75 6e 6c 65 73 73 20 79 6f 75 20 65 6e 74 65 72 65 64 20 69 6e 74 6f 20 74 68 61 74 20 k,.unless.you.entered.into.that.
6b560 61 72 72 61 6e 67 65 6d 65 6e 74 2c 0a 6f 72 20 74 68 61 74 20 70 61 74 65 6e 74 20 6c 69 63 65 arrangement,.or.that.patent.lice
6b580 6e 73 65 20 77 61 73 20 67 72 61 6e 74 65 64 2c 20 70 72 69 6f 72 20 74 6f 20 32 38 20 4d 61 72 nse.was.granted,.prior.to.28.Mar
6b5a0 63 68 20 32 30 30 37 2e 0a 0a 20 20 4e 6f 74 68 69 6e 67 20 69 6e 20 74 68 69 73 20 4c 69 63 65 ch.2007.....Nothing.in.this.Lice
6b5c0 6e 73 65 20 73 68 61 6c 6c 20 62 65 20 63 6f 6e 73 74 72 75 65 64 20 61 73 20 65 78 63 6c 75 64 nse.shall.be.construed.as.exclud
6b5e0 69 6e 67 20 6f 72 20 6c 69 6d 69 74 69 6e 67 0a 61 6e 79 20 69 6d 70 6c 69 65 64 20 6c 69 63 65 ing.or.limiting.any.implied.lice
6b600 6e 73 65 20 6f 72 20 6f 74 68 65 72 20 64 65 66 65 6e 73 65 73 20 74 6f 20 69 6e 66 72 69 6e 67 nse.or.other.defenses.to.infring
6b620 65 6d 65 6e 74 20 74 68 61 74 20 6d 61 79 0a 6f 74 68 65 72 77 69 73 65 20 62 65 20 61 76 61 69 ement.that.may.otherwise.be.avai
6b640 6c 61 62 6c 65 20 74 6f 20 79 6f 75 20 75 6e 64 65 72 20 61 70 70 6c 69 63 61 62 6c 65 20 70 61 lable.to.you.under.applicable.pa
6b660 74 65 6e 74 20 6c 61 77 2e 0a 0a 20 20 31 32 2e 20 4e 6f 20 53 75 72 72 65 6e 64 65 72 20 6f 66 tent.law.....12..No.Surrender.of
6b680 20 4f 74 68 65 72 73 27 20 46 72 65 65 64 6f 6d 2e 0a 0a 20 20 49 66 20 63 6f 6e 64 69 74 69 6f .Others'.Freedom.....If.conditio
6b6a0 6e 73 20 61 72 65 20 69 6d 70 6f 73 65 64 20 6f 6e 20 79 6f 75 20 28 77 68 65 74 68 65 72 20 62 ns.are.imposed.on.you.(whether.b
6b6c0 79 20 63 6f 75 72 74 20 6f 72 64 65 72 2c 20 61 67 72 65 65 6d 65 6e 74 20 6f 72 0a 6f 74 68 65 y.court.order,.agreement.or.othe
6b6e0 72 77 69 73 65 29 20 74 68 61 74 20 63 6f 6e 74 72 61 64 69 63 74 20 74 68 65 20 63 6f 6e 64 69 rwise).that.contradict.the.condi
6b700 74 69 6f 6e 73 20 6f 66 20 74 68 69 73 20 4c 69 63 65 6e 73 65 2c 20 74 68 65 79 20 64 6f 20 6e tions.of.this.License,.they.do.n
6b720 6f 74 0a 65 78 63 75 73 65 20 79 6f 75 20 66 72 6f 6d 20 74 68 65 20 63 6f 6e 64 69 74 69 6f 6e ot.excuse.you.from.the.condition
6b740 73 20 6f 66 20 74 68 69 73 20 4c 69 63 65 6e 73 65 2e 20 20 49 66 20 79 6f 75 20 63 61 6e 6e 6f s.of.this.License...If.you.canno
6b760 74 20 63 6f 6e 76 65 79 20 61 0a 63 6f 76 65 72 65 64 20 77 6f 72 6b 20 73 6f 20 61 73 20 74 6f t.convey.a.covered.work.so.as.to
6b780 20 73 61 74 69 73 66 79 20 73 69 6d 75 6c 74 61 6e 65 6f 75 73 6c 79 20 79 6f 75 72 20 6f 62 6c .satisfy.simultaneously.your.obl
6b7a0 69 67 61 74 69 6f 6e 73 20 75 6e 64 65 72 20 74 68 69 73 0a 4c 69 63 65 6e 73 65 20 61 6e 64 20 igations.under.this.License.and.
6b7c0 61 6e 79 20 6f 74 68 65 72 20 70 65 72 74 69 6e 65 6e 74 20 6f 62 6c 69 67 61 74 69 6f 6e 73 2c any.other.pertinent.obligations,
6b7e0 20 74 68 65 6e 20 61 73 20 61 20 63 6f 6e 73 65 71 75 65 6e 63 65 20 79 6f 75 20 6d 61 79 0a 6e .then.as.a.consequence.you.may.n
6b800 6f 74 20 63 6f 6e 76 65 79 20 69 74 20 61 74 20 61 6c 6c 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c ot.convey.it.at.all...For.exampl
6b820 65 2c 20 69 66 20 79 6f 75 20 61 67 72 65 65 20 74 6f 20 74 65 72 6d 73 20 74 68 61 74 20 6f 62 e,.if.you.agree.to.terms.that.ob
6b840 6c 69 67 61 74 65 20 79 6f 75 0a 74 6f 20 63 6f 6c 6c 65 63 74 20 61 20 72 6f 79 61 6c 74 79 20 ligate.you.to.collect.a.royalty.
6b860 66 6f 72 20 66 75 72 74 68 65 72 20 63 6f 6e 76 65 79 69 6e 67 20 66 72 6f 6d 20 74 68 6f 73 65 for.further.conveying.from.those
6b880 20 74 6f 20 77 68 6f 6d 20 79 6f 75 20 63 6f 6e 76 65 79 0a 74 68 65 20 50 72 6f 67 72 61 6d 2c .to.whom.you.convey.the.Program,
6b8a0 20 74 68 65 20 6f 6e 6c 79 20 77 61 79 20 79 6f 75 20 63 6f 75 6c 64 20 73 61 74 69 73 66 79 20 .the.only.way.you.could.satisfy.
6b8c0 62 6f 74 68 20 74 68 6f 73 65 20 74 65 72 6d 73 20 61 6e 64 20 74 68 69 73 0a 4c 69 63 65 6e 73 both.those.terms.and.this.Licens
6b8e0 65 20 77 6f 75 6c 64 20 62 65 20 74 6f 20 72 65 66 72 61 69 6e 20 65 6e 74 69 72 65 6c 79 20 66 e.would.be.to.refrain.entirely.f
6b900 72 6f 6d 20 63 6f 6e 76 65 79 69 6e 67 20 74 68 65 20 50 72 6f 67 72 61 6d 2e 0a 0a 20 20 31 33 rom.conveying.the.Program.....13
6b920 2e 20 55 73 65 20 77 69 74 68 20 74 68 65 20 47 4e 55 20 41 66 66 65 72 6f 20 47 65 6e 65 72 61 ..Use.with.the.GNU.Affero.Genera
6b940 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 2e 0a 0a 20 20 4e 6f 74 77 69 74 68 73 74 61 6e l.Public.License.....Notwithstan
6b960 64 69 6e 67 20 61 6e 79 20 6f 74 68 65 72 20 70 72 6f 76 69 73 69 6f 6e 20 6f 66 20 74 68 69 73 ding.any.other.provision.of.this
6b980 20 4c 69 63 65 6e 73 65 2c 20 79 6f 75 20 68 61 76 65 0a 70 65 72 6d 69 73 73 69 6f 6e 20 74 6f .License,.you.have.permission.to
6b9a0 20 6c 69 6e 6b 20 6f 72 20 63 6f 6d 62 69 6e 65 20 61 6e 79 20 63 6f 76 65 72 65 64 20 77 6f 72 .link.or.combine.any.covered.wor
6b9c0 6b 20 77 69 74 68 20 61 20 77 6f 72 6b 20 6c 69 63 65 6e 73 65 64 0a 75 6e 64 65 72 20 76 65 72 k.with.a.work.licensed.under.ver
6b9e0 73 69 6f 6e 20 33 20 6f 66 20 74 68 65 20 47 4e 55 20 41 66 66 65 72 6f 20 47 65 6e 65 72 61 6c sion.3.of.the.GNU.Affero.General
6ba00 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 69 6e 74 6f 20 61 20 73 69 6e 67 6c 65 0a 63 6f .Public.License.into.a.single.co
6ba20 6d 62 69 6e 65 64 20 77 6f 72 6b 2c 20 61 6e 64 20 74 6f 20 63 6f 6e 76 65 79 20 74 68 65 20 72 mbined.work,.and.to.convey.the.r
6ba40 65 73 75 6c 74 69 6e 67 20 77 6f 72 6b 2e 20 20 54 68 65 20 74 65 72 6d 73 20 6f 66 20 74 68 69 esulting.work...The.terms.of.thi
6ba60 73 0a 4c 69 63 65 6e 73 65 20 77 69 6c 6c 20 63 6f 6e 74 69 6e 75 65 20 74 6f 20 61 70 70 6c 79 s.License.will.continue.to.apply
6ba80 20 74 6f 20 74 68 65 20 70 61 72 74 20 77 68 69 63 68 20 69 73 20 74 68 65 20 63 6f 76 65 72 65 .to.the.part.which.is.the.covere
6baa0 64 20 77 6f 72 6b 2c 0a 62 75 74 20 74 68 65 20 73 70 65 63 69 61 6c 20 72 65 71 75 69 72 65 6d d.work,.but.the.special.requirem
6bac0 65 6e 74 73 20 6f 66 20 74 68 65 20 47 4e 55 20 41 66 66 65 72 6f 20 47 65 6e 65 72 61 6c 20 50 ents.of.the.GNU.Affero.General.P
6bae0 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 2c 0a 73 65 63 74 69 6f 6e 20 31 33 2c 20 63 6f 6e 63 65 ublic.License,.section.13,.conce
6bb00 72 6e 69 6e 67 20 69 6e 74 65 72 61 63 74 69 6f 6e 20 74 68 72 6f 75 67 68 20 61 20 6e 65 74 77 rning.interaction.through.a.netw
6bb20 6f 72 6b 20 77 69 6c 6c 20 61 70 70 6c 79 20 74 6f 20 74 68 65 0a 63 6f 6d 62 69 6e 61 74 69 6f ork.will.apply.to.the.combinatio
6bb40 6e 20 61 73 20 73 75 63 68 2e 0a 0a 20 20 31 34 2e 20 52 65 76 69 73 65 64 20 56 65 72 73 69 6f n.as.such.....14..Revised.Versio
6bb60 6e 73 20 6f 66 20 74 68 69 73 20 4c 69 63 65 6e 73 65 2e 0a 0a 20 20 54 68 65 20 46 72 65 65 20 ns.of.this.License.....The.Free.
6bb80 53 6f 66 74 77 61 72 65 20 46 6f 75 6e 64 61 74 69 6f 6e 20 6d 61 79 20 70 75 62 6c 69 73 68 20 Software.Foundation.may.publish.
6bba0 72 65 76 69 73 65 64 20 61 6e 64 2f 6f 72 20 6e 65 77 20 76 65 72 73 69 6f 6e 73 20 6f 66 0a 74 revised.and/or.new.versions.of.t
6bbc0 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 20 66 72 he.GNU.General.Public.License.fr
6bbe0 6f 6d 20 74 69 6d 65 20 74 6f 20 74 69 6d 65 2e 20 20 53 75 63 68 20 6e 65 77 20 76 65 72 73 69 om.time.to.time...Such.new.versi
6bc00 6f 6e 73 20 77 69 6c 6c 0a 62 65 20 73 69 6d 69 6c 61 72 20 69 6e 20 73 70 69 72 69 74 20 74 6f ons.will.be.similar.in.spirit.to
6bc20 20 74 68 65 20 70 72 65 73 65 6e 74 20 76 65 72 73 69 6f 6e 2c 20 62 75 74 20 6d 61 79 20 64 69 .the.present.version,.but.may.di
6bc40 66 66 65 72 20 69 6e 20 64 65 74 61 69 6c 20 74 6f 0a 61 64 64 72 65 73 73 20 6e 65 77 20 70 72 ffer.in.detail.to.address.new.pr
6bc60 6f 62 6c 65 6d 73 20 6f 72 20 63 6f 6e 63 65 72 6e 73 2e 0a 0a 20 20 45 61 63 68 20 76 65 72 73 oblems.or.concerns.....Each.vers
6bc80 69 6f 6e 20 69 73 20 67 69 76 65 6e 20 61 20 64 69 73 74 69 6e 67 75 69 73 68 69 6e 67 20 76 65 ion.is.given.a.distinguishing.ve
6bca0 72 73 69 6f 6e 20 6e 75 6d 62 65 72 2e 20 20 49 66 20 74 68 65 0a 50 72 6f 67 72 61 6d 20 73 70 rsion.number...If.the.Program.sp
6bcc0 65 63 69 66 69 65 73 20 74 68 61 74 20 61 20 63 65 72 74 61 69 6e 20 6e 75 6d 62 65 72 65 64 20 ecifies.that.a.certain.numbered.
6bce0 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 0a 50 75 62 6c 69 version.of.the.GNU.General.Publi
6bd00 63 20 4c 69 63 65 6e 73 65 20 22 6f 72 20 61 6e 79 20 6c 61 74 65 72 20 76 65 72 73 69 6f 6e 22 c.License."or.any.later.version"
6bd20 20 61 70 70 6c 69 65 73 20 74 6f 20 69 74 2c 20 79 6f 75 20 68 61 76 65 20 74 68 65 0a 6f 70 74 .applies.to.it,.you.have.the.opt
6bd40 69 6f 6e 20 6f 66 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 68 65 20 74 65 72 6d 73 20 61 6e 64 20 63 ion.of.following.the.terms.and.c
6bd60 6f 6e 64 69 74 69 6f 6e 73 20 65 69 74 68 65 72 20 6f 66 20 74 68 61 74 20 6e 75 6d 62 65 72 65 onditions.either.of.that.numbere
6bd80 64 0a 76 65 72 73 69 6f 6e 20 6f 72 20 6f 66 20 61 6e 79 20 6c 61 74 65 72 20 76 65 72 73 69 6f d.version.or.of.any.later.versio
6bda0 6e 20 70 75 62 6c 69 73 68 65 64 20 62 79 20 74 68 65 20 46 72 65 65 20 53 6f 66 74 77 61 72 65 n.published.by.the.Free.Software
6bdc0 0a 46 6f 75 6e 64 61 74 69 6f 6e 2e 20 20 49 66 20 74 68 65 20 50 72 6f 67 72 61 6d 20 64 6f 65 .Foundation...If.the.Program.doe
6bde0 73 20 6e 6f 74 20 73 70 65 63 69 66 79 20 61 20 76 65 72 73 69 6f 6e 20 6e 75 6d 62 65 72 20 6f s.not.specify.a.version.number.o
6be00 66 20 74 68 65 0a 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 f.the.GNU.General.Public.License
6be20 2c 20 79 6f 75 20 6d 61 79 20 63 68 6f 6f 73 65 20 61 6e 79 20 76 65 72 73 69 6f 6e 20 65 76 65 ,.you.may.choose.any.version.eve
6be40 72 20 70 75 62 6c 69 73 68 65 64 0a 62 79 20 74 68 65 20 46 72 65 65 20 53 6f 66 74 77 61 72 65 r.published.by.the.Free.Software
6be60 20 46 6f 75 6e 64 61 74 69 6f 6e 2e 0a 0a 20 20 49 66 20 74 68 65 20 50 72 6f 67 72 61 6d 20 73 .Foundation.....If.the.Program.s
6be80 70 65 63 69 66 69 65 73 20 74 68 61 74 20 61 20 70 72 6f 78 79 20 63 61 6e 20 64 65 63 69 64 65 pecifies.that.a.proxy.can.decide
6bea0 20 77 68 69 63 68 20 66 75 74 75 72 65 0a 76 65 72 73 69 6f 6e 73 20 6f 66 20 74 68 65 20 47 4e .which.future.versions.of.the.GN
6bec0 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 63 61 6e 20 62 65 20 U.General.Public.License.can.be.
6bee0 75 73 65 64 2c 20 74 68 61 74 20 70 72 6f 78 79 27 73 0a 70 75 62 6c 69 63 20 73 74 61 74 65 6d used,.that.proxy's.public.statem
6bf00 65 6e 74 20 6f 66 20 61 63 63 65 70 74 61 6e 63 65 20 6f 66 20 61 20 76 65 72 73 69 6f 6e 20 70 ent.of.acceptance.of.a.version.p
6bf20 65 72 6d 61 6e 65 6e 74 6c 79 20 61 75 74 68 6f 72 69 7a 65 73 20 79 6f 75 0a 74 6f 20 63 68 6f ermanently.authorizes.you.to.cho
6bf40 6f 73 65 20 74 68 61 74 20 76 65 72 73 69 6f 6e 20 66 6f 72 20 74 68 65 20 50 72 6f 67 72 61 6d ose.that.version.for.the.Program
6bf60 2e 0a 0a 20 20 4c 61 74 65 72 20 6c 69 63 65 6e 73 65 20 76 65 72 73 69 6f 6e 73 20 6d 61 79 20 .....Later.license.versions.may.
6bf80 67 69 76 65 20 79 6f 75 20 61 64 64 69 74 69 6f 6e 61 6c 20 6f 72 20 64 69 66 66 65 72 65 6e 74 give.you.additional.or.different
6bfa0 0a 70 65 72 6d 69 73 73 69 6f 6e 73 2e 20 20 48 6f 77 65 76 65 72 2c 20 6e 6f 20 61 64 64 69 74 .permissions...However,.no.addit
6bfc0 69 6f 6e 61 6c 20 6f 62 6c 69 67 61 74 69 6f 6e 73 20 61 72 65 20 69 6d 70 6f 73 65 64 20 6f 6e ional.obligations.are.imposed.on
6bfe0 20 61 6e 79 0a 61 75 74 68 6f 72 20 6f 72 20 63 6f 70 79 72 69 67 68 74 20 68 6f 6c 64 65 72 20 .any.author.or.copyright.holder.
6c000 61 73 20 61 20 72 65 73 75 6c 74 20 6f 66 20 79 6f 75 72 20 63 68 6f 6f 73 69 6e 67 20 74 6f 20 as.a.result.of.your.choosing.to.
6c020 66 6f 6c 6c 6f 77 20 61 0a 6c 61 74 65 72 20 76 65 72 73 69 6f 6e 2e 0a 0a 20 20 31 35 2e 20 44 follow.a.later.version.....15..D
6c040 69 73 63 6c 61 69 6d 65 72 20 6f 66 20 57 61 72 72 61 6e 74 79 2e 0a 0a 20 20 54 48 45 52 45 20 isclaimer.of.Warranty.....THERE.
6c060 49 53 20 4e 4f 20 57 41 52 52 41 4e 54 59 20 46 4f 52 20 54 48 45 20 50 52 4f 47 52 41 4d 2c 20 IS.NO.WARRANTY.FOR.THE.PROGRAM,.
6c080 54 4f 20 54 48 45 20 45 58 54 45 4e 54 20 50 45 52 4d 49 54 54 45 44 20 42 59 0a 41 50 50 4c 49 TO.THE.EXTENT.PERMITTED.BY.APPLI
6c0a0 43 41 42 4c 45 20 4c 41 57 2e 20 20 45 58 43 45 50 54 20 57 48 45 4e 20 4f 54 48 45 52 57 49 53 CABLE.LAW...EXCEPT.WHEN.OTHERWIS
6c0c0 45 20 53 54 41 54 45 44 20 49 4e 20 57 52 49 54 49 4e 47 20 54 48 45 20 43 4f 50 59 52 49 47 48 E.STATED.IN.WRITING.THE.COPYRIGH
6c0e0 54 0a 48 4f 4c 44 45 52 53 20 41 4e 44 2f 4f 52 20 4f 54 48 45 52 20 50 41 52 54 49 45 53 20 50 T.HOLDERS.AND/OR.OTHER.PARTIES.P
6c100 52 4f 56 49 44 45 20 54 48 45 20 50 52 4f 47 52 41 4d 20 22 41 53 20 49 53 22 20 57 49 54 48 4f ROVIDE.THE.PROGRAM."AS.IS".WITHO
6c120 55 54 20 57 41 52 52 41 4e 54 59 0a 4f 46 20 41 4e 59 20 4b 49 4e 44 2c 20 45 49 54 48 45 52 20 UT.WARRANTY.OF.ANY.KIND,.EITHER.
6c140 45 58 50 52 45 53 53 45 44 20 4f 52 20 49 4d 50 4c 49 45 44 2c 20 49 4e 43 4c 55 44 49 4e 47 2c EXPRESSED.OR.IMPLIED,.INCLUDING,
6c160 20 42 55 54 20 4e 4f 54 20 4c 49 4d 49 54 45 44 20 54 4f 2c 0a 54 48 45 20 49 4d 50 4c 49 45 44 .BUT.NOT.LIMITED.TO,.THE.IMPLIED
6c180 20 57 41 52 52 41 4e 54 49 45 53 20 4f 46 20 4d 45 52 43 48 41 4e 54 41 42 49 4c 49 54 59 20 41 .WARRANTIES.OF.MERCHANTABILITY.A
6c1a0 4e 44 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 0a 50 55 52 50 ND.FITNESS.FOR.A.PARTICULAR.PURP
6c1c0 4f 53 45 2e 20 20 54 48 45 20 45 4e 54 49 52 45 20 52 49 53 4b 20 41 53 20 54 4f 20 54 48 45 20 OSE...THE.ENTIRE.RISK.AS.TO.THE.
6c1e0 51 55 41 4c 49 54 59 20 41 4e 44 20 50 45 52 46 4f 52 4d 41 4e 43 45 20 4f 46 20 54 48 45 20 50 QUALITY.AND.PERFORMANCE.OF.THE.P
6c200 52 4f 47 52 41 4d 0a 49 53 20 57 49 54 48 20 59 4f 55 2e 20 20 53 48 4f 55 4c 44 20 54 48 45 20 ROGRAM.IS.WITH.YOU...SHOULD.THE.
6c220 50 52 4f 47 52 41 4d 20 50 52 4f 56 45 20 44 45 46 45 43 54 49 56 45 2c 20 59 4f 55 20 41 53 53 PROGRAM.PROVE.DEFECTIVE,.YOU.ASS
6c240 55 4d 45 20 54 48 45 20 43 4f 53 54 20 4f 46 0a 41 4c 4c 20 4e 45 43 45 53 53 41 52 59 20 53 45 UME.THE.COST.OF.ALL.NECESSARY.SE
6c260 52 56 49 43 49 4e 47 2c 20 52 45 50 41 49 52 20 4f 52 20 43 4f 52 52 45 43 54 49 4f 4e 2e 0a 0a RVICING,.REPAIR.OR.CORRECTION...
6c280 20 20 31 36 2e 20 4c 69 6d 69 74 61 74 69 6f 6e 20 6f 66 20 4c 69 61 62 69 6c 69 74 79 2e 0a 0a ..16..Limitation.of.Liability...
6c2a0 20 20 49 4e 20 4e 4f 20 45 56 45 4e 54 20 55 4e 4c 45 53 53 20 52 45 51 55 49 52 45 44 20 42 59 ..IN.NO.EVENT.UNLESS.REQUIRED.BY
6c2c0 20 41 50 50 4c 49 43 41 42 4c 45 20 4c 41 57 20 4f 52 20 41 47 52 45 45 44 20 54 4f 20 49 4e 20 .APPLICABLE.LAW.OR.AGREED.TO.IN.
6c2e0 57 52 49 54 49 4e 47 0a 57 49 4c 4c 20 41 4e 59 20 43 4f 50 59 52 49 47 48 54 20 48 4f 4c 44 45 WRITING.WILL.ANY.COPYRIGHT.HOLDE
6c300 52 2c 20 4f 52 20 41 4e 59 20 4f 54 48 45 52 20 50 41 52 54 59 20 57 48 4f 20 4d 4f 44 49 46 49 R,.OR.ANY.OTHER.PARTY.WHO.MODIFI
6c320 45 53 20 41 4e 44 2f 4f 52 20 43 4f 4e 56 45 59 53 0a 54 48 45 20 50 52 4f 47 52 41 4d 20 41 53 ES.AND/OR.CONVEYS.THE.PROGRAM.AS
6c340 20 50 45 52 4d 49 54 54 45 44 20 41 42 4f 56 45 2c 20 42 45 20 4c 49 41 42 4c 45 20 54 4f 20 59 .PERMITTED.ABOVE,.BE.LIABLE.TO.Y
6c360 4f 55 20 46 4f 52 20 44 41 4d 41 47 45 53 2c 20 49 4e 43 4c 55 44 49 4e 47 20 41 4e 59 0a 47 45 OU.FOR.DAMAGES,.INCLUDING.ANY.GE
6c380 4e 45 52 41 4c 2c 20 53 50 45 43 49 41 4c 2c 20 49 4e 43 49 44 45 4e 54 41 4c 20 4f 52 20 43 4f NERAL,.SPECIAL,.INCIDENTAL.OR.CO
6c3a0 4e 53 45 51 55 45 4e 54 49 41 4c 20 44 41 4d 41 47 45 53 20 41 52 49 53 49 4e 47 20 4f 55 54 20 NSEQUENTIAL.DAMAGES.ARISING.OUT.
6c3c0 4f 46 20 54 48 45 0a 55 53 45 20 4f 52 20 49 4e 41 42 49 4c 49 54 59 20 54 4f 20 55 53 45 20 54 OF.THE.USE.OR.INABILITY.TO.USE.T
6c3e0 48 45 20 50 52 4f 47 52 41 4d 20 28 49 4e 43 4c 55 44 49 4e 47 20 42 55 54 20 4e 4f 54 20 4c 49 HE.PROGRAM.(INCLUDING.BUT.NOT.LI
6c400 4d 49 54 45 44 20 54 4f 20 4c 4f 53 53 20 4f 46 0a 44 41 54 41 20 4f 52 20 44 41 54 41 20 42 45 MITED.TO.LOSS.OF.DATA.OR.DATA.BE
6c420 49 4e 47 20 52 45 4e 44 45 52 45 44 20 49 4e 41 43 43 55 52 41 54 45 20 4f 52 20 4c 4f 53 53 45 ING.RENDERED.INACCURATE.OR.LOSSE
6c440 53 20 53 55 53 54 41 49 4e 45 44 20 42 59 20 59 4f 55 20 4f 52 20 54 48 49 52 44 0a 50 41 52 54 S.SUSTAINED.BY.YOU.OR.THIRD.PART
6c460 49 45 53 20 4f 52 20 41 20 46 41 49 4c 55 52 45 20 4f 46 20 54 48 45 20 50 52 4f 47 52 41 4d 20 IES.OR.A.FAILURE.OF.THE.PROGRAM.
6c480 54 4f 20 4f 50 45 52 41 54 45 20 57 49 54 48 20 41 4e 59 20 4f 54 48 45 52 20 50 52 4f 47 52 41 TO.OPERATE.WITH.ANY.OTHER.PROGRA
6c4a0 4d 53 29 2c 0a 45 56 45 4e 20 49 46 20 53 55 43 48 20 48 4f 4c 44 45 52 20 4f 52 20 4f 54 48 45 MS),.EVEN.IF.SUCH.HOLDER.OR.OTHE
6c4c0 52 20 50 41 52 54 59 20 48 41 53 20 42 45 45 4e 20 41 44 56 49 53 45 44 20 4f 46 20 54 48 45 20 R.PARTY.HAS.BEEN.ADVISED.OF.THE.
6c4e0 50 4f 53 53 49 42 49 4c 49 54 59 20 4f 46 0a 53 55 43 48 20 44 41 4d 41 47 45 53 2e 0a 0a 20 20 POSSIBILITY.OF.SUCH.DAMAGES.....
6c500 31 37 2e 20 49 6e 74 65 72 70 72 65 74 61 74 69 6f 6e 20 6f 66 20 53 65 63 74 69 6f 6e 73 20 31 17..Interpretation.of.Sections.1
6c520 35 20 61 6e 64 20 31 36 2e 0a 0a 20 20 49 66 20 74 68 65 20 64 69 73 63 6c 61 69 6d 65 72 20 6f 5.and.16.....If.the.disclaimer.o
6c540 66 20 77 61 72 72 61 6e 74 79 20 61 6e 64 20 6c 69 6d 69 74 61 74 69 6f 6e 20 6f 66 20 6c 69 61 f.warranty.and.limitation.of.lia
6c560 62 69 6c 69 74 79 20 70 72 6f 76 69 64 65 64 0a 61 62 6f 76 65 20 63 61 6e 6e 6f 74 20 62 65 20 bility.provided.above.cannot.be.
6c580 67 69 76 65 6e 20 6c 6f 63 61 6c 20 6c 65 67 61 6c 20 65 66 66 65 63 74 20 61 63 63 6f 72 64 69 given.local.legal.effect.accordi
6c5a0 6e 67 20 74 6f 20 74 68 65 69 72 20 74 65 72 6d 73 2c 0a 72 65 76 69 65 77 69 6e 67 20 63 6f 75 ng.to.their.terms,.reviewing.cou
6c5c0 72 74 73 20 73 68 61 6c 6c 20 61 70 70 6c 79 20 6c 6f 63 61 6c 20 6c 61 77 20 74 68 61 74 20 6d rts.shall.apply.local.law.that.m
6c5e0 6f 73 74 20 63 6c 6f 73 65 6c 79 20 61 70 70 72 6f 78 69 6d 61 74 65 73 0a 61 6e 20 61 62 73 6f ost.closely.approximates.an.abso
6c600 6c 75 74 65 20 77 61 69 76 65 72 20 6f 66 20 61 6c 6c 20 63 69 76 69 6c 20 6c 69 61 62 69 6c 69 lute.waiver.of.all.civil.liabili
6c620 74 79 20 69 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 77 69 74 68 20 74 68 65 0a 50 72 6f 67 72 61 ty.in.connection.with.the.Progra
6c640 6d 2c 20 75 6e 6c 65 73 73 20 61 20 77 61 72 72 61 6e 74 79 20 6f 72 20 61 73 73 75 6d 70 74 69 m,.unless.a.warranty.or.assumpti
6c660 6f 6e 20 6f 66 20 6c 69 61 62 69 6c 69 74 79 20 61 63 63 6f 6d 70 61 6e 69 65 73 20 61 0a 63 6f on.of.liability.accompanies.a.co
6c680 70 79 20 6f 66 20 74 68 65 20 50 72 6f 67 72 61 6d 20 69 6e 20 72 65 74 75 72 6e 20 66 6f 72 20 py.of.the.Program.in.return.for.
6c6a0 61 20 66 65 65 2e 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 45 4e 44 a.fee........................END
6c6c0 20 4f 46 20 54 45 52 4d 53 20 41 4e 44 20 43 4f 4e 44 49 54 49 4f 4e 53 0a 0a 20 20 20 20 20 20 .OF.TERMS.AND.CONDITIONS........
6c6e0 20 20 20 20 20 20 48 6f 77 20 74 6f 20 41 70 70 6c 79 20 54 68 65 73 65 20 54 65 72 6d 73 20 74 ......How.to.Apply.These.Terms.t
6c700 6f 20 59 6f 75 72 20 4e 65 77 20 50 72 6f 67 72 61 6d 73 0a 0a 20 20 49 66 20 79 6f 75 20 64 65 o.Your.New.Programs....If.you.de
6c720 76 65 6c 6f 70 20 61 20 6e 65 77 20 70 72 6f 67 72 61 6d 2c 20 61 6e 64 20 79 6f 75 20 77 61 6e velop.a.new.program,.and.you.wan
6c740 74 20 69 74 20 74 6f 20 62 65 20 6f 66 20 74 68 65 20 67 72 65 61 74 65 73 74 0a 70 6f 73 73 69 t.it.to.be.of.the.greatest.possi
6c760 62 6c 65 20 75 73 65 20 74 6f 20 74 68 65 20 70 75 62 6c 69 63 2c 20 74 68 65 20 62 65 73 74 20 ble.use.to.the.public,.the.best.
6c780 77 61 79 20 74 6f 20 61 63 68 69 65 76 65 20 74 68 69 73 20 69 73 20 74 6f 20 6d 61 6b 65 20 69 way.to.achieve.this.is.to.make.i
6c7a0 74 0a 66 72 65 65 20 73 6f 66 74 77 61 72 65 20 77 68 69 63 68 20 65 76 65 72 79 6f 6e 65 20 63 t.free.software.which.everyone.c
6c7c0 61 6e 20 72 65 64 69 73 74 72 69 62 75 74 65 20 61 6e 64 20 63 68 61 6e 67 65 20 75 6e 64 65 72 an.redistribute.and.change.under
6c7e0 20 74 68 65 73 65 20 74 65 72 6d 73 2e 0a 0a 20 20 54 6f 20 64 6f 20 73 6f 2c 20 61 74 74 61 63 .these.terms.....To.do.so,.attac
6c800 68 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 6e 6f 74 69 63 65 73 20 74 6f 20 74 68 65 20 70 h.the.following.notices.to.the.p
6c820 72 6f 67 72 61 6d 2e 20 20 49 74 20 69 73 20 73 61 66 65 73 74 0a 74 6f 20 61 74 74 61 63 68 20 rogram...It.is.safest.to.attach.
6c840 74 68 65 6d 20 74 6f 20 74 68 65 20 73 74 61 72 74 20 6f 66 20 65 61 63 68 20 73 6f 75 72 63 65 them.to.the.start.of.each.source
6c860 20 66 69 6c 65 20 74 6f 20 6d 6f 73 74 20 65 66 66 65 63 74 69 76 65 6c 79 0a 73 74 61 74 65 20 .file.to.most.effectively.state.
6c880 74 68 65 20 65 78 63 6c 75 73 69 6f 6e 20 6f 66 20 77 61 72 72 61 6e 74 79 3b 20 61 6e 64 20 65 the.exclusion.of.warranty;.and.e
6c8a0 61 63 68 20 66 69 6c 65 20 73 68 6f 75 6c 64 20 68 61 76 65 20 61 74 20 6c 65 61 73 74 0a 74 68 ach.file.should.have.at.least.th
6c8c0 65 20 22 63 6f 70 79 72 69 67 68 74 22 20 6c 69 6e 65 20 61 6e 64 20 61 20 70 6f 69 6e 74 65 72 e."copyright".line.and.a.pointer
6c8e0 20 74 6f 20 77 68 65 72 65 20 74 68 65 20 66 75 6c 6c 20 6e 6f 74 69 63 65 20 69 73 20 66 6f 75 .to.where.the.full.notice.is.fou
6c900 6e 64 2e 0a 0a 20 20 20 20 7b 6f 6e 65 20 6c 69 6e 65 20 74 6f 20 67 69 76 65 20 74 68 65 20 70 nd.......{one.line.to.give.the.p
6c920 72 6f 67 72 61 6d 27 73 20 6e 61 6d 65 20 61 6e 64 20 61 20 62 72 69 65 66 20 69 64 65 61 20 6f rogram's.name.and.a.brief.idea.o
6c940 66 20 77 68 61 74 20 69 74 20 64 6f 65 73 2e 7d 0a 20 20 20 20 43 6f 70 79 72 69 67 68 74 20 28 f.what.it.does.}.....Copyright.(
6c960 43 29 20 7b 79 65 61 72 7d 20 20 7b 6e 61 6d 65 20 6f 66 20 61 75 74 68 6f 72 7d 0a 0a 20 20 20 C).{year}..{name.of.author}.....
6c980 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 77 61 72 65 3a 20 .This.program.is.free.software:.
6c9a0 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 64 2f 6f 72 20 6d you.can.redistribute.it.and/or.m
6c9c0 6f 64 69 66 79 0a 20 20 20 20 69 74 20 75 6e 64 65 72 20 74 68 65 20 74 65 72 6d 73 20 6f 66 20 odify.....it.under.the.terms.of.
6c9e0 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 20 61 the.GNU.General.Public.License.a
6ca00 73 20 70 75 62 6c 69 73 68 65 64 20 62 79 0a 20 20 20 20 74 68 65 20 46 72 65 65 20 53 6f 66 74 s.published.by.....the.Free.Soft
6ca20 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 69 6f 6e 20 ware.Foundation,.either.version.
6ca40 33 20 6f 66 20 74 68 65 20 4c 69 63 65 6e 73 65 2c 20 6f 72 0a 20 20 20 20 28 61 74 20 79 6f 75 3.of.the.License,.or.....(at.you
6ca60 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 0a 20 20 r.option).any.later.version.....
6ca80 20 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 69 6e ..This.program.is.distributed.in
6caa0 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 75 6c .the.hope.that.it.will.be.useful
6cac0 2c 0a 20 20 20 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 20 ,.....but.WITHOUT.ANY.WARRANTY;.
6cae0 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 74 without.even.the.implied.warrant
6cb00 79 20 6f 66 0a 20 20 20 20 4d 45 52 43 48 41 4e 54 41 42 49 4c 49 54 59 20 6f 72 20 46 49 54 4e y.of.....MERCHANTABILITY.or.FITN
6cb20 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
6cb40 65 65 20 74 68 65 0a 20 20 20 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 ee.the.....GNU.General.Public.Li
6cb60 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 20 20 20 20 59 6f 75 cense.for.more.details.......You
6cb80 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.
6cba0 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 20 the.GNU.General.Public.License..
6cbc0 20 20 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 ...along.with.this.program...If.
6cbe0 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 2f 6c 69 not,.see.<https://www.gnu.org/li
6cc00 63 65 6e 73 65 73 2f 3e 2e 0a 0a 41 6c 73 6f 20 61 64 64 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 censes/>...Also.add.information.
6cc20 6f 6e 20 68 6f 77 20 74 6f 20 63 6f 6e 74 61 63 74 20 79 6f 75 20 62 79 20 65 6c 65 63 74 72 6f on.how.to.contact.you.by.electro
6cc40 6e 69 63 20 61 6e 64 20 70 61 70 65 72 20 6d 61 69 6c 2e 0a 0a 20 20 49 66 20 74 68 65 20 70 72 nic.and.paper.mail.....If.the.pr
6cc60 6f 67 72 61 6d 20 64 6f 65 73 20 74 65 72 6d 69 6e 61 6c 20 69 6e 74 65 72 61 63 74 69 6f 6e 2c ogram.does.terminal.interaction,
6cc80 20 6d 61 6b 65 20 69 74 20 6f 75 74 70 75 74 20 61 20 73 68 6f 72 74 0a 6e 6f 74 69 63 65 20 6c .make.it.output.a.short.notice.l
6cca0 69 6b 65 20 74 68 69 73 20 77 68 65 6e 20 69 74 20 73 74 61 72 74 73 20 69 6e 20 61 6e 20 69 6e ike.this.when.it.starts.in.an.in
6ccc0 74 65 72 61 63 74 69 76 65 20 6d 6f 64 65 3a 0a 0a 20 20 20 20 7b 70 72 6f 6a 65 63 74 7d 20 20 teractive.mode:......{project}..
6cce0 43 6f 70 79 72 69 67 68 74 20 28 43 29 20 7b 79 65 61 72 7d 20 20 7b 66 75 6c 6c 6e 61 6d 65 7d Copyright.(C).{year}..{fullname}
6cd00 0a 20 20 20 20 54 68 69 73 20 70 72 6f 67 72 61 6d 20 63 6f 6d 65 73 20 77 69 74 68 20 41 42 53 .....This.program.comes.with.ABS
6cd20 4f 4c 55 54 45 4c 59 20 4e 4f 20 57 41 52 52 41 4e 54 59 3b 20 66 6f 72 20 64 65 74 61 69 6c 73 OLUTELY.NO.WARRANTY;.for.details
6cd40 20 74 79 70 65 20 60 73 68 6f 77 20 77 27 2e 0a 20 20 20 20 54 68 69 73 20 69 73 20 66 72 65 65 .type.`show.w'......This.is.free
6cd60 20 73 6f 66 74 77 61 72 65 2c 20 61 6e 64 20 79 6f 75 20 61 72 65 20 77 65 6c 63 6f 6d 65 20 74 .software,.and.you.are.welcome.t
6cd80 6f 20 72 65 64 69 73 74 72 69 62 75 74 65 20 69 74 0a 20 20 20 20 75 6e 64 65 72 20 63 65 72 74 o.redistribute.it.....under.cert
6cda0 61 69 6e 20 63 6f 6e 64 69 74 69 6f 6e 73 3b 20 74 79 70 65 20 60 73 68 6f 77 20 63 27 20 66 6f ain.conditions;.type.`show.c'.fo
6cdc0 72 20 64 65 74 61 69 6c 73 2e 0a 0a 54 68 65 20 68 79 70 6f 74 68 65 74 69 63 61 6c 20 63 6f 6d r.details...The.hypothetical.com
6cde0 6d 61 6e 64 73 20 60 73 68 6f 77 20 77 27 20 61 6e 64 20 60 73 68 6f 77 20 63 27 20 73 68 6f 75 mands.`show.w'.and.`show.c'.shou
6ce00 6c 64 20 73 68 6f 77 20 74 68 65 20 61 70 70 72 6f 70 72 69 61 74 65 0a 70 61 72 74 73 20 6f 66 ld.show.the.appropriate.parts.of
6ce20 20 74 68 65 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 2e 20 20 4f 66 .the.General.Public.License...Of
6ce40 20 63 6f 75 72 73 65 2c 20 79 6f 75 72 20 70 72 6f 67 72 61 6d 27 73 20 63 6f 6d 6d 61 6e 64 73 .course,.your.program's.commands
6ce60 0a 6d 69 67 68 74 20 62 65 20 64 69 66 66 65 72 65 6e 74 3b 20 66 6f 72 20 61 20 47 55 49 20 69 .might.be.different;.for.a.GUI.i
6ce80 6e 74 65 72 66 61 63 65 2c 20 79 6f 75 20 77 6f 75 6c 64 20 75 73 65 20 61 6e 20 22 61 62 6f 75 nterface,.you.would.use.an."abou
6cea0 74 20 62 6f 78 22 2e 0a 0a 20 20 59 6f 75 20 73 68 6f 75 6c 64 20 61 6c 73 6f 20 67 65 74 20 79 t.box".....You.should.also.get.y
6cec0 6f 75 72 20 65 6d 70 6c 6f 79 65 72 20 28 69 66 20 79 6f 75 20 77 6f 72 6b 20 61 73 20 61 20 70 our.employer.(if.you.work.as.a.p
6cee0 72 6f 67 72 61 6d 6d 65 72 29 20 6f 72 20 73 63 68 6f 6f 6c 2c 0a 69 66 20 61 6e 79 2c 20 74 6f rogrammer).or.school,.if.any,.to
6cf00 20 73 69 67 6e 20 61 20 22 63 6f 70 79 72 69 67 68 74 20 64 69 73 63 6c 61 69 6d 65 72 22 20 66 .sign.a."copyright.disclaimer".f
6cf20 6f 72 20 74 68 65 20 70 72 6f 67 72 61 6d 2c 20 69 66 20 6e 65 63 65 73 73 61 72 79 2e 0a 46 6f or.the.program,.if.necessary..Fo
6cf40 72 20 6d 6f 72 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 6f 6e 20 74 68 69 73 2c 20 61 6e 64 20 r.more.information.on.this,.and.
6cf60 68 6f 77 20 74 6f 20 61 70 70 6c 79 20 61 6e 64 20 66 6f 6c 6c 6f 77 20 74 68 65 20 47 4e 55 20 how.to.apply.and.follow.the.GNU.
6cf80 47 50 4c 2c 20 73 65 65 0a 3c 68 74 74 70 73 3a 2f 2f 77 77 77 2e 67 6e 75 2e 6f 72 67 2f 6c 69 GPL,.see.<https://www.gnu.org/li
6cfa0 63 65 6e 73 65 73 2f 3e 2e 0a 0a 20 20 54 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 censes/>.....The.GNU.General.Pub
6cfc0 6c 69 63 20 4c 69 63 65 6e 73 65 20 64 6f 65 73 20 6e 6f 74 20 70 65 72 6d 69 74 20 69 6e 63 6f lic.License.does.not.permit.inco
6cfe0 72 70 6f 72 61 74 69 6e 67 20 79 6f 75 72 20 70 72 6f 67 72 61 6d 0a 69 6e 74 6f 20 70 72 6f 70 rporating.your.program.into.prop
6d000 72 69 65 74 61 72 79 20 70 72 6f 67 72 61 6d 73 2e 20 20 49 66 20 79 6f 75 72 20 70 72 6f 67 72 rietary.programs...If.your.progr
6d020 61 6d 20 69 73 20 61 20 73 75 62 72 6f 75 74 69 6e 65 20 6c 69 62 72 61 72 79 2c 20 79 6f 75 0a am.is.a.subroutine.library,.you.
6d040 6d 61 79 20 63 6f 6e 73 69 64 65 72 20 69 74 20 6d 6f 72 65 20 75 73 65 66 75 6c 20 74 6f 20 70 may.consider.it.more.useful.to.p
6d060 65 72 6d 69 74 20 6c 69 6e 6b 69 6e 67 20 70 72 6f 70 72 69 65 74 61 72 79 20 61 70 70 6c 69 63 ermit.linking.proprietary.applic
6d080 61 74 69 6f 6e 73 20 77 69 74 68 0a 74 68 65 20 6c 69 62 72 61 72 79 2e 20 20 49 66 20 74 68 69 ations.with.the.library...If.thi
6d0a0 73 20 69 73 20 77 68 61 74 20 79 6f 75 20 77 61 6e 74 20 74 6f 20 64 6f 2c 20 75 73 65 20 74 68 s.is.what.you.want.to.do,.use.th
6d0c0 65 20 47 4e 55 20 4c 65 73 73 65 72 20 47 65 6e 65 72 61 6c 0a 50 75 62 6c 69 63 20 4c 69 63 65 e.GNU.Lesser.General.Public.Lice
6d0e0 6e 73 65 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 69 73 20 4c 69 63 65 6e 73 65 2e 20 20 42 75 nse.instead.of.this.License...Bu
6d100 74 20 66 69 72 73 74 2c 20 70 6c 65 61 73 65 20 72 65 61 64 0a 3c 68 74 74 70 73 3a 2f 2f 77 77 t.first,.please.read.<https://ww
6d120 77 2e 67 6e 75 2e 6f 72 67 2f 70 68 69 6c 6f 73 6f 70 68 79 2f 77 68 79 2d 6e 6f 74 2d 6c 67 70 w.gnu.org/philosophy/why-not-lgp
6d140 6c 2e 68 74 6d 6c 3e 2e 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 l.html>.........................
6d160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6d180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6d1a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6d1c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6d1e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6d200 67 70 74 65 6c 2d 30 2e 39 2e 39 2f 67 70 74 65 6c 2d 70 6b 67 2e 65 6c 00 00 00 00 00 00 00 00 gptel-0.9.9/gptel-pkg.el........
6d220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6d240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6d260 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
6d280 30 30 30 30 37 33 30 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 33 35 31 37 00 20 30 00 00 00 0000730.00000000000.013517..0...
6d2a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6d2c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6d2e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6d300 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...................
6d320 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...................
6d340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6d360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6d380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6d3a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6d3c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6d3e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6d400 3b 3b 20 47 65 6e 65 72 61 74 65 64 20 70 61 63 6b 61 67 65 20 64 65 73 63 72 69 70 74 69 6f 6e ;;.Generated.package.description
6d420 20 66 72 6f 6d 20 67 70 74 65 6c 2e 65 6c 20 20 2d 2a 2d 20 6e 6f 2d 62 79 74 65 2d 63 6f 6d 70 .from.gptel.el..-*-.no-byte-comp
6d440 69 6c 65 3a 20 74 20 2d 2a 2d 0a 28 64 65 66 69 6e 65 2d 70 61 63 6b 61 67 65 20 22 67 70 74 65 ile:.t.-*-.(define-package."gpte
6d460 6c 22 20 22 30 2e 39 2e 39 22 20 22 49 6e 74 65 72 61 63 74 20 77 69 74 68 20 43 68 61 74 47 50 l"."0.9.9"."Interact.with.ChatGP
6d480 54 20 6f 72 20 6f 74 68 65 72 20 4c 4c 4d 73 22 20 27 28 28 65 6d 61 63 73 20 22 32 37 2e 31 22 T.or.other.LLMs".'((emacs."27.1"
6d4a0 29 20 28 74 72 61 6e 73 69 65 6e 74 20 22 30 2e 37 2e 34 22 29 20 28 63 6f 6d 70 61 74 20 22 33 ).(transient."0.7.4").(compat."3
6d4c0 30 2e 31 2e 30 2e 30 22 29 29 20 3a 63 6f 6d 6d 69 74 20 22 38 31 36 31 38 66 32 34 65 32 31 39 0.1.0.0")).:commit."81618f24e219
6d4e0 30 35 36 38 65 61 37 34 35 64 63 61 38 32 62 61 35 30 32 36 37 65 65 64 33 32 31 61 22 20 3a 61 0568ea745dca82ba50267eed321a".:a
6d500 75 74 68 6f 72 73 20 27 28 28 22 4b 61 72 74 68 69 6b 20 43 68 69 6b 6d 61 67 61 6c 75 72 22 20 uthors.'(("Karthik.Chikmagalur".
6d520 2e 20 22 6b 61 72 74 68 69 6b 2e 63 68 69 6b 6d 61 67 61 6c 75 72 40 67 6d 61 69 6c 2e 63 6f 6d .."karthik.chikmagalur@gmail.com
6d540 22 29 29 20 3a 6d 61 69 6e 74 61 69 6e 65 72 20 27 28 22 4b 61 72 74 68 69 6b 20 43 68 69 6b 6d ")).:maintainer.'("Karthik.Chikm
6d560 61 67 61 6c 75 72 22 20 2e 20 22 6b 61 72 74 68 69 6b 2e 63 68 69 6b 6d 61 67 61 6c 75 72 40 67 agalur"..."karthik.chikmagalur@g
6d580 6d 61 69 6c 2e 63 6f 6d 22 29 20 3a 6b 65 79 77 6f 72 64 73 20 27 28 22 63 6f 6e 76 65 6e 69 65 mail.com").:keywords.'("convenie
6d5a0 6e 63 65 22 20 22 74 6f 6f 6c 73 22 29 20 3a 75 72 6c 20 22 68 74 74 70 73 3a 2f 2f 67 69 74 68 nce"."tools").:url."https://gith
6d5c0 75 62 2e 63 6f 6d 2f 6b 61 72 74 68 69 6e 6b 2f 67 70 74 65 6c 22 29 0a 00 00 00 00 00 00 00 00 ub.com/karthink/gptel").........
6d5e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6d600 67 70 74 65 6c 2d 30 2e 39 2e 39 2f 67 70 74 65 6c 2d 67 65 6d 69 6e 69 2e 65 6c 00 00 00 00 00 gptel-0.9.9/gptel-gemini.el.....
6d620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6d640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6d660 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
6d680 30 30 36 37 33 32 36 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 34 32 32 34 00 20 30 00 00 00 0067326.00000000000.014224..0...
6d6a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6d6c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6d6e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6d700 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...................
6d720 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...................
6d740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6d760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6d780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6d7a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6d7c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6d7e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6d800 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.
6d820 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-
6d840 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
6d860 29 20 32 30 32 33 2d 32 30 32 35 20 20 4b 61 72 74 68 69 6b 20 43 68 69 6b 6d 61 67 61 6c 75 72 ).2023-2025..Karthik.Chikmagalur
6d880 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
6d8a0 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 6f 6d 3e 0a .<karthikchikmagalur@gmail.com>.
6d8c0 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 77 61 72 .;;.This.program.is.free.softwar
6d8e0 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 64 2f 6f e;.you.can.redistribute.it.and/o
6d900 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 73 20 6f r.modify.;;.it.under.the.terms.o
6d920 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 73 65 f.the.GNU.General.Public.License
6d940 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 53 6f 66 .as.published.by.;;.the.Free.Sof
6d960 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 69 6f 6e tware.Foundation,.either.version
6d980 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 79 6f 75 .3.of.the.License,.or.;;.(at.you
6d9a0 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 0a 3b 3b r.option).any.later.version...;;
6d9c0 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 69 6e 20 .This.program.is.distributed.in.
6d9e0 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 75 6c 2c the.hope.that.it.will.be.useful,
6da00 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 20 77 69 .;;.but.WITHOUT.ANY.WARRANTY;.wi
6da20 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 74 79 20 thout.even.the.implied.warranty.
6da40 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 45 53 53 of.;;.MERCHANTABILITY.or.FITNESS
6da60 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 65 65 20 .FOR.A.PARTICULAR.PURPOSE...See.
6da80 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 65 6e 73 the.;;.GNU.General.Public.Licens
6daa0 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 68 6f 75 e.for.more.details...;;.You.shou
6dac0 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 65 20 47 ld.have.received.a.copy.of.the.G
6dae0 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 61 6c 6f NU.General.Public.License.;;.alo
6db00 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 2c 20 73 ng.with.this.program...If.not,.s
6db20 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 73 65 73 ee.<https://www.gnu.org/licenses
6db40 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 73 20 66 69 />...;;;.Commentary:..;;.This.fi
6db60 6c 65 20 61 64 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 le.adds.support.for.the.Gemini.A
6db80 50 49 20 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 PI.to.gptel..;;;.Code:.(require.
6dba0 27 67 70 74 65 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 'gptel).(require.'cl-generic).(r
6dbc0 65 71 75 69 72 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 equire.'map).(eval-when-compile.
6dbe0 28 72 65 71 75 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 (require.'cl-lib))..(declare-fun
6dc00 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 2d 70 72 6f ction.prop-match-value."text-pro
6dc20 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 69 6f 6e perty-search").(declare-function
6dc40 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 72 64 20 22 .text-property-search-backward."
6dc60 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 72 65 2d text-property-search").(declare-
6dc80 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 64 65 63 6c function.json-read."json").(decl
6dca0 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 77 72 61 70 are-function.gptel-context--wrap
6dcc0 20 22 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 ."gptel-context").(declare-funct
6dce0 69 6f 6e 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 63 6f 6c 6c 65 63 74 2d 6d 65 64 69 61 ion.gptel-context--collect-media
6dd00 20 22 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 22 29 0a 28 64 65 66 76 61 72 20 6a 73 6f 6e 2d 6f ."gptel-context").(defvar.json-o
6dd20 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 64 65 66 73 bject-type)..;;;.Gemini.(cl-defs
6dd40 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 6e 73 74 72 truct.....(gptel-gemini.(:constr
6dd60 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 20 20 20 20 uctor.gptel--make-gemini).......
6dd80 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 20 20 20 20 ............(:copier.nil).......
6dda0 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 62 61 63 6b ............(:include.gptel-back
6ddc0 65 6e 64 29 29 29 0a 0a 3b 3b 20 54 4f 44 4f 3a 20 55 73 69 6e 67 20 61 6c 74 3d 73 73 65 20 69 end)))..;;.TODO:.Using.alt=sse.i
6dde0 6e 20 74 68 65 20 71 75 65 72 79 20 75 72 6c 20 67 65 6e 65 72 61 74 65 73 20 61 6e 20 4f 70 65 n.the.query.url.generates.an.Ope
6de00 6e 41 49 20 73 74 79 6c 65 20 73 74 72 65 61 6d 69 6e 67 0a 3b 3b 20 72 65 73 70 6f 6e 73 65 2c nAI.style.streaming.;;.response,
6de20 20 77 69 74 68 20 6d 6f 72 65 20 69 6d 6d 65 64 69 61 74 65 20 75 70 64 61 74 65 73 2e 20 20 4d .with.more.immediate.updates...M
6de40 61 79 62 65 20 77 65 20 73 68 6f 75 6c 64 20 73 77 69 74 63 68 20 74 6f 20 74 68 61 74 20 61 6e aybe.we.should.switch.to.that.an
6de60 64 0a 3b 3b 20 72 65 77 72 69 74 65 20 74 68 65 20 73 74 72 65 61 6d 20 70 61 72 73 65 72 3f 0a d.;;.rewrite.the.stream.parser?.
6de80 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 2d (cl-defmethod.gptel-curl--parse-
6dea0 73 74 72 65 61 6d 20 28 28 5f 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 67 65 6d 69 6e 69 29 20 stream.((_backend.gptel-gemini).
6dec0 69 6e 66 6f 29 0a 20 20 22 50 61 72 73 65 20 61 20 47 65 6d 69 6e 69 20 64 61 74 61 20 73 74 72 info)..."Parse.a.Gemini.data.str
6dee0 65 61 6d 2e 0a 0a 52 65 74 75 72 6e 20 74 68 65 20 74 65 78 74 20 72 65 73 70 6f 6e 73 65 20 61 eam...Return.the.text.response.a
6df00 63 63 75 6d 75 6c 61 74 65 64 20 73 69 6e 63 65 20 74 68 65 20 6c 61 73 74 20 63 61 6c 6c 20 74 ccumulated.since.the.last.call.t
6df20 6f 20 74 68 69 73 0a 66 75 6e 63 74 69 6f 6e 2e 20 20 41 64 64 69 74 69 6f 6e 61 6c 6c 79 2c 20 o.this.function...Additionally,.
6df40 6d 75 74 61 74 65 20 73 74 61 74 65 20 49 4e 46 4f 20 74 6f 20 61 64 64 20 74 6f 6f 6c 2d 75 73 mutate.state.INFO.to.add.tool-us
6df60 65 0a 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 66 20 74 68 65 20 73 74 72 65 61 6d 20 63 6f 6e 74 e.information.if.the.stream.cont
6df80 61 69 6e 73 20 69 74 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 63 6f 6e 74 65 6e 74 2d 73 74 72 73 ains.it."...(let*.((content-strs
6dfa0 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 20 20 )).....(condition-case.nil......
6dfc0 20 20 20 28 77 68 69 6c 65 20 28 70 72 6f 67 31 20 28 73 65 61 72 63 68 2d 66 6f 72 77 61 72 64 ...(while.(prog1.(search-forward
6dfe0 20 22 7b 22 20 6e 69 6c 20 74 29 20 3b 20 77 68 69 6c 65 2d 6c 65 74 20 69 73 20 45 6d 61 63 73 ."{".nil.t).;.while-let.is.Emacs
6e000 20 32 39 2e 31 2b 20 6f 6e 6c 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 61 .29.1+.only..................(ba
6e020 63 6b 77 61 72 64 2d 63 68 61 72 20 31 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 61 76 65 2d ckward-char.1))...........(save-
6e040 6d 61 74 63 68 2d 64 61 74 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 match-data.............(when-let
6e060 2a 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 29 29 *.((response.(gptel--json-read))
6e080 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 74 65 78 74 20 28 .........................(text.(
6e0a0 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 72 65 73 70 6f 6e 73 65 0a 20 20 20 20 20 20 20 20 20 20 gptel--parse-response...........
6e0c0 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.
6e0e0 69 6e 66 6f 20 3a 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 info.:backend)..................
6e100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 70 6f 6e 73 65 20 69 6e 66 6f 20 27 69 6e 63 ..............response.info.'inc
6e120 6c 75 64 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 74 65 78 74 lude)))...............(push.text
6e140 20 63 6f 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 0a 20 .content-strs)))).......(error..
6e160 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 6d 61 74 63 68 2d 62 65 67 69 6e 6e 69 6e ......(goto-char.(match-beginnin
6e180 67 20 30 29 29 29 29 0a 20 20 20 20 28 61 70 70 6c 79 20 23 27 63 6f 6e 63 61 74 20 28 6e 72 65 g.0)))).....(apply.#'concat.(nre
6e1a0 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 2d 64 65 66 6d verse.content-strs))))..(cl-defm
6e1c0 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 20 28 28 5f 62 ethod.gptel--parse-response.((_b
6e1e0 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 67 65 6d 69 6e 69 29 20 72 65 73 70 6f 6e 73 65 20 69 6e ackend.gptel-gemini).response.in
6e200 66 6f 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 fo..............................
6e220 20 20 20 20 20 20 20 20 26 6f 70 74 69 6f 6e 61 6c 20 69 6e 63 6c 75 64 65 2d 74 65 78 74 29 0a ........&optional.include-text).
6e240 20 20 22 50 61 72 73 65 20 61 6e 20 47 65 6d 69 6e 69 20 28 6e 6f 6e 2d 73 74 72 65 61 6d 69 6e .."Parse.an.Gemini.(non-streamin
6e260 67 29 20 52 45 53 50 4f 4e 53 45 20 61 6e 64 20 72 65 74 75 72 6e 20 72 65 73 70 6f 6e 73 65 20 g).RESPONSE.and.return.response.
6e280 74 65 78 74 2e 0a 0a 4d 75 74 61 74 65 20 73 74 61 74 65 20 49 4e 46 4f 20 77 69 74 68 20 72 65 text...Mutate.state.INFO.with.re
6e2a0 73 70 6f 6e 73 65 20 6d 65 74 61 64 61 74 61 2e 0a 0a 49 66 20 49 4e 43 4c 55 44 45 2d 54 45 58 sponse.metadata...If.INCLUDE-TEX
6e2c0 54 20 69 73 20 6e 6f 6e 2d 6e 69 6c 2c 20 69 6e 63 6c 75 64 65 20 72 65 73 70 6f 6e 73 65 20 74 T.is.non-nil,.include.response.t
6e2e0 65 78 74 20 69 6e 20 74 68 65 20 70 72 6f 6d 70 74 73 0a 6c 69 73 74 2e 22 0a 20 20 28 6c 65 74 ext.in.the.prompts.list."...(let
6e300 2a 20 28 28 63 61 6e 64 30 20 28 6d 61 70 2d 6e 65 73 74 65 64 2d 65 6c 74 20 72 65 73 70 6f 6e *.((cand0.(map-nested-elt.respon
6e320 73 65 20 27 28 3a 63 61 6e 64 69 64 61 74 65 73 20 30 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 se.'(:candidates.0)))..........(
6e340 70 61 72 74 73 20 28 6d 61 70 2d 6e 65 73 74 65 64 2d 65 6c 74 20 63 61 6e 64 30 20 27 28 3a 63 parts.(map-nested-elt.cand0.'(:c
6e360 6f 6e 74 65 6e 74 20 3a 70 61 72 74 73 29 29 29 29 0a 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 ontent.:parts)))).....(plist-put
6e380 20 69 6e 66 6f 20 3a 73 74 6f 70 2d 72 65 61 73 6f 6e 20 28 70 6c 69 73 74 2d 67 65 74 20 63 61 .info.:stop-reason.(plist-get.ca
6e3a0 6e 64 30 20 3a 66 69 6e 69 73 68 52 65 61 73 6f 6e 29 29 0a 20 20 20 20 28 70 6c 69 73 74 2d 70 nd0.:finishReason)).....(plist-p
6e3c0 75 74 20 69 6e 66 6f 20 3a 6f 75 74 70 75 74 2d 74 6f 6b 65 6e 73 0a 20 20 20 20 20 20 20 20 20 ut.info.:output-tokens..........
6e3e0 20 20 20 20 20 20 28 6d 61 70 2d 6e 65 73 74 65 64 2d 65 6c 74 0a 20 20 20 20 20 20 20 20 20 20 ......(map-nested-elt...........
6e400 20 20 20 20 20 20 72 65 73 70 6f 6e 73 65 20 27 28 3a 75 73 61 67 65 4d 65 74 61 64 61 74 61 20 ......response.'(:usageMetadata.
6e420 3a 63 61 6e 64 69 64 61 74 65 73 54 6f 6b 65 6e 43 6f 75 6e 74 29 29 29 0a 20 20 20 20 28 63 6c :candidatesTokenCount))).....(cl
6e440 2d 6c 6f 6f 70 0a 20 20 20 20 20 66 6f 72 20 70 61 72 74 20 61 63 72 6f 73 73 20 70 61 72 74 73 -loop......for.part.across.parts
6e460 0a 20 20 20 20 20 66 6f 72 20 74 78 20 3d 20 28 70 6c 69 73 74 2d 67 65 74 20 70 61 72 74 20 3a ......for.tx.=.(plist-get.part.:
6e480 74 65 78 74 29 0a 20 20 20 20 20 69 66 20 28 61 6e 64 20 74 78 20 28 6e 6f 74 20 28 65 71 20 74 text)......if.(and.tx.(not.(eq.t
6e4a0 78 20 3a 6e 75 6c 6c 29 29 29 0a 20 20 20 20 20 69 66 20 28 70 6c 69 73 74 2d 67 65 74 20 70 61 x.:null)))......if.(plist-get.pa
6e4c0 72 74 20 3a 74 68 6f 75 67 68 74 29 0a 20 20 20 20 20 64 6f 20 28 75 6e 6c 65 73 73 20 28 70 6c rt.:thought)......do.(unless.(pl
6e4e0 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 72 65 61 73 6f 6e 69 6e 67 2d 62 6c 6f 63 6b 29 0a 20 ist-get.info.:reasoning-block)..
6e500 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 72 65 61 73 6f 6e .........(plist-put.info.:reason
6e520 69 6e 67 2d 62 6c 6f 63 6b 20 27 69 6e 29 29 0a 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 ing-block.'in))......(plist-put.
6e540 69 6e 66 6f 20 3a 72 65 61 73 6f 6e 69 6e 67 20 28 63 6f 6e 63 61 74 20 28 70 6c 69 73 74 2d 67 info.:reasoning.(concat.(plist-g
6e560 65 74 20 69 6e 66 6f 20 3a 72 65 61 73 6f 6e 69 6e 67 29 20 74 78 29 29 0a 20 20 20 20 20 65 6c et.info.:reasoning).tx))......el
6e580 73 65 20 64 6f 0a 20 20 20 20 20 28 69 66 20 28 65 71 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e se.do......(if.(eq.(plist-get.in
6e5a0 66 6f 20 3a 72 65 61 73 6f 6e 69 6e 67 2d 62 6c 6f 63 6b 29 20 27 69 6e 29 0a 20 20 20 20 20 20 fo.:reasoning-block).'in).......
6e5c0 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 72 65 61 73 6f 6e 69 6e 67 2d 62 6c 6f 63 .(plist-put.info.:reasoning-bloc
6e5e0 6b 20 74 29 29 0a 20 20 20 20 20 61 6e 64 20 63 6f 6c 6c 65 63 74 20 74 78 20 69 6e 74 6f 20 63 k.t))......and.collect.tx.into.c
6e600 6f 6e 74 65 6e 74 2d 73 74 72 73 20 65 6e 64 0a 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 70 6c ontent-strs.end......else.if.(pl
6e620 69 73 74 2d 67 65 74 20 70 61 72 74 20 3a 66 75 6e 63 74 69 6f 6e 43 61 6c 6c 29 0a 20 20 20 20 ist-get.part.:functionCall).....
6e640 20 63 6f 6c 6c 65 63 74 20 28 63 6f 70 79 2d 73 65 71 75 65 6e 63 65 20 69 74 29 20 69 6e 74 6f .collect.(copy-sequence.it).into
6e660 20 74 6f 6f 6c 2d 75 73 65 0a 20 20 20 20 20 66 69 6e 61 6c 6c 79 20 64 6f 20 20 20 20 20 20 20 .tool-use......finally.do.......
6e680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 41 64 64 20 74 65 78 74 20 61 6e 64 20 ..................;Add.text.and.
6e6a0 74 6f 6f 6c 2d 63 61 6c 6c 73 20 74 6f 20 70 72 6f 6d 70 74 73 20 6c 69 73 74 0a 20 20 20 20 20 tool-calls.to.prompts.list......
6e6c0 28 77 68 65 6e 20 28 6f 72 20 74 6f 6f 6c 2d 75 73 65 20 69 6e 63 6c 75 64 65 2d 74 65 78 74 29 (when.(or.tool-use.include-text)
6e6e0 0a 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 64 61 74 61 20 28 70 6c 69 73 74 2d 67 65 74 20 ........(let*.((data.(plist-get.
6e700 69 6e 66 6f 20 3a 64 61 74 61 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 6d info.:data))...............(prom
6e720 70 74 73 20 28 70 6c 69 73 74 2d 67 65 74 20 64 61 74 61 20 3a 63 6f 6e 74 65 6e 74 73 29 29 0a pts.(plist-get.data.:contents)).
6e740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 73 74 2d 70 72 6f 6d 70 74 20 28 61 72 65 66 ..............(last-prompt.(aref
6e760 20 70 72 6f 6d 70 74 73 20 28 31 2d 20 28 6c 65 6e 67 74 68 20 70 72 6f 6d 70 74 73 29 29 29 29 .prompts.(1-.(length.prompts))))
6e780 29 0a 20 20 20 20 20 20 20 20 20 28 69 66 20 28 65 71 75 61 6c 20 28 70 6c 69 73 74 2d 67 65 74 )..........(if.(equal.(plist-get
6e7a0 20 6c 61 73 74 2d 70 72 6f 6d 70 74 20 3a 72 6f 6c 65 29 20 22 6d 6f 64 65 6c 22 29 0a 20 20 20 .last-prompt.:role)."model")....
6e7c0 20 20 20 20 20 20 20 20 20 20 3b 3b 20 57 68 65 6e 20 73 74 72 65 61 6d 69 6e 67 2c 20 74 68 65 ..........;;.When.streaming,.the
6e7e0 20 6c 61 73 74 20 70 72 6f 6d 70 74 20 6d 61 79 20 61 6c 72 65 61 64 79 20 68 61 76 65 20 74 68 .last.prompt.may.already.have.th
6e800 65 20 72 6f 6c 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 22 6d 6f 64 65 6c 22 20 66 e.role..............;;."model".f
6e820 72 6f 6d 20 70 72 69 6f 72 20 63 61 6c 6c 73 20 74 6f 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e rom.prior.calls.to.this.function
6e840 2e 20 20 41 70 70 65 6e 64 20 74 6f 20 69 74 73 20 70 61 72 74 73 0a 20 20 20 20 20 20 20 20 20 ...Append.to.its.parts..........
6e860 20 20 20 20 3b 3b 20 69 6e 73 74 65 61 64 20 6f 66 20 61 64 64 69 6e 67 20 61 20 6e 65 77 20 6d ....;;.instead.of.adding.a.new.m
6e880 6f 64 65 6c 20 72 6f 6c 65 20 74 68 65 6e 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c odel.role.then...............(pl
6e8a0 69 73 74 2d 70 75 74 20 6c 61 73 74 2d 70 72 6f 6d 70 74 20 3a 70 61 72 74 73 0a 20 20 20 20 20 ist-put.last-prompt.:parts......
6e8c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 76 63 6f 6e 63 61 74 20 28 70 6c 69 ...................(vconcat.(pli
6e8e0 73 74 2d 67 65 74 20 6c 61 73 74 2d 70 72 6f 6d 70 74 20 3a 70 61 72 74 73 29 20 70 61 72 74 73 st-get.last-prompt.:parts).parts
6e900 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 20 20 20 20 20 20 20 ))............(plist-put........
6e920 20 20 20 20 20 20 20 20 20 20 20 3b 6f 74 68 65 72 77 69 73 65 20 63 72 65 61 74 65 20 61 20 6e ...........;otherwise.create.a.n
6e940 65 77 20 22 6d 6f 64 65 6c 22 20 72 6f 6c 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 ew."model".role.............data
6e960 20 3a 63 6f 6e 74 65 6e 74 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 76 63 6f 6e 63 61 74 20 .:contents.............(vconcat.
6e980 70 72 6f 6d 70 74 73 20 60 28 28 3a 72 6f 6c 65 20 22 6d 6f 64 65 6c 22 20 3a 70 61 72 74 73 20 prompts.`((:role."model".:parts.
6e9a0 2c 70 61 72 74 73 29 29 29 29 29 29 29 0a 20 20 20 20 20 28 77 68 65 6e 20 74 6f 6f 6c 2d 75 73 ,parts)))))))......(when.tool-us
6e9c0 65 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 43 61 70 74 75 72 65 20 74 6f e....................;Capture.to
6e9e0 6f 6c 20 63 61 6c 6c 20 64 61 74 61 20 66 6f 72 20 72 75 6e 6e 69 6e 67 20 74 6f 6f 6c 73 0a 20 ol.call.data.for.running.tools..
6ea00 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 74 6f 6f 6c 2d 75 73 65 0a ......(plist-put.info.:tool-use.
6ea20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 63 6f 6e 63 20 28 70 6c 69 73 74 2d ..................(nconc.(plist-
6ea40 67 65 74 20 69 6e 66 6f 20 3a 74 6f 6f 6c 2d 75 73 65 29 20 74 6f 6f 6c 2d 75 73 65 29 29 29 0a get.info.:tool-use).tool-use))).
6ea60 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 28 61 6e 64 20 63 6f .....finally.return......(and.co
6ea80 6e 74 65 6e 74 2d 73 74 72 73 20 28 61 70 70 6c 79 20 23 27 63 6f 6e 63 61 74 20 63 6f 6e 74 65 ntent-strs.(apply.#'concat.conte
6eaa0 6e 74 2d 73 74 72 73 29 29 29 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 67 70 74 65 nt-strs)))))..(cl-defmethod.gpte
6eac0 6c 2d 2d 72 65 71 75 65 73 74 2d 64 61 74 61 20 28 28 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d l--request-data.((backend.gptel-
6eae0 67 65 6d 69 6e 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 gemini).prompts)..."JSON.encode.
6eb00 50 52 4f 4d 50 54 53 20 66 6f 72 20 73 65 6e 64 69 6e 67 20 74 6f 20 47 65 6d 69 6e 69 2e 22 0a PROMPTS.for.sending.to.Gemini.".
6eb20 20 20 28 6c 65 74 20 28 28 70 72 6f 6d 70 74 73 2d 70 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 ..(let.((prompts-plist..........
6eb40 28 6c 69 73 74 20 3a 63 6f 6e 74 65 6e 74 73 20 28 76 63 6f 6e 63 61 74 20 70 72 6f 6d 70 74 73 (list.:contents.(vconcat.prompts
6eb60 29 0a 20 20 20 20 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 )................:safetySettings
6eb80 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
6eba0 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".........................
6ebc0 20 20 20 20 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 .........:threshold."BLOCK_NONE"
6ebe0 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 )...............................
6ec00 20 20 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 53 45 58 55 ..(:category."HARM_CATEGORY_SEXU
6ec20 41 4c 4c 59 5f 45 58 50 4c 49 43 49 54 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ALLY_EXPLICIT"..................
6ec40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 74 68 72 65 73 68 6f 6c 64 20 22 42 4c 4f 43 ................:threshold."BLOC
6ec60 4b 5f 4e 4f 4e 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 20 20 K_NONE")........................
6ec80 20 20 20 20 20 20 20 20 20 28 3a 63 61 74 65 67 6f 72 79 20 22 48 41 52 4d 5f 43 41 54 45 47 4f .........(:category."HARM_CATEGO
6eca0 52 59 5f 44 41 4e 47 45 52 4f 55 53 5f 43 4f 4e 54 45 4e 54 22 0a 20 20 20 20 20 20 20 20 20 20 RY_DANGEROUS_CONTENT"...........
6ecc0 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 65 73 68 6f 6c .......................:threshol
6ece0 64 20 22 42 4c 4f 43 4b 5f 4e 4f 4e 45 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 d."BLOCK_NONE").................
6ed00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 3a 63 61 74 65 67 6f 72 79 20 22 48 41 52 4d ................(:category."HARM
6ed20 5f 43 41 54 45 47 4f 52 59 5f 48 41 54 45 5f 53 50 45 45 43 48 22 0a 20 20 20 20 20 20 20 20 20 _CATEGORY_HATE_SPEECH"..........
6ed40 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 65 73 68 6f ........................:thresho
6ed60 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 70 61 72 61 ld."BLOCK_NONE")])).........para
6ed80 6d 73 29 0a 20 20 20 20 28 69 66 20 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 ms).....(if.gptel--system-messag
6eda0 65 0a 20 20 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 e.........(plist-put.prompts-pli
6edc0 73 74 20 3a 73 79 73 74 65 6d 5f 69 6e 73 74 72 75 63 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 st.:system_instruction..........
6ede0 20 20 20 20 20 20 20 20 20 20 60 28 3a 70 61 72 74 73 20 28 3a 74 65 78 74 20 2c 67 70 74 65 6c ..........`(:parts.(:text.,gptel
6ee00 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 29 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 67 --system-message)))).....(when.g
6ee20 70 74 65 6c 2d 75 73 65 2d 74 6f 6f 6c 73 0a 20 20 20 20 20 20 28 77 68 65 6e 20 28 65 71 20 67 ptel-use-tools.......(when.(eq.g
6ee40 70 74 65 6c 2d 75 73 65 2d 74 6f 6f 6c 73 20 27 66 6f 72 63 65 29 0a 20 20 20 20 20 20 20 20 28 ptel-use-tools.'force).........(
6ee60 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 74 6f 6f 6c 5f 63 6f plist-put.prompts-plist.:tool_co
6ee80 6e 66 69 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 28 3a 66 75 6e 63 74 nfig....................'(:funct
6eea0 69 6f 6e 5f 63 61 6c 6c 69 6e 67 5f 63 6f 6e 66 69 67 20 28 3a 6d 6f 64 65 20 22 41 4e 59 22 29 ion_calling_config.(:mode."ANY")
6eec0 29 29 29 0a 20 20 20 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 0a 20 20 20 20 ))).......(when.gptel-tools.....
6eee0 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 20 3a 74 6f ....(plist-put.prompts-plist.:to
6ef00 6f 6c 73 0a 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 70 ols....................(gptel--p
6ef20 61 72 73 65 2d 74 6f 6f 6c 73 20 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 29 29 arse-tools.backend.gptel-tools))
6ef40 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 65 0a 20 )).....(when.gptel-temperature..
6ef60 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 20 20 20 28 70 .....(setq.params.............(p
6ef80 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 20 20 20 20 20 list-put.params.................
6efa0 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 74 65 6c 2d 74 .......:temperature.(max.gptel-t
6efc0 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 6e 20 67 70 74 emperature.1.0)))).....(when.gpt
6efe0 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 61 72 61 6d 73 el-max-tokens.......(setq.params
6f000 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 61 6d 73 0a 20 .............(plist-put.params..
6f020 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 75 74 70 75 74 ......................:maxOutput
6f040 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 20 20 20 20 28 Tokens.gptel-max-tokens))).....(
6f060 77 68 65 6e 20 67 70 74 65 6c 2d 69 6e 63 6c 75 64 65 2d 72 65 61 73 6f 6e 69 6e 67 0a 20 20 20 when.gptel-include-reasoning....
6f080 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 20 20 20 28 70 6c 69 ...(setq.params.............(pli
6f0a0 73 74 2d 70 75 74 20 70 61 72 61 6d 73 20 3a 74 68 69 6e 6b 69 6e 67 43 6f 6e 66 69 67 20 27 28 st-put.params.:thinkingConfig.'(
6f0c0 3a 69 6e 63 6c 75 64 65 54 68 6f 75 67 68 74 73 20 74 29 29 29 29 0a 20 20 20 20 28 77 68 65 6e :includeThoughts.t)))).....(when
6f0e0 20 67 70 74 65 6c 2d 2d 73 63 68 65 6d 61 0a 20 20 20 20 20 20 28 73 65 74 71 20 70 61 72 61 6d .gptel--schema.......(setq.param
6f100 73 20 28 6e 63 6f 6e 63 20 70 61 72 61 6d 73 20 28 67 70 74 65 6c 2d 2d 67 65 6d 69 6e 69 2d 66 s.(nconc.params.(gptel--gemini-f
6f120 69 6c 74 65 72 2d 73 63 68 65 6d 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ilter-schema....................
6f140 20 20 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 73 63 68 ...............(gptel--parse-sch
6f160 65 6d 61 20 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 2d 73 63 68 65 6d 61 29 29 29 29 29 0a 20 ema.backend.gptel--schema)))))..
6f180 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 74 ...(when.params.......(plist-put
6f1a0 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 20 .prompts-plist..................
6f1c0 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 3b :generationConfig.params)).....;
6f1e0 3b 20 4d 65 72 67 65 20 72 65 71 75 65 73 74 20 70 61 72 61 6d 73 20 77 69 74 68 20 6d 6f 64 65 ;.Merge.request.params.with.mode
6f200 6c 20 61 6e 64 20 62 61 63 6b 65 6e 64 20 70 61 72 61 6d 73 2e 0a 20 20 20 20 28 67 70 74 65 6c l.and.backend.params......(gptel
6f220 2d 2d 6d 65 72 67 65 2d 70 6c 69 73 74 73 0a 20 20 20 20 20 70 72 6f 6d 70 74 73 2d 70 6c 69 73 --merge-plists......prompts-plis
6f240 74 0a 20 20 20 20 20 67 70 74 65 6c 2d 2d 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 0a 20 20 20 t......gptel--request-params....
6f260 20 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 20 ..(gptel-backend-request-params.
6f280 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 0a 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 gptel-backend)......(gptel--mode
6f2a0 6c 2d 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 20 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 29 29 29 l-request-params..gptel-model)))
6f2c0 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 73 63 )..(cl-defmethod.gptel--parse-sc
6f2e0 68 65 6d 61 20 28 28 5f 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 67 65 6d 69 6e 69 29 20 73 63 hema.((_backend.gptel-gemini).sc
6f300 68 65 6d 61 29 0a 20 20 28 6c 69 73 74 20 3a 72 65 73 70 6f 6e 73 65 4d 69 6d 65 54 79 70 65 20 hema)...(list.:responseMimeType.
6f320 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 6a 73 6f 6e 22 0a 20 20 20 20 20 20 20 20 3a 72 65 73 70 "application/json".........:resp
6f340 6f 6e 73 65 53 63 68 65 6d 61 20 28 67 70 74 65 6c 2d 2d 70 72 65 70 72 6f 63 65 73 73 2d 73 63 onseSchema.(gptel--preprocess-sc
6f360 68 65 6d 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 20 20 28 67 hema..........................(g
6f380 70 74 65 6c 2d 2d 64 69 73 70 61 74 63 68 2d 73 63 68 65 6d 61 2d 74 79 70 65 20 73 63 68 65 6d ptel--dispatch-schema-type.schem
6f3a0 61 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 67 65 6d 69 6e 69 2d 66 69 6c 74 a))))..(defun.gptel--gemini-filt
6f3c0 65 72 2d 73 63 68 65 6d 61 20 28 73 63 68 65 6d 61 29 0a 20 20 22 44 65 73 74 72 75 63 74 69 76 er-schema.(schema)..."Destructiv
6f3e0 65 6c 79 20 66 69 6c 74 65 72 20 75 6e 73 75 70 70 6f 72 74 65 64 20 61 74 74 72 69 62 75 74 65 ely.filter.unsupported.attribute
6f400 73 20 66 72 6f 6d 20 53 43 48 45 4d 41 2e 0a 0a 47 65 6d 69 6e 69 27 73 20 41 50 49 20 64 6f 65 s.from.SCHEMA...Gemini's.API.doe
6f420 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 20 60 61 64 64 69 74 69 6f 6e 61 6c 50 72 6f 70 65 72 74 s.not.support.`additionalPropert
6f440 69 65 73 27 2e 22 0a 20 20 28 63 6c 2d 72 65 6d 66 20 73 63 68 65 6d 61 20 3a 61 64 64 69 74 69 ies'."...(cl-remf.schema.:additi
6f460 6f 6e 61 6c 50 72 6f 70 65 72 74 69 65 73 29 0a 20 20 28 77 68 65 6e 20 28 70 6c 69 73 74 70 20 onalProperties)...(when.(plistp.
6f480 73 63 68 65 6d 61 29 0a 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 28 6b 65 79 20 76 61 schema).....(cl-loop.for.(key.va
6f4a0 6c 29 20 6f 6e 20 73 63 68 65 6d 61 20 62 79 20 23 27 63 64 64 72 0a 20 20 20 20 20 20 20 20 20 l).on.schema.by.#'cddr..........
6f4c0 20 20 20 20 64 6f 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b ....do.(cond..................;;
6f4e0 20 52 65 63 75 72 73 69 76 65 6c 79 20 6d 6f 64 69 66 79 20 73 63 68 65 6d 61 73 20 77 69 74 68 .Recursively.modify.schemas.with
6f500 69 6e 20 76 65 63 74 6f 72 73 20 28 61 6e 79 4f 66 2f 61 6c 6c 4f 66 29 0a 20 20 20 20 20 20 20 in.vectors.(anyOf/allOf)........
6f520 20 20 20 20 20 20 20 20 20 20 28 28 6d 65 6d 71 20 6b 65 79 20 27 28 3a 61 6e 79 4f 66 20 3a 61 ..........((memq.key.'(:anyOf.:a
6f540 6c 6c 4f 66 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 6f 74 69 6d 65 llOf))...................(dotime
6f560 73 20 28 69 20 28 6c 65 6e 67 74 68 20 76 61 6c 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 s.(i.(length.val))..............
6f580 20 20 20 20 20 20 20 28 61 73 65 74 20 76 61 6c 20 69 20 28 67 70 74 65 6c 2d 2d 67 65 6d 69 6e .......(aset.val.i.(gptel--gemin
6f5a0 69 2d 66 69 6c 74 65 72 2d 73 63 68 65 6d 61 20 28 61 72 65 66 20 76 61 6c 20 69 29 29 29 29 29 i-filter-schema.(aref.val.i)))))
6f5c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 52 65 63 75 72 73 69 76 65 6c 79 ..................;;.Recursively
6f5e0 20 6d 6f 64 69 66 79 20 70 6c 69 73 74 20 76 61 6c 75 65 73 2c 20 77 68 69 63 68 20 6d 61 79 20 .modify.plist.values,.which.may.
6f600 63 6f 6e 74 61 69 6e 20 73 75 62 2d 73 63 68 65 6d 61 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 contain.sub-schemas.............
6f620 20 20 20 20 20 28 28 70 6c 69 73 74 70 20 76 61 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 .....((plistp.val)..............
6f640 20 20 20 20 20 28 77 68 65 6e 20 28 63 6c 2d 72 65 6d 66 20 76 61 6c 20 3a 61 64 64 69 74 69 6f .....(when.(cl-remf.val.:additio
6f660 6e 61 6c 50 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 nalProperties)..................
6f680 20 20 20 28 63 6c 2d 72 65 6d 66 20 28 70 6c 69 73 74 2d 67 65 74 20 73 63 68 65 6d 61 20 6b 65 ...(cl-remf.(plist-get.schema.ke
6f6a0 79 29 20 3a 61 64 64 69 74 69 6f 6e 61 6c 50 72 6f 70 65 72 74 69 65 73 29 29 0a 20 20 20 20 20 y).:additionalProperties))......
6f6c0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 67 65 6d 69 6e 69 2d 66 69 6c 74 .............(gptel--gemini-filt
6f6e0 65 72 2d 73 63 68 65 6d 61 20 76 61 6c 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 er-schema.val)).................
6f700 20 3b 3b 20 44 65 66 61 75 6c 74 3a 20 64 6f 20 6e 6f 74 68 69 6e 67 20 74 6f 20 6f 74 68 65 72 .;;.Default:.do.nothing.to.other
6f720 20 6b 65 79 2d 76 61 6c 75 65 20 70 61 69 72 73 20 79 65 74 2e 0a 20 20 20 20 20 20 20 20 20 20 .key-value.pairs.yet............
6f740 20 20 20 20 20 20 20 28 74 20 6e 69 6c 29 29 29 29 0a 20 20 73 63 68 65 6d 61 29 0a 0a 28 63 6c .......(t.nil))))...schema)..(cl
6f760 2d 64 65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 74 6f 6f 6c 73 20 28 28 -defmethod.gptel--parse-tools.((
6f780 5f 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 67 65 6d 69 6e 69 29 20 74 6f 6f 6c 73 29 0a 20 20 _backend.gptel-gemini).tools)...
6f7a0 22 50 61 72 73 65 20 54 4f 4f 4c 53 20 74 6f 20 74 68 65 20 47 65 6d 69 6e 69 20 41 50 49 20 74 "Parse.TOOLS.to.the.Gemini.API.t
6f7c0 6f 6f 6c 20 64 65 66 69 6e 69 74 69 6f 6e 20 73 70 65 63 2e 0a 0a 54 4f 4f 4c 53 20 69 73 20 61 ool.definition.spec...TOOLS.is.a
6f7e0 20 6c 69 73 74 20 6f 66 20 60 67 70 74 65 6c 2d 74 6f 6f 6c 27 20 73 74 72 75 63 74 73 2c 20 77 .list.of.`gptel-tool'.structs,.w
6f800 68 69 63 68 20 73 65 65 2e 22 0a 20 20 28 63 6c 2d 6c 6f 6f 70 0a 20 20 20 66 6f 72 20 74 6f 6f hich.see."...(cl-loop....for.too
6f820 6c 20 69 6e 20 28 65 6e 73 75 72 65 2d 6c 69 73 74 20 74 6f 6f 6c 73 29 0a 20 20 20 63 6f 6c 6c l.in.(ensure-list.tools)....coll
6f840 65 63 74 0a 20 20 20 28 6c 69 73 74 0a 20 20 20 20 3a 6e 61 6d 65 20 28 67 70 74 65 6c 2d 74 6f ect....(list.....:name.(gptel-to
6f860 6f 6c 2d 6e 61 6d 65 20 74 6f 6f 6c 29 0a 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 28 ol-name.tool).....:description.(
6f880 67 70 74 65 6c 2d 74 6f 6f 6c 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 74 6f 6f 6c 29 0a 20 20 20 gptel-tool-description.tool)....
6f8a0 20 3a 70 61 72 61 6d 65 74 65 72 73 0a 20 20 20 20 28 69 66 20 28 6e 6f 74 20 28 67 70 74 65 6c .:parameters.....(if.(not.(gptel
6f8c0 2d 74 6f 6f 6c 2d 61 72 67 73 20 74 6f 6f 6c 29 29 0a 20 20 20 20 20 20 20 20 20 3a 6e 75 6c 6c -tool-args.tool))..........:null
6f8e0 20 20 20 20 20 20 20 20 20 20 20 3b 4e 4f 54 45 3a 20 47 65 6d 69 6e 69 20 77 61 6e 74 73 20 3a ...........;NOTE:.Gemini.wants.:
6f900 6e 75 6c 6c 20 69 66 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 74 61 6b 65 73 20 6e 6f 20 61 72 null.if.the.function.takes.no.ar
6f920 67 73 0a 20 20 20 20 20 20 28 6c 69 73 74 20 3a 74 79 70 65 20 22 6f 62 6a 65 63 74 22 0a 20 20 gs.......(list.:type."object"...
6f940 20 20 20 20 20 20 20 20 20 20 3b 3b 20 53 65 65 20 74 68 65 20 67 65 6e 65 72 69 63 20 69 6d 70 ..........;;.See.the.generic.imp
6f960 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 61 6e 20 65 78 70 6c 61 6e 61 74 69 6f 6e 20 6f lementation.for.an.explanation.o
6f980 66 20 74 68 69 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 74 72 61 6e 73 66 6f 72 6d 61 f.this.............;;.transforma
6f9a0 74 69 6f 6e 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 70 72 6f 70 65 72 74 69 65 73 0a 20 20 tion..............:properties...
6f9c0 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 20 20 20 20 20 20 ..........(cl-loop..............
6f9e0 66 6f 72 20 61 72 67 20 69 6e 20 28 67 70 74 65 6c 2d 74 6f 6f 6c 2d 61 72 67 73 20 74 6f 6f 6c for.arg.in.(gptel-tool-args.tool
6fa00 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 61 72 67 73 70 65 63 20 3d 20 28 63 6f )..............for.argspec.=.(co
6fa20 70 79 2d 73 65 71 75 65 6e 63 65 20 61 72 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f py-sequence.arg)..............fo
6fa40 72 20 6e 61 6d 65 20 3d 20 28 70 6c 69 73 74 2d 67 65 74 20 61 72 67 20 3a 6e 61 6d 65 29 20 3b r.name.=.(plist-get.arg.:name).;
6fa60 68 61 6e 64 6c 65 64 20 64 69 66 66 65 72 65 6e 74 6c 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 handled.differently.............
6fa80 20 66 6f 72 20 6e 65 77 6e 61 6d 65 20 3d 20 28 6f 72 20 28 61 6e 64 20 28 6b 65 79 77 6f 72 64 .for.newname.=.(or.(and.(keyword
6faa0 70 20 6e 61 6d 65 29 20 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 p.name).name)...................
6fac0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 6b 65 2d 73 79 6d 62 6f 6c 20 28 63 6f 6e 63 61 .............(make-symbol.(conca
6fae0 74 20 22 3a 22 20 6e 61 6d 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 20 20 20 t.":".name)))..............do...
6fb00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 41 52 47 53 50 45 43 20 69 73 .....................;ARGSPEC.is
6fb20 20 41 52 47 20 77 69 74 68 6f 75 74 20 75 6e 72 65 63 6f 67 6e 69 7a 65 64 20 6b 65 79 73 0a 20 .ARG.without.unrecognized.keys..
6fb40 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 72 65 6d 66 20 61 72 67 73 70 65 63 20 3a 6e 61 ............(cl-remf.argspec.:na
6fb60 6d 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 72 65 6d 66 20 61 72 67 73 70 65 me)..............(cl-remf.argspe
6fb80 63 20 3a 6f 70 74 69 6f 6e 61 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65 71 c.:optional)..............if.(eq
6fba0 75 61 6c 20 28 70 6c 69 73 74 2d 67 65 74 20 61 72 67 20 3a 74 79 70 65 29 20 22 6f 62 6a 65 63 ual.(plist-get.arg.:type)."objec
6fbc0 74 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 20 28 75 6e 6c 65 73 73 20 28 70 6c 69 t")..............do.(unless.(pli
6fbe0 73 74 2d 6d 65 6d 62 65 72 20 61 72 67 73 70 65 63 20 3a 72 65 71 75 69 72 65 64 29 0a 20 20 20 st-member.argspec.:required)....
6fc00 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 61 72 67 73 70 65 ...............(plist-put.argspe
6fc20 63 20 3a 72 65 71 75 69 72 65 64 20 5b 5d 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 c.:required.[]))..............if
6fc40 20 28 65 71 75 61 6c 20 28 70 6c 69 73 74 2d 67 65 74 20 61 72 67 20 3a 74 79 70 65 29 20 22 73 .(equal.(plist-get.arg.:type)."s
6fc60 74 72 69 6e 67 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 20 28 63 6c 2d 72 65 6d 66 tring")..............do.(cl-remf
6fc80 20 61 72 67 73 70 65 63 20 3a 66 6f 72 6d 61 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 61 .argspec.:format)..............a
6fca0 70 70 65 6e 64 20 28 6c 69 73 74 20 6e 65 77 6e 61 6d 65 20 28 67 70 74 65 6c 2d 2d 67 65 6d 69 ppend.(list.newname.(gptel--gemi
6fcc0 6e 69 2d 66 69 6c 74 65 72 2d 73 63 68 65 6d 61 20 61 72 67 73 70 65 63 29 29 29 0a 20 20 20 20 ni-filter-schema.argspec))).....
6fce0 20 20 20 20 20 20 20 20 3a 72 65 71 75 69 72 65 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 76 ........:required.............(v
6fd00 63 6f 6e 63 61 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 65 6c 71 20 6e 69 6c 20 28 6d concat..............(delq.nil.(m
6fd20 61 70 63 61 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c apcar.........................(l
6fd40 61 6d 62 64 61 20 28 61 72 67 29 20 28 61 6e 64 20 28 6e 6f 74 20 28 70 6c 69 73 74 2d 67 65 74 ambda.(arg).(and.(not.(plist-get
6fd60 20 61 72 67 20 3a 6f 70 74 69 6f 6e 61 6c 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .arg.:optional))................
6fd80 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 6c 69 73 74 2d 67 65 .......................(plist-ge
6fda0 74 20 61 72 67 20 3a 6e 61 6d 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 t.arg.:name)))..................
6fdc0 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 74 6f 6f 6c 2d 61 72 67 73 20 74 6f 6f 6c 29 29 29 29 .......(gptel-tool-args.tool))))
6fde0 29 29 29 0a 20 20 20 69 6e 74 6f 20 74 6f 6f 6c 2d 73 70 65 63 73 0a 20 20 20 66 69 6e 61 6c 6c )))....into.tool-specs....finall
6fe00 79 20 72 65 74 75 72 6e 20 60 5b 28 3a 66 75 6e 63 74 69 6f 6e 5f 64 65 63 6c 61 72 61 74 69 6f y.return.`[(:function_declaratio
6fe20 6e 73 20 2c 28 76 63 6f 6e 63 61 74 20 74 6f 6f 6c 2d 73 70 65 63 73 29 29 5d 29 29 0a 0a 28 63 ns.,(vconcat.tool-specs))]))..(c
6fe40 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 74 6f 6f 6c 2d 72 65 l-defmethod.gptel--parse-tool-re
6fe60 73 75 6c 74 73 20 28 28 5f 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 67 65 6d 69 6e 69 29 20 74 sults.((_backend.gptel-gemini).t
6fe80 6f 6f 6c 2d 75 73 65 29 0a 20 20 22 52 65 74 75 72 6e 20 61 20 70 72 6f 6d 70 74 20 63 6f 6e 74 ool-use)..."Return.a.prompt.cont
6fea0 61 69 6e 69 6e 67 20 74 6f 6f 6c 20 63 61 6c 6c 20 72 65 73 75 6c 74 73 20 69 6e 20 54 4f 4f 4c aining.tool.call.results.in.TOOL
6fec0 2d 55 53 45 2e 22 0a 20 20 28 6c 69 73 74 0a 20 20 20 3a 72 6f 6c 65 20 22 75 73 65 72 22 0a 20 -USE."...(list....:role."user"..
6fee0 20 20 3a 70 61 72 74 73 0a 20 20 20 28 76 63 6f 6e 63 61 74 0a 20 20 20 20 28 6d 61 70 63 61 72 ..:parts....(vconcat.....(mapcar
6ff00 0a 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 74 6f 6f 6c 2d 63 61 6c 6c 29 0a 20 20 20 20 20 20 ......(lambda.(tool-call).......
6ff20 20 28 6c 65 74 20 28 28 72 65 73 75 6c 74 20 28 70 6c 69 73 74 2d 67 65 74 20 74 6f 6f 6c 2d 63 .(let.((result.(plist-get.tool-c
6ff40 61 6c 6c 20 3a 72 65 73 75 6c 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 61 6d 65 all.:result))..............(name
6ff60 20 28 70 6c 69 73 74 2d 67 65 74 20 74 6f 6f 6c 2d 63 61 6c 6c 20 3a 6e 61 6d 65 29 29 29 0a 20 .(plist-get.tool-call.:name)))..
6ff80 20 20 20 20 20 20 20 20 60 28 3a 66 75 6e 63 74 69 6f 6e 52 65 73 70 6f 6e 73 65 0a 20 20 20 20 ........`(:functionResponse.....
6ffa0 20 20 20 20 20 20 20 28 3a 6e 61 6d 65 20 2c 6e 61 6d 65 20 3a 72 65 73 70 6f 6e 73 65 0a 20 20 .......(:name.,name.:response...
6ffc0 20 20 20 20 20 20 20 20 20 20 28 3a 6e 61 6d 65 20 2c 6e 61 6d 65 20 3a 63 6f 6e 74 65 6e 74 20 ..........(:name.,name.:content.
6ffe0 2c 72 65 73 75 6c 74 29 29 29 29 29 0a 20 20 20 20 20 74 6f 6f 6c 2d 75 73 65 29 29 29 29 0a 0a ,result)))))......tool-use))))..
70000 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 2d 69 6e 6a 65 63 74 2d 70 72 6f 6d (cl-defmethod.gptel--inject-prom
70020 70 74 20 28 28 5f 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 67 65 6d 69 6e 69 29 20 64 61 74 61 pt.((_backend.gptel-gemini).data
70040 20 6e 65 77 2d 70 72 6f 6d 70 74 20 26 6f 70 74 69 6f 6e 61 6c 20 5f 70 6f 73 69 74 69 6f 6e 29 .new-prompt.&optional._position)
70060 0a 20 20 22 41 70 70 65 6e 64 20 4e 45 57 2d 50 52 4f 4d 50 54 20 74 6f 20 65 78 69 73 74 69 6e ..."Append.NEW-PROMPT.to.existin
70080 67 20 70 72 6f 6d 70 74 73 20 69 6e 20 71 75 65 72 79 20 44 41 54 41 2e 0a 0a 53 65 65 20 67 65 g.prompts.in.query.DATA...See.ge
700a0 6e 65 72 69 63 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 66 75 6c 6c 20 64 6f neric.implementation.for.full.do
700c0 63 75 6d 65 6e 74 61 74 69 6f 6e 2e 22 0a 20 20 28 6c 65 74 20 28 28 70 72 6f 6d 70 74 73 20 28 cumentation."...(let.((prompts.(
700e0 70 6c 69 73 74 2d 67 65 74 20 64 61 74 61 20 3a 63 6f 6e 74 65 6e 74 73 29 29 29 0a 20 20 20 20 plist-get.data.:contents))).....
70100 28 70 6c 69 73 74 2d 70 75 74 20 64 61 74 61 20 3a 63 6f 6e 74 65 6e 74 73 20 28 76 63 6f 6e 63 (plist-put.data.:contents.(vconc
70120 61 74 20 70 72 6f 6d 70 74 73 20 28 6c 69 73 74 20 6e 65 77 2d 70 72 6f 6d 70 74 29 29 29 29 29 at.prompts.(list.new-prompt)))))
70140 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 6c 69 73 ..(cl-defmethod.gptel--parse-lis
70160 74 20 28 28 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 t.((backend.gptel-gemini).prompt
70180 2d 6c 69 73 74 29 0a 20 20 28 69 66 20 28 63 6f 6e 73 70 20 28 63 61 72 20 70 72 6f 6d 70 74 2d -list)...(if.(consp.(car.prompt-
701a0 6c 69 73 74 29 29 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 66 75 6c 6c 2d 70 72 6f 6d 70 74 29 list)).......(let.((full-prompt)
701c0 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 41 64 76 61 6e 63 65 64 20 66 6f 72 6d 61 74 )..............;.Advanced.format
701e0 2c 20 6c 69 73 74 20 6f 66 20 6c 69 73 74 73 0a 20 20 20 20 20 20 20 20 28 64 6f 6c 69 73 74 20 ,.list.of.lists.........(dolist.
70200 28 65 6e 74 72 79 20 70 72 6f 6d 70 74 2d 6c 69 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 (entry.prompt-list)...........(p
70220 63 61 73 65 20 65 6e 74 72 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 60 28 70 72 6f 6d 70 74 case.entry.............(`(prompt
70240 20 2e 20 2c 6d 73 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 6c 69 73 ...,msg)..............(push.(lis
70260 74 20 3a 72 6f 6c 65 20 22 75 73 65 72 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 t.:role."user"..................
70280 20 20 20 20 20 20 20 20 3a 70 61 72 74 73 20 60 5b 28 3a 74 65 78 74 20 2c 28 6f 72 20 28 63 61 ........:parts.`[(:text.,(or.(ca
702a0 72 2d 73 61 66 65 20 6d 73 67 29 20 6d 73 67 29 29 5d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 r-safe.msg).msg))]).............
702c0 20 20 20 20 20 20 20 66 75 6c 6c 2d 70 72 6f 6d 70 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 .......full-prompt))............
702e0 20 28 60 28 72 65 73 70 6f 6e 73 65 20 2e 20 2c 6d 73 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 .(`(response...,msg)............
70300 20 20 28 70 75 73 68 20 28 6c 69 73 74 20 3a 72 6f 6c 65 20 22 6d 6f 64 65 6c 22 0a 20 20 20 20 ..(push.(list.:role."model".....
70320 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 74 73 20 60 5b 28 3a .....................:parts.`[(:
70340 74 65 78 74 20 2c 28 6f 72 20 28 63 61 72 2d 73 61 66 65 20 6d 73 67 29 20 6d 73 67 29 29 5d 29 text.,(or.(car-safe.msg).msg))])
70360 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 75 6c 6c 2d 70 72 6f 6d 70 74 29 ....................full-prompt)
70380 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 60 28 74 6f 6f 6c 20 2e 20 2c 63 61 6c 6c 29 0a 20 ).............(`(tool...,call)..
703a0 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 6c 69 73 74 20 3a 72 6f 6c 65 20 22 6d ............(push.(list.:role."m
703c0 6f 64 65 6c 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 3a odel"..........................:
703e0 70 61 72 74 73 20 28 76 65 63 74 6f 72 20 60 28 3a 66 75 6e 63 74 69 6f 6e 43 61 6c 6c 20 28 20 parts.(vector.`(:functionCall.(.
70400 3a 6e 61 6d 65 20 2c 28 70 6c 69 73 74 2d 67 65 74 20 63 61 6c 6c 20 3a 6e 61 6d 65 29 0a 20 20 :name.,(plist-get.call.:name)...
70420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
70440 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 61 72 67 73 20 2c 28 ........................:args.,(
70460 70 6c 69 73 74 2d 67 65 74 20 63 61 6c 6c 20 3a 61 72 67 73 29 29 29 29 29 0a 20 20 20 20 20 20 plist-get.call.:args))))).......
70480 20 20 20 20 20 20 20 20 20 20 20 20 20 66 75 6c 6c 2d 70 72 6f 6d 70 74 29 0a 20 20 20 20 20 20 .............full-prompt).......
704a0 20 20 20 20 20 20 20 28 70 75 73 68 20 28 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 74 6f 6f 6c 2d .......(push.(gptel--parse-tool-
704c0 72 65 73 75 6c 74 73 20 62 61 63 6b 65 6e 64 20 28 6c 69 73 74 20 28 63 64 72 20 65 6e 74 72 79 results.backend.(list.(cdr.entry
704e0 29 29 29 20 66 75 6c 6c 2d 70 72 6f 6d 70 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 6e 72 65 ))).full-prompt)))).........(nre
70500 76 65 72 73 65 20 66 75 6c 6c 2d 70 72 6f 6d 70 74 29 29 0a 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 verse.full-prompt)).....(cl-loop
70520 20 66 6f 72 20 74 65 78 74 20 69 6e 20 70 72 6f 6d 70 74 2d 6c 69 73 74 20 20 20 20 3b 20 53 69 .for.text.in.prompt-list....;.Si
70540 6d 70 6c 65 20 66 6f 72 6d 61 74 2c 20 6c 69 73 74 20 6f 66 20 73 74 72 69 6e 67 73 0a 20 20 20 mple.format,.list.of.strings....
70560 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 72 6f 6c 65 20 3d 20 74 20 74 68 65 6e 20 28 6e 6f 74 ..........for.role.=.t.then.(not
70580 20 72 6f 6c 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 74 65 78 74 0a 20 20 20 20 .role)..............if.text.....
705a0 20 20 20 20 20 20 20 20 20 69 66 20 72 6f 6c 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f .........if.role..............co
705c0 6c 6c 65 63 74 20 28 6c 69 73 74 20 3a 72 6f 6c 65 20 22 75 73 65 72 22 20 3a 70 61 72 74 73 20 llect.(list.:role."user".:parts.
705e0 60 5b 28 3a 74 65 78 74 20 2c 74 65 78 74 29 5d 29 20 69 6e 74 6f 20 70 72 6f 6d 70 74 73 0a 20 `[(:text.,text)]).into.prompts..
70600 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 63 6f 6c 6c 65 63 74 20 28 6c 69 73 74 20 3a ............else.collect.(list.:
70620 72 6f 6c 65 20 22 6d 6f 64 65 6c 22 20 3a 70 61 72 74 73 20 60 28 3a 74 65 78 74 20 2c 74 65 78 role."model".:parts.`(:text.,tex
70640 74 29 29 20 69 6e 74 6f 20 70 72 6f 6d 70 74 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 t)).into.prompts..............fi
70660 6e 61 6c 6c 79 20 72 65 74 75 72 6e 20 70 72 6f 6d 70 74 73 29 29 29 0a 0a 28 63 6c 2d 64 65 66 nally.return.prompts)))..(cl-def
70680 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 28 62 61 63 method.gptel--parse-buffer.((bac
706a0 6b 65 6e 64 20 67 70 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 kend.gptel-gemini).&optional.max
706c0 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 70 72 65 -entries)...(let.((prompts).(pre
706e0 76 2d 70 74 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 28 69 66 20 28 6f 72 20 67 70 74 65 6c v-pt.(point))).....(if.(or.gptel
70700 2d 6d 6f 64 65 20 67 70 74 65 6c 2d 74 72 61 63 6b 2d 72 65 73 70 6f 6e 73 65 29 0a 20 20 20 20 -mode.gptel-track-response).....
70720 20 20 20 20 28 77 68 69 6c 65 20 28 61 6e 64 20 28 6f 72 20 28 6e 6f 74 20 6d 61 78 2d 65 6e 74 ....(while.(and.(or.(not.max-ent
70740 72 69 65 73 29 20 28 3e 3d 20 6d 61 78 2d 65 6e 74 72 69 65 73 20 30 29 29 0a 20 20 20 20 20 20 ries).(>=.max-entries.0)).......
70760 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 72 65 76 69 6f ..............(goto-char.(previo
70780 75 73 2d 73 69 6e 67 6c 65 2d 70 72 6f 70 65 72 74 79 2d 63 68 61 6e 67 65 0a 20 20 20 20 20 20 us-single-property-change.......
707a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6f 69 6e 74 ..........................(point
707c0 29 20 27 67 70 74 65 6c 20 6e 69 6c 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 29 0a 20 20 20 20 20 ).'gptel.nil.(point-min)))......
707e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 6f 74 20 28 3d 20 28 70 6f 69 6e 74 29 20 70 ...............(not.(=.(point).p
70800 72 65 76 2d 70 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 63 61 73 65 20 28 67 65 74 2d rev-pt)))...........(pcase.(get-
70820 63 68 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 29 0a 20 20 char-property.(point).'gptel)...
70840 20 20 20 20 20 20 20 20 20 20 28 27 72 65 73 70 6f 6e 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 ..........('response............
70860 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 63 6f 6e 74 65 6e 74 20 28 67 70 74 65 6c 2d 2d 74 ..(when-let*.((content.(gptel--t
70880 72 69 6d 2d 70 72 65 66 69 78 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rim-prefixes....................
708a0 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 69 6e ................(buffer-substrin
708c0 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 20 28 70 6f 69 6e 74 29 20 70 72 65 76 2d 70 74 29 g-no-properties.(point).prev-pt)
708e0 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 6c 69 73 74 20 3a )))................(push.(list.:
70900 72 6f 6c 65 20 22 6d 6f 64 65 6c 22 20 3a 70 61 72 74 73 20 28 6c 69 73 74 20 3a 74 65 78 74 20 role."model".:parts.(list.:text.
70920 63 6f 6e 74 65 6e 74 29 29 20 70 72 6f 6d 70 74 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 content)).prompts)))............
70940 20 28 60 28 74 6f 6f 6c 20 2e 20 2c 5f 69 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 .(`(tool...,_id)..............(s
70960 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f ave-excursion................(co
70980 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ndition-case.nil................
709a0 20 20 20 20 28 6c 65 74 2a 20 28 28 74 6f 6f 6c 2d 63 61 6c 6c 20 28 72 65 61 64 20 28 63 75 72 ....(let*.((tool-call.(read.(cur
709c0 72 65 6e 74 2d 62 75 66 66 65 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rent-buffer)))..................
709e0 20 20 20 20 20 20 20 20 20 28 6e 61 6d 65 20 28 70 6c 69 73 74 2d 67 65 74 20 74 6f 6f 6c 2d 63 .........(name.(plist-get.tool-c
70a00 61 6c 6c 20 3a 6e 61 6d 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 all.:name)).....................
70a20 20 20 20 20 20 20 28 61 72 67 75 6d 65 6e 74 73 20 20 28 70 6c 69 73 74 2d 67 65 74 20 74 6f 6f ......(arguments..(plist-get.too
70a40 6c 2d 63 61 6c 6c 20 3a 61 72 67 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 l-call.:args))).................
70a60 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 74 6f 6f 6c 2d 63 61 6c 6c 20 3a 72 65 73 75 6c .....(plist-put.tool-call.:resul
70a80 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 t...............................
70aa0 20 20 28 73 74 72 69 6e 67 2d 74 72 69 6d 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 ..(string-trim.(buffer-substring
70ac0 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..................
70ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6f .............................(po
70b00 69 6e 74 29 20 70 72 65 76 2d 70 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 int).prev-pt))).................
70b20 20 20 20 20 20 28 70 75 73 68 20 28 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 74 6f 6f 6c 2d 72 65 .....(push.(gptel--parse-tool-re
70b40 73 75 6c 74 73 20 62 61 63 6b 65 6e 64 20 28 6c 69 73 74 20 74 6f 6f 6c 2d 63 61 6c 6c 29 29 0a sults.backend.(list.tool-call)).
70b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 6d 70 ...........................promp
70b80 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 28 70 75 73 68 20 28 ts)......................(push.(
70ba0 6c 69 73 74 20 3a 72 6f 6c 65 20 22 6d 6f 64 65 6c 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 list.:role."model"..............
70bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 70 61 72 74 73 0a 20 20 20 20 20 ....................:parts......
70be0 20 20 20 20 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 76 65 63 ............................(vec
70c00 74 6f 72 20 60 28 3a 66 75 6e 63 74 69 6f 6e 43 61 6c 6c 20 28 20 3a 6e 61 6d 65 20 2c 6e 61 6d tor.`(:functionCall.(.:name.,nam
70c20 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 e...............................
70c40 20 20 20 20 20 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 61 72 .............................:ar
70c60 67 73 20 2c 61 72 67 75 6d 65 6e 74 73 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 gs.,arguments))))...............
70c80 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 6d 70 74 73 29 29 0a 20 20 20 20 20 20 20 20 20 .............prompts))..........
70ca0 20 20 20 20 20 20 20 20 28 28 65 6e 64 2d 6f 66 2d 66 69 6c 65 20 69 6e 76 61 6c 69 64 2d 72 65 ........((end-of-file.invalid-re
70cc0 61 64 2d 73 79 6e 74 61 78 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 65 ad-syntax)...................(me
70ce0 73 73 61 67 65 20 28 66 6f 72 6d 61 74 20 22 43 6f 75 6c 64 20 6e 6f 74 20 70 61 72 73 65 20 74 ssage.(format."Could.not.parse.t
70d00 6f 6f 6c 2d 63 61 6c 6c 20 6f 6e 20 6c 69 6e 65 20 25 73 22 0a 20 20 20 20 20 20 20 20 20 20 20 ool-call.on.line.%s"............
70d20 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 6e 75 ........................(line-nu
70d40 6d 62 65 72 2d 61 74 2d 70 6f 73 20 28 70 6f 69 6e 74 29 29 29 29 29 29 29 29 0a 20 20 20 20 20 mber-at-pos.(point))))))))......
70d60 20 20 20 20 20 20 20 28 27 69 67 6e 6f 72 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 27 6e .......('ignore).............('n
70d80 69 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 67 70 74 65 6c 2d 74 72 61 63 6b 2d il..............(if.gptel-track-
70da0 6d 65 64 69 61 0a 20 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 media..................(when-let
70dc0 2a 20 28 28 63 6f 6e 74 65 6e 74 20 28 67 70 74 65 6c 2d 2d 67 65 6d 69 6e 69 2d 70 61 72 73 65 *.((content.(gptel--gemini-parse
70de0 2d 6d 75 6c 74 69 70 61 72 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -multipart......................
70e00 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 70 61 72 73 65 2d ..................(gptel--parse-
70e20 6d 65 64 69 61 2d 6c 69 6e 6b 73 20 6d 61 6a 6f 72 2d 6d 6f 64 65 20 28 70 6f 69 6e 74 29 20 70 media-links.major-mode.(point).p
70e40 72 65 76 2d 70 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 28 77 rev-pt))))....................(w
70e60 68 65 6e 20 28 3e 20 28 6c 65 6e 67 74 68 20 63 6f 6e 74 65 6e 74 29 20 30 29 0a 20 20 20 20 20 hen.(>.(length.content).0)......
70e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 6c 69 73 74 20 3a 72 6f 6c ................(push.(list.:rol
70ea0 65 20 22 75 73 65 72 22 20 3a 70 61 72 74 73 20 63 6f 6e 74 65 6e 74 29 20 70 72 6f 6d 70 74 73 e."user".:parts.content).prompts
70ec0 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 )))................(when-let*.((
70ee0 63 6f 6e 74 65 6e 74 20 28 67 70 74 65 6c 2d 2d 74 72 69 6d 2d 70 72 65 66 69 78 65 73 0a 20 20 content.(gptel--trim-prefixes...
70f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
70f20 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 65 72 74 69 ...(buffer-substring-no-properti
70f40 65 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 es..............................
70f60 20 20 20 20 20 20 20 20 20 28 70 6f 69 6e 74 29 20 70 72 65 76 2d 70 74 29 29 29 29 0a 20 20 20 .........(point).prev-pt))))....
70f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 6c 69 73 74 20 3a 72 6f 6c 65 20 ..............(push.(list.:role.
70fa0 22 75 73 65 72 22 20 3a 70 61 72 74 73 20 60 5b 28 3a 74 65 78 74 20 2c 63 6f 6e 74 65 6e 74 29 "user".:parts.`[(:text.,content)
70fc0 5d 29 20 70 72 6f 6d 70 74 73 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 ]).prompts)))))...........(setq.
70fe0 70 72 65 76 2d 70 74 20 28 70 6f 69 6e 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 prev-pt.(point))...........(and.
71000 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 69 65 73 max-entries.(cl-decf.max-entries
71020 29 29 29 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 63 6f 6e 74 65 6e 74 20 28 73 74 72 69 6e 67 ))).......(let.((content.(string
71040 2d 74 72 69 6d 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 -trim.(buffer-substring-no-prope
71060 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 20 20 20 20 20 20 20 rties...........................
71080 20 20 20 20 20 20 20 20 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28 70 6f 69 6e 74 2d 6d 61 78 29 .........(point-min).(point-max)
710a0 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 6c 69 73 74 20 3a 72 6f 6c 65 20 22 )))).........(push.(list.:role."
710c0 75 73 65 72 22 20 3a 70 61 72 74 73 20 60 5b 28 3a 74 65 78 74 20 2c 63 6f 6e 74 65 6e 74 29 5d user".:parts.`[(:text.,content)]
710e0 29 20 70 72 6f 6d 70 74 73 29 29 29 0a 20 20 20 20 70 72 6f 6d 70 74 73 29 29 0a 0a 28 64 65 66 ).prompts))).....prompts))..(def
71100 75 6e 20 67 70 74 65 6c 2d 2d 67 65 6d 69 6e 69 2d 70 61 72 73 65 2d 6d 75 6c 74 69 70 61 72 74 un.gptel--gemini-parse-multipart
71120 20 28 70 61 72 74 73 29 0a 20 20 22 43 6f 6e 76 65 72 74 20 61 20 6d 75 6c 74 69 70 61 72 74 20 .(parts)..."Convert.a.multipart.
71140 70 72 6f 6d 70 74 20 50 41 52 54 53 20 74 6f 20 74 68 65 20 47 65 6d 69 6e 69 20 41 50 49 20 66 prompt.PARTS.to.the.Gemini.API.f
71160 6f 72 6d 61 74 2e 0a 0a 54 68 65 20 69 6e 70 75 74 20 69 73 20 61 6e 20 61 6c 69 73 74 20 6f 66 ormat...The.input.is.an.alist.of
71180 20 74 68 65 20 66 6f 72 6d 0a 20 28 28 3a 74 65 78 74 20 5c 22 73 6f 6d 65 20 74 65 78 74 5c 22 .the.form..((:text.\"some.text\"
711a0 29 0a 20 20 28 3a 6d 65 64 69 61 20 5c 22 2f 70 61 74 68 2f 74 6f 2f 6d 65 64 69 61 2e 70 6e 67 )...(:media.\"/path/to/media.png
711c0 5c 22 20 3a 6d 69 6d 65 20 5c 22 69 6d 61 67 65 2f 70 6e 67 5c 22 29 0a 20 20 28 3a 74 65 78 74 \".:mime.\"image/png\")...(:text
711e0 20 5c 22 4d 6f 72 65 20 74 65 78 74 5c 22 29 29 2e 0a 0a 54 68 65 20 6f 75 74 70 75 74 20 69 73 .\"More.text\"))...The.output.is
71200 20 61 20 76 65 63 74 6f 72 20 6f 66 20 65 6e 74 72 69 65 73 20 69 6e 20 61 20 62 61 63 6b 65 6e .a.vector.of.entries.in.a.backen
71220 64 2d 61 70 70 72 6f 70 72 69 61 74 65 0a 66 6f 72 6d 61 74 2e 22 0a 20 20 28 63 6c 2d 6c 6f 6f d-appropriate.format."...(cl-loo
71240 70 0a 20 20 20 66 6f 72 20 70 61 72 74 20 69 6e 20 70 61 72 74 73 0a 20 20 20 66 6f 72 20 6e 20 p....for.part.in.parts....for.n.
71260 75 70 66 72 6f 6d 20 31 0a 20 20 20 77 69 74 68 20 6c 61 73 74 20 3d 20 28 6c 65 6e 67 74 68 20 upfrom.1....with.last.=.(length.
71280 70 61 72 74 73 29 0a 20 20 20 66 6f 72 20 74 65 78 74 20 3d 20 28 70 6c 69 73 74 2d 67 65 74 20 parts)....for.text.=.(plist-get.
712a0 70 61 72 74 20 3a 74 65 78 74 29 0a 20 20 20 66 6f 72 20 6d 65 64 69 61 20 3d 20 28 70 6c 69 73 part.:text)....for.media.=.(plis
712c0 74 2d 67 65 74 20 70 61 72 74 20 3a 6d 65 64 69 61 29 0a 20 20 20 69 66 20 74 65 78 74 20 64 6f t-get.part.:media)....if.text.do
712e0 0a 20 20 20 28 61 6e 64 20 28 6f 72 20 28 3d 20 6e 20 31 29 20 28 3d 20 6e 20 6c 61 73 74 29 29 ....(and.(or.(=.n.1).(=.n.last))
71300 20 28 73 65 74 71 20 74 65 78 74 20 28 67 70 74 65 6c 2d 2d 74 72 69 6d 2d 70 72 65 66 69 78 65 .(setq.text.(gptel--trim-prefixe
71320 73 20 74 65 78 74 29 29 29 20 61 6e 64 0a 20 20 20 69 66 20 74 65 78 74 0a 20 20 20 63 6f 6c 6c s.text))).and....if.text....coll
71340 65 63 74 20 28 6c 69 73 74 20 3a 74 65 78 74 20 74 65 78 74 29 20 69 6e 74 6f 20 70 61 72 74 73 ect.(list.:text.text).into.parts
71360 2d 61 72 72 61 79 20 65 6e 64 0a 20 20 20 65 6c 73 65 20 69 66 20 6d 65 64 69 61 0a 20 20 20 63 -array.end....else.if.media....c
71380 6f 6c 6c 65 63 74 0a 20 20 20 60 28 3a 69 6e 6c 69 6e 65 5f 64 61 74 61 0a 20 20 20 20 20 28 3a ollect....`(:inline_data......(:
713a0 6d 69 6d 65 5f 74 79 70 65 20 2c 28 70 6c 69 73 74 2d 67 65 74 20 70 61 72 74 20 3a 6d 69 6d 65 mime_type.,(plist-get.part.:mime
713c0 29 0a 20 20 20 20 20 20 3a 64 61 74 61 20 2c 28 67 70 74 65 6c 2d 2d 62 61 73 65 36 34 2d 65 6e ).......:data.,(gptel--base64-en
713e0 63 6f 64 65 20 6d 65 64 69 61 29 29 29 0a 20 20 20 69 6e 74 6f 20 70 61 72 74 73 2d 61 72 72 61 code.media)))....into.parts-arra
71400 79 0a 20 20 20 65 6c 73 65 20 69 66 20 28 70 6c 69 73 74 2d 67 65 74 20 70 61 72 74 20 3a 74 65 y....else.if.(plist-get.part.:te
71420 78 74 66 69 6c 65 29 0a 20 20 20 63 6f 6c 6c 65 63 74 0a 20 20 20 28 6c 69 73 74 20 3a 74 65 78 xtfile)....collect....(list.:tex
71440 74 20 28 77 69 74 68 2d 74 65 6d 70 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 t.(with-temp-buffer.............
71460 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 69 6e 73 65 72 74 2d 66 69 6c 65 2d 73 74 72 69 6e 67 20 .....(gptel--insert-file-string.
71480 28 70 6c 69 73 74 2d 67 65 74 20 70 61 72 74 20 3a 74 65 78 74 66 69 6c 65 29 29 0a 20 20 20 20 (plist-get.part.:textfile)).....
714a0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 2d 73 74 72 69 6e 67 29 29 29 0a 20 .............(buffer-string)))..
714c0 20 20 69 6e 74 6f 20 70 61 72 74 73 2d 61 72 72 61 79 0a 20 20 20 66 69 6e 61 6c 6c 79 20 72 65 ..into.parts-array....finally.re
714e0 74 75 72 6e 20 28 76 63 6f 6e 63 61 74 20 70 61 72 74 73 2d 61 72 72 61 79 29 29 29 0a 0a 28 63 turn.(vconcat.parts-array)))..(c
71500 6c 2d 64 65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 2d 77 72 61 70 2d 75 73 65 72 2d 70 72 6f l-defmethod.gptel--wrap-user-pro
71520 6d 70 74 20 28 28 5f 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 mpt.((_backend.gptel-gemini).pro
71540 6d 70 74 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 mpts............................
71560 20 20 20 20 20 20 20 20 20 20 20 20 26 6f 70 74 69 6f 6e 61 6c 20 69 6e 6a 65 63 74 2d 6d 65 64 ............&optional.inject-med
71580 69 61 29 0a 20 20 22 57 72 61 70 20 74 68 65 20 6c 61 73 74 20 75 73 65 72 20 70 72 6f 6d 70 74 ia)..."Wrap.the.last.user.prompt
715a0 20 69 6e 20 50 52 4f 4d 50 54 53 20 77 69 74 68 20 74 68 65 20 63 6f 6e 74 65 78 74 20 73 74 72 .in.PROMPTS.with.the.context.str
715c0 69 6e 67 2e 0a 0a 49 66 20 49 4e 4a 45 43 54 2d 4d 45 44 49 41 20 69 73 20 6e 6f 6e 2d 6e 69 6c ing...If.INJECT-MEDIA.is.non-nil
715e0 20 77 72 61 70 20 69 74 20 77 69 74 68 20 62 61 73 65 36 34 2d 65 6e 63 6f 64 65 64 20 6d 65 64 .wrap.it.with.base64-encoded.med
71600 69 61 0a 66 69 6c 65 73 20 69 6e 20 74 68 65 20 63 6f 6e 74 65 78 74 2e 22 0a 20 20 28 69 66 20 ia.files.in.the.context."...(if.
71620 69 6e 6a 65 63 74 2d 6d 65 64 69 61 0a 20 20 20 20 20 20 3b 3b 20 57 72 61 70 20 74 68 65 20 66 inject-media.......;;.Wrap.the.f
71640 69 72 73 74 20 75 73 65 72 20 70 72 6f 6d 70 74 20 77 69 74 68 20 69 6e 63 6c 75 64 65 64 20 6d irst.user.prompt.with.included.m
71660 65 64 69 61 20 66 69 6c 65 73 2f 63 6f 6e 74 65 78 74 73 0a 20 20 20 20 20 20 28 77 68 65 6e 2d edia.files/contexts.......(when-
71680 6c 65 74 2a 20 28 28 6d 65 64 69 61 2d 6c 69 73 74 20 28 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 let*.((media-list.(gptel-context
716a0 2d 2d 63 6f 6c 6c 65 63 74 2d 6d 65 64 69 61 29 29 29 0a 20 20 20 20 20 20 20 20 28 63 6c 2d 63 --collect-media))).........(cl-c
716c0 61 6c 6c 66 20 28 6c 61 6d 62 64 61 20 28 63 75 72 72 65 6e 74 29 0a 20 20 20 20 20 20 20 20 20 allf.(lambda.(current)..........
716e0 20 20 20 20 20 20 20 20 20 20 20 28 76 63 6f 6e 63 61 74 20 28 67 70 74 65 6c 2d 2d 67 65 6d 69 ...........(vconcat.(gptel--gemi
71700 6e 69 2d 70 61 72 73 65 2d 6d 75 6c 74 69 70 61 72 74 20 6d 65 64 69 61 2d 6c 69 73 74 29 0a 20 ni-parse-multipart.media-list)..
71720 20 20 20 20 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 75 72 72 ............................curr
71740 65 6e 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 67 65 74 20 28 63 61 ent)).............(plist-get.(ca
71760 72 20 70 72 6f 6d 70 74 73 29 20 3a 70 61 72 74 73 29 29 29 0a 20 20 20 20 3b 3b 20 57 72 61 70 r.prompts).:parts))).....;;.Wrap
71780 20 74 68 65 20 6c 61 73 74 20 75 73 65 72 20 70 72 6f 6d 70 74 20 77 69 74 68 20 69 6e 63 6c 75 .the.last.user.prompt.with.inclu
717a0 64 65 64 20 74 65 78 74 20 63 6f 6e 74 65 78 74 73 0a 20 20 20 20 28 63 6c 2d 63 61 6c 6c 66 20 ded.text.contexts.....(cl-callf.
717c0 28 6c 61 6d 62 64 61 20 28 63 75 72 72 65 6e 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (lambda.(current)...............
717e0 20 20 28 69 66 2d 6c 65 74 2a 20 28 28 77 72 61 70 70 65 64 20 28 67 70 74 65 6c 2d 63 6f 6e 74 ..(if-let*.((wrapped.(gptel-cont
71800 65 78 74 2d 2d 77 72 61 70 20 6e 69 6c 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ext--wrap.nil)))................
71820 20 20 20 20 20 28 76 63 6f 6e 63 61 74 20 60 28 28 3a 74 65 78 74 20 2c 77 72 61 70 70 65 64 29 .....(vconcat.`((:text.,wrapped)
71840 29 20 63 75 72 72 65 6e 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 75 72 ).current)...................cur
71860 72 65 6e 74 29 29 0a 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 67 65 74 20 28 63 61 72 20 28 rent)).........(plist-get.(car.(
71880 6c 61 73 74 20 70 72 6f 6d 70 74 73 29 29 20 3a 70 61 72 74 73 29 29 29 29 0a 0a 28 64 65 66 63 last.prompts)).:parts))))..(defc
718a0 6f 6e 73 74 20 67 70 74 65 6c 2d 2d 67 65 6d 69 6e 69 2d 6d 6f 64 65 6c 73 0a 20 20 27 28 28 67 onst.gptel--gemini-models...'((g
718c0 65 6d 69 6e 69 2d 32 2e 35 2d 70 72 6f 0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 emini-2.5-pro......:description.
718e0 22 4d 6f 73 74 20 70 6f 77 65 72 66 75 6c 20 47 65 6d 69 6e 69 20 74 68 69 6e 6b 69 6e 67 20 6d "Most.powerful.Gemini.thinking.m
71900 6f 64 65 6c 20 77 69 74 68 20 73 74 61 74 65 2d 6f 66 2d 74 68 65 2d 61 72 74 20 70 65 72 66 6f odel.with.state-of-the-art.perfo
71920 72 6d 61 6e 63 65 22 0a 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 74 6f 6f 6c rmance"......:capabilities.(tool
71940 2d 75 73 65 20 6a 73 6f 6e 20 6d 65 64 69 61 20 61 75 64 69 6f 20 76 69 64 65 6f 29 0a 20 20 20 -use.json.media.audio.video)....
71960 20 20 3a 6d 69 6d 65 2d 74 79 70 65 73 20 28 22 69 6d 61 67 65 2f 70 6e 67 22 20 22 69 6d 61 67 ..:mime-types.("image/png"."imag
71980 65 2f 6a 70 65 67 22 20 22 69 6d 61 67 65 2f 77 65 62 70 22 20 22 69 6d 61 67 65 2f 68 65 69 63 e/jpeg"."image/webp"."image/heic
719a0 22 20 22 69 6d 61 67 65 2f 68 65 69 66 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 "."image/heif"..................
719c0 20 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 70 64 66 22 20 22 74 65 78 74 2f 70 6c 61 69 6e 22 20 ."application/pdf"."text/plain".
719e0 22 74 65 78 74 2f 63 73 76 22 20 22 74 65 78 74 2f 68 74 6d 6c 22 0a 20 20 20 20 20 20 20 20 20 "text/csv"."text/html"..........
71a00 20 20 20 20 20 20 20 20 20 22 61 75 64 69 6f 2f 6d 70 65 67 22 20 22 61 75 64 69 6f 2f 77 61 76 ........."audio/mpeg"."audio/wav
71a20 22 20 22 61 75 64 69 6f 2f 6f 67 67 22 20 22 61 75 64 69 6f 2f 66 6c 61 63 22 20 22 61 75 64 69 "."audio/ogg"."audio/flac"."audi
71a40 6f 2f 61 61 63 22 20 22 61 75 64 69 6f 2f 6d 70 33 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 o/aac"."audio/mp3"..............
71a60 20 20 20 20 20 22 76 69 64 65 6f 2f 6d 70 34 22 20 22 76 69 64 65 6f 2f 6d 70 65 67 22 20 22 76 ....."video/mp4"."video/mpeg"."v
71a80 69 64 65 6f 2f 61 76 69 22 20 22 76 69 64 65 6f 2f 71 75 69 63 6b 74 69 6d 65 22 20 22 76 69 64 ideo/avi"."video/quicktime"."vid
71aa0 65 6f 2f 77 65 62 6d 22 29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 31 eo/webm")......:context-window.1
71ac0 30 34 38 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 36 35 35 33 36 20 6f 75 74 70 75 74 048...............;.65536.output
71ae0 20 74 6f 6b 65 6e 20 6c 69 6d 69 74 0a 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 31 2e .token.limit......:input-cost.1.
71b00 32 35 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 32 2e 35 30 20 66 6f 72 25)...................;.2.50.for
71b20 20 3e 32 30 30 6b 20 74 6f 6b 65 6e 73 0a 20 20 20 20 28 67 65 6d 69 6e 69 2d 32 2e 35 2d 70 72 .>200k.tokens.....(gemini-2.5-pr
71b40 6f 2d 65 78 70 2d 30 33 2d 32 35 0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 4c o-exp-03-25......:description."L
71b60 69 6b 65 20 67 65 6d 69 6e 69 2d 32 2e 35 2d 70 72 6f 2d 70 72 65 76 69 65 77 2d 30 33 2d 32 35 ike.gemini-2.5-pro-preview-03-25
71b80 20 62 75 74 20 6c 69 6d 69 74 65 64 20 74 6f 20 35 20 72 65 71 2f 6d 69 6e 2c 20 32 35 20 72 65 .but.limited.to.5.req/min,.25.re
71ba0 71 2f 64 61 79 22 0a 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 74 6f 6f 6c 2d q/day"......:capabilities.(tool-
71bc0 75 73 65 20 6a 73 6f 6e 20 6d 65 64 69 61 29 0a 20 20 20 20 20 3a 6d 69 6d 65 2d 74 79 70 65 73 use.json.media)......:mime-types
71be0 20 28 22 69 6d 61 67 65 2f 70 6e 67 22 20 22 69 6d 61 67 65 2f 6a 70 65 67 22 20 22 69 6d 61 67 .("image/png"."image/jpeg"."imag
71c00 65 2f 77 65 62 70 22 20 22 69 6d 61 67 65 2f 68 65 69 63 22 20 22 69 6d 61 67 65 2f 68 65 69 66 e/webp"."image/heic"."image/heif
71c20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 61 70 70 6c 69 63 61 74 69 6f 6e "..................."application
71c40 2f 70 64 66 22 20 22 74 65 78 74 2f 70 6c 61 69 6e 22 20 22 74 65 78 74 2f 63 73 76 22 20 22 74 /pdf"."text/plain"."text/csv"."t
71c60 65 78 74 2f 68 74 6d 6c 22 29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 ext/html")......:context-window.
71c80 31 30 30 30 0a 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 30 2e 30 30 0a 20 20 20 20 20 1000......:input-cost.0.00......
71ca0 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 30 2e 30 30 29 0a 20 20 20 20 28 67 65 6d 69 6e 69 2d 32 :output-cost.0.00).....(gemini-2
71cc0 2e 35 2d 70 72 6f 2d 70 72 65 76 69 65 77 2d 30 33 2d 32 35 0a 20 20 20 20 20 3a 64 65 73 63 72 .5-pro-preview-03-25......:descr
71ce0 69 70 74 69 6f 6e 20 22 45 6e 68 61 6e 63 65 64 20 72 65 61 73 6f 6e 69 6e 67 2c 20 6d 75 6c 74 iption."Enhanced.reasoning,.mult
71d00 69 6d 6f 64 61 6c 20 75 6e 64 65 72 73 74 61 6e 64 69 6e 67 20 26 20 61 64 76 61 6e 63 65 64 20 imodal.understanding.&.advanced.
71d20 63 6f 64 69 6e 67 22 0a 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 74 6f 6f 6c coding"......:capabilities.(tool
71d40 2d 75 73 65 20 6a 73 6f 6e 20 6d 65 64 69 61 29 0a 20 20 20 20 20 3a 6d 69 6d 65 2d 74 79 70 65 -use.json.media)......:mime-type
71d60 73 20 28 22 69 6d 61 67 65 2f 70 6e 67 22 20 22 69 6d 61 67 65 2f 6a 70 65 67 22 20 22 69 6d 61 s.("image/png"."image/jpeg"."ima
71d80 67 65 2f 77 65 62 70 22 20 22 69 6d 61 67 65 2f 68 65 69 63 22 20 22 69 6d 61 67 65 2f 68 65 69 ge/webp"."image/heic"."image/hei
71da0 66 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 61 70 70 6c 69 63 61 74 69 6f f"..................."applicatio
71dc0 6e 2f 70 64 66 22 20 22 74 65 78 74 2f 70 6c 61 69 6e 22 20 22 74 65 78 74 2f 63 73 76 22 20 22 n/pdf"."text/plain"."text/csv"."
71de0 74 65 78 74 2f 68 74 6d 6c 22 29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 text/html")......:context-window
71e00 20 31 30 30 30 0a 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 31 2e 32 35 20 3b 20 32 2e .1000......:input-cost.1.25.;.2.
71e20 35 30 20 66 6f 72 20 3e 32 30 30 6b 20 74 6f 6b 65 6e 73 0a 20 20 20 20 20 3a 6f 75 74 70 75 74 50.for.>200k.tokens......:output
71e40 2d 63 6f 73 74 20 31 30 2e 30 30 20 3b 20 31 35 20 66 6f 72 20 3e 32 30 30 6b 20 74 6f 6b 65 6e -cost.10.00.;.15.for.>200k.token
71e60 73 0a 20 20 20 20 20 3a 63 75 74 6f 66 66 2d 64 61 74 65 20 22 32 30 32 35 2d 30 31 22 29 0a 20 s......:cutoff-date."2025-01")..
71e80 20 20 20 28 67 65 6d 69 6e 69 2d 32 2e 35 2d 66 6c 61 73 68 2d 70 72 65 76 69 65 77 2d 30 35 2d ...(gemini-2.5-flash-preview-05-
71ea0 32 30 0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 44 45 50 52 45 43 41 54 45 44 20......:description."DEPRECATED
71ec0 3a 20 50 6c 65 61 73 65 20 75 73 65 20 67 65 6d 69 6e 69 2d 32 2e 35 2d 66 6c 61 73 68 20 69 6e :.Please.use.gemini-2.5-flash.in
71ee0 73 74 65 61 64 2e 22 0a 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 74 6f 6f 6c stead."......:capabilities.(tool
71f00 2d 75 73 65 20 6a 73 6f 6e 20 6d 65 64 69 61 29 0a 20 20 20 20 20 3a 6d 69 6d 65 2d 74 79 70 65 -use.json.media)......:mime-type
71f20 73 20 28 22 69 6d 61 67 65 2f 70 6e 67 22 20 22 69 6d 61 67 65 2f 6a 70 65 67 22 20 22 69 6d 61 s.("image/png"."image/jpeg"."ima
71f40 67 65 2f 77 65 62 70 22 20 22 69 6d 61 67 65 2f 68 65 69 63 22 20 22 69 6d 61 67 65 2f 68 65 69 ge/webp"."image/heic"."image/hei
71f60 66 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 61 70 70 6c 69 63 61 74 69 6f f"..................."applicatio
71f80 6e 2f 70 64 66 22 20 22 74 65 78 74 2f 70 6c 61 69 6e 22 20 22 74 65 78 74 2f 63 73 76 22 20 22 n/pdf"."text/plain"."text/csv"."
71fa0 74 65 78 74 2f 68 74 6d 6c 22 29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 text/html")......:context-window
71fc0 20 31 30 34 38 20 3b 20 36 35 35 33 36 20 6f 75 74 70 75 74 20 74 6f 6b 65 6e 20 6c 69 6d 69 74 .1048.;.65536.output.token.limit
71fe0 0a 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 30 2e 31 35 0a 20 20 20 20 20 3a 6f 75 74 ......:input-cost.0.15......:out
72000 70 75 74 2d 63 6f 73 74 20 30 2e 36 30 20 3b 20 33 2e 35 30 20 66 6f 72 20 74 68 69 6e 6b 69 6e put-cost.0.60.;.3.50.for.thinkin
72020 67 0a 20 20 20 20 20 3a 63 75 74 6f 66 66 2d 64 61 74 65 20 22 32 30 32 35 2d 30 31 22 29 0a 20 g......:cutoff-date."2025-01")..
72040 20 20 20 28 67 65 6d 69 6e 69 2d 32 2e 35 2d 66 6c 61 73 68 0a 20 20 20 20 20 3a 64 65 73 63 72 ...(gemini-2.5-flash......:descr
72060 69 70 74 69 6f 6e 20 22 42 65 73 74 20 6d 6f 64 65 6c 20 69 6e 20 74 65 72 6d 73 20 6f 66 20 70 iption."Best.model.in.terms.of.p
72080 72 69 63 65 2d 70 65 72 66 6f 72 6d 61 6e 63 65 2c 20 6f 66 66 65 72 69 6e 67 20 77 65 6c 6c 2d rice-performance,.offering.well-
720a0 72 6f 75 6e 64 65 64 20 63 61 70 61 62 69 6c 69 74 69 65 73 22 0a 20 20 20 20 20 3a 63 61 70 61 rounded.capabilities"......:capa
720c0 62 69 6c 69 74 69 65 73 20 28 74 6f 6f 6c 2d 75 73 65 20 6a 73 6f 6e 20 6d 65 64 69 61 20 61 75 bilities.(tool-use.json.media.au
720e0 64 69 6f 20 76 69 64 65 6f 29 0a 20 20 20 20 20 3a 6d 69 6d 65 2d 74 79 70 65 73 20 28 22 69 6d dio.video)......:mime-types.("im
72100 61 67 65 2f 70 6e 67 22 20 22 69 6d 61 67 65 2f 6a 70 65 67 22 20 22 69 6d 61 67 65 2f 77 65 62 age/png"."image/jpeg"."image/web
72120 70 22 20 22 69 6d 61 67 65 2f 68 65 69 63 22 20 22 69 6d 61 67 65 2f 68 65 69 66 22 0a 20 20 20 p"."image/heic"."image/heif"....
72140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 70 64 66 22 ..............."application/pdf"
72160 20 22 74 65 78 74 2f 70 6c 61 69 6e 22 20 22 74 65 78 74 2f 63 73 76 22 20 22 74 65 78 74 2f 68 ."text/plain"."text/csv"."text/h
72180 74 6d 6c 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 61 75 64 69 6f 2f 6d 70 tml"..................."audio/mp
721a0 65 67 22 20 22 61 75 64 69 6f 2f 77 61 76 22 20 22 61 75 64 69 6f 2f 6f 67 67 22 20 22 61 75 64 eg"."audio/wav"."audio/ogg"."aud
721c0 69 6f 2f 66 6c 61 63 22 20 22 61 75 64 69 6f 2f 61 61 63 22 20 22 61 75 64 69 6f 2f 6d 70 33 22 io/flac"."audio/aac"."audio/mp3"
721e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 76 69 64 65 6f 2f 6d 70 34 22 20 22 ..................."video/mp4"."
72200 76 69 64 65 6f 2f 6d 70 65 67 22 20 22 76 69 64 65 6f 2f 61 76 69 22 20 22 76 69 64 65 6f 2f 71 video/mpeg"."video/avi"."video/q
72220 75 69 63 6b 74 69 6d 65 22 20 22 76 69 64 65 6f 2f 77 65 62 6d 22 29 0a 20 20 20 20 20 3a 63 6f uicktime"."video/webm")......:co
72240 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 31 30 34 38 20 3b 20 36 35 35 33 36 20 6f 75 74 70 75 74 ntext-window.1048.;.65536.output
72260 20 74 6f 6b 65 6e 20 6c 69 6d 69 74 0a 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 30 2e .token.limit......:input-cost.0.
72280 33 0a 20 20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 32 2e 35 30 0a 20 20 20 20 20 3a 63 3......:output-cost.2.50......:c
722a0 75 74 6f 66 66 2d 64 61 74 65 20 22 32 30 32 35 2d 30 31 22 29 0a 20 20 20 20 28 67 65 6d 69 6e utoff-date."2025-01").....(gemin
722c0 69 2d 32 2e 35 2d 70 72 6f 2d 70 72 65 76 69 65 77 2d 30 35 2d 30 36 0a 20 20 20 20 20 3a 64 65 i-2.5-pro-preview-05-06......:de
722e0 73 63 72 69 70 74 69 6f 6e 20 22 50 72 65 76 69 6f 75 73 6c 79 20 6d 6f 73 74 20 70 6f 77 65 72 scription."Previously.most.power
72300 66 75 6c 20 74 68 69 6e 6b 69 6e 67 20 6d 6f 64 65 6c 20 77 69 74 68 20 73 74 61 74 65 2d 6f 66 ful.thinking.model.with.state-of
72320 2d 74 68 65 2d 61 72 74 20 70 65 72 66 6f 72 6d 61 6e 63 65 22 0a 20 20 20 20 20 3a 63 61 70 61 -the-art.performance"......:capa
72340 62 69 6c 69 74 69 65 73 20 28 74 6f 6f 6c 2d 75 73 65 20 6a 73 6f 6e 20 6d 65 64 69 61 29 0a 20 bilities.(tool-use.json.media)..
72360 20 20 20 20 3a 6d 69 6d 65 2d 74 79 70 65 73 20 28 22 69 6d 61 67 65 2f 70 6e 67 22 20 22 69 6d ....:mime-types.("image/png"."im
72380 61 67 65 2f 6a 70 65 67 22 20 22 69 6d 61 67 65 2f 77 65 62 70 22 20 22 69 6d 61 67 65 2f 68 65 age/jpeg"."image/webp"."image/he
723a0 69 63 22 20 22 69 6d 61 67 65 2f 68 65 69 66 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ic"."image/heif"................
723c0 20 20 20 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 70 64 66 22 20 22 74 65 78 74 2f 70 6c 61 69 6e ..."application/pdf"."text/plain
723e0 22 20 22 74 65 78 74 2f 63 73 76 22 20 22 74 65 78 74 2f 68 74 6d 6c 22 29 0a 20 20 20 20 20 3a "."text/csv"."text/html")......:
72400 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 31 30 34 38 20 3b 20 36 35 35 33 36 20 6f 75 74 70 context-window.1048.;.65536.outp
72420 75 74 20 74 6f 6b 65 6e 20 6c 69 6d 69 74 0a 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 ut.token.limit......:input-cost.
72440 31 2e 32 35 20 3b 20 32 2e 35 30 20 66 6f 72 20 3e 32 30 30 6b 20 74 6f 6b 65 6e 73 0a 20 20 20 1.25.;.2.50.for.>200k.tokens....
72460 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 31 30 2e 30 30 29 20 20 20 20 20 20 20 20 20 20 20 ..:output-cost.10.00)...........
72480 20 20 20 20 20 3b 20 31 35 20 66 6f 72 20 3e 32 30 30 6b 20 74 6f 6b 65 6e 73 0a 20 20 20 20 28 .....;.15.for.>200k.tokens.....(
724a0 67 65 6d 69 6e 69 2d 32 2e 35 2d 70 72 6f 2d 70 72 65 76 69 65 77 2d 30 36 2d 30 35 0a 20 20 20 gemini-2.5-pro-preview-06-05....
724c0 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 4d 6f 73 74 20 70 6f 77 65 72 66 75 6c 20 74 68 ..:description."Most.powerful.th
724e0 69 6e 6b 69 6e 67 20 6d 6f 64 65 6c 20 77 69 74 68 20 73 74 61 74 65 2d 6f 66 2d 74 68 65 2d 61 inking.model.with.state-of-the-a
72500 72 74 20 70 65 72 66 6f 72 6d 61 6e 63 65 22 0a 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 rt.performance"......:capabiliti
72520 65 73 20 28 74 6f 6f 6c 2d 75 73 65 20 6a 73 6f 6e 20 6d 65 64 69 61 29 0a 20 20 20 20 20 3a 6d es.(tool-use.json.media)......:m
72540 69 6d 65 2d 74 79 70 65 73 20 28 22 69 6d 61 67 65 2f 70 6e 67 22 20 22 69 6d 61 67 65 2f 6a 70 ime-types.("image/png"."image/jp
72560 65 67 22 20 22 69 6d 61 67 65 2f 77 65 62 70 22 20 22 69 6d 61 67 65 2f 68 65 69 63 22 20 22 69 eg"."image/webp"."image/heic"."i
72580 6d 61 67 65 2f 68 65 69 66 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 61 70 mage/heif"..................."ap
725a0 70 6c 69 63 61 74 69 6f 6e 2f 70 64 66 22 20 22 74 65 78 74 2f 70 6c 61 69 6e 22 20 22 74 65 78 plication/pdf"."text/plain"."tex
725c0 74 2f 63 73 76 22 20 22 74 65 78 74 2f 68 74 6d 6c 22 29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 t/csv"."text/html")......:contex
725e0 74 2d 77 69 6e 64 6f 77 20 31 30 34 38 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 36 35 t-window.1048...............;.65
72600 35 33 36 20 6f 75 74 70 75 74 20 74 6f 6b 65 6e 20 6c 69 6d 69 74 0a 20 20 20 20 20 3a 69 6e 70 536.output.token.limit......:inp
72620 75 74 2d 63 6f 73 74 20 31 2e 32 35 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b ut-cost.1.25...................;
72640 20 32 2e 35 30 20 66 6f 72 20 3e 32 30 30 6b 20 74 6f 6b 65 6e 73 0a 20 20 20 20 20 3a 6f 75 74 .2.50.for.>200k.tokens......:out
72660 70 75 74 2d 63 6f 73 74 20 31 30 2e 30 30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b put-cost.10.00.................;
72680 20 31 35 20 66 6f 72 20 3e 32 30 30 6b 20 74 6f 6b 65 6e 73 0a 20 20 20 20 20 3a 63 75 74 6f 66 .15.for.>200k.tokens......:cutof
726a0 66 2d 64 61 74 65 20 22 32 30 32 35 2d 30 31 22 29 0a 20 20 20 20 28 67 65 6d 69 6e 69 2d 32 2e f-date."2025-01").....(gemini-2.
726c0 35 2d 66 6c 61 73 68 2d 6c 69 74 65 0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 5-flash-lite......:description."
726e0 46 61 73 74 65 73 74 20 61 6e 64 20 63 68 65 61 70 65 73 74 20 32 2e 35 20 6d 6f 64 65 6c 2c 20 Fastest.and.cheapest.2.5.model,.
72700 66 6f 72 20 68 69 67 68 2d 76 6f 6c 75 6d 65 2c 20 6c 61 74 65 6e 63 79 2d 73 65 6e 73 69 74 69 for.high-volume,.latency-sensiti
72720 76 65 20 74 61 73 6b 73 2e 22 0a 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 74 ve.tasks."......:capabilities.(t
72740 6f 6f 6c 2d 75 73 65 20 6a 73 6f 6e 20 6d 65 64 69 61 29 0a 20 20 20 20 20 3a 63 61 70 61 62 69 ool-use.json.media)......:capabi
72760 6c 69 74 69 65 73 20 28 74 6f 6f 6c 2d 75 73 65 20 6a 73 6f 6e 20 6d 65 64 69 61 20 61 75 64 69 lities.(tool-use.json.media.audi
72780 6f 20 76 69 64 65 6f 29 0a 20 20 20 20 20 3a 6d 69 6d 65 2d 74 79 70 65 73 20 28 22 69 6d 61 67 o.video)......:mime-types.("imag
727a0 65 2f 70 6e 67 22 20 22 69 6d 61 67 65 2f 6a 70 65 67 22 20 22 69 6d 61 67 65 2f 77 65 62 70 22 e/png"."image/jpeg"."image/webp"
727c0 20 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 70 64 66 22 20 22 74 65 78 74 2f 70 6c 61 69 6e 22 0a ."application/pdf"."text/plain".
727e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 61 75 64 69 6f 2f 78 2d 61 61 63 22 20 .................."audio/x-aac".
72800 22 61 75 64 69 6f 2f 66 6c 61 63 22 20 22 61 75 64 69 6f 2f 6d 70 33 22 20 22 61 75 64 69 6f 2f "audio/flac"."audio/mp3"."audio/
72820 6d 34 61 22 20 22 61 75 64 69 6f 2f 6d 70 65 67 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 m4a"."audio/mpeg"...............
72840 20 20 20 20 22 61 75 64 69 6f 2f 6d 70 67 61 22 20 22 61 75 64 69 6f 2f 6d 70 34 22 20 22 61 75 ...."audio/mpga"."audio/mp4"."au
72860 64 69 6f 2f 6f 70 75 73 22 20 22 61 75 64 69 6f 2f 70 63 6d 22 20 22 61 75 64 69 6f 2f 77 61 76 dio/opus"."audio/pcm"."audio/wav
72880 22 20 22 61 75 64 69 6f 2f 77 65 62 6d 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 "."audio/webm"..................
728a0 20 22 76 69 64 65 6f 2f 78 2d 66 6c 76 22 20 22 76 69 64 65 6f 2f 71 75 69 63 6b 74 69 6d 65 22 ."video/x-flv"."video/quicktime"
728c0 20 22 76 69 64 65 6f 2f 6d 70 65 67 22 20 22 76 69 64 65 6f 2f 6d 70 34 22 0a 20 20 20 20 20 20 ."video/mpeg"."video/mp4".......
728e0 20 20 20 20 20 20 20 20 20 20 20 20 22 76 69 64 65 6f 2f 77 65 62 6d 22 20 22 76 69 64 65 6f 2f ............"video/webm"."video/
72900 77 6d 76 22 20 22 76 69 64 65 6f 2f 33 67 70 70 22 29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 wmv"."video/3gpp")......:context
72920 2d 77 69 6e 64 6f 77 20 31 30 34 38 20 3b 20 36 34 30 30 30 20 6f 75 74 70 75 74 20 74 6f 6b 65 -window.1048.;.64000.output.toke
72940 6e 20 6c 69 6d 69 74 0a 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 30 2e 31 30 0a 20 20 n.limit......:input-cost.0.10...
72960 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 30 2e 34 30 0a 20 20 20 20 20 3a 63 75 74 6f 66 ...:output-cost.0.40......:cutof
72980 66 2d 64 61 74 65 20 22 32 30 32 35 2d 30 31 22 29 0a 20 20 20 20 28 67 65 6d 69 6e 69 2d 32 2e f-date."2025-01").....(gemini-2.
729a0 35 2d 66 6c 61 73 68 2d 6c 69 74 65 2d 70 72 65 76 69 65 77 2d 30 36 2d 31 37 0a 20 20 20 20 20 5-flash-lite-preview-06-17......
729c0 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 46 61 73 74 65 73 74 20 61 6e 64 20 63 68 65 61 70 65 :description."Fastest.and.cheape
729e0 73 74 20 32 2e 35 20 6d 6f 64 65 6c 2c 20 66 6f 72 20 68 69 67 68 2d 76 6f 6c 75 6d 65 2c 20 6c st.2.5.model,.for.high-volume,.l
72a00 61 74 65 6e 63 79 2d 73 65 6e 73 69 74 69 76 65 20 74 61 73 6b 73 2e 22 0a 20 20 20 20 20 3a 63 atency-sensitive.tasks."......:c
72a20 61 70 61 62 69 6c 69 74 69 65 73 20 28 74 6f 6f 6c 2d 75 73 65 20 6a 73 6f 6e 20 6d 65 64 69 61 apabilities.(tool-use.json.media
72a40 20 61 75 64 69 6f 20 76 69 64 65 6f 29 0a 20 20 20 20 20 3a 6d 69 6d 65 2d 74 79 70 65 73 20 28 .audio.video)......:mime-types.(
72a60 22 69 6d 61 67 65 2f 70 6e 67 22 20 22 69 6d 61 67 65 2f 6a 70 65 67 22 20 22 69 6d 61 67 65 2f "image/png"."image/jpeg"."image/
72a80 77 65 62 70 22 20 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 70 64 66 22 20 22 74 65 78 74 2f 70 6c webp"."application/pdf"."text/pl
72aa0 61 69 6e 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 61 75 64 69 6f 2f 78 2d ain"..................."audio/x-
72ac0 61 61 63 22 20 22 61 75 64 69 6f 2f 66 6c 61 63 22 20 22 61 75 64 69 6f 2f 6d 70 33 22 20 22 61 aac"."audio/flac"."audio/mp3"."a
72ae0 75 64 69 6f 2f 6d 34 61 22 20 22 61 75 64 69 6f 2f 6d 70 65 67 22 0a 20 20 20 20 20 20 20 20 20 udio/m4a"."audio/mpeg"..........
72b00 20 20 20 20 20 20 20 20 20 22 61 75 64 69 6f 2f 6d 70 67 61 22 20 22 61 75 64 69 6f 2f 6d 70 34 ........."audio/mpga"."audio/mp4
72b20 22 20 22 61 75 64 69 6f 2f 6f 70 75 73 22 20 22 61 75 64 69 6f 2f 70 63 6d 22 20 22 61 75 64 69 "."audio/opus"."audio/pcm"."audi
72b40 6f 2f 77 61 76 22 20 22 61 75 64 69 6f 2f 77 65 62 6d 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 o/wav"."audio/webm".............
72b60 20 20 20 20 20 20 22 76 69 64 65 6f 2f 78 2d 66 6c 76 22 20 22 76 69 64 65 6f 2f 71 75 69 63 6b ......"video/x-flv"."video/quick
72b80 74 69 6d 65 22 20 22 76 69 64 65 6f 2f 6d 70 65 67 22 20 22 76 69 64 65 6f 2f 6d 70 34 22 0a 20 time"."video/mpeg"."video/mp4"..
72ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 76 69 64 65 6f 2f 77 65 62 6d 22 20 22 76 ................."video/webm"."v
72bc0 69 64 65 6f 2f 77 6d 76 22 20 22 76 69 64 65 6f 2f 33 67 70 70 22 29 0a 20 20 20 20 20 3a 63 6f ideo/wmv"."video/3gpp")......:co
72be0 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 31 30 34 38 20 3b 20 36 35 35 33 36 20 6f 75 74 70 75 74 ntext-window.1048.;.65536.output
72c00 20 74 6f 6b 65 6e 20 6c 69 6d 69 74 0a 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 30 2e .token.limit......:input-cost.0.
72c20 31 30 0a 20 20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 30 2e 34 30 0a 20 20 20 20 20 3a 10......:output-cost.0.40......:
72c40 63 75 74 6f 66 66 2d 64 61 74 65 20 22 32 30 32 35 2d 30 31 22 29 0a 20 20 20 20 28 67 65 6d 69 cutoff-date."2025-01").....(gemi
72c60 6e 69 2d 32 2e 30 2d 66 6c 61 73 68 0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 ni-2.0-flash......:description."
72c80 4e 65 78 74 20 67 65 6e 2c 20 68 69 67 68 20 73 70 65 65 64 2c 20 6d 75 6c 74 69 6d 6f 64 61 6c Next.gen,.high.speed,.multimodal
72ca0 20 66 6f 72 20 61 20 64 69 76 65 72 73 65 20 76 61 72 69 65 74 79 20 6f 66 20 74 61 73 6b 73 22 .for.a.diverse.variety.of.tasks"
72cc0 0a 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 74 6f 6f 6c 2d 75 73 65 20 6a 73 ......:capabilities.(tool-use.js
72ce0 6f 6e 20 6d 65 64 69 61 29 0a 20 20 20 20 20 3a 6d 69 6d 65 2d 74 79 70 65 73 20 28 22 69 6d 61 on.media)......:mime-types.("ima
72d00 67 65 2f 70 6e 67 22 20 22 69 6d 61 67 65 2f 6a 70 65 67 22 20 22 69 6d 61 67 65 2f 77 65 62 70 ge/png"."image/jpeg"."image/webp
72d20 22 20 22 69 6d 61 67 65 2f 68 65 69 63 22 20 22 69 6d 61 67 65 2f 68 65 69 66 22 0a 20 20 20 20 "."image/heic"."image/heif".....
72d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 70 64 66 22 20 .............."application/pdf".
72d60 22 74 65 78 74 2f 70 6c 61 69 6e 22 20 22 74 65 78 74 2f 63 73 76 22 20 22 74 65 78 74 2f 68 74 "text/plain"."text/csv"."text/ht
72d80 6d 6c 22 29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 31 30 30 30 0a 20 ml")......:context-window.1000..
72da0 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 30 2e 31 30 29 0a 20 20 20 20 28 67 65 6d 69 6e ....:input-cost.0.10).....(gemin
72dc0 69 2d 32 2e 30 2d 66 6c 61 73 68 2d 6c 69 74 65 2d 70 72 65 76 69 65 77 2d 30 32 2d 30 35 0a 20 i-2.0-flash-lite-preview-02-05..
72de0 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 47 65 6d 69 6e 69 20 32 2e 30 20 46 6c 61 ....:description."Gemini.2.0.Fla
72e00 73 68 20 6d 6f 64 65 6c 20 6f 70 74 69 6d 69 7a 65 64 20 66 6f 72 20 63 6f 73 74 20 65 66 66 69 sh.model.optimized.for.cost.effi
72e20 63 69 65 6e 63 79 20 61 6e 64 20 6c 6f 77 20 6c 61 74 65 6e 63 79 22 0a 20 20 20 20 20 3a 63 61 ciency.and.low.latency"......:ca
72e40 70 61 62 69 6c 69 74 69 65 73 20 28 6a 73 6f 6e 29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d pabilities.(json)......:context-
72e60 77 69 6e 64 6f 77 20 31 30 30 30 0a 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 30 2e 30 window.1000......:input-cost.0.0
72e80 37 35 0a 20 20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 30 2e 33 30 0a 20 20 20 20 20 3a 75......:output-cost.0.30......:
72ea0 63 75 74 6f 66 66 2d 64 61 74 65 20 22 32 30 32 34 2d 30 38 22 29 0a 20 20 20 20 28 67 65 6d 69 cutoff-date."2024-08").....(gemi
72ec0 6e 69 2d 32 2e 30 2d 66 6c 61 73 68 2d 65 78 70 0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 ni-2.0-flash-exp......:descripti
72ee0 6f 6e 20 22 4e 65 78 74 20 67 65 6e 65 72 61 74 69 6f 6e 20 66 65 61 74 75 72 65 73 2c 20 73 75 on."Next.generation.features,.su
72f00 70 65 72 69 6f 72 20 73 70 65 65 64 2c 20 6e 61 74 69 76 65 20 74 6f 6f 6c 20 75 73 65 22 0a 20 perior.speed,.native.tool.use"..
72f20 20 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 74 6f 6f 6c 2d 75 73 65 20 6a 73 6f 6e ....:capabilities.(tool-use.json
72f40 20 6d 65 64 69 61 29 0a 20 20 20 20 20 3a 6d 69 6d 65 2d 74 79 70 65 73 20 28 22 69 6d 61 67 65 .media)......:mime-types.("image
72f60 2f 70 6e 67 22 20 22 69 6d 61 67 65 2f 6a 70 65 67 22 20 22 69 6d 61 67 65 2f 77 65 62 70 22 20 /png"."image/jpeg"."image/webp".
72f80 22 69 6d 61 67 65 2f 68 65 69 63 22 20 22 69 6d 61 67 65 2f 68 65 69 66 22 0a 20 20 20 20 20 20 "image/heic"."image/heif".......
72fa0 20 20 20 20 20 20 20 20 20 20 20 20 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 70 64 66 22 20 22 74 ............"application/pdf"."t
72fc0 65 78 74 2f 70 6c 61 69 6e 22 20 22 74 65 78 74 2f 63 73 76 22 20 22 74 65 78 74 2f 68 74 6d 6c ext/plain"."text/csv"."text/html
72fe0 22 29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 31 30 30 30 29 0a 20 20 ")......:context-window.1000)...
73000 20 20 28 67 65 6d 69 6e 69 2d 32 2e 30 2d 66 6c 61 73 68 2d 74 68 69 6e 6b 69 6e 67 2d 65 78 70 ..(gemini-2.0-flash-thinking-exp
73020 2d 30 31 2d 32 31 0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 4e 65 78 74 20 67 -01-21......:description."Next.g
73040 65 6e 2c 20 68 69 67 68 20 73 70 65 65 64 2c 20 6d 75 6c 74 69 6d 6f 64 61 6c 20 66 6f 72 20 61 en,.high.speed,.multimodal.for.a
73060 20 64 69 76 65 72 73 65 20 76 61 72 69 65 74 79 20 6f 66 20 74 61 73 6b 73 22 0a 20 20 20 20 20 .diverse.variety.of.tasks"......
73080 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 6a 73 6f 6e 29 0a 20 20 20 20 20 3a 69 6e 70 75 74 :capabilities.(json)......:input
730a0 2d 63 6f 73 74 20 30 2e 30 30 0a 20 20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 30 2e 30 -cost.0.00......:output-cost.0.0
730c0 30 29 0a 20 20 20 20 28 67 65 6d 69 6e 69 2d 32 2e 30 2d 66 6c 61 73 68 2d 74 68 69 6e 6b 69 6e 0).....(gemini-2.0-flash-thinkin
730e0 67 2d 65 78 70 0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 44 45 50 52 45 43 41 g-exp......:description."DEPRECA
73100 54 45 44 3a 20 50 6c 65 61 73 65 20 75 73 65 20 67 65 6d 69 6e 69 2d 32 2e 30 2d 66 6c 61 73 68 TED:.Please.use.gemini-2.0-flash
73120 2d 74 68 69 6e 6b 69 6e 67 2d 65 78 70 2d 30 31 2d 32 31 20 69 6e 73 74 65 61 64 2e 22 0a 20 20 -thinking-exp-01-21.instead."...
73140 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 74 6f 6f 6c 2d 75 73 65 20 6d 65 64 69 61 ...:capabilities.(tool-use.media
73160 29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 33 32 0a 20 20 20 20 20 3a )......:context-window.32......:
73180 6d 69 6d 65 2d 74 79 70 65 73 20 28 22 69 6d 61 67 65 2f 70 6e 67 22 20 22 69 6d 61 67 65 2f 6a mime-types.("image/png"."image/j
731a0 70 65 67 22 20 22 69 6d 61 67 65 2f 77 65 62 70 22 20 22 69 6d 61 67 65 2f 68 65 69 63 22 20 22 peg"."image/webp"."image/heic"."
731c0 69 6d 61 67 65 2f 68 65 69 66 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 74 image/heif"..................."t
731e0 65 78 74 2f 70 6c 61 69 6e 22 20 22 74 65 78 74 2f 63 73 76 22 20 22 74 65 78 74 2f 68 74 6d 6c ext/plain"."text/csv"."text/html
73200 22 29 29 0a 20 20 20 20 28 67 65 6d 69 6e 69 2d 31 2e 35 2d 70 72 6f 2d 6c 61 74 65 73 74 0a 20 ")).....(gemini-1.5-pro-latest..
73220 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 47 6f 6f 67 6c 65 27 73 20 6c 61 74 65 73 ....:description."Google's.lates
73240 74 20 6d 6f 64 65 6c 20 77 69 74 68 20 65 6e 68 61 6e 63 65 64 20 63 61 70 61 62 69 6c 69 74 69 t.model.with.enhanced.capabiliti
73260 65 73 20 61 63 72 6f 73 73 20 76 61 72 69 6f 75 73 20 74 61 73 6b 73 22 0a 20 20 20 20 20 3a 63 es.across.various.tasks"......:c
73280 61 70 61 62 69 6c 69 74 69 65 73 20 28 74 6f 6f 6c 2d 75 73 65 20 6a 73 6f 6e 20 6d 65 64 69 61 apabilities.(tool-use.json.media
732a0 29 0a 20 20 20 20 20 3a 6d 69 6d 65 2d 74 79 70 65 73 20 28 22 69 6d 61 67 65 2f 70 6e 67 22 20 )......:mime-types.("image/png".
732c0 22 69 6d 61 67 65 2f 6a 70 65 67 22 20 22 69 6d 61 67 65 2f 77 65 62 70 22 20 22 69 6d 61 67 65 "image/jpeg"."image/webp"."image
732e0 2f 68 65 69 63 22 20 22 69 6d 61 67 65 2f 68 65 69 66 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 /heic"."image/heif".............
73300 20 20 20 20 20 20 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 70 64 66 22 20 22 74 65 78 74 2f 70 6c ......"application/pdf"."text/pl
73320 61 69 6e 22 20 22 74 65 78 74 2f 63 73 76 22 20 22 74 65 78 74 2f 68 74 6d 6c 22 29 0a 20 20 20 ain"."text/csv"."text/html")....
73340 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 32 30 30 30 0a 20 20 20 20 20 3b 3b 20 69 ..:context-window.2000......;;.i
73360 6e 70 75 74 20 26 20 6f 75 74 70 75 74 20 70 72 69 63 65 20 69 73 20 68 61 6c 76 65 64 20 66 6f nput.&.output.price.is.halved.fo
73380 72 20 70 72 6f 6d 70 74 73 20 6f 66 20 31 32 38 6b 20 74 6f 6b 65 6e 73 20 6f 72 20 6c 65 73 73 r.prompts.of.128k.tokens.or.less
733a0 0a 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 32 2e 35 30 0a 20 20 20 20 20 3a 6f 75 74 ......:input-cost.2.50......:out
733c0 70 75 74 2d 63 6f 73 74 20 31 30 29 0a 20 20 20 20 28 67 65 6d 69 6e 69 2d 31 2e 35 2d 66 6c 61 put-cost.10).....(gemini-1.5-fla
733e0 73 68 0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 41 20 66 61 73 74 65 72 2c 20 sh......:description."A.faster,.
73400 6d 6f 72 65 20 65 66 66 69 63 69 65 6e 74 20 76 65 72 73 69 6f 6e 20 6f 66 20 47 65 6d 69 6e 69 more.efficient.version.of.Gemini
73420 20 31 2e 35 20 6f 70 74 69 6d 69 7a 65 64 20 66 6f 72 20 73 70 65 65 64 22 0a 20 20 20 20 20 3a .1.5.optimized.for.speed"......:
73440 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 74 6f 6f 6c 2d 75 73 65 20 6a 73 6f 6e 20 6d 65 64 69 capabilities.(tool-use.json.medi
73460 61 29 0a 20 20 20 20 20 3a 6d 69 6d 65 2d 74 79 70 65 73 20 28 22 69 6d 61 67 65 2f 70 6e 67 22 a)......:mime-types.("image/png"
73480 20 22 69 6d 61 67 65 2f 6a 70 65 67 22 20 22 69 6d 61 67 65 2f 77 65 62 70 22 20 22 69 6d 61 67 ."image/jpeg"."image/webp"."imag
734a0 65 2f 68 65 69 63 22 20 22 69 6d 61 67 65 2f 68 65 69 66 22 0a 20 20 20 20 20 20 20 20 20 20 20 e/heic"."image/heif"............
734c0 20 20 20 20 20 20 20 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 70 64 66 22 20 22 74 65 78 74 2f 70 ......."application/pdf"."text/p
734e0 6c 61 69 6e 22 20 22 74 65 78 74 2f 63 73 76 22 20 22 74 65 78 74 2f 68 74 6d 6c 22 29 0a 20 20 lain"."text/csv"."text/html")...
73500 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 31 30 30 30 0a 20 20 20 20 20 3b 3b 20 ...:context-window.1000......;;.
73520 69 6e 70 75 74 20 26 20 6f 75 74 70 75 74 20 70 72 69 63 65 20 69 73 20 68 61 6c 76 65 64 20 66 input.&.output.price.is.halved.f
73540 6f 72 20 70 72 6f 6d 70 74 73 20 6f 66 20 31 32 38 6b 20 74 6f 6b 65 6e 73 20 6f 72 20 6c 65 73 or.prompts.of.128k.tokens.or.les
73560 73 0a 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 30 2e 31 35 0a 20 20 20 20 20 3a 6f 75 s......:input-cost.0.15......:ou
73580 74 70 75 74 2d 63 6f 73 74 20 30 2e 36 30 29 0a 20 20 20 20 28 67 65 6d 69 6e 69 2d 31 2e 35 2d tput-cost.0.60).....(gemini-1.5-
735a0 66 6c 61 73 68 2d 38 62 0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 48 69 67 68 flash-8b......:description."High
735c0 20 76 6f 6c 75 6d 65 20 61 6e 64 20 6c 6f 77 65 72 20 69 6e 74 65 6c 6c 69 67 65 6e 63 65 20 74 .volume.and.lower.intelligence.t
735e0 61 73 6b 73 22 0a 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 74 6f 6f 6c 2d 75 asks"......:capabilities.(tool-u
73600 73 65 20 6a 73 6f 6e 20 6d 65 64 69 61 29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e se.json.media)......:context-win
73620 64 6f 77 20 31 30 30 30 0a 20 20 20 20 20 3a 6d 69 6d 65 2d 74 79 70 65 73 20 28 22 69 6d 61 67 dow.1000......:mime-types.("imag
73640 65 2f 70 6e 67 22 20 22 69 6d 61 67 65 2f 6a 70 65 67 22 20 22 69 6d 61 67 65 2f 77 65 62 70 22 e/png"."image/jpeg"."image/webp"
73660 20 22 69 6d 61 67 65 2f 68 65 69 63 22 20 22 69 6d 61 67 65 2f 68 65 69 66 22 0a 20 20 20 20 20 ."image/heic"."image/heif"......
73680 20 20 20 20 20 20 20 20 20 20 20 20 20 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 70 64 66 22 20 22 ............."application/pdf"."
736a0 74 65 78 74 2f 70 6c 61 69 6e 22 20 22 74 65 78 74 2f 63 73 76 22 20 22 74 65 78 74 2f 68 74 6d text/plain"."text/csv"."text/htm
736c0 6c 22 29 0a 20 20 20 20 20 3b 3b 20 69 6e 70 75 74 20 26 20 6f 75 74 70 75 74 20 70 72 69 63 65 l")......;;.input.&.output.price
736e0 20 69 73 20 68 61 6c 76 65 64 20 66 6f 72 20 70 72 6f 6d 70 74 73 20 6f 66 20 31 32 38 6b 20 74 .is.halved.for.prompts.of.128k.t
73700 6f 6b 65 6e 73 20 6f 72 20 6c 65 73 73 0a 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 30 okens.or.less......:input-cost.0
73720 2e 30 37 35 0a 20 20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 30 2e 33 30 0a 20 20 20 20 .075......:output-cost.0.30.....
73740 20 3a 63 75 74 6f 66 66 2d 64 61 74 65 20 22 32 30 32 34 2d 31 30 22 29 29 0a 20 20 22 4c 69 73 .:cutoff-date."2024-10"))..."Lis
73760 74 20 6f 66 20 61 76 61 69 6c 61 62 6c 65 20 47 65 6d 69 6e 69 20 6d 6f 64 65 6c 73 20 61 6e 64 t.of.available.Gemini.models.and
73780 20 61 73 73 6f 63 69 61 74 65 64 20 70 72 6f 70 65 72 74 69 65 73 2e 0a 4b 65 79 73 3a 0a 0a 2d .associated.properties..Keys:..-
737a0 20 60 3a 64 65 73 63 72 69 70 74 69 6f 6e 27 3a 20 61 20 62 72 69 65 66 20 64 65 73 63 72 69 70 .`:description':.a.brief.descrip
737c0 74 69 6f 6e 20 6f 66 20 74 68 65 20 6d 6f 64 65 6c 2e 0a 0a 2d 20 60 3a 63 61 70 61 62 69 6c 69 tion.of.the.model...-.`:capabili
737e0 74 69 65 73 27 3a 20 61 20 6c 69 73 74 20 6f 66 20 63 61 70 61 62 69 6c 69 74 69 65 73 20 73 75 ties':.a.list.of.capabilities.su
73800 70 70 6f 72 74 65 64 20 62 79 20 74 68 65 20 6d 6f 64 65 6c 2e 0a 0a 2d 20 60 3a 6d 69 6d 65 2d pported.by.the.model...-.`:mime-
73820 74 79 70 65 73 27 3a 20 61 20 6c 69 73 74 20 6f 66 20 73 75 70 70 6f 72 74 65 64 20 4d 49 4d 45 types':.a.list.of.supported.MIME
73840 20 74 79 70 65 73 20 66 6f 72 20 6d 65 64 69 61 20 66 69 6c 65 73 2e 0a 0a 2d 20 60 3a 63 6f 6e .types.for.media.files...-.`:con
73860 74 65 78 74 2d 77 69 6e 64 6f 77 27 3a 20 74 68 65 20 63 6f 6e 74 65 78 74 20 77 69 6e 64 6f 77 text-window':.the.context.window
73880 20 73 69 7a 65 2c 20 69 6e 20 74 68 6f 75 73 61 6e 64 73 20 6f 66 20 74 6f 6b 65 6e 73 2e 0a 0a .size,.in.thousands.of.tokens...
738a0 2d 20 60 3a 69 6e 70 75 74 2d 63 6f 73 74 27 3a 20 74 68 65 20 69 6e 70 75 74 20 63 6f 73 74 2c -.`:input-cost':.the.input.cost,
738c0 20 69 6e 20 55 53 20 64 6f 6c 6c 61 72 73 20 70 65 72 20 6d 69 6c 6c 69 6f 6e 20 74 6f 6b 65 6e .in.US.dollars.per.million.token
738e0 73 2e 0a 0a 2d 20 60 3a 6f 75 74 70 75 74 2d 63 6f 73 74 27 3a 20 74 68 65 20 6f 75 74 70 75 74 s...-.`:output-cost':.the.output
73900 20 63 6f 73 74 2c 20 69 6e 20 55 53 20 64 6f 6c 6c 61 72 73 20 70 65 72 20 6d 69 6c 6c 69 6f 6e .cost,.in.US.dollars.per.million
73920 20 74 6f 6b 65 6e 73 2e 0a 0a 2d 20 60 3a 63 75 74 6f 66 66 2d 64 61 74 65 27 3a 20 74 68 65 20 .tokens...-.`:cutoff-date':.the.
73940 6b 6e 6f 77 6c 65 64 67 65 20 63 75 74 6f 66 66 20 64 61 74 65 2e 0a 0a 2d 20 60 3a 72 65 71 75 knowledge.cutoff.date...-.`:requ
73960 65 73 74 2d 70 61 72 61 6d 73 27 3a 20 61 20 70 6c 69 73 74 20 6f 66 20 61 64 64 69 74 69 6f 6e est-params':.a.plist.of.addition
73980 61 6c 20 72 65 71 75 65 73 74 20 70 61 72 61 6d 65 74 65 72 73 20 74 6f 0a 20 20 69 6e 63 6c 75 al.request.parameters.to...inclu
739a0 64 65 20 77 68 65 6e 20 75 73 69 6e 67 20 74 68 69 73 20 6d 6f 64 65 6c 2e 0a 0a 49 6e 66 6f 72 de.when.using.this.model...Infor
739c0 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 74 68 65 20 47 65 6d 69 6e 69 20 6d 6f 64 65 6c 73 20 77 mation.about.the.Gemini.models.w
739e0 61 73 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 0a 73 as.obtained.from.the.following.s
73a00 6f 75 72 63 65 3a 0a 0a 2d 20 3c 68 74 74 70 73 3a 2f 2f 61 69 2e 67 6f 6f 67 6c 65 2e 64 65 76 ource:..-.<https://ai.google.dev
73a20 2f 70 72 69 63 69 6e 67 3e 0a 2d 20 3c 68 74 74 70 73 3a 2f 2f 63 6c 6f 75 64 2e 67 6f 6f 67 6c /pricing>.-.<https://cloud.googl
73a40 65 2e 63 6f 6d 2f 76 65 72 74 65 78 2d 61 69 2f 67 65 6e 65 72 61 74 69 76 65 2d 61 69 2f 64 6f e.com/vertex-ai/generative-ai/do
73a60 63 73 2f 6c 65 61 72 6e 2f 6d 6f 64 65 6c 73 3e 0a 2d 20 3c 68 74 74 70 73 3a 2f 2f 61 69 2e 67 cs/learn/models>.-.<https://ai.g
73a80 6f 6f 67 6c 65 2e 64 65 76 2f 67 65 6d 69 6e 69 2d 61 70 69 2f 64 6f 63 73 2f 6d 6f 64 65 6c 73 oogle.dev/gemini-api/docs/models
73aa0 3e 22 29 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a 28 63 6c 2d 64 65 66 75 6e 20 67 70 >")..;;;###autoload.(cl-defun.gp
73ac0 74 65 6c 2d 6d 61 6b 65 2d 67 65 6d 69 6e 69 0a 20 20 20 20 28 6e 61 6d 65 20 26 6b 65 79 20 63 tel-make-gemini.....(name.&key.c
73ae0 75 72 6c 2d 61 72 67 73 20 68 65 61 64 65 72 20 6b 65 79 20 72 65 71 75 65 73 74 2d 70 61 72 61 url-args.header.key.request-para
73b00 6d 73 0a 20 20 20 20 20 20 20 20 20 20 28 73 74 72 65 61 6d 20 6e 69 6c 29 0a 20 20 20 20 20 20 ms...........(stream.nil).......
73b20 20 20 20 20 28 68 6f 73 74 20 22 67 65 6e 65 72 61 74 69 76 65 6c 61 6e 67 75 61 67 65 2e 67 6f ....(host."generativelanguage.go
73b40 6f 67 6c 65 61 70 69 73 2e 63 6f 6d 22 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 74 6f 63 ogleapis.com")...........(protoc
73b60 6f 6c 20 22 68 74 74 70 73 22 29 0a 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 65 6c 73 20 67 70 ol."https")...........(models.gp
73b80 74 65 6c 2d 2d 67 65 6d 69 6e 69 2d 6d 6f 64 65 6c 73 29 0a 20 20 20 20 20 20 20 20 20 20 28 65 tel--gemini-models)...........(e
73ba0 6e 64 70 6f 69 6e 74 20 22 2f 76 31 62 65 74 61 2f 6d 6f 64 65 6c 73 22 29 29 0a 0a 20 20 22 52 ndpoint."/v1beta/models"))...."R
73bc0 65 67 69 73 74 65 72 20 61 20 47 65 6d 69 6e 69 20 62 61 63 6b 65 6e 64 20 66 6f 72 20 67 70 74 egister.a.Gemini.backend.for.gpt
73be0 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
73c00 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
73c20 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..
73c40 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 68 6f 73 74 .HOST.(optional).is.the.API.host
73c60 2c 20 64 65 66 61 75 6c 74 73 20 74 6f 0a 5c 22 67 65 6e 65 72 61 74 69 76 65 6c 61 6e 67 75 61 ,.defaults.to.\"generativelangua
73c80 67 65 2e 67 6f 6f 67 6c 65 61 70 69 73 2e 63 6f 6d 5c 22 2e 0a 0a 4d 4f 44 45 4c 53 20 69 73 20 ge.googleapis.com\"...MODELS.is.
73ca0 61 20 6c 69 73 74 20 6f 66 20 61 76 61 69 6c 61 62 6c 65 20 6d 6f 64 65 6c 20 6e 61 6d 65 73 2c a.list.of.available.model.names,
73cc0 20 61 73 20 73 79 6d 62 6f 6c 73 2e 0a 41 64 64 69 74 69 6f 6e 61 6c 6c 79 2c 20 79 6f 75 20 63 .as.symbols..Additionally,.you.c
73ce0 61 6e 20 73 70 65 63 69 66 79 20 73 75 70 70 6f 72 74 65 64 20 4c 4c 4d 20 63 61 70 61 62 69 6c an.specify.supported.LLM.capabil
73d00 69 74 69 65 73 20 6c 69 6b 65 0a 76 69 73 69 6f 6e 20 6f 72 20 74 6f 6f 6c 2d 75 73 65 20 62 79 ities.like.vision.or.tool-use.by
73d20 20 61 70 70 65 6e 64 69 6e 67 20 61 20 70 6c 69 73 74 20 74 6f 20 74 68 65 20 6d 6f 64 65 6c 20 .appending.a.plist.to.the.model.
73d40 77 69 74 68 20 6d 6f 72 65 0a 69 6e 66 6f 72 6d 61 74 69 6f 6e 2c 20 69 6e 20 74 68 65 20 66 6f with.more.information,.in.the.fo
73d60 72 6d 0a 0a 20 28 6d 6f 64 65 6c 2d 6e 61 6d 65 20 2e 20 70 6c 69 73 74 29 0a 0a 46 6f 72 20 61 rm...(model-name...plist)..For.a
73d80 20 6c 69 73 74 20 6f 66 20 63 75 72 72 65 6e 74 6c 79 20 72 65 63 6f 67 6e 69 7a 65 64 20 70 6c .list.of.currently.recognized.pl
73da0 69 73 74 20 6b 65 79 73 2c 20 73 65 65 0a 60 67 70 74 65 6c 2d 2d 67 65 6d 69 6e 69 2d 6d 6f 64 ist.keys,.see.`gptel--gemini-mod
73dc0 65 6c 73 27 2e 20 41 6e 20 65 78 61 6d 70 6c 65 20 6f 66 20 61 20 6d 6f 64 65 6c 20 73 70 65 63 els'..An.example.of.a.model.spec
73de0 69 66 69 63 61 74 69 6f 6e 0a 69 6e 63 6c 75 64 69 6e 67 20 62 6f 74 68 20 6b 69 6e 64 73 20 6f ification.including.both.kinds.o
73e00 66 20 73 70 65 63 73 3a 0a 0a 3a 6d 6f 64 65 6c 73 0a 5c 5c 3d 27 28 67 65 6d 69 6e 69 2d 32 2e f.specs:..:models.\\='(gemini-2.
73e20 30 2d 66 6c 61 73 68 2d 6c 69 74 65 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 53 69 6d 70 6c 0-flash-lite..............;Simpl
73e40 65 20 73 70 65 63 73 0a 20 20 67 65 6d 69 6e 69 2d 31 2e 35 2d 66 6c 61 73 68 0a 20 20 28 67 65 e.specs...gemini-1.5-flash...(ge
73e60 6d 69 6e 69 2d 31 2e 35 2d 70 72 6f 2d 6c 61 74 65 73 74 20 20 20 20 20 20 20 20 20 20 20 20 20 mini-1.5-pro-latest.............
73e80 20 20 20 3b 46 75 6c 6c 20 73 70 65 63 0a 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 0a 20 20 ...;Full.spec....:description...
73ea0 20 5c 22 43 6f 6d 70 6c 65 78 20 72 65 61 73 6f 6e 69 6e 67 20 74 61 73 6b 73 2c 20 70 72 6f 62 .\"Complex.reasoning.tasks,.prob
73ec0 6c 65 6d 20 73 6f 6c 76 69 6e 67 20 61 6e 64 20 64 61 74 61 20 65 78 74 72 61 63 74 69 6f 6e 5c lem.solving.and.data.extraction\
73ee0 22 0a 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 74 6f 6f 6c 20 6a 73 6f 6e 29 0a 20 "....:capabilities.(tool.json)..
73f00 20 20 3a 6d 69 6d 65 2d 74 79 70 65 73 0a 20 20 20 28 5c 22 69 6d 61 67 65 2f 6a 70 65 67 5c 22 ..:mime-types....(\"image/jpeg\"
73f20 20 5c 22 69 6d 61 67 65 2f 70 6e 67 5c 22 20 5c 22 69 6d 61 67 65 2f 77 65 62 70 5c 22 20 5c 22 .\"image/png\".\"image/webp\".\"
73f40 69 6d 61 67 65 2f 68 65 69 63 5c 22 29 29 29 0a 0a 0a 53 54 52 45 41 4d 20 69 73 20 61 20 62 6f image/heic\")))...STREAM.is.a.bo
73f60 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 6e olean.to.enable.streaming.respon
73f80 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 4f ses,.defaults.to.false...PROTOCO
73fa0 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 6f L.(optional).specifies.the.proto
73fc0 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 50 col,.\"https\".by.default...ENDP
73fe0 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 6f OINT.(optional).is.the.API.endpo
74000 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 6f int.for.completions,.defaults.to
74020 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 70 .\"/v1beta/models\"...HEADER.(op
74040 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 72 tional).is.for.additional.header
74060 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 20 49 74 s.to.send.with.each.request...It
74080 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
740a0 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 20 28 n.that.retuns.an.alist,.like:..(
740c0 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 74 69 6f (\"Content-Type\"...\"applicatio
740e0 6e 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 n/json\"))..KEY.(optional).is.a.
74100 76 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 variable.whose.value.is.the.API.
74120 6b 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 key,.or.function.that.returns.th
74140 65 20 6b 65 79 2e 0a 0a 52 45 51 55 45 53 54 2d 50 41 52 41 4d 53 20 28 6f 70 74 69 6f 6e 61 6c e.key...REQUEST-PARAMS.(optional
74160 29 20 69 73 20 61 20 70 6c 69 73 74 20 6f 66 20 61 64 64 69 74 69 6f 6e 61 6c 20 48 54 54 50 20 ).is.a.plist.of.additional.HTTP.
74180 72 65 71 75 65 73 74 0a 70 61 72 61 6d 65 74 65 72 73 20 28 61 73 20 70 6c 69 73 74 20 6b 65 79 request.parameters.(as.plist.key
741a0 73 29 20 61 6e 64 20 76 61 6c 75 65 73 20 73 75 70 70 6f 72 74 65 64 20 62 79 20 74 68 65 20 41 s).and.values.supported.by.the.A
741c0 50 49 2e 20 20 55 73 65 0a 74 68 65 73 65 20 74 6f 20 73 65 74 20 70 61 72 61 6d 65 74 65 72 73 PI...Use.these.to.set.parameters
741e0 20 74 68 61 74 20 67 70 74 65 6c 20 64 6f 65 73 20 6e 6f 74 20 70 72 6f 76 69 64 65 20 75 73 65 .that.gptel.does.not.provide.use
74200 72 20 6f 70 74 69 6f 6e 73 0a 66 6f 72 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 69 6e 64 65 r.options.for."...(declare.(inde
74220 6e 74 20 31 29 29 0a 20 20 28 6c 65 74 20 28 28 62 61 63 6b 65 6e 64 20 28 67 70 74 65 6c 2d 2d nt.1))...(let.((backend.(gptel--
74240 6d 61 6b 65 2d 67 65 6d 69 6e 69 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 make-gemini...................:c
74260 75 72 6c 2d 61 72 67 73 20 63 75 72 6c 2d 61 72 67 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 url-args.curl-args..............
74280 20 20 20 20 20 3a 6e 61 6d 65 20 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .....:name.name.................
742a0 20 20 3a 68 6f 73 74 20 68 6f 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a ..:host.host...................:
742c0 68 65 61 64 65 72 20 68 65 61 64 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 header.header...................
742e0 3a 6d 6f 64 65 6c 73 20 28 67 70 74 65 6c 2d 2d 70 72 6f 63 65 73 73 2d 6d 6f 64 65 6c 73 20 6d :models.(gptel--process-models.m
74300 6f 64 65 6c 73 29 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 odels)...................:protoc
74320 6f 6c 20 70 72 6f 74 6f 63 6f 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 65 ol.protocol...................:e
74340 6e 64 70 6f 69 6e 74 20 65 6e 64 70 6f 69 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ndpoint.endpoint................
74360 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 20 20 20 ...:stream.stream...............
74380 20 20 20 20 3a 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 20 72 65 71 75 65 73 74 2d 70 61 72 61 ....:request-params.request-para
743a0 6d 73 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 ms...................:key.key...
743c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 75 72 6c 20 28 6c 61 6d 62 64 61 20 28 29 0a ................:url.(lambda.().
743e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 .........................(let.((
74400 6d 65 74 68 6f 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 method..........................
74420 20 20 20 20 20 20 20 28 69 66 20 28 61 6e 64 20 73 74 72 65 61 6d 20 67 70 74 65 6c 2d 75 73 65 .......(if.(and.stream.gptel-use
74440 2d 63 75 72 6c 20 67 70 74 65 6c 2d 73 74 72 65 61 6d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 -curl.gptel-stream).............
74460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 73 74 72 65 61 6d 47 ........................"streamG
74480 65 6e 65 72 61 74 65 43 6f 6e 74 65 6e 74 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 enerateContent".................
744a0 20 20 20 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 .................."generateConte
744c0 6e 74 22 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 nt")))..........................
744e0 20 20 28 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 ..(format."%s://%s%s/%s:%s?key=%
74500 73 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 20 s"..............................
74520 20 20 20 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 ......protocol..................
74540 20 20 20 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 ..................host..........
74560 20 20 20 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 ..........................endpoi
74580 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 nt..............................
745a0 20 20 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 ......gptel-model...............
745c0 20 20 20 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 .....................method.....
745e0 20 20 20 20 20 20 20 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 ...............................(
74600 67 70 74 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 gptel--get-api-key))))))).....(p
74620 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 2d rog1.backend.......(setf.(alist-
74640 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 20 get.name.gptel--known-backends..
74660 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 27 ......................nil.nil.#'
74680 65 71 75 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 equal).............backend))))..
746a0 28 70 72 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 (provide.'gptel-gemini).;;;.gpte
746c0 6c 2d 67 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 l-gemini.el.ends.here...........
746e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
74700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
74720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
74740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
74760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
74780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
747a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
747c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
747e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
74800 67 70 74 65 6c 2d 30 2e 39 2e 39 2f 67 70 74 65 6c 2d 74 72 61 6e 73 69 65 6e 74 2e 65 6c 00 00 gptel-0.9.9/gptel-transient.el..
74820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
74840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
74860 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
74880 30 32 34 31 33 32 36 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 34 37 35 35 00 20 30 00 00 00 0241326.00000000000.014755..0...
748a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
748c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
748e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
74900 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...................
74920 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...................
74940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
74960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
74980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
749a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
749c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
749e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
74a00 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
74a20 69 65 6e 74 20 6d 65 6e 75 20 66 6f 72 20 67 70 74 65 6c 20 20 2d 2a 2d 20 6c 65 78 69 63 61 6c ient.menu.for.gptel..-*-.lexical
74a40 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.(
74a60 43 29 20 32 30 32 33 2d 32 30 32 35 20 20 4b 61 72 74 68 69 6b 20 43 68 69 6b 6d 61 67 61 6c 75 C).2023-2025..Karthik.Chikmagalu
74a80 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 61 6c 75 r..;;.Author:.Karthik.Chikmagalu
74aa0 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 6f 6d 3e r.<karthikchikmagalur@gmail.com>
74ac0 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 0a 3b 3b 20 53 50 .;;.Keywords:.convenience..;;.SP
74ae0 44 58 2d 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 DX-License-Identifier:.GPL-3.0-o
74b00 72 2d 6c 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 r-later..;;.This.program.is.free
74b20 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 20 .software;.you.can.redistribute.
74b40 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 65 it.and/or.modify.;;.it.under.the
74b60 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 63 .terms.of.the.GNU.General.Public
74b80 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 20 .License.as.published.by.;;.the.
74ba0 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 72 Free.Software.Foundation,.either
74bc0 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 3b .version.3.of.the.License,.or.;;
74be0 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 73 .(at.your.option).any.later.vers
74c00 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 62 ion...;;.This.program.is.distrib
74c20 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 65 uted.in.the.hope.that.it.will.be
74c40 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 52 .useful,.;;.but.WITHOUT.ANY.WARR
74c60 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 77 ANTY;.without.even.the.implied.w
74c80 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 72 arranty.of.;;.MERCHANTABILITY.or
74ca0 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 53 .FITNESS.FOR.A.PARTICULAR.PURPOS
74cc0 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 69 E...See.the.;;.GNU.General.Publi
74ce0 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 20 c.License.for.more.details...;;.
74d00 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 20 You.should.have.received.a.copy.
74d20 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 73 of.the.GNU.General.Public.Licens
74d40 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 49 e.;;.along.with.this.program...I
74d60 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 2f f.not,.see.<https://www.gnu.org/
74d80 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 3b licenses/>...;;;.Commentary:..;;
74da0 0a 0a 3b 3b 3b 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 ..;;;.Code:.(require.'cl-lib).(r
74dc0 65 71 75 69 72 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 equire.'gptel).(require.'transie
74de0 6e 74 29 0a 0a 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 nt)..(declare-function.ediff-reg
74e00 69 6f 6e 73 2d 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 ions-internal."ediff").(declare-
74e20 66 75 6e 63 74 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 function.ediff-make-cloned-buffe
74e40 72 20 22 65 64 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 r."ediff-utils")....;;.*.Helper.
74e60 66 75 6e 63 74 69 6f 6e 73 20 61 6e 64 20 76 61 72 73 0a 0a 28 64 65 66 76 61 72 2d 6c 6f 63 61 functions.and.vars..(defvar-loca
74e80 6c 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6f 76 65 72 6c 61 79 73 20 6e 69 6c 0a 20 20 l.gptel--rewrite-overlays.nil...
74ea0 22 4c 69 73 74 20 6f 66 20 61 63 74 69 76 65 20 72 65 77 72 69 74 65 20 6f 76 65 72 6c 61 79 73 "List.of.active.rewrite.overlays
74ec0 20 69 6e 20 74 68 65 20 62 75 66 66 65 72 2e 22 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d .in.the.buffer.")..(defun.gptel-
74ee0 2d 72 65 77 72 69 74 65 2d 73 61 6e 69 74 69 7a 65 2d 6f 76 65 72 6c 61 79 73 20 28 29 0a 20 20 -rewrite-sanitize-overlays.()...
74f00 22 45 6e 73 75 72 65 20 67 70 74 65 6c 27 73 20 72 65 77 72 69 74 65 20 6f 76 65 72 6c 61 79 73 "Ensure.gptel's.rewrite.overlays
74f20 20 69 6e 20 62 75 66 66 65 72 20 61 72 65 20 63 6f 6e 73 69 73 74 65 6e 74 2e 22 0a 20 20 28 73 .in.buffer.are.consistent."...(s
74f40 65 74 71 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6f 76 65 72 6c 61 79 73 0a 20 20 20 20 etq.gptel--rewrite-overlays.....
74f60 20 20 20 20 28 63 6c 2d 64 65 6c 65 74 65 2d 69 66 2d 6e 6f 74 20 23 27 6f 76 65 72 6c 61 79 2d ....(cl-delete-if-not.#'overlay-
74f80 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 20 20 20 buffer..........................
74fa0 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6f 76 65 72 6c 61 79 73 29 29 29 0a 0a 28 64 65 .gptel--rewrite-overlays)))..(de
74fc0 66 76 61 72 20 67 70 74 65 6c 2d 2d 73 65 74 2d 62 75 66 66 65 72 2d 6c 6f 63 61 6c 6c 79 20 6e fvar.gptel--set-buffer-locally.n
74fe0 69 6c 0a 20 20 22 53 65 74 20 6d 6f 64 65 6c 20 70 61 72 61 6d 65 74 65 72 73 20 66 72 6f 6d 20 il..."Set.model.parameters.from.
75000 60 67 70 74 65 6c 2d 6d 65 6e 75 27 20 62 75 66 66 65 72 2d 6c 6f 63 61 6c 6c 79 2e 0a 0a 41 66 `gptel-menu'.buffer-locally...Af
75020 66 65 63 74 73 20 74 68 65 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 20 74 6f 6f 2e 22 29 0a fects.the.system.message.too.").
75040 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 73 65 74 2d 77 69 74 68 2d 73 63 6f 70 65 20 28 73 .(defun.gptel--set-with-scope.(s
75060 79 6d 20 76 61 6c 75 65 20 26 6f 70 74 69 6f 6e 61 6c 20 73 63 6f 70 65 29 0a 20 20 22 53 65 74 ym.value.&optional.scope)..."Set
75080 20 53 59 4d 42 4f 4c 27 73 20 73 79 6d 62 6f 6c 2d 76 61 6c 75 65 20 74 6f 20 56 41 4c 55 45 20 .SYMBOL's.symbol-value.to.VALUE.
750a0 77 69 74 68 20 53 43 4f 50 45 2e 0a 0a 49 66 20 53 43 4f 50 45 20 69 73 20 74 2c 20 73 65 74 20 with.SCOPE...If.SCOPE.is.t,.set.
750c0 69 74 20 62 75 66 66 65 72 2d 6c 6f 63 61 6c 6c 79 2e 0a 49 66 20 53 43 4f 50 45 20 69 73 20 31 it.buffer-locally..If.SCOPE.is.1
750e0 2c 20 72 65 73 65 74 20 69 74 20 61 66 74 65 72 20 74 68 65 20 6e 65 78 74 20 67 70 74 65 6c 2d ,.reset.it.after.the.next.gptel-
75100 72 65 71 75 65 73 74 2e 20 28 6f 6e 65 73 68 6f 74 29 0a 4f 74 68 65 72 77 69 73 65 2c 20 63 6c request..(oneshot).Otherwise,.cl
75120 65 61 72 20 61 6e 79 20 62 75 66 66 65 72 2d 6c 6f 63 61 6c 20 76 61 6c 75 65 20 61 6e 64 20 73 ear.any.buffer-local.value.and.s
75140 65 74 20 69 74 73 20 64 65 66 61 75 6c 74 0a 67 6c 6f 62 61 6c 20 76 61 6c 75 65 2e 22 0a 20 20 et.its.default.global.value."...
75160 28 70 63 61 73 65 20 73 63 6f 70 65 0a 20 20 20 20 28 31 20 28 70 75 74 20 73 79 6d 20 27 67 70 (pcase.scope.....(1.(put.sym.'gp
75180 74 65 6c 2d 68 69 73 74 6f 72 79 20 28 73 79 6d 62 6f 6c 2d 76 61 6c 75 65 20 73 79 6d 29 29 0a tel-history.(symbol-value.sym)).
751a0 20 20 20 20 20 20 20 28 73 65 74 20 73 79 6d 20 76 61 6c 75 65 29 0a 20 20 20 20 20 20 20 28 6c .......(set.sym.value)........(l
751c0 65 74 72 65 63 20 28 28 72 65 73 74 6f 72 65 2d 76 61 6c 75 65 0a 20 20 20 20 20 20 20 20 20 20 etrec.((restore-value...........
751e0 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .......(lambda.()...............
75200 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 6f 73 74 2d 72 65 .....(remove-hook.'gptel-post-re
75220 71 75 65 73 74 2d 68 6f 6f 6b 20 72 65 73 74 6f 72 65 2d 76 61 6c 75 65 29 0a 20 20 20 20 20 20 quest-hook.restore-value).......
75240 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 75 6e 2d 61 74 2d 74 69 6d 65 20 20 20 20 20 20 20 .............(run-at-time.......
75260 20 20 3b 20 52 65 71 75 69 72 65 64 20 74 6f 20 77 6f 72 6b 20 61 72 6f 75 6e 64 20 6c 65 74 20 ..;.Required.to.work.around.let.
75280 62 69 6e 64 69 6e 67 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 30 20 6e bindings.....................0.n
752a0 69 6c 20 28 6c 61 6d 62 64 61 20 28 73 29 20 20 20 20 20 20 20 20 3b 20 6f 74 68 65 72 77 69 73 il.(lambda.(s)........;.otherwis
752c0 65 20 74 68 69 73 20 63 68 61 6e 67 65 20 69 73 20 6f 76 65 72 77 72 69 74 74 65 6e 21 0a 20 20 e.this.change.is.overwritten!...
752e0 20 20 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 20 73 ..........................(set.s
75300 20 28 67 65 74 20 73 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 .(get.s.'gptel-history))........
75320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 74 20 73 20 27 67 70 74 .....................(put.s.'gpt
75340 65 6c 2d 68 69 73 74 6f 72 79 20 6e 69 6c 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 el-history.nil))................
75360 20 20 20 20 20 73 79 6d 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 61 64 64 2d 68 6f 6f 6b 20 .....sym))))..........(add-hook.
75380 27 67 70 74 65 6c 2d 70 6f 73 74 2d 72 65 71 75 65 73 74 2d 68 6f 6f 6b 20 72 65 73 74 6f 72 65 'gptel-post-request-hook.restore
753a0 2d 76 61 6c 75 65 29 29 29 0a 20 20 20 20 28 27 74 20 28 73 65 74 20 28 6d 61 6b 65 2d 6c 6f 63 -value))).....('t.(set.(make-loc
753c0 61 6c 2d 76 61 72 69 61 62 6c 65 20 73 79 6d 29 20 76 61 6c 75 65 29 29 0a 20 20 20 20 28 5f 20 al-variable.sym).value)).....(_.
753e0 28 6b 69 6c 6c 2d 6c 6f 63 61 6c 2d 76 61 72 69 61 62 6c 65 20 73 79 6d 29 0a 20 20 20 20 20 20 (kill-local-variable.sym).......
75400 20 28 73 65 74 20 73 79 6d 20 76 61 6c 75 65 29 29 29 29 0a 0a 28 64 65 66 76 61 72 20 67 70 74 .(set.sym.value))))..(defvar.gpt
75420 65 6c 2d 2d 70 72 65 73 65 74 20 6e 69 6c 0a 20 20 22 4e 61 6d 65 20 6f 66 20 6c 61 73 74 20 61 el--preset.nil..."Name.of.last.a
75440 70 70 6c 69 65 64 20 67 70 74 65 6c 20 70 72 65 73 65 74 2e 0a 0a 46 6f 72 20 69 6e 74 65 72 6e pplied.gptel.preset...For.intern
75460 61 6c 20 75 73 65 20 6f 6e 6c 79 2e 22 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 70 72 al.use.only.")..(defun.gptel--pr
75480 65 73 65 74 2d 6d 69 73 6d 61 74 63 68 2d 70 20 28 6e 61 6d 65 29 0a 20 20 22 43 68 65 63 6b 20 eset-mismatch-p.(name)..."Check.
754a0 69 66 20 67 70 74 65 6c 20 70 72 65 73 65 74 20 77 69 74 68 20 4e 41 4d 45 20 69 73 20 69 6e 20 if.gptel.preset.with.NAME.is.in.
754c0 65 66 66 65 63 74 2e 22 0a 20 20 28 6c 65 74 20 28 28 65 6c 6d 20 28 6f 72 20 28 67 70 74 65 6c effect."...(let.((elm.(or.(gptel
754e0 2d 67 65 74 2d 70 72 65 73 65 74 20 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -get-preset.name)...............
75500 20 20 20 28 67 70 74 65 6c 2d 67 65 74 2d 70 72 65 73 65 74 20 28 69 6e 74 65 72 6e 2d 73 6f 66 ...(gptel-get-preset.(intern-sof
75520 74 20 6e 61 6d 65 29 29 29 29 0a 20 20 20 20 20 20 20 20 6b 65 79 20 76 61 6c 29 0a 20 20 20 20 t.name)))).........key.val).....
75540 28 63 61 74 63 68 20 27 6d 69 73 6d 61 74 63 68 0a 20 20 20 20 20 20 28 77 68 69 6c 65 20 65 6c (catch.'mismatch.......(while.el
75560 6d 0a 20 20 20 20 20 20 20 20 28 73 65 74 71 20 6b 65 79 20 28 70 6f 70 20 65 6c 6d 29 20 76 61 m.........(setq.key.(pop.elm).va
75580 6c 20 28 70 6f 70 20 65 6c 6d 29 29 0a 20 20 20 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 l.(pop.elm)).........(cond......
755a0 20 20 20 20 28 28 6d 65 6d 71 20 6b 65 79 20 27 28 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 3a 70 ....((memq.key.'(:description.:p
755c0 61 72 65 6e 74 73 29 29 20 27 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 28 28 65 71 20 6b 65 79 arents)).'nil)..........((eq.key
755e0 20 3a 73 79 73 74 65 6d 29 0a 20 20 20 20 20 20 20 20 20 20 28 6f 72 20 28 65 71 75 61 6c 20 67 .:system)...........(or.(equal.g
75600 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 20 76 61 6c 29 0a 20 20 20 20 20 20 ptel--system-message.val).......
75620 20 20 20 20 20 20 20 20 28 61 6e 64 2d 6c 65 74 2a 20 28 28 28 73 79 6d 62 6f 6c 70 20 76 61 6c ........(and-let*.(((symbolp.val
75640 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 20 28 ))..........................(p.(
75660 61 73 73 71 20 76 61 6c 20 67 70 74 65 6c 2d 64 69 72 65 63 74 69 76 65 73 29 29 29 0a 20 20 20 assq.val.gptel-directives)))....
75680 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 71 75 61 6c 20 67 70 74 65 6c 2d 2d 73 79 73 74 65 .............(equal.gptel--syste
756a0 6d 2d 6d 65 73 73 61 67 65 20 28 63 64 72 20 70 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 m-message.(cdr.p))).............
756c0 20 20 28 74 68 72 6f 77 20 27 6d 69 73 6d 61 74 63 68 20 74 29 29 29 0a 20 20 20 20 20 20 20 20 ..(throw.'mismatch.t))).........
756e0 20 28 28 65 71 20 6b 65 79 20 3a 62 61 63 6b 65 6e 64 29 0a 20 20 20 20 20 20 20 20 20 20 28 6f .((eq.key.:backend)...........(o
75700 72 20 28 69 66 20 28 73 74 72 69 6e 67 70 20 76 61 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 r.(if.(stringp.val).............
75720 20 20 20 20 20 20 28 65 71 75 61 6c 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 ......(equal.(gptel-backend-name
75740 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 20 76 61 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 .gptel-backend).val)............
75760 20 20 20 20 20 28 65 71 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 76 61 6c 29 29 0a 20 20 20 .....(eq.gptel-backend.val))....
75780 20 20 20 20 20 20 20 20 20 20 20 28 74 68 72 6f 77 20 27 6d 69 73 6d 61 74 63 68 20 74 29 29 29 ...........(throw.'mismatch.t)))
757a0 0a 20 20 20 20 20 20 20 20 20 28 28 65 71 20 6b 65 79 20 3a 74 6f 6f 6c 73 29 0a 20 20 20 20 20 ..........((eq.key.:tools)......
757c0 20 20 20 20 20 28 69 66 20 28 65 71 20 28 63 61 72 2d 73 61 66 65 20 76 61 6c 29 20 3a 61 70 70 .....(if.(eq.(car-safe.val).:app
757e0 65 6e 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 end)...............(cl-loop.for.
75800 6e 61 6d 65 20 69 6e 20 28 63 64 72 20 76 61 6c 29 20 3b 70 72 65 73 65 74 20 74 6f 6f 6c 73 20 name.in.(cdr.val).;preset.tools.
75820 63 6f 6e 74 61 69 6e 65 64 20 69 6e 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 0a 20 20 20 20 20 20 20 contained.in.gptel-tools........
75840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 6e 6c 65 73 73 20 28 6d 65 6d 71 20 28 67 70 ................unless.(memq.(gp
75860 74 65 6c 2d 67 65 74 2d 74 6f 6f 6c 20 6e 61 6d 65 29 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 29 0a tel-get-tool.name).gptel-tools).
75880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 20 28 74 68 72 6f 77 .......................do.(throw
758a0 20 27 6d 69 73 6d 61 74 63 68 20 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 20 28 .'mismatch.t)).............(or.(
758c0 65 71 75 61 6c 20 28 73 6f 72 74 20 76 61 6c 20 23 27 73 74 72 69 6e 67 2d 6c 65 73 73 70 29 20 equal.(sort.val.#'string-lessp).
758e0 3b 70 72 65 73 65 74 20 74 6f 6f 6c 73 20 73 61 6d 65 20 61 73 20 67 70 74 65 6c 2d 74 6f 6f 6c ;preset.tools.same.as.gptel-tool
75900 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 73 6f 72 74 20 28 s........................(sort.(
75920 6d 61 70 63 61 72 20 23 27 67 70 74 65 6c 2d 74 6f 6f 6c 2d 6e 61 6d 65 20 67 70 74 65 6c 2d 74 mapcar.#'gptel-tool-name.gptel-t
75940 6f 6f 6c 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 ools)...........................
75960 20 20 20 23 27 73 74 72 69 6e 67 2d 6c 65 73 73 70 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 ...#'string-lessp)).............
75980 20 20 20 20 28 74 68 72 6f 77 20 27 6d 69 73 6d 61 74 63 68 20 74 29 29 29 29 0a 20 20 20 20 20 ....(throw.'mismatch.t))))......
759a0 20 20 20 20 28 74 20 28 6c 65 74 2a 20 28 28 73 75 66 66 69 78 20 28 73 75 62 73 74 72 69 6e 67 ....(t.(let*.((suffix.(substring
759c0 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 66 .............................(if
759e0 20 28 73 79 6d 62 6f 6c 70 20 6b 65 79 29 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 6b 65 79 29 .(symbolp.key).(symbol-name.key)
75a00 20 6b 65 79 29 20 31 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 79 .key).1))....................(sy
75a20 6d 20 28 6f 72 20 28 69 6e 74 65 72 6e 2d 73 6f 66 74 20 28 63 6f 6e 63 61 74 20 22 67 70 74 65 m.(or.(intern-soft.(concat."gpte
75a40 6c 2d 22 20 73 75 66 66 69 78 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 l-".suffix))....................
75a60 20 20 20 20 20 20 20 20 20 28 69 6e 74 65 72 6e 2d 73 6f 66 74 20 28 63 6f 6e 63 61 74 20 22 67 .........(intern-soft.(concat."g
75a80 70 74 65 6c 2d 2d 22 20 73 75 66 66 69 78 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 ptel--".suffix))))).............
75aa0 20 20 28 6f 72 20 28 6e 75 6c 6c 20 73 79 6d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..(or.(null.sym)................
75ac0 20 20 20 28 61 6e 64 20 28 62 6f 75 6e 64 70 20 73 79 6d 29 20 28 65 71 75 61 6c 20 28 65 76 61 ...(and.(boundp.sym).(equal.(eva
75ae0 6c 20 73 79 6d 29 20 76 61 6c 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 l.sym).val))...................(
75b00 74 68 72 6f 77 20 27 6d 69 73 6d 61 74 63 68 20 74 29 29 29 29 29 29 29 29 29 0a 0a 28 64 65 66 throw.'mismatch.t)))))))))..(def
75b20 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 20 un.gptel--get-directive.(args)..
75b40 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 20 ."Find.the.additional.directive.
75b60 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 6f in.the.transient.ARGS...Meant.to
75b80 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 20 .be.called.when.`gptel-menu'.is.
75ba0 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 20 active."...(cl-some.(lambda.(s).
75bc0 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 2d (and.(stringp.s).(string-prefix-
75be0 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 20 p.":".s)........................
75c00 28 73 75 62 73 74 72 69 6e 67 20 73 20 31 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (substring.s.1)))...............
75c20 20 20 20 20 61 72 67 73 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 69 6e 73 74 72 75 ....args))..(defun.gptel--instru
75c40 63 74 69 6f 6e 73 2d 6d 61 6b 65 2d 6f 76 65 72 6c 61 79 20 28 74 65 78 74 20 26 6f 70 74 69 6f ctions-make-overlay.(text.&optio
75c60 6e 61 6c 20 6f 76 29 0a 20 20 22 4d 61 6b 65 20 6f 72 20 6d 6f 76 65 20 6f 76 65 72 6c 61 79 20 nal.ov)..."Make.or.move.overlay.
75c80 4f 56 20 77 69 74 68 20 54 45 58 54 2e 22 0a 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e OV.with.TEXT."...(save-excursion
75ca0 0a 20 20 20 20 3b 3b 20 4d 6f 76 65 20 70 6f 69 6e 74 20 74 6f 20 6f 76 65 72 6c 61 79 20 70 6f .....;;.Move.point.to.overlay.po
75cc0 73 69 74 69 6f 6e 0a 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 28 28 75 73 65 2d 72 65 67 69 sition.....(cond......((use-regi
75ce0 6f 6e 2d 70 29 0a 20 20 20 20 20 20 28 69 66 20 28 70 6f 73 2d 76 69 73 69 62 6c 65 2d 69 6e 2d on-p).......(if.(pos-visible-in-
75d00 77 69 6e 64 6f 77 2d 70 20 28 72 65 67 69 6f 6e 2d 62 65 67 69 6e 6e 69 6e 67 29 29 0a 20 20 20 window-p.(region-beginning))....
75d20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 72 65 67 69 6f 6e 2d 62 65 67 69 6e 6e .......(goto-char.(region-beginn
75d40 69 6e 67 29 29 29 29 0a 20 20 20 20 20 28 28 67 70 74 65 6c 2d 2d 69 6e 2d 72 65 73 70 6f 6e 73 ing))))......((gptel--in-respons
75d60 65 2d 70 29 0a 20 20 20 20 20 20 28 67 70 74 65 6c 2d 62 65 67 69 6e 6e 69 6e 67 2d 6f 66 2d 72 e-p).......(gptel-beginning-of-r
75d80 65 73 70 6f 6e 73 65 29 0a 20 20 20 20 20 20 28 73 6b 69 70 2d 63 68 61 72 73 2d 66 6f 72 77 61 esponse).......(skip-chars-forwa
75da0 72 64 20 22 5c 6e 20 5c 74 22 29 29 0a 20 20 20 20 20 28 74 20 28 74 65 78 74 2d 70 72 6f 70 65 rd."\n.\t"))......(t.(text-prope
75dc0 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 73 70 rty-search-backward.'gptel.'resp
75de0 6f 6e 73 65 29 0a 20 20 20 20 20 20 20 20 28 73 6b 69 70 2d 63 68 61 72 73 2d 66 6f 72 77 61 72 onse).........(skip-chars-forwar
75e00 64 20 22 5c 6e 20 5c 74 22 29 29 29 0a 20 20 20 20 3b 3b 20 4d 61 6b 65 20 6f 76 65 72 6c 61 79 d."\n.\t"))).....;;.Make.overlay
75e20 0a 20 20 20 20 28 69 66 20 28 61 6e 64 20 6f 76 20 28 6f 76 65 72 6c 61 79 70 20 6f 76 29 29 0a .....(if.(and.ov.(overlayp.ov)).
75e40 20 20 20 20 20 20 20 20 28 6d 6f 76 65 2d 6f 76 65 72 6c 61 79 20 6f 76 20 28 70 6f 69 6e 74 29 ........(move-overlay.ov.(point)
75e60 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 20 20 20 20 .(point).(current-buffer))......
75e80 20 28 73 65 74 71 20 6f 76 20 28 6d 61 6b 65 2d 6f 76 65 72 6c 61 79 20 28 70 6f 69 6e 74 29 20 .(setq.ov.(make-overlay.(point).
75ea0 28 70 6f 69 6e 74 29 20 6e 69 6c 20 74 29 29 29 0a 20 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75 (point).nil.t))).....(overlay-pu
75ec0 74 20 6f 76 20 27 62 65 66 6f 72 65 2d 73 74 72 69 6e 67 20 6e 69 6c 29 0a 20 20 20 20 3b 3b 20 t.ov.'before-string.nil).....;;.
75ee0 28 75 6e 6c 65 73 73 20 28 6f 72 20 28 62 6f 62 70 29 20 28 65 71 20 28 63 68 61 72 2d 62 65 66 (unless.(or.(bobp).(eq.(char-bef
75f00 6f 72 65 29 20 22 5c 6e 22 29 29 0a 20 20 20 20 3b 3b 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75 ore)."\n")).....;;...(overlay-pu
75f20 74 20 6f 76 20 27 62 65 66 6f 72 65 2d 73 74 72 69 6e 67 20 28 70 72 6f 70 65 72 74 69 7a 65 20 t.ov.'before-string.(propertize.
75f40 22 5c 6e 22 20 27 66 6f 6e 74 2d 6c 6f 63 6b 2d 66 61 63 65 20 27 73 68 61 64 6f 77 29 29 29 0a "\n".'font-lock-face.'shadow))).
75f60 20 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75 74 20 6f 76 20 27 63 61 74 65 67 6f 72 79 20 27 67 ....(overlay-put.ov.'category.'g
75f80 70 74 65 6c 29 0a 20 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75 74 0a 20 20 20 20 20 6f 76 20 27 ptel).....(overlay-put......ov.'
75fa0 61 66 74 65 72 2d 73 74 72 69 6e 67 0a 20 20 20 20 20 28 63 6f 6e 63 61 74 20 28 70 72 6f 70 65 after-string......(concat.(prope
75fc0 72 74 69 7a 65 20 28 63 6f 6e 63 61 74 20 22 44 49 52 45 43 54 49 56 45 3a 20 22 20 74 65 78 74 rtize.(concat."DIRECTIVE:.".text
75fe0 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 27 66 6f 6e 74 )..........................'font
76000 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 77 20 3a 77 65 -lock-face.'(:inherit.shadow.:we
76020 69 67 68 74 20 62 6f 6c 64 20 20 3a 62 6f 78 20 74 29 29 0a 20 20 20 20 20 20 22 5c 6e 22 29 29 ight.bold..:box.t))......."\n"))
76040 0a 20 20 20 20 6f 76 29 29 0a 0a 28 64 65 66 63 6f 6e 73 74 20 67 70 74 65 6c 2d 2d 72 65 61 64 .....ov))..(defconst.gptel--read
76060 2d 77 69 74 68 2d 70 72 65 66 69 78 2d 68 65 6c 70 0a 20 20 28 63 6f 6e 63 61 74 0a 20 20 20 28 -with-prefix-help...(concat....(
76080 70 72 6f 70 65 72 74 69 7a 65 20 22 54 41 42 22 20 27 66 61 63 65 20 27 68 65 6c 70 2d 6b 65 79 propertize."TAB".'face.'help-key
760a0 2d 62 69 6e 64 69 6e 67 29 0a 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 3a 20 65 78 70 61 -binding)....(propertize.":.expa
760c0 6e 64 2c 20 22 20 27 66 61 63 65 20 27 64 65 66 61 75 6c 74 29 0a 20 20 20 28 70 72 6f 70 65 72 nd,.".'face.'default)....(proper
760e0 74 69 7a 65 20 22 4d 2d 6e 22 20 27 66 61 63 65 20 27 68 65 6c 70 2d 6b 65 79 2d 62 69 6e 64 69 tize."M-n".'face.'help-key-bindi
76100 6e 67 29 0a 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 2f 22 20 27 66 61 63 65 20 27 64 65 ng)....(propertize."/".'face.'de
76120 66 61 75 6c 74 29 0a 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 4d 2d 70 22 20 27 66 61 63 fault)....(propertize."M-p".'fac
76140 65 20 27 68 65 6c 70 2d 6b 65 79 2d 62 69 6e 64 69 6e 67 29 0a 20 20 20 28 70 72 6f 70 65 72 74 e.'help-key-binding)....(propert
76160 69 7a 65 20 22 3a 20 6e 65 78 74 2f 70 72 65 76 69 6f 75 73 22 20 27 66 61 63 65 20 27 64 65 66 ize.":.next/previous".'face.'def
76180 61 75 6c 74 29 29 0a 20 20 22 48 65 6c 70 20 73 74 72 69 6e 67 20 3b 54 4f 44 4f 3a 20 22 29 0a ault))..."Help.string.;TODO:.").
761a0 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 72 65 61 64 2d 77 69 74 68 2d 70 72 65 66 69 78 20 .(defun.gptel--read-with-prefix.
761c0 28 70 72 65 66 69 78 29 0a 20 20 22 53 68 6f 77 20 73 74 72 69 6e 67 20 50 52 45 46 49 58 20 69 (prefix)..."Show.string.PREFIX.i
761e0 6e 20 74 68 65 20 6d 69 6e 69 62 75 66 66 65 72 20 61 66 74 65 72 20 74 68 65 20 6d 69 6e 69 62 n.the.minibuffer.after.the.minib
76200 75 66 66 65 72 20 70 72 6f 6d 70 74 2e 0a 0a 50 52 45 46 49 58 20 69 73 20 73 68 6f 77 6e 20 69 uffer.prompt...PREFIX.is.shown.i
76220 6e 20 61 6e 20 6f 76 65 72 6c 61 79 2e 20 20 52 65 70 65 61 74 65 64 20 63 61 6c 6c 73 20 74 6f n.an.overlay...Repeated.calls.to
76240 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 0a 77 69 6c 6c 20 74 6f 67 67 6c 65 20 69 74 73 20 76 .this.function.will.toggle.its.v
76260 69 73 69 62 69 6c 69 74 79 20 73 74 61 74 65 2e 22 0a 20 20 28 75 6e 6c 65 73 73 20 28 6d 69 6e isibility.state."...(unless.(min
76280 69 62 75 66 66 65 72 70 29 0a 20 20 20 20 28 75 73 65 72 2d 65 72 72 6f 72 20 22 54 68 69 73 20 ibufferp).....(user-error."This.
762a0 63 6f 6d 6d 61 6e 64 20 69 73 20 69 6e 74 65 6e 64 65 64 20 74 6f 20 62 65 20 75 73 65 64 20 69 command.is.intended.to.be.used.i
762c0 6e 20 74 68 65 20 6d 69 6e 69 62 75 66 66 65 72 2e 22 29 29 0a 20 20 28 6c 65 74 2a 20 28 28 75 n.the.minibuffer."))...(let*.((u
762e0 70 64 61 74 65 0a 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 6f 76 20 73 29 0a 20 20 pdate..........(lambda.(ov.s)...
76300 20 20 20 20 20 20 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75 74 0a 20 20 20 20 20 20 20 20 20 20 .........(overlay-put...........
76320 20 20 6f 76 20 27 61 66 74 65 72 2d 73 74 72 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 ..ov.'after-string.............(
76340 61 6e 64 20 73 20 28 63 6f 6e 63 61 74 20 28 70 72 6f 70 65 72 74 69 7a 65 20 28 63 6f 6e 63 61 and.s.(concat.(propertize.(conca
76360 74 20 22 5c 6e 22 20 73 20 22 5c 6e 22 29 20 27 66 61 63 65 20 27 73 68 61 64 6f 77 29 0a 20 20 t."\n".s."\n").'face.'shadow)...
76380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 6b 65 2d 73 .........................(make-s
763a0 65 70 61 72 61 74 6f 72 2d 6c 69 6e 65 29 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 6d 61 eparator-line))))))..........(ma
763c0 78 2d 77 69 64 74 68 20 28 2d 20 28 77 69 6e 64 6f 77 2d 77 69 64 74 68 29 20 28 6d 69 6e 69 62 x-width.(-.(window-width).(minib
763e0 75 66 66 65 72 2d 70 72 6f 6d 70 74 2d 65 6e 64 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 6d 61 uffer-prompt-end)))..........(ma
76400 78 20 28 6f 72 20 6d 61 78 2d 6d 69 6e 69 2d 77 69 6e 64 6f 77 2d 68 65 69 67 68 74 20 30 2e 34 x.(or.max-mini-window-height.0.4
76420 29 29 0a 20 20 20 20 20 20 20 20 20 28 6d 61 78 2d 68 65 69 67 68 74 20 28 2d 20 28 6f 72 20 28 ))..........(max-height.(-.(or.(
76440 61 6e 64 20 28 6e 61 74 6e 75 6d 70 20 6d 61 78 29 20 6d 61 78 29 0a 20 20 20 20 20 20 20 20 20 and.(natnump.max).max)..........
76460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6c 6f 6f 72 20 28 2a 20 6d 61 78 ...................(floor.(*.max
76480 20 28 66 72 61 6d 65 2d 68 65 69 67 68 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 .(frame-height))))..............
764a0 20 20 20 20 20 20 20 20 20 20 20 35 29 29 29 0a 20 20 20 20 28 69 66 20 28 61 6e 64 20 70 72 65 ...........5))).....(if.(and.pre
764c0 66 69 78 20 28 6e 6f 74 20 28 73 74 72 69 6e 67 2d 65 6d 70 74 79 2d 70 20 70 72 65 66 69 78 29 fix.(not.(string-empty-p.prefix)
764e0 29 20 28 3e 20 6d 61 78 2d 68 65 69 67 68 74 20 31 29 29 0a 20 20 20 20 20 20 20 20 28 70 72 6f ).(>.max-height.1)).........(pro
76500 67 6e 0a 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 76 69 73 75 61 6c 2d 6c 69 6e 65 gn...........(unless.visual-line
76520 2d 6d 6f 64 65 20 28 76 69 73 75 61 6c 2d 6c 69 6e 65 2d 6d 6f 64 65 20 31 29 29 0a 20 20 20 20 -mode.(visual-line-mode.1)).....
76540 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 6d 69 6e 69 62 75 66 66 65 72 2d 70 72 6f ......(goto-char.(minibuffer-pro
76560 6d 70 74 2d 65 6e 64 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 mpt-end))...........(pcase-let.(
76580 28 60 28 2c 70 72 6f 70 20 2e 20 2c 6f 76 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (`(,prop...,ov).................
765a0 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 2d 61 6e 64 2d 6f 76 .......(get-char-property-and-ov
765c0 65 72 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 28 70 erlay.........................(p
765e0 6f 69 6e 74 2d 6d 69 6e 29 20 27 67 70 74 65 6c 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 oint-min).'gptel))).............
76600 28 75 6e 6c 65 73 73 20 6f 76 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 6f (unless.ov...............(setq.o
76620 76 20 28 6d 61 6b 65 2d 6f 76 65 72 6c 61 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 v.(make-overlay.................
76640 20 20 20 20 20 20 20 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28 6d 69 6e 69 62 75 66 66 65 72 2d ........(point-min).(minibuffer-
76660 70 72 6f 6d 70 74 2d 65 6e 64 29 20 6e 69 6c 20 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 prompt-end).nil.t)))............
76680 20 28 70 63 61 73 65 20 70 72 6f 70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 27 70 61 72 .(pcase.prop...............('par
766a0 74 69 61 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 3e 20 28 6c 65 6e 67 tial................(if.(>.(leng
766c0 74 68 20 70 72 65 66 69 78 29 20 6d 61 78 2d 77 69 64 74 68 29 0a 20 20 20 20 20 20 20 20 20 20 th.prefix).max-width)...........
766e0 20 20 20 20 20 20 20 20 20 28 70 72 6f 67 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .........(progn.................
76700 20 20 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75 74 20 6f 76 20 27 67 70 74 65 6c 20 27 70 72 65 .....(overlay-put.ov.'gptel.'pre
76720 66 69 78 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 fix)......................(let.(
76740 28 64 69 73 70 2d 73 69 7a 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (disp-size......................
76760 20 20 20 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 63 68 61 72 20 61 63 72 6f 73 73 20 .......(cl-loop.for.char.across.
76780 70 72 65 66 69 78 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 prefix..........................
767a0 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 69 64 78 20 75 70 66 72 6f 6d 20 30 0a 20 20 20 ............for.idx.upfrom.0....
767c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
767e0 20 20 77 69 74 68 20 6e 20 3d 20 30 20 77 69 74 68 20 6d 61 78 2d 6c 65 6e 67 74 68 20 3d 20 28 ..with.n.=.0.with.max-length.=.(
76800 2a 20 6d 61 78 2d 68 65 69 67 68 74 20 6d 61 78 2d 77 69 64 74 68 29 0a 20 20 20 20 20 20 20 20 *.max-height.max-width).........
76820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 .............................if.
76840 28 65 71 20 63 68 61 72 20 3f 5c 6e 29 20 64 6f 20 28 63 6c 2d 69 6e 63 66 20 6e 29 0a 20 20 20 (eq.char.?\n).do.(cl-incf.n)....
76860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
76880 20 20 69 66 20 28 3e 20 6e 20 6d 61 78 2d 68 65 69 67 68 74 29 20 72 65 74 75 72 6e 20 69 64 78 ..if.(>.n.max-height).return.idx
768a0 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 ................................
768c0 20 20 20 20 20 20 69 66 20 28 3e 20 69 64 78 20 6d 61 78 2d 6c 65 6e 67 74 68 29 0a 20 20 20 20 ......if.(>.idx.max-length).....
768e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
76900 20 72 65 74 75 72 6e 20 69 64 78 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .return.idx.....................
76920 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 65 74 75 72 6e 20 .................finally.return.
76940 6e 69 6c 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 66 nil)))........................(f
76960 75 6e 63 61 6c 6c 20 75 70 64 61 74 65 20 6f 76 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 uncall.update.ov................
76980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 64 69 73 70 2d 73 69 7a 65 0a 20 .................(if.disp-size..
769a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
769c0 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 0a 20 20 20 ...(truncate-string-to-width....
769e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
76a00 20 20 70 72 65 66 69 78 20 64 69 73 70 2d 73 69 7a 65 20 20 6e 69 6c 20 6e 69 6c 20 27 65 6c 6c ..prefix.disp-size..nil.nil.'ell
76a20 69 70 73 69 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 ipsis)..........................
76a40 20 20 20 20 20 20 20 20 20 70 72 65 66 69 78 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 .........prefix)))).............
76a60 20 20 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75 74 20 6f 76 20 27 67 70 74 65 6c 20 27 68 69 64 .....(overlay-put.ov.'gptel.'hid
76a80 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 75 70 64 e)..................(funcall.upd
76aa0 61 74 65 20 6f 76 20 6e 69 6c 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 27 70 72 ate.ov.nil)))...............('pr
76ac0 65 66 69 78 20 28 6f 76 65 72 6c 61 79 2d 70 75 74 20 6f 76 20 27 67 70 74 65 6c 20 27 68 69 64 efix.(overlay-put.ov.'gptel.'hid
76ae0 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 28 66 75 6e 63 61 e)........................(funca
76b00 6c 6c 20 75 70 64 61 74 65 20 6f 76 20 6e 69 6c 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ll.update.ov.nil))..............
76b20 20 28 5f 20 28 6f 76 65 72 6c 61 79 2d 70 75 74 20 6f 76 20 27 67 70 74 65 6c 20 27 70 61 72 74 .(_.(overlay-put.ov.'gptel.'part
76b40 69 61 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 75 ial)..................(funcall.u
76b60 70 64 61 74 65 20 6f 76 20 28 74 72 75 6e 63 61 74 65 2d 73 74 72 69 6e 67 2d 74 6f 2d 77 69 64 pdate.ov.(truncate-string-to-wid
76b80 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 20 20 20 20 20 th..............................
76ba0 20 20 20 20 20 20 20 20 70 72 65 66 69 78 20 6d 61 78 2d 77 69 64 74 68 20 6e 69 6c 20 6e 69 6c ........prefix.max-width.nil.nil
76bc0 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 ................................
76be0 20 20 20 20 20 20 27 65 6c 6c 69 70 73 69 73 29 29 29 29 29 29 0a 20 20 20 20 20 20 28 77 68 65 ......'ellipsis)))))).......(whe
76c00 6e 2d 6c 65 74 2a 20 28 28 70 72 6f 70 2d 6f 76 20 28 67 65 74 2d 63 68 61 72 2d 70 72 6f 70 65 n-let*.((prop-ov.(get-char-prope
76c20 72 74 79 2d 61 6e 64 2d 6f 76 65 72 6c 61 79 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 27 67 70 74 rty-and-overlay.(point-min).'gpt
76c40 65 6c 29 29 29 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 6f 76 65 72 6c 61 79 70 20 28 63 el))).........(when.(overlayp.(c
76c60 64 72 20 70 72 6f 70 2d 6f 76 29 29 20 28 64 65 6c 65 74 65 2d 6f 76 65 72 6c 61 79 20 28 63 64 dr.prop-ov)).(delete-overlay.(cd
76c80 72 20 70 72 6f 70 2d 6f 76 29 29 29 29 29 29 29 0a 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d r.prop-ov)))))))..(defvar.gptel-
76ca0 2d 6d 69 6e 69 62 75 66 66 65 72 2d 70 72 6f 6d 70 74 2d 68 69 73 74 6f 72 79 20 6e 69 6c 0a 20 -minibuffer-prompt-history.nil..
76cc0 20 22 48 69 73 74 6f 72 79 20 6f 66 20 70 72 6f 6d 70 74 73 20 72 65 61 64 20 66 72 6f 6d 20 74 ."History.of.prompts.read.from.t
76ce0 68 65 20 6d 69 6e 69 62 75 66 66 65 72 20 62 79 20 67 70 74 65 6c 2e 22 29 0a 0a 28 64 65 66 75 he.minibuffer.by.gptel.")..(defu
76d00 6e 20 67 70 74 65 6c 2d 2d 72 65 61 64 2d 6d 69 6e 69 62 75 66 66 65 72 2d 70 72 6f 6d 70 74 20 n.gptel--read-minibuffer-prompt.
76d20 28 26 6f 70 74 69 6f 6e 61 6c 20 72 65 61 64 2d 70 72 6f 6d 70 74 29 0a 20 20 22 52 65 61 64 20 (&optional.read-prompt)..."Read.
76d40 61 20 75 73 65 72 20 70 72 6f 6d 70 74 20 66 72 6f 6d 20 74 68 65 20 6d 69 6e 69 62 75 66 66 65 a.user.prompt.from.the.minibuffe
76d60 72 2e 0a 0a 50 72 6f 6d 70 74 20 77 69 74 68 20 52 45 41 44 2d 50 52 4f 4d 50 54 20 69 66 20 73 r...Prompt.with.READ-PROMPT.if.s
76d80 75 70 70 6c 69 65 64 2e 20 20 52 65 74 75 72 6e 20 61 20 63 6f 6e 73 20 63 65 6c 6c 20 6f 66 20 upplied...Return.a.cons.cell.of.
76da0 74 68 65 20 62 75 66 66 65 72 0a 72 65 67 69 6f 6e 20 28 69 66 20 69 6e 63 6c 75 64 65 64 29 20 the.buffer.region.(if.included).
76dc0 61 6e 64 20 74 68 65 20 70 72 6f 76 69 64 65 64 20 69 6e 73 74 72 75 63 74 69 6f 6e 73 2e 22 0a and.the.provided.instructions.".
76de0 20 20 28 6c 65 74 2a 20 28 28 69 6e 63 6c 75 64 65 2d 72 65 67 69 6f 6e 20 28 75 73 65 2d 72 65 ..(let*.((include-region.(use-re
76e00 67 69 6f 6e 2d 70 29 29 0a 20 20 20 20 20 20 20 20 20 28 63 62 20 28 63 75 72 72 65 6e 74 2d 62 gion-p))..........(cb.(current-b
76e20 75 66 66 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 28 67 65 74 2d 72 65 67 69 6f 6e 20 28 6c 61 uffer))..........(get-region.(la
76e40 6d 62 64 61 20 28 29 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 63 62 0a mbda.().(with-current-buffer.cb.
76e60 20 20 20 20 20 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 6e .............................(an
76e80 64 20 69 6e 63 6c 75 64 65 2d 72 65 67 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 d.include-region................
76ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 ...................(buffer-subst
76ec0 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ring-no-properties..............
76ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 67 69 6f 6e 2d 62 65 ......................(region-be
76f00 67 69 6e 6e 69 6e 67 29 20 28 72 65 67 69 6f 6e 2d 65 6e 64 29 29 29 29 29 29 0a 20 20 20 20 20 ginning).(region-end))))))......
76f20 20 20 20 20 28 63 79 63 6c 65 2d 70 72 65 66 69 78 20 28 6c 61 6d 62 64 61 20 28 29 20 28 69 6e ....(cycle-prefix.(lambda.().(in
76f40 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)......................
76f60 20 20 20 20 28 6c 65 74 20 28 28 70 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 ....(let.((p.(point)))..........
76f80 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 72 65 61 64 2d 77 ..................(gptel--read-w
76fa0 69 74 68 2d 70 72 65 66 69 78 20 28 66 75 6e 63 61 6c 6c 20 67 65 74 2d 72 65 67 69 6f 6e 29 29 ith-prefix.(funcall.get-region))
76fc0 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 67 6f 74 ............................(got
76fe0 6f 2d 63 68 61 72 20 70 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 74 6f 67 67 6c 65 2d 72 65 o-char.p))))..........(toggle-re
77000 67 69 6f 6e 20 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 gion.(lambda.().(interactive)...
77020 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 66 20 69 6e 63 6c ........................(if.incl
77040 75 64 65 2d 72 65 67 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ude-region......................
77060 20 20 20 20 20 20 20 20 20 28 70 72 6f 67 6e 20 28 73 65 74 71 20 69 6e 63 6c 75 64 65 2d 72 65 .........(progn.(setq.include-re
77080 67 69 6f 6e 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 20 20 gion.nil).......................
770a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 72 65 61 64 2d 77 69 74 68 ...............(gptel--read-with
770c0 2d 70 72 65 66 69 78 20 6e 69 6c 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -prefix.nil))...................
770e0 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 69 6e 63 6c 75 64 65 2d 72 65 67 69 6f 6e 20 74 ..........(setq.include-region.t
77100 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 66 ).............................(f
77120 75 6e 63 61 6c 6c 20 63 79 63 6c 65 2d 70 72 65 66 69 78 29 29 29 29 0a 20 20 20 20 20 20 20 20 uncall.cycle-prefix)))).........
77140 20 28 65 64 69 74 2d 69 6e 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 .(edit-in-buffer...........(lamb
77160 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 20 20 20 20 20 20 da.().(interactive).............
77180 28 67 70 74 65 6c 2d 2d 65 64 69 74 2d 64 69 72 65 63 74 69 76 65 20 6e 69 6c 0a 20 20 20 20 20 (gptel--edit-directive.nil......
771a0 20 20 20 20 20 20 20 20 20 3a 69 6e 69 74 69 61 6c 20 28 6d 69 6e 69 62 75 66 66 65 72 2d 63 6f .........:initial.(minibuffer-co
771c0 6e 74 65 6e 74 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 70 72 6f 6d 70 74 20 28 69 ntents)...............:prompt.(i
771e0 66 20 69 6e 63 6c 75 64 65 2d 72 65 67 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 f.include-region................
77200 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 75 66 66 65 72 20 ...........(with-current-buffer.
77220 63 62 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 cb.(buffer-substring-no-properti
77240 65 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 es..............................
77260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 67 69 6f 6e 2d 62 65 ......................(region-be
77280 67 69 6e 6e 69 6e 67 29 20 28 72 65 67 69 6f 6e 2d 65 6e 64 29 29 29 0a 20 20 20 20 20 20 20 20 ginning).(region-end))).........
772a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 23 20 45 64 69 74 20 70 72 6f 6d 70 74 20 62 ................"#.Edit.prompt.b
772c0 65 6c 6f 77 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 73 65 74 75 70 20 28 6c 61 6d elow")...............:setup.(lam
772e0 62 64 61 20 28 29 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 bda.().(goto-char.(point-max)).(
77300 72 75 6e 2d 61 74 2d 74 69 6d 65 20 30 20 6e 69 6c 20 23 27 72 65 63 65 6e 74 65 72 29 29 0a 20 run-at-time.0.nil.#'recenter))..
77320 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 61 6c 6c 62 61 63 6b 20 28 6c 61 6d 62 64 61 20 28 .............:callback.(lambda.(
77340 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 20 20 28 msg)...........................(
77360 69 66 20 28 6e 6f 74 20 6d 73 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 if.(not.msg)....................
77380 20 20 20 20 20 20 20 20 20 20 20 28 6d 69 6e 69 62 75 66 66 65 72 2d 71 75 69 74 2d 72 65 63 75 ...........(minibuffer-quit-recu
773a0 72 73 69 76 65 2d 65 64 69 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rsive-edit).....................
773c0 20 20 20 20 20 20 20 20 28 64 65 6c 65 74 65 2d 72 65 67 69 6f 6e 20 28 6d 69 6e 69 62 75 66 66 ........(delete-region.(minibuff
773e0 65 72 2d 70 72 6f 6d 70 74 2d 65 6e 64 29 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 0a 20 20 20 20 er-prompt-end).(point-max)).....
77400 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 72 74 20 ........................(insert.
77420 6d 73 67 29 20 28 65 78 69 74 2d 6d 69 6e 69 62 75 66 66 65 72 29 29 29 29 29 29 0a 20 20 20 20 msg).(exit-minibuffer)))))).....
77440 20 20 20 20 20 28 6d 69 6e 69 62 75 66 66 65 72 2d 6c 6f 63 61 6c 2d 6d 61 70 0a 20 20 20 20 20 .....(minibuffer-local-map......
77460 20 20 20 20 20 28 6d 61 6b 65 2d 63 6f 6d 70 6f 73 65 64 2d 6b 65 79 6d 61 70 20 28 64 65 66 69 .....(make-composed-keymap.(defi
77480 6e 65 2d 6b 65 79 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 ne-keymap.......................
774a0 20 20 20 20 20 20 20 20 20 20 20 20 22 4d 2d 52 45 54 22 20 74 6f 67 67 6c 65 2d 72 65 67 69 6f ............"M-RET".toggle-regio
774c0 6e 20 22 43 2d 63 20 43 2d 65 22 20 65 64 69 74 2d 69 6e 2d 62 75 66 66 65 72 29 0a 20 20 20 20 n."C-c.C-e".edit-in-buffer).....
774e0 20 20 20 20 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 69 6e 69 ............................mini
77500 62 75 66 66 65 72 2d 6c 6f 63 61 6c 2d 6d 61 70 29 29 29 0a 20 20 20 20 28 6c 65 74 20 28 28 75 buffer-local-map))).....(let.((u
77520 73 65 72 2d 70 72 6f 6d 70 74 0a 20 20 20 20 20 20 20 20 20 20 20 28 6d 69 6e 69 62 75 66 66 65 ser-prompt............(minibuffe
77540 72 2d 77 69 74 68 2d 73 65 74 75 70 2d 68 6f 6f 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 r-with-setup-hook...............
77560 20 28 6c 61 6d 62 64 61 20 28 29 20 28 61 64 64 2d 68 6f 6f 6b 20 27 63 6f 6d 70 6c 65 74 69 6f .(lambda.().(add-hook.'completio
77580 6e 2d 61 74 2d 70 6f 69 6e 74 2d 66 75 6e 63 74 69 6f 6e 73 0a 20 20 20 20 20 20 20 20 20 20 20 n-at-point-functions............
775a0 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 6c 2d 70 72 65 73 ....................#'gptel-pres
775c0 65 74 2d 63 61 70 66 20 6e 69 6c 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 et-capf.nil.t)..................
775e0 28 66 75 6e 63 61 6c 6c 20 63 79 63 6c 65 2d 70 72 65 66 69 78 29 0a 20 20 20 20 20 20 20 20 20 (funcall.cycle-prefix)..........
77600 20 20 20 20 20 20 20 20 3b 3b 20 48 41 43 4b 20 66 6f 72 20 6c 75 63 69 64 20 45 6d 61 63 73 2c ........;;.HACK.for.lucid.Emacs,
77620 20 77 68 65 72 65 20 60 6d 61 6b 65 2d 73 65 70 61 72 61 74 6f 72 2d 6c 69 6e 65 27 20 69 73 20 .where.`make-separator-line'.is.
77640 77 6f 6e 6b 79 2e 20 20 54 68 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 wonky...The..................;;.
77660 6d 69 6e 69 62 75 66 66 65 72 20 70 72 6f 6d 70 74 20 67 65 74 73 20 63 75 74 20 6f 66 66 20 2d minibuffer.prompt.gets.cut.off.-
77680 2d 20 66 6f 72 63 65 20 72 65 64 69 73 70 6c 61 79 20 74 6f 20 66 69 78 3a 0a 20 20 20 20 20 20 -.force.redisplay.to.fix:.......
776a0 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 22 20 22 29 20 28 72 65 64 69 73 70 6c ...........(insert.".").(redispl
776c0 61 79 29 20 28 64 65 6c 65 74 65 2d 63 68 61 72 20 2d 31 29 29 0a 20 20 20 20 20 20 20 20 20 20 ay).(delete-char.-1))...........
776e0 20 20 20 28 72 65 61 64 2d 73 74 72 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f ...(read-string...............(o
77700 72 20 72 65 61 64 2d 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 r.read-prompt...................
77720 28 63 6f 6e 63 61 74 20 28 66 6f 72 6d 61 74 20 22 41 73 6b 20 25 73 22 20 28 67 70 74 65 6c 2d (concat.(format."Ask.%s".(gptel-
77740 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 0a 20 20 20 backend-name.gptel-backend))....
77760 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 66 20 28 75 73 65 2d .......................(if.(use-
77780 72 65 67 69 6f 6e 2d 70 29 20 3b 4e 4f 54 45 3a 20 6e 6f 74 20 22 69 6e 63 6c 75 64 65 2d 72 65 region-p).;NOTE:.not."include-re
777a0 67 69 6f 6e 22 20 61 73 20 74 68 69 73 20 69 73 20 6f 6e 6c 79 20 72 65 61 64 20 6f 6e 63 65 0a gion".as.this.is.only.read.once.
777c0 20 20 20 20 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
777e0 63 61 74 20 22 20 28 22 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 4d 2d 52 45 54 22 20 27 66 61 cat.".(".(propertize."M-RET".'fa
77800 63 65 20 27 68 65 6c 70 2d 6b 65 79 2d 62 69 6e 64 69 6e 67 29 0a 20 20 20 20 20 20 20 20 20 20 ce.'help-key-binding)...........
77820 20 20 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 65 ..........................(prope
77840 72 74 69 7a 65 20 22 3a 20 49 6e 63 6c 75 64 65 2f 49 67 6e 6f 72 65 20 73 65 6c 65 63 74 69 6f rtize.":.Include/Ignore.selectio
77860 6e 22 20 27 66 61 63 65 20 27 64 65 66 61 75 6c 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 n".'face.'default)..............
77880 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 3a 20 22 29 0a 20 20 ......................."):.")...
778a0 20 20 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 3a 20 22 29 29 ..........................":."))
778c0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 69 6c 20 27 67 70 74 65 6c 2d 2d 6d 69 6e 69 )...............nil.'gptel--mini
778e0 62 75 66 66 65 72 2d 70 72 6f 6d 70 74 2d 68 69 73 74 6f 72 79 29 29 29 29 0a 20 20 20 20 20 20 buffer-prompt-history)))).......
77900 28 63 6f 6e 73 20 28 66 75 6e 63 61 6c 6c 20 67 65 74 2d 72 65 67 69 6f 6e 29 20 75 73 65 72 2d (cons.(funcall.get-region).user-
77920 70 72 6f 6d 70 74 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 74 72 61 6e 73 69 prompt))))..(defun.gptel--transi
77940 65 6e 74 2d 72 65 61 64 2d 6e 75 6d 62 65 72 20 28 70 72 6f 6d 70 74 20 5f 69 6e 69 74 69 61 6c ent-read-number.(prompt._initial
77960 2d 69 6e 70 75 74 20 68 69 73 74 6f 72 79 29 0a 20 20 22 52 65 61 64 20 61 20 6e 75 6d 65 72 69 -input.history)..."Read.a.numeri
77980 63 20 76 61 6c 75 65 20 66 72 6f 6d 20 74 68 65 20 6d 69 6e 69 62 75 66 66 65 72 2e 0a 0a 50 52 c.value.from.the.minibuffer...PR
779a0 4f 4d 50 54 2c 20 5f 49 4e 49 54 49 41 4c 2d 49 4e 50 55 54 20 61 6e 64 20 48 49 53 54 4f 52 59 OMPT,._INITIAL-INPUT.and.HISTORY
779c0 20 61 72 65 20 61 73 20 69 6e 20 74 68 65 20 74 72 61 6e 73 69 65 6e 74 20 72 65 61 64 65 72 0a .are.as.in.the.transient.reader.
779e0 64 6f 63 75 6d 65 6e 74 69 6f 6e 2e 20 20 52 65 74 75 72 6e 20 6e 69 6c 20 69 66 20 75 73 65 72 documention...Return.nil.if.user
77a00 20 64 6f 65 73 20 6e 6f 74 20 70 72 6f 76 69 64 65 20 61 20 6e 75 6d 62 65 72 2c 20 66 6f 72 20 .does.not.provide.a.number,.for.
77a20 64 65 66 61 75 6c 74 2e 22 0a 20 20 3b 3b 20 57 6f 72 6b 61 72 6f 75 6e 64 20 66 6f 72 20 62 75 default."...;;.Workaround.for.bu
77a40 67 67 79 20 74 72 61 6e 73 69 65 6e 74 20 62 65 68 61 76 69 6f 75 72 20 77 68 65 6e 20 64 65 61 ggy.transient.behaviour.when.dea
77a60 6c 69 6e 67 20 77 69 74 68 0a 20 20 3b 3b 20 6e 6f 6e 2d 73 74 72 69 6e 67 20 76 61 6c 75 65 73 ling.with...;;.non-string.values
77a80 2e 20 20 53 65 65 3a 20 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6d 61 67 69 74 ...See:.https://github.com/magit
77aa0 2f 74 72 61 6e 73 69 65 6e 74 2f 69 73 73 75 65 73 2f 31 37 32 0a 20 20 28 77 68 65 6e 2d 6c 65 /transient/issues/172...(when-le
77ac0 74 2a 20 28 28 76 61 6c 20 28 73 79 6d 62 6f 6c 2d 76 61 6c 75 65 20 68 69 73 74 6f 72 79 29 29 t*.((val.(symbol-value.history))
77ae0 29 0a 20 20 20 20 28 77 68 65 6e 20 28 6e 6f 74 20 28 73 74 72 69 6e 67 70 20 28 63 61 72 20 76 ).....(when.(not.(stringp.(car.v
77b00 61 6c 29 29 29 0a 20 20 20 20 20 20 28 73 65 74 63 61 72 20 76 61 6c 20 28 6e 75 6d 62 65 72 2d al))).......(setcar.val.(number-
77b20 74 6f 2d 73 74 72 69 6e 67 20 28 63 61 72 20 76 61 6c 29 29 29 29 29 0a 20 20 28 6c 65 74 2a 20 to-string.(car.val)))))...(let*.
77b40 28 28 6d 69 6e 69 62 75 66 66 65 72 2d 64 65 66 61 75 6c 74 2d 70 72 6f 6d 70 74 2d 66 6f 72 6d ((minibuffer-default-prompt-form
77b60 61 74 20 22 22 29 0a 09 20 28 6e 75 6d 20 28 72 65 61 64 2d 6e 75 6d 62 65 72 20 70 72 6f 6d 70 at."")...(num.(read-number.promp
77b80 74 20 2d 31 20 68 69 73 74 6f 72 79 29 29 29 0a 20 20 20 20 28 69 66 20 28 3d 20 6e 75 6d 20 2d t.-1.history))).....(if.(=.num.-
77ba0 31 29 20 6e 69 6c 20 6e 75 6d 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 73 79 73 74 1).nil.num)))..(defun.gptel-syst
77bc0 65 6d 2d 70 72 6f 6d 70 74 2d 2d 66 6f 72 6d 61 74 20 28 26 6f 70 74 69 6f 6e 61 6c 20 6d 65 73 em-prompt--format.(&optional.mes
77be0 73 61 67 65 29 0a 20 20 22 46 6f 72 6d 61 74 20 74 68 65 20 73 79 73 74 65 6d 20 4d 45 53 53 41 sage)..."Format.the.system.MESSA
77c00 47 45 20 66 6f 72 20 64 69 73 70 6c 61 79 20 69 6e 20 67 70 74 65 6c 27 73 20 74 72 61 6e 73 69 GE.for.display.in.gptel's.transi
77c20 65 6e 74 20 6d 65 6e 75 73 2e 0a 0a 48 61 6e 64 6c 65 20 66 6f 72 6d 61 74 74 69 6e 67 20 66 6f ent.menus...Handle.formatting.fo
77c40 72 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 73 20 77 68 65 6e 20 74 68 65 20 61 63 74 69 76 r.system.messages.when.the.activ
77c60 65 0a 60 67 70 74 65 6c 2d 6d 6f 64 65 6c 27 20 64 6f 65 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 e.`gptel-model'.does.not.support
77c80 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 73 2e 22 0a 20 20 28 73 65 74 71 20 6d 65 73 73 61 .system.messages."...(setq.messa
77ca0 67 65 20 28 6f 72 20 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 ge.(or.message.gptel--system-mes
77cc0 73 61 67 65 29 29 0a 20 20 28 69 66 20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 63 61 70 61 62 sage))...(if.(gptel--model-capab
77ce0 6c 65 2d 70 20 27 6e 6f 73 79 73 74 65 6d 29 0a 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 28 70 le-p.'nosystem).......(concat.(p
77d00 72 6f 70 65 72 74 69 7a 65 20 22 5b 4e 6f 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 20 73 75 ropertize."[No.system.message.su
77d20 70 70 6f 72 74 20 66 6f 72 20 6d 6f 64 65 6c 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 pport.for.model."...............
77d40 20 20 20 20 20 20 20 20 20 20 20 20 27 66 61 63 65 20 27 74 72 61 6e 73 69 65 6e 74 2d 68 65 61 ............'face.'transient-hea
77d60 64 69 6e 67 29 0a 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 ding)...............(propertize.
77d80 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 6e 61 6d 65 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 29 0a (gptel--model-name.gptel-model).
77da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 66 61 63 65 20 ..........................'face.
77dc0 27 77 61 72 6e 69 6e 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 'warning)...............(propert
77de0 69 7a 65 20 22 5d 22 20 27 66 61 63 65 20 27 74 72 61 6e 73 69 65 6e 74 2d 68 65 61 64 69 6e 67 ize."]".'face.'transient-heading
77e00 29 29 0a 20 20 20 20 28 69 66 20 6d 65 73 73 61 67 65 0a 20 20 20 20 20 20 20 20 28 67 70 74 65 )).....(if.message.........(gpte
77e20 6c 2d 2d 64 65 73 63 72 69 62 65 2d 64 69 72 65 63 74 69 76 65 0a 20 20 20 20 20 20 20 20 20 6d l--describe-directive..........m
77e40 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
77e60 29 20 31 34 29 20 22 e2 ae 90 20 22 29 0a 20 20 20 20 20 20 22 5b 4e 6f 20 73 79 73 74 65 6d 20 ).14)."....")......."[No.system.
77e80 6d 65 73 73 61 67 65 20 73 65 74 5d 22 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d message.set]")))..(defun.gptel--
77ea0 74 6f 6f 6c 73 2d 69 6e 69 74 2d 76 61 6c 75 65 20 28 6f 62 6a 29 0a 20 20 22 53 65 74 20 74 68 tools-init-value.(obj)..."Set.th
77ec0 65 20 69 6e 69 74 69 61 6c 20 73 74 61 74 65 20 6f 66 20 61 20 74 6f 6f 6c 20 4f 42 4a 20 69 6e e.initial.state.of.a.tool.OBJ.in
77ee0 20 60 67 70 74 65 6c 2d 74 6f 6f 6c 73 27 2e 0a 0a 4f 42 4a 20 69 73 20 61 20 74 6f 6f 6c 2d 69 .`gptel-tools'...OBJ.is.a.tool-i
77f00 6e 66 69 78 20 6f 66 20 74 79 70 65 20 60 67 70 74 65 6c 2d 2d 73 77 69 74 63 68 27 2e 22 0a 20 nfix.of.type.`gptel--switch'."..
77f20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 6e 61 6d 65 20 28 63 61 72 20 28 6d 65 6d 62 65 72 20 .(when-let*.((name.(car.(member.
77f40 28 6f 72 65 66 20 6f 62 6a 20 61 72 67 75 6d 65 6e 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 (oref.obj.argument).............
77f60 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 23 27 63 .....................(mapcar.#'c
77f80 61 64 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 adr.............................
77fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 67 65 74 20 28 74 72 61 6e 73 69 65 .............(plist-get.(transie
77fc0 6e 74 2d 73 63 6f 70 65 29 20 3a 74 6f 6f 6c 73 29 29 29 29 29 29 0a 20 20 20 20 28 6f 73 65 74 nt-scope).:tools)))))).....(oset
77fe0 20 6f 62 6a 20 76 61 6c 75 65 20 28 6c 69 73 74 20 28 6f 72 65 66 20 6f 62 6a 20 63 61 74 65 67 .obj.value.(list.(oref.obj.categ
78000 6f 72 79 29 20 6e 61 6d 65 29 29 29 29 0a 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d 2d 63 72 ory).name))))..(defvar.gptel--cr
78020 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:
78040 2f 2f 72 61 77 2e 67 69 74 68 75 62 75 73 65 72 63 6f 6e 74 65 6e 74 2e 63 6f 6d 2f 66 2f 61 77 //raw.githubusercontent.com/f/aw
78060 65 73 6f 6d 65 2d 63 68 61 74 67 70 74 2d 70 72 6f 6d 70 74 73 2f 6d 61 69 6e 2f 70 72 6f 6d 70 esome-chatgpt-prompts/main/promp
78080 74 73 2e 63 73 76 22 0a 20 20 22 55 52 4c 20 66 6f 72 20 63 72 6f 77 64 73 6f 75 72 63 65 64 20 ts.csv"..."URL.for.crowdsourced.
780a0 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 76 61 72 20 67 LLM.system.prompts.")..(defvar.g
780c0 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 0a 20 20 28 6d 61 ptel--crowdsourced-prompts...(ma
780e0 6b 65 2d 68 61 73 68 2d 74 61 62 6c 65 20 3a 74 65 73 74 20 23 27 65 71 75 61 6c 29 0a 20 20 22 ke-hash-table.:test.#'equal)..."
78100 43 72 6f 77 64 73 6f 75 72 63 65 64 20 4c 4c 4d 20 73 79 73 74 65 6d 20 70 72 6f 6d 70 74 73 2e Crowdsourced.LLM.system.prompts.
78120 22 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 72 65 61 64 2d 63 73 76 2d 63 6f 6c 75 6d ")..(defun.gptel--read-csv-colum
78140 6e 20 28 29 0a 20 20 22 52 65 61 64 20 6e 65 78 74 20 43 53 56 20 63 6f 6c 75 6d 6e 20 69 6e 20 n.()..."Read.next.CSV.column.in.
78160 74 68 65 20 63 75 72 72 65 6e 74 20 62 75 66 66 65 72 2e 0a 0a 53 75 70 70 6f 72 74 73 20 62 6f the.current.buffer...Supports.bo
78180 74 68 20 71 75 6f 74 65 64 20 61 6e 64 20 6e 6f 6e 2d 71 75 6f 74 65 64 20 63 6f 6c 75 6d 6e 73 th.quoted.and.non-quoted.columns
781a0 20 28 52 46 43 20 34 31 38 30 29 2e 22 0a 20 20 28 6c 65 74 20 28 28 73 74 61 72 74 20 28 70 6f .(RFC.4180)."...(let.((start.(po
781c0 69 6e 74 29 29 29 0a 20 20 20 20 28 75 6e 6c 65 73 73 20 28 65 6f 6c 70 29 0a 20 20 20 20 20 20 int))).....(unless.(eolp).......
781e0 28 6c 65 74 20 28 28 63 6f 6c 75 6d 6e 0a 09 20 20 20 20 20 28 69 66 20 28 65 71 20 28 63 68 61 (let.((column.......(if.(eq.(cha
78200 72 2d 61 66 74 65 72 29 20 3f 5c 22 29 0a 09 09 20 28 77 68 65 6e 20 28 72 65 2d 73 65 61 72 63 r-after).?\")....(when.(re-searc
78220 68 2d 66 6f 72 77 61 72 64 20 22 5c 22 2c 5c 5c 7c 5c 22 24 22 20 6e 69 6c 20 74 29 0a 09 09 20 h-forward."\",\\|\"$".nil.t)....
78240 20 20 28 6c 65 74 20 28 28 65 6e 64 20 28 6d 61 74 63 68 2d 62 65 67 69 6e 6e 69 6e 67 20 30 29 ..(let.((end.(match-beginning.0)
78260 29 29 0a 09 09 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
78280 72 6f 70 65 72 74 69 65 73 20 28 2b 20 73 74 61 72 74 20 31 29 20 28 69 66 20 28 65 6f 6c 70 29 roperties.(+.start.1).(if.(eolp)
782a0 20 28 2d 20 65 6e 64 20 31 29 20 65 6e 64 29 29 29 29 0a 09 20 20 20 20 20 20 20 28 77 68 65 6e .(-.end.1).end)))).........(when
782c0 20 28 73 65 61 72 63 68 2d 66 6f 72 77 61 72 64 20 22 2c 22 20 28 6c 69 6e 65 2d 65 6e 64 2d 70 .(search-forward.",".(line-end-p
782e0 6f 73 69 74 69 6f 6e 29 20 74 29 0a 09 09 20 28 6c 65 74 20 28 28 65 6e 64 20 28 6d 61 74 63 68 osition).t)....(let.((end.(match
78300 2d 62 65 67 69 6e 6e 69 6e 67 20 30 29 29 29 0a 09 09 20 20 20 28 62 75 66 66 65 72 2d 73 75 62 -beginning.0)))......(buffer-sub
78320 73 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 20 73 74 61 72 74 20 65 6e 64 29 29 string-no-properties.start.end))
78340 29 29 29 29 0a 09 28 73 74 72 69 6e 67 2d 72 65 70 6c 61 63 65 20 22 5c 22 5c 22 22 20 22 5c 22 ))))..(string-replace."\"\""."\"
78360 22 20 63 6f 6c 75 6d 6e 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 63 72 6f ".column)))))..(defun.gptel--cro
78380 77 64 73 6f 75 72 63 65 64 2d 70 72 6f 6d 70 74 73 20 28 29 0a 20 20 22 41 63 71 75 69 72 65 20 wdsourced-prompts.()..."Acquire.
783a0 61 6e 64 20 72 65 61 64 20 63 72 6f 77 64 73 6f 75 72 63 65 64 20 4c 4c 4d 20 73 79 73 74 65 6d and.read.crowdsourced.LLM.system
783c0 20 70 72 6f 6d 70 74 73 2e 0a 0a 54 68 65 73 65 20 61 72 65 20 73 74 6f 72 65 64 20 69 6e 20 74 .prompts...These.are.stored.in.t
783e0 68 65 20 76 61 72 69 61 62 6c 65 20 60 67 70 74 65 6c 2d 2d 63 72 6f 77 64 73 6f 75 72 63 65 64 he.variable.`gptel--crowdsourced
78400 2d 70 72 6f 6d 70 74 73 27 2c 0a 77 68 69 63 68 20 73 65 65 2e 22 0a 20 20 28 77 68 65 6e 20 28 -prompts',.which.see."...(when.(
78420 68 61 73 68 2d 74 61 62 6c 65 2d 70 20 67 70 74 65 6c 2d 2d 63 72 6f 77 64 73 6f 75 72 63 65 64 hash-table-p.gptel--crowdsourced
78440 2d 70 72 6f 6d 70 74 73 29 0a 20 20 20 20 28 77 68 65 6e 20 28 68 61 73 68 2d 74 61 62 6c 65 2d -prompts).....(when.(hash-table-
78460 65 6d 70 74 79 2d 70 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 empty-p.gptel--crowdsourced-prom
78480 70 74 73 29 0a 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 67 70 74 65 6c 2d 63 72 6f 77 64 73 6f pts).......(unless.gptel-crowdso
784a0 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 20 20 28 72 75 6e 2d urced-prompts-file.........(run-
784c0 61 74 2d 74 69 6d 65 20 30 20 6e 69 6c 20 23 27 67 70 74 65 6c 2d 73 79 73 74 65 6d 2d 70 72 6f at-time.0.nil.#'gptel-system-pro
784e0 6d 70 74 29 0a 20 20 20 20 20 20 20 20 28 75 73 65 72 2d 65 72 72 6f 72 20 22 4e 6f 20 63 72 6f mpt).........(user-error."No.cro
78500 77 64 73 6f 75 72 63 65 64 20 70 72 6f 6d 70 74 73 20 61 76 61 69 6c 61 62 6c 65 22 29 29 0a 20 wdsourced.prompts.available"))..
78520 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 61 6e 64 20 28 66 69 6c 65 2d 65 78 69 73 74 73 2d 70 .....(unless.(and.(file-exists-p
78540 20 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 2d 66 69 6c 65 .gptel-crowdsourced-prompts-file
78560 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 69 6d 65 2d 6c 65 73 73 2d )....................(time-less-
78580 70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 69 6d 65 2d 73 75 62 74 p.....................(time-subt
785a0 72 61 63 74 20 28 63 75 72 72 65 6e 74 2d 74 69 6d 65 29 20 28 64 61 79 73 2d 74 6f 2d 74 69 6d ract.(current-time).(days-to-tim
785c0 65 20 31 34 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 69 6c 65 e.14)).....................(file
785e0 2d 61 74 74 72 69 62 75 74 65 2d 6d 6f 64 69 66 69 63 61 74 69 6f 6e 2d 74 69 6d 65 0a 20 20 20 -attribute-modification-time....
78600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 69 6c 65 2d 61 74 74 72 69 62 75 74 ..................(file-attribut
78620 65 73 20 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 2d 66 69 es.gptel-crowdsourced-prompts-fi
78640 6c 65 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 79 2d 6f 72 2d 6e 2d 70 0a 20 le)))).........(when.(y-or-n-p..
78660 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 20 ..............(concat...........
78680 20 20 20 20 20 20 22 46 65 74 63 68 20 63 72 6f 77 64 73 6f 75 72 63 65 64 20 73 79 73 74 65 6d ......"Fetch.crowdsourced.system
786a0 20 70 72 6f 6d 70 74 73 20 66 72 6f 6d 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .prompts.from.".................
786c0 28 70 72 6f 70 65 72 74 69 7a 65 20 22 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f (propertize."https://github.com/
786e0 66 2f 61 77 65 73 6f 6d 65 2d 63 68 61 74 67 70 74 2d 70 72 6f 6d 70 74 73 22 20 27 66 61 63 65 f/awesome-chatgpt-prompts".'face
78700 20 27 6c 69 6e 6b 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 3f 22 29 29 0a 20 20 .'link)................."?"))...
78720 20 20 20 20 20 20 20 20 3b 3b 20 46 65 74 63 68 20 66 69 6c 65 0a 20 20 20 20 20 20 20 20 20 20 ........;;.Fetch.file...........
78740 28 6d 65 73 73 61 67 65 20 22 46 65 74 63 68 69 6e 67 20 70 72 6f 6d 70 74 73 2e 2e 2e 22 29 0a (message."Fetching.prompts...").
78760 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 64 69 72 20 28 66 69 6c 65 2d 6e 61 6d 65 2d ..........(let.((dir.(file-name-
78780 64 69 72 65 63 74 6f 72 79 20 67 70 74 65 6c 2d 63 72 6f 77 64 73 6f 75 72 63 65 64 2d 70 72 6f directory.gptel-crowdsourced-pro
787a0 6d 70 74 73 2d 66 69 6c 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 mpts-file))).............(unless
787c0 20 28 66 69 6c 65 2d 65 78 69 73 74 73 2d 70 20 64 69 72 29 20 28 6d 6b 64 69 72 20 64 69 72 20 .(file-exists-p.dir).(mkdir.dir.
787e0 27 63 72 65 61 74 65 2d 70 61 72 65 6e 74 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 69 'create-parents)).............(i
78800 66 20 28 75 72 6c 2d 63 6f 70 79 2d 66 69 6c 65 20 67 70 74 65 6c 2d 2d 63 72 6f 77 64 73 6f 75 f.(url-copy-file.gptel--crowdsou
78820 72 63 65 64 2d 70 72 6f 6d 70 74 73 2d 75 72 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rced-prompts-url................
78840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 63 72 6f 77 64 73 6f 75 72 63 ................gptel-crowdsourc
78860 65 64 2d 70 72 6f 6d 70 74 73 2d 66 69 6c 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ed-prompts-file.................
78880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 6f 6b 2d 69 66 2d 61 6c 72 65 61 64 79 2d 65 78 ...............'ok-if-already-ex
788a0 69 73 74 73 29 0a 09 09 28 6d 65 73 73 61 67 65 20 22 46 65 74 63 68 69 6e 67 20 70 72 6f 6d 70 ists)...(message."Fetching.promp
788c0 74 73 2e 2e 2e 20 64 6f 6e 65 2e 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 65 73 ts....done.")...............(mes
788e0 73 61 67 65 20 22 43 6f 75 6c 64 20 6e 6f 74 20 72 65 74 72 69 65 76 65 20 6e 65 77 20 70 72 6f sage."Could.not.retrieve.new.pro
78900 6d 70 74 73 2e 22 29 29 29 29 29 0a 20 20 20 20 20 20 28 69 66 20 28 6e 6f 74 20 28 66 69 6c 65 mpts."))))).......(if.(not.(file
78920 2d 72 65 61 64 61 62 6c 65 2d 70 20 67 70 74 65 6c 2d 63 72 6f 77 64 73 6f 75 72 63 65 64 2d 70 -readable-p.gptel-crowdsourced-p
78940 72 6f 6d 70 74 73 2d 66 69 6c 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 67 6e 20 28 rompts-file))...........(progn.(
78960 6d 65 73 73 61 67 65 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 message."No.crowdsourced.prompts
78980 20 61 76 61 69 6c 61 62 6c 65 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 .available")..................(c
789a0 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 73 79 73 74 65 6d all-interactively.#'gptel-system
789c0 2d 70 72 6f 6d 70 74 29 29 0a 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 74 65 6d 70 2d 62 75 66 -prompt)).........(with-temp-buf
789e0 66 65 72 0a 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 2d 66 69 6c 65 2d 63 6f 6e 74 65 fer...........(insert-file-conte
78a00 6e 74 73 20 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 2d 66 nts.gptel-crowdsourced-prompts-f
78a20 69 6c 65 29 0a 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 ile)...........(goto-char.(point
78a40 2d 6d 69 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 77 61 72 64 2d 6c 69 6e 65 20 31 -min))...........(forward-line.1
78a60 29 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 69 6c 65 20 28 6e 6f 74 20 28 65 6f 62 70 29 29 0a )...........(while.(not.(eobp)).
78a80 09 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 61 63 74 20 28 67 70 74 65 6c 2d 2d 72 65 .....(when-let*.((act.(gptel--re
78aa0 61 64 2d 63 73 76 2d 63 6f 6c 75 6d 6e 29 29 0a 09 09 09 28 70 72 6f 6d 70 74 20 28 67 70 74 65 ad-csv-column))....(prompt.(gpte
78ac0 6c 2d 2d 72 65 61 64 2d 63 73 76 2d 63 6f 6c 75 6d 6e 29 29 29 0a 09 09 28 70 75 74 68 61 73 68 l--read-csv-column)))...(puthash
78ae0 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 65 64 2d .act.prompt.gptel--crowdsourced-
78b00 70 72 6f 6d 70 74 73 29 29 0a 09 20 20 20 20 20 20 28 66 6f 72 77 61 72 64 2d 6c 69 6e 65 20 31 prompts))........(forward-line.1
78b20 29 29 29 29 29 0a 20 20 20 20 67 70 74 65 6c 2d 2d 63 72 6f 77 64 73 6f 75 72 63 65 64 2d 70 72 ))))).....gptel--crowdsourced-pr
78b40 6f 6d 70 74 73 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 64 65 73 63 72 69 62 65 2d ompts))..(defun.gptel--describe-
78b60 69 6e 66 69 78 2d 63 6f 6e 74 65 78 74 20 28 29 0a 20 20 28 69 66 20 28 6e 75 6c 6c 20 67 70 74 infix-context.()...(if.(null.gpt
78b80 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61 6c 69 73 74 29 20 22 43 6f 6e 74 65 78 74 22 0a 20 20 20 el-context--alist)."Context"....
78ba0 20 28 70 63 61 73 65 2d 6c 65 74 2a 0a 20 20 20 20 20 20 20 20 28 28 63 6f 6e 74 65 78 74 73 20 .(pcase-let*.........((contexts.
78bc0 28 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 63 6f 6c 6c 65 63 74 29 29 0a 20 20 20 20 20 20 (gptel-context--collect)).......
78be0 20 20 20 28 62 75 66 66 65 72 2d 63 6f 75 6e 74 20 28 6c 65 6e 67 74 68 20 63 6f 6e 74 65 78 74 ...(buffer-count.(length.context
78c00 73 29 29 0a 20 20 20 20 20 20 20 20 20 28 60 28 2c 66 69 6c 65 2d 63 6f 75 6e 74 20 2c 6f 76 2d s))..........(`(,file-count.,ov-
78c20 63 6f 75 6e 74 29 0a 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 3e 20 62 75 66 66 65 72 2d 63 count)...........(if.(>.buffer-c
78c40 6f 75 6e 74 20 30 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 ount.0)...............(cl-loop.f
78c60 6f 72 20 28 62 75 66 2d 66 69 6c 65 20 2e 20 6f 76 73 29 20 69 6e 20 63 6f 6e 74 65 78 74 73 0a or.(buf-file...ovs).in.contexts.
78c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62 75 66 66 65 .......................if.(buffe
78ca0 72 70 20 62 75 66 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 rp.buf-file)....................
78cc0 20 20 20 20 73 75 6d 20 28 6c 65 6e 67 74 68 20 6f 76 73 29 20 69 6e 74 6f 20 6f 76 2d 63 6f 75 ....sum.(length.ovs).into.ov-cou
78ce0 6e 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 65 6c 73 65 20 63 nt........................else.c
78d00 6f 75 6e 74 20 28 73 74 72 69 6e 67 70 20 62 75 66 2d 66 69 6c 65 29 20 69 6e 74 6f 20 66 69 6c ount.(stringp.buf-file).into.fil
78d20 65 2d 63 6f 75 6e 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 66 e-count........................f
78d40 69 6e 61 6c 6c 79 20 72 65 74 75 72 6e 20 28 6c 69 73 74 20 66 69 6c 65 2d 63 6f 75 6e 74 20 6f inally.return.(list.file-count.o
78d60 76 2d 63 6f 75 6e 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 30 20 30 29 v-count)).............(list.0.0)
78d80 29 29 29 0a 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 22 43 6f 6e 74 65 78 74 20 28 22 0a 20 20 ))).......(concat."Context.("...
78da0 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 0a 20 20 20 20 20 20 20 20 ............(propertize.........
78dc0 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 .......(concat.................(
78de0 61 6e 64 20 28 3e 20 6f 76 2d 63 6f 75 6e 74 20 30 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 and.(>.ov-count.0)..............
78e00 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 25 64 20 72 65 67 69 6f 6e 25 73 20 69 6e 20 ........(format."%d.region%s.in.
78e20 25 64 20 62 75 66 66 65 72 25 73 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 %d.buffer%s"....................
78e40 20 20 20 20 20 20 20 20 20 20 6f 76 2d 63 6f 75 6e 74 20 28 69 66 20 28 3e 20 6f 76 2d 63 6f 75 ..........ov-count.(if.(>.ov-cou
78e60 6e 74 20 31 29 20 22 73 22 20 22 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 nt.1)."s"."")...................
78e80 20 20 20 20 20 20 20 20 20 20 20 28 2d 20 62 75 66 66 65 72 2d 63 6f 75 6e 74 20 66 69 6c 65 2d ...........(-.buffer-count.file-
78ea0 63 6f 75 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 count)..........................
78ec0 20 20 20 20 28 69 66 20 28 3e 20 28 20 2d 20 62 75 66 66 65 72 2d 63 6f 75 6e 74 20 66 69 6c 65 ....(if.(>.(.-.buffer-count.file
78ee0 2d 63 6f 75 6e 74 29 20 31 29 20 22 73 22 20 22 22 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 -count).1)."s"."")))............
78f00 20 20 20 20 20 28 61 6e 64 20 28 3e 20 66 69 6c 65 2d 63 6f 75 6e 74 20 30 29 0a 20 20 20 20 20 .....(and.(>.file-count.0)......
78f20 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 25 73 25 64 20 66 69 ................(format."%s%d.fi
78f40 6c 65 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 20 20 20 20 20 le%s"...........................
78f60 20 20 20 28 69 66 20 28 3e 20 6f 76 2d 63 6f 75 6e 74 20 30 29 20 22 2c 20 22 20 22 22 29 20 66 ...(if.(>.ov-count.0).",."."").f
78f80 69 6c 65 2d 63 6f 75 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ile-count.......................
78fa0 20 20 20 20 20 20 20 28 69 66 20 28 3e 20 66 69 6c 65 2d 63 6f 75 6e 74 20 31 29 20 22 73 22 20 .......(if.(>.file-count.1)."s".
78fc0 22 22 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 66 61 63 65 20 27 77 61 72 ""))))................'face.'war
78fe0 6e 69 6e 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 29 22 29 29 29 29 0a 0a 28 64 65 ning)...............")"))))..(de
79000 66 75 6e 20 67 70 74 65 6c 2d 2d 64 65 73 63 72 69 62 65 2d 73 75 66 66 69 78 2d 73 65 6e 64 20 fun.gptel--describe-suffix-send.
79020 28 29 0a 20 20 22 44 65 73 63 72 69 62 65 20 74 68 65 20 61 63 74 69 6f 6e 20 6f 66 20 60 67 70 ()..."Describe.the.action.of.`gp
79040 74 65 6c 2d 2d 73 75 66 66 69 78 2d 73 65 6e 64 27 2e 22 0a 20 20 28 63 6c 2d 66 6c 65 74 20 28 tel--suffix-send'."...(cl-flet.(
79060 28 70 74 76 20 28 73 29 20 28 70 72 6f 70 65 72 74 69 7a 65 20 73 20 27 66 61 63 65 20 27 77 61 (ptv.(s).(propertize.s.'face.'wa
79080 72 6e 69 6e 67 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 74 68 20 28 73 29 20 28 70 72 rning)).............(pth.(s).(pr
790a0 6f 70 65 72 74 69 7a 65 20 73 20 27 66 61 63 65 20 27 74 72 61 6e 73 69 65 6e 74 2d 68 65 61 64 opertize.s.'face.'transient-head
790c0 69 6e 67 29 29 29 0a 20 20 20 20 28 6c 65 74 2a 20 28 28 61 72 67 73 20 28 6f 72 20 28 61 6e 64 ing))).....(let*.((args.(or.(and
790e0 20 74 72 61 6e 73 69 65 6e 74 2d 63 75 72 72 65 6e 74 2d 63 6f 6d 6d 61 6e 64 0a 20 20 20 20 20 .transient-current-command......
79100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 72 61 6e 73 69 65 6e 74 2d .....................(transient-
79120 61 72 67 73 20 74 72 61 6e 73 69 65 6e 74 2d 63 75 72 72 65 6e 74 2d 63 6f 6d 6d 61 6e 64 29 29 args.transient-current-command))
79140 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 4e 6f 74 20 79 65 74 ......................;;.Not.yet
79160 20 65 78 70 6f 72 74 65 64 2c 20 73 69 6d 75 6c 61 74 65 2e 20 20 48 41 43 4b 3a 20 57 65 20 61 .exported,.simulate...HACK:.We.a
79180 72 65 20 61 63 63 65 73 73 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 re.accessing....................
791a0 20 20 3b 3b 20 54 72 61 6e 73 69 65 6e 74 27 73 20 69 6e 74 65 72 6e 61 6c 20 76 61 72 69 61 62 ..;;.Transient's.internal.variab
791c0 6c 65 73 20 68 65 72 65 20 66 6f 72 20 6c 69 76 65 20 75 70 64 61 74 65 73 2e 0a 20 20 20 20 20 les.here.for.live.updates.......
791e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 74 72 61 6e 73 69 65 6e ................(let*.((transien
79200 74 2d 63 75 72 72 65 6e 74 2d 63 6f 6d 6d 61 6e 64 20 28 6f 72 65 66 20 74 72 61 6e 73 69 65 6e t-current-command.(oref.transien
79220 74 2d 2d 70 72 65 66 69 78 20 63 6f 6d 6d 61 6e 64 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 t--prefix.command)).............
79240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 72 61 6e 73 69 65 6e 74 2d 63 75 72 72 65 ................(transient-curre
79260 6e 74 2d 73 75 66 66 69 78 65 73 20 74 72 61 6e 73 69 65 6e 74 2d 2d 73 75 66 66 69 78 65 73 29 nt-suffixes.transient--suffixes)
79280 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 74 72 61 6e 73 69 )........................(transi
792a0 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
792c0 6e 64 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 6c 62 65 67 20 28 6c 69 6e 65 2d 6e 75 nd))))............(lbeg.(line-nu
792e0 6d 62 65 72 2d 61 74 2d 70 6f 73 20 28 69 66 20 28 75 73 65 2d 72 65 67 69 6f 6e 2d 70 29 20 28 mber-at-pos.(if.(use-region-p).(
79300 72 65 67 69 6f 6e 2d 62 65 67 69 6e 6e 69 6e 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 region-beginning)...............
79320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6f 69 6e 74 2d .........................(point-
79340 6d 69 6e 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 6e 64 20 28 6c 69 6e 65 2d 6e min))))............(lend.(line-n
79360 75 6d 62 65 72 2d 61 74 2d 70 6f 73 20 28 69 66 20 28 75 73 65 2d 72 65 67 69 6f 6e 2d 70 29 20 umber-at-pos.(if.(use-region-p).
79380 28 72 65 67 69 6f 6e 2d 65 6e 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (region-end)....................
793a0 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 29 29 0a 20 ....................(point))))..
793c0 20 20 20 20 20 20 20 20 20 20 28 6c 74 65 78 74 20 28 70 74 76 20 28 69 66 20 28 3e 20 6c 65 6e ..........(ltext.(ptv.(if.(>.len
793e0 64 20 6c 62 65 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 d.lbeg).........................
79400 20 20 20 28 66 6f 72 6d 61 74 20 22 20 28 6c 69 6e 65 73 20 25 64 2d 25 64 29 22 20 6c 62 65 67 ...(format.".(lines.%d-%d)".lbeg
79420 20 6c 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 20 20 20 20 20 .lend)..........................
79440 28 66 6f 72 6d 61 74 20 22 20 28 6c 69 6e 65 20 25 64 29 22 20 6c 62 65 67 29 29 29 29 0a 20 20 (format.".(line.%d)".lbeg))))...
79460 20 20 20 20 20 20 20 20 20 28 64 65 73 74 29 20 28 63 6f 6e 74 65 78 74 29 29 0a 20 20 20 20 20 .........(dest).(context))......
79480 20 28 73 65 74 71 20 64 65 73 74 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .(setq.dest.(cond...............
794a0 20 20 20 20 28 28 6d 65 6d 62 65 72 20 22 65 22 20 61 72 67 73 29 20 28 70 74 76 20 22 65 63 68 ....((member."e".args).(ptv."ech
794c0 6f 20 61 72 65 61 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 6d 65 o.area"))...................((me
794e0 6d 62 65 72 20 22 6b 22 20 61 72 67 73 29 20 28 70 74 76 20 22 6b 69 6c 6c 2d 72 69 6e 67 22 29 mber."k".args).(ptv."kill-ring")
79500 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 63 6c 2d 73 6f 6d 65 20 28 6c )...................((cl-some.(l
79520 61 6d 62 64 61 20 28 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 ambda.(s).......................
79540 20 20 20 20 20 20 20 20 28 61 6e 64 20 28 73 74 72 69 6e 67 70 20 73 29 20 28 6d 65 6d 71 20 28 ........(and.(stringp.s).(memq.(
79560 61 72 65 66 20 73 20 30 29 20 27 28 3f 67 20 3f 62 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 aref.s.0).'(?g.?b)).............
79580 20 20 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 65 71 75 .......................(not.(equ
795a0 61 6c 20 28 73 75 62 73 74 72 69 6e 67 20 73 20 31 29 20 28 62 75 66 66 65 72 2d 6e 61 6d 65 29 al.(substring.s.1).(buffer-name)
795c0 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 20 ))..............................
795e0 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 28 70 74 68 20 22 62 75 66 66 65 72 20 22 29 20 28 70 ......(concat.(pth."buffer.").(p
79600 74 76 20 28 73 75 62 73 74 72 69 6e 67 20 73 20 31 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 tv.(substring.s.1)))))..........
79620 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 29 29 0a 20 20 20 20 ...................args)))).....
79640 20 20 28 73 65 74 71 20 63 6f 6e 74 65 78 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 ..(setq.context.............(and
79660 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 .gptel-context--alist...........
79680 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 6c 63 20 28 6c 65 6e 67 74 68 20 67 70 74 65 6c 2d 63 .......(let.((lc.(length.gptel-c
796a0 6f 6e 74 65 78 74 2d 2d 61 6c 69 73 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ontext--alist)))................
796c0 20 20 20 20 28 63 6f 6e 63 61 74 20 28 70 74 68 20 22 20 61 6c 6f 6e 67 20 77 69 74 68 20 22 29 ....(concat.(pth.".along.with.")
796e0 20 28 70 74 76 20 28 66 6f 72 6d 61 74 20 22 25 64 22 20 6c 63 29 29 0a 20 20 20 20 20 20 20 20 .(ptv.(format."%d".lc)).........
79700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 74 68 20 28 63 6f 6e 63 61 74 20 ...................(pth.(concat.
79720 22 20 63 6f 6e 74 65 78 74 20 73 6f 75 72 63 65 22 20 28 61 6e 64 20 28 2f 3d 20 6c 63 20 31 29 ".context.source".(and.(/=.lc.1)
79740 20 22 73 22 29 29 29 29 29 29 29 0a 20 20 20 20 20 20 28 63 6f 6e 64 20 28 28 6d 65 6d 62 65 72 ."s"))))))).......(cond.((member
79760 20 22 6d 22 20 61 72 67 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 ."m".args)..............(concat.
79780 28 70 74 68 20 22 52 65 61 64 20 70 72 6f 6d 70 74 20 66 72 6f 6d 20 22 29 20 28 70 74 76 20 22 (pth."Read.prompt.from.").(ptv."
797a0 6d 69 6e 69 62 75 66 66 65 72 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 minibuffer")....................
797c0 20 20 63 6f 6e 74 65 78 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 ..context......................(
797e0 69 66 20 64 65 73 74 20 28 63 6f 6e 63 61 74 20 28 70 74 68 20 22 2c 20 72 65 73 70 6f 6e 73 65 if.dest.(concat.(pth.",.response
79800 20 74 6f 20 22 29 20 64 65 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .to.").dest)....................
79820 20 20 20 20 28 63 6f 6e 63 61 74 20 28 70 74 68 20 22 2c 20 69 6e 73 65 72 74 20 72 65 73 70 6f ....(concat.(pth.",.insert.respo
79840 6e 73 65 20 61 74 20 70 6f 69 6e 74 22 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 nse.at.point"))))).............(
79860 28 6d 65 6d 62 65 72 20 22 79 22 20 61 72 67 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 (member."y".args)..............(
79880 63 6f 6e 63 61 74 20 28 70 74 68 20 22 53 65 6e 64 20 70 72 6f 6d 70 74 20 66 72 6f 6d 20 22 29 concat.(pth."Send.prompt.from.")
798a0 0a 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 28 70 ......................(concat.(p
798c0 74 76 20 22 6b 69 6c 6c 2d 72 69 6e 67 20 28 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 tv."kill-ring.(")...............
798e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 2d 6c 65 74 2a 20 28 28 76 61 6c 20 28 63 ...............(if-let*.((val.(c
79900 75 72 72 65 6e 74 2d 6b 69 6c 6c 20 30 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 urrent-kill.0)).................
79920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 76 61 6c 20 28 73 75 62 .......................(val.(sub
79940 73 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 20 76 61 6c 29 29 0a 20 20 20 20 20 string-no-properties.val))......
79960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
79980 20 20 28 6c 65 6e 20 28 6c 65 6e 67 74 68 20 76 61 6c 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 ..(len.(length.val)))...........
799a0 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 74 76 20 28 63 6f 6e .......................(ptv.(con
799c0 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.............................
799e0 20 20 20 20 20 20 20 20 20 20 20 22 5c 22 22 20 28 73 74 72 69 6e 67 2d 72 65 70 6c 61 63 65 0a ..........."\"".(string-replace.
79a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
79a20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 5c 6e 22 20 22 e2 ae 90 22 0a 20 20 20 20 20 20 20 20 ............."\n"."...".........
79a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
79a60 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 0a 20 .....(truncate-string-to-width..
79a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
79aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 20 32 30 20 6e 69 6c 20 6e 69 6c 20 74 29 29 0a .............val.20.nil.nil.t)).
79ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
79ae0 20 20 20 20 20 20 20 22 5c 22 22 20 28 77 68 65 6e 20 28 3e 20 6c 65 6e 20 32 30 29 0a 20 20 20 ......."\"".(when.(>.len.20)....
79b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
79b20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ...........(concat..............
79b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
79b60 20 20 22 2c 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 ..",."..........................
79b80 20 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 65 2d 73 69 7a 65 ......................(file-size
79ba0 2d 68 75 6d 61 6e 2d 72 65 61 64 61 62 6c 65 20 6c 65 6e 20 27 73 69 20 22 20 22 29 0a 20 20 20 -human-readable.len.'si.".")....
79bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
79be0 20 20 20 20 20 20 20 20 20 20 20 20 22 20 63 68 61 72 73 22 29 29 29 29 0a 20 20 20 20 20 20 20 ............".chars"))))........
79c00 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 65 72 74 ........................(propert
79c20 69 7a 65 20 22 65 6d 70 74 79 22 20 27 66 61 63 65 20 27 65 72 72 6f 72 29 29 0a 20 20 20 20 20 ize."empty".'face.'error))......
79c40 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 74 76 20 22 29 22 ........................(ptv.")"
79c60 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 65 78 74 0a ))......................context.
79c80 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 64 65 73 74 20 28 63 .....................(if.dest.(c
79ca0 6f 6e 63 61 74 20 28 70 74 68 20 22 2c 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 22 29 20 64 65 73 oncat.(pth.",.response.to.").des
79cc0 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 28 63 6f 6e 63 61 t)........................(conca
79ce0 74 20 28 70 74 68 20 22 2c 20 69 6e 73 65 72 74 20 72 65 73 70 6f 6e 73 65 20 61 74 20 70 6f 69 t.(pth.",.insert.response.at.poi
79d00 6e 74 22 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 28 6d 65 6d 62 65 72 20 22 69 nt"))))).............((member."i
79d20 22 20 61 72 67 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 72 65 67 ".args)..............(let*.((reg
79d40 20 28 75 73 65 2d 72 65 67 69 6f 6e 2d 70 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .(use-region-p))................
79d60 20 20 20 20 20 28 73 72 63 20 28 70 74 76 20 28 69 66 20 72 65 67 20 22 73 65 6c 65 63 74 69 6f .....(src.(ptv.(if.reg."selectio
79d80 6e 22 20 28 62 75 66 66 65 72 2d 6e 61 6d 65 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 n".(buffer-name)))))............
79da0 20 20 20 20 28 69 66 20 64 65 73 74 20 28 63 6f 6e 63 61 74 20 28 70 74 68 20 22 53 65 6e 64 20 ....(if.dest.(concat.(pth."Send.
79dc0 22 29 20 73 72 63 20 6c 74 65 78 74 20 63 6f 6e 74 65 78 74 20 28 70 74 68 20 22 2c 20 77 69 74 ").src.ltext.context.(pth.",.wit
79de0 68 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 h.response.to.")................
79e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 74 76 20 64 65 73 74 29 20 28 70 74 68 .................(ptv.dest).(pth
79e20 20 22 3b 20 6b 69 6c 6c 22 29 20 6c 74 65 78 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .";.kill").ltext................
79e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 28 6e 6f 74 20 72 65 67 29 20 .................(and.(not.reg).
79e60 28 63 6f 6e 63 61 74 20 28 70 74 68 20 22 20 69 6e 20 22 29 20 73 72 63 29 29 29 0a 20 20 20 20 (concat.(pth.".in.").src))).....
79e80 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 28 70 74 68 20 22 52 65 70 6c 61 .............(concat.(pth."Repla
79ea0 63 65 20 22 29 20 73 72 63 20 6c 74 65 78 74 20 28 70 74 68 20 22 20 77 69 74 68 20 72 65 73 70 ce.").src.ltext.(pth.".with.resp
79ec0 6f 6e 73 65 22 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 onse")..........................
79ee0 28 61 6e 64 20 63 6f 6e 74 65 78 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (and.context....................
79f00 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 28 70 74 68 20 22 20 28 20 77 69 74 68 ...........(concat.(pth.".(.with
79f20 22 29 20 28 73 75 62 73 74 72 69 6e 67 20 63 6f 6e 74 65 78 74 20 31 31 29 20 22 20 29 22 29 29 ").(substring.context.11).".)"))
79f40 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 28 75 73 65 2d 72 65 67 69 6f 6e 2d 70 29 )))).............((use-region-p)
79f60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 28 70 74 68 20 22 53 65 6e 64 ..............(concat.(pth."Send
79f80 20 22 29 20 28 70 74 76 20 22 73 65 6c 65 63 74 69 6f 6e 22 29 20 6c 74 65 78 74 0a 20 20 20 20 .").(ptv."selection").ltext.....
79fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 65 78 74 20 28 69 66 20 64 65 73 .................context.(if.des
79fc0 74 20 28 63 6f 6e 63 61 74 20 28 70 74 68 20 22 2c 20 77 69 74 68 20 72 65 73 70 6f 6e 73 65 20 t.(concat.(pth.",.with.response.
79fe0 74 6f 20 22 29 20 64 65 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 to.").dest).....................
7a000 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 28 70 74 68 20 22 2c 20 69 6e 73 65 72 ...........(concat.(pth.",.inser
7a020 74 20 72 65 73 70 6f 6e 73 65 20 61 74 20 72 65 67 69 6f 6e 20 65 6e 64 22 29 29 29 29 29 0a 20 t.response.at.region.end")))))..
7a040 20 20 20 20 20 20 20 20 20 20 20 28 74 20 28 63 6f 6e 63 61 74 20 28 70 74 68 20 22 53 65 6e 64 ...........(t.(concat.(pth."Send
7a060 20 22 29 20 28 70 74 76 20 28 62 75 66 66 65 72 2d 6e 61 6d 65 29 29 20 6c 74 65 78 74 0a 20 20 .").(ptv.(buffer-name)).ltext...
7a080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 65 78 74 20 28 69 66 .....................context.(if
7a0a0 20 64 65 73 74 20 28 63 6f 6e 63 61 74 20 28 70 74 68 20 22 2c 20 77 69 74 68 20 72 65 73 70 6f .dest.(concat.(pth.",.with.respo
7a0c0 6e 73 65 20 74 6f 20 22 29 20 64 65 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 nse.to.").dest).................
7a0e0 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 28 70 74 68 20 22 2c .................(concat.(pth.",
7a100 20 69 6e 73 65 72 74 20 72 65 73 70 6f 6e 73 65 20 61 74 20 70 6f 69 6e 74 22 29 29 29 29 29 29 .insert.response.at.point"))))))
7a120 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 66 6f 72 6d 61 74 2d 70 72 65 73 65 74 )))..(defun.gptel--format-preset
7a140 2d 73 74 72 69 6e 67 20 28 29 0a 20 20 22 46 6f 72 6d 61 74 20 74 68 65 20 70 72 65 73 65 74 20 -string.()..."Format.the.preset.
7a160 69 6e 64 69 63 61 74 6f 72 20 64 69 73 70 6c 61 79 20 66 6f 72 20 60 67 70 74 65 6c 2d 6d 65 6e indicator.display.for.`gptel-men
7a180 75 27 2e 22 0a 20 20 28 69 66 20 28 61 6e 64 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 70 72 65 u'."...(if.(and.gptel--known-pre
7a1a0 73 65 74 73 20 67 70 74 65 6c 2d 2d 70 72 65 73 65 74 29 0a 20 20 20 20 20 20 28 61 70 70 6c 79 sets.gptel--preset).......(apply
7a1c0 0a 20 20 20 20 20 20 20 23 27 66 6f 72 6d 61 74 20 22 20 28 25 73 25 73 29 22 0a 20 20 20 20 20 ........#'format.".(%s%s)"......
7a1e0 20 20 28 6c 65 74 20 28 28 6d 69 73 6d 61 74 63 68 20 28 67 70 74 65 6c 2d 2d 70 72 65 73 65 74 ..(let.((mismatch.(gptel--preset
7a200 2d 6d 69 73 6d 61 74 63 68 2d 70 20 67 70 74 65 6c 2d 2d 70 72 65 73 65 74 29 29 29 0a 20 20 20 -mismatch-p.gptel--preset)))....
7a220 20 20 20 20 20 20 28 6c 69 73 74 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 40 22 20 27 66 61 63 ......(list.(propertize."@".'fac
7a240 65 20 28 69 66 20 6d 69 73 6d 61 74 63 68 20 27 74 72 61 6e 73 69 65 6e 74 2d 6b 65 79 0a 20 20 e.(if.mismatch.'transient-key...
7a260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
7a280 20 20 20 20 20 27 28 20 3a 69 6e 68 65 72 69 74 20 74 72 61 6e 73 69 65 6e 74 2d 6b 65 79 0a 20 .....'(.:inherit.transient-key..
7a2a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
7a2c0 20 20 20 20 20 20 20 20 20 3a 69 6e 68 65 72 69 74 20 73 65 63 6f 6e 64 61 72 79 2d 73 65 6c 65 .........:inherit.secondary-sele
7a2e0 63 74 69 6f 6e 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 ction...........................
7a300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 62 6f 78 20 2d 31 20 3a 77 65 69 67 68 74 20 ................:box.-1.:weight.
7a320 62 6f 6c 64 29 29 29 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 bold)))................(properti
7a340 7a 65 20 28 66 6f 72 6d 61 74 20 22 25 73 22 20 67 70 74 65 6c 2d 2d 70 72 65 73 65 74 29 20 27 ze.(format."%s".gptel--preset).'
7a360 66 61 63 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 face............................
7a380 28 69 66 20 6d 69 73 6d 61 74 63 68 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (if.mismatch....................
7a3a0 20 20 20 20 20 20 20 20 20 20 20 20 27 28 3a 69 6e 68 65 72 69 74 20 77 61 72 6e 69 6e 67 20 3a ............'(:inherit.warning.:
7a3c0 73 74 72 69 6b 65 2d 74 68 72 6f 75 67 68 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 strike-through.t)...............
7a3e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 28 3a 69 6e 68 65 72 69 74 20 73 65 63 6f 6e 64 ...............'(:inherit.second
7a400 61 72 79 2d 73 65 6c 65 63 74 69 6f 6e 20 3a 62 6f 78 20 2d 31 29 29 29 29 29 29 0a 20 20 20 20 ary-selection.:box.-1)))))).....
7a420 28 66 6f 72 6d 61 74 20 22 20 28 25 73 25 73 29 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 (format.".(%s%s)".............(p
7a440 72 6f 70 65 72 74 69 7a 65 20 22 40 22 20 27 66 61 63 65 20 27 74 72 61 6e 73 69 65 6e 74 2d 6b ropertize."@".'face.'transient-k
7a460 65 79 29 0a 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 70 72 65 ey).............(propertize."pre
7a480 73 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 76 65 2d 76 set".'face.'transient-inactive-v
7a4a0 61 6c 75 65 29 29 29 29 0a 0a 0c 0a 3b 3b 20 2a 20 54 72 61 6e 73 69 65 6e 74 20 63 6c 61 73 73 alue))))....;;.*.Transient.class
7a4c0 65 73 20 61 6e 64 20 6d 65 74 68 6f 64 73 20 66 6f 72 20 67 70 74 65 6c 0a 0a 3b 3b 20 2a 2a 20 es.and.methods.for.gptel..;;.**.
7a4e0 43 6c 61 73 73 20 66 6f 72 20 67 65 6e 65 72 69 63 20 67 70 74 65 6c 20 65 6c 69 73 70 20 76 61 Class.for.generic.gptel.elisp.va
7a500 72 69 61 62 6c 65 73 0a 0a 28 64 65 66 63 6c 61 73 73 20 67 70 74 65 6c 2d 6c 69 73 70 2d 76 61 riables..(defclass.gptel-lisp-va
7a520 72 69 61 62 6c 65 20 28 74 72 61 6e 73 69 65 6e 74 2d 6c 69 73 70 2d 76 61 72 69 61 62 6c 65 29 riable.(transient-lisp-variable)
7a540 0a 20 20 28 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 ...((display-nil.:initarg.:displ
7a560 61 79 2d 6e 69 6c 29 20 20 3b 53 74 72 69 6e 67 20 74 6f 20 64 69 73 70 6c 61 79 20 69 66 20 76 ay-nil)..;String.to.display.if.v
7a580 61 6c 75 65 20 69 66 20 6e 69 6c 0a 20 20 20 28 64 69 73 70 6c 61 79 2d 6d 61 70 20 3a 69 6e 69 alue.if.nil....(display-map.:ini
7a5a0 74 61 72 67 20 3a 64 69 73 70 6c 61 79 2d 6d 61 70 20 3a 69 6e 69 74 66 6f 72 6d 20 6e 69 6c 29 targ.:display-map.:initform.nil)
7a5c0 29 20 3b 44 69 73 70 6c 61 79 20 73 74 72 69 6e 67 20 66 72 6f 6d 20 61 6c 69 73 74 20 64 69 73 ).;Display.string.from.alist.dis
7a5e0 70 6c 61 79 2d 6d 61 70 0a 20 20 22 4c 69 73 70 20 76 61 72 69 61 62 6c 65 73 20 74 68 61 74 20 play-map..."Lisp.variables.that.
7a600 73 68 6f 77 20 3a 64 69 73 70 6c 61 79 2d 6e 69 6c 20 69 6e 73 74 65 61 64 20 6f 66 20 6e 69 6c show.:display-nil.instead.of.nil
7a620 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 74 2d 66 6f 72 .")..(cl-defmethod.transient-for
7a640 6d 61 74 2d 76 61 6c 75 65 20 28 28 6f 62 6a 20 67 70 74 65 6c 2d 6c 69 73 70 2d 76 61 72 69 61 mat-value.((obj.gptel-lisp-varia
7a660 62 6c 65 29 29 0a 20 20 28 6c 65 74 20 28 28 64 69 73 70 6c 61 79 2d 76 61 6c 75 65 0a 20 20 20 ble))...(let.((display-value....
7a680 20 20 20 20 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 79 ......(with-slots.(value.display
7a6a0 2d 6e 69 6c 20 64 69 73 70 6c 61 79 2d 6d 61 70 29 20 6f 62 6a 0a 20 20 20 20 20 20 20 20 20 20 -nil.display-map).obj...........
7a6c0 20 28 63 6f 6e 64 20 28 28 6e 75 6c 6c 20 76 61 6c 75 65 29 20 64 69 73 70 6c 61 79 2d 6e 69 6c .(cond.((null.value).display-nil
7a6e0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 69 73 70 6c 61 79 2d 6d 61 70 20 )..................(display-map.
7a700 28 6f 72 20 28 63 64 72 20 28 61 73 73 6f 63 20 76 61 6c 75 65 20 64 69 73 70 6c 61 79 2d 6d 61 (or.(cdr.(assoc.value.display-ma
7a720 70 29 29 20 76 61 6c 75 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 20 p)).value))..................(t.
7a740 76 61 6c 75 65 29 29 29 29 29 0a 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 0a 20 20 20 20 20 value))))).....(propertize......
7a760 28 69 66 20 28 73 74 72 69 6e 67 70 20 64 69 73 70 6c 61 79 2d 76 61 6c 75 65 29 20 64 69 73 70 (if.(stringp.display-value).disp
7a780 6c 61 79 2d 76 61 6c 75 65 20 28 70 72 69 6e 31 2d 74 6f 2d 73 74 72 69 6e 67 20 64 69 73 70 6c lay-value.(prin1-to-string.displ
7a7a0 61 79 2d 76 61 6c 75 65 29 29 0a 20 20 20 20 20 27 66 61 63 65 20 27 74 72 61 6e 73 69 65 6e 74 ay-value))......'face.'transient
7a7c0 2d 76 61 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 -value)))..(cl-defmethod.transie
7a7e0 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 2d 76 61 nt-infix-set.((obj.gptel-lisp-va
7a800 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 65 66 20 riable).value)...(funcall.(oref.
7a820 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 65 66 20 obj.set-value)............(oref.
7a840 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 74 20 6f obj.variable)............(oset.o
7a860 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 74 65 6c bj.value.value)............gptel
7a880 2d 2d 73 65 74 2d 62 75 66 66 65 72 2d 6c 6f 63 61 6c 6c 79 29 29 0a 0a 3b 3b 20 2a 2a 20 43 6c --set-buffer-locally))..;;.**.Cl
7a8a0 61 73 73 20 66 6f 72 20 6d 61 6e 61 67 69 6e 67 20 67 70 74 65 6c 20 74 6f 6f 6c 73 0a 0a 28 64 ass.for.managing.gptel.tools..(d
7a8c0 65 66 63 6c 61 73 73 20 67 70 74 65 6c 2d 2d 73 77 69 74 63 68 20 28 74 72 61 6e 73 69 65 6e 74 efclass.gptel--switch.(transient
7a8e0 2d 73 77 69 74 63 68 29 0a 20 20 28 28 63 61 74 65 67 6f 72 79 20 3a 69 6e 69 74 61 72 67 20 3a -switch)...((category.:initarg.:
7a900 63 61 74 65 67 6f 72 79 29 29 0a 20 20 22 43 6c 61 73 73 20 75 73 65 64 20 66 6f 72 20 61 72 67 category))..."Class.used.for.arg
7a920 75 6d 65 6e 74 73 20 74 68 61 74 20 73 68 61 72 65 20 61 20 63 61 74 65 67 6f 72 79 2e 22 29 0a uments.that.share.a.category.").
7a940 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 69 6e 66 69 78 2d 73 .(cl-defmethod.transient-infix-s
7a960 65 74 20 28 28 6f 62 6a 20 67 70 74 65 6c 2d 2d 73 77 69 74 63 68 29 20 76 61 6c 75 65 29 0a 20 et.((obj.gptel--switch).value)..
7a980 20 22 53 65 74 20 56 41 4c 55 45 20 6f 66 20 61 20 60 67 70 74 65 6c 2d 2d 73 77 69 74 63 68 27 ."Set.VALUE.of.a.`gptel--switch'
7a9a0 20 4f 42 4a 2e 0a 0a 49 74 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 74 68 65 20 63 61 74 65 67 .OBJ...It.is.a.list.of.the.categ
7a9c0 6f 72 79 20 61 6e 64 20 61 72 67 75 6d 65 6e 74 2c 20 65 2e 67 2e 0a 20 28 5c 22 66 69 6c 65 73 ory.and.argument,.e.g...(\"files
7a9e0 79 73 74 65 6d 5c 22 20 5c 22 72 65 61 64 5f 66 69 6c 65 5c 22 29 2e 22 0a 20 20 28 6c 65 74 20 ystem\".\"read_file\")."...(let.
7aa00 28 28 73 74 61 74 65 20 28 74 72 61 6e 73 69 65 6e 74 2d 73 63 6f 70 65 29 29 0a 20 20 20 20 20 ((state.(transient-scope))......
7aa20 20 20 20 28 63 61 74 65 67 6f 72 79 20 28 6f 72 65 66 20 6f 62 6a 20 63 61 74 65 67 6f 72 79 29 ...(category.(oref.obj.category)
7aa40 29 29 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 67 6e 0a )).....(if.value.........(progn.
7aa60 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 70 75 73 68 6e 65 77 20 28 6c 69 73 74 20 63 61 74 65 ..........(cl-pushnew.(list.cate
7aa80 67 6f 72 79 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 gory.value).....................
7aaa0 20 20 28 70 6c 69 73 74 2d 67 65 74 20 73 74 61 74 65 20 3a 74 6f 6f 6c 73 29 20 3a 74 65 73 74 ..(plist-get.state.:tools).:test
7aac0 20 23 27 65 71 75 61 6c 29 0a 20 20 20 20 20 20 20 20 20 20 28 6f 73 65 74 20 6f 62 6a 20 76 61 .#'equal)...........(oset.obj.va
7aae0 6c 75 65 20 28 6c 69 73 74 20 63 61 74 65 67 6f 72 79 20 76 61 6c 75 65 29 29 29 0a 20 20 20 20 lue.(list.category.value))).....
7ab00 20 20 28 70 6c 69 73 74 2d 70 75 74 20 73 74 61 74 65 20 3a 74 6f 6f 6c 73 0a 20 20 20 20 20 20 ..(plist-put.state.:tools.......
7ab20 20 20 20 20 20 20 20 20 20 20 20 28 64 65 6c 65 74 65 20 28 6c 69 73 74 20 63 61 74 65 67 6f 72 ...........(delete.(list.categor
7ab40 79 20 28 6f 72 65 66 20 6f 62 6a 20 61 72 67 75 6d 65 6e 74 29 29 0a 20 20 20 20 20 20 20 20 20 y.(oref.obj.argument))..........
7ab60 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 73 74 61 74 65 ................(plist-get.state
7ab80 20 3a 74 6f 6f 6c 73 29 29 29 0a 20 20 20 20 20 20 28 6f 73 65 74 20 6f 62 6a 20 76 61 6c 75 65 .:tools))).......(oset.obj.value
7aba0 20 6e 69 6c 29 29 0a 20 20 20 20 28 6f 73 65 74 20 74 72 61 6e 73 69 65 6e 74 2d 2d 70 72 65 66 .nil)).....(oset.transient--pref
7abc0 69 78 20 73 63 6f 70 65 20 73 74 61 74 65 29 29 29 0a 0a 3b 3b 20 2a 2a 20 43 6c 61 73 73 20 66 ix.scope.state)))..;;.**.Class.f
7abe0 6f 72 20 6d 61 6e 61 67 69 6e 67 20 67 70 74 65 6c 20 74 6f 6f 6c 20 63 61 74 65 67 6f 72 69 65 or.managing.gptel.tool.categorie
7ac00 73 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 2d 63 61 74 65 67 s..(defclass.gptel--switch-categ
7ac20 6f 72 79 20 28 74 72 61 6e 73 69 65 6e 74 2d 73 77 69 74 63 68 29 0a 20 20 28 28 63 61 74 65 67 ory.(transient-switch)...((categ
7ac40 6f 72 79 20 3a 69 6e 69 74 61 72 67 20 3a 63 61 74 65 67 6f 72 79 29 29 0a 20 20 22 43 6c 61 73 ory.:initarg.:category))..."Clas
7ac60 73 20 75 73 65 64 20 66 6f 72 20 61 72 67 75 6d 65 6e 74 73 20 74 68 61 74 20 73 77 69 74 63 68 s.used.for.arguments.that.switch
7ac80 20 61 20 67 72 6f 75 70 20 6f 66 20 6f 74 68 65 72 20 61 72 67 75 6d 65 6e 74 73 2e 0a 0a 54 68 .a.group.of.other.arguments...Th
7aca0 65 69 72 20 6f 77 6e 20 76 61 6c 75 65 20 69 73 20 69 67 6e 6f 72 65 64 22 29 0a 0a 28 63 6c 2d eir.own.value.is.ignored")..(cl-
7acc0 64 65 66 6d 65 74 68 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 defmethod.transient-format-value
7ace0 20 28 28 6f 62 6a 20 67 70 74 65 6c 2d 2d 73 77 69 74 63 68 2d 63 61 74 65 67 6f 72 79 29 29 0a .((obj.gptel--switch-category)).
7ad00 20 20 28 6c 65 74 2a 20 28 28 63 61 74 65 67 6f 72 79 20 28 6f 72 65 66 20 6f 62 6a 20 63 61 74 ..(let*.((category.(oref.obj.cat
7ad20 65 67 6f 72 79 29 29 0a 20 20 20 20 20 20 20 20 20 28 61 63 74 69 76 65 2d 63 6f 75 6e 74 0a 20 egory))..........(active-count..
7ad40 20 20 20 20 20 20 20 20 20 28 63 6c 2d 63 6f 75 6e 74 2d 69 66 20 28 6c 61 6d 62 64 61 20 28 74 .........(cl-count-if.(lambda.(t
7ad60 6c 29 20 28 65 71 75 61 6c 20 28 63 61 72 20 74 6c 29 20 63 61 74 65 67 6f 72 79 29 29 0a 20 20 l).(equal.(car.tl).category))...
7ad80 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.
7ada0 28 74 72 61 6e 73 69 65 6e 74 2d 73 63 6f 70 65 29 20 3a 74 6f 6f 6c 73 29 29 29 0a 20 20 20 20 (transient-scope).:tools))).....
7adc0 20 20 20 20 20 28 74 6f 74 61 6c 2d 63 6f 75 6e 74 20 28 6c 65 6e 67 74 68 20 28 63 64 72 20 28 .....(total-count.(length.(cdr.(
7ade0 61 73 73 6f 63 20 63 61 74 65 67 6f 72 79 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 74 6f 6f 6c assoc.category.gptel--known-tool
7ae00 73 29 29 29 29 29 0a 20 20 20 20 28 69 66 20 28 3e 20 61 63 74 69 76 65 2d 63 6f 75 6e 74 20 30 s))))).....(if.(>.active-count.0
7ae20 29 0a 20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 28 66 6f 72 6d 61 74 20 22 28 ).........(propertize.(format."(
7ae40 25 64 2f 25 64 29 22 20 61 63 74 69 76 65 2d 63 6f 75 6e 74 20 74 6f 74 61 6c 2d 63 6f 75 6e 74 %d/%d)".active-count.total-count
7ae60 29 20 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 ).'face.'transient-value).......
7ae80 28 70 72 6f 70 65 72 74 69 7a 65 20 28 66 6f 72 6d 61 74 20 22 28 30 2f 25 64 29 22 20 74 6f 74 (propertize.(format."(0/%d)".tot
7aea0 61 6c 2d 63 6f 75 6e 74 29 20 27 66 61 63 65 20 27 74 72 61 6e 73 69 65 6e 74 2d 69 6e 61 63 74 al-count).'face.'transient-inact
7aec0 69 76 65 2d 76 61 6c 75 65 29 29 29 29 0a 0a 3b 3b 20 50 72 65 73 73 69 6e 67 20 61 20 74 6f 6f ive-value))))..;;.Pressing.a.too
7aee0 6c 20 63 61 74 65 67 6f 72 79 20 6b 65 79 20 73 68 6f 75 6c 64 20 68 61 76 65 20 64 69 66 66 65 l.category.key.should.have.diffe
7af00 72 65 6e 74 20 62 65 68 61 76 69 6f 72 73 20 69 6e 20 64 69 66 66 65 72 65 6e 74 0a 3b 3b 20 63 rent.behaviors.in.different.;;.c
7af20 6f 6e 74 65 78 74 73 3a 0a 3b 3b 20 2d 20 49 66 20 74 68 65 20 74 6f 6f 6c 73 20 66 6f 72 20 74 ontexts:.;;.-.If.the.tools.for.t
7af40 68 65 20 63 61 74 65 67 6f 72 79 20 61 72 65 20 6e 6f 74 20 73 68 6f 77 6e 2c 20 73 68 6f 77 20 he.category.are.not.shown,.show.
7af60 74 68 65 6d 2c 20 64 6f 20 6e 6f 74 68 69 6e 67 20 65 6c 73 65 0a 3b 3b 20 2d 20 49 66 20 74 68 them,.do.nothing.else.;;.-.If.th
7af80 65 20 74 6f 6f 6c 73 20 61 72 65 20 73 68 6f 77 69 6e 67 20 61 6e 64 20 61 6e 79 20 6f 66 20 74 e.tools.are.showing.and.any.of.t
7afa0 68 65 6d 20 61 72 65 20 73 65 6c 65 63 74 65 64 2c 20 64 65 73 65 6c 65 63 74 20 61 6c 6c 0a 3b hem.are.selected,.deselect.all.;
7afc0 3b 20 2d 20 49 66 20 74 68 65 20 74 6f 6f 6c 73 20 61 72 65 20 73 68 6f 77 69 6e 67 20 61 6e 64 ;.-.If.the.tools.are.showing.and
7afe0 20 6e 6f 6e 65 20 6f 66 20 74 68 65 6d 20 61 72 65 20 73 65 6c 65 63 74 65 64 2c 20 73 65 6c 65 .none.of.them.are.selected,.sele
7b000 63 74 20 61 6c 6c 0a 0a 3b 3b 20 54 6f 20 64 6f 20 74 68 69 73 20 77 65 20 69 6e 64 65 70 65 6e ct.all..;;.To.do.this.we.indepen
7b020 64 65 6e 74 6c 79 20 74 72 61 63 6b 20 77 68 65 74 68 65 72 20 74 68 65 20 63 61 74 65 67 6f 72 dently.track.whether.the.categor
7b040 79 20 74 6f 6f 6c 73 20 61 72 65 20 76 69 73 69 62 6c 65 0a 3b 3b 20 28 22 61 63 74 69 76 65 22 y.tools.are.visible.;;.("active"
7b060 29 2c 20 61 6e 64 20 77 68 65 74 68 65 72 20 61 6e 79 20 63 61 74 65 67 6f 72 79 20 74 6f 6f 6c ),.and.whether.any.category.tool
7b080 73 20 68 61 76 65 20 62 65 65 6e 20 22 73 65 6c 65 63 74 65 64 22 3a 0a 28 63 6c 2d 64 65 66 6d s.have.been."selected":.(cl-defm
7b0a0 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 64 20 28 28 6f 62 6a ethod.transient-infix-read.((obj
7b0c0 20 67 70 74 65 6c 2d 2d 73 77 69 74 63 68 2d 63 61 74 65 67 6f 72 79 29 29 0a 20 20 22 44 65 74 .gptel--switch-category))..."Det
7b0e0 65 72 6d 69 6e 65 20 4f 42 4a 20 76 61 6c 75 65 20 61 63 63 6f 72 64 69 6e 67 20 74 6f 20 63 61 ermine.OBJ.value.according.to.ca
7b100 74 65 67 6f 72 79 20 74 6f 67 67 6c 65 20 73 65 74 74 69 6e 67 73 2e 22 0a 20 20 28 6c 65 74 2a tegory.toggle.settings."...(let*
7b120 20 28 28 63 61 74 65 67 6f 72 79 20 28 6f 72 65 66 20 6f 62 6a 20 63 61 74 65 67 6f 72 79 29 29 .((category.(oref.obj.category))
7b140 0a 20 20 20 20 20 20 20 20 20 28 61 63 74 69 76 65 20 28 65 71 75 61 6c 20 63 61 74 65 67 6f 72 ..........(active.(equal.categor
7b160 79 20 28 70 6c 69 73 74 2d 67 65 74 20 28 74 72 61 6e 73 69 65 6e 74 2d 73 63 6f 70 65 29 20 3a y.(plist-get.(transient-scope).:
7b180 63 61 74 65 67 6f 72 79 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 73 65 6c 65 63 74 65 64 20 28 category)))..........(selected.(
7b1a0 63 6c 2d 73 6f 6d 65 20 28 6c 61 6d 62 64 61 20 28 74 6f 6f 6c 2d 73 70 65 63 29 20 28 65 71 75 cl-some.(lambda.(tool-spec).(equ
7b1c0 61 6c 20 63 61 74 65 67 6f 72 79 20 28 63 61 72 20 74 6f 6f 6c 2d 73 70 65 63 29 29 29 0a 20 20 al.category.(car.tool-spec)))...
7b1e0 20 20 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 6c 69 73 74 ..........................(plist
7b200 2d 67 65 74 20 28 74 72 61 6e 73 69 65 6e 74 2d 73 63 6f 70 65 29 20 3a 74 6f 6f 6c 73 29 29 29 -get.(transient-scope).:tools)))
7b220 29 0a 20 20 20 20 28 69 66 20 28 6e 6f 74 20 61 63 74 69 76 65 29 0a 20 20 20 20 20 20 20 20 28 ).....(if.(not.active).........(
7b240 6f 72 65 66 20 6f 62 6a 20 76 61 6c 75 65 29 0a 20 20 20 20 20 20 28 69 66 20 73 65 6c 65 63 74 oref.obj.value).......(if.select
7b260 65 64 20 6e 69 6c 20 28 6f 72 65 66 20 6f 62 6a 20 61 72 67 75 6d 65 6e 74 29 29 29 29 29 0a 0a ed.nil.(oref.obj.argument)))))..
7b280 28 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 73 65 (cl-defmethod.transient-infix-se
7b2a0 74 20 28 28 6f 62 6a 20 67 70 74 65 6c 2d 2d 73 77 69 74 63 68 2d 63 61 74 65 67 6f 72 79 29 20 t.((obj.gptel--switch-category).
7b2c0 76 61 6c 75 65 29 0a 20 20 22 57 68 65 6e 20 73 65 74 74 69 6e 67 20 56 41 4c 55 45 2c 20 73 65 value)..."When.setting.VALUE,.se
7b2e0 74 20 61 6c 6c 20 6f 70 74 69 6f 6e 73 20 69 6e 20 74 68 65 20 63 61 74 65 67 6f 72 79 20 6f 66 t.all.options.in.the.category.of
7b300 20 4f 42 4a 2e 22 0a 20 20 28 64 6f 6c 69 73 74 20 28 73 75 66 66 69 78 2d 6f 62 6a 20 74 72 61 .OBJ."...(dolist.(suffix-obj.tra
7b320 6e 73 69 65 6e 74 2d 2d 73 75 66 66 69 78 65 73 29 0a 20 20 20 20 3b 3b 20 46 69 6e 64 20 61 6c nsient--suffixes).....;;.Find.al
7b340 6c 20 73 75 66 66 69 78 65 73 20 74 68 61 74 20 68 61 76 65 20 74 68 69 73 20 63 61 74 65 67 6f l.suffixes.that.have.this.catego
7b360 72 79 0a 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 28 63 6c 2d 74 79 70 65 70 20 73 75 ry.....(when-let*.(((cl-typep.su
7b380 66 66 69 78 2d 6f 62 6a 20 27 67 70 74 65 6c 2d 2d 73 77 69 74 63 68 29 29 0a 20 20 20 20 20 20 ffix-obj.'gptel--switch)).......
7b3a0 20 20 20 20 20 20 20 20 20 20 28 28 65 71 75 61 6c 20 28 6f 72 65 66 20 73 75 66 66 69 78 2d 6f ..........((equal.(oref.suffix-o
7b3c0 62 6a 20 63 61 74 65 67 6f 72 79 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 bj.category)....................
7b3e0 20 20 20 20 20 28 6f 72 65 66 20 6f 62 6a 20 63 61 74 65 67 6f 72 79 29 29 29 0a 20 20 20 20 20 .....(oref.obj.category)))......
7b400 20 20 20 20 20 20 20 20 20 20 20 28 61 72 67 20 28 69 66 20 28 73 6c 6f 74 2d 62 6f 75 6e 64 70 ...........(arg.(if.(slot-boundp
7b420 20 73 75 66 66 69 78 2d 6f 62 6a 20 27 61 72 67 75 6d 65 6e 74 29 0a 20 20 20 20 20 20 20 20 20 .suffix-obj.'argument)..........
7b440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 65 66 20 73 75 66 66 69 78 2d 6f 62 6a ................(oref.suffix-obj
7b460 20 61 72 67 75 6d 65 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 .argument)......................
7b480 20 20 28 6f 72 65 66 20 6f 62 6a 20 61 72 67 75 6d 65 6e 74 2d 66 6f 72 6d 61 74 29 29 29 29 0a ..(oref.obj.argument-format)))).
7b4a0 20 20 20 20 20 20 28 69 66 20 76 61 6c 75 65 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ......(if.value.................
7b4c0 20 20 20 20 20 20 20 20 3b 20 54 75 72 6e 20 6f 6e 2f 6f 66 66 20 61 6c 6c 20 6d 65 6d 62 65 72 ........;.Turn.on/off.all.member
7b4e0 73 20 69 6e 20 63 61 74 65 67 6f 72 79 0a 20 20 20 20 20 20 20 20 20 20 28 74 72 61 6e 73 69 65 s.in.category...........(transie
7b500 6e 74 2d 69 6e 66 69 78 2d 73 65 74 20 73 75 66 66 69 78 2d 6f 62 6a 20 61 72 67 29 0a 20 20 20 nt-infix-set.suffix-obj.arg)....
7b520 20 20 20 20 20 28 74 72 61 6e 73 69 65 6e 74 2d 69 6e 66 69 78 2d 73 65 74 20 73 75 66 66 69 78 .....(transient-infix-set.suffix
7b540 2d 6f 62 6a 20 6e 69 6c 29 29 29 29 0a 20 20 3b 3b 20 55 70 64 61 74 65 20 74 68 65 20 61 63 74 -obj.nil))))...;;.Update.the.act
7b560 69 76 65 20 6d 65 6e 75 20 63 61 74 65 67 6f 72 79 20 61 6e 64 20 6b 65 79 20 69 6e 20 74 68 65 ive.menu.category.and.key.in.the
7b580 20 70 72 65 66 69 78 20 73 63 6f 70 65 0a 20 20 28 70 6c 69 73 74 2d 70 75 74 20 28 74 72 61 6e .prefix.scope...(plist-put.(tran
7b5a0 73 69 65 6e 74 2d 73 63 6f 70 65 29 20 3a 63 61 74 65 67 6f 72 79 20 28 6f 72 65 66 20 6f 62 6a sient-scope).:category.(oref.obj
7b5c0 20 63 61 74 65 67 6f 72 79 29 29 0a 20 20 28 70 6c 69 73 74 2d 70 75 74 20 28 74 72 61 6e 73 69 .category))...(plist-put.(transi
7b5e0 65 6e 74 2d 73 63 6f 70 65 29 20 3a 6b 65 79 20 28 6f 72 65 66 20 6f 62 6a 20 6b 65 79 29 29 0a ent-scope).:key.(oref.obj.key)).
7b600 20 20 3b 3b 20 46 69 6e 61 6c 6c 79 20 73 65 74 20 74 68 65 20 22 76 61 6c 75 65 22 20 6f 66 20 ..;;.Finally.set.the."value".of.
7b620 74 68 65 20 63 61 74 65 67 6f 72 79 20 69 74 73 65 6c 66 0a 20 20 28 6f 73 65 74 20 6f 62 6a 20 the.category.itself...(oset.obj.
7b640 76 61 6c 75 65 20 76 61 6c 75 65 29 29 0a 0a 3b 3b 20 2a 2a 20 43 6c 61 73 73 20 66 6f 72 20 67 value.value))..;;.**.Class.for.g
7b660 70 74 65 6c 20 6f 70 74 69 6f 6e 73 20 74 68 61 74 20 61 72 65 20 74 68 72 65 65 2d 77 61 79 20 ptel.options.that.are.three-way.
7b680 73 77 69 74 63 68 65 73 0a 0a 28 64 65 66 63 6c 61 73 73 20 67 70 74 65 6c 2d 2d 73 77 69 74 63 switches..(defclass.gptel--switc
7b6a0 68 65 73 20 28 67 70 74 65 6c 2d 6c 69 73 70 2d 76 61 72 69 61 62 6c 65 29 0a 20 20 28 28 64 69 hes.(gptel-lisp-variable)...((di
7b6c0 73 70 6c 61 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 splay-if-true.:initarg.:display-
7b6e0 69 66 2d 74 72 75 65 20 3a 69 6e 69 74 66 6f 72 6d 20 22 54 72 75 65 22 29 0a 20 20 20 28 64 69 if-true.:initform."True")....(di
7b700 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 64 69 73 70 6c 61 79 splay-if-false.:initarg.:display
7b720 2d 69 66 2d 66 61 6c 73 65 20 3a 69 6e 69 74 66 6f 72 6d 20 22 46 61 6c 73 65 22 29 29 0a 20 20 -if-false.:initform."False"))...
7b740 22 42 6f 6f 6c 65 61 6e 20 6c 69 73 70 20 76 61 72 69 61 62 6c 65 20 63 6c 61 73 73 20 66 6f 72 "Boolean.lisp.variable.class.for
7b760 20 67 70 74 65 6c 2d 74 72 61 6e 73 69 65 6e 74 2e 22 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 .gptel-transient.")..(cl-defmeth
7b780 6f 64 20 74 72 61 6e 73 69 65 6e 74 2d 69 6e 66 69 78 2d 72 65 61 64 20 28 28 6f 62 6a 20 67 70 od.transient-infix-read.((obj.gp
7b7a0 74 65 6c 2d 2d 73 77 69 74 63 68 65 73 29 29 0a 20 20 22 43 79 63 6c 65 20 74 68 72 6f 75 67 68 tel--switches))..."Cycle.through
7b7c0 20 74 68 65 20 6d 75 74 75 61 6c 6c 79 20 65 78 63 6c 75 73 69 76 65 20 73 77 69 74 63 68 65 73 .the.mutually.exclusive.switches
7b7e0 2e 22 0a 20 20 28 6e 6f 74 20 28 6f 72 65 66 20 6f 62 6a 20 76 61 6c 75 65 29 29 29 0a 0a 28 63 ."...(not.(oref.obj.value)))..(c
7b800 6c 2d 64 65 66 6d 65 74 68 6f 64 20 74 72 61 6e 73 69 65 6e 74 2d 66 6f 72 6d 61 74 2d 76 61 6c l-defmethod.transient-format-val
7b820 75 65 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 28 77 69 ue.((obj.gptel--switches))...(wi
7b840 74 68 2d 73 6c 6f 74 73 20 28 76 61 6c 75 65 20 64 69 73 70 6c 61 79 2d 69 66 2d 74 72 75 65 20 th-slots.(value.display-if-true.
7b860 64 69 73 70 6c 61 79 2d 69 66 2d 66 61 6c 73 65 29 20 6f 62 6a 0a 20 20 20 20 20 20 28 66 6f 72 display-if-false).obj.......(for
7b880 6d 61 74 0a 20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 28 25 73 29 22 20 27 66 mat........(propertize."(%s)".'f
7b8a0 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 20 20 20 ace.'transient-delimiter).......
7b8c0 20 28 63 6f 6e 63 61 74 0a 20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 64 69 73 .(concat.........(propertize.dis
7b8e0 70 6c 61 79 2d 69 66 2d 66 61 6c 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 play-if-false...................
7b900 20 20 27 66 61 63 65 20 28 69 66 20 76 61 6c 75 65 20 27 74 72 61 6e 73 69 65 6e 74 2d 69 6e 61 ..'face.(if.value.'transient-ina
7b920 63 74 69 76 65 2d 76 61 6c 75 65 20 27 74 72 61 6e 73 69 65 6e 74 2d 76 61 6c 75 65 29 29 0a 20 ctive-value.'transient-value))..
7b940 20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 7c 22 20 27 66 61 63 65 20 27 74 72 .......(propertize."|".'face.'tr
7b960 61 6e 73 69 65 6e 74 2d 64 65 6c 69 6d 69 74 65 72 29 0a 20 20 20 20 20 20 20 20 28 70 72 6f 70 ansient-delimiter).........(prop
7b980 65 72 74 69 7a 65 20 64 69 73 70 6c 61 79 2d 69 66 2d 74 72 75 65 0a 20 20 20 20 20 20 20 20 20 ertize.display-if-true..........
7b9a0 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 6e ...........'face.(if.value.'tran
7b9c0 73 69 65 6e 74 2d 76 61 6c 75 65 20 27 74 72 61 6e 73 69 65 6e 74 2d 69 6e 61 63 74 69 76 65 2d sient-value.'transient-inactive-
7b9e0 76 61 6c 75 65 29 29 29 29 29 29 0a 0a 3b 3b 20 2a 2a 20 43 6c 61 73 73 20 66 6f 72 20 67 70 74 value))))))..;;.**.Class.for.gpt
7ba00 65 6c 27 73 20 73 63 6f 70 65 20 6d 61 6e 61 67 65 6d 65 6e 74 2c 20 73 69 6e 67 6c 65 74 6f 6e el's.scope.management,.singleton
7ba20 0a 0a 28 64 65 66 63 6c 61 73 73 20 67 70 74 65 6c 2d 2d 73 63 6f 70 65 20 28 67 70 74 65 6c 2d ..(defclass.gptel--scope.(gptel-
7ba40 2d 73 77 69 74 63 68 65 73 29 0a 20 20 28 28 64 69 73 70 6c 61 79 2d 69 66 2d 74 72 75 65 20 3a -switches)...((display-if-true.:
7ba60 69 6e 69 74 61 72 67 20 3a 64 69 73 70 6c 61 79 2d 69 66 2d 74 72 75 65 20 3a 69 6e 69 74 66 6f initarg.:display-if-true.:initfo
7ba80 72 6d 20 22 62 75 66 66 65 72 22 29 0a 20 20 20 28 64 69 73 70 6c 61 79 2d 69 66 2d 66 61 6c 73 rm."buffer")....(display-if-fals
7baa0 65 20 3a 69 6e 69 74 61 72 67 20 3a 64 69 73 70 6c 61 79 2d 69 66 2d 66 61 6c 73 65 20 3a 69 6e e.:initarg.:display-if-false.:in
7bac0 69 74 66 6f 72 6d 20 22 67 6c 6f 62 61 6c 22 29 29 0a 20 20 22 53 69 6e 67 6c 65 74 6f 6e 20 6c itform."global"))..."Singleton.l
7bae0 69 73 70 20 76 61 72 69 61 62 6c 65 20 63 6c 61 73 73 20 66 6f 72 20 60 67 70 74 65 6c 2d 2d 73 isp.variable.class.for.`gptel--s
7bb00 65 74 2d 62 75 66 66 65 72 2d 6c 6f 63 61 6c 6c 79 27 2e 0a 0a 54 68 69 73 20 69 73 20 75 73 65 et-buffer-locally'...This.is.use
7bb20 64 20 6f 6e 6c 79 20 66 6f 72 20 73 65 74 74 69 6e 67 20 74 68 69 73 20 76 61 72 69 61 62 6c 65 d.only.for.setting.this.variable
7bb40 20 76 69 61 20 60 67 70 74 65 6c 2d 6d 65 6e 75 27 2e 22 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 .via.`gptel-menu'.")..(cl-defmet
7bb60 68 6f 64 20 74 72 61 6e 73 69 65 6e 74 2d 69 6e 66 69 78 2d 72 65 61 64 20 28 28 6f 62 6a 20 67 hod.transient-infix-read.((obj.g
7bb80 70 74 65 6c 2d 2d 73 63 6f 70 65 29 29 0a 20 20 22 43 79 63 6c 65 20 74 68 72 6f 75 67 68 20 74 ptel--scope))..."Cycle.through.t
7bba0 68 65 20 6d 75 74 75 61 6c 6c 79 20 65 78 63 6c 75 73 69 76 65 20 73 77 69 74 63 68 65 73 2e 22 he.mutually.exclusive.switches."
7bbc0 0a 20 20 28 77 69 74 68 2d 73 6c 6f 74 73 20 28 76 61 6c 75 65 29 20 6f 62 6a 0a 20 20 20 20 28 ...(with-slots.(value).obj.....(
7bbe0 70 63 61 73 65 20 76 61 6c 75 65 0a 20 20 20 20 20 20 28 27 74 20 28 6d 65 73 73 61 67 65 20 22 pcase.value.......('t.(message."
7bc00 50 61 72 61 6d 65 74 65 72 73 20 77 69 6c 6c 20 62 65 20 73 65 74 20 66 6f 72 20 74 68 65 20 6e Parameters.will.be.set.for.the.n
7bc20 65 78 74 20 72 65 71 75 65 73 74 20 6f 6e 6c 79 22 29 29 0a 20 20 20 20 20 20 28 27 6e 69 6c 20 ext.request.only")).......('nil.
7bc40 28 6d 65 73 73 61 67 65 20 22 50 61 72 61 6d 65 74 65 72 73 20 77 69 6c 6c 20 62 65 20 73 65 74 (message."Parameters.will.be.set
7bc60 20 62 75 66 66 65 72 2d 6c 6f 63 61 6c 6c 79 22 29 29 0a 20 20 20 20 20 20 28 31 20 28 6d 65 73 .buffer-locally")).......(1.(mes
7bc80 73 61 67 65 20 22 50 61 72 61 6d 65 74 65 72 73 20 77 69 6c 6c 20 62 65 20 73 65 74 20 67 6c 6f sage."Parameters.will.be.set.glo
7bca0 62 61 6c 6c 79 22 29 29 29 0a 20 20 20 20 28 70 63 61 73 65 20 76 61 6c 75 65 20 28 27 74 20 31 bally"))).....(pcase.value.('t.1
7bcc0 29 20 28 27 6e 69 6c 20 74 29 20 28 31 20 6e 69 6c 29 29 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 ).('nil.t).(1.nil))))..(cl-defme
7bce0 74 68 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 thod.transient-format-value.((ob
7bd00 6a 20 67 70 74 65 6c 2d 2d 73 63 6f 70 65 29 29 0a 20 20 28 77 69 74 68 2d 73 6c 6f 74 73 20 28 j.gptel--scope))...(with-slots.(
7bd20 76 61 6c 75 65 20 64 69 73 70 6c 61 79 2d 69 66 2d 74 72 75 65 20 64 69 73 70 6c 61 79 2d 69 66 value.display-if-true.display-if
7bd40 2d 66 61 6c 73 65 29 20 6f 62 6a 0a 20 20 20 20 20 20 28 66 6f 72 6d 61 74 0a 20 20 20 20 20 20 -false).obj.......(format.......
7bd60 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 28 25 73 29 22 20 27 66 61 63 65 20 27 74 72 61 6e 73 .(propertize."(%s)".'face.'trans
7bd80 69 65 6e 74 2d 64 65 6c 69 6d 69 74 65 72 29 0a 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 0a 20 ient-delimiter)........(concat..
7bda0 20 20 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 66 61 .......(propertize.display-if-fa
7bdc0 6c 73 65 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 lse.....................'face.(i
7bde0 66 20 28 6e 75 6c 6c 20 76 61 6c 75 65 29 20 27 74 72 61 6e 73 69 65 6e 74 2d 76 61 6c 75 65 20 f.(null.value).'transient-value.
7be00 27 74 72 61 6e 73 69 65 6e 74 2d 69 6e 61 63 74 69 76 65 2d 76 61 6c 75 65 29 29 0a 20 20 20 20 'transient-inactive-value)).....
7be20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 7c 22 20 27 66 61 63 65 20 27 74 72 61 6e 73 ....(propertize."|".'face.'trans
7be40 69 65 6e 74 2d 64 65 6c 69 6d 69 74 65 72 29 0a 20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 ient-delimiter).........(propert
7be60 69 7a 65 20 64 69 73 70 6c 61 79 2d 69 66 2d 74 72 75 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 ize.display-if-true.............
7be80 20 20 20 20 20 20 20 20 27 66 61 63 65 20 28 69 66 20 28 65 71 20 76 61 6c 75 65 20 74 29 20 27 ........'face.(if.(eq.value.t).'
7bea0 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 2d 69 6e 61 63 74 transient-value.'transient-inact
7bec0 69 76 65 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 ive-value)).........(propertize.
7bee0 22 7c 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 65 72 29 0a "|".'face.'transient-delimiter).
7bf00 20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 6f 6e 65 73 68 6f 74 22 20 27 66 ........(propertize."oneshot".'f
7bf20 61 63 65 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 65 71 6c ace.....................(if.(eql
7bf40 20 76 61 6c 75 65 20 31 29 20 27 74 72 61 6e 73 69 65 6e 74 2d 76 61 6c 75 65 20 27 74 72 61 6e .value.1).'transient-value.'tran
7bf60 73 69 65 6e 74 2d 69 6e 61 63 74 69 76 65 2d 76 61 6c 75 65 29 29 29 29 29 29 0a 0a 28 63 6c 2d sient-inactive-value))))))..(cl-
7bf80 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 73 65 74 20 28 28 defmethod.transient-infix-set.((
7bfa0 6f 62 6a 20 67 70 74 65 6c 2d 2d 73 63 6f 70 65 29 20 76 61 6c 75 65 29 0a 20 20 28 66 75 6e 63 obj.gptel--scope).value)...(func
7bfc0 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 20 all.(oref.obj.set-value)........
7bfe0 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 20 20 20 ....(oref.obj.variable).........
7c000 20 20 20 28 6f 73 65 74 20 6f 62 6a 20 76 61 6c 75 65 20 76 61 6c 75 65 29 29 29 0a 0a 3b 3b 20 ...(oset.obj.value.value)))..;;.
7c020 2a 2a 20 43 6c 61 73 73 20 66 6f 72 20 6d 61 6e 61 67 69 6e 67 20 67 70 74 65 6c 27 73 20 62 61 **.Class.for.managing.gptel's.ba
7c040 63 6b 65 6e 64 20 61 6e 64 20 6d 6f 64 65 6c 2c 20 73 69 6e 67 6c 65 74 6f 6e 0a 0a 28 64 65 66 ckend.and.model,.singleton..(def
7c060 63 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 class.gptel-provider-variable.(t
7c080 72 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 62 61 63 6b ransient-lisp-variable)...((back
7c0a0 65 6e 64 20 20 20 20 20 20 20 3a 69 6e 69 74 61 72 67 20 3a 62 61 63 6b 65 6e 64 29 0a 20 20 20 end.......:initarg.:backend)....
7c0c0 28 62 61 63 6b 65 6e 64 2d 76 61 6c 75 65 20 3a 69 6e 69 74 61 72 67 20 3a 62 61 63 6b 65 6e 64 (backend-value.:initarg.:backend
7c0e0 2d 76 61 6c 75 65 29 0a 20 20 20 28 61 6c 77 61 79 73 2d 72 65 61 64 20 3a 69 6e 69 74 66 6f 72 -value)....(always-read.:initfor
7c100 6d 20 74 29 0a 20 20 20 28 73 65 74 2d 76 61 6c 75 65 20 3a 69 6e 69 74 61 72 67 20 3a 73 65 74 m.t)....(set-value.:initarg.:set
7c120 2d 76 61 6c 75 65 20 3a 69 6e 69 74 66 6f 72 6d 20 23 27 73 65 74 29 29 0a 20 20 22 43 6c 61 73 -value.:initform.#'set))..."Clas
7c140 73 20 75 73 65 64 20 66 6f 72 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 73 2e 22 29 0a 0a 28 63 s.used.for.gptel-backends.")..(c
7c160 6c 2d 64 65 66 6d 65 74 68 6f 64 20 74 72 61 6e 73 69 65 6e 74 2d 66 6f 72 6d 61 74 2d 76 61 6c l-defmethod.transient-format-val
7c180 75 65 20 28 28 6f 62 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 ue.((obj.gptel-provider-variable
7c1a0 29 29 0a 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 28 63 6f 6e 63 61 74 0a 20 20 20 20 20 20 20 ))...(propertize.(concat........
7c1c0 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 20 20 ........(gptel-backend-name.....
7c1e0 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 2d 6c 6f 63 61 6c 2d 76 61 6c 75 65 20 ............(buffer-local-value.
7c200 28 6f 72 65 66 20 6f 62 6a 20 62 61 63 6b 65 6e 64 29 20 74 72 61 6e 73 69 65 6e 74 2d 2d 6f 72 (oref.obj.backend).transient--or
7c220 69 67 69 6e 61 6c 2d 62 75 66 66 65 72 29 29 20 22 3a 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 iginal-buffer)).":".............
7c240 20 20 20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 6e 61 6d 65 20 28 6f 72 65 66 20 6f 62 6a 20 ...(gptel--model-name.(oref.obj.
7c260 76 61 6c 75 65 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 value)))...............'face.'tr
7c280 61 6e 73 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 ansient-value))..(cl-defmethod.t
7c2a0 72 61 6e 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 70 ransient-infix-set.((obj.gptel-p
7c2c0 72 6f 76 69 64 65 72 2d 76 61 72 69 61 62 6c 65 29 20 76 61 6c 75 65 29 0a 20 20 28 70 63 61 73 rovider-variable).value)...(pcas
7c2e0 65 2d 6c 65 74 20 28 28 60 28 2c 62 61 63 6b 65 6e 64 2d 76 61 6c 75 65 20 2c 6d 6f 64 65 6c 2d e-let.((`(,backend-value.,model-
7c300 76 61 6c 75 65 29 20 76 61 6c 75 65 29 29 0a 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 28 6f 72 65 value).value)).....(funcall.(ore
7c320 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
7c340 72 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 20 20 28 ref.obj.variable)..............(
7c360 6f 73 65 74 20 6f 62 6a 20 76 61 6c 75 65 20 6d 6f 64 65 6c 2d 76 61 6c 75 65 29 0a 20 20 20 20 oset.obj.value.model-value).....
7c380 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 63 61 6c .........gptel--set-buffer-local
7c3a0 6c 79 29 0a 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 28 6f 72 65 66 20 6f 62 6a 20 73 65 74 2d 76 ly).....(funcall.(oref.obj.set-v
7c3c0 61 6c 75 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 65 66 20 6f 62 6a 20 62 61 63 alue)..............(oref.obj.bac
7c3e0 6b 65 6e 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 73 65 74 20 6f 62 6a 20 62 61 63 kend)..............(oset.obj.bac
7c400 6b 65 6e 64 2d 76 61 6c 75 65 20 62 61 63 6b 65 6e 64 2d 76 61 6c 75 65 29 0a 20 20 20 20 20 20 kend-value.backend-value).......
7c420 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 63 61 6c 6c 79 .......gptel--set-buffer-locally
7c440 29 29 0a 20 20 28 74 72 61 6e 73 69 65 6e 74 2d 73 65 74 75 70 29 29 0a 0a 3b 3b 20 2a 2a 20 43 ))...(transient-setup))..;;.**.C
7c460 6c 61 73 73 20 66 6f 72 20 69 6e 66 69 78 20 6f 70 74 69 6f 6e 73 20 77 69 74 68 20 69 6e 2d 62 lass.for.infix.options.with.in-b
7c480 75 66 66 65 72 20 6f 76 65 72 6c 61 79 20 64 69 73 70 6c 61 79 0a 0a 28 64 65 66 63 6c 61 73 73 uffer.overlay.display..(defclass
7c4a0 20 67 70 74 65 6c 2d 6f 70 74 69 6f 6e 2d 6f 76 65 72 6c 61 69 64 20 28 74 72 61 6e 73 69 65 6e .gptel-option-overlaid.(transien
7c4c0 74 2d 6f 70 74 69 6f 6e 29 0a 20 20 28 28 64 69 73 70 6c 61 79 2d 6e 69 6c 20 3a 69 6e 69 74 61 t-option)...((display-nil.:inita
7c4e0 72 67 20 3a 64 69 73 70 6c 61 79 2d 6e 69 6c 29 0a 20 20 20 28 6f 76 65 72 6c 61 79 20 3a 69 6e rg.:display-nil)....(overlay.:in
7c500 69 74 61 72 67 20 3a 6f 76 65 72 6c 61 79 29 29 0a 20 20 22 54 72 61 6e 73 69 65 6e 74 20 6f 70 itarg.:overlay))..."Transient.op
7c520 74 69 6f 6e 73 20 66 6f 72 20 6f 76 65 72 6c 61 79 73 20 64 69 73 70 6c 61 79 65 64 20 69 6e 20 tions.for.overlays.displayed.in.
7c540 74 68 65 20 77 6f 72 6b 69 6e 67 20 62 75 66 66 65 72 2e 22 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 the.working.buffer.")..(cl-defme
7c560 74 68 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 thod.transient-format-value.((ob
7c580 6a 20 67 70 74 65 6c 2d 6f 70 74 69 6f 6e 2d 6f 76 65 72 6c 61 69 64 29 29 0a 20 20 22 53 65 74 j.gptel-option-overlaid))..."Set
7c5a0 20 75 70 20 74 68 65 20 69 6e 2d 62 75 66 66 65 72 20 6f 76 65 72 6c 61 79 20 66 6f 72 20 61 64 .up.the.in-buffer.overlay.for.ad
7c5c0 64 69 74 69 6f 6e 61 6c 20 64 69 72 65 63 74 69 76 65 2c 20 61 20 73 74 72 69 6e 67 2e 0a 0a 41 ditional.directive,.a.string...A
7c5e0 6c 73 6f 20 66 6f 72 6d 61 74 20 69 74 73 20 76 61 6c 75 65 20 69 6e 20 74 68 65 20 54 72 61 6e lso.format.its.value.in.the.Tran
7c600 73 69 65 6e 74 20 6d 65 6e 75 2e 22 0a 20 20 28 6c 65 74 20 28 28 76 61 6c 75 65 20 28 6f 72 65 sient.menu."...(let.((value.(ore
7c620 66 20 6f 62 6a 20 76 61 6c 75 65 29 29 0a 20 20 20 20 20 20 20 20 28 6f 76 20 20 20 20 28 6f 72 f.obj.value)).........(ov....(or
7c640 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 28 61 72 67 75 6d 65 ef.obj.overlay)).........(argume
7c660 6e 74 20 28 6f 72 65 66 20 6f 62 6a 20 61 72 67 75 6d 65 6e 74 29 29 29 0a 20 20 20 20 3b 3b 20 nt.(oref.obj.argument))).....;;.
7c680 4d 61 6b 69 6e 67 20 61 6e 20 6f 76 65 72 6c 61 79 0a 20 20 20 20 28 69 66 20 28 6f 72 20 28 6e Making.an.overlay.....(if.(or.(n
7c6a0 6f 74 20 76 61 6c 75 65 29 20 28 73 74 72 69 6e 67 2d 65 6d 70 74 79 2d 70 20 76 61 6c 75 65 29 ot.value).(string-empty-p.value)
7c6c0 29 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 6f 76 20 28 64 65 6c 65 74 65 2d 6f 76 65 72 6c ).........(when.ov.(delete-overl
7c6e0 61 79 20 6f 76 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 ay.ov)).......(with-current-buff
7c700 65 72 20 74 72 61 6e 73 69 65 6e 74 2d 2d 6f 72 69 67 69 6e 61 6c 2d 62 75 66 66 65 72 0a 20 20 er.transient--original-buffer...
7c720 20 20 20 20 20 20 28 6f 73 65 74 20 6f 62 6a 20 6f 76 65 72 6c 61 79 20 28 67 70 74 65 6c 2d 2d ......(oset.obj.overlay.(gptel--
7c740 69 6e 73 74 72 75 63 74 69 6f 6e 73 2d 6d 61 6b 65 2d 6f 76 65 72 6c 61 79 20 76 61 6c 75 65 20 instructions-make-overlay.value.
7c760 6f 76 29 29 29 0a 20 20 20 20 20 20 28 6c 65 74 72 65 63 20 28 28 6f 76 2d 63 6c 65 61 72 2d 68 ov))).......(letrec.((ov-clear-h
7c780 6f 6f 6b 0a 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 20 28 ook.................(lambda.().(
7c7a0 77 68 65 6e 2d 6c 65 74 2a 20 28 28 6f 76 20 28 6f 72 65 66 20 6f 62 6a 20 6f 76 65 72 6c 61 79 when-let*.((ov.(oref.obj.overlay
7c7c0 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 20 ))..............................
7c7e0 20 20 20 20 20 28 28 6f 76 65 72 6c 61 79 70 20 6f 76 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 .....((overlayp.ov)))...........
7c800 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 74 72 61 6e ..............(remove-hook.'tran
7c820 73 69 65 6e 74 2d 65 78 69 74 2d 68 6f 6f 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 sient-exit-hook.................
7c840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 76 2d 63 6c 65 61 72 2d 68 6f .....................ov-clear-ho
7c860 6f 6b 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 64 65 6c ok).........................(del
7c880 65 74 65 2d 6f 76 65 72 6c 61 79 20 6f 76 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 61 64 64 ete-overlay.ov))))).........(add
7c8a0 2d 68 6f 6f 6b 20 27 74 72 61 6e 73 69 65 6e 74 2d 65 78 69 74 2d 68 6f 6f 6b 20 6f 76 2d 63 6c -hook.'transient-exit-hook.ov-cl
7c8c0 65 61 72 2d 68 6f 6f 6b 29 29 29 0a 20 20 20 20 3b 3b 20 55 70 64 61 74 69 6e 67 20 74 72 61 6e ear-hook))).....;;.Updating.tran
7c8e0 73 69 65 6e 74 20 6d 65 6e 75 20 64 69 73 70 6c 61 79 0a 20 20 20 20 28 69 66 20 76 61 6c 75 65 sient.menu.display.....(if.value
7c900 0a 20 20 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 61 72 67 .........(propertize.(concat.arg
7c920 75 6d 65 6e 74 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 ument.(truncate-string-to-width.
7c940 76 61 6c 75 65 20 33 35 20 6e 69 6c 20 6e 69 6c 20 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 value.35.nil.nil.t))............
7c960 20 20 20 20 20 20 20 20 20 27 66 61 63 65 20 27 74 72 61 6e 73 69 65 6e 74 2d 76 61 6c 75 65 29 .........'face.'transient-value)
7c980 0a 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 28 63 6f 6e 63 61 .......(propertize........(conca
7c9a0 74 20 22 28 22 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 28 6f 72 65 66 20 6f 62 6a 20 64 69 73 t."(".(symbol-name.(oref.obj.dis
7c9c0 70 6c 61 79 2d 6e 69 6c 29 29 20 22 29 22 29 0a 20 20 20 20 20 20 20 27 66 61 63 65 20 27 74 72 play-nil)).")")........'face.'tr
7c9e0 61 6e 73 69 65 6e 74 2d 69 6e 61 63 74 69 76 65 2d 76 61 6c 75 65 29 29 29 29 0a 0a 0c 0a 3b 3b ansient-inactive-value))))....;;
7ca00 20 2a 20 54 72 61 6e 73 69 65 6e 74 20 50 72 65 66 69 78 65 73 0a 0a 3b 3b 3b 23 23 23 61 75 74 .*.Transient.Prefixes..;;;###aut
7ca20 6f 6c 6f 61 64 20 28 61 75 74 6f 6c 6f 61 64 20 27 67 70 74 65 6c 2d 6d 65 6e 75 20 22 67 70 74 oload.(autoload.'gptel-menu."gpt
7ca40 65 6c 2d 74 72 61 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 el-transient".nil.t).(transient-
7ca60 64 65 66 69 6e 65 2d 70 72 65 66 69 78 20 67 70 74 65 6c 2d 6d 65 6e 75 20 28 29 0a 20 20 22 43 define-prefix.gptel-menu.()..."C
7ca80 68 61 6e 67 65 20 70 61 72 61 6d 65 74 65 72 73 20 6f 66 20 70 72 6f 6d 70 74 20 74 6f 20 73 65 hange.parameters.of.prompt.to.se
7caa0 6e 64 20 74 6f 20 74 68 65 20 4c 4c 4d 2e 22 0a 20 20 3a 69 6e 63 6f 6d 70 61 74 69 62 6c 65 20 nd.to.the.LLM."...:incompatible.
7cac0 27 28 28 22 6d 22 20 22 79 22 20 22 69 22 29 20 28 22 65 22 20 22 67 22 20 22 62 22 20 22 6b 22 '(("m"."y"."i").("e"."g"."b"."k"
7cae0 29 29 0a 20 20 3b 3b 20 3a 76 61 6c 75 65 20 28 6c 69 73 74 20 28 63 6f 6e 63 61 74 20 22 62 22 ))...;;.:value.(list.(concat."b"
7cb00 20 28 62 75 66 66 65 72 2d 6e 61 6d 65 29 29 29 0a 20 20 5b 3a 64 65 73 63 72 69 70 74 69 6f 6e .(buffer-name)))...[:description
7cb20 20 67 70 74 65 6c 2d 73 79 73 74 65 6d 2d 70 72 6f 6d 70 74 2d 2d 66 6f 72 6d 61 74 0a 20 20 20 .gptel-system-prompt--format....
7cb40 5b 22 22 0a 20 20 20 20 3a 69 66 20 28 6c 61 6d 62 64 61 20 28 29 20 28 6e 6f 74 20 28 67 70 74 ["".....:if.(lambda.().(not.(gpt
7cb60 65 6c 2d 2d 6d 6f 64 65 6c 2d 63 61 70 61 62 6c 65 2d 70 20 27 6e 6f 73 79 73 74 65 6d 29 29 29 el--model-capable-p.'nosystem)))
7cb80 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 53 65 ....."Instructions".....("s"."Se
7cba0 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 2d 70 t.system.message".gptel-system-p
7cbc0 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 2d 2d rompt.:transient.t).....(gptel--
7cbe0 69 6e 66 69 78 2d 61 64 64 2d 64 69 72 65 63 74 69 76 65 29 5d 0a 20 20 20 5b 3a 70 61 64 2d 6b infix-add-directive)]....[:pad-k
7cc00 65 79 73 20 74 20 22 22 0a 20 20 20 20 28 3a 69 6e 66 6f 20 23 27 67 70 74 65 6c 2d 2d 64 65 73 eys.t."".....(:info.#'gptel--des
7cc20 63 72 69 62 65 2d 69 6e 66 69 78 2d 63 6f 6e 74 65 78 74 0a 20 20 20 20 20 3a 66 61 63 65 20 74 cribe-infix-context......:face.t
7cc40 72 61 6e 73 69 65 6e 74 2d 68 65 61 64 69 6e 67 20 3a 66 6f 72 6d 61 74 20 22 25 64 22 29 0a 20 ransient-heading.:format."%d")..
7cc60 20 20 20 28 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 63 6f 6e 74 65 78 74 2d 61 64 64 2d 63 75 72 ...(gptel--infix-context-add-cur
7cc80 72 65 6e 74 2d 6b 69 6c 6c 29 0a 20 20 20 20 28 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 63 6f 6e rent-kill).....(gptel--infix-con
7cca0 74 65 78 74 2d 61 64 64 2d 72 65 67 69 6f 6e 29 0a 20 20 20 20 28 67 70 74 65 6c 2d 2d 69 6e 66 text-add-region).....(gptel--inf
7ccc0 69 78 2d 63 6f 6e 74 65 78 74 2d 61 64 64 2d 62 75 66 66 65 72 29 0a 20 20 20 20 28 67 70 74 65 ix-context-add-buffer).....(gpte
7cce0 6c 2d 2d 69 6e 66 69 78 2d 63 6f 6e 74 65 78 74 2d 61 64 64 2d 66 69 6c 65 29 0a 20 20 20 20 28 l--infix-context-add-file).....(
7cd00 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 63 6f 6e 74 65 78 74 2d 72 65 6d 6f 76 65 2d 61 6c 6c 29 gptel--infix-context-remove-all)
7cd20 0a 20 20 20 20 28 67 70 74 65 6c 2d 2d 73 75 66 66 69 78 2d 63 6f 6e 74 65 78 74 2d 62 75 66 66 .....(gptel--suffix-context-buff
7cd40 65 72 29 5d 0a 20 20 20 5b 3a 70 61 64 2d 6b 65 79 73 20 74 0a 20 20 20 20 3a 69 66 20 28 6c 61 er)]....[:pad-keys.t.....:if.(la
7cd60 6d 62 64 61 20 28 29 20 28 61 6e 64 20 67 70 74 65 6c 2d 75 73 65 2d 74 6f 6f 6c 73 0a 20 20 20 mbda.().(and.gptel-use-tools....
7cd80 20 20 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 6b 6e 6f 77 6e ................(or.gptel--known
7cda0 2d 74 6f 6f 6c 73 20 28 66 65 61 74 75 72 65 70 20 27 67 70 74 65 6c 2d 69 6e 74 65 67 72 61 74 -tools.(featurep.'gptel-integrat
7cdc0 69 6f 6e 73 29 29 29 29 0a 20 20 20 20 22 22 20 28 3a 69 6e 66 6f 0a 20 20 20 20 20 20 20 20 28 ions))))....."".(:info.........(
7cde0 6c 61 6d 62 64 61 20 28 29 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 0a 20 20 20 20 lambda.()...........(concat.....
7ce00 20 20 20 20 20 20 20 22 54 6f 6f 6c 73 22 20 28 61 6e 64 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 0a ......."Tools".(and.gptel-tools.
7ce20 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.
7ce40 22 20 28 22 20 28 70 72 6f 70 65 72 74 69 7a 65 20 28 66 6f 72 6d 61 74 20 22 25 64 20 73 65 6c ".(".(propertize.(format."%d.sel
7ce60 65 63 74 65 64 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 ected"..........................
7ce80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
7cea0 28 6c 65 6e 67 74 68 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 (length.gptel-tools))...........
7cec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
7cee0 20 20 20 20 20 20 20 27 66 61 63 65 20 27 77 61 72 6e 69 6e 67 29 0a 20 20 20 20 20 20 20 20 20 .......'face.'warning)..........
7cf00 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 29 29 29 0a 20 .......................")"))))..
7cf20 20 20 20 20 20 20 20 3a 66 6f 72 6d 61 74 20 22 25 64 22 20 3a 66 61 63 65 20 74 72 61 6e 73 69 .......:format."%d".:face.transi
7cf40 65 6e 74 2d 68 65 61 64 69 6e 67 29 0a 20 20 20 20 28 22 74 22 20 22 53 65 6c 65 63 74 20 74 6f ent-heading).....("t"."Select.to
7cf60 6f 6c 73 22 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 20 3a 74 72 61 6e 73 69 65 6e 74 20 74 29 0a 20 ols".gptel-tools.:transient.t)..
7cf80 20 20 20 28 22 54 22 20 22 43 6f 6e 74 69 6e 75 65 20 74 6f 6f 6c 20 63 61 6c 6c 73 22 0a 20 20 ...("T"."Continue.tool.calls"...
7cfa0 20 20 20 28 6c 61 6d 62 64 61 20 28 29 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 20 28 67 70 74 ...(lambda.().(interactive).(gpt
7cfc0 65 6c 2d 2d 68 61 6e 64 6c 65 2d 74 6f 6f 6c 2d 75 73 65 20 67 70 74 65 6c 2d 2d 66 73 6d 2d 6c el--handle-tool-use.gptel--fsm-l
7cfe0 61 73 74 29 29 0a 20 20 20 20 20 3a 69 66 20 28 6c 61 6d 62 64 61 20 28 29 20 28 61 6e 64 20 67 ast))......:if.(lambda.().(and.g
7d000 70 74 65 6c 2d 2d 66 73 6d 2d 6c 61 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ptel--fsm-last..................
7d020 20 20 20 28 65 71 20 28 67 70 74 65 6c 2d 66 73 6d 2d 73 74 61 74 65 20 67 70 74 65 6c 2d 2d 66 ...(eq.(gptel-fsm-state.gptel--f
7d040 73 6d 2d 6c 61 73 74 29 20 27 54 4f 4f 4c 29 29 29 29 5d 5d 0a 20 20 5b 5b 28 67 70 74 65 6c 2d sm-last).'TOOL))))]]...[[(gptel-
7d060 2d 70 72 65 73 65 74 0a 20 20 20 20 20 3a 6b 65 79 20 22 40 22 20 3a 66 6f 72 6d 61 74 20 22 25 -preset......:key."@".:format."%
7d080 64 22 0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 0a 20 20 20 20 20 28 6c 61 6d 62 64 d"......:description......(lambd
7d0a0 61 20 28 29 0a 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 28 70 72 6f 70 65 72 74 69 7a 65 20 a.()........(concat.(propertize.
7d0c0 22 52 65 71 75 65 73 74 20 50 61 72 61 6d 65 74 65 72 73 22 20 27 66 61 63 65 20 27 74 72 61 6e "Request.Parameters".'face.'tran
7d0e0 73 69 65 6e 74 2d 68 65 61 64 69 6e 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 sient-heading)................(g
7d100 70 74 65 6c 2d 2d 66 6f 72 6d 61 74 2d 70 72 65 73 65 74 2d 73 74 72 69 6e 67 29 29 29 29 0a 20 ptel--format-preset-string))))..
7d120 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 29 ...(gptel--infix-variable-scope)
7d140 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 20 .....(gptel--infix-provider)....
7d160 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 28 .(gptel--infix-max-tokens).....(
7d180 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 6e gptel--infix-num-messages-to-sen
7d1a0 64 0a 20 20 20 20 20 3a 69 66 20 28 6c 61 6d 62 64 61 20 28 29 20 28 61 6e 64 20 67 70 74 65 6c d......:if.(lambda.().(and.gptel
7d1c0 2d 65 78 70 65 72 74 2d 63 6f 6d 6d 61 6e 64 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -expert-commands................
7d1e0 20 20 20 20 20 28 6f 72 20 67 70 74 65 6c 2d 6d 6f 64 65 20 67 70 74 65 6c 2d 74 72 61 63 6b 2d .....(or.gptel-mode.gptel-track-
7d200 72 65 73 70 6f 6e 73 65 29 29 29 29 0a 20 20 20 20 28 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 74 response)))).....(gptel--infix-t
7d220 65 6d 70 65 72 61 74 75 72 65 20 3a 69 66 20 28 6c 61 6d 62 64 61 20 28 29 20 67 70 74 65 6c 2d emperature.:if.(lambda.().gptel-
7d240 65 78 70 65 72 74 2d 63 6f 6d 6d 61 6e 64 73 29 29 0a 20 20 20 20 28 67 70 74 65 6c 2d 2d 69 6e expert-commands)).....(gptel--in
7d260 66 69 78 2d 75 73 65 2d 63 6f 6e 74 65 78 74 29 0a 20 20 20 20 28 67 70 74 65 6c 2d 2d 69 6e 66 fix-use-context).....(gptel--inf
7d280 69 78 2d 69 6e 63 6c 75 64 65 2d 72 65 61 73 6f 6e 69 6e 67 29 0a 20 20 20 20 28 67 70 74 65 6c ix-include-reasoning).....(gptel
7d2a0 2d 2d 69 6e 66 69 78 2d 75 73 65 2d 74 6f 6f 6c 73 29 0a 20 20 20 20 28 67 70 74 65 6c 2d 2d 69 --infix-use-tools).....(gptel--i
7d2c0 6e 66 69 78 2d 74 72 61 63 6b 2d 72 65 73 70 6f 6e 73 65 0a 20 20 20 20 20 3a 69 66 20 28 6c 61 nfix-track-response......:if.(la
7d2e0 6d 62 64 61 20 28 29 20 28 61 6e 64 20 67 70 74 65 6c 2d 65 78 70 65 72 74 2d 63 6f 6d 6d 61 6e mbda.().(and.gptel-expert-comman
7d300 64 73 20 28 6e 6f 74 20 67 70 74 65 6c 2d 6d 6f 64 65 29 29 29 29 0a 20 20 20 20 28 67 70 74 65 ds.(not.gptel-mode)))).....(gpte
7d320 6c 2d 2d 69 6e 66 69 78 2d 74 72 61 63 6b 2d 6d 65 64 69 61 20 3a 69 66 20 28 6c 61 6d 62 64 61 l--infix-track-media.:if.(lambda
7d340 20 28 29 20 67 70 74 65 6c 2d 6d 6f 64 65 29 29 5d 0a 20 20 20 5b 22 20 3c 50 72 6f 6d 70 74 20 .().gptel-mode))]....[".<Prompt.
7d360 66 72 6f 6d 22 0a 20 20 20 20 28 22 6d 22 20 22 4d 69 6e 69 62 75 66 66 65 72 20 69 6e 73 74 65 from".....("m"."Minibuffer.inste
7d380 61 64 22 20 22 6d 22 29 0a 20 20 20 20 28 22 79 22 20 22 4b 69 6c 6c 2d 72 69 6e 67 20 69 6e 73 ad"."m").....("y"."Kill-ring.ins
7d3a0 74 65 61 64 22 20 22 79 22 29 0a 20 20 20 20 22 22 0a 20 20 20 20 28 22 69 22 20 22 52 65 73 70 tead"."y")....."".....("i"."Resp
7d3c0 6f 6e 64 20 69 6e 20 70 6c 61 63 65 22 20 22 69 22 29 5d 0a 20 20 20 5b 22 20 3e 52 65 73 70 6f ond.in.place"."i")]....[".>Respo
7d3e0 6e 73 65 20 74 6f 22 0a 20 20 20 20 28 22 65 22 20 22 45 63 68 6f 20 61 72 65 61 22 20 22 65 22 nse.to".....("e"."Echo.area"."e"
7d400 29 0a 20 20 20 20 28 22 62 22 20 22 4f 74 68 65 72 20 62 75 66 66 65 72 22 20 22 62 22 0a 20 20 ).....("b"."Other.buffer"."b"...
7d420 20 20 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 ...:class.transient-option......
7d440 3a 70 72 6f 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 :prompt."Output.to.buffer:."....
7d460 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 5f 68 69 73 ..:reader.(lambda.(prompt._._his
7d480 74 6f 72 79 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 61 64 2d 62 75 66 66 65 tory)................(read-buffe
7d4a0 72 20 70 72 6f 6d 70 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 r.prompt.(buffer-name.(other-buf
7d4c0 66 65 72 29 29 20 6e 69 6c 29 29 29 0a 20 20 20 20 28 22 67 22 20 22 67 70 74 65 6c 20 73 65 73 fer)).nil))).....("g"."gptel.ses
7d4e0 73 69 6f 6e 22 20 22 67 22 0a 20 20 20 20 20 3a 63 6c 61 73 73 20 74 72 61 6e 73 69 65 6e 74 2d sion"."g"......:class.transient-
7d500 6f 70 74 69 6f 6e 0a 20 20 20 20 20 3a 70 72 6f 6d 70 74 20 22 45 78 69 73 74 69 6e 67 20 6f 72 option......:prompt."Existing.or
7d520 20 6e 65 77 20 67 70 74 65 6c 20 73 65 73 73 69 6f 6e 3a 20 22 0a 20 20 20 20 20 3a 72 65 61 64 .new.gptel.session:."......:read
7d540 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 73 74 6f er......(lambda.(prompt._._histo
7d560 72 79 29 0a 20 20 20 20 20 20 20 28 72 65 61 64 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 ry)........(read-buffer.........
7d580 70 72 6f 6d 70 74 20 28 67 65 6e 65 72 61 74 65 2d 6e 65 77 2d 62 75 66 66 65 72 2d 6e 61 6d 65 prompt.(generate-new-buffer-name
7d5a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 22 2a 22 20 28 67 70 .................(concat."*".(gp
7d5c0 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 20 tel-backend-name.gptel-backend).
7d5e0 22 2a 22 29 29 0a 20 20 20 20 20 20 20 20 6e 69 6c 20 28 6c 61 6d 62 64 61 20 28 62 75 66 2d 6e "*")).........nil.(lambda.(buf-n
7d600 61 6d 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 63 6f 6e 73 70 20 62 75 ame)...............(if.(consp.bu
7d620 66 2d 6e 61 6d 65 29 20 28 73 65 74 71 20 62 75 66 2d 6e 61 6d 65 20 28 63 61 72 20 62 75 66 2d f-name).(setq.buf-name.(car.buf-
7d640 6e 61 6d 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 62 75 66 name)))...............(let.((buf
7d660 20 28 67 65 74 2d 62 75 66 66 65 72 20 62 75 66 2d 6e 61 6d 65 29 29 29 0a 20 20 20 20 20 20 20 .(get-buffer.buf-name)))........
7d680 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 28 62 75 66 66 65 72 2d 6c 6f 63 61 6c 2d 76 61 6c 75 .........(and.(buffer-local-valu
7d6a0 65 20 27 67 70 74 65 6c 2d 6d 6f 64 65 20 62 75 66 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 e.'gptel-mode.buf)..............
7d6c0 20 20 20 20 20 20 20 20 28 6e 6f 74 20 28 65 71 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 ........(not.(eq.(current-buffer
7d6e0 29 20 62 75 66 29 29 29 29 29 29 29 29 0a 20 20 20 20 28 22 6b 22 20 22 4b 69 6c 6c 2d 72 69 6e ).buf)))))))).....("k"."Kill-rin
7d700 67 22 20 22 6b 22 29 5d 5d 0a 20 20 5b 5b 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 28 6c 61 6d 62 g"."k")]]...[[:description.(lamb
7d720 64 61 20 28 29 20 28 63 6f 6e 63 61 74 20 28 61 6e 64 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 da.().(concat.(and.gptel--rewrit
7d740 65 2d 6f 76 65 72 6c 61 79 73 20 22 43 6f 6e 74 69 6e 75 65 20 22 29 0a 20 20 20 20 20 20 20 20 e-overlays."Continue.").........
7d760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 52 65 77 72 69 74 65 22 ......................."Rewrite"
7d780 29 29 0a 20 20 20 20 3a 69 66 20 28 6c 61 6d 62 64 61 20 28 29 20 28 6f 72 20 28 75 73 65 2d 72 )).....:if.(lambda.().(or.(use-r
7d7a0 65 67 69 6f 6e 2d 70 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 egion-p)...................(and.
7d7c0 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6f 76 65 72 6c 61 79 73 0a 20 20 20 20 20 20 20 20 gptel--rewrite-overlays.........
7d7e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 73 ...............(gptel--rewrite-s
7d800 61 6e 69 74 69 7a 65 2d 6f 76 65 72 6c 61 79 73 29 29 29 29 0a 20 20 20 20 28 22 72 22 0a 20 20 anitize-overlays)))).....("r"...
7d820 20 20 20 28 6c 61 6d 62 64 61 20 28 29 20 28 69 66 20 28 67 65 74 2d 63 68 61 72 2d 70 72 6f 70 ...(lambda.().(if.(get-char-prop
7d840 65 72 74 79 20 28 70 6f 69 6e 74 29 20 27 67 70 74 65 6c 2d 72 65 77 72 69 74 65 29 0a 20 20 20 erty.(point).'gptel-rewrite)....
7d860 20 20 20 20 20 20 20 20 20 20 20 20 22 49 74 65 72 61 74 65 22 20 22 52 65 77 72 69 74 65 22 29 ............"Iterate"."Rewrite")
7d880 29 0a 20 20 20 20 20 67 70 74 65 6c 2d 72 65 77 72 69 74 65 29 5d 0a 20 20 20 5b 22 54 77 65 61 )......gptel-rewrite)]....["Twea
7d8a0 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 70 6f 6e k.Response".:if.gptel--in-respon
7d8c0 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 4d 61 72 se-p.:pad-keys.t.....("SPC"."Mar
7d8e0 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 28 22 4d k".gptel--mark-response).....("M
7d900 2d 52 45 54 22 20 22 52 65 67 65 6e 65 72 61 74 65 22 20 67 70 74 65 6c 2d 2d 72 65 67 65 6e 65 -RET"."Regenerate".gptel--regene
7d920 72 61 74 65 20 3a 69 66 20 67 70 74 65 6c 2d 2d 69 6e 2d 72 65 73 70 6f 6e 73 65 2d 70 29 0a 20 rate.:if.gptel--in-response-p)..
7d940 20 20 20 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 ...("P"."Previous.variant".gptel
7d960 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 66 20 67 70 74 65 --previous-variant......:if.gpte
7d980 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 20 20 20 20 3a 74 l--at-response-history-p......:t
7d9a0 72 61 6e 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 ransient.t).....("N"."Next.varia
7d9c0 6e 74 22 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 nt".gptel--previous-variant.....
7d9e0 20 3a 69 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 .:if.gptel--at-response-history-
7da00 70 0a 20 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 p......:transient.t).....("E"."E
7da20 64 69 66 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 diff.previous".gptel--ediff.....
7da40 20 3a 69 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 .:if.gptel--at-response-history-
7da60 70 29 5d 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 p)]....["Dry.Run".:if.(lambda.()
7da80 20 28 6f 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 .(or.gptel-log-level.gptel-exper
7daa0 74 2d 63 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 t-commands)).....("I"."Inspect.q
7dac0 75 65 72 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 uery.(Lisp)"......(lambda.()....
7dae0 20 20 20 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 ...."Inspect.the.query.that.will
7db00 20 62 65 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 .be.sent.as.a.lisp.object.".....
7db20 20 20 20 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 ...(interactive)........(gptel--
7db40 73 61 6e 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 sanitize-model)........(gptel--i
7db60 6e 73 70 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 nspect-query.........(gptel--suf
7db80 66 69 78 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 fix-send..........(cons."I".(tra
7dba0 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 74 2d 63 6f nsient-args.transient-current-co
7dbc0 6d 6d 61 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 mmand)))))).....("J"."Inspect.qu
7dbe0 65 72 79 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 ery.(JSON)"......(lambda.().....
7dc00 20 20 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 ..."Inspect.the.query.that.will.
7dc20 62 65 20 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 be.sent.as.a.JSON.object."......
7dc40 20 20 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 ..(interactive)........(gptel--s
7dc60 61 6e 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 anitize-model)........(gptel--in
7dc80 73 70 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 spect-query.........(gptel--suff
7dca0 69 78 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 ix-send..........(cons."I".(tran
7dcc0 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 74 2d 63 6f 6d sient-args.transient-current-com
7dce0 6d 61 6e 64 29 29 29 0a 20 20 20 20 20 20 20 20 27 6a 73 6f 6e 29 29 29 5d 0a 20 20 20 5b 22 4c mand))).........'json)))]....["L
7dd00 6f 67 67 69 6e 67 22 0a 20 20 20 20 3a 69 66 20 28 6c 61 6d 62 64 61 20 28 29 20 28 6f 72 20 67 ogging".....:if.(lambda.().(or.g
7dd20 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 6f 6d 6d ptel-log-level.gptel-expert-comm
7dd40 61 6e 64 73 29 29 0a 20 20 20 20 28 22 2d 6c 22 20 22 4c 6f 67 20 6c 65 76 65 6c 22 20 22 2d 6c ands)).....("-l"."Log.level"."-l
7dd60 22 0a 20 20 20 20 20 3a 63 6c 61 73 73 20 67 70 74 65 6c 2d 6c 69 73 70 2d 76 61 72 69 61 62 6c "......:class.gptel-lisp-variabl
7dd80 65 0a 20 20 20 20 20 3a 76 61 72 69 61 62 6c 65 20 67 70 74 65 6c 2d 6c 6f 67 2d 6c 65 76 65 6c e......:variable.gptel-log-level
7dda0 0a 20 20 20 20 20 3a 73 65 74 2d 76 61 6c 75 65 20 67 70 74 65 6c 2d 2d 73 65 74 2d 77 69 74 68 ......:set-value.gptel--set-with
7ddc0 2d 73 63 6f 70 65 0a 20 20 20 20 20 3a 64 69 73 70 6c 61 79 2d 6e 69 6c 20 22 4f 66 66 22 0a 20 -scope......:display-nil."Off"..
7dde0 20 20 20 20 3a 70 72 6f 6d 70 74 20 22 4c 6f 67 20 6c 65 76 65 6c 3a 20 22 0a 20 20 20 20 20 3a ....:prompt."Log.level:."......:
7de00 72 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 29 reader......(lambda.(prompt._._)
7de20 0a 20 20 20 20 20 20 20 22 4d 61 6e 61 67 65 20 67 70 74 65 6c 27 73 20 6c 6f 67 67 69 6e 67 2e ........"Manage.gptel's.logging.
7de40 22 0a 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 73 74 61 74 65 20 28 63 6f 6d 70 6c 65 74 69 6e "........(let.((state.(completin
7de60 67 2d 72 65 61 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 6d g-read......................prom
7de80 70 74 20 27 28 22 6f 66 66 22 20 22 69 6e 66 6f 22 20 22 64 65 62 75 67 22 29 20 6e 69 6c 20 74 pt.'("off"."info"."debug").nil.t
7dea0 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 4c 6f 67 20 6c 65 76 65 6c )))..........(message."Log.level
7dec0 20 73 65 74 20 74 6f 20 25 73 22 20 73 74 61 74 65 29 0a 20 20 20 20 20 20 20 20 20 28 69 66 20 .set.to.%s".state)..........(if.
7dee0 28 73 74 72 69 6e 67 3d 20 73 74 61 74 65 20 22 6f 66 66 22 29 20 6e 69 6c 20 28 69 6e 74 65 72 (string=.state."off").nil.(inter
7df00 6e 20 73 74 61 74 65 29 29 29 29 29 0a 20 20 20 20 28 22 4c 22 20 22 49 6e 73 70 65 63 74 20 4c n.state))))).....("L"."Inspect.L
7df20 6f 67 22 0a 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 29 20 28 69 6e 74 65 72 61 63 74 69 76 65 og"......(lambda.().(interactive
7df40 29 0a 20 20 20 20 20 20 20 28 70 6f 70 2d 74 6f 2d 62 75 66 66 65 72 20 28 67 65 74 2d 62 75 66 )........(pop-to-buffer.(get-buf
7df60 66 65 72 2d 63 72 65 61 74 65 20 67 70 74 65 6c 2d 2d 6c 6f 67 2d 62 75 66 66 65 72 2d 6e 61 6d fer-create.gptel--log-buffer-nam
7df80 65 29 29 29 0a 20 20 20 20 20 3a 66 6f 72 6d 61 74 20 22 20 20 25 6b 20 25 64 22 29 5d 5d 0a 20 e)))......:format."..%k.%d")]]..
7dfa0 20 5b 28 67 70 74 65 6c 2d 2d 73 75 66 66 69 78 2d 73 65 6e 64 29 5d 0a 20 20 28 69 6e 74 65 72 .[(gptel--suffix-send)]...(inter
7dfc0 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
7dfe0 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
7e000 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
7e020 20 73 79 73 74 65 6d 20 70 72 6f 6d 70 74 2e 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 73 .system.prompt...(defun.gptel--s
7e040 65 74 75 70 2d 64 69 72 65 63 74 69 76 65 2d 6d 65 6e 75 20 28 73 79 6d 20 6d 73 67 20 26 6f 70 etup-directive-menu.(sym.msg.&op
7e060 74 69 6f 6e 61 6c 20 65 78 74 65 72 6e 61 6c 29 0a 20 20 22 52 65 74 75 72 6e 20 61 20 6c 69 73 tional.external)..."Return.a.lis
7e080 74 20 6f 66 20 74 72 61 6e 73 69 65 6e 74 20 69 6e 66 69 78 20 64 65 66 69 6e 69 74 69 6f 6e 73 t.of.transient.infix.definitions
7e0a0 20 66 6f 72 20 73 65 74 74 69 6e 67 20 67 70 74 65 6c 0a 64 69 72 65 63 74 69 76 65 73 2e 0a 0a .for.setting.gptel.directives...
7e0c0 53 59 4d 20 69 73 20 74 68 65 20 73 79 6d 62 6f 6c 20 77 68 6f 73 65 20 76 61 6c 75 65 20 69 73 SYM.is.the.symbol.whose.value.is
7e0e0 20 73 65 74 20 74 6f 20 74 68 65 20 73 65 6c 65 63 74 65 64 20 64 69 72 65 63 74 69 76 65 2e 2e .set.to.the.selected.directive..
7e100 0a 4d 53 47 20 69 73 20 74 68 65 20 6d 65 61 6e 69 6e 67 20 6f 66 20 73 79 6d 62 6f 6c 2c 20 75 .MSG.is.the.meaning.of.symbol,.u
7e120 73 65 64 20 77 68 65 6e 20 6d 65 73 73 61 67 69 6e 67 2e 0a 49 66 20 45 58 54 45 52 4e 41 4c 20 sed.when.messaging..If.EXTERNAL.
7e140 69 73 20 6e 6f 6e 2d 6e 69 6c 2c 20 69 6e 63 6c 75 64 65 20 65 78 74 65 72 6e 61 6c 20 73 6f 75 is.non-nil,.include.external.sou
7e160 72 63 65 73 20 6f 66 20 64 69 72 65 63 74 69 76 65 73 2e 22 0a 20 20 28 63 6c 2d 6c 6f 6f 70 20 rces.of.directives."...(cl-loop.
7e180 66 6f 72 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 for.(type...prompt).in.gptel-dir
7e1a0 65 63 74 69 76 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 41 76 6f 69 64 20 63 6c 61 73 ectives............;;.Avoid.clas
7e1c0 68 65 73 20 77 69 74 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 hes.with.the.custom.directive.ke
7e1e0 79 0a 20 20 20 20 20 20 20 20 20 20 20 77 69 74 68 20 75 6e 75 73 65 64 2d 6b 65 79 73 20 3d 20 y............with.unused-keys.=.
7e200 28 64 65 6c 65 74 65 20 3f 73 20 28 6e 63 6f 6e 63 20 28 6e 75 6d 62 65 72 2d 73 65 71 75 65 6e (delete.?s.(nconc.(number-sequen
7e220 63 65 20 3f 61 20 3f 7a 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ce.?a.?z).......................
7e240 20 20 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 6e 75 6d 62 65 ..........................(numbe
7e260 72 2d 73 65 71 75 65 6e 63 65 20 3f 30 20 3f 39 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 77 r-sequence.?0.?9)))............w
7e280 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 20 ith.width.=.(window-width)......
7e2a0 20 20 20 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 ......for.name.=.(symbol-name.ty
7e2c0 70 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 6b 65 79 20 3d 20 28 73 65 71 2d 66 69 pe)............for.key.=.(seq-fi
7e2e0 6e 64 20 28 6c 61 6d 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 nd.(lambda.(k).(member.k.unused-
7e300 6b 65 79 73 29 29 20 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 keys)).name.(seq-first.unused-ke
7e320 79 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 64 6f 20 28 73 65 74 71 20 75 6e 75 73 65 64 2d ys))............do.(setq.unused-
7e340 6b 65 79 73 20 28 64 65 6c 65 74 65 20 6b 65 79 20 75 6e 75 73 65 64 2d 6b 65 79 73 29 29 0a 20 keys.(delete.key.unused-keys))..
7e360 20 20 20 20 20 20 20 20 20 20 3b 3b 20 54 68 65 20 65 78 70 6c 69 63 69 74 20 64 65 63 6c 61 72 ..........;;.The.explicit.declar
7e380 61 74 69 6f 6e 20 22 3a 74 72 61 6e 73 69 65 6e 74 20 74 72 61 6e 73 69 65 6e 74 2d 2d 64 6f 2d ation.":transient.transient--do-
7e3a0 72 65 74 75 72 6e 22 20 68 65 72 65 0a 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 61 70 70 65 61 return".here............;;.appea
7e3c0 72 73 20 74 6f 20 62 65 20 72 65 71 75 69 72 65 64 20 66 6f 72 20 54 72 61 6e 73 69 65 6e 74 20 rs.to.be.required.for.Transient.
7e3e0 76 30 2e 35 20 61 6e 64 20 75 70 2e 20 20 57 69 74 68 6f 75 74 20 69 74 2c 20 74 68 65 73 65 0a v0.5.and.up...Without.it,.these.
7e400 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 61 72 65 20 74 72 65 61 74 65 64 20 61 73 20 73 75 66 ...........;;.are.treated.as.suf
7e420 66 69 78 65 73 20 77 68 65 6e 20 69 6e 76 6f 6b 69 6e 67 20 60 67 70 74 65 6c 2d 73 79 73 74 65 fixes.when.invoking.`gptel-syste
7e440 6d 2d 70 72 6f 6d 70 74 27 20 64 69 72 65 63 74 6c 79 2c 0a 20 20 20 20 20 20 20 20 20 20 20 3b m-prompt'.directly,............;
7e460 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 72 6f 75 67 68 ;.and.infixes.when.going.through
7e480 20 60 67 70 74 65 6c 2d 6d 65 6e 75 27 2e 0a 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 54 4f 44 .`gptel-menu'.............;;.TOD
7e4a0 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 74 O:.Raise.an.issue.with.Transient
7e4c0 2e 0a 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 20 20 .............collect............
7e4e0 28 6c 69 73 74 20 28 6b 65 79 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 28 6c 69 73 74 20 6b 65 79 (list.(key-description.(list.key
7e500 29 29 0a 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 28 63 61 70 ))..................(concat.(cap
7e520 69 74 61 6c 69 7a 65 20 6e 61 6d 65 29 20 22 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 italize.name)."."...............
7e540 20 20 20 20 20 20 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 ...........(propertize.".".'disp
7e560 6c 61 79 20 27 28 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 lay.'(space.:align-to.20))......
7e580 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 0a ....................(propertize.
7e5a0 20 20 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 ..........................(conca
7e5c0 74 20 22 28 22 20 28 67 70 74 65 6c 2d 2d 64 65 73 63 72 69 62 65 2d 64 69 72 65 63 74 69 76 65 t."(".(gptel--describe-directive
7e5e0 20 70 72 6f 6d 70 74 20 28 2d 20 77 69 64 74 68 20 33 30 29 29 20 22 29 22 29 0a 20 20 20 20 20 .prompt.(-.width.30)).")")......
7e600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 66 61 63 65 20 27 73 68 61 64 .....................'face.'shad
7e620 6f 77 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 60 28 6c 61 6d 62 64 61 20 28 ow))..................`(lambda.(
7e640 29 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ).(interactive).................
7e660 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 25 73 3a 20 25 73 22 20 2c 6d 73 67 20 2c 28 67 70 74 ....(message."%s:.%s".,msg.,(gpt
7e680 65 6c 2d 2d 64 65 73 63 72 69 62 65 2d 64 69 72 65 63 74 69 76 65 20 70 72 6f 6d 70 74 20 31 30 el--describe-directive.prompt.10
7e6a0 30 20 22 e2 ae 90 20 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 0."....")).....................(
7e6c0 67 70 74 65 6c 2d 2d 73 65 74 2d 77 69 74 68 2d 73 63 6f 70 65 20 27 2c 73 79 6d 20 27 2c 70 72 gptel--set-with-scope.',sym.',pr
7e6e0 6f 6d 70 74 20 67 70 74 65 6c 2d 2d 73 65 74 2d 62 75 66 66 65 72 2d 6c 6f 63 61 6c 6c 79 29 29 ompt.gptel--set-buffer-locally))
7e700 0a 09 20 20 20 20 20 20 20 20 20 3a 74 72 61 6e 73 69 65 6e 74 20 27 74 72 61 6e 73 69 65 6e 74 ...........:transient.'transient
7e720 2d 2d 64 6f 2d 72 65 74 75 72 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 6f 20 70 72 6f --do-return)............into.pro
7e740 6d 70 74 2d 73 75 66 66 69 78 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 20 mpt-suffixes............finally.
7e760 72 65 74 75 72 6e 0a 20 20 20 20 20 20 20 20 20 20 20 28 6e 63 6f 6e 63 0a 20 20 20 20 20 20 20 return............(nconc........
7e780 20 20 20 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 20 20 20 .....prompt-suffixes............
7e7a0 20 28 6c 69 73 74 20 28 6c 69 73 74 20 22 44 45 4c 22 20 22 4e 6f 6e 65 22 0a 20 20 20 20 20 20 .(list.(list."DEL"."None".......
7e7c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 60 28 6c 61 6d 62 64 61 20 28 29 20 28 69 ..................`(lambda.().(i
7e7e0 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 nteractive).....................
7e800 20 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 25 73 20 75 6e 73 65 74 22 20 2c 6d 73 67 29 .......(message."%s.unset".,msg)
7e820 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 67 70 74 ............................(gpt
7e840 65 6c 2d 2d 73 65 74 2d 77 69 74 68 2d 73 63 6f 70 65 20 27 2c 73 79 6d 20 6e 69 6c 20 67 70 74 el--set-with-scope.',sym.nil.gpt
7e860 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 20 20 20 20 20 20 20 el--set-buffer-locally))........
7e880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 74 72 61 6e 73 69 65 6e 74 20 27 74 72 61 .................:transient.'tra
7e8a0 6e 73 69 65 6e 74 2d 2d 64 6f 2d 72 65 74 75 72 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 nsient--do-return)).............
7e8c0 28 61 6e 64 20 65 78 74 65 72 6e 61 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 (and.external..................(
7e8e0 6c 69 73 74 20 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 list.(list."SPC"."Pick.crowdsour
7e900 63 65 64 20 70 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 ced.prompt".....................
7e920 20 20 20 20 20 20 20 20 20 27 67 70 74 65 6c 2d 2d 72 65 61 64 2d 63 72 6f 77 64 73 6f 75 72 63 .........'gptel--read-crowdsourc
7e940 65 64 2d 70 72 6f 6d 70 74 0a 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 4e 4f 54 45 ed-prompt................;;.NOTE
7e960 3a 20 51 75 69 74 74 69 6e 67 20 74 68 65 20 63 6f 6d 70 6c 65 74 69 6e 67 20 72 65 61 64 20 77 :.Quitting.the.completing.read.w
7e980 68 65 6e 20 70 69 63 6b 69 6e 67 20 61 0a 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 hen.picking.a................;;.
7e9a0 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
7e9c0 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 20 20 20 20 20 he.transient.to.exit............
7e9e0 20 20 20 20 3b 3b 20 69 6e 73 74 65 61 64 20 6f 66 20 72 65 74 75 72 6e 69 6e 67 20 74 6f 20 74 ....;;.instead.of.returning.to.t
7ea00 68 65 20 73 79 73 74 65 6d 20 70 72 6f 6d 70 74 20 6d 65 6e 75 2e 0a 20 20 20 20 20 20 20 20 20 he.system.prompt.menu...........
7ea20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 74 72 61 6e 73 69 65 6e 74 20 27 ....................:transient.'
7ea40 74 72 61 6e 73 69 65 6e 74 2d 2d 64 6f 2d 65 78 69 74 29 29 29 29 29 29 0a 0a 3b 3b 3b 23 23 23 transient--do-exit))))))..;;;###
7ea60 61 75 74 6f 6c 6f 61 64 20 28 61 75 74 6f 6c 6f 61 64 20 27 67 70 74 65 6c 2d 73 79 73 74 65 6d autoload.(autoload.'gptel-system
7ea80 2d 70 72 6f 6d 70 74 20 22 67 70 74 65 6c 2d 74 72 61 6e 73 69 65 6e 74 22 20 6e 69 6c 20 74 29 -prompt."gptel-transient".nil.t)
7eaa0 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-
7eac0 73 79 73 74 65 6d 2d 70 72 6f 6d 70 74 20 28 29 0a 20 20 22 53 65 74 20 74 68 65 20 4c 4c 4d 20 system-prompt.()..."Set.the.LLM.
7eae0 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 20 66 6f 72 20 4c 4c 4d 20 69 6e 74 65 72 61 63 74 69 system.message.for.LLM.interacti
7eb00 6f 6e 73 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 ons...The.\"system.message\".est
7eb20 61 62 6c 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 ablishes.directives.for.the.chat
7eb40 0a 73 65 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 .session.and.modifies.the.behavi
7eb60 6f 72 20 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 or.of.the.LLM..Some.examples.of.
7eb80 73 79 73 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 system.prompts.are:..You.are.a.h
7eba0 65 6c 70 66 75 6c 20 61 73 73 69 73 74 61 6e 74 2e 20 41 6e 73 77 65 72 20 61 73 20 63 6f 6e 63 elpful.assistant..Answer.as.conc
7ebc0 69 73 65 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 isely.as.possible..Reply.only.wi
7ebe0 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 72 6f 73 65 2e 0a th.shell.commands.and.no.prose..
7ec00 59 6f 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 You.are.a.poet..Reply.only.in.ve
7ec20 72 73 65 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 rse...More.extensive.system.mess
7ec40 61 67 65 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 ages.can.be.useful.for.specific.
7ec60 74 61 73 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 tasks...Customize.`gptel-directi
7ec80 76 65 73 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 ves'.for.task-specific.prompts."
7eca0 0a 20 20 5b 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 67 70 74 65 6c 2d 73 79 73 74 65 6d 2d 70 72 ...[:description.gptel-system-pr
7ecc0 6f 6d 70 74 2d 2d 66 6f 72 6d 61 74 0a 20 20 20 5b 28 67 70 74 65 6c 2d 2d 73 75 66 66 69 78 2d ompt--format....[(gptel--suffix-
7ece0 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 6c 2d 2d 69 6e 66 system-message)]....[(gptel--inf
7ed00 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 63 6c 61 73 73 20 ix-variable-scope)]]....[:class.
7ed20 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 70 2d 63 68 69 6c transient-column.....:setup-chil
7ed40 64 72 65 6e 0a 20 20 20 20 28 6c 61 6d 62 64 61 20 28 5f 29 20 28 74 72 61 6e 73 69 65 6e 74 2d dren.....(lambda.(_).(transient-
7ed60 70 61 72 73 65 2d 73 75 66 66 69 78 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 27 67 70 74 65 parse-suffixes.............'gpte
7ed80 6c 2d 73 79 73 74 65 6d 2d 70 72 6f 6d 70 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 l-system-prompt.............(gpt
7eda0 65 6c 2d 2d 73 65 74 75 70 2d 64 69 72 65 63 74 69 76 65 2d 6d 65 6e 75 0a 20 20 20 20 20 20 20 el--setup-directive-menu........
7edc0 20 20 20 20 20 20 27 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 20 22 44 69 ......'gptel--system-message."Di
7ede0 72 65 63 74 69 76 65 22 20 74 29 29 29 0a 20 20 20 20 3a 70 61 64 2d 6b 65 79 73 20 74 5d 29 0a rective".t))).....:pad-keys.t]).
7ee00 0a 3b 3b 20 2a 2a 20 50 72 65 66 69 78 20 66 6f 72 20 73 61 76 69 6e 67 20 61 6e 64 20 61 70 70 .;;.**.Prefix.for.saving.and.app
7ee20 6c 79 69 6e 67 20 70 72 65 73 65 74 73 0a 0a 28 74 72 61 6e 73 69 65 6e 74 2d 64 65 66 69 6e 65 lying.presets..(transient-define
7ee40 2d 70 72 65 66 69 78 20 67 70 74 65 6c 2d 2d 70 72 65 73 65 74 20 28 29 0a 20 20 22 41 70 70 6c -prefix.gptel--preset.()..."Appl
7ee60 79 20 61 20 67 70 74 65 6c 20 70 72 65 73 65 74 2c 20 6f 72 20 73 61 76 65 20 74 68 65 20 63 75 y.a.gptel.preset,.or.save.the.cu
7ee80 72 72 65 6e 74 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 61 73 20 61 20 70 72 65 73 65 74 2e rrent.configuration.as.a.preset.
7eea0 0a 0a 41 20 5c 22 70 72 65 73 65 74 5c 22 20 69 73 20 61 20 63 6f 6c 6c 65 63 74 69 6f 6e 20 6f ..A.\"preset\".is.a.collection.o
7eec0 66 20 67 70 74 65 6c 20 73 65 74 74 69 6e 67 73 2c 20 73 75 63 68 20 61 73 20 74 68 65 20 6d 6f f.gptel.settings,.such.as.the.mo
7eee0 64 65 6c 2c 0a 62 61 63 6b 65 6e 64 2c 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 20 61 6e 64 del,.backend,.system.message.and
7ef00 20 65 6e 61 62 6c 65 64 20 74 6f 6f 6c 73 2c 20 74 68 61 74 20 61 72 65 20 61 70 70 6c 69 65 64 .enabled.tools,.that.are.applied
7ef20 20 61 6e 64 20 75 73 65 64 0a 74 6f 67 65 74 68 65 72 2e 20 20 53 65 65 20 60 67 70 74 65 6c 2d .and.used.together...See.`gptel-
7ef40 6d 61 6b 65 2d 70 72 65 73 65 74 27 20 66 6f 72 20 64 65 74 61 69 6c 73 2e 22 0a 20 20 3a 74 72 make-preset'.for.details."...:tr
7ef60 61 6e 73 69 65 6e 74 2d 73 75 66 66 69 78 20 23 27 74 72 61 6e 73 69 65 6e 74 2d 2d 64 6f 2d 72 ansient-suffix.#'transient--do-r
7ef80 65 74 75 72 6e 0a 20 20 5b 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 53 61 76 65 20 6f 72 20 61 eturn...[:description."Save.or.a
7efa0 70 70 6c 79 20 61 20 70 72 65 73 65 74 20 63 6f 6c 6c 65 63 74 69 6f 6e 20 6f 66 20 67 70 74 65 pply.a.preset.collection.of.gpte
7efc0 6c 20 6f 70 74 69 6f 6e 73 22 0a 20 20 20 5b 3a 70 61 64 2d 6b 65 79 73 20 74 0a 20 20 20 20 28 l.options"....[:pad-keys.t.....(
7efe0 22 43 2d 73 22 20 22 53 61 76 65 20 63 75 72 72 65 6e 74 20 73 65 74 74 69 6e 67 73 20 61 73 20 "C-s"."Save.current.settings.as.
7f000 6e 65 77 20 70 72 65 73 65 74 22 20 67 70 74 65 6c 2d 2d 73 61 76 65 2d 70 72 65 73 65 74 29 5d new.preset".gptel--save-preset)]
7f020 5d 0a 20 20 5b 3a 69 66 20 28 6c 61 6d 62 64 61 20 28 29 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e ]...[:if.(lambda.().gptel--known
7f040 2d 70 72 65 73 65 74 73 29 0a 20 20 20 3a 63 6c 61 73 73 20 74 72 61 6e 73 69 65 6e 74 2d 63 6f -presets)....:class.transient-co
7f060 6c 75 6d 6e 0a 20 20 20 3a 73 65 74 75 70 2d 63 68 69 6c 64 72 65 6e 0a 20 20 20 28 6c 61 6d 62 lumn....:setup-children....(lamb
7f080 64 61 20 28 5f 29 0a 20 20 20 20 20 28 74 72 61 6e 73 69 65 6e 74 2d 70 61 72 73 65 2d 73 75 66 da.(_)......(transient-parse-suf
7f0a0 66 69 78 65 73 0a 20 20 20 20 20 20 27 67 70 74 65 6c 2d 2d 70 72 65 73 65 74 0a 20 20 20 20 20 fixes.......'gptel--preset......
7f0c0 20 28 63 6c 2d 6c 6f 6f 70 0a 20 20 20 20 20 20 20 66 6f 72 20 28 6e 61 6d 65 2d 73 79 6d 20 2e .(cl-loop........for.(name-sym..
7f0e0 20 70 72 65 73 65 74 29 20 69 6e 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 70 72 65 73 65 74 73 .preset).in.gptel--known-presets
7f100 0a 20 20 20 20 20 20 20 66 6f 72 20 6e 61 6d 65 20 3d 20 28 66 6f 72 6d 61 74 20 22 25 73 22 20 ........for.name.=.(format."%s".
7f120 6e 61 6d 65 2d 73 79 6d 29 0a 20 20 20 20 20 20 20 77 69 74 68 20 75 6e 75 73 65 64 2d 6b 65 79 name-sym)........with.unused-key
7f140 73 20 3d 20 28 6e 63 6f 6e 63 20 28 6e 75 6d 62 65 72 2d 73 65 71 75 65 6e 63 65 20 3f 61 20 3f s.=.(nconc.(number-sequence.?a.?
7f160 7a 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 z)..............................
7f180 20 20 20 20 28 6e 75 6d 62 65 72 2d 73 65 71 75 65 6e 63 65 20 3f 30 20 3f 39 29 29 0a 20 20 20 ....(number-sequence.?0.?9))....
7f1a0 20 20 20 20 66 6f 72 20 64 65 73 63 72 69 70 74 69 6f 6e 20 3d 20 28 70 6c 69 73 74 2d 67 65 74 ....for.description.=.(plist-get
7f1c0 20 70 72 65 73 65 74 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 29 0a 20 20 20 20 20 20 20 66 6f 72 .preset.:description)........for
7f1e0 20 6b 65 79 20 3d 20 28 73 65 71 2d 66 69 6e 64 20 28 6c 61 6d 62 64 61 20 28 6b 29 20 28 6d 65 .key.=.(seq-find.(lambda.(k).(me
7f200 6d 62 65 72 20 6b 20 75 6e 75 73 65 64 2d 6b 65 79 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 mber.k.unused-keys))............
7f220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 6d 65 20 28 73 65 71 2d 66 69 72 73 74 20 ................name.(seq-first.
7f240 75 6e 75 73 65 64 2d 6b 65 79 73 29 29 0a 20 20 20 20 20 20 20 64 6f 20 28 73 65 74 71 20 75 6e unused-keys))........do.(setq.un
7f260 75 73 65 64 2d 6b 65 79 73 20 28 64 65 6c 71 20 6b 65 79 20 75 6e 75 73 65 64 2d 6b 65 79 73 29 used-keys.(delq.key.unused-keys)
7f280 29 0a 20 20 20 20 20 20 20 63 6f 6c 6c 65 63 74 0a 20 20 20 20 20 20 20 28 6c 69 73 74 0a 20 20 )........collect........(list...
7f2a0 20 20 20 20 20 20 28 6b 65 79 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 28 6c 69 73 74 20 6b 65 79 ......(key-description.(list.key
7f2c0 29 29 0a 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 )).........(concat.name.........
7f2e0 20 20 20 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 ........(propertize.".".'display
7f300 20 27 28 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 .'(space.:align-to.20)).........
7f320 20 20 20 20 20 20 20 20 28 61 6e 64 20 64 65 73 63 72 69 70 74 69 6f 6e 0a 20 20 20 20 20 20 20 ........(and.description........
7f340 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 28 63 6f 6e 63 61 ..............(propertize.(conca
7f360 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 t...............................
7f380 20 20 20 20 22 28 22 20 28 67 70 74 65 6c 2d 2d 64 65 73 63 72 69 62 65 2d 64 69 72 65 63 74 69 ...."(".(gptel--describe-directi
7f3a0 76 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 ve..............................
7f3c0 20 20 20 20 20 20 20 20 20 20 64 65 73 63 72 69 70 74 69 6f 6e 20 28 2d 20 28 77 69 6e 64 6f 77 ..........description.(-.(window
7f3e0 2d 77 69 64 74 68 29 20 33 30 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -width).30))....................
7f400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 29 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 ...............")").............
7f420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 66 61 63 65 20 27 73 68 61 64 .....................'face.'shad
7f440 6f 77 29 29 29 0a 20 20 20 20 20 20 20 20 60 28 6c 61 6d 62 64 61 20 28 29 20 28 69 6e 74 65 72 ow))).........`(lambda.().(inter
7f460 61 63 74 69 76 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 73 65 74 2d 77 active)............(gptel--set-w
7f480 69 74 68 2d 73 63 6f 70 65 20 27 67 70 74 65 6c 2d 2d 70 72 65 73 65 74 20 27 2c 6e 61 6d 65 2d ith-scope.'gptel--preset.',name-
7f4a0 73 79 6d 0a 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 sym.............gptel--set-buffe
7f4c0 72 2d 6c 6f 63 61 6c 6c 79 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 61 70 r-locally)............(gptel--ap
7f4e0 70 6c 79 2d 70 72 65 73 65 74 20 27 2c 70 72 65 73 65 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 ply-preset.',preset.............
7f500 28 6c 61 6d 62 64 61 20 28 73 79 6d 20 76 61 6c 29 20 28 67 70 74 65 6c 2d 2d 73 65 74 2d 77 69 (lambda.(sym.val).(gptel--set-wi
7f520 74 68 2d 73 63 6f 70 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 th-scope........................
7f540 20 20 20 73 79 6d 20 76 61 6c 20 67 70 74 65 6c 2d 2d 73 65 74 2d 62 75 66 66 65 72 2d 6c 6f 63 ...sym.val.gptel--set-buffer-loc
7f560 61 6c 6c 79 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 41 70 70 ally)))............(message."App
7f580 6c 69 65 64 20 67 70 74 65 6c 20 70 72 65 73 65 74 20 25 73 22 0a 20 20 20 20 20 20 20 20 20 20 lied.gptel.preset.%s"...........
7f5a0 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 2c 6e 61 6d 65 20 27 66 61 63 65 20 27 74 72 61 6e 73 ..(propertize.,name.'face.'trans
7f5c0 69 65 6e 74 2d 76 61 6c 75 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 74 72 ient-value))............(when.tr
7f5e0 61 6e 73 69 65 6e 74 2d 2d 73 74 61 63 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 72 75 6e 2d ansient--stack.............(run-
7f600 61 74 2d 74 69 6d 65 20 30 20 6e 69 6c 20 23 27 74 72 61 6e 73 69 65 6e 74 2d 73 65 74 75 70 29 at-time.0.nil.#'transient-setup)
7f620 29 29 29 0a 20 20 20 20 20 20 20 69 6e 74 6f 20 67 65 6e 65 72 61 74 65 64 0a 20 20 20 20 20 20 )))........into.generated.......
7f640 20 66 69 6e 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 20 28 6c .finally.return........(nconc.(l
7f660 69 73 74 20 27 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 ist.'(gptel--infix-variable-scop
7f680 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 66 6f 72 6d 61 74 20 e.......................:format.
7f6a0 22 25 64 20 25 6b 20 25 76 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 "%d.%k.%v"......................
7f6c0 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .:description...................
7f6e0 20 20 20 20 28 6c 61 6d 62 64 61 20 28 29 20 28 66 6f 72 6d 61 74 20 22 25 73 20 20 20 20 20 20 ....(lambda.().(format."%s......
7f700 20 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 20 20 20 20 20 ..%s"...........................
7f720 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 41 70 70 6c 79 20 70 72 65 73 65 74 22 20 27 66 ...(propertize."Apply.preset".'f
7f740 61 63 65 20 27 74 72 61 6e 73 69 65 6e 74 2d 68 65 61 64 69 6e 67 29 0a 20 20 20 20 20 20 20 20 ace.'transient-heading).........
7f760 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
7f780 20 22 53 63 6f 70 65 22 20 27 66 61 63 65 20 27 74 72 61 6e 73 69 65 6e 74 2d 61 63 74 69 76 65 ."Scope".'face.'transient-active
7f7a0 2d 70 72 65 66 69 78 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 6e 65 72 -prefix)))))...............gener
7f7c0 61 74 65 64 29 29 29 29 5d 29 0a 0a 3b 3b 20 2a 2a 20 50 72 65 66 69 78 20 66 6f 72 20 73 65 6c ated))))])..;;.**.Prefix.for.sel
7f7e0 65 63 74 69 6e 67 20 74 6f 6f 6c 73 0a 0a 3b 3b 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 20 6f 66 66 ecting.tools..;;.gptel-tools.off
7f800 65 72 73 20 61 20 74 77 6f 2d 6c 65 76 65 6c 20 6d 65 6e 75 20 66 6f 72 20 73 65 6c 65 63 74 69 ers.a.two-level.menu.for.selecti
7f820 6e 67 20 74 6f 6f 6c 73 2c 20 69 74 73 20 64 65 73 69 67 6e 20 69 73 20 61 0a 3b 3b 20 6c 69 74 ng.tools,.its.design.is.a.;;.lit
7f840 74 6c 65 20 63 6f 6e 76 6f 6c 75 74 65 64 20 73 6f 20 68 65 72 65 27 73 20 61 6e 20 65 78 70 6c tle.convoluted.so.here's.an.expl
7f860 61 6e 61 74 69 6f 6e 3a 0a 3b 3b 0a 3b 3b 20 4e 6f 72 6d 61 6c 6c 79 20 61 20 74 72 61 6e 73 69 anation:.;;.;;.Normally.a.transi
7f880 65 6e 74 20 70 72 65 66 69 78 20 65 78 70 6f 72 74 73 20 69 74 73 20 76 61 6c 75 65 20 76 69 61 ent.prefix.exports.its.value.via
7f8a0 20 74 72 61 6e 73 69 65 6e 74 2d 61 72 67 73 2c 20 74 6f 20 62 65 0a 3b 3b 20 63 6f 6e 73 75 6d .transient-args,.to.be.;;.consum
7f8c0 65 64 20 62 79 20 73 75 66 66 69 78 65 73 2c 20 77 68 65 72 65 20 74 68 65 73 65 20 61 72 67 73 ed.by.suffixes,.where.these.args
7f8e0 20 61 72 65 20 64 65 74 65 72 6d 69 6e 65 64 20 62 79 20 74 68 65 20 73 74 61 74 65 20 6f 66 20 .are.determined.by.the.state.of.
7f900 74 68 65 0a 3b 3b 20 6d 65 6e 75 20 61 74 20 74 68 65 20 74 69 6d 65 20 6f 66 20 65 78 70 6f 72 the.;;.menu.at.the.time.of.expor
7f920 74 2e 20 20 54 68 65 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 20 6d 65 6e 75 20 69 73 20 64 79 6e 61 t...The.gptel-tools.menu.is.dyna
7f940 6d 69 63 20 61 6e 64 20 6e 65 65 64 73 20 74 6f 0a 3b 3b 20 73 74 6f 72 65 20 74 6f 6f 6c 20 73 mic.and.needs.to.;;.store.tool.s
7f960 65 6c 65 63 74 69 6f 6e 73 20 74 68 61 74 20 6d 61 79 20 6e 6f 74 20 62 65 20 76 69 73 69 62 6c elections.that.may.not.be.visibl
7f980 65 20 69 6e 20 74 68 65 20 6d 65 6e 79 20 61 6e 79 20 6d 6f 72 65 2c 20 73 6f 20 77 65 0a 3b 3b e.in.the.meny.any.more,.so.we.;;
7f9a0 20 63 61 6e 6e 6f 74 20 75 73 65 20 74 68 65 20 74 72 61 6e 73 69 65 6e 74 2d 61 72 67 73 2e 0a .cannot.use.the.transient-args..
7f9c0 3b 3b 0a 3b 3b 20 57 65 20 63 61 6e 20 6e 6f 74 20 28 73 68 6f 75 6c 64 20 6e 6f 74 3f 29 20 63 ;;.;;.We.can.not.(should.not?).c
7f9e0 6f 6e 74 72 6f 6c 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 70 72 65 66 69 78 20 64 ontrol.the.value.of.the.prefix.d
7fa00 69 72 65 63 74 6c 79 2c 20 73 6f 20 77 65 0a 3b 3b 20 69 6e 73 74 65 61 64 20 75 73 65 20 74 68 irectly,.so.we.;;.instead.use.th
7fa20 65 20 73 63 6f 70 65 20 28 61 20 73 65 63 6f 6e 64 61 72 79 20 76 61 6c 75 65 29 20 6f 66 20 74 e.scope.(a.secondary.value).of.t
7fa40 68 65 20 70 72 65 66 69 78 20 74 6f 20 6d 61 69 6e 74 61 69 6e 20 74 68 65 0a 3b 3b 20 68 69 73 he.prefix.to.maintain.the.;;.his
7fa60 74 6f 72 79 20 6f 66 20 73 65 6c 65 63 74 69 6f 6e 73 2e 20 20 57 68 65 6e 20 72 75 6e 6e 69 6e tory.of.selections...When.runnin
7fa80 67 20 61 20 73 75 66 66 69 78 2c 20 77 65 20 67 61 74 68 65 72 20 74 6f 6f 6c 20 73 65 6c 65 63 g.a.suffix,.we.gather.tool.selec
7faa0 74 69 6f 6e 73 20 66 72 6f 6d 0a 3b 3b 20 74 68 65 20 73 63 6f 70 65 2e 20 20 54 68 65 20 73 63 tions.from.;;.the.scope...The.sc
7fac0 6f 70 65 20 69 73 20 61 6c 73 6f 20 75 73 65 64 20 61 73 20 61 20 6d 65 73 73 61 67 65 20 63 68 ope.is.also.used.as.a.message.ch
7fae0 61 6e 6e 65 6c 20 66 6f 72 20 63 6f 6e 6e 65 63 74 69 6e 67 20 74 68 65 0a 3b 3b 20 63 61 74 65 annel.for.connecting.the.;;.cate
7fb00 67 6f 72 79 20 6d 65 6e 75 20 61 6e 64 20 74 68 65 20 74 6f 6f 6c 20 6c 69 73 74 20 6d 65 6e 75 gory.menu.and.the.tool.list.menu
7fb20 20 66 6f 72 20 74 68 61 74 20 63 61 74 65 67 6f 72 79 2e 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c .for.that.category...;;;###autol
7fb40 6f 61 64 20 28 61 75 74 6f 6c 6f 61 64 20 27 67 70 74 65 6c 2d 74 6f 6f 6c 73 20 22 67 70 74 65 oad.(autoload.'gptel-tools."gpte
7fb60 6c 2d 74 72 61 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 l-transient".nil.t).(transient-d
7fb80 65 66 69 6e 65 2d 70 72 65 66 69 78 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 20 28 29 0a 20 20 22 53 efine-prefix.gptel-tools.()..."S
7fba0 65 6c 65 63 74 20 74 6f 6f 6c 73 20 74 6f 20 69 6e 63 6c 75 64 65 20 77 69 74 68 20 67 70 74 65 elect.tools.to.include.with.gpte
7fbc0 6c 20 72 65 71 75 65 73 74 73 2e 0a 0a 54 6f 6f 6c 73 20 61 72 65 20 6f 72 67 61 6e 69 7a 65 64 l.requests...Tools.are.organized
7fbe0 20 69 6e 74 6f 20 63 61 74 65 67 6f 72 69 65 73 2e 20 20 53 65 6c 65 63 74 69 6e 67 20 74 68 65 .into.categories...Selecting.the
7fc00 20 63 61 74 65 67 6f 72 79 0a 74 6f 67 67 6c 65 73 20 61 6c 6c 20 74 68 65 20 74 6f 6f 6c 73 20 .category.toggles.all.the.tools.
7fc20 77 69 74 68 20 74 68 61 74 20 63 61 74 65 67 6f 72 79 2e 0a 0a 54 6f 20 61 64 64 20 74 6f 6f 6c with.that.category...To.add.tool
7fc40 73 20 74 6f 20 74 68 69 73 20 6c 69 73 74 2c 20 75 73 65 20 60 67 70 74 65 6c 2d 6d 61 6b 65 2d s.to.this.list,.use.`gptel-make-
7fc60 74 6f 6f 6c 27 2c 20 77 68 69 63 68 20 73 65 65 2e 0a 0a 55 73 69 6e 67 20 74 68 65 20 73 63 6f tool',.which.see...Using.the.sco
7fc80 70 65 20 6f 70 74 69 6f 6e 2c 20 79 6f 75 20 63 61 6e 20 73 65 74 20 74 6f 6f 6c 73 20 74 6f 20 pe.option,.you.can.set.tools.to.
7fca0 75 73 65 20 77 69 74 68 20 67 70 74 65 6c 0a 72 65 71 75 65 73 74 73 20 67 6c 6f 62 61 6c 6c 79 use.with.gptel.requests.globally
7fcc0 2c 20 69 6e 20 74 68 69 73 20 62 75 66 66 65 72 20 6f 72 20 66 6f 72 20 74 68 65 20 6e 65 78 74 ,.in.this.buffer.or.for.the.next
7fce0 20 72 65 71 75 65 73 74 0a 6f 6e 6c 79 20 28 5c 22 6f 6e 65 73 68 6f 74 5c 22 29 2e 22 0a 20 20 .request.only.(\"oneshot\")."...
7fd00 3a 72 65 66 72 65 73 68 2d 73 75 66 66 69 78 65 73 20 74 0a 20 20 5b 3a 64 65 73 63 72 69 70 74 :refresh-suffixes.t...[:descript
7fd20 69 6f 6e 20 22 50 72 6f 76 69 64 65 20 74 68 65 20 4c 4c 4d 20 77 69 74 68 20 74 6f 6f 6c 73 20 ion."Provide.the.LLM.with.tools.
7fd40 74 6f 20 72 75 6e 20 74 61 73 6b 73 20 66 6f 72 20 79 6f 75 22 0a 20 20 20 5b 22 22 0a 20 20 20 to.run.tasks.for.you"....[""....
7fd60 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 29 0a 20 .(gptel--infix-variable-scope)..
7fd80 20 20 20 28 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 75 73 65 2d 74 6f 6f 6c 73 29 0a 20 20 20 20 ...(gptel--infix-use-tools).....
7fda0 28 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 63 6f 6e 66 69 72 6d 2d 74 6f 6f 6c 2d 63 61 6c 6c 73 (gptel--infix-confirm-tool-calls
7fdc0 29 0a 20 20 20 20 28 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 69 6e 63 6c 75 64 65 2d 74 6f 6f 6c ).....(gptel--infix-include-tool
7fde0 2d 72 65 73 75 6c 74 73 29 5d 0a 20 20 20 5b 22 22 0a 20 20 20 20 28 22 52 45 54 22 20 22 43 6f -results)]....["".....("RET"."Co
7fe00 6e 66 69 72 6d 20 73 65 6c 65 63 74 69 6f 6e 22 0a 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 74 nfirm.selection"......(lambda.(t
7fe20 6f 6f 6c 73 29 0a 20 20 20 20 20 20 20 3b 3b 20 57 65 20 64 6f 6e 27 74 20 63 61 72 65 20 61 62 ools)........;;.We.don't.care.ab
7fe40 6f 75 74 20 74 68 65 20 74 72 61 6e 73 69 65 6e 74 20 61 72 67 73 20 6f 66 20 74 68 69 73 20 70 out.the.transient.args.of.this.p
7fe60 72 65 66 69 78 20 61 74 20 61 6c 6c 2c 20 73 69 6e 63 65 0a 20 20 20 20 20 20 20 3b 3b 20 74 68 refix.at.all,.since........;;.th
7fe80 65 20 73 74 61 74 65 20 69 73 20 6d 61 6e 61 67 65 64 20 65 6e 74 69 72 65 6c 79 20 74 68 72 6f e.state.is.managed.entirely.thro
7fea0 75 67 68 20 69 74 73 20 74 72 61 6e 73 69 65 6e 74 2d 73 63 6f 70 65 3a 0a 20 20 20 20 20 20 20 ugh.its.transient-scope:........
7fec0 28 69 6e 74 65 72 61 63 74 69 76 65 20 28 6c 69 73 74 20 28 70 6c 69 73 74 2d 67 65 74 20 28 74 (interactive.(list.(plist-get.(t
7fee0 72 61 6e 73 69 65 6e 74 2d 73 63 6f 70 65 20 27 67 70 74 65 6c 2d 74 6f 6f 6c 73 29 20 3a 74 6f ransient-scope.'gptel-tools).:to
7ff00 6f 6c 73 29 29 29 0a 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 73 65 74 2d 77 69 74 68 2d 73 ols)))........(gptel--set-with-s
7ff20 63 6f 70 65 0a 20 20 20 20 20 20 20 20 27 67 70 74 65 6c 2d 74 6f 6f 6c 73 0a 20 20 20 20 20 20 cope.........'gptel-tools.......
7ff40 20 20 28 6d 61 70 63 61 72 20 28 6c 61 6d 62 64 61 20 28 63 61 74 65 67 6f 72 79 2d 61 6e 64 2d ..(mapcar.(lambda.(category-and-
7ff60 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 70 2d 6e 65 73 name)...................(map-nes
7ff80 74 65 64 2d 65 6c 74 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 74 6f 6f 6c 73 20 63 61 74 65 67 ted-elt.gptel--known-tools.categ
7ffa0 6f 72 79 2d 61 6e 64 2d 6e 61 6d 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 ory-and-name)).................(
7ffc0 63 6c 2d 64 65 6c 65 74 65 2d 69 66 2d 6e 6f 74 20 23 27 63 6f 6e 73 70 20 74 6f 6f 6c 73 29 29 cl-delete-if-not.#'consp.tools))
7ffe0 0a 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 63 61 6c .........gptel--set-buffer-local
80000 6c 79 29 29 0a 20 20 20 20 20 3a 74 72 61 6e 73 69 65 6e 74 20 74 72 61 6e 73 69 65 6e 74 2d 2d ly))......:transient.transient--
80020 64 6f 2d 72 65 74 75 72 6e 29 0a 20 20 20 20 28 22 71 22 20 22 43 61 6e 63 65 6c 22 20 74 72 61 do-return).....("q"."Cancel".tra
80040 6e 73 69 65 6e 74 2d 71 75 69 74 2d 6f 6e 65 29 5d 5d 0a 20 20 5b 5b 3a 63 6c 61 73 73 20 74 72 nsient-quit-one)]]...[[:class.tr
80060 61 6e 73 69 65 6e 74 2d 63 6f 6c 75 6d 6e 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 44 69 73 70 ansient-column.............;Disp
80080 6c 61 79 20 6b 6e 6f 77 6e 20 63 61 74 65 67 6f 72 69 65 73 0a 20 20 20 20 3a 73 65 74 75 70 2d lay.known.categories.....:setup-
800a0 63 68 69 6c 64 72 65 6e 0a 20 20 20 20 28 6c 61 6d 62 64 61 20 28 5f 29 0a 20 20 20 20 20 20 28 children.....(lambda.(_).......(
800c0 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 20 20 20 20 transient-parse-suffixes........
800e0 27 67 70 74 65 6c 2d 74 6f 6f 6c 73 0a 20 20 20 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 20 20 20 20 'gptel-tools........(cl-loop....
80100 20 20 20 20 20 20 3b 6c 6f 6f 70 20 74 68 72 6f 75 67 68 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e ......;loop.through.gptel--known
80120 20 74 6f 6f 6c 73 20 61 6e 64 20 63 6f 6c 6c 65 63 74 20 63 61 74 65 67 6f 72 69 65 73 0a 20 20 .tools.and.collect.categories...
80140 20 20 20 20 20 20 66 6f 72 20 28 63 61 74 65 67 6f 72 79 20 2e 20 74 6f 6f 6c 73 2d 61 6c 69 73 ......for.(category...tools-alis
80160 74 29 20 69 6e 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 74 6f 6f 6c 73 0a 20 20 20 20 20 20 20 t).in.gptel--known-tools........
80180 20 77 69 74 68 20 75 6e 75 73 65 64 2d 6b 65 79 73 20 3d 20 28 6e 63 6f 6e 63 20 28 64 65 6c 65 .with.unused-keys.=.(nconc.(dele
801a0 74 65 20 3f 71 20 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 te.?q.(number-sequence.?a.?z))..
801c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
801e0 20 28 6e 75 6d 62 65 72 2d 73 65 71 75 65 6e 63 65 20 3f 30 20 3f 39 29 0a 20 20 20 20 20 20 20 .(number-sequence.?0.?9)........
80200 20 20 20 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 64 65 6c 65 ...........................(dele
80220 74 65 20 3f 4d 20 28 6e 75 6d 62 65 72 2d 73 65 71 75 65 6e 63 65 20 3f 41 20 3f 5a 29 29 29 20 te.?M.(number-sequence.?A.?Z))).
80240 3b 4d 20 75 73 65 64 20 62 79 20 4d 43 50 20 69 6e 74 65 67 72 61 74 69 6f 6e 0a 20 20 20 20 20 ;M.used.by.MCP.integration......
80260 20 20 20 66 6f 72 20 63 61 74 65 67 6f 72 79 2d 6b 65 79 20 3d 20 28 73 65 71 2d 66 69 6e 64 20 ...for.category-key.=.(seq-find.
80280 28 6c 61 6d 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 (lambda.(k).(member.k.unused-key
802a0 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 20 20 20 20 20 20 s)).............................
802c0 20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 2d 72 65 6d 6f 76 65 2d 70 72 65 66 69 78 20 22 .........(string-remove-prefix."
802e0 6d 63 70 2d 22 20 63 61 74 65 67 6f 72 79 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 mcp-".category).................
80300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 71 2d 66 69 72 73 74 20 .....................(seq-first.
80320 75 6e 75 73 65 64 2d 6b 65 79 73 29 29 0a 20 20 20 20 20 20 20 20 64 6f 20 28 73 65 74 71 20 75 unused-keys)).........do.(setq.u
80340 6e 75 73 65 64 2d 6b 65 79 73 20 28 64 65 6c 65 74 65 20 63 61 74 65 67 6f 72 79 2d 6b 65 79 20 nused-keys.(delete.category-key.
80360 75 6e 75 73 65 64 2d 6b 65 79 73 29 29 0a 20 20 20 20 20 20 20 20 63 6f 6c 6c 65 63 74 20 28 6c unused-keys)).........collect.(l
80380 69 73 74 20 28 6b 65 79 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 28 6c 69 73 74 20 63 61 74 65 67 ist.(key-description.(list.categ
803a0 6f 72 79 2d 6b 65 79 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 ory-key)).......................
803c0 28 63 6f 6e 63 61 74 20 28 70 72 6f 70 65 72 74 69 7a 65 20 63 61 74 65 67 6f 72 79 20 27 66 61 (concat.(propertize.category.'fa
803e0 63 65 20 27 74 72 61 6e 73 69 65 6e 74 2d 68 65 61 64 69 6e 67 29 0a 20 20 20 20 20 20 20 20 20 ce.'transient-heading)..........
80400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 6b 65 2d 73 74 72 69 6e .....................(make-strin
80420 67 20 28 6d 61 78 20 28 2d 20 31 34 20 28 6c 65 6e 67 74 68 20 63 61 74 65 67 6f 72 79 29 29 20 g.(max.(-.14.(length.category)).
80440 30 29 20 3f 20 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 63 0).?.)).......................(c
80460 68 61 72 2d 74 6f 2d 73 74 72 69 6e 67 20 63 61 74 65 67 6f 72 79 2d 6b 65 79 29 0a 20 20 20 20 har-to-string.category-key).....
80480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 66 6f 72 6d 61 74 20 22 20 25 6b 20 25 ..................:format.".%k.%
804a0 64 20 25 76 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 6c 61 d.%v".......................:cla
804c0 73 73 20 27 67 70 74 65 6c 2d 2d 73 77 69 74 63 68 2d 63 61 74 65 67 6f 72 79 0a 20 20 20 20 20 ss.'gptel--switch-category......
804e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 61 74 65 67 6f 72 79 20 63 61 74 65 67 .................:category.categ
80500 6f 72 79 29 0a 20 20 20 20 20 20 20 20 69 6e 74 6f 20 63 61 74 65 67 6f 72 69 65 73 0a 20 20 20 ory).........into.categories....
80520 20 20 20 20 20 66 69 6e 61 6c 6c 79 20 64 6f 20 28 70 6c 69 73 74 2d 70 75 74 20 28 74 72 61 6e .....finally.do.(plist-put.(tran
80540 73 69 65 6e 74 2d 73 63 6f 70 65 29 20 3a 6b 65 79 73 20 75 6e 75 73 65 64 2d 6b 65 79 73 29 0a sient-scope).:keys.unused-keys).
80560 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 20 72 65 74 75 72 6e 20 63 61 74 65 67 6f 72 69 65 ........finally.return.categorie
80580 73 29 29 29 5d 0a 20 20 20 5b 3a 63 6c 61 73 73 20 74 72 61 6e 73 69 65 6e 74 2d 63 6f 6c 75 6d s)))]....[:class.transient-colum
805a0 6e 20 20 20 20 20 20 20 20 20 20 20 3b 44 69 73 70 6c 61 79 20 6b 6e 6f 77 6e 20 74 6f 6f 6c 73 n...........;Display.known.tools
805c0 20 66 6f 72 20 73 65 6c 65 63 74 65 64 20 63 61 74 65 67 6f 72 79 0a 20 20 20 20 3a 73 65 74 75 .for.selected.category.....:setu
805e0 70 2d 63 68 69 6c 64 72 65 6e 0a 20 20 20 20 28 6c 61 6d 62 64 61 20 28 5f 29 0a 20 20 20 20 20 p-children.....(lambda.(_)......
80600 20 28 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 20 20 .(transient-parse-suffixes......
80620 20 20 27 67 70 74 65 6c 2d 74 6f 6f 6c 73 0a 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a ..'gptel-tools........(when-let*
80640 20 28 28 63 61 74 65 67 6f 72 79 20 28 70 6c 69 73 74 2d 67 65 74 20 28 74 72 61 6e 73 69 65 6e .((category.(plist-get.(transien
80660 74 2d 73 63 6f 70 65 29 20 3a 63 61 74 65 67 6f 72 79 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 t-scope).:category))............
80680 20 20 20 20 20 20 20 20 28 74 6f 6f 6c 2d 6b 65 79 73 20 28 70 6c 69 73 74 2d 67 65 74 20 28 74 ........(tool-keys.(plist-get.(t
806a0 72 61 6e 73 69 65 6e 74 2d 73 63 6f 70 65 29 20 3a 6b 65 79 73 29 29 29 0a 20 20 20 20 20 20 20 ransient-scope).:keys)))........
806c0 20 20 28 63 6c 2d 6c 6f 6f 70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 66 6f ..(cl-loop...................;fo
806e0 72 20 65 61 63 68 20 63 61 74 65 67 6f 72 79 2c 20 63 6f 6c 6c 65 63 74 20 74 6f 6f 6c 73 20 61 r.each.category,.collect.tools.a
80700 73 20 69 6e 66 69 78 65 73 0a 20 20 20 20 20 20 20 20 20 20 77 69 74 68 20 74 6f 6f 6c 73 2d 61 s.infixes...........with.tools-a
80720 6c 69 73 74 20 3d 20 28 63 64 72 20 28 61 73 73 6f 63 20 63 61 74 65 67 6f 72 79 20 67 70 74 65 list.=.(cdr.(assoc.category.gpte
80740 6c 2d 2d 6b 6e 6f 77 6e 2d 74 6f 6f 6c 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 l--known-tools))...........for.(
80760 6e 61 6d 65 20 2e 20 74 6f 6f 6c 29 20 69 6e 20 74 6f 6f 6c 73 2d 61 6c 69 73 74 0a 20 20 20 20 name...tool).in.tools-alist.....
80780 20 20 20 20 20 20 66 6f 72 20 74 6f 6f 6c 2d 6b 65 79 20 3d 20 28 73 65 71 2d 66 69 6e 64 20 28 ......for.tool-key.=.(seq-find.(
807a0 6c 61 6d 62 64 61 20 28 6b 29 20 28 6d 65 6d 62 65 72 20 6b 20 74 6f 6f 6c 2d 6b 65 79 73 29 29 lambda.(k).(member.k.tool-keys))
807c0 20 6e 61 6d 65 20 28 73 65 71 2d 66 69 72 73 74 20 74 6f 6f 6c 2d 6b 65 79 73 29 29 0a 20 20 20 .name.(seq-first.tool-keys))....
807e0 20 20 20 20 20 20 20 64 6f 20 28 73 65 74 71 20 74 6f 6f 6c 2d 6b 65 79 73 20 28 64 65 6c 65 74 .......do.(setq.tool-keys.(delet
80800 65 20 74 6f 6f 6c 2d 6b 65 79 20 74 6f 6f 6c 2d 6b 65 79 73 29 29 0a 20 20 20 20 20 20 20 20 20 e.tool-key.tool-keys))..........
80820 20 63 6f 6c 6c 65 63 74 20 20 20 20 20 20 20 20 20 20 3b 45 61 63 68 20 6c 69 73 74 20 69 73 20 .collect..........;Each.list.is.
80840 61 20 74 72 61 6e 73 69 65 6e 74 20 69 6e 66 69 78 20 6f 66 20 74 79 70 65 20 67 70 74 65 6c 2d a.transient.infix.of.type.gptel-
80860 2d 73 77 69 74 63 68 0a 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 28 6b 65 79 2d 64 65 73 -switch...........(list.(key-des
80880 63 72 69 70 74 69 6f 6e 20 28 6c 69 73 74 20 74 6f 6f 6c 2d 6b 65 79 29 29 0a 20 20 20 20 20 20 cription.(list.tool-key)).......
808a0 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 28 6d 61 6b 65 2d 73 74 72 69 6e 67 20 28 ..........(concat.(make-string.(
808c0 6d 61 78 20 28 2d 20 32 30 20 28 6c 65 6e 67 74 68 20 6e 61 6d 65 29 29 20 30 29 20 3f 20 29 0a max.(-.20.(length.name)).0).?.).
808e0 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 65 72 74 ........................(propert
80900 69 7a 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 28 63 6f ize..........................(co
80920 6e 63 61 74 20 22 28 22 20 28 67 70 74 65 6c 2d 2d 64 65 73 63 72 69 62 65 2d 64 69 72 65 63 74 ncat."(".(gptel--describe-direct
80940 69 76 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 ive.............................
80960 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 74 6f 6f 6c 2d 64 65 73 63 72 69 70 74 69 6f ..........(gptel-tool-descriptio
80980 6e 20 74 6f 6f 6c 29 20 28 2d 20 28 77 69 6e 64 6f 77 2d 77 69 64 74 68 29 20 36 30 29 29 0a 20 n.tool).(-.(window-width).60))..
809a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
809c0 22 29 22 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 27 66 ")")..........................'f
809e0 61 63 65 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 28 67 ace.'shadow)).................(g
80a00 70 74 65 6c 2d 74 6f 6f 6c 2d 6e 61 6d 65 20 74 6f 6f 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 ptel-tool-name.tool)............
80a20 20 20 20 20 20 3a 66 6f 72 6d 61 74 20 22 20 25 6b 20 25 76 20 25 64 22 0a 20 20 20 20 20 20 20 .....:format.".%k.%v.%d"........
80a40 20 20 20 20 20 20 20 20 20 3a 69 6e 69 74 2d 76 61 6c 75 65 20 23 27 67 70 74 65 6c 2d 2d 74 6f .........:init-value.#'gptel--to
80a60 6f 6c 73 2d 69 6e 69 74 2d 76 61 6c 75 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a ols-init-value.................:
80a80 63 6c 61 73 73 20 27 67 70 74 65 6c 2d 2d 73 77 69 74 63 68 0a 20 20 20 20 20 20 20 20 20 20 20 class.'gptel--switch............
80aa0 20 20 20 20 20 3a 63 61 74 65 67 6f 72 79 20 63 61 74 65 67 6f 72 79 29 0a 20 20 20 20 20 20 20 .....:category.category)........
80ac0 20 20 20 69 6e 74 6f 20 69 6e 66 69 78 65 73 2d 66 6f 72 2d 63 61 74 65 67 6f 72 79 0a 20 20 20 ...into.infixes-for-category....
80ae0 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 20 20 20 .......finally.return...........
80b00 28 63 6f 6e 73 20 28 6c 69 73 74 20 3a 69 6e 66 6f 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (cons.(list.:info...............
80b20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 29 20 28 63 6f 6e 63 61 74 0a 20 20 20 20 20 ........(lambda.().(concat......
80b40 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 65 72 74 ........................(propert
80b60 69 7a 65 20 28 70 6c 69 73 74 2d 67 65 74 20 28 74 72 61 6e 73 69 65 6e 74 2d 73 63 6f 70 65 29 ize.(plist-get.(transient-scope)
80b80 20 3a 6b 65 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 .:key)..........................
80ba0 20 20 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 69 65 6e 74 ................'face.'transient
80bc0 2d 6b 65 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 -key)...........................
80be0 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 20 74 6f 67 67 6c 65 20 61 6c 6c 22 20 27 66 61 ...(propertize.".toggle.all".'fa
80c00 63 65 20 27 74 72 61 6e 73 69 65 6e 74 2d 68 65 61 64 69 6e 67 29 29 29 0a 20 20 20 20 20 20 20 ce.'transient-heading)))........
80c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 66 6f 72 6d 61 74 20 22 20 25 64 22 29 0a 20 20 ...............:format.".%d")...
80c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 66 69 78 65 73 2d 66 6f 72 2d 63 61 74 65 67 6f ..............infixes-for-catego
80c60 72 79 29 29 29 29 29 5d 5d 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 28 74 72 61 ry)))))]]...(interactive)...(tra
80c80 6e 73 69 65 6e 74 2d 73 65 74 75 70 0a 20 20 20 27 67 70 74 65 6c 2d 74 6f 6f 6c 73 20 6e 69 6c nsient-setup....'gptel-tools.nil
80ca0 20 6e 69 6c 0a 20 20 20 3a 73 63 6f 70 65 20 28 6c 69 73 74 20 3a 74 6f 6f 6c 73 20 28 6d 61 70 .nil....:scope.(list.:tools.(map
80cc0 63 61 72 20 28 6c 61 6d 62 64 61 20 28 74 6f 6f 6c 29 20 28 6c 69 73 74 20 28 67 70 74 65 6c 2d car.(lambda.(tool).(list.(gptel-
80ce0 74 6f 6f 6c 2d 63 61 74 65 67 6f 72 79 20 74 6f 6f 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 tool-category.tool).............
80d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
80d20 20 20 20 28 67 70 74 65 6c 2d 74 6f 6f 6c 2d 6e 61 6d 65 20 74 6f 6f 6c 29 29 29 0a 20 20 20 20 ...(gptel-tool-name.tool))).....
80d40 20 20 20 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
80d60 2d 74 6f 6f 6c 73 29 29 29 29 0a 0a 0c 0a 3b 3b 20 2a 20 54 72 61 6e 73 69 65 6e 74 20 49 6e 66 -tools))))....;;.*.Transient.Inf
80d80 69 78 65 73 0a 0a 3b 3b 20 2a 2a 20 49 6e 66 69 78 65 73 20 66 6f 72 20 63 6f 6e 74 65 78 74 20 ixes..;;.**.Infixes.for.context.
80da0 61 67 67 72 65 67 61 74 69 6f 6e 0a 0a 28 74 72 61 6e 73 69 65 6e 74 2d 64 65 66 69 6e 65 2d 69 aggregation..(transient-define-i
80dc0 6e 66 69 78 20 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 75 73 65 2d 63 6f 6e 74 65 78 74 20 28 29 nfix.gptel--infix-use-context.()
80de0 0a 20 20 22 44 65 73 63 72 69 62 65 20 74 61 72 67 65 74 20 64 65 73 74 69 6e 61 74 69 6f 6e 20 ..."Describe.target.destination.
80e00 66 6f 72 20 63 6f 6e 74 65 78 74 20 69 6e 6a 65 63 74 69 6f 6e 2e 0a 0a 67 70 74 65 6c 20 77 69 for.context.injection...gptel.wi
80e20 6c 6c 20 69 6e 63 6c 75 64 65 20 77 69 74 68 20 74 68 65 20 4c 4c 4d 20 72 65 71 75 65 73 74 20 ll.include.with.the.LLM.request.
80e40 61 6e 79 20 61 64 64 69 74 69 6f 6e 61 6c 20 63 6f 6e 74 65 78 74 0a 61 64 64 65 64 20 77 69 74 any.additional.context.added.wit
80e60 68 20 60 67 70 74 65 6c 2d 61 64 64 27 2e 20 20 54 68 69 73 20 63 6f 6e 74 65 78 74 20 63 61 6e h.`gptel-add'...This.context.can
80e80 20 62 65 20 69 67 6e 6f 72 65 64 2c 20 69 6e 63 6c 75 64 65 64 0a 77 69 74 68 20 74 68 65 20 73 .be.ignored,.included.with.the.s
80ea0 79 73 74 65 6d 20 6d 65 73 73 61 67 65 20 6f 72 20 69 6e 63 6c 75 64 65 64 20 77 69 74 68 20 74 ystem.message.or.included.with.t
80ec0 68 65 20 75 73 65 72 20 70 72 6f 6d 70 74 2e 0a 0a 57 68 65 72 65 20 69 6e 20 74 68 65 20 72 65 he.user.prompt...Where.in.the.re
80ee0 71 75 65 73 74 20 74 68 69 73 20 63 6f 6e 74 65 78 74 20 69 73 20 69 6e 63 6c 75 64 65 64 20 64 quest.this.context.is.included.d
80f00 65 70 65 6e 64 73 20 6f 6e 20 74 68 65 0a 76 61 6c 75 65 20 6f 66 20 60 67 70 74 65 6c 2d 75 73 epends.on.the.value.of.`gptel-us
80f20 65 2d 63 6f 6e 74 65 78 74 27 2c 20 73 65 74 20 66 72 6f 6d 20 68 65 72 65 2e 22 0a 20 20 3a 64 e-context',.set.from.here."...:d
80f40 65 73 63 72 69 70 74 69 6f 6e 20 22 49 6e 63 6c 75 64 65 20 63 6f 6e 74 65 78 74 22 0a 20 20 3a escription."Include.context"...:
80f60 63 6c 61 73 73 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 class.'gptel-lisp-variable...:va
80f80 72 69 61 62 6c 65 20 27 67 70 74 65 6c 2d 75 73 65 2d 63 6f 6e 74 65 78 74 0a 20 20 3a 66 6f 72 riable.'gptel-use-context...:for
80fa0 6d 61 74 20 22 20 25 6b 20 25 64 20 25 76 22 0a 20 20 3a 73 65 74 2d 76 61 6c 75 65 20 23 27 67 mat.".%k.%d.%v"...:set-value.#'g
80fc0 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 6c 61 79 2d ptel--set-with-scope...:display-
80fe0 6e 69 6c 20 22 4e 6f 22 0a 20 20 3a 64 69 73 70 6c 61 79 2d 6d 61 70 20 27 28 28 6e 69 6c 20 20 nil."No"...:display-map.'((nil..
81000 20 20 2e 20 22 4e 6f 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 79 73 74 ...."No")..................(syst
81020 65 6d 20 2e 20 22 77 69 74 68 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 22 29 0a 20 20 20 20 em..."with.system.message").....
81040 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 73 65 72 20 20 20 2e 20 22 77 69 74 68 20 75 73 65 .............(user....."with.use
81060 72 20 70 72 6f 6d 70 74 22 29 29 0a 20 20 3a 6b 65 79 20 22 2d 69 22 0a 20 20 3a 72 65 61 64 65 r.prompt"))...:key."-i"...:reade
81080 72 20 28 6c 61 6d 62 64 61 20 28 70 72 6f 6d 70 74 20 26 72 65 73 74 20 5f 29 0a 20 20 20 20 20 r.(lambda.(prompt.&rest._)......
810a0 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 63 68 6f 69 63 65 73 20 27 28 28 22 4e 6f 22 20 20 .......(let*.((choices.'(("No"..
810c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 ..................nil)..........
810e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 22 77 69 74 68 20 73 79 73 74 .....................("with.syst
81100 65 6d 20 6d 65 73 73 61 67 65 22 20 2e 20 73 79 73 74 65 6d 29 0a 20 20 20 20 20 20 20 20 20 20 em.message"...system)...........
81120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 22 77 69 74 68 20 75 73 65 72 20 ....................("with.user.
81140 70 72 6f 6d 70 74 22 20 20 20 20 2e 20 75 73 65 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 prompt"......user)))............
81160 20 20 20 20 20 20 20 20 28 64 65 73 74 69 6e 61 74 69 6f 6e 20 28 63 6f 6d 70 6c 65 74 69 6e 67 ........(destination.(completing
81180 2d 72 65 61 64 20 70 72 6f 6d 70 74 20 63 68 6f 69 63 65 73 20 6e 69 6c 20 74 29 29 29 0a 20 20 -read.prompt.choices.nil.t)))...
811a0 20 20 20 20 20 20 20 20 20 20 20 20 28 63 64 72 20 28 61 73 73 6f 63 20 64 65 73 74 69 6e 61 74 ............(cdr.(assoc.destinat
811c0 69 6f 6e 20 63 68 6f 69 63 65 73 29 29 29 29 29 0a 0a 3b 3b 20 2a 2a 20 49 6e 66 69 78 65 73 20 ion.choices)))))..;;.**.Infixes.
811e0 66 6f 72 20 6d 6f 64 65 6c 20 70 61 72 61 6d 65 74 65 72 73 0a 0a 28 74 72 61 6e 73 69 65 6e 74 for.model.parameters..(transient
81200 2d 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 76 61 72 69 61 -define-infix.gptel--infix-varia
81220 62 6c 65 2d 73 63 6f 70 65 20 28 29 0a 20 20 22 53 65 74 20 67 70 74 65 6c 27 73 20 6d 6f 64 65 ble-scope.()..."Set.gptel's.mode
81240 6c 20 70 61 72 61 6d 65 74 65 72 73 20 61 6e 64 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 20 l.parameters.and.system.message.
81260 69 6e 20 74 68 69 73 20 62 75 66 66 65 72 20 6f 72 20 67 6c 6f 62 61 6c 6c 79 2e 22 0a 20 20 3a in.this.buffer.or.globally."...:
81280 61 72 67 75 6d 65 6e 74 20 22 73 63 6f 70 65 22 0a 20 20 3a 76 61 72 69 61 62 6c 65 20 27 67 70 argument."scope"...:variable.'gp
812a0 74 65 6c 2d 2d 73 65 74 2d 62 75 66 66 65 72 2d 6c 6f 63 61 6c 6c 79 0a 20 20 3a 63 6c 61 73 73 tel--set-buffer-locally...:class
812c0 20 27 67 70 74 65 6c 2d 2d 73 63 6f 70 65 0a 20 20 3a 66 6f 72 6d 61 74 20 22 20 20 25 6b 20 25 .'gptel--scope...:format."..%k.%
812e0 64 20 25 76 22 0a 20 20 3a 6b 65 79 20 22 3d 22 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 d.%v"...:key."="...:description.
81300 28 70 72 6f 70 65 72 74 69 7a 65 20 22 53 63 6f 70 65 22 20 27 66 61 63 65 20 27 74 72 61 6e 73 (propertize."Scope".'face.'trans
81320 69 65 6e 74 2d 69 6e 61 63 74 69 76 65 2d 61 72 67 75 6d 65 6e 74 29 29 0a 0a 28 74 72 61 6e 73 ient-inactive-argument))..(trans
81340 69 65 6e 74 2d 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 6e ient-define-infix.gptel--infix-n
81360 75 6d 2d 6d 65 73 73 61 67 65 73 2d 74 6f 2d 73 65 6e 64 20 28 29 0a 20 20 22 4e 75 6d 62 65 72 um-messages-to-send.()..."Number
81380 20 6f 66 20 72 65 63 65 6e 74 20 6d 65 73 73 61 67 65 73 20 74 6f 20 73 65 6e 64 20 77 69 74 68 .of.recent.messages.to.send.with
813a0 20 65 61 63 68 20 65 78 63 68 61 6e 67 65 2e 0a 0a 42 79 20 64 65 66 61 75 6c 74 2c 20 74 68 65 .each.exchange...By.default,.the
813c0 20 66 75 6c 6c 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 20 68 69 73 74 6f 72 79 20 69 73 20 73 65 .full.conversation.history.is.se
813e0 6e 74 20 77 69 74 68 20 65 76 65 72 79 20 6e 65 77 0a 70 72 6f 6d 70 74 2e 20 54 68 69 73 20 72 nt.with.every.new.prompt..This.r
81400 65 74 61 69 6e 73 20 74 68 65 20 66 75 6c 6c 20 63 6f 6e 74 65 78 74 20 6f 66 20 74 68 65 20 63 etains.the.full.context.of.the.c
81420 6f 6e 76 65 72 73 61 74 69 6f 6e 2c 20 62 75 74 0a 63 61 6e 20 62 65 20 65 78 70 65 6e 73 69 76 onversation,.but.can.be.expensiv
81440 65 20 69 6e 20 74 6f 6b 65 6e 20 73 69 7a 65 2e 20 53 65 74 20 68 6f 77 20 6d 61 6e 79 20 72 65 e.in.token.size..Set.how.many.re
81460 63 65 6e 74 20 6d 65 73 73 61 67 65 73 20 74 6f 0a 69 6e 63 6c 75 64 65 2e 22 0a 20 20 3a 64 65 cent.messages.to.include."...:de
81480 73 63 72 69 70 74 69 6f 6e 20 22 70 72 65 76 69 6f 75 73 20 72 65 73 70 6f 6e 73 65 73 22 0a 20 scription."previous.responses"..
814a0 20 3a 63 6c 61 73 73 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 .:class.'gptel-lisp-variable...:
814c0 76 61 72 69 61 62 6c 65 20 27 67 70 74 65 6c 2d 2d 6e 75 6d 2d 6d 65 73 73 61 67 65 73 2d 74 6f variable.'gptel--num-messages-to
814e0 2d 73 65 6e 64 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 -send...:set-value.#'gptel--set-
81500 77 69 74 68 2d 73 63 6f 70 65 0a 20 20 3a 64 69 73 70 6c 61 79 2d 6e 69 6c 20 27 61 6c 6c 0a 20 with-scope...:display-nil.'all..
81520 20 3a 66 6f 72 6d 61 74 20 22 20 25 6b 20 25 76 20 25 64 22 0a 20 20 3a 6b 65 79 20 22 2d 6e 22 .:format.".%k.%v.%d"...:key."-n"
81540 0a 20 20 3a 70 72 6f 6d 70 74 20 22 4e 75 6d 62 65 72 20 6f 66 20 70 61 73 74 20 6d 65 73 73 61 ...:prompt."Number.of.past.messa
81560 67 65 73 20 74 6f 20 69 6e 63 6c 75 64 65 20 66 6f 72 20 63 6f 6e 74 65 78 74 20 28 6c 65 61 76 ges.to.include.for.context.(leav
81580 65 20 65 6d 70 74 79 20 66 6f 72 20 61 6c 6c 29 3a 20 22 0a 20 20 3a 72 65 61 64 65 72 20 27 67 e.empty.for.all):."...:reader.'g
815a0 70 74 65 6c 2d 2d 74 72 61 6e 73 69 65 6e 74 2d 72 65 61 64 2d 6e 75 6d 62 65 72 29 0a 0a 28 74 ptel--transient-read-number)..(t
815c0 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 2d 2d 69 6e 66 ransient-define-infix.gptel--inf
815e0 69 78 2d 6d 61 78 2d 74 6f 6b 65 6e 73 20 28 29 0a 20 20 22 4d 61 78 20 74 6f 6b 65 6e 73 20 70 ix-max-tokens.()..."Max.tokens.p
81600 65 72 20 72 65 73 70 6f 6e 73 65 2e 0a 0a 54 68 69 73 20 69 73 20 72 6f 75 67 68 6c 79 20 74 68 er.response...This.is.roughly.th
81620 65 20 6e 75 6d 62 65 72 20 6f 66 20 77 6f 72 64 73 20 69 6e 20 74 68 65 20 72 65 73 70 6f 6e 73 e.number.of.words.in.the.respons
81640 65 2e 20 31 30 30 2d 33 30 30 20 69 73 20 61 0a 72 65 61 73 6f 6e 61 62 6c 65 20 72 61 6e 67 65 e..100-300.is.a.reasonable.range
81660 20 66 6f 72 20 73 68 6f 72 74 20 61 6e 73 77 65 72 73 2c 20 34 30 30 20 6f 72 20 6d 6f 72 65 20 .for.short.answers,.400.or.more.
81680 66 6f 72 20 6c 6f 6e 67 65 72 0a 72 65 73 70 6f 6e 73 65 73 2e 22 0a 20 20 3a 64 65 73 63 72 69 for.longer.responses."...:descri
816a0 70 74 69 6f 6e 20 22 52 65 73 70 6f 6e 73 65 20 6c 65 6e 67 74 68 20 28 74 6f 6b 65 6e 73 29 22 ption."Response.length.(tokens)"
816c0 0a 20 20 3a 63 6c 61 73 73 20 27 67 70 74 65 6c 2d 6c 69 73 70 2d 76 61 72 69 61 62 6c 65 0a 20 ...:class.'gptel-lisp-variable..
816e0 20 3a 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 0a 20 20 3a .:variable.'gptel-max-tokens...:
81700 73 65 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 set-value.#'gptel--set-with-scop
81720 65 0a 20 20 3a 64 69 73 70 6c 61 79 2d 6e 69 6c 20 27 61 75 74 6f 0a 20 20 3a 6b 65 79 20 22 2d e...:display-nil.'auto...:key."-
81740 63 22 0a 20 20 3a 70 72 6f 6d 70 74 20 22 52 65 73 70 6f 6e 73 65 20 6c 65 6e 67 74 68 20 69 6e c"...:prompt."Response.length.in
81760 20 74 6f 6b 65 6e 73 20 28 6c 65 61 76 65 20 65 6d 70 74 79 3a 20 64 65 66 61 75 6c 74 2c 20 38 .tokens.(leave.empty:.default,.8
81780 30 2d 32 30 30 3a 20 73 68 6f 72 74 2c 20 32 30 30 2d 35 30 30 3a 20 6c 6f 6e 67 29 3a 20 22 0a 0-200:.short,.200-500:.long):.".
817a0 20 20 3a 72 65 61 64 65 72 20 27 67 70 74 65 6c 2d 2d 74 72 61 6e 73 69 65 6e 74 2d 72 65 61 64 ..:reader.'gptel--transient-read
817c0 2d 6e 75 6d 62 65 72 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 -number)..(transient-define-infi
817e0 78 20 67 70 74 65 6c 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 x.gptel--infix-provider.()..."AI
81800 20 50 72 6f 76 69 64 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 .Provider.for.Chat."...:descript
81820 69 6f 6e 20 22 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 ion."Model"...:class.'gptel-prov
81840 69 64 65 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 ider-variable...:prompt."Model:.
81860 22 0a 20 20 3a 76 61 72 69 61 62 6c 65 20 27 67 70 74 65 6c 2d 6d 6f 64 65 6c 0a 20 20 3a 73 65 "...:variable.'gptel-model...:se
81880 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.
818a0 20 20 3a 62 61 63 6b 65 6e 64 20 27 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 0a 20 20 3a 6b 65 79 ..:backend.'gptel-backend...:key
818c0 20 22 2d 6d 22 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 ."-m"...:reader.(lambda.(prompt.
818e0 26 72 65 73 74 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 &rest._).............(cl-loop...
81900 20 20 20 20 20 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 ...........for.(name...backend).
81920 69 6e 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 20 20 20 in.gptel--known-backends........
81940 20 20 20 20 20 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 ......nconc.(cl-loop.for.model.i
81960 6e 20 28 67 70 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 n.(gptel-backend-models.backend)
81980 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 63 6f 6c .............................col
819a0 6c 65 63 74 20 28 6c 69 73 74 20 28 63 6f 6e 63 61 74 20 6e 61 6d 65 20 22 3a 22 20 28 67 70 74 lect.(list.(concat.name.":".(gpt
819c0 65 6c 2d 2d 6d 6f 64 65 6c 2d 6e 61 6d 65 20 6d 6f 64 65 6c 29 29 0a 20 20 20 20 20 20 20 20 20 el--model-name.model))..........
819e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
81a00 20 62 61 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 .backend.model))..............in
81a20 74 6f 20 6d 6f 64 65 6c 73 2d 61 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 77 69 74 to.models-alist..............wit
81a40 68 20 63 6f 6d 70 6c 65 74 69 6f 6e 2d 65 78 74 72 61 2d 70 72 6f 70 65 72 74 69 65 73 20 3d 0a h.completion-extra-properties.=.
81a60 20 20 20 20 20 20 20 20 20 20 20 20 20 60 28 3a 61 6e 6e 6f 74 61 74 69 6f 6e 2d 66 75 6e 63 74 .............`(:annotation-funct
81a80 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2c 28 6c 61 6d 62 64 61 20 28 63 6f 6d ion................,(lambda.(com
81aa0 70 29 0a 09 09 20 20 28 6c 65 74 2a 20 28 28 6d 6f 64 65 6c 20 28 6e 74 68 20 32 20 28 61 73 73 p).....(let*.((model.(nth.2.(ass
81ac0 6f 63 20 63 6f 6d 70 20 6d 6f 64 65 6c 73 2d 61 6c 69 73 74 29 29 29 0a 09 09 09 20 28 64 65 73 oc.comp.models-alist))).....(des
81ae0 63 20 28 67 65 74 20 6d 6f 64 65 6c 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 29 29 0a 09 09 09 20 c.(get.model.:description)).....
81b00 28 63 61 70 73 20 28 67 65 74 20 6d 6f 64 65 6c 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 29 29 (caps.(get.model.:capabilities))
81b20 0a 09 09 09 20 28 63 6f 6e 74 65 78 74 20 28 67 65 74 20 6d 6f 64 65 6c 20 3a 63 6f 6e 74 65 78 .....(context.(get.model.:contex
81b40 74 2d 77 69 6e 64 6f 77 29 29 0a 09 09 09 20 28 69 6e 70 75 74 2d 63 6f 73 74 20 28 67 65 74 20 t-window)).....(input-cost.(get.
81b60 6d 6f 64 65 6c 20 3a 69 6e 70 75 74 2d 63 6f 73 74 29 29 0a 09 09 09 20 28 6f 75 74 70 75 74 2d model.:input-cost)).....(output-
81b80 63 6f 73 74 20 28 67 65 74 20 6d 6f 64 65 6c 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 29 29 0a 09 cost.(get.model.:output-cost))..
81ba0 09 09 20 28 63 75 74 6f 66 66 20 28 67 65 74 20 6d 6f 64 65 6c 20 3a 63 75 74 6f 66 66 2d 64 61 ...(cutoff.(get.model.:cutoff-da
81bc0 74 65 29 29 29 0a 09 09 20 20 20 20 28 77 68 65 6e 20 28 6f 72 20 64 65 73 63 20 63 61 70 73 20 te))).......(when.(or.desc.caps.
81be0 63 6f 6e 74 65 78 74 20 69 6e 70 75 74 2d 63 6f 73 74 20 6f 75 74 70 75 74 2d 63 6f 73 74 20 63 context.input-cost.output-cost.c
81c00 75 74 6f 66 66 29 0a 09 09 20 20 20 20 20 20 28 63 6f 6e 63 61 74 0a 09 09 20 20 20 20 20 20 20 utoff).........(concat..........
81c20 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 60 28 73 70 61 63 65 (propertize.".".'display.`(space
81c40 20 3a 61 6c 69 67 6e 2d 74 6f 20 34 30 29 29 0a 09 09 20 20 20 20 20 20 20 28 77 68 65 6e 20 64 .:align-to.40))..........(when.d
81c60 65 73 63 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 64 65 esc.(truncate-string-to-width.de
81c80 73 63 20 37 30 20 6e 69 6c 20 3f 20 74 20 74 29 29 0a 09 09 20 20 20 20 20 20 20 22 20 22 20 28 sc.70.nil.?.t.t))..........".".(
81ca0 70 72 6f 70 65 72 74 69 7a 65 20 22 20 22 20 27 64 69 73 70 6c 61 79 20 60 28 73 70 61 63 65 20 propertize.".".'display.`(space.
81cc0 3a 61 6c 69 67 6e 2d 74 6f 20 31 31 32 29 29 0a 09 09 20 20 20 20 20 20 20 28 77 68 65 6e 20 63 :align-to.112))..........(when.c
81ce0 61 70 73 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 28 70 aps.(truncate-string-to-width.(p
81d00 72 69 6e 31 2d 74 6f 2d 73 74 72 69 6e 67 20 63 61 70 73 29 20 32 31 20 6e 69 6c 20 3f 20 74 20 rin1-to-string.caps).21.nil.?.t.
81d20 74 29 29 0a 09 09 20 20 20 20 20 20 20 22 20 22 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 20 22 t))..........".".(propertize."."
81d40 20 27 64 69 73 70 6c 61 79 20 60 28 73 70 61 63 65 20 3a 61 6c 69 67 6e 2d 74 6f 20 31 33 34 29 .'display.`(space.:align-to.134)
81d60 29 0a 09 09 20 20 20 20 20 20 20 28 77 68 65 6e 20 63 6f 6e 74 65 78 74 20 28 66 6f 72 6d 61 74 )..........(when.context.(format
81d80 20 22 25 35 64 6b 22 20 63 6f 6e 74 65 78 74 29 29 0a 09 09 20 20 20 20 20 20 20 22 20 22 20 28 ."%5dk".context))..........".".(
81da0 70 72 6f 70 65 72 74 69 7a 65 20 22 20 22 20 27 64 69 73 70 6c 61 79 20 60 28 73 70 61 63 65 20 propertize.".".'display.`(space.
81dc0 3a 61 6c 69 67 6e 2d 74 6f 20 31 34 32 29 29 0a 09 09 20 20 20 20 20 20 20 28 77 68 65 6e 20 69 :align-to.142))..........(when.i
81de0 6e 70 75 74 2d 63 6f 73 74 20 28 66 6f 72 6d 61 74 20 22 24 25 35 2e 32 66 20 69 6e 22 20 69 6e nput-cost.(format."$%5.2f.in".in
81e00 70 75 74 2d 63 6f 73 74 29 29 0a 09 09 20 20 20 20 20 20 20 28 69 66 20 28 61 6e 64 20 69 6e 70 put-cost))..........(if.(and.inp
81e20 75 74 2d 63 6f 73 74 20 6f 75 74 70 75 74 2d 63 6f 73 74 29 20 22 2c 22 20 22 20 22 29 0a 09 09 ut-cost.output-cost).",".".")...
81e40 20 20 20 20 20 20 20 22 20 22 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 20 22 20 27 64 69 73 70 .......".".(propertize.".".'disp
81e60 6c 61 79 20 60 28 73 70 61 63 65 20 3a 61 6c 69 67 6e 2d 74 6f 20 31 35 33 29 29 0a 09 09 20 20 lay.`(space.:align-to.153)).....
81e80 20 20 20 20 20 28 77 68 65 6e 20 6f 75 74 70 75 74 2d 63 6f 73 74 20 28 66 6f 72 6d 61 74 20 22 .....(when.output-cost.(format."
81ea0 24 25 36 2e 32 66 20 6f 75 74 22 20 6f 75 74 70 75 74 2d 63 6f 73 74 29 29 0a 09 09 20 20 20 20 $%6.2f.out".output-cost)).......
81ec0 20 20 20 22 20 22 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 ...".".(propertize.".".'display.
81ee0 60 28 73 70 61 63 65 20 3a 61 6c 69 67 6e 2d 74 6f 20 31 36 36 29 29 0a 09 09 20 20 20 20 20 20 `(space.:align-to.166)).........
81f00 20 63 75 74 6f 66 66 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c .cutoff)))))..............finall
81f20 79 20 72 65 74 75 72 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 64 72 20 28 61 73 73 6f y.return..............(cdr.(asso
81f40 63 20 28 63 6f 6d 70 6c 65 74 69 6e 67 2d 72 65 61 64 20 70 72 6f 6d 70 74 20 6d 6f 64 65 6c 73 c.(completing-read.prompt.models
81f60 2d 61 6c 69 73 74 20 6e 69 6c 20 74 20 6e 69 6c 20 6e 69 6c 0a 09 09 09 09 09 20 20 28 63 6f 6e -alist.nil.t.nil.nil........(con
81f80 63 61 74 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 61 cat.(gptel-backend-name.gptel-ba
81fa0 63 6b 65 6e 64 29 20 22 3a 22 0a 09 09 09 09 09 09 20 20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c ckend).":".........(gptel--model
81fc0 2d 6e 61 6d 65 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 -name.gptel-model)))............
81fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 65 6c 73 2d 61 6c 69 73 74 29 29 29 29 29 0a ..............models-alist))))).
82000 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 2d 2d .(transient-define-infix.gptel--
82020 69 6e 66 69 78 2d 74 65 6d 70 65 72 61 74 75 72 65 20 28 29 0a 20 20 22 54 65 6d 70 65 72 61 74 infix-temperature.()..."Temperat
82040 75 72 65 20 6f 66 20 72 65 71 75 65 73 74 2e 22 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 ure.of.request."...:description.
82060 22 54 65 6d 70 65 72 61 74 75 72 65 20 28 30 20 2d 20 32 2e 30 29 22 0a 20 20 3a 64 69 73 70 6c "Temperature.(0.-.2.0)"...:displ
82080 61 79 2d 6e 69 6c 20 22 64 65 66 61 75 6c 74 22 0a 20 20 3a 63 6c 61 73 73 20 27 67 70 74 65 6c ay-nil."default"...:class.'gptel
820a0 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 70 74 65 -lisp-variable...:variable.'gpte
820c0 6c 2d 74 65 6d 70 65 72 61 74 75 72 65 0a 20 20 3a 73 65 74 2d 76 61 6c 75 65 20 23 27 67 70 74 l-temperature...:set-value.#'gpt
820e0 65 6c 2d 2d 73 65 74 2d 77 69 74 68 2d 73 63 6f 70 65 0a 20 20 3a 6b 65 79 20 22 2d 54 22 0a 20 el--set-with-scope...:key."-T"..
82100 20 3a 70 72 6f 6d 70 74 20 22 54 65 6d 70 65 72 61 74 75 72 65 20 63 6f 6e 74 72 6f 6c 73 20 74 .:prompt."Temperature.controls.t
82120 68 65 20 72 65 73 70 6f 6e 73 65 20 72 61 6e 64 6f 6d 6e 65 73 73 20 28 30 2e 30 2d 32 2e 30 2c he.response.randomness.(0.0-2.0,
82140 20 6c 65 61 76 65 20 65 6d 70 74 79 20 66 6f 72 20 41 50 49 20 64 65 66 61 75 6c 74 29 3a 20 22 .leave.empty.for.API.default):."
82160 0a 20 20 3a 72 65 61 64 65 72 20 27 67 70 74 65 6c 2d 2d 74 72 61 6e 73 69 65 6e 74 2d 72 65 61 ...:reader.'gptel--transient-rea
82180 64 2d 6e 75 6d 62 65 72 29 0a 0a 28 74 72 61 6e 73 69 65 6e 74 2d 64 65 66 69 6e 65 2d 69 6e 66 d-number)..(transient-define-inf
821a0 69 78 20 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 74 72 61 63 6b 2d 72 65 73 70 6f 6e 73 65 20 28 ix.gptel--infix-track-response.(
821c0 29 0a 20 20 22 44 69 73 74 69 6e 67 75 69 73 68 20 62 65 74 77 65 65 6e 20 75 73 65 72 20 6d 65 )..."Distinguish.between.user.me
821e0 73 73 61 67 65 73 20 61 6e 64 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 73 2e 0a 0a 57 68 65 6e 20 ssages.and.LLM.responses...When.
82200 63 72 65 61 74 69 6e 67 20 61 20 70 72 6f 6d 70 74 20 74 6f 20 73 65 6e 64 20 74 6f 20 74 68 65 creating.a.prompt.to.send.to.the
82220 20 4c 4c 4d 2c 20 67 70 74 65 6c 20 64 69 73 74 69 6e 67 75 69 73 68 65 73 0a 62 65 74 77 65 65 .LLM,.gptel.distinguishes.betwee
82240 6e 20 74 65 78 74 20 65 6e 74 65 72 65 64 20 62 79 20 74 68 65 20 75 73 65 72 20 61 6e 64 20 70 n.text.entered.by.the.user.and.p
82260 61 73 74 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 73 2e 20 20 54 68 69 73 20 69 73 0a 72 65 71 75 ast.LLM.responses...This.is.requ
82280 69 72 65 64 20 66 6f 72 20 6d 75 6c 74 69 2d 74 75 72 6e 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e ired.for.multi-turn.conversation
822a0 73 2c 20 61 6e 64 20 69 73 20 61 6c 77 61 79 73 20 74 68 65 20 63 61 73 65 20 69 6e 0a 64 65 64 s,.and.is.always.the.case.in.ded
822c0 69 63 61 74 65 64 20 63 68 61 74 20 62 75 66 66 65 72 73 20 28 69 6e 20 60 67 70 74 65 6c 2d 6d icated.chat.buffers.(in.`gptel-m
822e0 6f 64 65 27 29 2e 0a 0a 49 6e 20 72 65 67 75 6c 61 72 20 62 75 66 66 65 72 73 2c 20 79 6f 75 20 ode')...In.regular.buffers,.you.
82300 63 61 6e 20 74 6f 67 67 6c 65 20 74 68 69 73 20 62 65 68 61 76 69 6f 72 20 68 65 72 65 20 6f 72 can.toggle.this.behavior.here.or
82320 20 62 79 0a 63 75 73 74 6f 6d 69 7a 69 6e 67 20 60 67 70 74 65 6c 2d 74 72 61 63 6b 2d 72 65 73 .by.customizing.`gptel-track-res
82340 70 6f 6e 73 65 27 2e 20 20 57 68 65 6e 20 72 65 73 70 6f 6e 73 65 20 74 72 61 63 6b 69 6e 67 20 ponse'...When.response.tracking.
82360 69 73 0a 74 75 72 6e 65 64 20 6f 66 66 2c 20 61 6c 6c 20 74 65 78 74 20 77 69 6c 6c 20 62 65 20 is.turned.off,.all.text.will.be.
82380 61 73 73 69 67 6e 65 64 20 74 68 65 20 5c 22 75 73 65 72 5c 22 20 72 6f 6c 65 20 77 68 65 6e 0a assigned.the.\"user\".role.when.
823a0 71 75 65 72 79 69 6e 67 20 74 68 65 20 4c 4c 4d 2e 22 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f querying.the.LLM."...:descriptio
823c0 6e 20 22 54 72 61 63 6b 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 73 22 0a 20 20 3a 63 6c 61 73 73 n."Track.LLM.responses"...:class
823e0 20 27 67 70 74 65 6c 2d 2d 73 77 69 74 63 68 65 73 0a 20 20 3a 76 61 72 69 61 62 6c 65 20 27 67 .'gptel--switches...:variable.'g
82400 70 74 65 6c 2d 74 72 61 63 6b 2d 72 65 73 70 6f 6e 73 65 0a 20 20 3a 73 65 74 2d 76 61 6c 75 65 ptel-track-response...:set-value
82420 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
82440 6c 61 79 2d 69 66 2d 74 72 75 65 20 22 59 65 73 22 0a 20 20 3a 64 69 73 70 6c 61 79 2d 69 66 2d lay-if-true."Yes"...:display-if-
82460 66 61 6c 73 65 20 22 4e 6f 22 0a 20 20 3a 6b 65 79 20 22 2d 52 22 29 0a 0a 28 74 72 61 6e 73 69 false."No"...:key."-R")..(transi
82480 65 6e 74 2d 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 74 72 ent-define-infix.gptel--infix-tr
824a0 61 63 6b 2d 6d 65 64 69 61 20 28 29 0a 20 20 22 53 65 6e 64 20 6d 65 64 69 61 20 66 72 6f 6d 20 ack-media.()..."Send.media.from.
824c0 5c 22 73 74 61 6e 64 61 6c 6f 6e 65 5c 22 20 6c 69 6e 6b 73 20 69 6e 20 74 68 65 20 70 72 6f 6d \"standalone\".links.in.the.prom
824e0 70 74 2e 0a 0a 57 68 65 6e 20 74 68 65 20 61 63 74 69 76 65 20 60 67 70 74 65 6c 2d 6d 6f 64 65 pt...When.the.active.`gptel-mode
82500 6c 27 20 73 75 70 70 6f 72 74 73 20 69 74 2c 20 67 70 74 65 6c 20 63 61 6e 20 73 65 6e 64 20 69 l'.supports.it,.gptel.can.send.i
82520 6d 61 67 65 73 0a 6f 72 20 6f 74 68 65 72 20 6d 65 64 69 61 20 66 72 6f 6d 20 6c 69 6e 6b 73 20 mages.or.other.media.from.links.
82540 69 6e 20 74 68 65 20 62 75 66 66 65 72 20 74 6f 20 74 68 65 20 4c 4c 4d 2e 20 20 4f 6e 6c 79 0a in.the.buffer.to.the.LLM...Only.
82560 5c 22 73 74 61 6e 64 61 6c 6f 6e 65 5c 22 20 6c 69 6e 6b 73 20 61 72 65 20 63 6f 6e 73 69 64 65 \"standalone\".links.are.conside
82580 72 65 64 3a 20 74 68 65 73 65 20 61 72 65 20 6c 69 6e 6b 73 20 6f 6e 20 74 68 65 69 72 20 6f 77 red:.these.are.links.on.their.ow
825a0 6e 0a 6c 69 6e 65 20 77 69 74 68 20 6e 6f 20 73 75 72 72 6f 75 6e 64 69 6e 67 20 74 65 78 74 2e n.line.with.no.surrounding.text.
825c0 0a 0a 57 68 61 74 20 6c 69 6e 6b 20 74 79 70 65 73 20 61 72 65 20 73 65 6e 74 20 64 65 70 65 6e ..What.link.types.are.sent.depen
825e0 64 73 20 6f 6e 20 74 68 65 20 6d 69 6d 65 2d 74 79 70 65 73 20 74 68 65 20 6d 6f 64 65 6c 0a 73 ds.on.the.mime-types.the.model.s
82600 75 70 70 6f 72 74 73 2e 20 20 53 65 65 20 60 67 70 74 65 6c 2d 74 72 61 63 6b 2d 6d 65 64 69 61 upports...See.`gptel-track-media
82620 27 20 66 6f 72 20 6d 6f 72 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 22 0a 20 20 3a 64 65 73 63 '.for.more.information."...:desc
82640 72 69 70 74 69 6f 6e 20 22 53 65 6e 64 20 6d 65 64 69 61 20 66 72 6f 6d 20 6c 69 6e 6b 73 22 0a ription."Send.media.from.links".
82660 20 20 3a 63 6c 61 73 73 20 27 67 70 74 65 6c 2d 2d 73 77 69 74 63 68 65 73 0a 20 20 3a 76 61 72 ..:class.'gptel--switches...:var
82680 69 61 62 6c 65 20 27 67 70 74 65 6c 2d 74 72 61 63 6b 2d 6d 65 64 69 61 0a 20 20 3a 73 65 74 2d iable.'gptel-track-media...:set-
826a0 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 20 value.#'gptel--set-with-scope...
826c0 3a 64 69 73 70 6c 61 79 2d 69 66 2d 74 72 75 65 20 22 59 65 73 22 0a 20 20 3a 64 69 73 70 6c 61 :display-if-true."Yes"...:displa
826e0 79 2d 69 66 2d 66 61 6c 73 65 20 22 4e 6f 22 0a 20 20 3a 6b 65 79 20 22 2d 49 22 29 0a 0a 3b 3b y-if-false."No"...:key."-I")..;;
82700 20 2a 2a 20 49 6e 66 69 78 65 73 20 66 6f 72 20 61 64 64 69 6e 67 20 61 6e 64 20 72 65 6d 6f 76 .**.Infixes.for.adding.and.remov
82720 69 6e 67 20 63 6f 6e 74 65 78 74 0a 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 67 ing.context..(declare-function.g
82740 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61 74 2d 70 6f 69 6e 74 20 22 67 70 74 65 6c 2d 63 6f ptel-context--at-point."gptel-co
82760 6e 74 65 78 74 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 ntext").(declare-function.gptel-
82780 61 64 64 20 22 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 add."gptel-context").(declare-fu
827a0 6e 63 74 69 6f 6e 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 61 64 64 2d 63 75 72 72 65 6e 74 nction.gptel-context-add-current
827c0 2d 6b 69 6c 6c 20 22 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 22 29 0a 0a 28 74 72 61 6e 73 69 65 -kill."gptel-context")..(transie
827e0 6e 74 2d 64 65 66 69 6e 65 2d 73 75 66 66 69 78 20 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 63 6f nt-define-suffix.gptel--infix-co
82800 6e 74 65 78 74 2d 61 64 64 2d 63 75 72 72 65 6e 74 2d 6b 69 6c 6c 20 28 26 6f 70 74 69 6f 6e 61 ntext-add-current-kill.(&optiona
82820 6c 20 61 72 67 29 0a 20 20 22 41 64 64 20 63 75 72 72 65 6e 74 20 6b 69 6c 6c 20 74 6f 20 67 70 l.arg)..."Add.current.kill.to.gp
82840 74 65 6c 27 73 20 63 6f 6e 74 65 78 74 2e 22 0a 20 20 3a 74 72 61 6e 73 69 65 6e 74 20 27 74 72 tel's.context."...:transient.'tr
82860 61 6e 73 69 65 6e 74 2d 2d 64 6f 2d 73 74 61 79 0a 20 20 3a 6b 65 79 20 22 43 2d 79 22 0a 20 20 ansient--do-stay...:key."C-y"...
82880 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 6d 6d :if.(lambda.().gptel-expert-comm
828a0 61 6e 64 73 29 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 0a 20 20 22 59 61 6e 6b 20 74 6f 20 ands)...:description..."Yank.to.
828c0 63 6f 6e 74 65 78 74 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 20 22 50 22 29 0a 20 20 28 context"...(interactive."P")...(
828e0 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 61 64 64 2d 63 75 72 72 65 6e 74 2d 6b 69 6c 6c 20 61 gptel-context-add-current-kill.a
82900 72 67 29 0a 20 20 28 74 72 61 6e 73 69 65 6e 74 2d 73 65 74 75 70 29 29 0a 0a 28 74 72 61 6e 73 rg)...(transient-setup))..(trans
82920 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 69 6e 66 69 78 2d ient-define-suffix.gptel--infix-
82940 63 6f 6e 74 65 78 74 2d 61 64 64 2d 72 65 67 69 6f 6e 20 28 29 0a 20 20 22 41 64 64 20 63 75 72 context-add-region.()..."Add.cur
82960 72 65 6e 74 20 72 65 67 69 6f 6e 20 74 6f 20 67 70 74 65 6c 27 73 20 63 6f 6e 74 65 78 74 2e 22 rent.region.to.gptel's.context."
82980 0a 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 73 74 61 ...:transient.'transient--do-sta
829a0 79 0a 20 20 3a 6b 65 79 20 22 2d 72 22 0a 20 20 3a 69 66 20 28 6c 61 6d 62 64 61 20 28 29 20 28 y...:key."-r"...:if.(lambda.().(
829c0 6f 72 20 28 75 73 65 2d 72 65 67 69 6f 6e 2d 70 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 or.(use-region-p)...............
829e0 20 20 28 61 6e 64 20 28 66 62 6f 75 6e 64 70 20 27 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d ..(and.(fboundp.'gptel-context--
82a00 61 74 2d 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 28 at-point)......................(
82a20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61 74 2d 70 6f 69 6e 74 29 29 29 29 0a 20 20 3a 64 gptel-context--at-point))))...:d
82a40 65 73 63 72 69 70 74 69 6f 6e 0a 20 20 28 6c 61 6d 62 64 61 20 28 29 0a 20 20 20 20 28 69 66 20 escription...(lambda.().....(if.
82a60 28 61 6e 64 20 28 66 62 6f 75 6e 64 70 20 27 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61 74 (and.(fboundp.'gptel-context--at
82a80 2d 70 6f 69 6e 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 63 6f 6e 74 -point)..............(gptel-cont
82aa0 65 78 74 2d 2d 61 74 2d 70 6f 69 6e 74 29 29 0a 20 20 20 20 20 20 20 20 22 52 65 6d 6f 76 65 20 ext--at-point))........."Remove.
82ac0 63 6f 6e 74 65 78 74 20 61 74 20 70 6f 69 6e 74 22 0a 20 20 20 20 20 20 22 41 64 64 20 72 65 67 context.at.point"......."Add.reg
82ae0 69 6f 6e 20 74 6f 20 63 6f 6e 74 65 78 74 22 29 29 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 ion.to.context"))...(interactive
82b00 29 0a 20 20 28 67 70 74 65 6c 2d 61 64 64 29 0a 20 20 28 74 72 61 6e 73 69 65 6e 74 2d 73 65 74 )...(gptel-add)...(transient-set
82b20 75 70 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 66 69 78 20 67 up))..(transient-define-suffix.g
82b40 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 63 6f 6e 74 65 78 74 2d 61 64 64 2d 62 75 66 66 65 72 20 28 ptel--infix-context-add-buffer.(
82b60 29 0a 20 20 22 41 64 64 20 61 20 62 75 66 66 65 72 20 74 6f 20 67 70 74 65 6c 27 73 20 63 6f 6e )..."Add.a.buffer.to.gptel's.con
82b80 74 65 78 74 2e 22 0a 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 text."...:transient.'transient--
82ba0 64 6f 2d 73 74 61 79 0a 20 20 3a 6b 65 79 20 22 2d 62 22 0a 20 20 3a 64 65 73 63 72 69 70 74 69 do-stay...:key."-b"...:descripti
82bc0 6f 6e 20 22 41 64 64 20 61 20 62 75 66 66 65 72 20 74 6f 20 63 6f 6e 74 65 78 74 22 0a 20 20 28 on."Add.a.buffer.to.context"...(
82be0 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 28 67 70 74 65 6c 2d 61 64 64 20 27 28 34 29 29 0a interactive)...(gptel-add.'(4)).
82c00 20 20 28 74 72 61 6e 73 69 65 6e 74 2d 73 65 74 75 70 29 29 0a 0a 28 64 65 63 6c 61 72 65 2d 66 ..(transient-setup))..(declare-f
82c20 75 6e 63 74 69 6f 6e 20 67 70 74 65 6c 2d 61 64 64 2d 66 69 6c 65 20 22 67 70 74 65 6c 2d 63 6f unction.gptel-add-file."gptel-co
82c40 6e 74 65 78 74 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 ntext").(declare-function.gptel-
82c60 63 6f 6e 74 65 78 74 2d 72 65 6d 6f 76 65 2d 61 6c 6c 20 22 67 70 74 65 6c 2d 63 6f 6e 74 65 78 context-remove-all."gptel-contex
82c80 74 22 29 0a 0a 28 74 72 61 6e 73 69 65 6e 74 2d 64 65 66 69 6e 65 2d 73 75 66 66 69 78 20 67 70 t")..(transient-define-suffix.gp
82ca0 74 65 6c 2d 2d 69 6e 66 69 78 2d 63 6f 6e 74 65 78 74 2d 61 64 64 2d 66 69 6c 65 20 28 29 0a 20 tel--infix-context-add-file.()..
82cc0 20 22 41 64 64 20 61 20 66 69 6c 65 20 74 6f 20 67 70 74 65 6c 27 73 20 63 6f 6e 74 65 78 74 2e ."Add.a.file.to.gptel's.context.
82ce0 22 0a 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 73 74 "...:transient.'transient--do-st
82d00 61 79 0a 20 20 3a 6b 65 79 20 22 2d 66 22 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 41 ay...:key."-f"...:description."A
82d20 64 64 20 61 20 66 69 6c 65 20 74 6f 20 63 6f 6e 74 65 78 74 22 0a 20 20 28 69 6e 74 65 72 61 63 dd.a.file.to.context"...(interac
82d40 74 69 76 65 29 0a 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 tive)...(call-interactively.#'gp
82d60 74 65 6c 2d 61 64 64 2d 66 69 6c 65 29 0a 20 20 28 74 72 61 6e 73 69 65 6e 74 2d 73 65 74 75 70 tel-add-file)...(transient-setup
82d80 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 66 69 78 20 67 70 74 ))..(transient-define-suffix.gpt
82da0 65 6c 2d 2d 69 6e 66 69 78 2d 63 6f 6e 74 65 78 74 2d 72 65 6d 6f 76 65 2d 61 6c 6c 20 28 29 0a el--infix-context-remove-all.().
82dc0 20 20 22 43 6c 65 61 72 20 67 70 74 65 6c 27 73 20 63 6f 6e 74 65 78 74 2e 22 0a 20 20 3a 69 66 .."Clear.gptel's.context."...:if
82de0 20 28 6c 61 6d 62 64 61 20 28 29 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61 6c 69 73 74 .(lambda.().gptel-context--alist
82e00 29 0a 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 73 74 )...:transient.'transient--do-st
82e20 61 79 0a 20 20 3a 6b 65 79 20 22 2d 64 22 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 52 ay...:key."-d"...:description."R
82e40 65 6d 6f 76 65 20 61 6c 6c 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 28 67 70 emove.all"...(interactive)...(gp
82e60 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 72 65 6d 6f 76 65 2d 61 6c 6c 20 74 29 0a 20 20 28 74 72 61 tel-context-remove-all.t)...(tra
82e80 6e 73 69 65 6e 74 2d 73 65 74 75 70 29 29 0a 0a 3b 3b 20 2a 2a 20 49 6e 66 69 78 20 66 6f 72 20 nsient-setup))..;;.**.Infix.for.
82ea0 61 64 64 69 74 69 6f 6e 61 6c 20 64 69 72 65 63 74 69 76 65 0a 0a 28 74 72 61 6e 73 69 65 6e 74 additional.directive..(transient
82ec0 2d 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 -define-infix.gptel--infix-add-d
82ee0 69 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 irective.()..."Additional.direct
82f00 69 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 ive.intended.for.the.next.query.
82f20 6f 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 only...This.is.useful.to.define.
82f40 61 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 a.quick.task.on.top.of.a.more.ex
82f60 74 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 tensive.or.detailed.system.messa
82f80 67 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 ge...For.example,.with.code/text
82fa0 20 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 .selected:..-.Rewrite.this.funct
82fc0 69 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 ion.to.do.X.while.avoiding.Y..-.
82fe0 43 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 Change.the.tone.of.the.following
83000 20 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 .paragraph.to.be.more.direct...O
83020 72 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 r.in.an.extended.conversation:..
83040 2d 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 -.Phrase.you.next.response.in.te
83060 6e 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 n.words.or.less..-.Pretend.for.n
83080 6f 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 ow.that.you're.an.anthropologist
830a0 2e 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 ."...:class.'gptel-option-overla
830c0 69 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 id...;;.:variable.'gptel--instru
830e0 63 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 ctions...:display-nil.'none...:o
83100 76 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 verlay.nil...:argument.":"...:pr
83120 6f 6d 70 74 20 28 63 6f 6e 63 61 74 20 22 41 64 64 20 69 6e 73 74 72 75 63 74 69 6f 6e 73 20 66 ompt.(concat."Add.instructions.f
83140 6f 72 20 6e 65 78 74 20 72 65 71 75 65 73 74 20 6f 6e 6c 79 20 28 22 0a 20 20 20 20 20 20 20 20 or.next.request.only.(".........
83160 20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 2d 72 65 61 64 2d 77 69 74 68 2d 70 72 65 66 69 ..........gptel--read-with-prefi
83180 78 2d 68 65 6c 70 20 22 29 20 22 29 0a 20 20 3b 3b 20 54 4f 44 4f 3a 20 41 64 64 20 74 68 65 20 x-help.").")...;;.TODO:.Add.the.
831a0 61 62 69 6c 69 74 79 20 74 6f 20 65 64 69 74 20 74 68 69 73 20 69 6e 20 61 20 73 65 70 61 72 61 ability.to.edit.this.in.a.separa
831c0 74 65 20 62 75 66 66 65 72 2c 20 77 69 74 68 0a 20 20 3b 3b 20 60 67 70 74 65 6c 2d 2d 65 64 69 te.buffer,.with...;;.`gptel--edi
831e0 74 2d 64 69 72 65 63 74 69 76 65 27 2e 20 20 54 68 69 73 20 72 65 71 75 69 72 65 73 20 73 65 74 t-directive'...This.requires.set
83200 74 69 6e 67 20 75 70 20 67 70 74 65 6c 2d 6d 65 6e 75 20 77 69 74 68 20 74 68 65 0a 20 20 3b 3b ting.up.gptel-menu.with.the...;;
83220 20 72 65 73 75 6c 74 20 61 73 20 74 68 65 20 3a 73 63 6f 70 65 2e 0a 20 20 3a 72 65 61 64 65 72 .result.as.the.:scope....:reader
83240 20 28 6c 61 6d 62 64 61 20 28 70 72 6f 6d 70 74 20 69 6e 69 74 69 61 6c 20 68 69 73 74 6f 72 79 .(lambda.(prompt.initial.history
83260 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 64 69 72 65 63 74 69 76 65 0a ).............(let*.((directive.
83280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 61 72 2d 73 61 66 65 20 28 67 ....................(car-safe.(g
832a0 70 74 65 6c 2d 2d 70 61 72 73 65 2d 64 69 72 65 63 74 69 76 65 20 67 70 74 65 6c 2d 2d 73 79 73 ptel--parse-directive.gptel--sys
832c0 74 65 6d 2d 6d 65 73 73 61 67 65 20 27 72 61 77 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 tem-message.'raw))).............
832e0 20 20 20 20 20 20 20 28 63 79 63 6c 65 2d 70 72 65 66 69 78 20 28 6c 61 6d 62 64 61 20 28 29 20 .......(cycle-prefix.(lambda.().
83300 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (interactive)...................
83320 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 72 65 61 64 2d 77 69 .................(gptel--read-wi
83340 74 68 2d 70 72 65 66 69 78 20 64 69 72 65 63 74 69 76 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 th-prefix.directive)))..........
83360 20 20 20 20 20 20 20 20 20 20 28 6d 69 6e 69 62 75 66 66 65 72 2d 6c 6f 63 61 6c 2d 6d 61 70 0a ..........(minibuffer-local-map.
83380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 6b 65 2d 63 6f 6d 70 6f 73 ....................(make-compos
833a0 65 64 2d 6b 65 79 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 28 ed-keymap......................(
833c0 64 65 66 69 6e 65 2d 6b 65 79 6d 61 70 20 22 54 41 42 22 20 63 79 63 6c 65 2d 70 72 65 66 69 78 define-keymap."TAB".cycle-prefix
833e0 20 22 3c 74 61 62 3e 22 20 63 79 63 6c 65 2d 70 72 65 66 69 78 29 0a 20 20 20 20 20 20 20 20 20 ."<tab>".cycle-prefix)..........
83400 20 20 20 20 20 20 20 20 20 20 20 20 6d 69 6e 69 62 75 66 66 65 72 2d 6c 6f 63 61 6c 2d 6d 61 70 ............minibuffer-local-map
83420 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 78 74 72 61 20 28 6d 69 ))....................(extra.(mi
83440 6e 69 62 75 66 66 65 72 2d 77 69 74 68 2d 73 65 74 75 70 2d 68 6f 6f 6b 20 63 79 63 6c 65 2d 70 nibuffer-with-setup-hook.cycle-p
83460 72 65 66 69 78 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 refix...........................
83480 20 20 28 72 65 61 64 2d 73 74 72 69 6e 67 20 70 72 6f 6d 70 74 20 28 6f 72 20 69 6e 69 74 69 61 ..(read-string.prompt.(or.initia
834a0 6c 20 22 20 22 29 20 68 69 73 74 6f 72 79 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 l.".").history))))..............
834c0 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 74 72 61 29 20 .(unless.(string-empty-p.extra).
834e0 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 25 76 22 0a 20 extra)))...:format.".%k.%d.%v"..
83500 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 20 3a 64 65 73 .:key."d"...:argument.":"...:des
83520 63 72 69 70 74 69 6f 6e 20 22 41 64 64 20 69 6e 73 74 72 75 63 74 69 6f 6e 22 0a 20 20 3a 74 72 cription."Add.instruction"...:tr
83540 61 6e 73 69 65 6e 74 20 74 29 0a 0a 3b 3b 20 2a 2a 20 49 6e 66 69 78 20 66 6f 72 20 72 65 61 73 ansient.t)..;;.**.Infix.for.reas
83560 6f 6e 69 6e 67 20 62 6c 6f 63 6b 20 63 6f 6e 74 72 6f 6c 0a 0a 28 74 72 61 6e 73 69 65 6e 74 2d oning.block.control..(transient-
83580 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 69 6e 63 6c 75 64 define-infix.gptel--infix-includ
835a0 65 2d 72 65 61 73 6f 6e 69 6e 67 20 28 29 0a 20 20 22 48 6f 77 20 74 6f 20 68 61 6e 64 6c 65 20 e-reasoning.()..."How.to.handle.
835c0 72 65 61 73 6f 6e 69 6e 67 2f 74 68 69 6e 6b 69 6e 67 20 72 65 73 70 6f 6e 73 65 20 62 6c 6f 63 reasoning/thinking.response.bloc
835e0 6b 73 2e 0a 0a 53 6f 6d 65 20 4c 4c 4d 73 20 69 6e 63 6c 75 64 65 20 69 6e 20 74 68 65 69 72 20 ks...Some.LLMs.include.in.their.
83600 72 65 73 70 6f 6e 73 65 20 61 20 5c 22 74 68 69 6e 6b 69 6e 67 5c 22 20 73 65 63 74 69 6f 6e 2e response.a.\"thinking\".section.
83620 20 20 54 68 69 73 0a 74 65 78 74 20 69 6d 70 72 6f 76 65 73 20 74 68 65 20 71 75 61 6c 69 74 79 ..This.text.improves.the.quality
83640 20 6f 66 20 74 68 65 20 4c 4c 4d 27 73 20 66 69 6e 61 6c 20 6f 75 74 70 75 74 2c 20 62 75 74 20 .of.the.LLM's.final.output,.but.
83660 6d 61 79 20 6e 6f 74 0a 62 65 20 69 6e 74 65 72 65 73 74 69 6e 67 20 74 6f 20 79 6f 75 20 62 79 may.not.be.interesting.to.you.by
83680 20 69 74 73 65 6c 66 2e 0a 0a 59 6f 75 20 63 61 6e 20 63 6f 6e 74 72 6f 6c 20 68 6f 77 20 67 70 .itself...You.can.control.how.gp
836a0 74 65 6c 20 73 68 6f 75 6c 64 20 68 61 6e 64 6c 65 20 74 68 65 20 74 68 69 6e 6b 69 6e 67 20 62 tel.should.handle.the.thinking.b
836c0 6c 6f 63 6b 73 20 76 69 61 0a 74 68 69 73 20 6f 70 74 69 6f 6e 2c 20 6f 72 20 62 79 20 73 65 74 locks.via.this.option,.or.by.set
836e0 74 69 6e 67 20 74 68 65 20 76 61 72 69 61 62 6c 65 20 60 67 70 74 65 6c 2d 69 6e 63 6c 75 64 65 ting.the.variable.`gptel-include
83700 2d 72 65 61 73 6f 6e 69 6e 67 27 0a 76 69 61 20 65 6c 69 73 70 2c 20 77 68 69 63 68 20 73 65 65 -reasoning'.via.elisp,.which.see
83720 2e 0a 0a 41 76 61 69 6c 61 62 6c 65 20 62 65 68 61 76 69 6f 72 73 20 61 72 65 0a 2d 20 74 6f 20 ...Available.behaviors.are.-.to.
83740 69 6e 63 6c 75 64 65 20 74 68 69 6e 6b 69 6e 67 20 62 6c 6f 63 6b 73 20 77 69 74 68 20 74 68 65 include.thinking.blocks.with.the
83760 20 72 65 73 70 6f 6e 73 65 2c 0a 2d 20 74 6f 20 6f 6d 69 74 20 74 68 65 6d 20 65 6e 74 69 72 65 .response,.-.to.omit.them.entire
83780 6c 79 2c 0a 2d 20 74 6f 20 69 6e 63 6c 75 64 65 20 74 68 65 6d 20 62 75 74 20 69 67 6e 6f 72 65 ly,.-.to.include.them.but.ignore
837a0 20 74 68 65 6d 20 69 6e 20 63 6f 6e 73 65 71 75 65 6e 74 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e .them.in.consequent.conversation
837c0 20 74 75 72 6e 73 2c 20 61 6e 64 0a 2d 20 74 6f 20 61 70 70 65 6e 64 20 74 68 65 6d 20 74 6f 20 .turns,.and.-.to.append.them.to.
837e0 61 20 62 75 66 66 65 72 20 6f 66 20 79 6f 75 72 20 63 68 6f 6f 73 69 6e 67 2e 22 0a 20 20 3a 64 a.buffer.of.your.choosing."...:d
83800 65 73 63 72 69 70 74 69 6f 6e 20 22 49 6e 63 6c 75 64 65 20 72 65 61 73 6f 6e 69 6e 67 22 0a 20 escription."Include.reasoning"..
83820 20 3a 63 6c 61 73 73 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 .:class.'gptel-lisp-variable...:
83840 76 61 72 69 61 62 6c 65 20 27 67 70 74 65 6c 2d 69 6e 63 6c 75 64 65 2d 72 65 61 73 6f 6e 69 6e variable.'gptel-include-reasonin
83860 67 0a 20 20 3a 66 6f 72 6d 61 74 20 22 20 25 6b 20 25 64 20 25 76 22 0a 20 20 3a 73 65 74 2d 76 g...:format.".%k.%d.%v"...:set-v
83880 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 20 3a alue.#'gptel--set-with-scope...:
838a0 64 69 73 70 6c 61 79 2d 6e 69 6c 20 22 4e 6f 22 0a 20 20 3a 64 69 73 70 6c 61 79 2d 6d 61 70 20 display-nil."No"...:display-map.
838c0 27 28 28 6e 69 6c 20 20 20 20 2e 20 22 4e 6f 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 '((nil......"No")...............
838e0 20 20 20 28 69 67 6e 6f 72 65 20 2e 20 22 61 6e 64 20 69 67 6e 6f 72 65 22 29 0a 20 20 20 20 20 ...(ignore..."and.ignore")......
83900 20 20 20 20 20 20 20 20 20 20 20 20 28 74 20 20 20 20 20 20 2e 20 22 77 69 74 68 20 72 65 73 70 ............(t........"with.resp
83920 6f 6e 73 65 22 29 29 0a 20 20 3a 6b 65 79 20 22 2d 76 22 0a 20 20 3a 70 72 6f 6d 70 74 20 22 49 onse"))...:key."-v"...:prompt."I
83940 6e 63 6c 75 64 65 20 72 65 61 73 6f 6e 69 6e 67 3a 20 22 0a 20 20 3a 72 65 61 64 65 72 20 28 6c nclude.reasoning:."...:reader.(l
83960 61 6d 62 64 61 20 28 70 72 6f 6d 70 74 20 26 72 65 73 74 20 5f 29 0a 20 20 20 20 20 20 20 20 20 ambda.(prompt.&rest._)..........
83980 20 20 20 28 6c 65 74 2a 20 28 28 63 68 6f 69 63 65 73 20 27 28 28 22 6e 6f 22 20 20 20 20 20 2e ...(let*.((choices.'(("no"......
839a0 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 20 20 20 20 20 20 .nil)...........................
839c0 20 20 20 20 28 22 69 67 6e 6f 72 65 22 20 2e 20 69 67 6e 6f 72 65 29 0a 20 20 20 20 20 20 20 20 ....("ignore"...ignore).........
839e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 22 79 65 73 22 20 20 20 20 ......................("yes"....
83a00 2e 20 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 20 20 ..t)............................
83a20 20 20 20 28 22 6f 74 68 65 72 20 62 75 66 66 65 72 22 20 2e 20 62 75 66 66 65 72 29 29 29 0a 20 ...("other.buffer"...buffer)))..
83a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 65 73 74 69 6e 61 74 69 6f 6e 0a 20 ..................(destination..
83a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6d 70 6c 65 74 69 6e 67 2d 72 ...................(completing-r
83a80 65 61 64 20 70 72 6f 6d 70 74 20 63 68 6f 69 63 65 73 20 6e 69 6c 20 74 29 29 29 0a 20 20 20 20 ead.prompt.choices.nil.t))).....
83aa0 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 65 71 75 61 6c 20 64 65 73 74 69 6e 61 74 69 6f 6e ..........(if.(equal.destination
83ac0 20 22 6f 74 68 65 72 20 62 75 66 66 65 72 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ."other.buffer")................
83ae0 20 20 20 28 72 65 61 64 2d 62 75 66 66 65 72 20 22 41 70 70 65 6e 64 20 72 65 61 73 6f 6e 69 6e ...(read-buffer."Append.reasonin
83b00 67 20 74 6f 20 62 75 66 66 65 72 3a 20 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 g.to.buffer:.").................
83b20 28 63 64 72 20 28 61 73 73 6f 63 20 64 65 73 74 69 6e 61 74 69 6f 6e 20 63 68 6f 69 63 65 73 29 (cdr.(assoc.destination.choices)
83b40 29 29 29 29 29 0a 0a 3b 3b 20 2a 2a 20 49 6e 66 69 78 65 73 20 66 6f 72 20 74 6f 6f 6c 20 75 73 )))))..;;.**.Infixes.for.tool.us
83b60 65 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 e..(transient-define-infix.gptel
83b80 2d 2d 69 6e 66 69 78 2d 75 73 65 2d 74 6f 6f 6c 73 20 28 29 0a 20 20 22 57 68 65 74 68 65 72 20 --infix-use-tools.()..."Whether.
83ba0 4c 4c 4d 20 74 6f 6f 6c 20 75 73 65 20 77 69 74 68 20 67 70 74 65 6c 20 69 73 20 65 6e 61 62 6c LLM.tool.use.with.gptel.is.enabl
83bc0 65 64 2e 0a 0a 54 68 69 73 20 69 73 20 61 20 74 68 72 65 65 2d 77 61 79 20 74 6f 67 67 6c 65 2e ed...This.is.a.three-way.toggle.
83be0 20 20 41 73 73 75 6d 69 6e 67 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 74 6f 6f 6c 73 20 74 6f 20 ..Assuming.one.or.more.tools.to.
83c00 62 65 0a 73 65 6e 74 20 77 69 74 68 20 72 65 71 75 65 73 74 73 20 68 61 76 65 20 62 65 65 6e 20 be.sent.with.requests.have.been.
83c20 73 65 6c 65 63 74 65 64 2c 20 74 6f 6f 6c 20 75 73 65 20 63 61 6e 20 62 65 0a 0a 2d 20 64 69 73 selected,.tool.use.can.be..-.dis
83c40 61 62 6c 65 64 2c 0a 2d 20 65 6e 61 62 6c 65 64 2c 20 77 68 65 72 65 20 74 68 65 20 4c 4c 4d 20 abled,.-.enabled,.where.the.LLM.
83c60 6d 61 79 20 63 68 6f 6f 73 65 20 74 6f 20 72 65 73 70 6f 6e 64 20 77 69 74 68 20 74 6f 6f 6c 20 may.choose.to.respond.with.tool.
83c80 63 61 6c 6c 73 0a 2d 20 66 6f 72 63 65 64 2c 20 77 68 65 72 65 20 74 68 65 20 4c 4c 4d 20 6d 75 calls.-.forced,.where.the.LLM.mu
83ca0 73 74 20 72 65 73 70 6f 6e 64 20 77 69 74 68 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 74 6f 6f 6c st.respond.with.one.or.more.tool
83cc0 20 63 61 6c 6c 73 2e 0a 0a 59 6f 75 20 63 61 6e 20 73 65 74 20 74 68 69 73 20 68 65 72 65 20 6f .calls...You.can.set.this.here.o
83ce0 72 20 62 79 20 63 75 73 74 6f 6d 69 7a 69 6e 67 20 60 67 70 74 65 6c 2d 75 73 65 2d 74 6f 6f 6c r.by.customizing.`gptel-use-tool
83d00 73 27 2c 20 77 68 69 63 68 0a 73 65 65 2e 22 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 s',.which.see."...:description."
83d20 55 73 65 20 74 6f 6f 6c 73 22 0a 20 20 3a 63 6c 61 73 73 20 27 67 70 74 65 6c 2d 6c 69 73 70 2d Use.tools"...:class.'gptel-lisp-
83d40 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 75 73 65 2d variable...:variable.'gptel-use-
83d60 74 6f 6f 6c 73 0a 20 20 3a 73 65 74 2d 76 61 6c 75 65 20 28 6c 61 6d 62 64 61 20 28 73 79 6d 20 tools...:set-value.(lambda.(sym.
83d80 76 61 6c 75 65 20 73 63 6f 70 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 value.scope)................(gpt
83da0 65 6c 2d 2d 73 65 74 2d 77 69 74 68 2d 73 63 6f 70 65 20 73 79 6d 20 76 61 6c 75 65 20 73 63 6f el--set-with-scope.sym.value.sco
83dc0 70 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 72 61 6e 73 69 65 6e 74 2d 73 65 pe)................(transient-se
83de0 74 75 70 29 29 0a 20 20 3a 64 69 73 70 6c 61 79 2d 6e 69 6c 20 22 6f 66 66 22 0a 20 20 3a 64 69 tup))...:display-nil."off"...:di
83e00 73 70 6c 61 79 2d 6d 61 70 20 27 28 28 6e 69 6c 20 20 20 2e 20 22 6f 66 66 22 29 0a 20 20 20 20 splay-map.'((nil....."off").....
83e20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 20 20 20 20 20 2e 20 22 6f 6e 22 29 0a 20 20 20 20 .............(t......."on").....
83e40 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 63 65 20 2e 20 22 66 6f 72 63 65 22 29 29 0a .............(force..."force")).
83e60 20 20 3a 70 72 6f 6d 70 74 20 22 55 73 65 20 74 6f 6f 6c 73 3f 20 22 0a 20 20 3a 72 65 61 64 65 ..:prompt."Use.tools?."...:reade
83e80 72 20 28 6c 61 6d 62 64 61 20 28 70 72 6f 6d 70 74 20 26 72 65 73 74 20 5f 29 0a 20 20 20 20 20 r.(lambda.(prompt.&rest._)......
83ea0 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 63 68 6f 69 63 65 73 20 27 28 28 22 64 69 73 61 62 .......(let*.((choices.'(("disab
83ec0 6c 65 22 20 2e 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 20 le"...nil)......................
83ee0 20 20 20 20 20 20 20 20 20 28 22 65 6e 61 62 6c 65 22 20 20 2e 20 74 29 0a 20 20 20 20 20 20 20 .........("enable"....t)........
83f00 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 66 6f 72 63 65 22 20 .......................("force".
83f20 20 20 2e 20 66 6f 72 63 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ....force)))....................
83f40 28 70 72 65 66 20 28 63 6f 6d 70 6c 65 74 69 6e 67 2d 72 65 61 64 20 70 72 6f 6d 70 74 20 63 68 (pref.(completing-read.prompt.ch
83f60 6f 69 63 65 73 20 6e 69 6c 20 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 64 oices.nil.t)))...............(cd
83f80 72 20 28 61 73 73 6f 63 20 70 72 65 66 20 63 68 6f 69 63 65 73 29 29 29 29 0a 20 20 3a 6b 65 79 r.(assoc.pref.choices))))...:key
83fa0 20 22 2d 74 22 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 ."-t")..(transient-define-infix.
83fc0 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 63 6f 6e 66 69 72 6d 2d 74 6f 6f 6c 2d 63 61 6c 6c 73 20 gptel--infix-confirm-tool-calls.
83fe0 28 29 0a 20 20 22 57 68 65 74 68 65 72 20 74 6f 6f 6c 20 63 61 6c 6c 73 20 73 68 6f 75 6c 64 20 ()..."Whether.tool.calls.should.
84000 77 61 69 74 20 66 6f 72 20 74 68 65 20 75 73 65 72 20 74 6f 20 72 75 6e 20 74 68 65 6d 2e 0a 0a wait.for.the.user.to.run.them...
84020 54 68 69 73 20 69 73 20 61 20 74 68 72 65 65 2d 77 61 79 20 74 6f 67 67 6c 65 20 62 65 74 77 65 This.is.a.three-way.toggle.betwe
84040 65 6e 20 74 68 65 73 65 20 62 65 68 61 76 69 6f 72 73 3a 0a 0a 2d 20 41 6c 6c 20 74 6f 6f 6c 20 en.these.behaviors:..-.All.tool.
84060 63 61 6c 6c 73 20 72 75 6e 20 77 69 74 68 6f 75 74 20 63 6f 6e 66 69 72 6d 61 74 69 6f 6e 2e 0a calls.run.without.confirmation..
84080 2d 20 41 6c 6c 20 74 6f 6f 6c 20 63 61 6c 6c 73 20 77 61 69 74 20 66 6f 72 20 63 6f 6e 66 69 72 -.All.tool.calls.wait.for.confir
840a0 6d 61 74 69 6f 6e 2e 0a 2d 20 44 65 63 69 64 65 64 20 70 65 72 2d 74 6f 6f 6c 2c 20 61 63 63 6f mation..-.Decided.per-tool,.acco
840c0 72 64 69 6e 67 20 74 6f 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 74 6f 6f 6c 20 73 rding.to.the.value.of.the.tool.s
840e0 70 65 63 27 73 0a 20 20 3a 63 6f 6e 66 69 72 6d 20 73 6c 6f 74 2e 0a 0a 54 68 69 73 20 73 65 74 pec's...:confirm.slot...This.set
84100 73 20 74 68 65 20 76 61 72 69 61 62 6c 65 20 60 67 70 74 65 6c 2d 63 6f 6e 66 69 72 6d 2d 74 6f s.the.variable.`gptel-confirm-to
84120 6f 6c 2d 63 61 6c 6c 73 27 2c 20 77 68 69 63 68 20 73 65 65 2e 22 0a 20 20 3a 6b 65 79 20 22 2d ol-calls',.which.see."...:key."-
84140 63 22 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 43 6f 6e 66 69 72 6d 20 74 6f 6f 6c 20 c"...:description."Confirm.tool.
84160 63 61 6c 6c 73 22 0a 20 20 3a 63 6c 61 73 73 20 27 67 70 74 65 6c 2d 6c 69 73 70 2d 76 61 72 69 calls"...:class.'gptel-lisp-vari
84180 61 62 6c 65 0a 20 20 3a 76 61 72 69 61 62 6c 65 20 27 67 70 74 65 6c 2d 63 6f 6e 66 69 72 6d 2d able...:variable.'gptel-confirm-
841a0 74 6f 6f 6c 2d 63 61 6c 6c 73 0a 20 20 3a 73 65 74 2d 76 61 6c 75 65 20 23 27 67 70 74 65 6c 2d tool-calls...:set-value.#'gptel-
841c0 2d 73 65 74 2d 77 69 74 68 2d 73 63 6f 70 65 0a 20 20 3a 64 69 73 70 6c 61 79 2d 6e 69 6c 20 22 -set-with-scope...:display-nil."
841e0 6e 65 76 65 72 22 0a 20 20 3a 64 69 73 70 6c 61 79 2d 6d 61 70 20 27 28 28 6e 69 6c 20 2e 20 22 never"...:display-map.'((nil..."
84200 6e 65 76 65 72 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 20 20 20 2e 20 never")..................(t.....
84220 22 61 6c 77 61 79 73 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 75 74 6f "always")..................(auto
84240 20 2e 20 22 61 75 74 6f 22 29 29 0a 20 20 3a 70 72 6f 6d 70 74 20 22 54 6f 6f 6c 20 63 61 6c 6c ..."auto"))...:prompt."Tool.call
84260 73 20 72 65 71 75 69 72 65 20 63 6f 6e 66 69 72 6d 61 74 69 6f 6e 3f 20 22 0a 20 20 3a 72 65 61 s.require.confirmation?."...:rea
84280 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 20 5f 29 0a 20 20 20 der.(lambda.(prompt.&rest._)....
842a0 20 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 63 68 6f 69 63 65 73 20 27 28 28 22 6e 6f 22 .........(let*.((choices.'(("no"
842c0 20 20 20 2e 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 20 20 .....nil).......................
842e0 20 20 20 20 20 20 20 20 28 22 61 6c 77 61 79 73 22 20 2e 20 74 29 0a 20 20 20 20 20 20 20 20 20 ........("always"...t)..........
84300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 22 74 6f 6f 6c 20 64 65 63 69 .....................("tool.deci
84320 64 65 73 22 20 2e 20 61 75 74 6f 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 des"...auto)))..................
84340 20 20 28 70 72 65 66 20 28 63 6f 6d 70 6c 65 74 69 6e 67 2d 72 65 61 64 20 70 72 6f 6d 70 74 20 ..(pref.(completing-read.prompt.
84360 63 68 6f 69 63 65 73 20 6e 69 6c 20 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 choices.nil.t)))...............(
84380 63 64 72 20 28 61 73 73 6f 63 20 70 72 65 66 20 63 68 6f 69 63 65 73 29 29 29 29 29 0a 0a 28 74 cdr.(assoc.pref.choices)))))..(t
843a0 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 2d 2d 69 6e 66 ransient-define-infix.gptel--inf
843c0 69 78 2d 69 6e 63 6c 75 64 65 2d 74 6f 6f 6c 2d 72 65 73 75 6c 74 73 20 28 29 0a 20 20 22 57 68 ix-include-tool-results.()..."Wh
843e0 65 74 68 65 72 20 74 6f 6f 6c 20 63 61 6c 6c 20 72 65 73 75 6c 74 73 20 73 68 6f 75 6c 64 20 62 ether.tool.call.results.should.b
84400 65 20 69 6e 63 6c 75 64 65 64 20 69 6e 20 74 68 65 20 72 65 73 70 6f 6e 73 65 2e 0a 0a 54 68 69 e.included.in.the.response...Thi
84420 73 20 69 73 20 61 20 74 68 72 65 65 2d 77 61 79 20 74 6f 67 67 6c 65 20 62 65 74 77 65 65 6e 20 s.is.a.three-way.toggle.between.
84440 74 68 65 73 65 20 62 65 68 61 76 69 6f 72 73 3a 0a 0a 2d 20 41 6c 6c 20 74 6f 6f 6c 20 72 65 73 these.behaviors:..-.All.tool.res
84460 75 6c 74 73 20 61 72 65 20 69 6e 63 6c 75 64 65 64 2e 0a 2d 20 4e 6f 20 74 6f 6f 6c 20 72 65 73 ults.are.included..-.No.tool.res
84480 75 6c 74 73 20 61 72 65 20 69 6e 63 6c 75 64 65 64 2e 0a 2d 20 44 65 63 69 64 65 64 20 70 65 72 ults.are.included..-.Decided.per
844a0 2d 74 6f 6f 6c 2c 20 61 63 63 6f 72 64 69 6e 67 20 74 6f 20 74 68 65 20 76 61 6c 75 65 20 6f 66 -tool,.according.to.the.value.of
844c0 20 74 68 65 20 74 6f 6f 6c 20 73 70 65 63 27 73 0a 20 20 3a 69 6e 63 6c 75 64 65 20 73 6c 6f 74 .the.tool.spec's...:include.slot
844e0 2e 0a 0a 54 68 69 73 20 73 65 74 73 20 74 68 65 20 76 61 72 69 61 62 6c 65 20 60 67 70 74 65 6c ...This.sets.the.variable.`gptel
84500 2d 69 6e 63 6c 75 64 65 2d 74 6f 6f 6c 2d 72 65 73 75 6c 74 73 27 2c 20 77 68 69 63 68 20 73 65 -include-tool-results',.which.se
84520 65 2e 22 0a 20 20 3a 6b 65 79 20 22 2d 69 22 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 e."...:key."-i"...:description."
84540 49 6e 63 6c 75 64 65 20 72 65 73 75 6c 74 73 20 20 20 22 0a 20 20 3a 63 6c 61 73 73 20 27 67 70 Include.results..."...:class.'gp
84560 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
84580 70 74 65 6c 2d 69 6e 63 6c 75 64 65 2d 74 6f 6f 6c 2d 72 65 73 75 6c 74 73 0a 20 20 3a 73 65 74 ptel-include-tool-results...:set
845a0 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..
845c0 20 3a 64 69 73 70 6c 61 79 2d 6e 69 6c 20 22 6e 65 76 65 72 22 0a 20 20 3a 64 69 73 70 6c 61 79 .:display-nil."never"...:display
845e0 2d 6d 61 70 20 27 28 28 6e 69 6c 20 2e 20 22 6e 65 76 65 72 22 29 0a 20 20 20 20 20 20 20 20 20 -map.'((nil..."never")..........
84600 20 20 20 20 20 20 20 20 28 74 20 20 20 2e 20 22 61 6c 77 61 79 73 22 29 0a 20 20 20 20 20 20 20 ........(t....."always")........
84620 20 20 20 20 20 20 20 20 20 20 28 61 75 74 6f 20 2e 20 22 61 75 74 6f 22 29 29 0a 20 20 3a 70 72 ..........(auto..."auto"))...:pr
84640 6f 6d 70 74 20 22 49 6e 63 6c 75 64 65 20 74 6f 6f 6c 20 72 65 73 75 6c 74 73 20 69 6e 20 4c 4c ompt."Include.tool.results.in.LL
84660 4d 20 72 65 73 70 6f 6e 73 65 3f 20 22 0a 20 20 3a 72 65 61 64 65 72 20 28 6c 61 6d 62 64 61 20 M.response?."...:reader.(lambda.
84680 28 70 72 6f 6d 70 74 20 26 72 65 73 74 20 5f 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 (prompt.&rest._).............(le
846a0 74 2a 20 28 28 63 68 6f 69 63 65 73 20 27 28 28 22 6e 65 76 65 72 22 20 20 20 2e 20 6e 69 6c 29 t*.((choices.'(("never".....nil)
846c0 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 28 ...............................(
846e0 22 61 6c 77 61 79 73 22 20 2e 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 "always"...t)...................
84700 20 20 20 20 20 20 20 20 20 20 20 20 28 22 74 6f 6f 6c 20 64 65 63 69 64 65 73 22 20 2e 20 61 75 ............("tool.decides"...au
84720 74 6f 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 65 66 20 28 to)))....................(pref.(
84740 63 6f 6d 70 6c 65 74 69 6e 67 2d 72 65 61 64 20 70 72 6f 6d 70 74 20 63 68 6f 69 63 65 73 20 6e completing-read.prompt.choices.n
84760 69 6c 20 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 64 72 20 28 61 73 73 6f il.t)))...............(cdr.(asso
84780 63 20 70 72 65 66 20 63 68 6f 69 63 65 73 29 29 29 29 29 0a 0a 0c 0a 3b 3b 20 2a 20 54 72 61 6e c.pref.choices)))))....;;.*.Tran
847a0 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 74 6f 20 sient.Suffixes..;;.**.Suffix.to.
847c0 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 65 2d 73 send.prompt..(transient-define-s
847e0 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 73 29 0a uffix.gptel--suffix-send.(args).
84800 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 20 3a 64 .."Send.ARGS."...:key."RET"...:d
84820 65 73 63 72 69 70 74 69 6f 6e 20 23 27 67 70 74 65 6c 2d 2d 64 65 73 63 72 69 62 65 2d 73 75 66 escription.#'gptel--describe-suf
84840 66 69 78 2d 73 65 6e 64 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 20 28 6c 69 73 74 20 28 74 fix-send...(interactive.(list.(t
84860 72 61 6e 73 69 65 6e 74 2d 61 72 67 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ransient-args...................
84880 20 20 20 20 28 6f 72 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 ....(or.transient-current-comman
848a0 64 20 27 67 70 74 65 6c 2d 6d 65 6e 75 29 29 29 29 0a 20 20 28 6c 65 74 20 28 28 73 74 72 65 61 d.'gptel-menu))))...(let.((strea
848c0 6d 20 67 70 74 65 6c 2d 73 74 72 65 61 6d 29 0a 20 20 20 20 20 20 20 20 28 69 6e 2d 70 6c 61 63 m.gptel-stream).........(in-plac
848e0 65 20 28 61 6e 64 20 28 6d 65 6d 62 65 72 20 22 69 22 20 61 72 67 73 29 20 74 29 29 0a 20 20 20 e.(and.(member."i".args).t))....
84900 20 20 20 20 20 28 6f 75 74 70 75 74 2d 74 6f 2d 6f 74 68 65 72 2d 62 75 66 66 65 72 2d 70 29 0a .....(output-to-other-buffer-p).
84920 20 20 20 20 20 20 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 ........(backend.gptel-backend).
84940 20 20 20 20 20 20 20 20 28 6d 6f 64 65 6c 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 29 0a 20 20 20 20 ........(model.gptel-model).....
84960 20 20 20 20 28 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 ....(backend-name.(gptel-backend
84980 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 20 20 20 20 28 62 -name.gptel-backend)).........(b
849a0 75 66 66 65 72 29 20 28 70 6f 73 69 74 69 6f 6e 29 0a 20 20 20 20 20 20 20 20 28 63 61 6c 6c 62 uffer).(position).........(callb
849c0 61 63 6b 29 20 28 67 70 74 65 6c 2d 62 75 66 66 65 72 2d 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 ack).(gptel-buffer-name)........
849e0 20 28 73 79 73 74 65 6d 2d 65 78 74 72 61 20 28 67 70 74 65 6c 2d 2d 67 65 74 2d 64 69 72 65 63 .(system-extra.(gptel--get-direc
84a00 74 69 76 65 20 61 72 67 73 29 29 0a 20 20 20 20 20 20 20 20 28 64 72 79 2d 72 75 6e 20 28 61 6e tive.args)).........(dry-run.(an
84a20 64 20 28 6d 65 6d 62 65 72 20 22 49 22 20 61 72 67 73 29 20 74 29 29 0a 20 20 20 20 20 20 20 20 d.(member."I".args).t)).........
84a40 3b 3b 20 49 6e 70 75 74 20 72 65 64 69 72 65 63 74 69 6f 6e 3a 20 67 72 61 62 20 70 72 6f 6d 70 ;;.Input.redirection:.grab.promp
84a60 74 20 66 72 6f 6d 20 65 6c 73 65 77 68 65 72 65 3f 0a 20 20 20 20 20 20 20 20 28 70 72 6f 6d 70 t.from.elsewhere?.........(promp
84a80 74 0a 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 28 28 6d 65 6d t..........(cond...........((mem
84aa0 62 65 72 20 22 6d 22 20 61 72 67 73 29 20 28 67 70 74 65 6c 2d 2d 72 65 61 64 2d 6d 69 6e 69 62 ber."m".args).(gptel--read-minib
84ac0 75 66 66 65 72 2d 70 72 6f 6d 70 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 28 6d 65 6d 62 65 uffer-prompt))...........((membe
84ae0 72 20 22 79 22 20 61 72 67 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 r."y".args)............(unless.(
84b00 63 61 72 2d 73 61 66 65 20 6b 69 6c 6c 2d 72 69 6e 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 car-safe.kill-ring).............
84b20 20 28 75 73 65 72 2d 65 72 72 6f 72 20 22 60 6b 69 6c 6c 2d 72 69 6e 67 27 20 69 73 20 65 6d 70 .(user-error."`kill-ring'.is.emp
84b40 74 79 21 20 20 4e 6f 74 68 69 6e 67 20 74 6f 20 73 65 6e 64 22 29 29 0a 20 20 20 20 20 20 20 20 ty!..Nothing.to.send")).........
84b60 20 20 20 28 69 66 20 63 75 72 72 65 6e 74 2d 70 72 65 66 69 78 2d 61 72 67 0a 20 20 20 20 20 20 ...(if.current-prefix-arg.......
84b80 20 20 20 20 20 20 20 20 20 28 72 65 61 64 2d 66 72 6f 6d 2d 6b 69 6c 6c 2d 72 69 6e 67 20 22 50 .........(read-from-kill-ring."P
84ba0 72 6f 6d 70 74 20 66 72 6f 6d 20 6b 69 6c 6c 2d 72 69 6e 67 3a 20 22 29 0a 20 20 20 20 20 20 20 rompt.from.kill-ring:.")........
84bc0 20 20 20 20 20 20 28 63 75 72 72 65 6e 74 2d 6b 69 6c 6c 20 30 29 29 29 29 29 29 0a 0a 20 20 20 ......(current-kill.0)))))).....
84be0 20 3b 3b 20 4f 75 74 70 75 74 20 72 65 64 69 72 65 63 74 69 6f 6e 3a 20 53 65 6e 64 20 72 65 73 .;;.Output.redirection:.Send.res
84c00 70 6f 6e 73 65 20 65 6c 73 65 77 68 65 72 65 3f 0a 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 ponse.elsewhere?.....(cond......
84c20 28 28 6d 65 6d 62 65 72 20 22 65 22 20 61 72 67 73 29 0a 20 20 20 20 20 20 28 73 65 74 71 20 73 ((member."e".args).......(setq.s
84c40 74 72 65 61 6d 20 6e 69 6c 29 0a 20 20 20 20 20 20 28 73 65 74 71 20 63 61 6c 6c 62 61 63 6b 0a tream.nil).......(setq.callback.
84c60 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 72 65 73 70 20 69 6e 66 6f 20 26 ............(lambda.(resp.info.&
84c80 6f 70 74 69 6f 6e 61 6c 20 5f 72 61 77 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 63 optional._raw)...............(pc
84ca0 61 73 65 20 72 65 73 70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 70 72 65 64 20 ase.resp.................((pred.
84cc0 73 74 72 69 6e 67 70 29 20 28 6d 65 73 73 61 67 65 20 22 25 73 20 72 65 73 70 6f 6e 73 65 3a 20 stringp).(message."%s.response:.
84ce0 25 73 22 20 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 20 72 65 73 70 29 29 0a 20 20 20 20 20 20 20 20 %s".backend-name.resp)).........
84d00 20 20 20 20 20 20 20 20 28 60 28 74 6f 6f 6c 2d 63 61 6c 6c 20 2e 20 2c 74 6f 6f 6c 2d 63 61 6c ........(`(tool-call...,tool-cal
84d20 6c 73 29 20 28 67 70 74 65 6c 2d 2d 64 69 73 70 6c 61 79 2d 74 6f 6f 6c 2d 63 61 6c 6c 73 20 74 ls).(gptel--display-tool-calls.t
84d40 6f 6f 6c 2d 63 61 6c 6c 73 20 69 6e 66 6f 20 27 6d 69 6e 69 62 75 66 66 65 72 29 29 0a 20 20 20 ool-calls.info.'minibuffer))....
84d60 20 20 20 20 20 20 20 20 20 20 20 20 20 28 60 28 74 6f 6f 6c 2d 72 65 73 75 6c 74 20 2e 20 2c 74 .............(`(tool-result...,t
84d80 6f 6f 6c 2d 72 65 73 75 6c 74 73 29 20 28 67 70 74 65 6c 2d 2d 64 69 73 70 6c 61 79 2d 74 6f 6f ool-results).(gptel--display-too
84da0 6c 2d 72 65 73 75 6c 74 73 20 74 6f 6f 6c 2d 72 65 73 75 6c 74 73 20 69 6e 66 6f 29 29 0a 20 20 l-results.tool-results.info))...
84dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 5f 20 28 77 68 65 6e 20 28 61 6e 64 20 28 6e 75 6c ..............(_.(when.(and.(nul
84de0 6c 20 72 65 73 70 29 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 65 72 72 6f 72 29 29 l.resp).(plist-get.info.:error))
84e00 0a 20 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 61 67 65 20 22 ......................(message."
84e20 25 73 20 72 65 73 70 6f 6e 73 65 20 65 72 72 6f 72 3a 20 25 73 22 0a 20 20 20 20 20 20 20 20 20 %s.response.error:.%s"..........
84e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 61 63 6b 65 6e 64 2d 6e 61 6d .....................backend-nam
84e60 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 29 29 29 29 29 29 29 e.(plist-get.info.:status)))))))
84e80 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 20 20 20 20 20 )......((member."k".args).......
84ea0 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 74 71 20 63 61 (setq.stream.nil).......(setq.ca
84ec0 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 28 72 65 73 70 llback.............(lambda.(resp
84ee0 20 69 6e 66 6f 20 26 6f 70 74 69 6f 6e 61 6c 20 5f 72 61 77 29 0a 20 20 20 20 20 20 20 20 20 20 .info.&optional._raw)...........
84f00 20 20 20 20 28 70 63 61 73 65 20 72 65 73 70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ....(pcase.resp.................
84f20 28 28 70 72 65 64 20 73 74 72 69 6e 67 70 29 20 28 6b 69 6c 6c 2d 6e 65 77 20 72 65 73 70 29 0a ((pred.stringp).(kill-new.resp).
84f40 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 25 73 20 72 65 .................(message."%s.re
84f60 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 72 69 sponse:.\"%s\".copied.to.kill-ri
84f80 6e 67 2e 22 20 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 ng.".backend-name...............
84fa0 20 20 20 20 20 20 20 20 20 20 20 20 28 74 72 75 6e 63 61 74 65 2d 73 74 72 69 6e 67 2d 74 6f 2d ............(truncate-string-to-
84fc0 77 69 64 74 68 20 72 65 73 70 20 33 30 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 width.resp.30)))................
84fe0 20 28 60 28 74 6f 6f 6c 2d 63 61 6c 6c 20 2e 20 2c 74 6f 6f 6c 2d 63 61 6c 6c 73 29 20 28 67 70 .(`(tool-call...,tool-calls).(gp
85000 74 65 6c 2d 2d 64 69 73 70 6c 61 79 2d 74 6f 6f 6c 2d 63 61 6c 6c 73 20 74 6f 6f 6c 2d 63 61 6c tel--display-tool-calls.tool-cal
85020 6c 73 20 69 6e 66 6f 20 27 6d 69 6e 69 62 75 66 66 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 ls.info.'minibuffer))...........
85040 20 20 20 20 20 20 28 60 28 74 6f 6f 6c 2d 72 65 73 75 6c 74 20 2e 20 2c 74 6f 6f 6c 2d 72 65 73 ......(`(tool-result...,tool-res
85060 75 6c 74 73 29 20 28 67 70 74 65 6c 2d 2d 64 69 73 70 6c 61 79 2d 74 6f 6f 6c 2d 72 65 73 75 6c ults).(gptel--display-tool-resul
85080 74 73 20 74 6f 6f 6c 2d 72 65 73 75 6c 74 73 20 69 6e 66 6f 29 29 0a 20 20 20 20 20 20 20 20 20 ts.tool-results.info))..........
850a0 20 20 20 20 20 20 20 28 5f 20 28 77 68 65 6e 20 28 61 6e 64 20 28 6e 75 6c 6c 20 72 65 73 70 29 .......(_.(when.(and.(null.resp)
850c0 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 65 72 72 6f 72 29 29 0a 20 20 20 20 20 20 .(plist-get.info.:error)).......
850e0 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 72 65 73 70 ...............(message."%s.resp
85100 6f 6e 73 65 20 65 72 72 6f 72 3a 20 25 73 22 20 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 0a 20 20 20 onse.error:.%s".backend-name....
85120 20 20 20 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 6c 69 73 ...........................(plis
85140 74 2d 67 65 74 20 69 6e 66 6f 20 3a 73 74 61 74 75 73 29 29 29 29 29 29 29 29 0a 20 20 20 20 20 t-get.info.:status))))))))......
85160 28 28 73 65 74 71 20 67 70 74 65 6c 2d 62 75 66 66 65 72 2d 6e 61 6d 65 0a 20 20 20 20 20 20 20 ((setq.gptel-buffer-name........
85180 20 20 20 20 20 28 63 6c 2d 73 6f 6d 65 20 28 6c 61 6d 62 64 61 20 28 73 29 20 28 61 6e 64 20 28 .....(cl-some.(lambda.(s).(and.(
851a0 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 2d 70 20 22 67 22 20 stringp.s).(string-prefix-p."g".
851c0 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 20 20 20 s)..............................
851e0 20 20 20 20 28 73 75 62 73 74 72 69 6e 67 20 73 20 31 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 ....(substring.s.1)))...........
85200 20 20 20 20 20 20 20 20 20 20 20 61 72 67 73 29 29 0a 20 20 20 20 20 20 28 73 65 74 71 20 6f 75 ...........args)).......(setq.ou
85220 74 70 75 74 2d 74 6f 2d 6f 74 68 65 72 2d 62 75 66 66 65 72 2d 70 20 74 29 0a 20 20 20 20 20 20 tput-to-other-buffer-p.t).......
85240 28 6c 65 74 2a 20 28 28 72 65 64 75 63 65 64 2d 70 72 6f 6d 70 74 20 20 20 20 20 20 20 20 20 20 (let*.((reduced-prompt..........
85260 20 20 3b 46 6f 72 20 69 6e 73 65 72 74 69 6e 67 20 69 6e 74 6f 20 74 68 65 20 67 70 74 65 6c 20 ..;For.inserting.into.the.gptel.
85280 62 75 66 66 65 72 20 61 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 buffer.as.......................
852a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 63 6f 6e 74 65 78 74 2c 20 6e 6f 74 20 ..................;context,.not.
852c0 74 68 65 20 70 72 6f 6d 70 74 20 75 73 65 64 20 66 6f 72 20 74 68 65 0a 20 20 20 20 20 20 20 20 the.prompt.used.for.the.........
852e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
85300 3b 72 65 71 75 65 73 74 20 69 74 73 65 6c 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f ;request.itself...............(o
85320 72 20 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 28 69 66 20 28 r.prompt...................(if.(
85340 75 73 65 2d 72 65 67 69 6f 6e 2d 70 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 use-region-p)...................
85360 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 65 72 74 ....(buffer-substring-no-propert
85380 69 65 73 20 28 72 65 67 69 6f 6e 2d 62 65 67 69 6e 6e 69 6e 67 29 0a 20 20 20 20 20 20 20 20 20 ies.(region-beginning)..........
853a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
853c0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 67 69 6f 6e 2d 65 6e 64 29 29 0a 20 20 20 20 20 .............(region-end))......
853e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 ...............(buffer-substring
85400 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..................
85420 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.............
85440 20 20 20 20 20 20 20 20 20 20 20 28 74 65 78 74 2d 70 72 6f 70 65 72 74 79 2d 73 65 61 72 63 68 ...........(text-property-search
85460 2d 62 61 63 6b 77 61 72 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -backward.......................
85480 20 20 27 67 70 74 65 6c 20 27 72 65 73 70 6f 6e 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ..'gptel.'response..............
854a0 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 67 65 74 2d 63 68 61 72 2d 70 72 6f 70 65 ...........(when.(get-char-prope
854c0 72 74 79 20 28 6d 61 78 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28 31 2d 20 28 70 6f 69 6e 74 29 rty.(max.(point-min).(1-.(point)
854e0 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 20 ))..............................
85500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 67 70 74 65 6c 29 0a 20 20 20 20 ....................'gptel).....
85520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 29 29 0a 20 20 20 20 20 20 ......................t)).......
85540 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 0a 20 20 20 20 20 20 .................(point)).......
85560 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 77 6f 72 64 2d 65 ...............(gptel--at-word-e
85580 6e 64 20 28 70 6f 69 6e 74 29 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 nd.(point))))))..............(gp
855a0 74 65 6c 2d 62 75 66 66 65 72 20 28 67 65 74 2d 62 75 66 66 65 72 20 67 70 74 65 6c 2d 62 75 66 tel-buffer.(get-buffer.gptel-buf
855c0 66 65 72 2d 6e 61 6d 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 62 fer-name))..............(gptel-b
855e0 75 66 66 65 72 2d 6d 6f 64 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 62 75 uffer-mode...............(if.(bu
85600 66 66 65 72 2d 6c 69 76 65 2d 70 20 67 70 74 65 6c 2d 62 75 66 66 65 72 29 0a 20 20 20 20 20 20 ffer-live-p.gptel-buffer).......
85620 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 2d 6c 6f 63 61 6c 2d 76 61 6c 75 65 20 ............(buffer-local-value.
85640 27 6d 61 6a 6f 72 2d 6d 6f 64 65 20 67 70 74 65 6c 2d 62 75 66 66 65 72 29 0a 20 20 20 20 20 20 'major-mode.gptel-buffer).......
85660 20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 64 65 66 61 75 6c 74 2d 6d 6f 64 65 29 29 29 0a ..........gptel-default-mode))).
85680 20 20 20 20 20 20 20 20 3b 3b 20 41 64 64 20 63 6f 64 65 20 66 65 6e 63 65 73 20 6f 72 20 4f 72 ........;;.Add.code.fences.or.Or
856a0 67 20 73 72 63 20 6d 61 72 6b 65 72 73 20 61 72 6f 75 6e 64 20 74 68 65 20 72 65 64 75 63 65 64 g.src.markers.around.the.reduced
856c0 2d 70 72 6f 6d 70 74 0a 20 20 20 20 20 20 20 20 28 63 6f 6e 64 20 28 28 65 71 20 6d 61 6a 6f 72 -prompt.........(cond.((eq.major
856e0 2d 6d 6f 64 65 20 67 70 74 65 6c 2d 62 75 66 66 65 72 2d 6d 6f 64 65 29 29 0a 20 20 20 20 20 20 -mode.gptel-buffer-mode)).......
85700 20 20 20 20 20 20 20 20 28 28 70 72 6f 76 69 64 65 64 2d 6d 6f 64 65 2d 64 65 72 69 76 65 64 2d ........((provided-mode-derived-
85720 70 20 67 70 74 65 6c 2d 62 75 66 66 65 72 2d 6d 6f 64 65 20 27 6f 72 67 2d 6d 6f 64 65 29 0a 20 p.gptel-buffer-mode.'org-mode)..
85740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 72 65 64 75 63 65 64 2d 70 72 6f 6d ..............(setq.reduced-prom
85760 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 28 63 6f 6e pt......................(if.(con
85780 73 70 20 72 65 64 75 63 65 64 2d 70 72 6f 6d 70 74 29 3b 65 69 74 68 65 72 20 28 72 65 67 69 6f sp.reduced-prompt);either.(regio
857a0 6e 20 2e 20 70 72 6f 6d 70 74 29 20 6f 72 20 70 72 6f 6d 70 74 0a 20 20 20 20 20 20 20 20 20 20 n...prompt).or.prompt...........
857c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 28 61 6e 64 20 28 63 61 72 ...............(concat.(and.(car
857e0 20 72 65 64 75 63 65 64 2d 70 72 6f 6d 70 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .reduced-prompt)................
85800 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 22 .......................(concat."
85820 23 2b 62 65 67 69 6e 5f 73 72 63 20 22 20 28 67 70 74 65 6c 2d 2d 73 74 72 69 70 2d 6d 6f 64 65 #+begin_src.".(gptel--strip-mode
85840 2d 73 75 66 66 69 78 20 6d 61 6a 6f 72 2d 6d 6f 64 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 -suffix.major-mode).............
85860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
85880 20 20 22 5c 6e 22 20 28 63 61 72 20 72 65 64 75 63 65 64 2d 70 72 6f 6d 70 74 29 20 22 5c 6e 23 .."\n".(car.reduced-prompt)."\n#
858a0 2b 65 6e 64 5f 73 72 63 5c 6e 5c 6e 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 +end_src\n\n")).................
858c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 64 72 20 72 65 64 75 63 65 64 2d 70 72 .................(cdr.reduced-pr
858e0 6f 6d 70 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 28 63 ompt))........................(c
85900 6f 6e 63 61 74 20 22 23 2b 62 65 67 69 6e 5f 73 72 63 20 22 20 28 67 70 74 65 6c 2d 2d 73 74 72 oncat."#+begin_src.".(gptel--str
85920 69 70 2d 6d 6f 64 65 2d 73 75 66 66 69 78 20 6d 61 6a 6f 72 2d 6d 6f 64 65 29 0a 20 20 20 20 20 ip-mode-suffix.major-mode)......
85940 20 20 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 6e 22 20 28 .........................."\n".(
85960 6f 72 20 28 63 64 72 2d 73 61 66 65 20 72 65 64 75 63 65 64 2d 70 72 6f 6d 70 74 29 20 72 65 64 or.(cdr-safe.reduced-prompt).red
85980 75 63 65 64 2d 70 72 6f 6d 70 74 29 20 22 5c 6e 23 2b 65 6e 64 5f 73 72 63 22 29 29 29 29 0a 20 uced-prompt)."\n#+end_src"))))..
859a0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 20 28 73 65 74 71 20 72 65 64 75 63 65 64 2d 70 72 .............(t.(setq.reduced-pr
859c0 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 20 20 28 69 66 20 ompt........................(if.
859e0 28 63 6f 6e 73 70 20 72 65 64 75 63 65 64 2d 70 72 6f 6d 70 74 29 3b 65 69 74 68 65 72 20 28 72 (consp.reduced-prompt);either.(r
85a00 65 67 69 6f 6e 20 2e 20 70 72 6f 6d 70 74 29 20 6f 72 20 70 72 6f 6d 70 74 0a 20 20 20 20 20 20 egion...prompt).or.prompt.......
85a20 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 28 61 6e .....................(concat.(an
85a40 64 20 28 63 61 72 20 72 65 64 75 63 65 64 2d 70 72 6f 6d 70 74 29 0a 20 20 20 20 20 20 20 20 20 d.(car.reduced-prompt)..........
85a60 20 20 20 20 20 20 20 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 ...............................(
85a80 63 6f 6e 63 61 74 20 20 22 60 60 60 20 22 20 28 67 70 74 65 6c 2d 2d 73 74 72 69 70 2d 6d 6f 64 concat.."```.".(gptel--strip-mod
85aa0 65 2d 73 75 66 66 69 78 20 6d 61 6a 6f 72 2d 6d 6f 64 65 29 20 22 5c 6e 22 0a 20 20 20 20 20 20 e-suffix.major-mode)."\n".......
85ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
85ae0 20 20 20 20 20 20 20 20 20 20 20 28 63 61 72 20 72 65 64 75 63 65 64 2d 70 72 6f 6d 70 74 29 20 ...........(car.reduced-prompt).
85b00 22 5c 6e 60 60 60 5c 6e 5c 6e 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 "\n```\n\n"))...................
85b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 64 72 20 72 65 64 75 63 65 64 2d 70 72 .................(cdr.reduced-pr
85b40 6f 6d 70 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ompt))..........................
85b60 28 63 6f 6e 63 61 74 20 22 60 60 60 20 22 20 28 67 70 74 65 6c 2d 2d 73 74 72 69 70 2d 6d 6f 64 (concat."```.".(gptel--strip-mod
85b80 65 2d 73 75 66 66 69 78 20 6d 61 6a 6f 72 2d 6d 6f 64 65 29 20 22 5c 6e 22 0a 20 20 20 20 20 20 e-suffix.major-mode)."\n".......
85ba0 20 20 20 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 6f 72 20 28 ...........................(or.(
85bc0 63 64 72 2d 73 61 66 65 20 72 65 64 75 63 65 64 2d 70 72 6f 6d 70 74 29 20 72 65 64 75 63 65 64 cdr-safe.reduced-prompt).reduced
85be0 2d 70 72 6f 6d 70 74 29 20 22 5c 6e 60 60 60 22 20 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 -prompt)."\n```".))))).........(
85c00 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 67 70 cond..........((buffer-live-p.gp
85c20 74 65 6c 2d 62 75 66 66 65 72 29 0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20 49 6e 73 65 72 74 20 tel-buffer)...........;;.Insert.
85c40 69 6e 74 6f 20 65 78 69 73 74 69 6e 67 20 67 70 74 65 6c 20 73 65 73 73 69 6f 6e 0a 20 20 20 20 into.existing.gptel.session.....
85c60 20 20 20 20 20 20 28 73 65 74 71 20 62 75 66 66 65 72 20 67 70 74 65 6c 2d 62 75 66 66 65 72 29 ......(setq.buffer.gptel-buffer)
85c80 0a 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 ...........(with-current-buffer.
85ca0 62 75 66 66 65 72 0a 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 buffer.............(goto-char.(p
85cc0 6f 69 6e 74 2d 6d 61 78 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 oint-max)).............(unless.(
85ce0 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 20 20 20 or.buffer-read-only.............
85d00 20 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 ............(get-char-property.(
85d20 70 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 point).'read-only)).............
85d40 20 20 28 75 6e 6c 65 73 73 20 28 62 6f 6c 70 29 20 28 69 6e 73 65 72 74 20 22 5c 6e 22 29 29 0a ..(unless.(bolp).(insert."\n")).
85d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 72 65 64 75 63 65 64 2d 70 72 ..............(insert.reduced-pr
85d80 6f 6d 70 74 29 29 0a 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 ompt)).............(setq.positio
85da0 6e 20 28 70 6f 69 6e 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 61 6e n.(point)).............(when.(an
85dc0 64 20 67 70 74 65 6c 2d 6d 6f 64 65 20 28 6e 6f 74 20 64 72 79 2d 72 75 6e 29 29 0a 20 20 20 20 d.gptel-mode.(not.dry-run)).....
85de0 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 73 74 61 74 75 73 20 ..........(gptel--update-status.
85e00 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 29 0a 20 20 20 20 20 ".Waiting...".'warning))))......
85e20 20 20 20 20 3b 3b 20 49 6e 73 65 72 74 20 69 6e 74 6f 20 6e 65 77 20 67 70 74 65 6c 20 73 65 73 ....;;.Insert.into.new.gptel.ses
85e40 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 28 74 20 28 73 65 74 71 20 62 75 66 66 65 72 0a 20 20 sion..........(t.(setq.buffer...
85e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 20 67 70 74 65 6c 2d 62 75 66 ................(gptel.gptel-buf
85e80 66 65 72 2d 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 fer-name........................
85ea0 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...........
85ec0 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 67 65 74 2d 61 ...................(gptel--get-a
85ee0 70 69 2d 6b 65 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 pi-key).........................
85f00 20 20 20 28 28 65 72 72 6f 72 20 75 73 65 72 2d 65 72 72 6f 72 29 0a 20 20 20 20 20 20 20 20 20 ...((error.user-error)..........
85f20 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 67 70 74 65 6c 2d 61 ...................(setq.gptel-a
85f40 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 20 20 20 20 20 pi-key..........................
85f60 20 20 20 20 20 20 20 20 20 28 72 65 61 64 2d 70 61 73 73 77 64 0a 20 20 20 20 20 20 20 20 20 20 .........(read-passwd...........
85f80 20 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 61 74 .........................(format
85fa0 20 22 25 73 20 41 50 49 20 6b 65 79 3a 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ."%s.API.key:.".................
85fc0 20 20 20 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
85fe0 6c 2d 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 l-backend-name..................
86000 20 20 20 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
86020 2d 62 61 63 6b 65 6e 64 29 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -backend))))))..................
86040 20 20 20 20 20 20 20 20 72 65 64 75 63 65 64 2d 70 72 6f 6d 70 74 29 29 0a 20 20 20 20 20 20 20 ........reduced-prompt))........
86060 20 20 20 20 20 3b 3b 20 53 65 74 20 62 61 63 6b 65 6e 64 20 61 6e 64 20 6d 6f 64 65 6c 20 69 6e .....;;.Set.backend.and.model.in
86080 20 6e 65 77 20 73 65 73 73 69 6f 6e 20 66 72 6f 6d 20 63 75 72 72 65 6e 74 20 62 75 66 66 65 72 .new.session.from.current.buffer
860a0 0a 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 75 66 66 65 .............(with-current-buffe
860c0 72 20 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 67 70 74 r.buffer...............(setq.gpt
860e0 65 6c 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 el-backend.backend).............
86100 20 20 28 73 65 74 71 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 20 6d 6f 64 65 6c 29 0a 20 20 20 20 20 ..(setq.gptel-model.model)......
86120 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 64 72 79 2d 72 75 6e 0a 20 20 20 20 20 20 20 .........(unless.dry-run........
86140 20 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 .........(gptel--update-status."
86160 20 57 61 69 74 69 6e 67 2e 2e 2e 22 20 27 77 61 72 6e 69 6e 67 29 29 0a 20 20 20 20 20 20 20 20 .Waiting...".'warning)).........
86180 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 29 29 29 29 ......(setq.position.(point)))))
861a0 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 65 72 2d 6e 61 6d 65 ))......((setq.gptel-buffer-name
861c0 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 6d 62 64 61 20 28 73 .............(cl-some.(lambda.(s
861e0 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 67 2d 70 72 65 66 69 ).(and.(stringp.s).(string-prefi
86200 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 20 20 20 20 20 20 20 x-p."b".s)......................
86220 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 31 29 29 29 0a 20 20 ............(substring.s.1)))...
86240 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 0a 20 20 20 20 20 20 ...................args)).......
86260 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 66 65 72 2d 70 20 74 (setq.output-to-other-buffer-p.t
86280 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 2d 62 75 66 66 65 72 ).......(setq.buffer.(get-buffer
862a0 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 29 29 0a 20 20 20 20 -create.gptel-buffer-name)).....
862c0 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 20 28 73 ..(with-current-buffer.buffer.(s
862e0 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 0a 20 20 20 20 3b 3b etq.position.(point)))))......;;
86300 20 4d 41 59 42 45 3a 20 54 68 69 73 20 69 73 20 6e 6f 20 61 20 67 6f 6f 64 20 77 61 79 20 74 6f .MAYBE:.This.is.no.a.good.way.to
86320 20 68 61 6e 64 6c 65 20 74 77 6f 2d 70 61 72 74 20 28 72 65 67 69 6f 6e 20 2b 20 69 6e 73 74 72 .handle.two-part.(region.+.instr
86340 75 63 74 69 6f 6e 29 20 70 72 6f 6d 70 74 73 0a 20 20 20 20 3b 3b 20 49 66 20 74 68 65 20 70 72 uction).prompts.....;;.If.the.pr
86360 6f 6d 70 74 20 69 73 20 61 20 63 6f 6e 73 20 28 72 65 67 69 6f 6e 2d 74 65 78 74 20 2e 20 69 6e ompt.is.a.cons.(region-text...in
86380 73 74 72 75 63 74 69 6f 6e 73 29 2c 20 63 6f 6c 6c 61 70 73 65 20 69 74 0a 20 20 20 20 28 77 68 structions),.collapse.it.....(wh
863a0 65 6e 20 28 63 6f 6e 73 70 20 70 72 6f 6d 70 74 29 20 28 73 65 74 71 20 70 72 6f 6d 70 74 20 28 en.(consp.prompt).(setq.prompt.(
863c0 63 6f 6e 63 61 74 20 28 63 61 72 20 70 72 6f 6d 70 74 29 20 22 5c 6e 5c 6e 22 20 28 63 64 72 20 concat.(car.prompt)."\n\n".(cdr.
863e0 70 72 6f 6d 70 74 29 29 29 29 0a 0a 20 20 20 20 28 70 72 6f 67 31 20 28 67 70 74 65 6c 2d 72 65 prompt))))......(prog1.(gptel-re
86400 71 75 65 73 74 20 70 72 6f 6d 70 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 62 75 66 66 65 quest.prompt..............:buffe
86420 72 20 28 6f 72 20 62 75 66 66 65 72 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29 0a 20 r.(or.buffer.(current-buffer))..
86440 20 20 20 20 20 20 20 20 20 20 20 20 3a 70 6f 73 69 74 69 6f 6e 20 70 6f 73 69 74 69 6f 6e 0a 20 ............:position.position..
86460 20 20 20 20 20 20 20 20 20 20 20 20 3a 69 6e 2d 70 6c 61 63 65 20 28 61 6e 64 20 69 6e 2d 70 6c ............:in-place.(and.in-pl
86480 61 63 65 20 28 6e 6f 74 20 6f 75 74 70 75 74 2d 74 6f 2d 6f 74 68 65 72 2d 62 75 66 66 65 72 2d ace.(not.output-to-other-buffer-
864a0 70 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 73 74 72 65 61 6d 20 73 74 72 65 61 6d 0a p))..............:stream.stream.
864c0 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 73 79 73 74 65 6d 0a 20 20 20 20 20 20 20 20 20 20 20 .............:system............
864e0 20 20 28 69 66 20 73 79 73 74 65 6d 2d 65 78 74 72 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ..(if.system-extra..............
86500 20 20 20 20 28 67 70 74 65 6c 2d 2d 6d 65 72 67 65 2d 61 64 64 69 74 69 6f 6e 61 6c 2d 64 69 72 ....(gptel--merge-additional-dir
86520 65 63 74 69 76 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 20 ective.system-extra)............
86540 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 29 0a 20 20 20 20 20 ....gptel--system-message)......
86560 20 20 20 20 20 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 ........:callback.callback......
86580 20 20 20 20 20 20 20 20 3a 74 72 61 6e 73 66 6f 72 6d 73 20 67 70 74 65 6c 2d 70 72 6f 6d 70 74 ........:transforms.gptel-prompt
865a0 2d 74 72 61 6e 73 66 6f 72 6d 2d 66 75 6e 63 74 69 6f 6e 73 0a 20 20 20 20 20 20 20 20 20 20 20 -transform-functions............
865c0 20 20 3a 66 73 6d 20 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 66 73 6d 20 3a 68 61 6e 64 6c 65 72 73 ..:fsm.(gptel-make-fsm.:handlers
865e0 20 67 70 74 65 6c 2d 73 65 6e 64 2d 2d 68 61 6e 64 6c 65 72 73 29 0a 20 20 20 20 20 20 20 20 20 .gptel-send--handlers)..........
86600 20 20 20 20 3a 64 72 79 2d 72 75 6e 20 64 72 79 2d 72 75 6e 29 0a 0a 20 20 20 20 20 20 28 75 6e ....:dry-run.dry-run)........(un
86620 6c 65 73 73 20 64 72 79 2d 72 75 6e 0a 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 75 70 64 less.dry-run.........(gptel--upd
86640 61 74 65 2d 73 74 61 74 75 73 20 22 20 57 61 69 74 69 6e 67 2e 2e 2e 22 20 27 77 61 72 6e 69 6e ate-status.".Waiting...".'warnin
86660 67 29 29 0a 0a 20 20 20 20 20 20 3b 3b 20 4e 4f 54 45 3a 20 50 6f 73 73 69 62 6c 65 20 66 75 74 g))........;;.NOTE:.Possible.fut
86680 75 72 65 20 72 61 63 65 20 63 6f 6e 64 69 74 69 6f 6e 20 68 65 72 65 20 69 66 20 45 6d 61 63 73 ure.race.condition.here.if.Emacs
866a0 20 65 76 65 72 20 64 72 6f 70 73 20 74 68 65 20 47 49 4c 2e 0a 20 20 20 20 20 20 3b 3b 20 54 68 .ever.drops.the.GIL........;;.Th
866c0 65 20 48 54 54 50 20 72 65 71 75 65 73 74 20 63 61 6c 6c 62 61 63 6b 20 6d 69 67 68 74 20 6d 6f e.HTTP.request.callback.might.mo
866e0 64 69 66 79 20 74 68 65 20 62 75 66 66 65 72 20 62 65 66 6f 72 65 20 74 68 65 20 69 6e 2d 70 6c dify.the.buffer.before.the.in-pl
86700 61 63 65 0a 20 20 20 20 20 20 3b 3b 20 74 65 78 74 20 69 73 20 6b 69 6c 6c 65 64 20 62 65 6c 6f ace.......;;.text.is.killed.belo
86720 77 2e 0a 20 20 20 20 20 20 28 77 68 65 6e 20 69 6e 2d 70 6c 61 63 65 0a 20 20 20 20 20 20 20 20 w........(when.in-place.........
86740 28 69 66 20 28 6f 72 20 62 75 66 66 65 72 2d 72 65 61 64 2d 6f 6e 6c 79 20 28 67 65 74 2d 63 68 (if.(or.buffer-read-only.(get-ch
86760 61 72 2d 70 72 6f 70 65 72 74 79 20 28 70 6f 69 6e 74 29 20 27 72 65 61 64 2d 6f 6e 6c 79 29 29 ar-property.(point).'read-only))
86780 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 4e 6f 74 20 72 65 70 6c 61 .............(message."Not.repla
867a0 63 69 6e 67 20 70 72 6f 6d 70 74 3a 20 72 65 67 69 6f 6e 20 69 73 20 72 65 61 64 2d 6f 6e 6c 79 cing.prompt:.region.is.read-only
867c0 22 29 0a 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 62 65 67 20 28 69 66 20 28 75 73 65 ")...........(let.((beg.(if.(use
867e0 2d 72 65 67 69 6f 6e 2d 70 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -region-p)......................
86800 20 20 20 20 28 72 65 67 69 6f 6e 2d 62 65 67 69 6e 6e 69 6e 67 29 0a 20 20 20 20 20 20 20 20 20 ....(region-beginning)..........
86820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 78 20 28 70 72 65 76 69 6f 75 73 2d 73 69 6e ..............(max.(previous-sin
86840 67 6c 65 2d 70 72 6f 70 65 72 74 79 2d 63 68 61 6e 67 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 gle-property-change.............
86860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6f 69 6e 74 29 20 27 67 70 74 65 6c 20 .................(point).'gptel.
86880 6e 69 6c 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 nil.(point-min))................
868a0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 65 76 69 6f 75 73 2d 73 69 6e 67 6c 65 2d 70 72 .............(previous-single-pr
868c0 6f 70 65 72 74 79 2d 63 68 61 6e 67 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 operty-change...................
868e0 20 20 20 20 20 20 20 20 20 20 20 28 70 6f 69 6e 74 29 20 27 72 65 61 64 2d 6f 6e 6c 79 20 6e 69 ...........(point).'read-only.ni
86900 6c 20 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 l.(point-min)))))...............
86920 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 67 69 6f ..(end.(if.(use-region-p).(regio
86940 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 20 20 28 75 n-end).(point)))).............(u
86960 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 20 nless.output-to-other-buffer-p..
86980 20 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 .............;;.store.the.killed
869a0 20 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 .text.in.gptel-history..........
869c0 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 61 74 74 61 63 68 2d 72 65 73 70 6f 6e 73 65 2d 68 69 73 .....(gptel--attach-response-his
869e0 74 6f 72 79 0a 20 20 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 tory................(list.(buffe
86a00 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 62 65 67 20 65 6e r-substring-no-properties.beg.en
86a20 64 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6b 69 6c 6c 2d 72 65 67 69 6f 6e 20 62 d)))).............(kill-region.b
86a40 65 67 20 65 6e 64 29 29 29 29 0a 0a 20 20 20 20 20 20 28 77 68 65 6e 20 6f 75 74 70 75 74 2d 74 eg.end))))........(when.output-t
86a60 6f 2d 6f 74 68 65 72 2d 62 75 66 66 65 72 2d 70 0a 20 20 20 20 20 20 20 20 28 6d 65 73 73 61 67 o-other-buffer-p.........(messag
86a80 65 20 28 63 6f 6e 63 61 74 20 22 50 72 6f 6d 70 74 20 73 65 6e 74 20 74 6f 20 62 75 66 66 65 72 e.(concat."Prompt.sent.to.buffer
86aa0 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 28 70 72 :."..........................(pr
86ac0 6f 70 65 72 74 69 7a 65 20 67 70 74 65 6c 2d 62 75 66 66 65 72 2d 6e 61 6d 65 20 27 66 61 63 65 opertize.gptel-buffer-name.'face
86ae0 20 27 68 65 6c 70 2d 6b 65 79 2d 62 69 6e 64 69 6e 67 29 29 29 0a 20 20 20 20 20 20 20 20 28 64 .'help-key-binding))).........(d
86b00 69 73 70 6c 61 79 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 20 62 75 66 66 65 72 20 27 28 isplay-buffer..........buffer.'(
86b20 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....
86b40 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 70 ................display-buffer-p
86b60 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 20 20 20 20 20 20 op-up-window)...................
86b80 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 29 29 (reusable-frames...visible))))))
86ba0 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 6d 65 72 67 65 2d 61 64 64 69 74 69 6f 6e 61 )..(defun.gptel--merge-additiona
86bc0 6c 2d 64 69 72 65 63 74 69 76 65 20 28 61 64 64 69 74 69 6f 6e 61 6c 20 26 6f 70 74 69 6f 6e 61 l-directive.(additional.&optiona
86be0 6c 20 66 75 6c 6c 29 0a 20 20 22 4d 65 72 67 65 20 41 44 44 49 54 49 4f 4e 41 4c 20 67 70 74 65 l.full)..."Merge.ADDITIONAL.gpte
86c00 6c 20 64 69 72 65 63 74 69 76 65 20 77 69 74 68 20 74 68 65 20 66 75 6c 6c 20 73 79 73 74 65 6d l.directive.with.the.full.system
86c20 20 6d 65 73 73 61 67 65 2e 0a 0a 54 68 65 20 41 44 44 49 54 49 4f 4e 41 4c 20 64 69 72 65 63 74 .message...The.ADDITIONAL.direct
86c40 69 76 65 20 69 73 20 74 79 70 69 63 61 6c 6c 79 20 73 70 65 63 69 66 69 65 64 20 66 72 6f 6d 20 ive.is.typically.specified.from.
86c60 60 67 70 74 65 6c 2d 6d 65 6e 75 27 0a 61 6e 64 20 61 70 70 6c 69 65 73 20 6f 6e 6c 79 20 74 6f `gptel-menu'.and.applies.only.to
86c80 20 74 68 65 20 6e 65 78 74 20 67 70 74 65 6c 20 72 65 71 75 65 73 74 2c 20 73 65 65 0a 60 67 70 .the.next.gptel.request,.see.`gp
86ca0 74 65 6c 2d 2d 69 6e 66 69 78 2d 61 64 64 2d 64 69 72 65 63 74 69 76 65 27 2e 0a 0a 46 55 4c 4c tel--infix-add-directive'...FULL
86cc0 20 64 65 66 61 75 6c 74 73 20 74 6f 20 74 68 65 20 61 63 74 69 76 65 2c 20 66 75 6c 6c 20 73 79 .defaults.to.the.active,.full.sy
86ce0 73 74 65 6d 20 6d 65 73 73 61 67 65 2e 20 20 49 74 20 6d 61 79 20 62 65 20 61 0a 73 74 72 69 6e stem.message...It.may.be.a.strin
86d00 67 2c 20 61 20 6c 69 73 74 20 6f 66 20 70 72 6f 6d 70 74 73 20 6f 72 20 61 20 66 75 6e 63 74 69 g,.a.list.of.prompts.or.a.functi
86d20 6f 6e 2c 20 73 65 65 20 60 67 70 74 65 6c 2d 64 69 72 65 63 74 69 76 65 73 27 0a 66 6f 72 20 64 on,.see.`gptel-directives'.for.d
86d40 65 74 61 69 6c 73 2e 22 0a 20 20 28 73 65 74 71 20 66 75 6c 6c 20 28 6f 72 20 66 75 6c 6c 20 67 etails."...(setq.full.(or.full.g
86d60 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 29 29 0a 20 20 28 63 6c 2d 74 79 70 ptel--system-message))...(cl-typ
86d80 65 63 61 73 65 20 66 75 6c 6c 0a 20 20 20 20 28 73 74 72 69 6e 67 20 28 63 6f 6e 63 61 74 20 66 ecase.full.....(string.(concat.f
86da0 75 6c 6c 20 22 5c 6e 5c 6e 22 20 61 64 64 69 74 69 6f 6e 61 6c 29 29 0a 20 20 20 20 28 6c 69 73 ull."\n\n".additional)).....(lis
86dc0 74 20 28 6c 65 74 20 28 28 63 6f 70 79 20 28 63 6f 70 79 2d 73 65 71 75 65 6e 63 65 20 66 75 6c t.(let.((copy.(copy-sequence.ful
86de0 6c 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 63 61 72 20 63 6f 70 79 20 28 63 l))).............(setcar.copy.(c
86e00 6f 6e 63 61 74 20 28 63 61 72 20 63 6f 70 79 29 20 22 5c 6e 5c 6e 22 20 61 64 64 69 74 69 6f 6e oncat.(car.copy)."\n\n".addition
86e20 61 6c 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 70 79 29 29 0a 20 20 20 20 28 66 75 6e al)).............copy)).....(fun
86e40 63 74 69 6f 6e 20 28 6c 61 6d 62 64 61 20 28 29 20 28 67 70 74 65 6c 2d 2d 6d 65 72 67 65 2d 61 ction.(lambda.().(gptel--merge-a
86e60 64 64 69 74 69 6f 6e 61 6c 2d 64 69 72 65 63 74 69 76 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 dditional-directive.............
86e80 20 20 20 20 20 20 20 20 20 61 64 64 69 74 69 6f 6e 61 6c 20 28 66 75 6e 63 61 6c 6c 20 66 75 6c .........additional.(funcall.ful
86ea0 6c 29 29 29 29 0a 20 20 20 20 28 6f 74 68 65 72 77 69 73 65 20 61 64 64 69 74 69 6f 6e 61 6c 29 l)))).....(otherwise.additional)
86ec0 29 29 0a 0a 3b 3b 20 41 6c 6c 6f 77 20 63 61 6c 6c 69 6e 67 20 66 72 6f 6d 20 65 6c 69 73 70 0a ))..;;.Allow.calling.from.elisp.
86ee0 28 70 75 74 20 27 67 70 74 65 6c 2d 2d 73 75 66 66 69 78 2d 73 65 6e 64 20 27 69 6e 74 65 72 61 (put.'gptel--suffix-send.'intera
86f00 63 74 69 76 65 2d 6f 6e 6c 79 20 6e 69 6c 29 0a 0a 3b 3b 20 2a 2a 20 53 75 66 66 69 78 20 74 6f ctive-only.nil)..;;.**.Suffix.to
86f20 20 72 65 67 65 6e 65 72 61 74 65 20 72 65 73 70 6f 6e 73 65 0a 0a 28 64 65 66 75 6e 20 67 70 74 .regenerate.response..(defun.gpt
86f40 65 6c 2d 2d 72 65 67 65 6e 65 72 61 74 65 20 28 29 0a 20 20 22 52 65 67 65 6e 65 72 61 74 65 20 el--regenerate.()..."Regenerate.
86f60 67 70 74 65 6c 20 72 65 73 70 6f 6e 73 65 20 61 74 20 70 6f 69 6e 74 2e 22 0a 20 20 28 69 6e 74 gptel.response.at.point."...(int
86f80 65 72 61 63 74 69 76 65 29 0a 20 20 28 77 68 65 6e 20 28 67 70 74 65 6c 2d 2d 69 6e 2d 72 65 73 eractive)...(when.(gptel--in-res
86fa0 70 6f 6e 73 65 2d 70 29 0a 20 20 20 20 28 70 63 61 73 65 2d 6c 65 74 2a 20 28 28 60 28 2c 62 65 ponse-p).....(pcase-let*.((`(,be
86fc0 67 20 2e 20 2c 65 6e 64 29 20 28 67 70 74 65 6c 2d 2d 67 65 74 2d 72 65 73 70 6f 6e 73 65 2d 62 g...,end).(gptel--get-response-b
86fe0 6f 75 6e 64 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 68 69 73 74 6f 72 ounds))..................(histor
87000 79 20 28 67 65 74 2d 63 68 61 72 2d 70 72 6f 70 65 72 74 79 20 28 70 6f 69 6e 74 29 20 27 67 70 y.(get-char-property.(point).'gp
87020 74 65 6c 2d 68 69 73 74 6f 72 79 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 tel-history))..................(
87040 70 72 65 76 2d 72 65 73 70 6f 6e 73 65 73 20 28 63 6f 6e 73 20 28 62 75 66 66 65 72 2d 73 75 62 prev-responses.(cons.(buffer-sub
87060 73 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 20 62 65 67 20 65 6e 64 29 0a 20 20 string-no-properties.beg.end)...
87080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
870a0 20 20 20 20 20 68 69 73 74 6f 72 79 29 29 29 0a 20 20 20 20 20 20 28 77 68 65 6e 20 67 70 74 65 .....history))).......(when.gpte
870c0 6c 2d 6d 6f 64 65 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 52 65 6d 6f 76 65 20 l-mode..................;Remove.
870e0 70 72 65 66 69 78 2f 73 75 66 66 69 78 0a 20 20 20 20 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 prefix/suffix.........(save-excu
87100 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 62 65 67 29 0a rsion...........(goto-char.beg).
87120 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 6c 6f 6f 6b 69 6e 67 2d 62 61 63 6b 20 28 63 ..........(when.(looking-back.(c
87140 6f 6e 63 61 74 20 22 5c 6e 2b 22 20 28 72 65 67 65 78 70 2d 71 75 6f 74 65 20 28 67 70 74 65 6c oncat."\n+".(regexp-quote.(gptel
87160 2d 72 65 73 70 6f 6e 73 65 2d 70 72 65 66 69 78 2d 73 74 72 69 6e 67 29 29 29 0a 20 20 20 20 20 -response-prefix-string)))......
87180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6f 69 6e 74 2d .........................(point-
871a0 6d 69 6e 29 20 27 67 72 65 65 64 79 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 min).'greedy).............(setq.
871c0 62 65 67 20 28 6d 61 74 63 68 2d 62 65 67 69 6e 6e 69 6e 67 20 30 29 29 29 0a 20 20 20 20 20 20 beg.(match-beginning.0))).......
871e0 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 65 6e 64 29 0a 20 20 20 20 20 20 20 20 20 20 28 77 ....(goto-char.end)...........(w
87200 68 65 6e 20 28 6c 6f 6f 6b 69 6e 67 2d 61 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 hen.(looking-at.................
87220 20 28 63 6f 6e 63 61 74 20 22 5c 6e 2b 22 20 28 72 65 67 65 78 70 2d 71 75 6f 74 65 20 28 67 70 .(concat."\n+".(regexp-quote.(gp
87240 74 65 6c 2d 70 72 6f 6d 70 74 2d 70 72 65 66 69 78 2d 73 74 72 69 6e 67 29 29 29 29 0a 20 20 20 tel-prompt-prefix-string))))....
87260 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 65 6e 64 20 28 6d 61 74 63 68 2d 65 6e 64 20 30 29 .........(setq.end.(match-end.0)
87280 29 29 29 29 0a 20 20 20 20 20 20 28 64 65 6c 65 74 65 2d 72 65 67 69 6f 6e 20 62 65 67 20 65 6e )))).......(delete-region.beg.en
872a0 64 29 0a 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 61 74 74 61 63 68 2d 72 65 73 70 6f 6e 73 65 d).......(gptel--attach-response
872c0 2d 68 69 73 74 6f 72 79 20 70 72 65 76 2d 72 65 73 70 6f 6e 73 65 73 29 0a 20 20 20 20 20 20 28 -history.prev-responses).......(
872e0 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 66 call-interactively.#'gptel--suff
87300 69 78 2d 73 65 6e 64 29 29 29 29 0a 0a 3b 3b 20 2a 2a 20 53 65 74 20 73 79 73 74 65 6d 20 6d 65 ix-send))))..;;.**.Set.system.me
87320 73 73 61 67 65 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 72 65 61 64 2d 63 72 6f 77 64 73 6f ssage.(defun.gptel--read-crowdso
87340 75 72 63 65 64 2d 70 72 6f 6d 70 74 20 28 29 0a 20 20 22 50 69 63 6b 20 61 20 63 72 6f 77 64 73 urced-prompt.()..."Pick.a.crowds
87360 6f 75 72 63 65 64 20 73 79 73 74 65 6d 20 70 72 6f 6d 70 74 20 66 6f 72 20 67 70 74 65 6c 2e 0a ourced.system.prompt.for.gptel..
87380 0a 54 68 69 73 20 75 73 65 73 20 74 68 65 20 70 72 6f 6d 70 74 73 20 69 6e 20 74 68 65 20 76 61 .This.uses.the.prompts.in.the.va
873a0 72 69 61 62 6c 65 0a 60 67 70 74 65 6c 2d 2d 63 72 6f 77 64 73 6f 75 72 63 65 64 2d 70 72 6f 6d riable.`gptel--crowdsourced-prom
873c0 70 74 73 27 2c 20 77 68 69 63 68 20 73 65 65 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 pts',.which.see."...(interactive
873e0 29 0a 20 20 28 69 66 20 28 6e 6f 74 20 28 68 61 73 68 2d 74 61 62 6c 65 2d 65 6d 70 74 79 2d 70 )...(if.(not.(hash-table-empty-p
87400 20 28 67 70 74 65 6c 2d 2d 63 72 6f 77 64 73 6f 75 72 63 65 64 2d 70 72 6f 6d 70 74 73 29 29 29 .(gptel--crowdsourced-prompts)))
87420 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 63 68 6f 69 63 65 0a 20 20 20 20 20 20 20 20 20 20 20 .......(let.((choice............
87440 20 20 28 63 6f 6d 70 6c 65 74 69 6e 67 2d 72 65 61 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ..(completing-read..............
87460 20 22 50 69 63 6b 20 61 6e 64 20 65 64 69 74 20 70 72 6f 6d 70 74 3a 20 22 0a 20 20 20 20 20 20 ."Pick.and.edit.prompt:.".......
87480 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 73 74 72 20 70 72 65 64 20 61 63 74 69 6f 6e ........(lambda.(str.pred.action
874a0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 65 71 20 61 63 74 69 6f 6e ).................(if.(eq.action
874c0 20 27 6d 65 74 61 64 61 74 61 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .'metadata).....................
874e0 60 28 6d 65 74 61 64 61 74 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 `(metadata......................
87500 20 28 61 66 66 69 78 61 74 69 6f 6e 2d 66 75 6e 63 74 69 6f 6e 20 2e 0a 20 20 20 20 20 20 20 20 .(affixation-function...........
87520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 63 61 6e 64 73 29 0a 20 ...............(lambda.(cands)..
87540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 70 63 61 72 0a ........................(mapcar.
87560 20 20 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
87580 61 20 28 63 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 a.(c)...........................
875a0 20 20 28 6c 69 73 74 20 63 20 22 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..(list.c.""....................
875c0 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 20 ..........(concat.(propertize.".
875e0 22 20 27 64 69 73 70 6c 61 79 20 27 28 73 70 61 63 65 20 3a 61 6c 69 67 6e 2d 74 6f 20 32 32 29 ".'display.'(space.:align-to.22)
87600 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 )...............................
87620 22 20 22 20 28 70 72 6f 70 65 72 74 69 7a 65 20 28 67 65 74 68 61 73 68 20 63 20 67 70 74 65 6c ".".(propertize.(gethash.c.gptel
87640 2d 2d 63 72 6f 77 64 73 6f 75 72 63 65 64 2d 70 72 6f 6d 70 74 73 29 0a 20 20 20 20 20 20 20 20 --crowdsourced-prompts).........
87660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 66 61 63 65 20 27 63 6f .......................'face.'co
87680 6d 70 6c 65 74 69 6f 6e 73 2d 61 6e 6e 6f 74 61 74 69 6f 6e 73 29 29 29 29 0a 20 20 20 20 20 20 mpletions-annotations)))).......
876a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 6e 64 73 29 29 29 29 0a 20 20 ....................cands))))...
876c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6d 70 6c 65 74 65 2d 77 69 74 68 2d 61 ................(complete-with-a
876e0 63 74 69 6f 6e 20 61 63 74 69 6f 6e 20 67 70 74 65 6c 2d 2d 63 72 6f 77 64 73 6f 75 72 63 65 64 ction.action.gptel--crowdsourced
87700 2d 70 72 6f 6d 70 74 73 20 73 74 72 20 70 72 65 64 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 -prompts.str.pred)))............
87720 20 20 20 6e 69 6c 20 74 29 29 29 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 ...nil.t))).........(when-let*.(
87740 28 70 72 6f 6d 70 74 20 28 67 65 74 68 61 73 68 20 63 68 6f 69 63 65 20 67 70 74 65 6c 2d 2d 63 (prompt.(gethash.choice.gptel--c
87760 72 6f 77 64 73 6f 75 72 63 65 64 2d 70 72 6f 6d 70 74 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 rowdsourced-prompts)))..........
87780 20 28 67 70 74 65 6c 2d 2d 73 65 74 2d 77 69 74 68 2d 73 63 6f 70 65 0a 20 20 20 20 20 20 20 20 .(gptel--set-with-scope.........
877a0 20 20 20 27 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 20 70 72 6f 6d 70 74 ...'gptel--system-message.prompt
877c0 20 67 70 74 65 6c 2d 2d 73 65 74 2d 62 75 66 66 65 72 2d 6c 6f 63 61 6c 6c 79 29 0a 20 20 20 20 .gptel--set-buffer-locally).....
877e0 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 65 64 69 74 2d 64 69 72 65 63 74 69 76 65 20 27 67 70 ......(gptel--edit-directive.'gp
87800 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 20 20 tel--system-message.............
87820 3a 63 61 6c 6c 62 61 63 6b 20 28 6c 61 6d 62 64 61 20 28 29 20 28 63 61 6c 6c 2d 69 6e 74 65 72 :callback.(lambda.().(call-inter
87840 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 29 0a 20 20 20 20 28 actively.#'gptel-menu))))).....(
87860 6d 65 73 73 61 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 message."No.prompts.available.")
87880 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 66 69 78 20 67 70 74 ))..(transient-define-suffix.gpt
878a0 65 6c 2d 2d 73 75 66 66 69 78 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 20 28 26 6f 70 74 69 el--suffix-system-message.(&opti
878c0 6f 6e 61 6c 20 63 61 6e 63 65 6c 29 0a 20 20 22 45 64 69 74 20 4c 4c 4d 20 73 79 73 74 65 6d 20 onal.cancel)..."Edit.LLM.system.
878e0 6d 65 73 73 61 67 65 2e 0a 0a 43 41 4e 43 45 4c 20 69 73 20 75 73 65 64 20 74 6f 20 61 76 6f 69 message...CANCEL.is.used.to.avoi
87900 64 20 74 6f 75 63 68 69 6e 67 20 64 79 6e 61 6d 69 63 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 d.touching.dynamic.system.messag
87920 65 73 2c 0a 67 65 6e 65 72 61 74 65 64 20 66 72 6f 6d 20 66 75 6e 63 74 69 6f 6e 73 2e 22 0a 20 es,.generated.from.functions."..
87940 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 0a .:transient.'transient--do-exit.
87960 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 74 ..:description."Set.or.edit.syst
87980 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 22 em.message"...:format.".%k...%d"
879a0 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 0a 20 20 20 28 6c ...:key."s"...(interactive....(l
879c0 69 73 74 20 28 61 6e 64 20 28 66 75 6e 63 74 69 6f 6e 70 20 67 70 74 65 6c 2d 2d 73 79 73 74 65 ist.(and.(functionp.gptel--syste
879e0 6d 2d 6d 65 73 73 61 67 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 6f 74 20 28 79 m-message)...............(not.(y
87a00 2d 6f 72 2d 6e 2d 70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 41 63 74 -or-n-p....................."Act
87a20 69 76 65 20 64 69 72 65 63 74 69 76 65 20 69 73 20 64 79 6e 61 6d 69 63 61 6c 6c 79 20 67 65 6e ive.directive.is.dynamically.gen
87a40 65 72 61 74 65 64 3a 20 45 64 69 74 20 69 74 73 20 63 75 72 72 65 6e 74 20 76 61 6c 75 65 20 69 erated:.Edit.its.current.value.i
87a60 6e 73 74 65 61 64 3f 22 29 29 29 29 29 0a 20 20 28 69 66 20 63 61 6e 63 65 6c 20 28 70 72 6f 67 nstead?")))))...(if.cancel.(prog
87a80 6e 20 28 6d 65 73 73 61 67 65 20 22 45 64 69 74 20 63 61 6e 63 65 6c 65 64 22 29 0a 20 20 20 20 n.(message."Edit.canceled").....
87aa0 20 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 72 61 63 74 69 76 ................(call-interactiv
87ac0 65 6c 79 20 23 27 67 70 74 65 6c 2d 6d 65 6e 75 29 29 0a 20 20 20 20 28 67 70 74 65 6c 2d 2d 65 ely.#'gptel-menu)).....(gptel--e
87ae0 64 69 74 2d 64 69 72 65 63 74 69 76 65 20 27 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 dit-directive.'gptel--system-mes
87b00 73 61 67 65 0a 20 20 20 20 20 20 3a 73 65 74 75 70 20 23 27 61 63 74 69 76 61 74 65 2d 6d 61 72 sage.......:setup.#'activate-mar
87b20 6b 0a 20 20 20 20 20 20 3a 63 61 6c 6c 62 61 63 6b 20 28 6c 61 6d 62 64 61 20 28 5f 29 20 28 63 k.......:callback.(lambda.(_).(c
87b40 61 6c 6c 2d 69 6e 74 65 72 61 63 74 69 76 65 6c 79 20 23 27 67 70 74 65 6c 2d 6d 65 6e 75 29 29 all-interactively.#'gptel-menu))
87b60 29 29 29 0a 0a 3b 3b 20 4d 41 59 42 45 3a 20 45 76 65 6e 74 75 61 6c 6c 79 20 63 61 6e 20 62 65 )))..;;.MAYBE:.Eventually.can.be
87b80 20 73 69 6d 70 6c 69 66 69 65 64 20 77 69 74 68 20 73 74 72 69 6e 67 2d 65 64 69 74 2c 20 61 66 .simplified.with.string-edit,.af
87ba0 74 65 72 20 77 65 20 64 72 6f 70 20 73 75 70 70 6f 72 74 0a 3b 3b 20 66 6f 72 20 45 6d 61 63 73 ter.we.drop.support.;;.for.Emacs
87bc0 20 32 38 2e 32 2e 0a 28 63 6c 2d 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 65 64 69 74 2d 64 69 72 .28.2..(cl-defun.gptel--edit-dir
87be0 65 63 74 69 76 65 20 28 26 6f 70 74 69 6f 6e 61 6c 20 73 79 6d 20 26 6b 65 79 20 70 72 6f 6d 70 ective.(&optional.sym.&key.promp
87c00 74 20 69 6e 69 74 69 61 6c 20 63 61 6c 6c 62 61 63 6b 20 73 65 74 75 70 20 62 75 66 66 65 72 29 t.initial.callback.setup.buffer)
87c20 0a 20 20 22 45 64 69 74 20 61 20 67 70 74 65 6c 20 64 69 72 65 63 74 69 76 65 20 69 6e 20 61 20 ..."Edit.a.gptel.directive.in.a.
87c40 64 65 64 69 63 61 74 65 64 20 62 75 66 66 65 72 2e 0a 0a 53 74 6f 72 65 20 74 68 65 20 72 65 73 dedicated.buffer...Store.the.res
87c60 75 6c 74 20 69 6e 20 53 59 4d 2c 20 61 20 73 79 6d 62 6f 6c 2e 20 20 50 52 4f 4d 50 54 20 61 6e ult.in.SYM,.a.symbol...PROMPT.an
87c80 64 20 49 4e 49 54 49 41 4c 20 61 72 65 20 74 68 65 20 68 65 61 64 69 6e 67 0a 61 6e 64 20 69 6e d.INITIAL.are.the.heading.and.in
87ca0 69 74 69 61 6c 20 74 65 78 74 2e 20 20 49 66 20 53 45 54 55 50 20 69 73 20 61 20 66 75 6e 63 74 itial.text...If.SETUP.is.a.funct
87cc0 69 6f 6e 2c 20 72 75 6e 20 69 74 20 61 66 74 65 72 20 73 65 74 74 69 6e 67 20 75 70 20 74 68 65 ion,.run.it.after.setting.up.the
87ce0 0a 62 75 66 66 65 72 2e 20 20 49 66 20 43 41 4c 4c 42 41 43 4b 20 69 73 20 73 70 65 63 69 66 69 .buffer...If.CALLBACK.is.specifi
87d00 65 64 2c 20 69 74 20 69 73 20 72 75 6e 20 61 66 74 65 72 20 65 78 69 74 69 6e 67 20 74 68 65 20 ed,.it.is.run.after.exiting.the.
87d20 65 64 69 74 2e 20 20 49 74 0a 69 73 20 63 61 6c 6c 65 64 20 77 69 74 68 20 6f 6e 65 20 61 72 67 edit...It.is.called.with.one.arg
87d40 75 6d 65 6e 74 3a 20 74 68 65 20 62 75 66 66 65 72 20 74 65 78 74 20 6f 72 20 77 69 74 68 20 6e ument:.the.buffer.text.or.with.n
87d60 69 6c 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 0a 77 68 65 74 68 65 72 20 74 68 65 20 61 63 74 69 il.depending.on.whether.the.acti
87d80 6f 6e 20 69 73 20 63 6f 6e 66 69 72 6d 65 64 2f 63 61 6e 63 65 6c 6c 65 64 2e 22 0a 20 20 28 64 on.is.confirmed/cancelled."...(d
87da0 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 6f 72 69 67 eclare.(indent.1))...(let.((orig
87dc0 2d 62 75 66 20 28 6f 72 20 62 75 66 66 65 72 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 -buf.(or.buffer.(current-buffer)
87de0 29 29 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 )).........(msg-start.(make-mark
87e00 65 72 29 29 0a 20 20 20 20 20 20 20 20 28 64 69 72 65 63 74 69 76 65 20 28 73 79 6d 62 6f 6c 2d er)).........(directive.(symbol-
87e20 76 61 6c 75 65 20 73 79 6d 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 28 66 75 6e 63 74 69 6f 6e value.sym))).....(when.(function
87e40 70 20 64 69 72 65 63 74 69 76 65 29 0a 20 20 20 20 20 20 28 73 65 74 71 20 64 69 72 65 63 74 69 p.directive).......(setq.directi
87e60 76 65 20 28 66 75 6e 63 61 6c 6c 20 64 69 72 65 63 74 69 76 65 29 29 29 0a 20 20 20 20 3b 3b 20 ve.(funcall.directive))).....;;.
87e80 54 4f 44 4f 3a 20 48 61 6e 64 6c 65 20 65 64 69 74 69 6e 67 20 6c 69 73 74 2d 6f 66 2d 73 74 72 TODO:.Handle.editing.list-of-str
87ea0 69 6e 67 73 20 64 69 72 65 63 74 69 76 65 73 0a 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e ings.directives.....(with-curren
87ec0 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 70 t-buffer.(get-buffer-create."*gp
87ee0 74 65 6c 2d 70 72 6f 6d 70 74 2a 22 29 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 69 6e 68 69 62 tel-prompt*").......(let.((inhib
87f00 69 74 2d 72 65 61 64 2d 6f 6e 6c 79 20 74 29 20 28 69 6e 68 69 62 69 74 2d 6d 65 73 73 61 67 65 it-read-only.t).(inhibit-message
87f20 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).....
87f40 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 76 69 73 75 61 6c 2d ....(text-mode).........(visual-
87f60 6c 69 6e 65 2d 6d 6f 64 65 20 31 29 0a 20 20 20 20 20 20 20 20 28 73 65 74 71 20 68 65 61 64 65 line-mode.1).........(setq.heade
87f80 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 63 6f 6e r-line-format...............(con
87fa0 63 61 74 20 22 45 64 69 74 20 79 6f 75 72 20 69 6e 73 74 72 75 63 74 69 6f 6e 73 20 62 65 6c 6f cat."Edit.your.instructions.belo
87fc0 77 20 61 6e 64 20 70 72 65 73 73 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 w.and.press."...................
87fe0 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 43 2d 63 20 43 2d 63 22 20 27 66 61 63 65 20 ....(propertize."C-c.C-c".'face.
88000 27 68 65 6c 70 2d 6b 65 79 2d 62 69 6e 64 69 6e 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 'help-key-binding)..............
88020 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 22 0a 20 20 20 20 .........".when.ready,.or.".....
88040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 43 ..................(propertize."C
88060 2d 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 -c.C-k".'face.'help-key-binding)
88080 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 20 74 6f 20 61 62 6f 72 .......................".to.abor
880a0 74 2e 22 29 29 0a 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 0a 20 20 20 20 20 20 20 20 20 28 t.")).........(insert..........(
880c0 6f 72 20 70 72 6f 6d 70 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 0a 20 or.prompt..............(concat..
880e0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 23 20 45 78 61 6d 70 6c 65 3a 20 59 6f 75 20 61 72 65 ............."#.Example:.You.are
88100 20 61 20 68 65 6c 70 66 75 6c 20 61 73 73 69 73 74 61 6e 74 2e 20 41 6e 73 77 65 72 20 61 73 20 .a.helpful.assistant..Answer.as.
88120 63 6f 6e 63 69 73 65 6c 79 20 61 73 20 70 6f 73 73 69 62 6c 65 2e 5c 6e 22 0a 20 20 20 20 20 20 concisely.as.possible.\n".......
88140 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 6e 6c 79 20 77 ........"#.Example:.Reply.only.w
88160 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 72 6f 73 65 2e ith.shell.commands.and.no.prose.
88180 5c 6e 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 23 20 45 78 61 6d 70 6c 65 3a 20 59 6f \n"..............."#.Example:.Yo
881a0 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
881c0 65 2e 22 29 29 0a 20 20 20 20 20 20 20 20 20 22 5c 6e 5c 6e 22 29 0a 20 20 20 20 20 20 20 20 28 e.")).........."\n\n").........(
881e0 61 64 64 2d 74 65 78 74 2d 70 72 6f 70 65 72 74 69 65 73 0a 20 20 20 20 20 20 20 20 20 28 70 6f add-text-properties..........(po
88200 69 6e 74 2d 6d 69 6e 29 20 28 70 6f 69 6e 74 29 0a 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 int-min).(point)..........(list.
88220 27 72 65 61 64 2d 6f 6e 6c 79 20 74 20 27 66 61 63 65 20 27 66 6f 6e 74 2d 6c 6f 63 6b 2d 63 6f 'read-only.t.'face.'font-lock-co
88240 6d 6d 65 6e 74 2d 66 61 63 65 20 27 66 72 6f 6e 74 2d 73 74 69 63 6b 79 20 74 20 27 72 65 61 72 mment-face.'front-sticky.t.'rear
88260 2d 6e 6f 6e 73 74 69 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 -nonsticky.t)).........(set-mark
88280 65 72 20 6d 73 67 2d 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 er.msg-start.(point)).........(s
882a0 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20 49 66 20 69 74 ave-excursion...........;;.If.it
882c0 27 73 20 61 20 6c 69 73 74 2c 20 69 6e 73 65 72 74 20 6f 6e 6c 79 20 74 68 65 20 73 79 73 74 65 's.a.list,.insert.only.the.syste
882e0 6d 20 6d 65 73 73 61 67 65 20 70 61 72 74 0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20 49 66 20 61 m.message.part...........;;.If.a
88300 6c 6c 20 69 73 20 6e 69 6c 2c 20 69 6e 73 65 72 74 20 22 22 20 61 74 20 6c 65 61 73 74 0a 20 20 ll.is.nil,.insert."".at.least...
88320 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 28 6f 72 20 69 6e 69 74 69 61 6c 20 28 63 61 72 ........(insert.(or.initial.(car
88340 2d 73 61 66 65 20 28 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 64 69 72 65 63 74 69 76 65 20 64 69 -safe.(gptel--parse-directive.di
88360 72 65 63 74 69 76 65 20 27 72 61 77 29 29 20 22 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 rective.'raw)).""))...........(p
88380 75 73 68 2d 6d 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 ush-mark.nil.'nomsg)).........(a
883a0 6e 64 20 28 66 75 6e 63 74 69 6f 6e 70 20 73 65 74 75 70 29 20 28 66 75 6e 63 61 6c 6c 20 73 65 nd.(functionp.setup).(funcall.se
883c0 74 75 70 29 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 28 63 75 tup))).......(display-buffer.(cu
883e0 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 20 20 20 rrent-buffer)...................
88400 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 65 6c 65 ....`((display-buffer-below-sele
88420 63 74 65 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 64 69 cted..........................di
88440 73 70 6c 61 79 2d 62 75 66 66 65 72 2d 75 73 65 2d 73 6f 6d 65 2d 77 69 6e 64 6f 77 29 0a 20 20 splay-buffer-use-some-window)...
88460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 6f 6d 65 2d 77 69 6e 64 ......................(some-wind
88480 6f 77 20 20 20 2e 20 6c 72 75 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ow.....lru).....................
884a0 20 20 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 ....(body-function...,#'select-w
884c0 69 6e 64 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 indow).........................(
884e0 77 69 6e 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 window-height...,#'fit-window-to
88500 2d 62 75 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 -buffer))).......(let.((quit-to-
88520 6d 65 6e 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 20 22 43 61 menu..............(lambda.()."Ca
88540 6e 63 65 6c 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 20 75 70 64 61 74 65 20 61 6e 64 20 72 ncel.system.message.update.and.r
88560 65 74 75 72 6e 2e 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 71 75 69 74 2d 77 69 6e eturn."................(quit-win
88580 64 6f 77 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 6d 69 6e dow)................(unless.(min
885a0 69 62 75 66 66 65 72 70 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 69 73 70 ibufferp)..................(disp
885c0 6c 61 79 2d 62 75 66 66 65 72 20 6f 72 69 67 2d 62 75 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 lay-buffer.orig-buf.............
885e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 60 28 28 64 69 73 70 6c 61 79 2d .....................`((display-
88600 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 20 buffer-reuse-window.............
88620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 69 73 70 6c 61 79 2d ........................display-
88640 62 75 66 66 65 72 2d 75 73 65 2d 73 6f 6d 65 2d 77 69 6e 64 6f 77 29 0a 20 20 20 20 20 20 20 20 buffer-use-some-window).........
88660 20 20 20 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 6f 64 79 ...........................(body
88680 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 6f 77 29 29 29 29 -function...,#'select-window))))
886a0 29 29 29 0a 20 20 20 20 20 20 20 20 28 75 73 65 2d 6c 6f 63 61 6c 2d 6d 61 70 0a 20 20 20 20 20 ))).........(use-local-map......
886c0 20 20 20 20 28 6d 61 6b 65 2d 63 6f 6d 70 6f 73 65 64 2d 6b 65 79 6d 61 70 0a 20 20 20 20 20 20 ....(make-composed-keymap.......
886e0 20 20 20 20 28 64 65 66 69 6e 65 2d 6b 65 79 6d 61 70 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 ....(define-keymap............."
88700 43 2d 63 20 43 2d 63 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 29 20 C-c.C-c".............(lambda.().
88720 22 43 6f 6e 66 69 72 6d 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 20 61 6e 64 20 72 65 74 75 "Confirm.system.message.and.retu
88740 72 6e 2e 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 rn."...............(interactive)
88760 0a 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 2d 6d 65 73 ...............(let.((system-mes
88780 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 28 62 75 66 66 65 sage......................(buffe
887a0 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 6d 73 67 2d 73 74 r-substring-no-properties.msg-st
887c0 61 72 74 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 art.(point-max))))..............
887e0 20 20 20 28 77 68 65 6e 20 73 79 6d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 ...(when.sym...................(
88800 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 20 with-current-buffer.orig-buf....
88820 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 65 74 2d 77 69 74 .................(gptel--set-wit
88840 68 2d 73 63 6f 70 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 79 6d h-scope......................sym
88860 20 28 69 66 20 28 63 64 72 2d 73 61 66 65 20 64 69 72 65 63 74 69 76 65 29 20 3b 48 61 6e 64 6c .(if.(cdr-safe.directive).;Handl
88880 65 20 6c 69 73 74 20 6f 66 20 73 74 72 69 6e 67 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 e.list.of.strings...............
888a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 67 31 20 64 69 72 65 63 74 69 76 65 20 ...............(prog1.directive.
888c0 28 73 65 74 63 61 72 20 64 69 72 65 63 74 69 76 65 20 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 (setcar.directive.system-message
888e0 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 73 79 ))............................sy
88900 73 74 65 6d 2d 6d 65 73 73 61 67 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 stem-message)...................
88920 20 20 20 67 70 74 65 6c 2d 2d 73 65 74 2d 62 75 66 66 65 72 2d 6c 6f 63 61 6c 6c 79 29 29 29 0a ...gptel--set-buffer-locally))).
88940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 71 75 69 74 2d 74 6f ................(funcall.quit-to
88960 2d 6d 65 6e 75 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 66 75 -menu).................(when.(fu
88980 6e 63 74 69 6f 6e 70 20 63 61 6c 6c 62 61 63 6b 29 20 28 66 75 6e 63 61 6c 6c 20 63 61 6c 6c 62 nctionp.callback).(funcall.callb
889a0 61 63 6b 20 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 ack.system-message))))..........
889c0 20 20 20 22 43 2d 63 20 43 2d 6b 22 20 28 6c 61 6d 62 64 61 20 28 29 20 28 69 6e 74 65 72 61 63 ..."C-c.C-k".(lambda.().(interac
889e0 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 20 20 20 28 66 tive).........................(f
88a00 75 6e 63 61 6c 6c 20 71 75 69 74 2d 74 6f 2d 6d 65 6e 75 29 0a 20 20 20 20 20 20 20 20 20 20 20 uncall.quit-to-menu)............
88a20 20 20 20 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 63 61 .............(when.(functionp.ca
88a40 6c 6c 62 61 63 6b 29 20 28 66 75 6e 63 61 6c 6c 20 63 61 6c 6c 62 61 63 6b 20 6e 69 6c 29 29 29 llback).(funcall.callback.nil)))
88a60 29 0a 20 20 20 20 20 20 20 20 20 20 74 65 78 74 2d 6d 6f 64 65 2d 6d 61 70 29 29 29 29 29 29 0a )...........text-mode-map)))))).
88a80 0a 3b 3b 20 2a 2a 20 53 75 66 66 69 78 20 66 6f 72 20 64 69 73 70 6c 61 79 69 6e 67 20 61 6e 64 .;;.**.Suffix.for.displaying.and
88aa0 20 72 65 6d 6f 76 69 6e 67 20 63 6f 6e 74 65 78 74 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 .removing.context.(declare-funct
88ac0 69 6f 6e 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 62 75 66 66 65 72 2d 73 65 74 75 70 20 ion.gptel-context--buffer-setup.
88ae0 22 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 "gptel-context").(declare-functi
88b00 6f 6e 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 63 6f 6c 6c 65 63 74 20 22 67 70 74 65 6c on.gptel-context--collect."gptel
88b20 2d 63 6f 6e 74 65 78 74 22 29 0a 0a 28 74 72 61 6e 73 69 65 6e 74 2d 64 65 66 69 6e 65 2d 73 75 -context")..(transient-define-su
88b40 66 66 69 78 20 67 70 74 65 6c 2d 2d 73 75 66 66 69 78 2d 63 6f 6e 74 65 78 74 2d 62 75 66 66 65 ffix.gptel--suffix-context-buffe
88b60 72 20 28 29 0a 20 20 22 44 69 73 70 6c 61 79 20 61 6c 6c 20 63 6f 6e 74 65 78 74 73 20 66 72 6f r.()..."Display.all.contexts.fro
88b80 6d 20 61 6c 6c 20 62 75 66 66 65 72 73 20 26 20 66 69 6c 65 73 2e 22 0a 20 20 3a 74 72 61 6e 73 m.all.buffers.&.files."...:trans
88ba0 69 65 6e 74 20 27 74 72 61 6e 73 69 65 6e 74 2d 2d 64 6f 2d 65 78 69 74 0a 20 20 3a 6b 65 79 20 ient.'transient--do-exit...:key.
88bc0 22 20 43 22 0a 20 20 3a 69 66 20 28 6c 61 6d 62 64 61 20 28 29 20 67 70 74 65 6c 2d 63 6f 6e 74 ".C"...:if.(lambda.().gptel-cont
88be0 65 78 74 2d 2d 61 6c 69 73 74 29 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 49 6e 73 70 ext--alist)...:description."Insp
88c00 65 63 74 20 63 6f 6e 74 65 78 74 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 28 ect.context"...(interactive)...(
88c20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 62 75 66 66 65 72 2d 73 65 74 75 70 29 29 0a 0a 28 gptel-context--buffer-setup))..(
88c40 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 0a 3b 3b 3b 20 67 70 provide.'gptel-transient).;;;.gp
88c60 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 65 0a 0a 3b 3b 20 4c tel-transient.el.ends.here..;;.L
88c80 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 65 2d 72 65 67 65 78 ocal.Variables:.;;.outline-regex
88ca0 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 75 74 6c 69 6e 65 2d p:."^;;.\\*+".;;.eval:.(outline-
88cc0 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 00 00 00 00 00 00 00 minor-mode.1).;;.End:...........
88ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88d00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88d20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88e00 67 70 74 65 6c 2d 30 2e 39 2e 39 2f 67 70 74 65 6c 2d 6f 70 65 6e 61 69 2d 65 78 74 72 61 73 2e gptel-0.9.9/gptel-openai-extras.
88e20 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..............................
88e40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88e60 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
88e80 30 30 33 37 33 31 30 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 35 35 32 31 00 20 30 00 00 00 0037310.00000000000.015521..0...
88ea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88ec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88ee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88f00 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...................
88f20 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...................
88f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88f60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
89000 3b 3b 3b 20 67 70 74 65 6c 2d 6f 70 65 6e 61 69 2d 65 78 74 72 61 73 2e 65 6c 20 2d 2d 2d 20 45 ;;;.gptel-openai-extras.el.---.E
89020 78 74 65 6e 73 69 6f 6e 73 20 74 6f 20 74 68 65 20 4f 70 65 6e 41 49 20 41 50 49 20 2d 2a 2d 20 xtensions.to.the.OpenAI.API.-*-.
89040 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 79 lexical-binding:.t;.-*-..;;.Copy
89060 72 69 67 68 74 20 28 43 29 20 32 30 32 33 2d 32 30 32 35 20 20 4b 61 72 74 68 69 6b 20 43 68 69 right.(C).2023-2025..Karthik.Chi
89080 6b 6d 61 67 61 6c 75 72 0a 0a 3b 3b 20 41 75 74 68 6f 72 73 3a 20 4b 61 72 74 68 69 6b 20 43 68 kmagalur..;;.Authors:.Karthik.Ch
890a0 69 6b 6d 61 67 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 ikmagalur.<karthikchikmagalur@gm
890c0 61 69 6c 2e 63 6f 6d 3e 20 61 6e 64 20 70 69 72 6d 69 6e 6a 0a 0a 3b 3b 20 54 68 69 73 20 70 72 ail.com>.and.pirminj..;;.This.pr
890e0 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 75 20 63 61 6e 20 ogram.is.free.software;.you.can.
89100 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 69 66 79 0a 3b 3b redistribute.it.and/or.modify.;;
89120 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 20 47 4e 55 20 47 .it.under.the.terms.of.the.GNU.G
89140 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 75 62 6c 69 73 68 eneral.Public.License.as.publish
89160 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 20 46 6f 75 6e 64 ed.by.;;.the.Free.Software.Found
89180 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 20 74 68 65 20 4c ation,.either.version.3.of.the.L
891a0 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 69 6f 6e 29 20 61 icense,.or.;;.(at.your.option).a
891c0 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 20 70 72 6f 67 72 ny.later.version...;;.This.progr
891e0 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 6f 70 65 20 74 68 am.is.distributed.in.the.hope.th
89200 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 75 74 20 57 49 54 at.it.will.be.useful,.;;.but.WIT
89220 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 20 65 76 65 6e 20 HOUT.ANY.WARRANTY;.without.even.
89240 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 20 4d 45 52 43 48 the.implied.warranty.of.;;.MERCH
89260 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 41 20 50 41 52 54 ANTABILITY.or.FITNESS.FOR.A.PART
89280 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 3b 20 47 4e 55 20 ICULAR.PURPOSE...See.the.;;.GNU.
892a0 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 20 6d 6f 72 65 20 General.Public.License.for.more.
892c0 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 76 65 20 72 65 63 details...;;.You.should.have.rec
892e0 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 6e 65 72 61 6c 20 eived.a.copy.of.the.GNU.General.
89300 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 74 68 20 74 68 69 Public.License.;;.along.with.thi
89320 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 74 74 70 73 3a 2f s.program...If.not,.see.<https:/
89340 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 3b 3b 3b 20 43 6f /www.gnu.org/licenses/>...;;;.Co
89360 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 64 73 20 73 75 70 mmentary:..;;.This.file.adds.sup
89380 70 6f 72 74 20 66 6f 72 20 50 72 69 76 61 74 65 67 70 74 27 73 20 4d 65 73 73 61 67 65 73 20 41 port.for.Privategpt's.Messages.A
893a0 50 49 20 61 6e 64 0a 3b 3b 20 50 65 72 70 6c 65 78 69 74 79 27 73 20 43 69 74 61 74 69 6f 6e 73 PI.and.;;.Perplexity's.Citations
893c0 20 66 65 61 74 75 72 65 20 74 6f 20 67 70 74 65 6c 0a 0a 3b 3b 3b 20 43 6f 64 65 3a 0a 28 72 65 .feature.to.gptel..;;;.Code:.(re
893e0 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 65 6e 2d 63 6f quire.'cl-generic).(eval-when-co
89400 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 28 72 65 71 75 mpile...(require.'cl-lib)).(requ
89420 69 72 65 20 27 6d 61 70 29 0a 28 72 65 71 75 69 72 65 20 27 67 70 74 65 6c 29 0a 0a 28 64 65 66 ire.'map).(require.'gptel)..(def
89440 76 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 var.json-object-type)..(declare-
89460 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 2d function.prop-match-value."text-
89480 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
894a0 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 72 ion.text-property-search-backwar
894c0 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 61 d."text-property-search").(decla
894e0 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 20 28 29 29 re-function.json-read."json".())
89500 0a 0a 0a 0a 3b 3b 3b 20 50 72 69 76 61 74 65 67 70 74 20 28 4d 65 73 73 61 67 65 73 20 41 50 49 ....;;;.Privategpt.(Messages.API
89520 29 0a 28 63 6c 2d 64 65 66 73 74 72 75 63 74 20 28 67 70 74 65 6c 2d 70 72 69 76 61 74 65 67 70 ).(cl-defstruct.(gptel-privategp
89540 74 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 70 72 69 76 t.(:constructor.gptel--make-priv
89560 61 74 65 67 70 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 ategpt).........................
89580 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 20 20 20 .......(:copier.nil)............
895a0 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 20 67 70 ....................(:include.gp
895c0 74 65 6c 2d 6f 70 65 6e 61 69 29 29 0a 20 20 63 6f 6e 74 65 78 74 20 73 6f 75 72 63 65 73 29 0a tel-openai))...context.sources).
895e0 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 70 72 69 76 61 74 65 67 70 74 2d 70 61 72 73 65 2d .(defun.gptel--privategpt-parse-
89600 73 6f 75 72 63 65 73 20 28 72 65 73 70 6f 6e 73 65 29 0a 20 20 28 63 6c 2d 6c 6f 6f 70 20 77 69 sources.(response)...(cl-loop.wi
89620 74 68 20 73 6f 75 72 63 65 2d 61 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 73 th.source-alist............for.s
89640 6f 75 72 63 65 20 61 63 72 6f 73 73 20 28 6d 61 70 2d 6e 65 73 74 65 64 2d 65 6c 74 20 72 65 73 ource.across.(map-nested-elt.res
89660 70 6f 6e 73 65 20 27 28 3a 63 68 6f 69 63 65 73 20 30 20 3a 73 6f 75 72 63 65 73 29 29 0a 20 20 ponse.'(:choices.0.:sources))...
89680 20 20 20 20 20 20 20 20 20 66 6f 72 20 6e 61 6d 65 20 3d 20 28 6d 61 70 2d 6e 65 73 74 65 64 2d .........for.name.=.(map-nested-
896a0 65 6c 74 20 73 6f 75 72 63 65 20 27 28 3a 64 6f 63 75 6d 65 6e 74 20 3a 64 6f 63 5f 6d 65 74 61 elt.source.'(:document.:doc_meta
896c0 64 61 74 61 20 3a 66 69 6c 65 5f 6e 61 6d 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 data.:file_name))............for
896e0 20 70 61 67 65 20 3d 20 28 6d 61 70 2d 6e 65 73 74 65 64 2d 65 6c 74 20 73 6f 75 72 63 65 20 27 .page.=.(map-nested-elt.source.'
89700 28 3a 64 6f 63 75 6d 65 6e 74 20 3a 64 6f 63 5f 6d 65 74 61 64 61 74 61 20 3a 70 61 67 65 5f 6c (:document.:doc_metadata.:page_l
89720 61 62 65 6c 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 64 6f 20 28 70 75 73 68 20 70 61 67 65 20 abel))............do.(push.page.
89740 28 61 6c 69 73 74 2d 67 65 74 20 6e 61 6d 65 20 73 6f 75 72 63 65 2d 61 6c 69 73 74 20 6e 69 6c (alist-get.name.source-alist.nil
89760 20 6e 69 6c 20 23 27 65 71 75 61 6c 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c .nil.#'equal))............finall
89780 79 20 72 65 74 75 72 6e 0a 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 y.return............(cl-loop.for
897a0 20 28 66 69 6c 65 2d 6e 61 6d 65 20 2e 20 66 69 6c 65 2d 70 61 67 65 73 29 20 69 6e 20 73 6f 75 .(file-name...file-pages).in.sou
897c0 72 63 65 2d 61 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f rce-alist.....................fo
897e0 72 20 70 61 67 65 73 20 3d 20 28 64 65 6c 65 74 65 2d 64 75 70 73 20 28 64 65 6c 71 20 6e 69 6c r.pages.=.(delete-dups.(delq.nil
89800 20 66 69 6c 65 2d 70 61 67 65 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .file-pages))...................
89820 20 20 69 66 20 70 61 67 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 ..if.pages.....................c
89840 6f 6c 6c 65 63 74 20 28 66 6f 72 6d 61 74 20 22 2d 20 25 73 20 28 70 61 67 65 20 25 73 29 22 20 ollect.(format."-.%s.(page.%s)".
89860 66 69 6c 65 2d 6e 61 6d 65 20 28 6d 61 70 63 6f 6e 63 61 74 20 23 27 69 64 65 6e 74 69 74 79 20 file-name.(mapconcat.#'identity.
89880 70 61 67 65 73 20 22 2c 20 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 pages.",."))....................
898a0 20 69 6e 74 6f 20 73 6f 75 72 63 65 2d 69 74 65 6d 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 .into.source-items..............
898c0 20 20 20 20 20 20 20 65 6c 73 65 20 63 6f 6c 6c 65 63 74 20 28 66 6f 72 6d 61 74 20 22 2d 20 25 .......else.collect.(format."-.%
898e0 73 22 20 66 69 6c 65 2d 6e 61 6d 65 29 20 69 6e 74 6f 20 73 6f 75 72 63 65 2d 69 74 65 6d 73 0a s".file-name).into.source-items.
89900 20 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 65 74 75 ....................finally.retu
89920 72 6e 20 28 6d 61 70 63 6f 6e 63 61 74 20 23 27 69 64 65 6e 74 69 74 79 20 28 63 6f 6e 73 20 22 rn.(mapconcat.#'identity.(cons."
89940 5c 6e 5c 6e 53 6f 75 72 63 65 73 3a 22 20 73 6f 75 72 63 65 2d 69 74 65 6d 73 29 20 22 5c 6e 22 \n\nSources:".source-items)."\n"
89960 29 29 29 29 0a 0a 3b 3b 20 46 49 58 4d 45 28 74 6f 6f 6c 29 20 61 64 64 20 74 6f 6f 6c 20 75 73 ))))..;;.FIXME(tool).add.tool.us
89980 65 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 e.(cl-defmethod.gptel-curl--pars
899a0 65 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 70 72 69 76 61 74 e-stream.((_backend.gptel-privat
899c0 65 67 70 74 29 20 69 6e 66 6f 29 0a 20 20 28 6c 65 74 2a 20 28 28 63 6f 6e 74 65 6e 74 2d 73 74 egpt).info)...(let*.((content-st
899e0 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 6e 69 6c 0a 20 20 20 rs)).....(condition-case.nil....
89a00 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 72 64 20 22 .....(while.(re-search-forward."
89a20 5e 64 61 74 61 3a 22 20 6e 69 6c 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 61 76 65 2d 6d ^data:".nil.t)...........(save-m
89a40 61 74 63 68 2d 64 61 74 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 6c 6f 6f 6b 69 atch-data.............(if.(looki
89a60 6e 67 2d 61 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 ng-at.".*\\[DONE\\]")...........
89a80 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 73 6f 75 72 63 65 73 2d 73 74 72 69 6e ......(when-let*.((sources-strin
89aa0 67 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 73 6f 75 72 63 65 73 29 29 29 0a 20 20 g.(plist-get.info.:sources)))...
89ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 73 6f 75 72 63 65 73 2d 73 74 ................(push.sources-st
89ae0 72 69 6e 67 20 63 6f 6e 74 65 6e 74 2d 73 74 72 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 ring.content-strs)).............
89b00 20 20 28 6c 65 74 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 ..(let.((response.(gptel--json-r
89b20 65 61 64 29 29 29 0a 09 09 28 75 6e 6c 65 73 73 20 28 6f 72 20 28 70 6c 69 73 74 2d 67 65 74 20 ead)))...(unless.(or.(plist-get.
89b40 69 6e 66 6f 20 3a 73 6f 75 72 63 65 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 info.:sources)..................
89b60 20 20 20 20 20 20 20 20 20 20 20 28 6e 6f 74 20 28 67 70 74 65 6c 2d 70 72 69 76 61 74 65 67 70 ...........(not.(gptel-privategp
89b80 74 2d 73 6f 75 72 63 65 73 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 62 61 63 6b 65 t-sources.(plist-get.info.:backe
89ba0 6e 64 29 29 29 29 0a 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 nd))))...................(plist-
89bc0 70 75 74 20 69 6e 66 6f 20 3a 73 6f 75 72 63 65 73 20 28 67 70 74 65 6c 2d 2d 70 72 69 76 61 74 put.info.:sources.(gptel--privat
89be0 65 67 70 74 2d 70 61 72 73 65 2d 73 6f 75 72 63 65 73 20 72 65 73 70 6f 6e 73 65 29 29 29 0a 09 egpt-parse-sources.response)))..
89c00 09 28 6c 65 74 2a 20 28 28 64 65 6c 74 61 20 28 6d 61 70 2d 6e 65 73 74 65 64 2d 65 6c 74 20 72 .(let*.((delta.(map-nested-elt.r
89c20 65 73 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 09 esponse.'(:choices.0.:delta)))..
89c40 09 20 20 20 20 20 20 20 28 63 6f 6e 74 65 6e 74 20 28 70 6c 69 73 74 2d 67 65 74 20 64 65 6c 74 ........(content.(plist-get.delt
89c60 61 20 3a 63 6f 6e 74 65 6e 74 29 29 29 0a 09 09 20 20 28 70 75 73 68 20 63 6f 6e 74 65 6e 74 20 a.:content))).....(push.content.
89c80 63 6f 6e 74 65 6e 74 2d 73 74 72 73 29 29 29 29 29 29 0a 20 20 20 20 20 20 28 65 72 72 6f 72 0a content-strs)))))).......(error.
89ca0 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 6d 61 74 63 68 2d 62 65 67 69 6e 6e 69 .......(goto-char.(match-beginni
89cc0 6e 67 20 30 29 29 29 29 0a 20 20 20 20 28 61 70 70 6c 79 20 23 27 63 6f 6e 63 61 74 20 28 6e 72 ng.0)))).....(apply.#'concat.(nr
89ce0 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 3b 3b 20 46 49 58 4d everse.content-strs))))..;;.FIXM
89d00 45 28 74 6f 6f 6c 29 20 61 64 64 20 74 6f 6f 6c 20 75 73 65 0a 28 63 6c 2d 64 65 66 6d 65 74 68 E(tool).add.tool.use.(cl-defmeth
89d20 6f 64 20 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 72 65 73 70 6f 6e 73 65 20 28 28 5f 62 61 63 6b od.gptel--parse-response.((_back
89d40 65 6e 64 20 67 70 74 65 6c 2d 70 72 69 76 61 74 65 67 70 74 29 20 72 65 73 70 6f 6e 73 65 20 69 end.gptel-privategpt).response.i
89d60 6e 66 6f 29 0a 20 20 28 6c 65 74 20 28 28 72 65 73 70 6f 6e 73 65 2d 73 74 72 69 6e 67 20 28 6d nfo)...(let.((response-string.(m
89d80 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 6f 69 63 65 ap-nested-elt.response.'(:choice
89da0 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 20 20 20 20 20 20 20 s.0.:message.:content)))........
89dc0 20 28 73 6f 75 72 63 65 73 2d 73 74 72 69 6e 67 20 28 61 6e 64 20 28 67 70 74 65 6c 2d 70 72 69 .(sources-string.(and.(gptel-pri
89de0 76 61 74 65 67 70 74 2d 73 6f 75 72 63 65 73 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 vategpt-sources.(plist-get.info.
89e00 3a 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 20 20 20 :backend))......................
89e20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 70 72 69 76 61 74 65 67 70 74 2d 70 61 72 73 65 ........(gptel--privategpt-parse
89e40 2d 73 6f 75 72 63 65 73 20 72 65 73 70 6f 6e 73 65 29 29 29 29 0a 20 20 20 20 28 63 6f 6e 63 61 -sources.response)))).....(conca
89e60 74 20 72 65 73 70 6f 6e 73 65 2d 73 74 72 69 6e 67 20 73 6f 75 72 63 65 73 2d 73 74 72 69 6e 67 t.response-string.sources-string
89e80 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 72 65 71 75 65 73 )))..(cl-defmethod.gptel--reques
89ea0 74 2d 64 61 74 61 20 28 28 5f 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 70 72 69 76 61 74 65 67 t-data.((_backend.gptel-privateg
89ec0 70 74 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 50 52 4f 4d pt).prompts)..."JSON.encode.PROM
89ee0 50 54 53 20 66 6f 72 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 PTS.for.sending.to.ChatGPT."...(
89f00 6c 65 74 20 28 28 70 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 let.((prompts-plist..........`(:
89f20 6d 6f 64 65 6c 20 2c 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 6e 61 6d 65 20 67 70 74 65 6c 2d model.,(gptel--model-name.gptel-
89f40 6d 6f 64 65 6c 29 0a 09 20 20 20 3a 6d 65 73 73 61 67 65 73 20 5b 2c 40 70 72 6f 6d 70 74 73 5d model).....:messages.[,@prompts]
89f60 0a 09 20 20 20 3a 75 73 65 5f 63 6f 6e 74 65 78 74 20 2c 28 6f 72 20 28 67 70 74 65 6c 2d 70 72 .....:use_context.,(or.(gptel-pr
89f80 69 76 61 74 65 67 70 74 2d 63 6f 6e 74 65 78 74 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 20 ivategpt-context.gptel-backend).
89fa0 3a 6a 73 6f 6e 2d 66 61 6c 73 65 29 0a 09 20 20 20 3a 69 6e 63 6c 75 64 65 5f 73 6f 75 72 63 65 :json-false).....:include_source
89fc0 73 20 2c 28 6f 72 20 28 67 70 74 65 6c 2d 70 72 69 76 61 74 65 67 70 74 2d 73 6f 75 72 63 65 73 s.,(or.(gptel-privategpt-sources
89fe0 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 20 3a 6a 73 6f 6e 2d 66 61 6c 73 65 29 0a 20 20 20 .gptel-backend).:json-false)....
8a000 20 20 20 20 20 20 20 20 3a 73 74 72 65 61 6d 20 2c 28 6f 72 20 67 70 74 65 6c 2d 73 74 72 65 61 ........:stream.,(or.gptel-strea
8a020 6d 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 28 61 6e 64 m.:json-false)))).....(when.(and
8a040 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 20 20 20 20 20 .gptel--system-message..........
8a060 20 20 20 20 20 20 28 6e 6f 74 20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 63 61 70 61 62 6c 65 ......(not.(gptel--model-capable
8a080 2d 70 20 27 6e 6f 73 79 73 74 65 6d 29 29 29 0a 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 -p.'nosystem))).......(plist-put
8a0a0 20 70 72 6f 6d 70 74 73 2d 70 6c 69 73 74 20 3a 73 79 73 74 65 6d 20 67 70 74 65 6c 2d 2d 73 79 .prompts-plist.:system.gptel--sy
8a0c0 73 74 65 6d 2d 6d 65 73 73 61 67 65 29 29 0a 20 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 74 stem-message)).....(when.gptel-t
8a0e0 65 6d 70 65 72 61 74 75 72 65 0a 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 70 72 6f 6d emperature.......(plist-put.prom
8a100 70 74 73 2d 70 6c 69 73 74 20 3a 74 65 6d 70 65 72 61 74 75 72 65 20 67 70 74 65 6c 2d 74 65 6d pts-plist.:temperature.gptel-tem
8a120 70 65 72 61 74 75 72 65 29 29 0a 20 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 6d 61 78 2d 74 perature)).....(when.gptel-max-t
8a140 6f 6b 65 6e 73 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 okens.......(plist-put.prompts-p
8a160 6c 69 73 74 20 3a 6d 61 78 5f 74 6f 6b 65 6e 73 20 67 70 74 65 6c 2d 6d 61 78 2d 74 6f 6b 65 6e list.:max_tokens.gptel-max-token
8a180 73 29 29 0a 20 20 20 20 3b 3b 20 4d 65 72 67 65 20 72 65 71 75 65 73 74 20 70 61 72 61 6d 73 20 s)).....;;.Merge.request.params.
8a1a0 77 69 74 68 20 6d 6f 64 65 6c 20 61 6e 64 20 62 61 63 6b 65 6e 64 20 70 61 72 61 6d 73 2e 0a 20 with.model.and.backend.params...
8a1c0 20 20 20 28 67 70 74 65 6c 2d 2d 6d 65 72 67 65 2d 70 6c 69 73 74 73 0a 20 20 20 20 20 70 72 6f ...(gptel--merge-plists......pro
8a1e0 6d 70 74 73 2d 70 6c 69 73 74 0a 20 20 20 20 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 72 mpts-plist......(gptel-backend-r
8a200 65 71 75 65 73 74 2d 70 61 72 61 6d 73 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 0a 20 20 20 equest-params.gptel-backend)....
8a220 20 20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 20 20 ..(gptel--model-request-params..
8a240 67 70 74 65 6c 2d 6d 6f 64 65 6c 29 29 29 29 0a 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 gptel-model))))...;;;###autoload
8a260 0a 28 63 6c 2d 64 65 66 75 6e 20 67 70 74 65 6c 2d 6d 61 6b 65 2d 70 72 69 76 61 74 65 67 70 74 .(cl-defun.gptel-make-privategpt
8a280 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 73 74 72 65 61 6d .....(name.&key.curl-args.stream
8a2a0 20 6b 65 79 20 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 0a 20 20 20 20 20 20 20 20 20 20 28 68 .key.request-params...........(h
8a2c0 65 61 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 eader............(lambda.().(whe
8a2e0 6e 2d 6c 65 74 2a 20 28 28 6b 65 79 20 28 67 70 74 65 6c 2d 2d 67 65 74 2d 61 70 69 2d 6b 65 79 n-let*.((key.(gptel--get-api-key
8a300 29 29 29 0a 09 09 20 20 20 60 28 28 22 41 75 74 68 6f 72 69 7a 61 74 69 6f 6e 22 20 2e 20 2c 28 )))......`(("Authorization"...,(
8a320 63 6f 6e 63 61 74 20 22 42 65 61 72 65 72 20 22 20 6b 65 79 29 29 29 29 29 29 0a 20 20 20 20 20 concat."Bearer.".key))))))......
8a340 20 20 20 20 20 28 68 6f 73 74 20 22 6c 6f 63 61 6c 68 6f 73 74 3a 38 30 30 31 22 29 0a 20 20 20 .....(host."localhost:8001")....
8a360 20 20 20 20 20 20 20 28 70 72 6f 74 6f 63 6f 6c 20 22 68 74 74 70 22 29 0a 09 20 20 28 6d 6f 64 .......(protocol."http")....(mod
8a380 65 6c 73 20 27 28 70 72 69 76 61 74 65 2d 67 70 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 65 els.'(private-gpt))...........(e
8a3a0 6e 64 70 6f 69 6e 74 20 22 2f 76 31 2f 63 68 61 74 2f 63 6f 6d 70 6c 65 74 69 6f 6e 73 22 29 0a ndpoint."/v1/chat/completions").
8a3c0 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 74 65 78 74 20 74 29 20 28 73 6f 75 72 63 65 73 20 74 ..........(context.t).(sources.t
8a3e0 29 29 0a 20 20 22 52 65 67 69 73 74 65 72 20 61 6e 20 50 72 69 76 61 74 65 67 70 74 20 41 50 49 ))..."Register.an.Privategpt.API
8a400 2d 63 6f 6d 70 61 74 69 62 6c 65 20 62 61 63 6b 65 6e 64 20 66 6f 72 20 67 70 74 65 6c 20 77 69 -compatible.backend.for.gptel.wi
8a420 74 68 20 4e 41 4d 45 2e 0a 0a 4b 65 79 77 6f 72 64 20 61 72 67 75 6d 65 6e 74 73 3a 0a 0a 43 55 th.NAME...Keyword.arguments:..CU
8a440 52 4c 2d 41 52 47 53 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 RL-ARGS.(optional).is.a.list.of.
8a460 61 64 64 69 74 69 6f 6e 61 6c 20 43 75 72 6c 20 61 72 67 75 6d 65 6e 74 73 2e 0a 0a 48 4f 53 54 additional.Curl.arguments...HOST
8a480 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 74 68 65 20 41 50 49 20 68 6f 73 74 2c 20 5c 22 61 .(optional).is.the.API.host,.\"a
8a4a0 70 69 2e 70 72 69 76 61 74 65 67 70 74 2e 63 6f 6d 5c 22 20 62 79 20 64 65 66 61 75 6c 74 2e 0a pi.privategpt.com\".by.default..
8a4c0 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 20 6d .MODELS.is.a.list.of.available.m
8a4e0 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 61 6e odel.names...STREAM.is.a.boolean
8a500 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 2c 20 .to.toggle.streaming.responses,.
8a520 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 6f 70 defaults.to.false...PROTOCOL.(op
8a540 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 2c 20 tional).specifies.the.protocol,.
8a560 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 28 6f 70 74 https.by.default...ENDPOINT.(opt
8a580 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 72 20 63 ional).is.the.API.endpoint.for.c
8a5a0 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 31 2f 6d 65 ompletions,.defaults.to.\"/v1/me
8a5c0 73 73 61 67 65 73 5c 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 ssages\"...HEADER.(optional).is.
8a5e0 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 6e 64 20 77 for.additional.headers.to.send.w
8a600 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 62 65 20 61 ith.each.request..It.should.be.a
8a620 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 65 74 75 6e n.alist.or.a.function.that.retun
8a640 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 74 2d 54 79 s.an.alist,.like:.((\"Content-Ty
8a660 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 29 0a 0a 4b pe\"...\"application/json\"))..K
8a680 45 59 20 69 73 20 61 20 76 61 72 69 61 62 6c 65 20 77 68 6f 73 65 20 76 61 6c 75 65 20 69 73 20 EY.is.a.variable.whose.value.is.
8a6a0 74 68 65 20 41 50 49 20 6b 65 79 2c 20 6f 72 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 0a 72 65 the.API.key,.or.function.that.re
8a6c0 74 75 72 6e 73 20 74 68 65 20 6b 65 79 2e 0a 0a 43 4f 4e 54 45 58 54 20 61 6e 64 20 53 4f 55 52 turns.the.key...CONTEXT.and.SOUR
8a6e0 43 45 53 3a 20 69 66 20 74 72 75 65 20 28 74 68 65 20 64 65 66 61 75 6c 74 29 2c 20 75 73 65 20 CES:.if.true.(the.default),.use.
8a700 61 76 61 69 6c 61 62 6c 65 20 63 6f 6e 74 65 78 74 0a 61 6e 64 20 70 72 6f 76 69 64 65 20 73 6f available.context.and.provide.so
8a720 75 72 63 65 73 20 75 73 65 64 20 62 79 20 74 68 65 20 6d 6f 64 65 6c 20 74 6f 20 67 65 6e 65 72 urces.used.by.the.model.to.gener
8a740 61 74 65 20 74 68 65 20 72 65 73 70 6f 6e 73 65 2e 0a 0a 52 45 51 55 45 53 54 2d 50 41 52 41 4d ate.the.response...REQUEST-PARAM
8a760 53 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 61 20 70 6c 69 73 74 20 6f 66 20 61 64 64 69 74 S.(optional).is.a.plist.of.addit
8a780 69 6f 6e 61 6c 20 48 54 54 50 20 72 65 71 75 65 73 74 0a 70 61 72 61 6d 65 74 65 72 73 20 28 61 ional.HTTP.request.parameters.(a
8a7a0 73 20 70 6c 69 73 74 20 6b 65 79 73 29 20 61 6e 64 20 76 61 6c 75 65 73 20 73 75 70 70 6f 72 74 s.plist.keys).and.values.support
8a7c0 65 64 20 62 79 20 74 68 65 20 41 50 49 2e 20 20 55 73 65 0a 74 68 65 73 65 20 74 6f 20 73 65 74 ed.by.the.API...Use.these.to.set
8a7e0 20 70 61 72 61 6d 65 74 65 72 73 20 74 68 61 74 20 67 70 74 65 6c 20 64 6f 65 73 20 6e 6f 74 20 .parameters.that.gptel.does.not.
8a800 70 72 6f 76 69 64 65 20 75 73 65 72 20 6f 70 74 69 6f 6e 73 0a 66 6f 72 2e 22 0a 20 20 28 64 65 provide.user.options.for."...(de
8a820 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 6b 65 clare.(indent.1))...(let.((backe
8a840 6e 64 20 28 67 70 74 65 6c 2d 2d 6d 61 6b 65 2d 70 72 69 76 61 74 65 67 70 74 0a 20 20 20 20 20 nd.(gptel--make-privategpt......
8a860 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 2d 61 72 67 .............:curl-args.curl-arg
8a880 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 6d 65 0a 20 s...................:name.name..
8a8a0 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 20 20 20 20 .................:host.host.....
8a8c0 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 0a 20 20 20 ..............:header.header....
8a8e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6b 65 79 20 6b 65 79 0a 20 20 20 20 20 20 20 20 ...............:key.key.........
8a900 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 20 20 20 20 ..........:models.models........
8a920 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 6c 0a 20 20 ...........:protocol.protocol...
8a940 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 64 70 6f 69 ................:endpoint.endpoi
8a960 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 20 73 74 72 nt...................:stream.str
8a980 65 61 6d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 72 65 71 75 65 73 74 2d 70 eam...................:request-p
8a9a0 61 72 61 6d 73 20 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 0a 20 20 20 20 20 20 20 20 20 20 20 arams.request-params............
8a9c0 20 20 20 20 20 20 20 3a 75 72 6c 20 28 69 66 20 70 72 6f 74 6f 63 6f 6c 0a 20 20 20 20 20 20 20 .......:url.(if.protocol........
8a9e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 70 72 6f 74 ....................(concat.prot
8aa00 6f 63 6f 6c 20 22 3a 2f 2f 22 20 68 6f 73 74 20 65 6e 64 70 6f 69 6e 74 29 0a 20 20 20 20 20 20 ocol."://".host.endpoint).......
8aa20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 68 6f 73 74 20 ...................(concat.host.
8aa40 65 6e 64 70 6f 69 6e 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 6f endpoint))...................:co
8aa60 6e 74 65 78 74 20 63 6f 6e 74 65 78 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ntext.context...................
8aa80 3a 73 6f 75 72 63 65 73 20 73 6f 75 72 63 65 73 29 29 29 0a 20 20 20 20 28 70 72 6f 67 31 20 62 :sources.sources))).....(prog1.b
8aaa0 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 20 6e 61 ackend.......(setf.(alist-get.na
8aac0 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 20 20 20 me.gptel--known-backends........
8aae0 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 61 6c 29 ................nil.nil.#'equal)
8ab00 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 0a 3b 3b 3b 20 50 .............backend))))...;;;.P
8ab20 65 72 70 6c 65 78 69 74 79 0a 28 63 6c 2d 64 65 66 73 74 72 75 63 74 20 28 67 70 74 65 6c 2d 70 erplexity.(cl-defstruct.(gptel-p
8ab40 65 72 70 6c 65 78 69 74 79 20 28 3a 63 6f 6e 73 74 72 75 63 74 6f 72 20 67 70 74 65 6c 2d 2d 6d erplexity.(:constructor.gptel--m
8ab60 61 6b 65 2d 70 65 72 70 6c 65 78 69 74 79 29 0a 09 09 09 09 28 3a 63 6f 70 69 65 72 20 6e 69 6c ake-perplexity).....(:copier.nil
8ab80 29 0a 09 09 09 09 28 3a 69 6e 63 6c 75 64 65 20 67 70 74 65 6c 2d 6f 70 65 6e 61 69 29 29 29 0a ).....(:include.gptel-openai))).
8aba0 0a 28 64 65 66 73 75 62 73 74 20 67 70 74 65 6c 2d 2d 70 65 72 70 6c 65 78 69 74 79 2d 70 61 72 .(defsubst.gptel--perplexity-par
8abc0 73 65 2d 63 69 74 61 74 69 6f 6e 73 20 28 63 69 74 61 74 69 6f 6e 73 29 0a 20 20 28 6c 65 74 20 se-citations.(citations)...(let.
8abe0 28 28 63 6f 75 6e 74 65 72 20 30 29 29 0a 20 20 20 20 28 63 6f 6e 63 61 74 20 22 5c 6e 5c 6e 43 ((counter.0)).....(concat."\n\nC
8ac00 69 74 61 74 69 6f 6e 73 3a 5c 6e 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 70 63 6f 6e itations:\n".............(mapcon
8ac20 63 61 74 20 28 6c 61 6d 62 64 61 20 28 75 72 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 cat.(lambda.(url)...............
8ac40 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 63 6f 75 6e 74 65 72 20 28 31 2b 20 63 6f 75 ...........(setq.counter.(1+.cou
8ac60 6e 74 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 20 20 20 20 20 nter))..........................
8ac80 28 66 6f 72 6d 61 74 20 22 5b 25 64 5d 20 25 73 22 20 63 6f 75 6e 74 65 72 20 75 72 6c 29 29 0a (format."[%d].%s".counter.url)).
8aca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 69 74 61 74 69 6f 6e 73 .......................citations
8acc0 20 22 5c 6e 22 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 ."\n"))))..(cl-defmethod.gptel--
8ace0 70 61 72 73 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 parse-response.((_backend.gptel-
8ad00 70 65 72 70 6c 65 78 69 74 79 29 20 72 65 73 70 6f 6e 73 65 20 5f 69 6e 66 6f 29 0a 20 20 22 50 perplexity).response._info)..."P
8ad20 61 72 73 65 20 50 65 72 70 6c 65 78 69 74 79 20 72 65 73 70 6f 6e 73 65 20 52 45 53 50 4f 4e 53 arse.Perplexity.response.RESPONS
8ad40 45 2e 22 0a 20 20 28 6c 65 74 20 28 28 72 65 73 70 6f 6e 73 65 2d 73 74 72 69 6e 67 20 28 6d 61 E."...(let.((response-string.(ma
8ad60 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 6f 69 63 65 73 p-nested-elt.response.'(:choices
8ad80 20 30 20 3a 6d 65 73 73 61 67 65 20 3a 63 6f 6e 74 65 6e 74 29 29 29 0a 20 20 20 20 20 20 20 20 .0.:message.:content))).........
8ada0 28 63 69 74 61 74 69 6f 6e 73 2d 73 74 72 69 6e 67 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 63 (citations-string.(when-let*.((c
8adc0 69 74 61 74 69 6f 6e 73 20 28 6d 61 70 2d 65 6c 74 20 72 65 73 70 6f 6e 73 65 20 3a 63 69 74 61 itations.(map-elt.response.:cita
8ade0 74 69 6f 6e 73 29 29 29 0a 09 09 09 20 20 20 20 28 67 70 74 65 6c 2d 2d 70 65 72 70 6c 65 78 69 tions)))........(gptel--perplexi
8ae00 74 79 2d 70 61 72 73 65 2d 63 69 74 61 74 69 6f 6e 73 20 63 69 74 61 74 69 6f 6e 73 29 29 29 29 ty-parse-citations.citations))))
8ae20 0a 20 20 20 20 28 63 6f 6e 63 61 74 20 72 65 73 70 6f 6e 73 65 2d 73 74 72 69 6e 67 20 63 69 74 .....(concat.response-string.cit
8ae40 61 74 69 6f 6e 73 2d 73 74 72 69 6e 67 29 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 ations-string)))..(cl-defmethod.
8ae60 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 6b gptel-curl--parse-stream.((_back
8ae80 65 6e 64 20 67 70 74 65 6c 2d 70 65 72 70 6c 65 78 69 74 79 29 20 69 6e 66 6f 29 0a 20 20 22 50 end.gptel-perplexity).info)..."P
8aea0 61 72 73 65 20 61 20 50 65 72 70 6c 65 78 69 74 79 20 41 50 49 20 64 61 74 61 20 73 74 72 65 61 arse.a.Perplexity.API.data.strea
8aec0 6d 20 77 69 74 68 20 49 4e 46 4f 2e 0a 0a 49 66 20 61 76 61 69 6c 61 62 6c 65 2c 20 63 6f 6c 6c m.with.INFO...If.available,.coll
8aee0 65 63 74 20 63 69 74 61 74 69 6f 6e 73 20 61 74 20 74 68 65 20 65 6e 64 20 61 6e 64 20 69 6e 63 ect.citations.at.the.end.and.inc
8af00 6c 75 64 65 20 74 68 65 6d 20 77 69 74 68 0a 74 68 65 20 72 65 73 70 6f 6e 73 65 2e 22 0a 20 20 lude.them.with.the.response."...
8af20 28 6c 65 74 20 28 28 72 65 73 70 20 28 63 6c 2d 63 61 6c 6c 2d 6e 65 78 74 2d 6d 65 74 68 6f 64 (let.((resp.(cl-call-next-method
8af40 29 29 29 0a 20 20 20 20 28 75 6e 6c 65 73 73 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 ))).....(unless.(plist-get.info.
8af60 3a 63 69 74 61 74 69 6f 6e 73 29 0a 20 20 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f :citations).......(save-excursio
8af80 6e 0a 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 n.........(goto-char.(point-max)
8afa0 29 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 73 65 61 72 63 68 2d 62 61 63 6b 77 61 72 64 ).........(when.(search-backward
8afc0 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 74 6f 6b 65 6e 29 0a 20 20 20 20 20 20 20 .(plist-get.info.:token)........
8afe0 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 62 65 ........................(line-be
8b000 67 69 6e 6e 69 6e 67 2d 70 6f 73 69 74 69 6f 6e 29 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 28 ginning-position).t)...........(
8b020 66 6f 72 77 61 72 64 2d 6c 69 6e 65 20 30 29 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 forward-line.0)...........(when.
8b040 28 72 65 2d 73 65 61 72 63 68 2d 62 61 63 6b 77 61 72 64 20 22 5e 64 61 74 61 3a 20 22 20 6e 69 (re-search-backward."^data:.".ni
8b060 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 20 28 6d 61 74 l.t).............(goto-char.(mat
8b080 63 68 2d 65 6e 64 20 30 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 69 67 6e 6f 72 65 2d 65 ch-end.0)).............(ignore-e
8b0a0 72 72 6f 72 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 rrors...............(when-let*.(
8b0c0 28 63 68 75 6e 6b 20 28 67 70 74 65 6c 2d 2d 6a 73 6f 6e 2d 72 65 61 64 29 29 0a 20 20 20 20 20 (chunk.(gptel--json-read))......
8b0e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 69 74 61 74 69 6f 6e 73 20 .....................(citations.
8b100 28 6d 61 70 2d 65 6c 74 20 63 68 75 6e 6b 20 3a 63 69 74 61 74 69 6f 6e 73 29 29 29 0a 20 20 20 (map-elt.chunk.:citations)))....
8b120 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 63 69 .............(plist-put.info.:ci
8b140 74 61 74 69 6f 6e 73 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 tations.t).................(setq
8b160 20 72 65 73 70 20 28 63 6f 6e 63 61 74 20 72 65 73 70 20 28 67 70 74 65 6c 2d 2d 70 65 72 70 6c .resp.(concat.resp.(gptel--perpl
8b180 65 78 69 74 79 2d 70 61 72 73 65 2d 63 69 74 61 74 69 6f 6e 73 0a 20 20 20 20 20 20 20 20 20 20 exity-parse-citations...........
8b1a0 20 20 20 20 20 20 20 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 ...............................c
8b1c0 69 74 61 74 69 6f 6e 73 29 29 29 29 29 29 29 29 29 0a 20 20 20 20 72 65 73 70 29 29 0a 0a 3b 3b itations))))))))).....resp))..;;
8b1e0 3b 23 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 ;###autoload.(cl-defun.gptel-mak
8b200 65 2d 70 65 72 70 6c 65 78 69 74 79 0a 20 20 20 20 28 6e 61 6d 65 20 26 6b 65 79 20 63 75 72 6c e-perplexity.....(name.&key.curl
8b220 2d 61 72 67 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 64 -args.stream.key...........(head
8b240 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 6c er............(lambda.().(when-l
8b260 65 74 2a 20 28 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 29 et*.((key.(gptel--get-api-key)))
8b280 0a 20 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 ....................`(("Authoriz
8b2a0 61 74 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 ation"...,(concat."Bearer.".key)
8b2c0 29 29 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 70 65 72 70 6c )))))...........(host."api.perpl
8b2e0 65 78 69 74 79 2e 61 69 22 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 74 6f 63 6f 6c 20 22 exity.ai")...........(protocol."
8b300 68 74 74 70 73 22 29 0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20 68 74 74 70 73 3a 2f 2f 64 6f 63 https")...........;;.https://doc
8b320 73 2e 70 65 72 70 6c 65 78 69 74 79 2e 61 69 2f 67 75 69 64 65 73 2f 6d 6f 64 65 6c 2d 63 61 72 s.perplexity.ai/guides/model-car
8b340 64 73 0a 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 65 6c 73 20 27 28 73 6f 6e 61 72 20 73 6f 6e ds...........(models.'(sonar.son
8b360 61 72 2d 70 72 6f 20 73 6f 6e 61 72 2d 72 65 61 73 6f 6e 69 6e 67 20 73 6f 6e 61 72 2d 72 65 61 ar-pro.sonar-reasoning.sonar-rea
8b380 73 6f 6e 69 6e 67 2d 70 72 6f 20 73 6f 6e 61 72 2d 64 65 65 70 2d 72 65 73 65 61 72 63 68 29 29 soning-pro.sonar-deep-research))
8b3a0 0a 20 20 20 20 20 20 20 20 20 20 28 65 6e 64 70 6f 69 6e 74 20 22 2f 63 68 61 74 2f 63 6f 6d 70 ...........(endpoint."/chat/comp
8b3c0 6c 65 74 69 6f 6e 73 22 29 0a 20 20 20 20 20 20 20 20 20 20 72 65 71 75 65 73 74 2d 70 61 72 61 letions")...........request-para
8b3e0 6d 73 29 0a 20 20 22 52 65 67 69 73 74 65 72 20 61 20 50 65 72 70 6c 65 78 69 74 79 20 62 61 63 ms)..."Register.a.Perplexity.bac
8b400 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
8b420 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
8b440 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
8b460 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.
8b480 74 68 65 20 41 50 49 20 68 6f 73 74 2c 20 5c 22 61 70 69 2e 70 65 72 70 6c 65 78 69 74 79 2e 61 the.API.host,.\"api.perplexity.a
8b4a0 69 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 i\".by.default...MODELS.is.a.lis
8b4c0 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
8b4e0 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
8b500 6d 69 6e 67 20 72 65 73 70 6f 6e 73 65 73 2e 0a 0a 50 52 4f 54 4f 43 4f 4c 20 28 6f 70 74 69 6f ming.responses...PROTOCOL.(optio
8b520 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 2c 20 68 74 74 nal).specifies.the.protocol,.htt
8b540 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 6e ps.by.default...ENDPOINT.(option
8b560 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 70 al).is.the.API.endpoint.for.comp
8b580 6c 65 74 69 6f 6e 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 letions...HEADER.(optional).is.f
8b5a0 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 6e 64 20 77 69 or.additional.headers.to.send.wi
8b5c0 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 62 65 20 61 6e th.each.request..It.should.be.an
8b5e0 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 65 74 75 72 6e .alist.or.a.function.that.return
8b600 73 20 61 6e 0a 61 6c 69 73 74 2e 0a 0a 4b 45 59 20 69 73 20 61 20 76 61 72 69 61 62 6c 65 20 77 s.an.alist...KEY.is.a.variable.w
8b620 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 66 75 hose.value.is.the.API.key,.or.fu
8b640 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 0a 0a 52 45 nction.that.returns.the.key...RE
8b660 51 55 45 53 54 2d 50 41 52 41 4d 53 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 61 20 70 6c 69 QUEST-PARAMS.(optional).is.a.pli
8b680 73 74 20 6f 66 20 61 64 64 69 74 69 6f 6e 61 6c 20 48 54 54 50 20 72 65 71 75 65 73 74 0a 70 61 st.of.additional.HTTP.request.pa
8b6a0 72 61 6d 65 74 65 72 73 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 69 6e 64 65 6e 74 20 31 29 rameters."...(declare.(indent.1)
8b6c0 29 0a 20 20 28 6c 65 74 20 28 28 62 61 63 6b 65 6e 64 20 28 67 70 74 65 6c 2d 2d 6d 61 6b 65 2d )...(let.((backend.(gptel--make-
8b6e0 70 65 72 70 6c 65 78 69 74 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 75 perplexity...................:cu
8b700 72 6c 2d 61 72 67 73 20 63 75 72 6c 2d 61 72 67 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rl-args.curl-args...............
8b720 20 20 20 20 3a 6e 61 6d 65 20 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ....:name.name..................
8b740 20 3a 68 6f 73 74 20 68 6f 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 68 .:host.host...................:h
8b760 65 61 64 65 72 20 68 65 61 64 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a eader.header...................:
8b780 6b 65 79 20 6b 65 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6d 6f 64 65 6c key.key...................:model
8b7a0 73 20 6d 6f 64 65 6c 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 70 72 6f 74 s.models...................:prot
8b7c0 6f 63 6f 6c 20 70 72 6f 74 6f 63 6f 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ocol.protocol...................
8b7e0 3a 65 6e 64 70 6f 69 6e 74 20 65 6e 64 70 6f 69 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 :endpoint.endpoint..............
8b800 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 20 .....:stream.stream.............
8b820 20 20 20 20 20 20 3a 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 20 72 65 71 75 65 73 74 2d 70 61 ......:request-params.request-pa
8b840 72 61 6d 73 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 rams...................:url.(if.
8b860 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 20 20 20 protocol........................
8b880 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 73 74 20 ....(concat.protocol."://".host.
8b8a0 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 20 20 20 endpoint).......................
8b8c0 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 0a 20 20 ...(concat.host.endpoint)))))...
8b8e0 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 28 61 6c ..(prog1.backend.......(setf.(al
8b900 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 6b 65 6e ist-get.name.gptel--known-backen
8b920 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 20 6e 69 ds........................nil.ni
8b940 6c 20 23 27 65 71 75 61 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 61 63 6b 65 6e 64 29 29 l.#'equal).............backend))
8b960 29 29 0a 0a 3b 3b 3b 20 44 65 65 70 73 65 65 6b 0a 28 63 6c 2d 64 65 66 73 74 72 75 63 74 20 28 ))..;;;.Deepseek.(cl-defstruct.(
8b980 67 70 74 65 6c 2d 64 65 65 70 73 65 65 6b 20 28 3a 69 6e 63 6c 75 64 65 20 67 70 74 65 6c 2d 6f gptel-deepseek.(:include.gptel-o
8b9a0 70 65 6e 61 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 penai)..........................
8b9c0 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 20 20 20 20 20 .....(:copier.nil)..............
8b9e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 3a 63 6f 6e 73 74 72 75 63 74 6f 72 20 67 .................(:constructor.g
8ba00 70 74 65 6c 2d 2d 6d 61 6b 65 2d 64 65 65 70 73 65 65 6b 29 29 29 0a 0a 28 63 6c 2d 64 65 66 6d ptel--make-deepseek)))..(cl-defm
8ba20 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 3a 61 72 6f 75 6e ethod.gptel--parse-buffer.:aroun
8ba40 64 20 28 28 5f 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 64 65 65 70 73 65 65 6b 29 20 5f 6d 61 d.((_backend.gptel-deepseek)._ma
8ba60 78 2d 65 6e 74 72 69 65 73 29 0a 20 20 22 4d 65 72 67 65 20 73 75 63 63 65 73 73 69 76 65 20 70 x-entries)..."Merge.successive.p
8ba80 72 6f 6d 70 74 73 20 69 6e 20 74 68 65 20 70 72 6f 6d 70 74 73 20 6c 69 73 74 20 74 68 61 74 20 rompts.in.the.prompts.list.that.
8baa0 68 61 76 65 20 74 68 65 20 73 61 6d 65 20 72 6f 6c 65 2e 0a 0a 54 68 65 20 44 65 65 70 73 65 65 have.the.same.role...The.Deepsee
8bac0 6b 20 41 50 49 20 72 65 71 75 69 72 65 73 20 73 74 72 69 63 74 6c 79 20 61 6c 74 65 72 6e 61 74 k.API.requires.strictly.alternat
8bae0 69 6e 67 20 72 6f 6c 65 73 20 28 75 73 65 72 2f 61 73 73 69 73 74 61 6e 74 29 20 69 6e 20 6d 65 ing.roles.(user/assistant).in.me
8bb00 73 73 61 67 65 73 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 70 72 6f 6d 70 74 73 20 28 63 6c 2d 63 ssages."...(let*.((prompts.(cl-c
8bb20 61 6c 6c 2d 6e 65 78 74 2d 6d 65 74 68 6f 64 29 29 0a 20 20 20 20 20 20 20 20 20 28 69 6e 64 65 all-next-method))..........(inde
8bb40 78 20 70 72 6f 6d 70 74 73 29 29 0a 20 20 20 20 28 70 72 6f 67 31 20 70 72 6f 6d 70 74 73 0a 20 x.prompts)).....(prog1.prompts..
8bb60 20 20 20 20 20 28 77 68 69 6c 65 20 69 6e 64 65 78 0a 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 .....(while.index.........(let.(
8bb80 28 70 31 20 28 63 61 72 20 69 6e 64 65 78 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 (p1.(car.index))...............(
8bba0 70 32 20 28 63 61 64 72 20 69 6e 64 65 78 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 p2.(cadr.index))...............(
8bbc0 72 65 73 74 20 28 63 64 72 20 69 6e 64 65 78 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 rest.(cdr.index)))...........(wh
8bbe0 65 6e 20 28 61 6e 64 20 70 32 20 28 65 71 75 61 6c 20 28 70 6c 69 73 74 2d 67 65 74 20 70 31 20 en.(and.p2.(equal.(plist-get.p1.
8bc00 3a 72 6f 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 20 20 20 20 :role)..........................
8bc20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 67 65 74 20 70 32 20 3a 72 6f 6c 65 29 29 29 0a 20 20 20 ......(plist-get.p2.:role)))....
8bc40 20 20 20 20 20 20 20 20 20 28 73 65 74 66 20 28 70 6c 69 73 74 2d 67 65 74 20 70 31 20 3a 63 6f .........(setf.(plist-get.p1.:co
8bc60 6e 74 65 6e 74 29 0a 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 ntent)...................(concat
8bc80 20 28 70 6c 69 73 74 2d 67 65 74 20 70 31 20 3a 63 6f 6e 74 65 6e 74 29 20 22 5c 6e 22 0a 20 20 .(plist-get.p1.:content)."\n"...
8bca0 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 6c 69 73 74 2d 67 ........................(plist-g
8bcc0 65 74 20 70 32 20 3a 63 6f 6e 74 65 6e 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 73 et.p2.:content))).............(s
8bce0 65 74 63 64 72 20 69 6e 64 65 78 20 28 63 64 72 20 72 65 73 74 29 29 29 0a 20 20 20 20 20 20 20 etcdr.index.(cdr.rest)))........
8bd00 20 20 20 28 73 65 74 71 20 69 6e 64 65 78 20 28 63 64 72 20 69 6e 64 65 78 29 29 29 29 29 29 29 ...(setq.index.(cdr.index)))))))
8bd20 0a 0a 3b 3b 3b 23 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 ..;;;###autoload.(cl-defun.gptel
8bd40 2d 6d 61 6b 65 2d 64 65 65 70 73 65 65 6b 0a 20 20 20 20 28 6e 61 6d 65 20 26 6b 65 79 20 63 75 -make-deepseek.....(name.&key.cu
8bd60 72 6c 2d 61 72 67 73 20 73 74 72 65 61 6d 20 6b 65 79 20 72 65 71 75 65 73 74 2d 70 61 72 61 6d rl-args.stream.key.request-param
8bd80 73 0a 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 28 s...........(header.(lambda.().(
8bda0 77 68 65 6e 2d 6c 65 74 2a 20 28 28 6b 65 79 20 28 67 70 74 65 6c 2d 2d 67 65 74 2d 61 70 69 2d when-let*.((key.(gptel--get-api-
8bdc0 6b 65 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 20 20 key)))..........................
8bde0 20 60 28 28 22 41 75 74 68 6f 72 69 7a 61 74 69 6f 6e 22 20 2e 20 2c 28 63 6f 6e 63 61 74 20 22 .`(("Authorization"...,(concat."
8be00 42 65 61 72 65 72 20 22 20 6b 65 79 29 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 68 6f Bearer.".key))))))...........(ho
8be20 73 74 20 22 61 70 69 2e 64 65 65 70 73 65 65 6b 2e 63 6f 6d 22 29 0a 20 20 20 20 20 20 20 20 20 st."api.deepseek.com")..........
8be40 20 28 70 72 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 .(protocol."https")...........(e
8be60 6e 64 70 6f 69 6e 74 20 22 2f 76 31 2f 63 68 61 74 2f 63 6f 6d 70 6c 65 74 69 6f 6e 73 22 29 0a ndpoint."/v1/chat/completions").
8be80 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 65 6c 73 20 27 28 28 64 65 65 70 73 65 65 6b 2d 72 65 ..........(models.'((deepseek-re
8bea0 61 73 6f 6e 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 61 70 asoner......................:cap
8bec0 61 62 69 6c 69 74 69 65 73 20 28 74 6f 6f 6c 20 72 65 61 73 6f 6e 69 6e 67 29 0a 20 20 20 20 20 abilities.(tool.reasoning)......
8bee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 ................:context-window.
8bf00 31 32 38 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 69 6e 70 75 74 2d 128......................:input-
8bf20 63 6f 73 74 20 30 2e 35 36 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a cost.0.56......................:
8bf40 6f 75 74 70 75 74 2d 63 6f 73 74 20 31 2e 36 38 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 output-cost.1.68)...............
8bf60 20 20 20 20 20 20 28 64 65 65 70 73 65 65 6b 2d 63 68 61 74 0a 20 20 20 20 20 20 20 20 20 20 20 ......(deepseek-chat............
8bf80 20 20 20 20 20 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 74 6f 6f 6c 29 0a 20 ..........:capabilities.(tool)..
8bfa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e ....................:context-win
8bfc0 64 6f 77 20 31 32 38 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 69 6e dow.128......................:in
8bfe0 70 75 74 2d 63 6f 73 74 20 30 2e 35 36 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 put-cost.0.56...................
8c000 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 31 2e 36 38 29 29 29 29 0a 20 20 22 52 65 67 69 ...:output-cost.1.68))))..."Regi
8c020 73 74 65 72 20 61 20 44 65 65 70 53 65 65 6b 20 62 61 63 6b 65 6e 64 20 66 6f 72 20 67 70 74 65 ster.a.DeepSeek.backend.for.gpte
8c040 6c 20 77 69 74 68 20 4e 41 4d 45 2e 0a 0a 46 6f 72 20 74 68 65 20 6d 65 61 6e 69 6e 67 73 20 6f l.with.NAME...For.the.meanings.o
8c060 66 20 74 68 65 20 6b 65 79 77 6f 72 64 20 61 72 67 75 6d 65 6e 74 73 2c 20 73 65 65 20 60 67 70 f.the.keyword.arguments,.see.`gp
8c080 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 27 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 69 tel-make-openai'."...(declare.(i
8c0a0 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
8c0c0 6c 2d 2d 6d 61 6b 65 2d 64 65 65 70 73 65 65 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 l--make-deepseek................
8c0e0 20 20 20 3a 6e 61 6d 65 20 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ...:name.name...................
8c100 3a 68 6f 73 74 20 68 6f 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 68 65 :host.host...................:he
8c120 61 64 65 72 20 68 65 61 64 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6b ader.header...................:k
8c140 65 79 20 6b 65 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6d 6f 64 65 6c 73 ey.key...................:models
8c160 20 28 67 70 74 65 6c 2d 2d 70 72 6f 63 65 73 73 2d 6d 6f 64 65 6c 73 20 6d 6f 64 65 6c 73 29 0a .(gptel--process-models.models).
8c180 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 74 ..................:protocol.prot
8c1a0 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 74 ocol...................:endpoint
8c1c0 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 72 .endpoint...................:str
8c1e0 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 72 65 eam.stream...................:re
8c200 71 75 65 73 74 2d 70 61 72 61 6d 73 20 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 0a 20 20 20 20 quest-params.request-params.....
8c220 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 2d 61 72 ..............:curl-args.curl-ar
8c240 67 73 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 63 6f 6e 63 61 gs...................:url.(conca
8c260 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 74 29 29 t.protocol."://".host.endpoint))
8c280 29 29 0a 20 20 20 20 28 73 65 74 66 20 28 61 6c 69 73 74 2d 67 65 74 20 6e 61 6d 65 20 67 70 74 )).....(setf.(alist-get.name.gpt
8c2a0 65 6c 2d 2d 6b 6e 6f 77 6e 2d 62 61 63 6b 65 6e 64 73 20 6e 69 6c 20 6e 69 6c 20 23 27 65 71 75 el--known-backends.nil.nil.#'equ
8c2c0 61 6c 29 20 62 61 63 6b 65 6e 64 29 0a 20 20 20 20 62 61 63 6b 65 6e 64 29 29 0a 0a 3b 3b 3b 20 al).backend).....backend))..;;;.
8c2e0 78 41 49 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a 28 63 6c 2d 64 65 66 75 6e 20 67 70 74 xAI.;;;###autoload.(cl-defun.gpt
8c300 65 6c 2d 6d 61 6b 65 2d 78 61 69 0a 20 20 20 20 28 6e 61 6d 65 20 26 6b 65 79 20 63 75 72 6c 2d el-make-xai.....(name.&key.curl-
8c320 61 72 67 73 20 73 74 72 65 61 6d 20 6b 65 79 20 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 0a 20 args.stream.key.request-params..
8c340 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 28 77 68 65 .........(header.(lambda.().(whe
8c360 6e 2d 6c 65 74 2a 20 28 28 6b 65 79 20 28 67 70 74 65 6c 2d 2d 67 65 74 2d 61 70 69 2d 6b 65 79 n-let*.((key.(gptel--get-api-key
8c380 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 60 28 )))...........................`(
8c3a0 28 22 41 75 74 68 6f 72 69 7a 61 74 69 6f 6e 22 20 2e 20 2c 28 63 6f 6e 63 61 74 20 22 42 65 61 ("Authorization"...,(concat."Bea
8c3c0 72 65 72 20 22 20 6b 65 79 29 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 68 6f 73 74 20 rer.".key))))))...........(host.
8c3e0 22 61 70 69 2e 78 2e 61 69 22 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 74 6f 63 6f 6c 20 "api.x.ai")...........(protocol.
8c400 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 69 6e 74 20 22 2f 76 "https")...........(endpoint."/v
8c420 31 2f 63 68 61 74 2f 63 6f 6d 70 6c 65 74 69 6f 6e 73 22 29 0a 20 20 20 20 20 20 20 20 20 20 28 1/chat/completions")...........(
8c440 6d 6f 64 65 6c 73 0a 20 20 20 20 20 20 20 20 20 20 20 27 28 28 67 72 6f 6b 2d 34 0a 20 20 20 20 models............'((grok-4.....
8c460 20 20 20 20 20 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 47 72 6f 6b 20 46 6c 61 ..........:description."Grok.Fla
8c480 67 73 68 69 70 20 6d 6f 64 65 6c 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 61 70 61 gship.model"...............:capa
8c4a0 62 69 6c 69 74 69 65 73 20 27 28 74 6f 6f 6c 2d 75 73 65 20 6a 73 6f 6e 20 72 65 61 73 6f 6e 69 bilities.'(tool-use.json.reasoni
8c4c0 6e 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f ng)...............:context-windo
8c4e0 77 20 32 35 36 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 w.256...............:input-cost.
8c500 33 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 31 35 29 3...............:output-cost.15)
8c520 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 72 6f 6b 2d 63 6f 64 65 2d 66 61 73 74 2d 31 ...............(grok-code-fast-1
8c540 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 46 61 73 ...............:description."Fas
8c560 74 20 72 65 61 73 6f 6e 69 6e 67 20 6d 6f 64 65 6c 20 66 6f 72 20 61 67 65 6e 74 69 63 20 63 6f t.reasoning.model.for.agentic.co
8c580 64 69 6e 67 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 ding"...............:capabilitie
8c5a0 73 20 27 28 74 6f 6f 6c 2d 75 73 65 20 6a 73 6f 6e 20 72 65 61 73 6f 6e 69 6e 67 29 0a 20 20 20 s.'(tool-use.json.reasoning)....
8c5c0 20 20 20 20 20 20 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 32 35 36 0a 20 ...........:context-window.256..
8c5e0 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 30 2e 32 0a 20 20 20 .............:input-cost.0.2....
8c600 20 20 20 20 20 20 20 20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 31 2e 35 29 0a 0a 20 20 ...........:output-cost.1.5)....
8c620 20 20 20 20 20 20 20 20 20 20 20 28 67 72 6f 6b 2d 33 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ...........(grok-3..............
8c640 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 47 72 6f 6b 20 33 22 0a 20 20 20 20 20 20 20 20 20 .:description."Grok.3"..........
8c660 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 27 28 74 6f 6f 6c 2d 75 73 65 20 6a 73 .....:capabilities.'(tool-use.js
8c680 6f 6e 20 72 65 61 73 6f 6e 69 6e 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 6f 6e on.reasoning)...............:con
8c6a0 74 65 78 74 2d 77 69 6e 64 6f 77 20 31 33 31 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 69 text-window.131...............:i
8c6c0 6e 70 75 74 2d 63 6f 73 74 20 33 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6f 75 74 70 75 nput-cost.3...............:outpu
8c6e0 74 2d 63 6f 73 74 20 31 35 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 72 6f 6b 2d 33 t-cost.15)...............(grok-3
8c700 2d 66 61 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e -fast...............:description
8c720 20 22 46 61 73 74 65 72 20 47 72 6f 6b 20 33 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a ."Faster.Grok.3"...............:
8c740 63 61 70 61 62 69 6c 69 74 69 65 73 20 27 28 74 6f 6f 6c 2d 75 73 65 20 6a 73 6f 6e 20 72 65 61 capabilities.'(tool-use.json.rea
8c760 73 6f 6e 69 6e 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 soning)...............:context-w
8c780 69 6e 64 6f 77 20 31 33 31 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 indow.131...............:input-c
8c7a0 6f 73 74 20 35 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 ost.5...............:output-cost
8c7c0 20 32 35 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 72 6f 6b 2d 33 2d 6d 69 6e 69 0a .25)...............(grok-3-mini.
8c7e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 4d 69 6e 69 ..............:description."Mini
8c800 20 47 72 6f 6b 20 33 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69 .Grok.3"...............:capabili
8c820 74 69 65 73 20 27 28 74 6f 6f 6c 2d 75 73 65 20 6a 73 6f 6e 20 72 65 61 73 6f 6e 69 6e 67 29 0a ties.'(tool-use.json.reasoning).
8c840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 31 33 ..............:context-window.13
8c860 31 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 30 2e 33 0a 1...............:input-cost.0.3.
8c880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 30 2e 35 29 0a ..............:output-cost.0.5).
8c8a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 72 6f 6b 2d 33 2d 6d 69 6e 69 2d 66 61 73 74 0a ..............(grok-3-mini-fast.
8c8c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 46 61 73 74 ..............:description."Fast
8c8e0 65 72 20 6d 69 6e 69 20 47 72 6f 6b 20 33 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 er.mini.Grok.3"...............:c
8c900 61 70 61 62 69 6c 69 74 69 65 73 20 27 28 74 6f 6f 6c 2d 75 73 65 20 6a 73 6f 6e 20 72 65 61 73 apabilities.'(tool-use.json.reas
8c920 6f 6e 69 6e 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 oning)...............:context-wi
8c940 6e 64 6f 77 20 31 33 31 30 37 32 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 69 6e 70 75 74 ndow.131072...............:input
8c960 2d 63 6f 73 74 20 30 2e 36 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6f 75 74 70 75 74 2d -cost.0.6...............:output-
8c980 63 6f 73 74 20 34 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 72 6f 6b 2d 32 2d 76 69 cost.4)...............(grok-2-vi
8c9a0 73 69 6f 6e 2d 31 32 31 32 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 64 65 73 63 72 69 70 sion-1212...............:descrip
8c9c0 74 69 6f 6e 20 22 47 72 6f 6b 20 32 20 56 69 73 69 6f 6e 22 0a 20 20 20 20 20 20 20 20 20 20 20 tion."Grok.2.Vision"............
8c9e0 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 27 28 74 6f 6f 6c 2d 75 73 65 20 6a 73 6f 6e ...:capabilities.'(tool-use.json
8ca00 20 6d 65 64 69 61 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6d 69 6d 65 2d 74 79 70 65 .media)...............:mime-type
8ca20 73 20 27 28 22 69 6d 61 67 65 2f 6a 70 65 67 22 20 22 69 6d 61 67 65 2f 70 6e 67 22 20 22 69 6d s.'("image/jpeg"."image/png"."im
8ca40 61 67 65 2f 67 69 66 22 20 22 69 6d 61 67 65 2f 77 65 62 70 22 29 0a 20 20 20 20 20 20 20 20 20 age/gif"."image/webp")..........
8ca60 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 33 32 37 36 38 0a 20 20 20 20 20 .....:context-window.32768......
8ca80 20 20 20 20 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 32 0a 20 20 20 20 20 20 20 20 20 .........:input-cost.2..........
8caa0 20 20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 31 30 29 29 29 29 0a 20 20 22 52 65 67 69 .....:output-cost.10))))..."Regi
8cac0 73 74 65 72 20 61 6e 20 78 41 49 20 62 61 63 6b 65 6e 64 20 66 6f 72 20 67 70 74 65 6c 20 77 69 ster.an.xAI.backend.for.gptel.wi
8cae0 74 68 20 4e 41 4d 45 2e 0a 0a 4b 65 79 77 6f 72 64 20 61 72 67 75 6d 65 6e 74 73 3a 0a 0a 4b 45 th.NAME...Keyword.arguments:..KE
8cb00 59 20 69 73 20 61 20 76 61 72 69 61 62 6c 65 20 77 68 6f 73 65 20 76 61 6c 75 65 20 69 73 20 74 Y.is.a.variable.whose.value.is.t
8cb20 68 65 20 41 50 49 20 6b 65 79 2c 20 6f 72 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 0a 72 65 74 he.API.key,.or.function.that.ret
8cb40 75 72 6e 73 20 74 68 65 20 6b 65 79 2e 0a 0a 53 54 52 45 41 4d 20 69 73 20 61 20 62 6f 6f 6c 65 urns.the.key...STREAM.is.a.boole
8cb60 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
8cb80 2c 20 64 65 66 61 75 6c 74 73 20 74 6f 0a 66 61 6c 73 65 2e 0a 0a 54 68 65 20 6f 74 68 65 72 20 ,.defaults.to.false...The.other.
8cba0 6b 65 79 77 6f 72 64 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 61 6c 6c 20 6f 70 74 69 6f 6e keyword.arguments.are.all.option
8cbc0 61 6c 2e 20 20 46 6f 72 20 74 68 65 69 72 20 6d 65 61 6e 69 6e 67 73 0a 73 65 65 20 60 67 70 74 al...For.their.meanings.see.`gpt
8cbe0 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 27 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 69 6e el-make-openai'."...(declare.(in
8cc00 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 6c dent.1))...(let.((backend.(gptel
8cc20 2d 2d 6d 61 6b 65 2d 64 65 65 70 73 65 65 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 --make-deepseek.................
8cc40 20 20 3a 6e 61 6d 65 20 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a ..:name.name...................:
8cc60 68 6f 73 74 20 68 6f 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 68 65 61 host.host...................:hea
8cc80 64 65 72 20 68 65 61 64 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6b 65 der.header...................:ke
8cca0 79 20 6b 65 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6d 6f 64 65 6c 73 20 y.key...................:models.
8ccc0 28 67 70 74 65 6c 2d 2d 70 72 6f 63 65 73 73 2d 6d 6f 64 65 6c 73 20 6d 6f 64 65 6c 73 29 0a 20 (gptel--process-models.models)..
8cce0 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 74 6f .................:protocol.proto
8cd00 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 74 20 col...................:endpoint.
8cd20 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 72 65 endpoint...................:stre
8cd40 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 72 65 71 am.stream...................:req
8cd60 75 65 73 74 2d 70 61 72 61 6d 73 20 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 0a 20 20 20 20 20 uest-params.request-params......
8cd80 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 2d 61 72 67 .............:curl-args.curl-arg
8cda0 73 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 63 6f 6e 63 61 74 s...................:url.(concat
8cdc0 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 74 29 29 29 .protocol."://".host.endpoint)))
8cde0 29 0a 20 20 20 20 28 73 65 74 66 20 28 61 6c 69 73 74 2d 67 65 74 20 6e 61 6d 65 20 67 70 74 65 ).....(setf.(alist-get.name.gpte
8ce00 6c 2d 2d 6b 6e 6f 77 6e 2d 62 61 63 6b 65 6e 64 73 20 6e 69 6c 20 6e 69 6c 20 23 27 65 71 75 61 l--known-backends.nil.nil.#'equa
8ce20 6c 29 20 62 61 63 6b 65 6e 64 29 0a 20 20 20 20 62 61 63 6b 65 6e 64 29 29 0a 0a 0a 28 70 72 6f l).backend).....backend))...(pro
8ce40 76 69 64 65 20 27 67 70 74 65 6c 2d 6f 70 65 6e 61 69 2d 65 78 74 72 61 73 29 0a 3b 3b 3b 20 67 vide.'gptel-openai-extras).;;;.g
8ce60 70 74 65 6c 2d 6f 70 65 6e 61 69 2d 65 78 74 72 61 73 2e 65 6c 20 65 6e 64 73 20 68 65 72 65 0a ptel-openai-extras.el.ends.here.
8ce80 0a 3b 3b 20 4c 6f 63 61 6c 20 56 61 72 69 61 62 6c 65 73 3a 0a 3b 3b 20 62 79 74 65 2d 63 6f 6d .;;.Local.Variables:.;;.byte-com
8cea0 70 69 6c 65 2d 77 61 72 6e 69 6e 67 73 3a 20 28 6e 6f 74 20 64 6f 63 73 74 72 69 6e 67 73 29 0a pile-warnings:.(not.docstrings).
8cec0 3b 3b 20 45 6e 64 3a 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 ;;.End:.........................
8cee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8cf00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8cf20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8cf40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8cf60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8cf80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8cfa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8cfc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8cfe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8d000 67 70 74 65 6c 2d 30 2e 39 2e 39 2f 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2e 65 6c 00 00 00 00 gptel-0.9.9/gptel-context.el....
8d020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8d040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8d060 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
8d080 30 30 36 37 30 33 34 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 34 34 33 34 00 20 30 00 00 00 0067034.00000000000.014434..0...
8d0a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8d0c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8d0e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8d100 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...................
8d120 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...................
8d140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8d160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8d180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8d1a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8d1c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8d1e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8d200 3b 3b 3b 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2e 65 6c 20 2d 2d 2d 20 43 6f 6e 74 65 78 74 ;;;.gptel-context.el.---.Context
8d220 20 61 67 67 72 65 67 61 74 6f 72 20 66 6f 72 20 67 70 74 65 6c 20 20 2d 2a 2d 20 6c 65 78 69 63 .aggregator.for.gptel..-*-.lexic
8d240 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 68 74 al-binding:.t;.-*-..;;.Copyright
8d260 20 28 43 29 20 32 30 32 33 2d 32 30 32 35 20 20 4b 61 72 74 68 69 6b 20 43 68 69 6b 6d 61 67 61 .(C).2023-2025..Karthik.Chikmaga
8d280 6c 75 72 0a 0a 3b 3b 20 41 75 74 68 6f 72 3a 20 64 61 65 64 73 69 64 6f 67 20 3c 63 6f 6e 74 61 lur..;;.Author:.daedsidog.<conta
8d2a0 63 74 40 64 61 65 64 73 69 64 6f 67 2e 63 6f 6d 3e 0a 3b 3b 20 4b 65 79 77 6f 72 64 73 3a 20 63 ct@daedsidog.com>.;;.Keywords:.c
8d2c0 6f 6e 76 65 6e 69 65 6e 63 65 2c 20 62 75 66 66 65 72 73 0a 0a 3b 3b 20 53 50 44 58 2d 4c 69 63 onvenience,.buffers..;;.SPDX-Lic
8d2e0 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 65 ense-Identifier:.GPL-3.0-or-late
8d300 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 77 r..;;.This.program.is.free.softw
8d320 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 64 are;.you.can.redistribute.it.and
8d340 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 73 /or.modify.;;.it.under.the.terms
8d360 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
8d380 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 53 se.as.published.by.;;.the.Free.S
8d3a0 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 69 oftware.Foundation,.either.versi
8d3c0 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 79 on.3.of.the.License,.or.;;.(at.y
8d3e0 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 0a our.option).any.later.version...
8d400 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 69 ;;.This.program.is.distributed.i
8d420 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 75 n.the.hope.that.it.will.be.usefu
8d440 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 20 l,.;;.but.WITHOUT.ANY.WARRANTY;.
8d460 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 74 without.even.the.implied.warrant
8d480 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 45 y.of.;;.MERCHANTABILITY.or.FITNE
8d4a0 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 65 SS.FOR.A.PARTICULAR.PURPOSE...Se
8d4c0 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 65 e.the.;;.GNU.General.Public.Lice
8d4e0 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 68 nse.for.more.details...;;.You.sh
8d500 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 65 ould.have.received.a.copy.of.the
8d520 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 61 .GNU.General.Public.License.;;.a
8d540 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 2c long.with.this.program...If.not,
8d560 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 73 .see.<https://www.gnu.org/licens
8d580 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 65 20 63 es/>...;;;.Commentary:..;;.The.c
8d5a0 6f 6e 74 65 78 74 20 61 6c 6c 6f 77 73 20 79 6f 75 20 74 6f 20 63 6f 6e 76 65 6e 69 65 6e 74 6c ontext.allows.you.to.convenientl
8d5c0 79 20 63 72 65 61 74 65 20 63 6f 6e 74 65 78 74 73 20 77 68 69 63 68 20 63 61 6e 20 62 65 20 66 y.create.contexts.which.can.be.f
8d5e0 65 64 0a 3b 3b 20 74 6f 20 67 70 74 65 6c 2e 0a 0a 3b 3b 3b 20 43 6f 64 65 3a 0a 0a 3b 3b 3b 20 ed.;;.to.gptel...;;;.Code:..;;;.
8d600 2d 2a 2d 20 6c 65 78 69 63 61 6c 2d 62 69 6e 64 69 6e 67 3a 20 74 20 2d 2a 2d 0a 28 72 65 71 75 -*-.lexical-binding:.t.-*-.(requ
8d620 69 72 65 20 27 67 70 74 65 6c 29 0a 28 72 65 71 75 69 72 65 20 27 63 6c 2d 6c 69 62 29 0a 0a 28 ire.'gptel).(require.'cl-lib)..(
8d640 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 67 70 74 65 6c 2d 6d 65 6e 75 20 22 67 70 74 declare-function.gptel-menu."gpt
8d660 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 63 74 69 6f 6e el-transient").(declare-function
8d680 20 64 69 72 65 64 2d 67 65 74 2d 6d 61 72 6b 65 64 2d 66 69 6c 65 73 20 22 64 69 72 65 64 22 29 .dired-get-marked-files."dired")
8d6a0 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 69 6d 61 67 65 2d 66 69 6c 65 2d 6e 61 .(declare-function.image-file-na
8d6c0 6d 65 2d 72 65 67 65 78 70 20 22 69 6d 61 67 65 2d 66 69 6c 65 22 29 0a 28 64 65 63 6c 61 72 65 me-regexp."image-file").(declare
8d6e0 2d 66 75 6e 63 74 69 6f 6e 20 63 72 65 61 74 65 2d 69 6d 61 67 65 20 22 69 6d 61 67 65 22 29 0a -function.create-image."image").
8d700 0a 28 64 65 66 66 61 63 65 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 68 69 67 68 6c 69 67 68 .(defface.gptel-context-highligh
8d720 74 2d 66 61 63 65 0a 20 20 27 28 28 28 28 62 61 63 6b 67 72 6f 75 6e 64 20 64 61 72 6b 29 20 20 t-face...'((((background.dark)..
8d740 28 6d 69 6e 2d 63 6f 6c 6f 72 73 20 38 38 29 29 20 3a 62 61 63 6b 67 72 6f 75 6e 64 20 22 67 72 (min-colors.88)).:background."gr
8d760 61 79 34 22 20 3a 65 78 74 65 6e 64 20 74 29 0a 20 20 20 20 28 28 28 62 61 63 6b 67 72 6f 75 6e ay4".:extend.t).....(((backgroun
8d780 64 20 6c 69 67 68 74 29 20 28 6d 69 6e 2d 63 6f 6c 6f 72 73 20 38 38 29 29 20 3a 62 61 63 6b 67 d.light).(min-colors.88)).:backg
8d7a0 72 6f 75 6e 64 20 22 61 6c 69 63 65 20 62 6c 75 65 22 20 3a 65 78 74 65 6e 64 20 74 29 0a 20 20 round."alice.blue".:extend.t)...
8d7c0 20 20 28 74 20 3a 69 6e 68 65 72 69 74 20 6d 6f 64 65 2d 6c 69 6e 65 29 29 0a 20 20 22 46 61 63 ..(t.:inherit.mode-line))..."Fac
8d7e0 65 20 75 73 65 64 20 74 6f 20 68 69 67 68 6c 69 67 68 74 20 67 70 74 65 6c 20 63 6f 6e 74 65 78 e.used.to.highlight.gptel.contex
8d800 74 73 20 69 6e 20 62 75 66 66 65 72 73 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 67 70 74 65 6c 29 ts.in.buffers."...:group.'gptel)
8d820 0a 0a 28 64 65 66 66 61 63 65 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 64 65 6c 65 74 69 6f ..(defface.gptel-context-deletio
8d840 6e 2d 66 61 63 65 0a 20 20 27 28 28 28 28 63 6c 61 73 73 20 63 6f 6c 6f 72 29 20 28 6d 69 6e 2d n-face...'((((class.color).(min-
8d860 63 6f 6c 6f 72 73 20 32 35 37 29 20 28 62 61 63 6b 67 72 6f 75 6e 64 20 6c 69 67 68 74 29 29 0a colors.257).(background.light)).
8d880 20 20 20 20 20 3a 62 61 63 6b 67 72 6f 75 6e 64 20 22 23 66 66 65 65 65 65 22 20 3a 65 78 74 65 .....:background."#ffeeee".:exte
8d8a0 6e 64 20 74 29 0a 20 20 20 20 28 28 28 63 6c 61 73 73 20 63 6f 6c 6f 72 29 20 28 6d 69 6e 2d 63 nd.t).....(((class.color).(min-c
8d8c0 6f 6c 6f 72 73 20 38 38 29 20 28 62 61 63 6b 67 72 6f 75 6e 64 20 6c 69 67 68 74 29 29 0a 20 20 olors.88).(background.light))...
8d8e0 20 20 20 3a 62 61 63 6b 67 72 6f 75 6e 64 20 22 23 66 66 64 64 64 64 22 20 3a 65 78 74 65 6e 64 ...:background."#ffdddd".:extend
8d900 20 74 29 0a 20 20 20 20 28 28 28 63 6c 61 73 73 20 63 6f 6c 6f 72 29 20 28 6d 69 6e 2d 63 6f 6c .t).....(((class.color).(min-col
8d920 6f 72 73 20 38 38 29 20 28 62 61 63 6b 67 72 6f 75 6e 64 20 64 61 72 6b 29 29 0a 20 20 20 20 20 ors.88).(background.dark))......
8d940 3a 62 61 63 6b 67 72 6f 75 6e 64 20 22 23 35 35 33 33 33 33 22 20 3a 65 78 74 65 6e 64 20 74 29 :background."#553333".:extend.t)
8d960 0a 20 20 20 20 28 28 28 63 6c 61 73 73 20 63 6f 6c 6f 72 29 29 20 3a 66 6f 72 65 67 72 6f 75 6e .....(((class.color)).:foregroun
8d980 64 20 22 72 65 64 22 20 3a 65 78 74 65 6e 64 20 74 29 29 0a 20 20 22 46 61 63 65 20 75 73 65 64 d."red".:extend.t))..."Face.used
8d9a0 20 74 6f 20 68 69 67 68 6c 69 67 68 74 20 67 70 74 65 6c 20 63 6f 6e 74 65 78 74 73 20 74 6f 20 .to.highlight.gptel.contexts.to.
8d9c0 62 65 20 64 65 6c 65 74 65 64 2e 0a 0a 54 68 69 73 20 69 73 20 75 73 65 64 20 69 6e 20 67 70 74 be.deleted...This.is.used.in.gpt
8d9e0 65 6c 20 63 6f 6e 74 65 78 74 20 62 75 66 66 65 72 73 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 67 el.context.buffers."...:group.'g
8da00 70 74 65 6c 29 0a 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 77 72 61 ptel)..(defvar.gptel-context-wra
8da20 70 2d 66 75 6e 63 74 69 6f 6e 20 6e 69 6c 0a 20 20 22 46 75 6e 63 74 69 6f 6e 20 74 6f 20 66 6f p-function.nil..."Function.to.fo
8da40 72 6d 61 74 20 74 68 65 20 63 6f 6e 74 65 78 74 20 73 74 72 69 6e 67 20 73 65 6e 74 20 77 69 74 rmat.the.context.string.sent.wit
8da60 68 20 74 68 65 20 67 70 74 65 6c 20 72 65 71 75 65 73 74 2e 22 29 0a 28 6d 61 6b 65 2d 6f 62 73 h.the.gptel.request.").(make-obs
8da80 6f 6c 65 74 65 2d 76 61 72 69 61 62 6c 65 0a 20 27 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 77 olete-variable..'gptel-context-w
8daa0 72 61 70 2d 66 75 6e 63 74 69 6f 6e 0a 20 22 43 75 73 74 6f 6d 20 66 75 6e 63 74 69 6f 6e 73 20 rap-function.."Custom.functions.
8dac0 66 6f 72 20 77 72 61 70 70 69 6e 67 20 63 6f 6e 74 65 78 74 20 61 72 65 20 6e 6f 20 6c 6f 6e 67 for.wrapping.context.are.no.long
8dae0 65 72 20 73 75 70 70 6f 72 74 65 64 20 62 79 20 67 70 74 65 6c 2e 5c 0a 20 20 53 65 65 20 60 67 er.supported.by.gptel.\...See.`g
8db00 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 77 72 61 70 2d 69 6e 2d 62 75 66 66 65 72 27 20 66 6f ptel-context--wrap-in-buffer'.fo
8db20 72 20 64 65 74 61 69 6c 73 2e 22 0a 20 22 30 2e 39 2e 39 22 29 0a 0a 28 64 65 66 63 75 73 74 6f r.details.".."0.9.9")..(defcusto
8db40 6d 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 73 74 72 69 6e 67 2d 66 75 6e 63 74 69 6f 6e 20 m.gptel-context-string-function.
8db60 23 27 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 73 74 72 69 6e 67 0a 20 20 22 46 75 6e 63 74 #'gptel-context--string..."Funct
8db80 69 6f 6e 20 74 6f 20 70 72 65 70 61 72 65 20 74 68 65 20 63 6f 6e 74 65 78 74 20 73 74 72 69 6e ion.to.prepare.the.context.strin
8dba0 67 20 73 65 6e 74 20 77 69 74 68 20 74 68 65 20 67 70 74 65 6c 20 72 65 71 75 65 73 74 2e 0a 0a g.sent.with.the.gptel.request...
8dbc0 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 63 61 6e 20 62 65 20 73 79 6e 63 68 72 6f 6e 6f 75 73 This.function.can.be.synchronous
8dbe0 20 6f 72 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 2c 20 61 6e 64 20 72 65 63 65 69 76 65 73 20 6f .or.asynchronous,.and.receives.o
8dc00 6e 65 20 6f 72 0a 74 77 6f 20 61 72 67 75 6d 65 6e 74 73 20 72 65 73 70 65 63 74 69 76 65 6c 79 ne.or.two.arguments.respectively
8dc20 2e 0a 0a 53 79 6e 63 68 72 6f 6e 6f 75 73 3a 20 41 6e 20 61 6c 69 73 74 20 6f 66 20 63 6f 6e 74 ...Synchronous:.An.alist.of.cont
8dc40 65 78 74 73 20 77 69 74 68 20 62 75 66 66 65 72 73 20 6f 72 20 66 69 6c 65 73 20 28 74 68 65 20 exts.with.buffers.or.files.(the.
8dc60 63 6f 6e 74 65 78 74 0a 61 6c 69 73 74 29 2e 0a 41 73 79 6e 63 68 72 6f 6e 6f 75 73 3a 20 41 20 context.alist)..Asynchronous:.A.
8dc80 63 61 6c 6c 62 61 63 6b 20 74 6f 20 63 61 6c 6c 20 77 69 74 68 20 74 68 65 20 72 65 73 75 6c 74 callback.to.call.with.the.result
8dca0 2c 20 61 6e 64 20 74 68 65 20 63 6f 6e 74 65 78 74 20 61 6c 69 73 74 2e 0a 0a 54 68 65 20 63 6f ,.and.the.context.alist...The.co
8dcc0 6e 74 65 78 74 20 61 6c 69 73 74 20 69 73 20 73 74 72 75 63 74 75 72 65 64 20 61 73 20 66 6f 6c ntext.alist.is.structured.as.fol
8dce0 6c 6f 77 73 3a 0a 0a 20 28 28 62 75 66 66 65 72 31 20 2e 20 28 6f 76 65 72 6c 61 79 31 20 6f 76 lows:...((buffer1...(overlay1.ov
8dd00 65 72 6c 61 79 32 29 0a 20 20 28 5c 22 70 61 74 68 2f 74 6f 2f 66 69 6c 65 5c 22 29 0a 20 20 28 erlay2)...(\"path/to/file\")...(
8dd20 62 75 66 66 65 72 32 20 2e 20 28 6f 76 65 72 6c 61 79 33 20 6f 76 65 72 6c 61 79 34 20 6f 76 65 buffer2...(overlay3.overlay4.ove
8dd40 72 6c 61 79 35 29 29 0a 20 20 28 5c 22 70 61 74 68 2f 74 6f 2f 69 6d 61 67 65 2f 66 69 6c 65 5c rlay5))...(\"path/to/image/file\
8dd60 22 20 3a 6d 69 6d 65 20 5c 22 69 6d 61 67 65 2f 6a 70 65 67 5c 22 29 29 29 0a 0a 45 61 63 68 20 ".:mime.\"image/jpeg\")))..Each.
8dd80 67 70 74 65 6c 20 5c 22 63 6f 6e 74 65 78 74 5c 22 20 69 73 20 65 69 74 68 65 72 20 61 20 66 69 gptel.\"context\".is.either.a.fi
8dda0 6c 65 20 70 61 74 68 20 6f 72 20 61 6e 20 6f 76 65 72 6c 61 79 20 69 6e 20 61 0a 62 75 66 66 65 le.path.or.an.overlay.in.a.buffe
8ddc0 72 2e 20 20 45 61 63 68 20 6f 76 65 72 6c 61 79 20 63 6f 76 65 72 73 20 61 20 62 75 66 66 65 72 r...Each.overlay.covers.a.buffer
8dde0 20 72 65 67 69 6f 6e 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 0a 63 6f 6e 74 65 78 74 20 63 .region.containing.the.context.c
8de00 68 75 6e 6b 2e 20 20 54 68 69 73 20 69 73 20 61 63 63 65 73 73 69 62 6c 65 20 61 73 2c 20 66 6f hunk...This.is.accessible.as,.fo
8de20 72 20 65 78 61 6d 70 6c 65 3a 0a 0a 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 r.example:...(with-current-buffe
8de40 72 20 62 75 66 66 65 72 31 0a 20 20 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 20 28 r.buffer1....(buffer-substring.(
8de60 6f 76 65 72 6c 61 79 2d 73 74 61 72 74 20 6f 76 65 72 6c 61 79 31 29 0a 20 20 20 20 20 20 20 20 overlay-start.overlay1).........
8de80 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 76 65 72 6c 61 79 2d 65 6e 64 20 20 20 6f 76 65 72 .............(overlay-end...over
8dea0 6c 61 79 31 29 29 29 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 lay1)))"...:group.'gptel...:type
8dec0 20 27 66 75 6e 63 74 69 6f 6e 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 .'function)..(defun.gptel-contex
8dee0 74 2d 61 64 64 2d 63 75 72 72 65 6e 74 2d 6b 69 6c 6c 20 28 26 6f 70 74 69 6f 6e 61 6c 20 61 72 t-add-current-kill.(&optional.ar
8df00 67 29 0a 20 20 22 41 64 64 20 63 75 72 72 65 6e 74 2d 6b 69 6c 6c 20 74 6f 20 67 70 74 65 6c 2c g)..."Add.current-kill.to.gptel,
8df20 20 61 63 63 75 6d 75 6c 61 74 69 6e 67 20 69 66 20 61 72 67 20 69 73 20 6e 6f 6e 2d 6e 69 6c 22 .accumulating.if.arg.is.non-nil"
8df40 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 20 22 50 22 29 0a 20 20 28 6c 65 74 20 28 28 6b 69 ...(interactive."P")...(let.((ki
8df60 6c 6c 20 28 63 75 72 72 65 6e 74 2d 6b 69 6c 6c 20 30 29 29 29 0a 20 20 20 20 28 77 69 74 68 2d ll.(current-kill.0))).....(with-
8df80 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 67 65 74 2d 62 75 66 66 65 72 2d 63 72 65 61 74 current-buffer.(get-buffer-creat
8dfa0 65 20 22 20 2a 67 70 74 65 6c 2d 6b 69 6c 6c 2d 72 69 6e 67 2d 63 6f 6e 74 65 78 74 2a 22 29 0a e.".*gptel-kill-ring-context*").
8dfc0 20 20 20 20 20 20 28 69 66 20 28 6e 6f 74 20 61 72 67 29 0a 20 20 20 20 20 20 20 20 20 20 28 6b ......(if.(not.arg)...........(k
8dfe0 69 6c 6c 2d 72 65 67 69 6f 6e 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28 70 6f 69 6e 74 2d 6d 61 ill-region.(point-min).(point-ma
8e000 78 29 29 0a 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 x)).........(goto-char.(point-ma
8e020 78 29 29 0a 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 62 6f 62 70 29 0a 20 20 20 20 20 x)).........(unless.(bobp)......
8e040 20 20 20 20 20 28 69 6e 73 65 72 74 20 22 5c 6e 2d 2d 2d 2d 5c 6e 22 29 29 29 0a 20 20 20 20 20 .....(insert."\n----\n")))......
8e060 20 28 69 6e 73 65 72 74 20 6b 69 6c 6c 29 0a 20 20 20 20 20 20 28 67 70 74 65 6c 2d 63 6f 6e 74 .(insert.kill).......(gptel-cont
8e080 65 78 74 2d 2d 61 64 64 2d 72 65 67 69 6f 6e 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 ext--add-region.(current-buffer)
8e0a0 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 ................................
8e0c0 20 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 0a 20 20 20 20 20 ..(point-min).(point-max))......
8e0e0 20 28 6d 65 73 73 61 67 65 20 22 2a 63 75 72 72 65 6e 74 2d 6b 69 6c 6c 2a 20 68 61 73 20 62 65 .(message."*current-kill*.has.be
8e100 65 6e 20 61 64 64 65 64 20 61 73 20 63 6f 6e 74 65 78 74 2e 22 29 29 29 29 0a 0a 28 64 65 66 75 en.added.as.context."))))..(defu
8e120 6e 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 61 64 64 20 28 26 6f 70 74 69 6f 6e 61 6c 20 61 n.gptel-context-add.(&optional.a
8e140 72 67 20 63 6f 6e 66 69 72 6d 29 0a 20 20 22 41 64 64 20 63 6f 6e 74 65 78 74 20 74 6f 20 67 70 rg.confirm)..."Add.context.to.gp
8e160 74 65 6c 20 69 6e 20 61 20 44 57 49 4d 20 66 61 73 68 69 6f 6e 2e 0a 0a 2d 20 49 66 20 61 20 72 tel.in.a.DWIM.fashion...-.If.a.r
8e180 65 67 69 6f 6e 20 69 73 20 73 65 6c 65 63 74 65 64 2c 20 61 64 64 20 74 68 65 20 73 65 6c 65 63 egion.is.selected,.add.the.selec
8e1a0 74 65 64 20 72 65 67 69 6f 6e 20 74 6f 20 74 68 65 0a 20 20 63 6f 6e 74 65 78 74 2e 20 20 49 66 ted.region.to.the...context...If
8e1c0 20 74 68 65 72 65 20 69 73 20 61 6c 72 65 61 64 79 20 61 20 67 70 74 65 6c 20 63 6f 6e 74 65 78 .there.is.already.a.gptel.contex
8e1e0 74 20 61 74 20 70 6f 69 6e 74 2c 20 72 65 6d 6f 76 65 20 69 74 0a 20 20 69 6e 73 74 65 61 64 2e t.at.point,.remove.it...instead.
8e200 0a 0a 2d 20 49 66 20 69 6e 20 44 69 72 65 64 2c 20 61 64 64 20 6d 61 72 6b 65 64 20 66 69 6c 65 ..-.If.in.Dired,.add.marked.file
8e220 73 20 6f 72 20 66 69 6c 65 20 61 74 20 70 6f 69 6e 74 20 74 6f 20 74 68 65 20 63 6f 6e 74 65 78 s.or.file.at.point.to.the.contex
8e240 74 2e 20 49 66 0a 20 20 74 68 65 20 73 65 6c 65 63 74 69 6f 6e 20 69 6e 63 6c 75 64 65 73 20 64 t..If...the.selection.includes.d
8e260 69 72 65 63 74 6f 72 69 65 73 2c 20 61 64 64 20 61 6c 6c 20 74 68 65 69 72 20 66 69 6c 65 73 20 irectories,.add.all.their.files.
8e280 72 65 63 75 72 73 69 76 65 6c 79 2c 0a 20 20 70 72 6f 6d 70 74 69 6e 67 20 74 68 65 20 75 73 65 recursively,...prompting.the.use
8e2a0 72 20 66 6f 72 20 63 6f 6e 66 69 72 6d 61 74 69 6f 6e 20 69 66 20 63 61 6c 6c 65 64 20 69 6e 74 r.for.confirmation.if.called.int
8e2c0 65 72 61 63 74 69 76 65 6c 79 20 6f 72 0a 20 20 43 4f 4e 46 49 52 4d 20 69 73 20 6e 6f 6e 2d 6e eractively.or...CONFIRM.is.non-n
8e2e0 69 6c 2e 20 57 69 74 68 20 6e 65 67 61 74 69 76 65 20 70 72 65 66 69 78 20 41 52 47 2c 20 72 65 il..With.negative.prefix.ARG,.re
8e300 6d 6f 76 65 20 61 6c 6c 20 66 69 6c 65 73 20 66 72 6f 6d 0a 20 20 74 68 65 20 63 6f 6e 74 65 78 move.all.files.from...the.contex
8e320 74 20 69 6e 73 74 65 61 64 2e 0a 0a 2d 20 4f 74 68 65 72 77 69 73 65 20 61 64 64 20 74 68 65 20 t.instead...-.Otherwise.add.the.
8e340 63 75 72 72 65 6e 74 20 62 75 66 66 65 72 20 74 6f 20 74 68 65 20 63 6f 6e 74 65 78 74 2e 20 20 current.buffer.to.the.context...
8e360 57 69 74 68 20 70 6f 73 69 74 69 76 65 0a 20 20 70 72 65 66 69 78 20 41 52 47 2c 20 70 72 6f 6d With.positive...prefix.ARG,.prom
8e380 70 74 20 66 6f 72 20 61 20 62 75 66 66 65 72 20 6e 61 6d 65 20 61 6e 64 20 61 64 64 20 69 74 20 pt.for.a.buffer.name.and.add.it.
8e3a0 74 6f 20 74 68 65 20 63 6f 6e 74 65 78 74 2e 0a 0a 2d 20 57 69 74 68 20 6e 65 67 61 74 69 76 65 to.the.context...-.With.negative
8e3c0 20 70 72 65 66 69 78 20 41 52 47 2c 20 72 65 6d 6f 76 65 20 61 6c 6c 20 67 70 74 65 6c 20 63 6f .prefix.ARG,.remove.all.gptel.co
8e3e0 6e 74 65 78 74 73 20 66 72 6f 6d 20 74 68 65 20 63 75 72 72 65 6e 74 0a 20 20 62 75 66 66 65 72 ntexts.from.the.current...buffer
8e400 2c 20 70 72 6f 6d 70 74 69 6e 67 20 74 68 65 20 75 73 65 72 20 66 6f 72 20 63 6f 6e 66 69 72 6d ,.prompting.the.user.for.confirm
8e420 61 74 69 6f 6e 20 69 66 20 63 61 6c 6c 65 64 20 69 6e 74 65 72 61 63 74 69 76 65 6c 79 0a 20 20 ation.if.called.interactively...
8e440 6f 72 20 43 4f 4e 46 49 52 4d 20 69 73 20 6e 6f 6e 2d 6e 69 6c 2e 22 0a 20 20 28 69 6e 74 65 72 or.CONFIRM.is.non-nil."...(inter
8e460 61 63 74 69 76 65 20 22 50 5c 6e 70 22 29 0a 20 20 28 63 6f 6e 64 0a 20 20 20 3b 3b 20 41 20 72 active."P\np")...(cond....;;.A.r
8e480 65 67 69 6f 6e 20 69 73 20 73 65 6c 65 63 74 65 64 2e 0a 20 20 20 28 28 75 73 65 2d 72 65 67 69 egion.is.selected.....((use-regi
8e4a0 6f 6e 2d 70 29 0a 20 20 20 20 28 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61 64 64 2d 72 65 on-p).....(gptel-context--add-re
8e4c0 67 69 6f 6e 20 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 gion.(current-buffer)...........
8e4e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 67 69 6f 6e 2d ........................(region-
8e500 62 65 67 69 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 beginning)......................
8e520 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 67 69 6f 6e 2d 65 6e 64 29 29 0a 20 20 20 20 28 .............(region-end)).....(
8e540 64 65 61 63 74 69 76 61 74 65 2d 6d 61 72 6b 29 0a 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 43 deactivate-mark).....(message."C
8e560 75 72 72 65 6e 74 20 72 65 67 69 6f 6e 20 61 64 64 65 64 20 61 73 20 63 6f 6e 74 65 78 74 2e 22 urrent.region.added.as.context."
8e580 29 29 0a 20 20 20 3b 3b 20 49 66 20 69 6e 20 64 69 72 65 64 0a 20 20 20 28 28 64 65 72 69 76 65 ))....;;.If.in.dired....((derive
8e5a0 64 2d 6d 6f 64 65 2d 70 20 27 64 69 72 65 64 2d 6d 6f 64 65 29 0a 20 20 20 20 28 6c 65 74 2a 20 d-mode-p.'dired-mode).....(let*.
8e5c0 28 28 66 69 6c 65 73 20 28 64 69 72 65 64 2d 67 65 74 2d 6d 61 72 6b 65 64 2d 66 69 6c 65 73 29 ((files.(dired-get-marked-files)
8e5e0 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 64 69 72 73 20 28 63 6c 2d 72 65 6d 6f 76 65 2d 69 66 )............(dirs.(cl-remove-if
8e600 2d 6e 6f 74 20 23 27 66 69 6c 65 2d 64 69 72 65 63 74 6f 72 79 2d 70 20 66 69 6c 65 73 29 29 0a -not.#'file-directory-p.files)).
8e620 20 20 20 20 20 20 20 20 20 20 20 28 72 65 6d 6f 76 65 2d 70 20 28 3c 20 28 70 72 65 66 69 78 2d ...........(remove-p.(<.(prefix-
8e640 6e 75 6d 65 72 69 63 2d 76 61 6c 75 65 20 61 72 67 29 20 30 29 29 0a 09 20 20 20 28 61 63 74 69 numeric-value.arg).0)).....(acti
8e660 6f 6e 2d 66 6e 20 28 69 66 20 72 65 6d 6f 76 65 2d 70 0a 09 09 09 20 20 23 27 67 70 74 65 6c 2d on-fn.(if.remove-p......#'gptel-
8e680 63 6f 6e 74 65 78 74 2d 72 65 6d 6f 76 65 0a 09 09 09 23 27 67 70 74 65 6c 2d 63 6f 6e 74 65 78 context-remove....#'gptel-contex
8e6a0 74 2d 61 64 64 2d 66 69 6c 65 29 29 29 0a 20 20 20 20 20 20 28 77 68 65 6e 20 28 6f 72 20 72 65 t-add-file))).......(when.(or.re
8e6c0 6d 6f 76 65 2d 70 20 28 6e 75 6c 6c 20 64 69 72 73 29 20 28 6e 75 6c 6c 20 63 6f 6e 66 69 72 6d move-p.(null.dirs).(null.confirm
8e6e0 29 0a 09 09 28 79 2d 6f 72 2d 6e 2d 70 20 28 66 6f 72 6d 61 74 20 22 52 65 63 75 72 73 69 76 65 )...(y-or-n-p.(format."Recursive
8e700 6c 79 20 61 64 64 20 66 69 6c 65 73 20 66 72 6f 6d 20 25 64 20 64 69 72 65 63 74 6f 72 25 73 3f ly.add.files.from.%d.director%s?
8e720 20 22 0a 09 09 09 09 20 20 28 6c 65 6e 67 74 68 20 64 69 72 73 29 0a 09 09 09 09 20 20 28 69 66 .".......(length.dirs).......(if
8e740 20 28 3d 20 28 6c 65 6e 67 74 68 20 64 69 72 73 29 20 31 29 20 22 79 22 20 22 69 65 73 22 29 29 .(=.(length.dirs).1)."y"."ies"))
8e760 29 29 0a 09 28 6d 61 70 63 20 61 63 74 69 6f 6e 2d 66 6e 20 66 69 6c 65 73 29 29 29 29 0a 20 20 ))..(mapc.action-fn.files))))...
8e780 20 3b 3b 20 49 66 20 69 6e 20 61 6e 20 69 6d 61 67 65 20 62 75 66 66 65 72 0a 20 20 20 28 28 61 .;;.If.in.an.image.buffer....((a
8e7a0 6e 64 20 28 64 65 72 69 76 65 64 2d 6d 6f 64 65 2d 70 20 27 69 6d 61 67 65 2d 6d 6f 64 65 29 0a nd.(derived-mode-p.'image-mode).
8e7c0 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 63 61 70 61 62 6c 65 2d 70 .........(gptel--model-capable-p
8e7e0 20 27 6d 65 64 69 61 29 0a 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 2d 66 69 6c 65 2d 6e .'media)..........(buffer-file-n
8e800 61 6d 65 29 29 0a 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 28 69 66 20 28 61 6e 64 20 61 72 67 20 ame)).....(funcall.(if.(and.arg.
8e820 28 3c 20 28 70 72 65 66 69 78 2d 6e 75 6d 65 72 69 63 2d 76 61 6c 75 65 20 61 72 67 29 20 30 29 (<.(prefix-numeric-value.arg).0)
8e840 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 27 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d )...............#'gptel-context-
8e860 72 65 6d 6f 76 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 27 67 70 74 65 6c 2d 63 6f 6e remove...............#'gptel-con
8e880 74 65 78 74 2d 61 64 64 2d 66 69 6c 65 29 0a 20 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 text-add-file)...........(buffer
8e8a0 2d 66 69 6c 65 2d 6e 61 6d 65 29 29 29 0a 20 20 20 3b 3b 20 4e 6f 20 72 65 67 69 6f 6e 20 69 73 -file-name)))....;;.No.region.is
8e8c0 20 73 65 6c 65 63 74 65 64 2c 20 61 6e 64 20 41 52 47 20 69 73 20 70 6f 73 69 74 69 76 65 2e 0a .selected,.and.ARG.is.positive..
8e8e0 20 20 20 28 28 61 6e 64 20 61 72 67 20 28 3e 20 28 70 72 65 66 69 78 2d 6e 75 6d 65 72 69 63 2d ...((and.arg.(>.(prefix-numeric-
8e900 76 61 6c 75 65 20 61 72 67 29 20 30 29 29 0a 20 20 20 20 28 6c 65 74 2a 20 28 28 62 75 66 66 65 value.arg).0)).....(let*.((buffe
8e920 72 2d 6e 61 6d 65 20 28 72 65 61 64 2d 62 75 66 66 65 72 20 22 43 68 6f 6f 73 65 20 62 75 66 66 r-name.(read-buffer."Choose.buff
8e940 65 72 20 74 6f 20 61 64 64 20 61 73 20 63 6f 6e 74 65 78 74 3a 20 22 0a 20 20 20 20 20 20 20 20 er.to.add.as.context:.".........
8e960 20 20 20 20 20 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 75 .............................(cu
8e980 72 72 65 6e 74 2d 62 75 66 66 65 72 29 20 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 73 74 rrent-buffer).t))............(st
8e9a0 61 72 74 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 2d art.(with-current-buffer.buffer-
8e9c0 6e 61 6d 65 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 28 65 name.(point-min)))............(e
8e9e0 6e 64 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 2d 6e nd.(with-current-buffer.buffer-n
8ea00 61 6d 65 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 29 29 0a 20 20 20 20 20 20 28 67 70 74 65 6c 2d ame.(point-max)))).......(gptel-
8ea20 63 6f 6e 74 65 78 74 2d 2d 61 64 64 2d 72 65 67 69 6f 6e 0a 20 20 20 20 20 20 20 28 67 65 74 2d context--add-region........(get-
8ea40 62 75 66 66 65 72 20 62 75 66 66 65 72 2d 6e 61 6d 65 29 20 73 74 61 72 74 20 65 6e 64 20 74 29 buffer.buffer-name).start.end.t)
8ea60 0a 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 42 75 66 66 65 72 20 27 25 73 27 20 61 64 64 .......(message."Buffer.'%s'.add
8ea80 65 64 20 61 73 20 63 6f 6e 74 65 78 74 2e 22 20 62 75 66 66 65 72 2d 6e 61 6d 65 29 29 29 0a 20 ed.as.context.".buffer-name)))..
8eaa0 20 20 3b 3b 20 4e 6f 20 72 65 67 69 6f 6e 20 69 73 20 73 65 6c 65 63 74 65 64 2c 20 61 6e 64 20 ..;;.No.region.is.selected,.and.
8eac0 41 52 47 20 69 73 20 6e 65 67 61 74 69 76 65 2e 0a 20 20 20 28 28 61 6e 64 20 61 72 67 20 28 3c ARG.is.negative.....((and.arg.(<
8eae0 20 28 70 72 65 66 69 78 2d 6e 75 6d 65 72 69 63 2d 76 61 6c 75 65 20 61 72 67 29 20 30 29 29 0a .(prefix-numeric-value.arg).0)).
8eb00 20 20 20 20 28 77 68 65 6e 20 28 6f 72 20 28 6e 75 6c 6c 20 63 6f 6e 66 69 72 6d 29 0a 09 20 20 ....(when.(or.(null.confirm)....
8eb20 20 20 20 20 28 79 2d 6f 72 2d 6e 2d 70 20 22 52 65 6d 6f 76 65 20 61 6c 6c 20 63 6f 6e 74 65 78 ....(y-or-n-p."Remove.all.contex
8eb40 74 73 20 66 72 6f 6d 20 74 68 69 73 20 62 75 66 66 65 72 3f 20 22 29 29 0a 20 20 20 20 20 20 28 ts.from.this.buffer?.")).......(
8eb60 6c 65 74 20 28 28 72 65 6d 6f 76 65 64 2d 63 6f 6e 74 65 78 74 73 20 30 29 29 0a 20 20 20 20 20 let.((removed-contexts.0))......
8eb80 20 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 63 6f 76 20 69 6e 0a 20 20 20 20 20 20 20 20 20 ...(cl-loop.for.cov.in..........
8eba0 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 69 6e 2d 72 65 67 69 6f ........(gptel-context--in-regio
8ebc0 6e 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28 n.(current-buffer).(point-min).(
8ebe0 70 6f 69 6e 74 2d 6d 61 78 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 20 point-max))..................do.
8ec00 28 70 72 6f 67 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c (progn.......................(cl
8ec20 2d 69 6e 63 66 20 72 65 6d 6f 76 65 64 2d 63 6f 6e 74 65 78 74 73 29 0a 20 20 20 20 20 20 20 20 -incf.removed-contexts).........
8ec40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 72 65 6d ..............(gptel-context-rem
8ec60 6f 76 65 20 63 6f 76 29 29 29 0a 20 20 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 28 66 6f 72 ove.cov))).........(message.(for
8ec80 6d 61 74 20 22 25 64 20 63 6f 6e 74 65 78 74 25 73 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d 20 63 mat."%d.context%s.removed.from.c
8eca0 75 72 72 65 6e 74 20 62 75 66 66 65 72 2e 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 urrent.buffer.".................
8ecc0 20 20 20 20 20 20 20 20 20 72 65 6d 6f 76 65 64 2d 63 6f 6e 74 65 78 74 73 0a 20 20 20 20 20 20 .........removed-contexts.......
8ece0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 3d 20 72 65 6d 6f 76 65 ...................(if.(=.remove
8ed00 64 2d 63 6f 6e 74 65 78 74 73 20 31 29 20 22 22 20 22 73 22 29 29 29 29 29 29 0a 20 20 20 28 74 d-contexts.1).""."s"))))))....(t
8ed20 20 3b 20 44 65 66 61 75 6c 74 20 62 65 68 61 76 69 6f 72 0a 20 20 20 20 28 69 66 20 28 67 70 74 .;.Default.behavior.....(if.(gpt
8ed40 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61 74 2d 70 6f 69 6e 74 29 0a 20 20 20 20 20 20 20 20 28 70 el-context--at-point).........(p
8ed60 72 6f 67 6e 0a 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 72 65 rogn...........(gptel-context-re
8ed80 6d 6f 76 65 20 28 63 61 72 20 28 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 69 6e 2d 72 65 67 move.(car.(gptel-context--in-reg
8eda0 69 6f 6e 20 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 ion.(current-buffer)............
8edc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
8ede0 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 70 6f 69 6e 74 2d ....................(max.(point-
8ee00 6d 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 min).(1-.(point)))..............
8ee20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
8ee40 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 29 29 0a 20 20 20 ..................(point))))....
8ee60 20 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 43 6f 6e 74 65 78 74 20 75 6e 64 65 72 20 70 .......(message."Context.under.p
8ee80 6f 69 6e 74 20 68 61 73 20 62 65 65 6e 20 72 65 6d 6f 76 65 64 2e 22 29 29 0a 20 20 20 20 20 20 oint.has.been.removed.")).......
8eea0 28 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61 64 64 2d 72 65 67 69 6f 6e 20 28 63 75 72 72 (gptel-context--add-region.(curr
8eec0 65 6e 74 2d 62 75 66 66 65 72 29 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28 70 6f 69 6e 74 2d 6d ent-buffer).(point-min).(point-m
8eee0 61 78 29 20 74 29 0a 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 43 75 72 72 65 6e 74 20 62 ax).t).......(message."Current.b
8ef00 75 66 66 65 72 20 61 64 64 65 64 20 61 73 20 63 6f 6e 74 65 78 74 2e 22 29 29 29 29 29 0a 0a 3b uffer.added.as.context.")))))..;
8ef20 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 20 28 61 75 74 6f 6c 6f 61 64 20 27 67 70 74 65 6c 2d 61 ;;###autoload.(autoload.'gptel-a
8ef40 64 64 20 22 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 22 20 22 41 64 64 2f 72 65 6d 6f 76 65 20 72 dd."gptel-context"."Add/remove.r
8ef60 65 67 69 6f 6e 73 20 6f 72 20 62 75 66 66 65 72 73 20 66 72 6f 6d 20 67 70 74 65 6c 27 73 20 63 egions.or.buffers.from.gptel's.c
8ef80 6f 6e 74 65 78 74 2e 22 20 74 29 0a 28 64 65 66 61 6c 69 61 73 20 27 67 70 74 65 6c 2d 61 64 64 ontext.".t).(defalias.'gptel-add
8efa0 20 23 27 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 61 64 64 29 0a 0a 28 64 65 66 75 6e 20 67 70 .#'gptel-context-add)..(defun.gp
8efc0 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61 64 64 2d 74 65 78 74 2d 66 69 6c 65 20 28 70 61 74 68 tel-context--add-text-file.(path
8efe0 29 0a 20 20 22 41 64 64 20 74 65 78 74 20 66 69 6c 65 20 61 74 20 50 41 54 48 20 74 6f 20 63 6f )..."Add.text.file.at.PATH.to.co
8f000 6e 74 65 78 74 2e 22 0a 20 20 28 63 6c 2d 70 75 73 68 6e 65 77 20 28 6c 69 73 74 20 70 61 74 68 ntext."...(cl-pushnew.(list.path
8f020 29 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61 6c 69 73 74 20 3a 74 65 73 74 20 23 27 65 ).gptel-context--alist.:test.#'e
8f040 71 75 61 6c 29 0a 20 20 28 6d 65 73 73 61 67 65 20 22 46 69 6c 65 20 5c 22 25 73 5c 22 20 61 64 qual)...(message."File.\"%s\".ad
8f060 64 65 64 20 74 6f 20 63 6f 6e 74 65 78 74 2e 22 20 70 61 74 68 29 0a 20 20 70 61 74 68 29 0a 0a ded.to.context.".path)...path)..
8f080 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61 64 64 2d 62 69 6e 61 72 79 (defun.gptel-context--add-binary
8f0a0 2d 66 69 6c 65 20 28 70 61 74 68 29 0a 20 20 22 41 64 64 20 62 69 6e 61 72 79 20 66 69 6c 65 20 -file.(path)..."Add.binary.file.
8f0c0 61 74 20 50 41 54 48 20 74 6f 20 63 6f 6e 74 65 78 74 20 69 66 20 73 75 70 70 6f 72 74 65 64 2e at.PATH.to.context.if.supported.
8f0e0 0a 52 65 74 75 72 6e 20 50 41 54 48 20 69 66 20 61 64 64 65 64 2c 20 6e 69 6c 20 69 66 20 69 67 .Return.PATH.if.added,.nil.if.ig
8f100 6e 6f 72 65 64 2e 22 0a 20 20 28 69 66 2d 6c 65 74 2a 20 28 28 28 67 70 74 65 6c 2d 2d 6d 6f 64 nored."...(if-let*.(((gptel--mod
8f120 65 6c 2d 63 61 70 61 62 6c 65 2d 70 20 27 6d 65 64 69 61 29 29 0a 20 20 20 20 20 20 20 20 20 20 el-capable-p.'media))...........
8f140 20 20 28 6d 69 6d 65 20 28 6d 61 69 6c 63 61 70 2d 66 69 6c 65 2d 6e 61 6d 65 2d 74 6f 2d 6d 69 ..(mime.(mailcap-file-name-to-mi
8f160 6d 65 2d 74 79 70 65 20 70 61 74 68 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 28 67 70 74 me-type.path)).............((gpt
8f180 65 6c 2d 2d 6d 6f 64 65 6c 2d 6d 69 6d 65 2d 63 61 70 61 62 6c 65 2d 70 20 6d 69 6d 65 29 29 29 el--model-mime-capable-p.mime)))
8f1a0 0a 20 20 20 20 20 20 28 70 72 6f 67 31 20 70 61 74 68 0a 20 20 20 20 20 20 20 20 28 63 6c 2d 70 .......(prog1.path.........(cl-p
8f1c0 75 73 68 6e 65 77 20 28 6c 69 73 74 20 70 61 74 68 20 3a 6d 69 6d 65 20 6d 69 6d 65 29 0a 20 20 ushnew.(list.path.:mime.mime)...
8f1e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d ..................gptel-context-
8f200 2d 61 6c 69 73 74 20 3a 74 65 73 74 20 23 27 65 71 75 61 6c 29 0a 20 20 20 20 20 20 20 20 28 6d -alist.:test.#'equal).........(m
8f220 65 73 73 61 67 65 20 22 46 69 6c 65 20 5c 22 25 73 5c 22 20 61 64 64 65 64 20 74 6f 20 63 6f 6e essage."File.\"%s\".added.to.con
8f240 74 65 78 74 2e 22 20 70 61 74 68 29 29 0a 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 49 67 6e 6f text.".path)).....(message."Igno
8f260 72 69 6e 67 20 75 6e 73 75 70 70 6f 72 74 65 64 20 62 69 6e 61 72 79 20 66 69 6c 65 20 5c 22 25 ring.unsupported.binary.file.\"%
8f280 73 5c 22 2e 22 20 70 61 74 68 29 0a 20 20 20 20 6e 69 6c 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 s\".".path).....nil))..(defun.gp
8f2a0 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61 64 64 2d 64 69 72 65 63 74 6f 72 79 20 28 70 61 74 68 tel-context--add-directory.(path
8f2c0 20 61 63 74 69 6f 6e 29 0a 20 20 22 50 72 6f 63 65 73 73 20 61 6c 6c 20 66 69 6c 65 73 20 69 6e .action)..."Process.all.files.in
8f2e0 20 64 69 72 65 63 74 6f 72 79 20 61 74 20 50 41 54 48 20 61 63 63 6f 72 64 69 6e 67 20 74 6f 20 .directory.at.PATH.according.to.
8f300 41 43 54 49 4f 4e 2e 0a 41 43 54 49 4f 4e 20 73 68 6f 75 6c 64 20 62 65 20 65 69 74 68 65 72 20 ACTION..ACTION.should.be.either.
8f320 60 61 64 64 27 20 6f 72 20 60 72 65 6d 6f 76 65 27 2e 22 0a 20 20 28 6c 65 74 20 28 28 66 69 6c `add'.or.`remove'."...(let.((fil
8f340 65 73 20 28 64 69 72 65 63 74 6f 72 79 2d 66 69 6c 65 73 2d 72 65 63 75 72 73 69 76 65 6c 79 20 es.(directory-files-recursively.
8f360 70 61 74 68 20 22 2e 22 20 74 29 29 29 0a 20 20 20 20 28 6d 61 70 63 20 28 6c 61 6d 62 64 61 20 path.".".t))).....(mapc.(lambda.
8f380 28 66 69 6c 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 66 69 6c 65 (file).............(unless.(file
8f3a0 2d 64 69 72 65 63 74 6f 72 79 2d 70 20 66 69 6c 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 -directory-p.file)..............
8f3c0 20 28 70 63 61 73 65 2d 65 78 68 61 75 73 74 69 76 65 20 61 63 74 69 6f 6e 0a 20 20 20 20 20 20 .(pcase-exhaustive.action.......
8f3e0 20 20 20 20 20 20 20 20 20 20 28 27 61 64 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..........('add.................
8f400 20 28 69 66 20 28 67 70 74 65 6c 2d 2d 66 69 6c 65 2d 62 69 6e 61 72 79 2d 70 20 66 69 6c 65 29 .(if.(gptel--file-binary-p.file)
8f420 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 63 6f 6e ......................(gptel-con
8f440 74 65 78 74 2d 2d 61 64 64 2d 62 69 6e 61 72 79 2d 66 69 6c 65 20 66 69 6c 65 29 0a 20 20 20 20 text--add-binary-file.file).....
8f460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61 ...............(gptel-context--a
8f480 64 64 2d 74 65 78 74 2d 66 69 6c 65 20 66 69 6c 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 dd-text-file.file)))............
8f4a0 20 20 20 20 20 28 27 72 65 6d 6f 76 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 .....('remove..................(
8f4c0 73 65 74 66 20 28 61 6c 69 73 74 2d 67 65 74 20 66 69 6c 65 20 67 70 74 65 6c 2d 63 6f 6e 74 65 setf.(alist-get.file.gptel-conte
8f4e0 78 74 2d 2d 61 6c 69 73 74 20 6e 69 6c 20 27 72 65 6d 6f 76 65 20 23 27 65 71 75 61 6c 29 20 6e xt--alist.nil.'remove.#'equal).n
8f500 69 6c 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 73 29 0a 20 20 20 20 28 77 68 il)))))...........files).....(wh
8f520 65 6e 20 28 65 71 20 61 63 74 69 6f 6e 20 27 72 65 6d 6f 76 65 29 0a 20 20 20 20 20 20 28 6d 65 en.(eq.action.'remove).......(me
8f540 73 73 61 67 65 20 22 44 69 72 65 63 74 6f 72 79 20 5c 22 25 73 5c 22 20 72 65 6d 6f 76 65 64 20 ssage."Directory.\"%s\".removed.
8f560 66 72 6f 6d 20 63 6f 6e 74 65 78 74 2e 22 20 70 61 74 68 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 from.context.".path))))..(defun.
8f580 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 61 64 64 2d 66 69 6c 65 20 28 70 61 74 68 29 0a 20 20 gptel-context-add-file.(path)...
8f5a0 22 41 64 64 20 74 68 65 20 66 69 6c 65 20 61 74 20 50 41 54 48 20 74 6f 20 74 68 65 20 67 70 74 "Add.the.file.at.PATH.to.the.gpt
8f5c0 65 6c 20 63 6f 6e 74 65 78 74 2e 0a 0a 49 66 20 50 41 54 48 20 69 73 20 61 20 64 69 72 65 63 74 el.context...If.PATH.is.a.direct
8f5e0 6f 72 79 2c 20 72 65 63 75 72 73 69 76 65 6c 79 20 61 64 64 20 61 6c 6c 20 66 69 6c 65 73 20 69 ory,.recursively.add.all.files.i
8f600 6e 20 69 74 2e 0a 50 41 54 48 20 73 68 6f 75 6c 64 20 62 65 20 72 65 61 64 61 62 6c 65 20 61 73 n.it..PATH.should.be.readable.as
8f620 20 74 65 78 74 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 20 22 66 43 68 6f 6f 73 65 20 .text."...(interactive."fChoose.
8f640 66 69 6c 65 20 74 6f 20 61 64 64 20 74 6f 20 63 6f 6e 74 65 78 74 3a 20 22 29 0a 20 20 28 63 6f file.to.add.to.context:.")...(co
8f660 6e 64 20 28 28 66 69 6c 65 2d 64 69 72 65 63 74 6f 72 79 2d 70 20 70 61 74 68 29 0a 09 20 28 67 nd.((file-directory-p.path)...(g
8f680 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61 64 64 2d 64 69 72 65 63 74 6f 72 79 20 70 61 74 68 ptel-context--add-directory.path
8f6a0 20 27 61 64 64 29 29 0a 09 28 28 67 70 74 65 6c 2d 2d 66 69 6c 65 2d 62 69 6e 61 72 79 2d 70 20 .'add))..((gptel--file-binary-p.
8f6c0 70 61 74 68 29 0a 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61 path)..........(gptel-context--a
8f6e0 64 64 2d 62 69 6e 61 72 79 2d 66 69 6c 65 20 70 61 74 68 29 29 0a 09 28 28 67 70 74 65 6c 2d 63 dd-binary-file.path))..((gptel-c
8f700 6f 6e 74 65 78 74 2d 2d 61 64 64 2d 74 65 78 74 2d 66 69 6c 65 20 70 61 74 68 29 29 29 29 0a 0a ontext--add-text-file.path))))..
8f720 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 20 28 61 75 74 6f 6c 6f 61 64 20 27 67 70 74 65 6c 2d ;;;###autoload.(autoload.'gptel-
8f740 61 64 64 2d 66 69 6c 65 20 22 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 22 20 22 41 64 64 20 66 69 add-file."gptel-context"."Add.fi
8f760 6c 65 73 20 74 6f 20 67 70 74 65 6c 27 73 20 63 6f 6e 74 65 78 74 2e 22 20 74 29 0a 28 64 65 66 les.to.gptel's.context.".t).(def
8f780 61 6c 69 61 73 20 27 67 70 74 65 6c 2d 61 64 64 2d 66 69 6c 65 20 23 27 67 70 74 65 6c 2d 63 6f alias.'gptel-add-file.#'gptel-co
8f7a0 6e 74 65 78 74 2d 61 64 64 2d 66 69 6c 65 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 63 6f ntext-add-file)..(defun.gptel-co
8f7c0 6e 74 65 78 74 2d 72 65 6d 6f 76 65 20 28 26 6f 70 74 69 6f 6e 61 6c 20 63 6f 6e 74 65 78 74 29 ntext-remove.(&optional.context)
8f7e0 0a 20 20 22 52 65 6d 6f 76 65 20 74 68 65 20 43 4f 4e 54 45 58 54 20 6f 76 65 72 6c 61 79 20 66 ..."Remove.the.CONTEXT.overlay.f
8f800 72 6f 6d 20 74 68 65 20 63 6f 6e 74 65 78 74 73 20 6c 69 73 74 2e 0a 0a 49 66 20 43 4f 4e 54 45 rom.the.contexts.list...If.CONTE
8f820 58 54 20 69 73 20 6e 69 6c 2c 20 72 65 6d 6f 76 65 73 20 74 68 65 20 63 6f 6e 74 65 78 74 20 61 XT.is.nil,.removes.the.context.a
8f840 74 20 70 6f 69 6e 74 2e 0a 49 66 20 73 65 6c 65 63 74 69 6f 6e 20 69 73 20 61 63 74 69 76 65 2c t.point..If.selection.is.active,
8f860 20 72 65 6d 6f 76 65 73 20 61 6c 6c 20 63 6f 6e 74 65 78 74 73 20 77 69 74 68 69 6e 20 73 65 6c .removes.all.contexts.within.sel
8f880 65 63 74 69 6f 6e 2e 0a 49 66 20 43 4f 4e 54 45 58 54 20 69 73 20 61 20 64 69 72 65 63 74 6f 72 ection..If.CONTEXT.is.a.director
8f8a0 79 2c 20 72 65 63 75 72 73 69 76 65 6c 79 20 72 65 6d 6f 76 65 73 20 61 6c 6c 20 66 69 6c 65 73 y,.recursively.removes.all.files
8f8c0 20 69 6e 20 69 74 2e 22 0a 20 20 28 63 6f 6e 64 0a 20 20 20 28 28 6f 76 65 72 6c 61 79 70 20 63 .in.it."...(cond....((overlayp.c
8f8e0 6f 6e 74 65 78 74 29 0a 20 20 20 20 28 64 65 6c 65 74 65 2d 6f 76 65 72 6c 61 79 20 63 6f 6e 74 ontext).....(delete-overlay.cont
8f900 65 78 74 29 0a 20 20 20 20 3b 3b 20 46 49 58 4d 45 3a 20 51 75 61 64 72 61 74 69 63 20 63 6f 73 ext).....;;.FIXME:.Quadratic.cos
8f920 74 20 77 68 65 6e 20 63 6c 65 61 72 69 6e 67 20 61 20 62 75 6e 63 68 20 6f 66 20 63 6f 6e 74 65 t.when.clearing.a.bunch.of.conte
8f940 78 74 73 20 61 74 20 6f 6e 63 65 0a 20 20 20 20 28 75 6e 6c 65 73 73 0a 20 20 20 20 20 20 20 20 xts.at.once.....(unless.........
8f960 28 63 6c 2d 6c 6f 6f 70 0a 20 20 20 20 20 20 20 20 20 66 6f 72 20 6f 76 20 69 6e 20 28 61 6c 69 (cl-loop..........for.ov.in.(ali
8f980 73 74 2d 67 65 74 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 20 67 70 74 65 6c 2d 63 6f st-get.(current-buffer).gptel-co
8f9a0 6e 74 65 78 74 2d 2d 61 6c 69 73 74 29 0a 20 20 20 20 20 20 20 20 20 74 68 65 72 65 69 73 20 28 ntext--alist)..........thereis.(
8f9c0 6f 76 65 72 6c 61 79 2d 73 74 61 72 74 20 6f 76 29 29 0a 20 20 20 20 20 20 28 73 65 74 66 20 28 overlay-start.ov)).......(setf.(
8f9e0 61 6c 69 73 74 2d 67 65 74 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 20 67 70 74 65 6c alist-get.(current-buffer).gptel
8fa00 2d 63 6f 6e 74 65 78 74 2d 2d 61 6c 69 73 74 20 6e 69 6c 20 27 72 65 6d 6f 76 65 29 20 6e 69 6c -context--alist.nil.'remove).nil
8fa20 29 29 29 0a 20 20 20 28 28 73 74 72 69 6e 67 70 20 63 6f 6e 74 65 78 74 29 20 20 20 20 20 20 20 )))....((stringp.context).......
8fa40 20 20 20 20 20 20 20 20 20 20 20 20 3b 66 69 6c 65 20 6f 72 20 64 69 72 65 63 74 6f 72 79 0a 20 ............;file.or.directory..
8fa60 20 20 20 28 69 66 20 28 66 69 6c 65 2d 64 69 72 65 63 74 6f 72 79 2d 70 20 63 6f 6e 74 65 78 74 ...(if.(file-directory-p.context
8fa80 29 0a 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61 64 64 2d 64 69 ).........(gptel-context--add-di
8faa0 72 65 63 74 6f 72 79 20 63 6f 6e 74 65 78 74 20 27 72 65 6d 6f 76 65 29 0a 20 20 20 20 20 20 28 rectory.context.'remove).......(
8fac0 73 65 74 66 20 28 61 6c 69 73 74 2d 67 65 74 20 63 6f 6e 74 65 78 74 20 67 70 74 65 6c 2d 63 6f setf.(alist-get.context.gptel-co
8fae0 6e 74 65 78 74 2d 2d 61 6c 69 73 74 20 6e 69 6c 20 27 72 65 6d 6f 76 65 20 23 27 65 71 75 61 6c ntext--alist.nil.'remove.#'equal
8fb00 29 20 6e 69 6c 29 0a 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 46 69 6c 65 20 5c 22 25 73 ).nil).......(message."File.\"%s
8fb20 5c 22 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d 20 63 6f 6e 74 65 78 74 2e 22 20 63 6f 6e 74 65 78 \".removed.from.context.".contex
8fb40 74 29 29 29 0a 20 20 20 28 28 72 65 67 69 6f 6e 2d 61 63 74 69 76 65 2d 70 29 0a 20 20 20 20 28 t)))....((region-active-p).....(
8fb60 77 68 65 6e 2d 6c 65 74 2a 20 28 28 63 6f 6e 74 65 78 74 73 20 28 67 70 74 65 6c 2d 63 6f 6e 74 when-let*.((contexts.(gptel-cont
8fb80 65 78 74 2d 2d 69 6e 2d 72 65 67 69 6f 6e 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 0a ext--in-region.(current-buffer).
8fba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
8fbc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 67 69 6f 6e 2d 62 65 67 69 ....................(region-begi
8fbe0 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)..........................
8fc00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 67 69 ...........................(regi
8fc20 6f 6e 2d 65 6e 64 29 29 29 29 0a 20 20 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 63 74 on-end)))).......(cl-loop.for.ct
8fc40 78 20 69 6e 20 63 6f 6e 74 65 78 74 73 20 64 6f 20 28 64 65 6c 65 74 65 2d 6f 76 65 72 6c 61 79 x.in.contexts.do.(delete-overlay
8fc60 20 63 74 78 29 29 29 29 0a 20 20 20 28 74 0a 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 .ctx))))....(t.....(when-let*.((
8fc80 63 74 78 20 28 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61 74 2d 70 6f 69 6e 74 29 29 29 0a ctx.(gptel-context--at-point))).
8fca0 20 20 20 20 20 20 28 64 65 6c 65 74 65 2d 6f 76 65 72 6c 61 79 20 63 74 78 29 29 29 29 29 0a 0a ......(delete-overlay.ctx)))))..
8fcc0 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 72 65 6d 6f 76 65 2d 61 6c 6c 20 (defun.gptel-context-remove-all.
8fce0 28 26 6f 70 74 69 6f 6e 61 6c 20 76 65 72 62 6f 73 65 29 0a 20 20 22 52 65 6d 6f 76 65 20 61 6c (&optional.verbose)..."Remove.al
8fd00 6c 20 67 70 74 65 6c 20 63 6f 6e 74 65 78 74 2e 0a 0a 49 66 20 56 45 52 42 4f 53 45 20 69 73 20 l.gptel.context...If.VERBOSE.is.
8fd20 6e 6f 6e 2d 6e 69 6c 2c 20 61 73 6b 20 66 6f 72 20 63 6f 6e 66 69 72 6d 61 74 69 6f 6e 20 61 6e non-nil,.ask.for.confirmation.an
8fd40 64 20 6d 65 73 73 61 67 65 0a 61 66 74 65 72 77 61 72 64 73 2e 22 0a 20 20 28 69 6e 74 65 72 61 d.message.afterwards."...(intera
8fd60 63 74 69 76 65 20 28 6c 69 73 74 20 74 29 29 0a 20 20 28 69 66 20 28 6e 75 6c 6c 20 67 70 74 65 ctive.(list.t))...(if.(null.gpte
8fd80 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61 6c 69 73 74 29 0a 20 20 20 20 20 20 28 77 68 65 6e 20 76 65 l-context--alist).......(when.ve
8fda0 72 62 6f 73 65 20 28 6d 65 73 73 61 67 65 20 22 4e 6f 20 67 70 74 65 6c 20 63 6f 6e 74 65 78 74 rbose.(message."No.gptel.context
8fdc0 20 73 6f 75 72 63 65 73 20 74 6f 20 72 65 6d 6f 76 65 2e 22 29 29 0a 20 20 20 20 28 77 68 65 6e .sources.to.remove.")).....(when
8fde0 20 28 6f 72 20 28 6e 6f 74 20 76 65 72 62 6f 73 65 29 20 28 79 2d 6f 72 2d 6e 2d 70 20 22 52 65 .(or.(not.verbose).(y-or-n-p."Re
8fe00 6d 6f 76 65 20 61 6c 6c 20 63 6f 6e 74 65 78 74 3f 20 22 29 29 0a 20 20 20 20 20 20 28 63 6c 2d move.all.context?.")).......(cl-
8fe20 6c 6f 6f 70 0a 20 20 20 20 20 20 20 66 6f 72 20 28 73 6f 75 72 63 65 20 2e 20 6f 76 73 29 20 69 loop........for.(source...ovs).i
8fe40 6e 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61 6c 69 73 74 0a 20 20 20 20 20 20 20 69 66 n.gptel-context--alist........if
8fe60 20 28 62 75 66 66 65 72 70 20 73 6f 75 72 63 65 29 20 64 6f 20 20 20 20 20 20 20 20 20 20 20 3b .(bufferp.source).do...........;
8fe80 42 75 66 66 65 72 73 20 61 6e 64 20 62 75 66 66 65 72 20 72 65 67 69 6f 6e 73 0a 20 20 20 20 20 Buffers.and.buffer.regions......
8fea0 20 20 28 6d 61 70 63 20 23 27 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 72 65 6d 6f 76 65 20 6f ..(mapc.#'gptel-context-remove.o
8fec0 76 73 29 0a 20 20 20 20 20 20 20 65 6c 73 65 20 64 6f 20 28 67 70 74 65 6c 2d 63 6f 6e 74 65 78 vs)........else.do.(gptel-contex
8fee0 74 2d 72 65 6d 6f 76 65 20 73 6f 75 72 63 65 29 20 3b 66 69 6c 65 73 20 6f 72 20 6f 74 68 65 72 t-remove.source).;files.or.other
8ff00 20 74 79 70 65 73 0a 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 20 64 6f 20 28 73 65 74 71 20 67 .types........finally.do.(setq.g
8ff20 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61 6c 69 73 74 20 6e 69 6c 29 29 29 0a 20 20 20 20 28 ptel-context--alist.nil))).....(
8ff40 77 68 65 6e 20 76 65 72 62 6f 73 65 20 28 6d 65 73 73 61 67 65 20 22 52 65 6d 6f 76 65 64 20 61 when.verbose.(message."Removed.a
8ff60 6c 6c 20 67 70 74 65 6c 20 63 6f 6e 74 65 78 74 20 73 6f 75 72 63 65 73 2e 22 29 29 29 29 0a 0a ll.gptel.context.sources."))))..
8ff80 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 6d 61 6b 65 2d 6f 76 65 72 6c (defun.gptel-context--make-overl
8ffa0 61 79 20 28 73 74 61 72 74 20 65 6e 64 20 26 6f 70 74 69 6f 6e 61 6c 20 61 64 76 61 6e 63 65 29 ay.(start.end.&optional.advance)
8ffc0 0a 20 20 22 48 69 67 68 6c 69 67 68 74 20 74 68 65 20 72 65 67 69 6f 6e 20 66 72 6f 6d 20 53 54 ..."Highlight.the.region.from.ST
8ffe0 41 52 54 20 74 6f 20 45 4e 44 2e 0a 0a 41 44 56 41 4e 43 45 20 63 6f 6e 74 72 6f 6c 73 20 74 68 ART.to.END...ADVANCE.controls.th
90000 65 20 6f 76 65 72 6c 61 79 20 62 6f 75 6e 64 61 72 79 20 62 65 68 61 76 69 6f 72 2e 22 0a 20 20 e.overlay.boundary.behavior."...
90020 28 6c 65 74 20 28 28 6f 76 65 72 6c 61 79 20 28 6d 61 6b 65 2d 6f 76 65 72 6c 61 79 20 73 74 61 (let.((overlay.(make-overlay.sta
90040 72 74 20 65 6e 64 20 6e 69 6c 20 28 6e 6f 74 20 61 64 76 61 6e 63 65 29 20 61 64 76 61 6e 63 65 rt.end.nil.(not.advance).advance
90060 29 29 29 0a 20 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75 74 20 6f 76 65 72 6c 61 79 20 27 65 76 ))).....(overlay-put.overlay.'ev
90080 61 70 6f 72 61 74 65 20 74 29 0a 20 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75 74 20 6f 76 65 72 aporate.t).....(overlay-put.over
900a0 6c 61 79 20 27 66 61 63 65 20 27 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 68 69 67 68 6c 69 67 lay.'face.'gptel-context-highlig
900c0 68 74 2d 66 61 63 65 29 0a 20 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75 74 20 6f 76 65 72 6c 61 ht-face).....(overlay-put.overla
900e0 79 20 27 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 20 74 29 0a 20 20 20 20 28 70 75 73 68 20 6f 76 y.'gptel-context.t).....(push.ov
90100 65 72 6c 61 79 20 28 61 6c 69 73 74 2d 67 65 74 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 erlay.(alist-get.(current-buffer
90120 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 67 )..............................g
90140 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61 6c 69 73 74 29 29 0a 20 20 20 20 6f 76 65 72 6c 61 ptel-context--alist)).....overla
90160 79 29 29 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a 28 64 65 66 75 6e 20 67 70 74 65 6c y))..;;;###autoload.(defun.gptel
90180 2d 63 6f 6e 74 65 78 74 2d 2d 77 72 61 70 20 28 63 61 6c 6c 62 61 63 6b 20 64 61 74 61 2d 62 75 -context--wrap.(callback.data-bu
901a0 66 29 0a 20 20 22 41 64 64 20 72 65 71 75 65 73 74 20 63 6f 6e 74 65 78 74 20 74 6f 20 44 41 54 f)..."Add.request.context.to.DAT
901c0 41 2d 42 55 46 20 61 6e 64 20 72 75 6e 20 43 41 4c 4c 42 41 43 4b 2e 0a 0a 44 41 54 41 2d 42 55 A-BUF.and.run.CALLBACK...DATA-BU
901e0 46 20 69 73 20 74 68 65 20 62 75 66 66 65 72 20 77 68 65 72 65 20 74 68 65 20 72 65 71 75 65 73 F.is.the.buffer.where.the.reques
90200 74 20 70 72 6f 6d 70 74 20 69 73 20 63 6f 6e 73 74 72 75 63 74 65 64 2e 22 0a 20 20 28 69 66 20 t.prompt.is.constructed."...(if.
90220 28 3d 20 28 63 61 72 20 28 66 75 6e 63 2d 61 72 69 74 79 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 (=.(car.(func-arity.gptel-contex
90240 74 2d 73 74 72 69 6e 67 2d 66 75 6e 63 74 69 6f 6e 29 29 20 32 29 0a 20 20 20 20 20 20 28 66 75 t-string-function)).2).......(fu
90260 6e 63 61 6c 6c 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 73 74 72 69 6e 67 2d 66 75 6e 63 74 ncall.gptel-context-string-funct
90280 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 63 29 20 28 ion................(lambda.(c).(
902a0 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 64 61 74 61 2d 62 75 66 0a 20 20 20 with-current-buffer.data-buf....
902c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 63 6f 6e 74 .....................(gptel-cont
902e0 65 78 74 2d 2d 77 72 61 70 2d 69 6e 2d 62 75 66 66 65 72 20 63 29 29 0a 20 20 20 20 20 20 20 20 ext--wrap-in-buffer.c)).........
90300 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 63 61 6c 6c 62 61 63 6b 29 29 0a 20 20 20 .........(funcall.callback))....
90320 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 63 6f 6c 6c ............(gptel-context--coll
90340 65 63 74 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 64 ect)).....(with-current-buffer.d
90360 61 74 61 2d 62 75 66 0a 20 20 20 20 20 20 28 74 68 72 65 61 64 2d 6c 61 73 74 20 28 67 70 74 65 ata-buf.......(thread-last.(gpte
90380 6c 2d 63 6f 6e 74 65 78 74 2d 2d 63 6f 6c 6c 65 63 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 l-context--collect).............
903a0 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 73 74 .......(funcall.gptel-context-st
903c0 72 69 6e 67 2d 66 75 6e 63 74 69 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ring-function)..................
903e0 20 20 28 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 77 72 61 70 2d 69 6e 2d 62 75 66 66 65 72 ..(gptel-context--wrap-in-buffer
90400 29 29 29 0a 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 63 61 6c 6c 62 61 63 6b 29 29 29 0a 0a 28 64 ))).....(funcall.callback)))..(d
90420 65 66 75 6e 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 77 72 61 70 2d 69 6e 2d 62 75 66 66 efun.gptel-context--wrap-in-buff
90440 65 72 20 28 63 6f 6e 74 65 78 74 2d 73 74 72 69 6e 67 20 26 6f 70 74 69 6f 6e 61 6c 20 6d 65 74 er.(context-string.&optional.met
90460 68 6f 64 29 0a 20 20 22 49 6e 6a 65 63 74 20 43 4f 4e 54 45 58 54 2d 53 54 52 49 4e 47 20 74 6f hod)..."Inject.CONTEXT-STRING.to
90480 20 63 75 72 72 65 6e 74 20 62 75 66 66 65 72 20 75 73 69 6e 67 20 4d 45 54 48 4f 44 2e 0a 0a 4d .current.buffer.using.METHOD...M
904a0 45 54 48 4f 44 20 69 73 20 65 69 74 68 65 72 20 73 79 73 74 65 6d 20 6f 72 20 75 73 65 72 2c 20 ETHOD.is.either.system.or.user,.
904c0 61 6e 64 20 64 65 66 61 75 6c 74 73 20 74 6f 20 60 67 70 74 65 6c 2d 75 73 65 2d 63 6f 6e 74 65 and.defaults.to.`gptel-use-conte
904e0 78 74 27 2e 0a 54 68 69 73 20 6d 6f 64 69 66 69 65 73 20 74 68 65 20 62 75 66 66 65 72 2e 22 0a xt'..This.modifies.the.buffer.".
90500 20 20 28 77 68 65 6e 20 28 6c 65 6e 67 74 68 3e 20 63 6f 6e 74 65 78 74 2d 73 74 72 69 6e 67 20 ..(when.(length>.context-string.
90520 30 29 0a 20 20 20 20 28 70 63 61 73 65 20 28 6f 72 20 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 75 0).....(pcase.(or.method.gptel-u
90540 73 65 2d 63 6f 6e 74 65 78 74 29 0a 20 20 20 20 20 20 28 27 73 79 73 74 65 6d 0a 20 20 20 20 20 se-context).......('system......
90560 20 20 28 69 66 20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 63 61 70 61 62 6c 65 2d 70 20 27 6e ..(if.(gptel--model-capable-p.'n
90580 6f 73 79 73 74 65 6d 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 63 6f 6e 74 65 osystem)............(gptel-conte
905a0 78 74 2d 2d 77 72 61 70 2d 69 6e 2d 62 75 66 66 65 72 20 63 6f 6e 74 65 78 74 2d 73 74 72 69 6e xt--wrap-in-buffer.context-strin
905c0 67 20 27 75 73 65 72 29 0a 20 20 20 20 20 20 20 20 20 28 69 66 20 67 70 74 65 6c 2d 2d 73 79 73 g.'user)..........(if.gptel--sys
905e0 74 65 6d 2d 6d 65 73 73 61 67 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 65 74 79 tem-message..............(cl-ety
90600 70 65 63 61 73 65 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 pecase.gptel--system-message....
90620 20 20 20 20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 ............(string.............
90640 20 20 20 20 28 73 65 74 71 20 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 0a ....(setq.gptel--system-message.
90660 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 67 70 ......................(concat.gp
90680 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 22 20 63 6f 6e 74 65 tel--system-message."\n\n".conte
906a0 78 74 2d 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 28 66 75 6e xt-string)))................(fun
906c0 63 74 69 6f 6e 0a 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 ction.................(setq.gpte
906e0 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 20 20 20 20 l--system-message...............
90700 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 64 69 72 65 63 74 69 76 65 20 ........(gptel--parse-directive.
90720 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 20 27 72 61 77 29 29 0a 20 20 20 gptel--system-message.'raw))....
90740 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 77 72 61 .............(gptel-context--wra
90760 70 2d 69 6e 2d 62 75 66 66 65 72 20 63 6f 6e 74 65 78 74 2d 73 74 72 69 6e 67 29 29 0a 20 20 20 p-in-buffer.context-string))....
90780 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...............
907a0 20 20 28 73 65 74 71 20 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 20 3b 63 ..(setq.gptel--system-message.;c
907c0 6f 6e 73 20 61 20 6e 65 77 20 6c 69 73 74 20 74 6f 20 61 76 6f 69 64 20 6d 75 74 61 74 69 6f 6e ons.a.new.list.to.avoid.mutation
907e0 0a 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 73 20 28 63 6f .......................(cons.(co
90800 6e 63 61 74 20 28 63 61 72 20 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 29 ncat.(car.gptel--system-message)
90820 20 22 5c 6e 5c 6e 22 20 63 6f 6e 74 65 78 74 2d 73 74 72 69 6e 67 29 0a 20 20 20 20 20 20 20 20 ."\n\n".context-string).........
90840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 64 72 20 67 70 74 65 6c 2d 2d ....................(cdr.gptel--
90860 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 system-message)))))............(
90880 73 65 74 71 20 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 20 63 6f 6e 74 65 setq.gptel--system-message.conte
908a0 78 74 2d 73 74 72 69 6e 67 29 29 29 29 0a 20 20 20 20 20 20 28 27 75 73 65 72 0a 20 20 20 20 20 xt-string)))).......('user......
908c0 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 20 ..(goto-char.(point-max)).......
908e0 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 72 64 20 .(text-property-search-backward.
90900 27 67 70 74 65 6c 20 6e 69 6c 20 74 29 0a 20 20 20 20 20 20 20 28 61 6e 64 20 67 70 74 65 6c 2d 'gptel.nil.t)........(and.gptel-
90920 6d 6f 64 65 0a 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 20 mode.............(looking-at....
90940 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 22 5b 5c 6e 5b 3a 62 6c 61 6e 6b 3a 5d 5d ..........(concat."[\n[:blank:]]
90960 2a 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 2d 6c 65 74 *"......................(and-let
90980 2a 20 28 28 70 72 65 66 69 78 20 28 67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 70 72 65 66 69 78 2d *.((prefix.(gptel-prompt-prefix-
909a0 73 74 72 69 6e 67 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 string))........................
909c0 20 20 20 20 20 20 20 20 20 28 28 6e 6f 74 20 28 73 74 72 69 6e 67 2d 65 6d 70 74 79 2d 70 20 70 .........((not.(string-empty-p.p
909e0 72 65 66 69 78 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 refix)))).......................
90a00 20 28 63 6f 6e 63 61 74 20 22 5c 5c 28 3f 3a 22 20 28 72 65 67 65 78 70 2d 71 75 6f 74 65 20 70 .(concat."\\(?:".(regexp-quote.p
90a20 72 65 66 69 78 29 20 22 5c 5c 29 3f 22 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 64 refix)."\\)?")))).............(d
90a40 65 6c 65 74 65 2d 72 65 67 69 6f 6e 20 28 6d 61 74 63 68 2d 62 65 67 69 6e 6e 69 6e 67 20 30 29 elete-region.(match-beginning.0)
90a60 20 28 6d 61 74 63 68 2d 65 6e 64 20 30 29 29 29 0a 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 .(match-end.0)))........(insert.
90a80 22 5c 6e 22 20 63 6f 6e 74 65 78 74 2d 73 74 72 69 6e 67 20 22 5c 6e 5c 6e 22 29 29 29 29 29 0a "\n".context-string."\n\n"))))).
90aa0 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 63 6f 6c 6c 65 63 74 2d 6d .(defun.gptel-context--collect-m
90ac0 65 64 69 61 20 28 26 6f 70 74 69 6f 6e 61 6c 20 63 6f 6e 74 65 78 74 73 29 0a 20 20 22 43 6f 6c edia.(&optional.contexts)..."Col
90ae0 6c 65 63 74 20 6d 65 64 69 61 20 43 4f 4e 54 45 58 54 53 2e 0a 0a 43 4f 4e 54 45 58 54 53 2c 20 lect.media.CONTEXTS...CONTEXTS,.
90b00 77 68 69 63 68 20 61 72 65 20 74 79 70 69 63 61 6c 6c 79 20 70 61 74 68 73 20 74 6f 20 62 69 6e which.are.typically.paths.to.bin
90b20 61 72 79 20 66 69 6c 65 73 2c 20 61 72 65 0a 62 61 73 65 36 34 2d 65 6e 63 6f 64 65 64 20 61 6e ary.files,.are.base64-encoded.an
90b40 64 20 70 72 65 70 65 6e 64 65 64 20 74 6f 20 74 68 65 20 66 69 72 73 74 20 75 73 65 72 20 70 72 d.prepended.to.the.first.user.pr
90b60 6f 6d 70 74 2e 22 0a 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 63 6f 6e 74 65 78 74 20 69 6e ompt."...(cl-loop.for.context.in
90b80 20 28 6f 72 20 63 6f 6e 74 65 78 74 73 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61 6c 69 .(or.contexts.gptel-context--ali
90ba0 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 70 61 74 68 20 2e 20 70 72 6f 70 73 st)............for.(path...props
90bc0 29 20 3d 20 63 6f 6e 74 65 78 74 0a 20 20 20 20 20 20 20 20 20 20 20 77 68 65 6e 20 28 61 6e 64 ).=.context............when.(and
90be0 20 28 73 74 72 69 6e 67 70 20 70 61 74 68 29 20 28 70 6c 69 73 74 2d 67 65 74 20 70 72 6f 70 73 .(stringp.path).(plist-get.props
90c00 20 3a 6d 69 6d 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 63 6f 6c 6c 65 63 74 20 28 63 6f 6e .:mime))............collect.(con
90c20 73 20 3a 6d 65 64 69 61 20 63 6f 6e 74 65 78 74 29 29 29 0a 0a 28 63 6c 2d 64 65 66 75 6e 20 67 s.:media.context)))..(cl-defun.g
90c40 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61 64 64 2d 72 65 67 69 6f 6e 20 28 62 75 66 66 65 72 ptel-context--add-region.(buffer
90c60 20 72 65 67 69 6f 6e 2d 62 65 67 69 6e 6e 69 6e 67 20 72 65 67 69 6f 6e 2d 65 6e 64 20 26 6f 70 .region-beginning.region-end.&op
90c80 74 69 6f 6e 61 6c 20 61 64 76 61 6e 63 65 29 0a 20 20 22 41 64 64 20 72 65 67 69 6f 6e 20 64 65 tional.advance)..."Add.region.de
90ca0 6c 69 6d 69 74 65 64 20 62 79 20 52 45 47 49 4f 4e 2d 42 45 47 49 4e 4e 49 4e 47 2c 20 52 45 47 limited.by.REGION-BEGINNING,.REG
90cc0 49 4f 4e 2d 45 4e 44 20 69 6e 20 42 55 46 46 45 52 20 61 73 20 63 6f 6e 74 65 78 74 2e 0a 0a 49 ION-END.in.BUFFER.as.context...I
90ce0 66 20 41 44 56 41 4e 43 45 20 69 73 20 6e 6f 6e 2d 6e 69 6c 2c 20 74 68 65 20 63 6f 6e 74 65 78 f.ADVANCE.is.non-nil,.the.contex
90d00 74 20 6f 76 65 72 6c 61 79 20 65 6e 76 65 6c 6f 70 65 73 20 63 68 61 6e 67 65 73 20 61 74 0a 74 t.overlay.envelopes.changes.at.t
90d20 68 65 20 62 65 67 69 6e 6e 69 6e 67 20 61 6e 64 20 65 6e 64 2e 22 0a 20 20 3b 3b 20 52 65 6d 6f he.beginning.and.end."...;;.Remo
90d40 76 65 20 65 78 69 73 74 69 6e 67 20 63 6f 6e 74 65 78 74 73 20 69 6e 20 74 68 65 20 73 61 6d 65 ve.existing.contexts.in.the.same
90d60 20 72 65 67 69 6f 6e 2c 20 69 66 20 61 6e 79 2e 0a 20 20 28 6d 61 70 63 20 23 27 67 70 74 65 6c .region,.if.any....(mapc.#'gptel
90d80 2d 63 6f 6e 74 65 78 74 2d 72 65 6d 6f 76 65 0a 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 63 -context-remove.........(gptel-c
90da0 6f 6e 74 65 78 74 2d 2d 69 6e 2d 72 65 67 69 6f 6e 20 62 75 66 66 65 72 20 72 65 67 69 6f 6e 2d ontext--in-region.buffer.region-
90dc0 62 65 67 69 6e 6e 69 6e 67 20 72 65 67 69 6f 6e 2d 65 6e 64 29 29 0a 20 20 28 70 72 6f 67 31 20 beginning.region-end))...(prog1.
90de0 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 20 20 20 20 (with-current-buffer.buffer.....
90e00 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 6d 61 6b 65 2d 6f 76 65 72 .......(gptel-context--make-over
90e20 6c 61 79 20 72 65 67 69 6f 6e 2d 62 65 67 69 6e 6e 69 6e 67 20 72 65 67 69 6f 6e 2d 65 6e 64 20 lay.region-beginning.region-end.
90e40 61 64 76 61 6e 63 65 29 29 0a 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 52 65 67 69 6f 6e advance)).......(message."Region
90e60 20 61 64 64 65 64 20 74 6f 20 63 6f 6e 74 65 78 74 20 62 75 66 66 65 72 2e 22 29 29 29 0a 0a 28 .added.to.context.buffer.")))..(
90e80 64 65 66 75 6e 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 69 6e 2d 72 65 67 69 6f 6e 20 28 defun.gptel-context--in-region.(
90ea0 62 75 66 66 65 72 20 73 74 61 72 74 20 65 6e 64 29 0a 20 20 22 52 65 74 75 72 6e 20 74 68 65 20 buffer.start.end)..."Return.the.
90ec0 6c 69 73 74 20 6f 66 20 63 6f 6e 74 65 78 74 20 6f 76 65 72 6c 61 79 73 20 69 6e 20 74 68 65 20 list.of.context.overlays.in.the.
90ee0 67 69 76 65 6e 20 72 65 67 69 6f 6e 2c 20 69 66 20 61 6e 79 2c 20 69 6e 20 42 55 46 46 45 52 2e given.region,.if.any,.in.BUFFER.
90f00 0a 53 54 41 52 54 20 61 6e 64 20 45 4e 44 20 73 69 67 6e 69 66 79 20 74 68 65 20 72 65 67 69 6f .START.and.END.signify.the.regio
90f20 6e 20 64 65 6c 69 6d 69 74 65 72 73 2e 22 0a 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 n.delimiters."...(with-current-b
90f40 75 66 66 65 72 20 62 75 66 66 65 72 0a 20 20 20 20 28 63 6c 2d 72 65 6d 6f 76 65 2d 69 66 2d 6e uffer.buffer.....(cl-remove-if-n
90f60 6f 74 20 28 6c 61 6d 62 64 61 20 28 6f 76 29 20 28 6f 76 65 72 6c 61 79 2d 67 65 74 20 6f 76 20 ot.(lambda.(ov).(overlay-get.ov.
90f80 27 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 'gptel-context))................
90fa0 20 20 20 20 20 20 20 28 6f 76 65 72 6c 61 79 73 2d 69 6e 20 73 74 61 72 74 20 65 6e 64 29 29 29 .......(overlays-in.start.end)))
90fc0 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61 74 2d 70 6f 69 6e )..(defun.gptel-context--at-poin
90fe0 74 20 28 29 0a 20 20 22 52 65 74 75 72 6e 20 74 68 65 20 63 6f 6e 74 65 78 74 20 6f 76 65 72 6c t.()..."Return.the.context.overl
91000 61 79 20 61 74 20 70 6f 69 6e 74 2c 20 69 66 20 61 6e 79 2e 22 0a 20 20 28 63 6c 2d 66 69 6e 64 ay.at.point,.if.any."...(cl-find
91020 2d 69 66 20 28 6c 61 6d 62 64 61 20 28 6f 76 29 20 28 6f 76 65 72 6c 61 79 2d 67 65 74 20 6f 76 -if.(lambda.(ov).(overlay-get.ov
91040 20 27 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .'gptel-context))...............
91060 28 6f 76 65 72 6c 61 79 73 2d 61 74 20 28 70 6f 69 6e 74 29 29 29 29 0a 0a 3b 3b 3b 23 23 23 61 (overlays-at.(point))))..;;;###a
91080 75 74 6f 6c 6f 61 64 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 63 6f utoload.(defun.gptel-context--co
910a0 6c 6c 65 63 74 20 28 29 0a 20 20 22 47 65 74 20 74 68 65 20 6c 69 73 74 20 6f 66 20 61 6c 6c 20 llect.()..."Get.the.list.of.all.
910c0 61 63 74 69 76 65 20 63 6f 6e 74 65 78 74 20 6f 76 65 72 6c 61 79 73 2e 22 0a 20 20 3b 3b 20 47 active.context.overlays."...;;.G
910e0 65 74 20 6f 6e 6c 79 20 74 68 65 20 6e 6f 6e 2d 64 65 67 65 6e 65 72 61 74 65 20 6f 76 65 72 6c et.only.the.non-degenerate.overl
91100 61 79 73 2c 20 63 6f 6c 6c 65 63 74 20 74 68 65 6d 2c 20 61 6e 64 20 75 70 64 61 74 65 20 74 68 ays,.collect.them,.and.update.th
91120 65 20 6f 76 65 72 6c 61 79 73 20 76 61 72 69 61 62 6c 65 2e 0a 20 20 28 73 65 74 71 20 67 70 74 e.overlays.variable....(setq.gpt
91140 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61 6c 69 73 74 0a 20 20 20 20 20 20 20 20 28 63 6c 2d 6c 6f el-context--alist.........(cl-lo
91160 6f 70 20 66 6f 72 20 28 62 75 66 20 2e 20 6f 76 73 29 20 69 6e 20 67 70 74 65 6c 2d 63 6f 6e 74 op.for.(buf...ovs).in.gptel-cont
91180 65 78 74 2d 2d 61 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 ext--alist..................if.(
911a0 62 75 66 66 65 72 2d 6c 69 76 65 2d 70 20 62 75 66 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 buffer-live-p.buf)..............
911c0 20 20 20 20 20 20 69 66 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 6f 76 20 69 6e 20 6f 76 73 20 ......if.(cl-loop.for.ov.in.ovs.
911e0 77 68 65 6e 20 28 6f 76 65 72 6c 61 79 2d 73 74 61 72 74 20 6f 76 29 20 63 6f 6c 6c 65 63 74 20 when.(overlay-start.ov).collect.
91200 6f 76 29 0a 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 28 ov)....................collect.(
91220 63 6f 6e 73 20 62 75 66 20 69 74 29 20 69 6e 74 6f 20 65 6c 65 6d 65 6e 74 73 0a 20 20 20 20 20 cons.buf.it).into.elements......
91240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..............end...............
91260 20 20 20 65 6c 73 65 20 69 66 20 28 61 6e 64 20 28 73 74 72 69 6e 67 70 20 62 75 66 29 20 28 66 ...else.if.(and.(stringp.buf).(f
91280 69 6c 65 2d 65 78 69 73 74 73 2d 70 20 62 75 66 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ile-exists-p.buf))..............
912a0 20 20 20 20 69 66 20 28 70 6c 69 73 74 2d 67 65 74 20 6f 76 73 20 3a 6d 69 6d 65 29 0a 20 20 20 ....if.(plist-get.ovs.:mime)....
912c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6c 6c 65 63 74 20 28 63 6f 6e 73 20 62 75 66 20 ..............collect.(cons.buf.
912e0 6f 76 73 29 20 69 6e 74 6f 20 65 6c 65 6d 65 6e 74 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ovs).into.elements..............
91300 20 20 20 20 65 6c 73 65 20 63 6f 6c 6c 65 63 74 20 28 6c 69 73 74 20 62 75 66 29 20 69 6e 74 6f ....else.collect.(list.buf).into
91320 20 65 6c 65 6d 65 6e 74 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c .elements..................final
91340 6c 79 20 72 65 74 75 72 6e 20 65 6c 65 6d 65 6e 74 73 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 ly.return.elements)))..(defun.gp
91360 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 69 6e 73 65 72 74 2d 62 75 66 66 65 72 2d 73 74 72 69 6e tel-context--insert-buffer-strin
91380 67 20 28 62 75 66 66 65 72 20 63 6f 6e 74 65 78 74 73 29 0a 20 20 22 49 6e 73 65 72 74 20 61 74 g.(buffer.contexts)..."Insert.at
913a0 20 70 6f 69 6e 74 20 61 20 63 6f 6e 74 65 78 74 20 73 74 72 69 6e 67 20 66 72 6f 6d 20 61 6c 6c .point.a.context.string.from.all
913c0 20 43 4f 4e 54 45 58 54 53 20 69 6e 20 42 55 46 46 45 52 2e 22 0a 20 20 20 20 28 6c 65 74 20 28 .CONTEXTS.in.BUFFER.".....(let.(
913e0 28 69 73 2d 74 6f 70 2d 73 6e 69 70 70 65 74 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 72 (is-top-snippet.t)...........(pr
91400 65 76 69 6f 75 73 2d 6c 69 6e 65 20 31 29 29 0a 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 28 66 evious-line.1)).......(insert.(f
91420 6f 72 6d 61 74 20 22 49 6e 20 62 75 66 66 65 72 20 60 25 73 60 3a 22 20 28 62 75 66 66 65 72 2d ormat."In.buffer.`%s`:".(buffer-
91440 6e 61 6d 65 20 62 75 66 66 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 5c 6e 5c name.buffer))..............."\n\
91460 6e 60 60 60 22 20 28 67 70 74 65 6c 2d 2d 73 74 72 69 70 2d 6d 6f 64 65 2d 73 75 66 66 69 78 20 n```".(gptel--strip-mode-suffix.
91480 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.............
914a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
914c0 20 20 20 20 20 20 20 27 6d 61 6a 6f 72 2d 6d 6f 64 65 20 62 75 66 66 65 72 29 29 0a 20 20 20 20 .......'major-mode.buffer)).....
914e0 20 20 20 20 20 20 20 20 20 20 22 5c 6e 22 29 0a 20 20 20 20 20 20 28 64 6f 6c 69 73 74 20 28 63 .........."\n").......(dolist.(c
91500 6f 6e 74 65 78 74 20 63 6f 6e 74 65 78 74 73 29 0a 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 ontext.contexts).........(let*.(
91520 28 73 74 61 72 74 20 28 6f 76 65 72 6c 61 79 2d 73 74 61 72 74 20 63 6f 6e 74 65 78 74 29 29 0a (start.(overlay-start.context)).
91540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6e 64 20 28 6f 76 65 72 6c 61 79 2d 65 6e 64 ...............(end.(overlay-end
91560 20 63 6f 6e 74 65 78 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 65 6e .context))................conten
91580 74 29 0a 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 6c 69 6e 65 6e 6f 20 63 6f 6c 75 6d 6e t)...........(let.(lineno.column
915a0 29 0a 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 75 66 66 ).............(with-current-buff
915c0 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 77 69 74 68 6f 75 74 er.buffer...............(without
915e0 2d 72 65 73 74 72 69 63 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 -restriction.................(se
91600 74 71 20 6c 69 6e 65 6e 6f 20 28 6c 69 6e 65 2d 6e 75 6d 62 65 72 2d 61 74 2d 70 6f 73 20 73 74 tq.lineno.(line-number-at-pos.st
91620 61 72 74 20 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 63 6f 6c art.t).......................col
91640 75 6d 6e 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 20 28 67 6f 74 6f 2d 63 68 61 72 20 73 umn.(save-excursion.(goto-char.s
91660 74 61 72 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 20 tart)...........................
91680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 75 72 72 65 6e 74 2d 63 6f 6c 75 ...................(current-colu
916a0 6d 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 63 6f 6e 74 65 mn)).......................conte
916c0 6e 74 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 nt.(buffer-substring-no-properti
916e0 65 73 20 73 74 61 72 74 20 65 6e 64 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 es.start.end)))).............;;.
91700 57 65 20 64 6f 20 6e 6f 74 20 6e 65 65 64 20 74 6f 20 69 6e 73 65 72 74 20 61 20 6c 69 6e 65 20 We.do.not.need.to.insert.a.line.
91720 6e 75 6d 62 65 72 20 69 6e 64 69 63 61 74 6f 72 20 69 66 20 77 65 20 68 61 76 65 20 74 77 6f 20 number.indicator.if.we.have.two.
91740 72 65 67 69 6f 6e 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 6f 6e 20 74 68 65 20 73 61 regions.............;;.on.the.sa
91760 6d 65 20 6c 69 6e 65 2c 20 62 65 63 61 75 73 65 20 74 68 65 20 70 72 65 76 69 6f 75 73 20 72 65 me.line,.because.the.previous.re
91780 67 69 6f 6e 20 73 68 6f 75 6c 64 20 68 61 76 65 20 61 6c 72 65 61 64 79 20 70 75 74 20 74 68 65 gion.should.have.already.put.the
917a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 69 6e 64 69 63 61 74 6f 72 2e 0a 20 20 20 20 20 .............;;.indicator.......
917c0 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 3d 20 70 72 65 76 69 6f 75 73 2d 6c 69 6e 65 20 .......(unless.(=.previous-line.
917e0 6c 69 6e 65 6e 6f 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 3d lineno)...............(unless.(=
91800 20 6c 69 6e 65 6e 6f 20 31 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 .lineno.1).................(unle
91820 73 73 20 69 73 2d 74 6f 70 2d 73 6e 69 70 70 65 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ss.is-top-snippet...............
91840 20 20 20 20 28 69 6e 73 65 72 74 20 22 5c 6e 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ....(insert."\n"))..............
91860 20 20 20 28 69 6e 73 65 72 74 20 28 66 6f 72 6d 61 74 20 22 2e 2e 2e 20 28 4c 69 6e 65 20 25 64 ...(insert.(format."....(Line.%d
91880 29 5c 6e 22 20 6c 69 6e 65 6e 6f 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 )\n".lineno)))).............(set
918a0 71 20 70 72 65 76 69 6f 75 73 2d 6c 69 6e 65 20 6c 69 6e 65 6e 6f 29 0a 20 20 20 20 20 20 20 20 q.previous-line.lineno).........
918c0 20 20 20 20 28 75 6e 6c 65 73 73 20 28 7a 65 72 6f 70 20 63 6f 6c 75 6d 6e 29 20 28 69 6e 73 65 ....(unless.(zerop.column).(inse
918e0 72 74 20 22 20 2e 2e 2e 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 69 73 2d 74 rt."....")).............(if.is-t
91900 6f 70 2d 73 6e 69 70 70 65 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 op-snippet.................(setq
91920 20 69 73 2d 74 6f 70 2d 73 6e 69 70 70 65 74 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 .is-top-snippet.nil)............
91940 20 20 20 28 75 6e 6c 65 73 73 20 28 3d 20 70 72 65 76 69 6f 75 73 2d 6c 69 6e 65 20 6c 69 6e 65 ...(unless.(=.previous-line.line
91960 6e 6f 29 20 28 69 6e 73 65 72 74 20 22 5c 6e 22 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 no).(insert."\n"))))...........(
91980 69 6e 73 65 72 74 20 63 6f 6e 74 65 6e 74 29 29 29 0a 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 insert.content))).......(unless.
919a0 28 3e 3d 20 28 6f 76 65 72 6c 61 79 2d 65 6e 64 20 28 63 61 72 20 28 6c 61 73 74 20 63 6f 6e 74 (>=.(overlay-end.(car.(last.cont
919c0 65 78 74 73 29 29 29 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 0a 20 20 20 20 20 20 20 20 28 69 6e exts))).(point-max)).........(in
919e0 73 65 72 74 20 22 5c 6e 2e 2e 2e 22 29 29 0a 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 22 5c 6e sert."\n...")).......(insert."\n
91a00 60 60 60 22 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 73 ```")))..(defun.gptel-context--s
91a20 74 72 69 6e 67 20 28 63 6f 6e 74 65 78 74 2d 61 6c 69 73 74 29 0a 20 20 22 46 6f 72 6d 61 74 20 tring.(context-alist)..."Format.
91a40 74 68 65 20 61 67 67 72 65 67 61 74 65 64 20 67 70 74 65 6c 20 63 6f 6e 74 65 78 74 20 61 73 20 the.aggregated.gptel.context.as.
91a60 61 6e 6e 6f 74 61 74 65 64 20 6d 61 72 6b 64 6f 77 6e 20 66 72 61 67 6d 65 6e 74 73 2e 0a 0a 52 annotated.markdown.fragments...R
91a80 65 74 75 72 6e 73 20 61 20 73 74 72 69 6e 67 2e 20 20 43 4f 4e 54 45 58 54 2d 41 4c 49 53 54 20 eturns.a.string...CONTEXT-ALIST.
91aa0 69 73 20 61 20 73 74 72 75 63 74 75 72 65 20 63 6f 6e 74 61 69 6e 69 6e 67 0a 63 6f 6e 74 65 78 is.a.structure.containing.contex
91ac0 74 20 6f 76 65 72 6c 61 79 73 2c 20 73 65 65 20 60 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d t.overlays,.see.`gptel-context--
91ae0 61 6c 69 73 74 27 2e 22 0a 20 20 28 77 69 74 68 2d 74 65 6d 70 2d 62 75 66 66 65 72 0a 20 20 20 alist'."...(with-temp-buffer....
91b00 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 28 62 75 66 20 2e 20 6f 76 73 29 20 69 6e 20 63 6f 6e .(cl-loop.for.(buf...ovs).in.con
91b20 74 65 78 74 2d 61 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62 75 66 66 text-alist..............if.(buff
91b40 65 72 70 20 62 75 66 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 20 28 67 70 74 65 6c 2d erp.buf)..............do.(gptel-
91b60 63 6f 6e 74 65 78 74 2d 2d 69 6e 73 65 72 74 2d 62 75 66 66 65 72 2d 73 74 72 69 6e 67 20 62 75 context--insert-buffer-string.bu
91b80 66 20 6f 76 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 6e 6f 74 f.ovs)..............else.if.(not
91ba0 20 28 70 6c 69 73 74 2d 67 65 74 20 6f 76 73 20 3a 6d 69 6d 65 29 29 0a 20 20 20 20 20 20 20 20 .(plist-get.ovs.:mime)).........
91bc0 20 20 20 20 20 64 6f 20 28 67 70 74 65 6c 2d 2d 69 6e 73 65 72 74 2d 66 69 6c 65 2d 73 74 72 69 .....do.(gptel--insert-file-stri
91be0 6e 67 20 62 75 66 29 20 65 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 20 28 69 6e 73 ng.buf).end..............do.(ins
91c00 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 66 69 6e 61 6c 6c 79 ert."\n\n")..............finally
91c20 20 64 6f 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 6b 69 70 2d 63 68 61 72 73 2d 62 61 63 .do..............(skip-chars-bac
91c40 6b 77 61 72 64 20 22 5c 6e 5c 74 5c 72 20 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 kward."\n\t\r.")..............(d
91c60 65 6c 65 74 65 2d 72 65 67 69 6f 6e 20 28 70 6f 69 6e 74 29 20 28 70 6f 69 6e 74 2d 6d 61 78 29 elete-region.(point).(point-max)
91c80 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 62 6f 62 70 29 0a 20 20 )..............(unless.(bobp)...
91ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d .............(goto-char.(point-m
91cc0 69 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 22 52 65 71 in))................(insert."Req
91ce0 75 65 73 74 20 63 6f 6e 74 65 78 74 3a 5c 6e 5c 6e 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 uest.context:\n\n"))............
91d00 20 20 66 69 6e 61 6c 6c 79 20 72 65 74 75 72 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 ..finally.return...............(
91d20 61 6e 64 20 28 3e 20 28 62 75 66 66 65 72 2d 73 69 7a 65 29 20 30 29 0a 20 20 20 20 20 20 20 20 and.(>.(buffer-size).0).........
91d40 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 2d 73 74 72 69 6e 67 29 29 29 29 29 0a 0a ...........(buffer-string)))))..
91d60 3b 3b 3b 20 4d 61 6a 6f 72 20 6d 6f 64 65 20 66 6f 72 20 63 6f 6e 74 65 78 74 20 69 6e 73 70 65 ;;;.Major.mode.for.context.inspe
91d80 63 74 69 6f 6e 20 62 75 66 66 65 72 73 0a 28 64 65 66 76 61 72 2d 6b 65 79 6d 61 70 20 67 70 74 ction.buffers.(defvar-keymap.gpt
91da0 65 6c 2d 63 6f 6e 74 65 78 74 2d 62 75 66 66 65 72 2d 6d 6f 64 65 2d 6d 61 70 0a 20 20 22 43 2d el-context-buffer-mode-map..."C-
91dc0 63 20 43 2d 63 22 20 23 27 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 63 6f 6e 66 69 72 6d 0a 20 c.C-c".#'gptel-context-confirm..
91de0 20 22 43 2d 63 20 43 2d 6b 22 20 23 27 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 71 75 69 74 0a ."C-c.C-k".#'gptel-context-quit.
91e00 20 20 22 52 45 54 22 20 20 20 20 20 23 27 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 76 69 73 69 .."RET".....#'gptel-context-visi
91e20 74 0a 20 20 22 6e 22 20 20 20 20 20 20 20 23 27 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 6e 65 t..."n".......#'gptel-context-ne
91e40 78 74 0a 20 20 22 70 22 20 20 20 20 20 20 20 23 27 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 70 xt..."p".......#'gptel-context-p
91e60 72 65 76 69 6f 75 73 0a 20 20 22 64 22 20 20 20 20 20 20 20 23 27 67 70 74 65 6c 2d 63 6f 6e 74 revious..."d".......#'gptel-cont
91e80 65 78 74 2d 66 6c 61 67 2d 64 65 6c 65 74 69 6f 6e 29 0a 0a 28 64 65 66 69 6e 65 2d 64 65 72 69 ext-flag-deletion)..(define-deri
91ea0 76 65 64 2d 6d 6f 64 65 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 62 75 66 66 65 72 2d 6d 6f ved-mode.gptel-context-buffer-mo
91ec0 64 65 20 73 70 65 63 69 61 6c 2d 6d 6f 64 65 20 22 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 22 0a de.special-mode."gptel-context".
91ee0 20 20 22 4d 61 6a 6f 72 2d 6d 6f 64 65 20 66 6f 72 20 69 6e 73 70 65 63 74 69 6e 67 20 63 6f 6e .."Major-mode.for.inspecting.con
91f00 74 65 78 74 20 75 73 65 64 20 62 79 20 67 70 74 65 6c 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 67 text.used.by.gptel."...:group.'g
91f20 70 74 65 6c 0a 20 20 28 61 64 64 2d 68 6f 6f 6b 20 27 70 6f 73 74 2d 63 6f 6d 6d 61 6e 64 2d 68 ptel...(add-hook.'post-command-h
91f40 6f 6f 6b 20 23 27 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 70 6f 73 74 2d 63 6f 6d 6d 61 6e ook.#'gptel-context--post-comman
91f60 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 69 6c 20 74 29 0a 20 20 28 73 65 74 71 2d 6c 6f 63 d.............nil.t)...(setq-loc
91f80 61 6c 20 72 65 76 65 72 74 2d 62 75 66 66 65 72 2d 66 75 6e 63 74 69 6f 6e 20 23 27 67 70 74 65 al.revert-buffer-function.#'gpte
91fa0 6c 2d 63 6f 6e 74 65 78 74 2d 2d 62 75 66 66 65 72 2d 73 65 74 75 70 29 29 0a 0a 28 64 65 66 75 l-context--buffer-setup))..(defu
91fc0 6e 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 62 75 66 66 65 72 2d 73 65 74 75 70 20 28 26 n.gptel-context--buffer-setup.(&
91fe0 6f 70 74 69 6f 6e 61 6c 20 5f 69 67 6e 6f 72 65 2d 61 75 74 6f 20 5f 6e 6f 63 6f 6e 66 69 72 6d optional._ignore-auto._noconfirm
92000 29 0a 20 20 22 53 65 74 20 75 70 20 74 68 65 20 67 70 74 65 6c 20 63 6f 6e 74 65 78 74 20 62 75 )..."Set.up.the.gptel.context.bu
92020 66 66 65 72 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 67 ffer."...(with-current-buffer.(g
92040 65 74 2d 62 75 66 66 65 72 2d 63 72 65 61 74 65 20 22 2a 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 et-buffer-create."*gptel-context
92060 2a 22 29 0a 20 20 20 20 28 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 62 75 66 66 65 72 2d 6d 6f *").....(gptel-context-buffer-mo
92080 64 65 29 0a 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 de).....(let.((inhibit-read-only
920a0 20 74 29 29 0a 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 .t)).......(erase-buffer).......
920c0 28 73 65 74 71 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 (setq.header-line-format........
920e0 20 20 20 20 20 28 73 75 62 73 74 69 74 75 74 65 2d 63 6f 6d 6d 61 6e 64 2d 6b 65 79 73 0a 20 20 .....(substitute-command-keys...
92100 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ...........(concat..............
92120 20 22 5c 5c 5b 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 66 6c 61 67 2d 64 65 6c 65 74 69 6f 6e ."\\[gptel-context-flag-deletion
92140 5d 3a 20 4d 61 72 6b 2f 75 6e 6d 61 72 6b 20 64 65 6c 65 74 69 6f 6e 2c 20 22 0a 20 20 20 20 20 ]:.Mark/unmark.deletion,."......
92160 20 20 20 20 20 20 20 20 20 22 5c 5c 5b 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 6e 65 78 74 5d ........."\\[gptel-context-next]
92180 2f 5c 5c 5b 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 70 72 65 76 69 6f 75 73 5d 3a 20 6e 65 78 /\\[gptel-context-previous]:.nex
921a0 74 2f 70 72 65 76 69 6f 75 73 2c 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 5c 5c 5b t/previous,."..............."\\[
921c0 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 76 69 73 69 74 5d 3a 20 76 69 73 69 74 2c 20 22 0a 20 gptel-context-visit]:.visit,."..
921e0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 5c 5c 5b 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 63 ............."\\[gptel-context-c
92200 6f 6e 66 69 72 6d 5d 3a 20 61 70 70 6c 79 2c 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 onfirm]:.apply,."...............
92220 22 5c 5c 5b 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 71 75 69 74 5d 3a 20 63 61 6e 63 65 6c 2c "\\[gptel-context-quit]:.cancel,
92240 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 5c 5c 5b 71 75 69 74 2d 77 69 6e 64 6f 77 ."..............."\\[quit-window
92260 5d 3a 20 71 75 69 74 22 29 29 29 0a 20 20 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f ]:.quit"))).......(save-excursio
92280 6e 0a 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 63 6f 6e 74 65 78 74 73 20 67 70 74 65 6c 2d n.........(let.((contexts.gptel-
922a0 63 6f 6e 74 65 78 74 2d 2d 61 6c 69 73 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 context--alist))...........(if.(
922c0 6c 65 6e 67 74 68 3e 20 63 6f 6e 74 65 78 74 73 20 30 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 length>.contexts.0).............
922e0 20 20 28 6c 65 74 20 28 62 65 67 20 6f 76 20 6c 31 20 6c 32 29 0a 20 20 20 20 20 20 20 20 20 20 ..(let.(beg.ov.l1.l2)...........
92300 20 20 20 20 20 20 28 70 63 61 73 65 2d 64 6f 6c 69 73 74 20 28 60 28 2c 62 75 66 20 2e 20 2c 6f ......(pcase-dolist.(`(,buf...,o
92320 76 73 29 20 63 6f 6e 74 65 78 74 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 vs).contexts)...................
92340 28 69 66 20 28 62 75 66 66 65 72 70 20 62 75 66 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (if.(bufferp.buf)...............
92360 20 20 20 20 20 20 20 20 3b 3b 20 49 74 27 73 20 61 20 62 75 66 66 65 72 20 77 69 74 68 20 73 6f ........;;.It's.a.buffer.with.so
92380 6d 65 20 6f 76 65 72 6c 61 79 28 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 me.overlay(s)...................
923a0 20 20 20 20 28 64 6f 6c 69 73 74 20 28 73 6f 75 72 63 65 2d 6f 76 20 6f 76 73 29 0a 20 20 20 20 ....(dolist.(source-ov.ovs).....
923c0 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 6e ....................(with-curren
923e0 74 2d 62 75 66 66 65 72 20 62 75 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 t-buffer.buf....................
92400 20 20 20 20 20 20 20 28 73 65 74 71 20 6c 31 20 28 6c 69 6e 65 2d 6e 75 6d 62 65 72 2d 61 74 2d .......(setq.l1.(line-number-at-
92420 70 6f 73 20 28 6f 76 65 72 6c 61 79 2d 73 74 61 72 74 20 73 6f 75 72 63 65 2d 6f 76 29 29 0a 20 pos.(overlay-start.source-ov))..
92440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c ...............................l
92460 32 20 28 6c 69 6e 65 2d 6e 75 6d 62 65 72 2d 61 74 2d 70 6f 73 20 28 6f 76 65 72 6c 61 79 2d 65 2.(line-number-at-pos.(overlay-e
92480 6e 64 20 73 6f 75 72 63 65 2d 6f 76 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 nd.source-ov))))................
924a0 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 28 70 72 6f 70 65 72 74 69 7a 65 20 28 66 6f .........(insert.(propertize.(fo
924c0 72 6d 61 74 20 22 49 6e 20 62 75 66 66 65 72 20 25 73 20 28 6c 69 6e 65 73 20 25 64 2d 25 64 29 rmat."In.buffer.%s.(lines.%d-%d)
924e0 3a 5c 6e 5c 6e 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\n"..........................
92500 20 20 20 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 ...........................(buff
92520 65 72 2d 6e 61 6d 65 20 62 75 66 29 20 6c 31 20 6c 32 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 er-name.buf).l1.l2).............
92540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
92560 27 66 61 63 65 20 27 62 6f 6c 64 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 'face.'bold))...................
92580 20 20 20 20 20 20 28 73 65 74 71 20 62 65 67 20 28 70 6f 69 6e 74 29 29 0a 20 20 20 20 20 20 20 ......(setq.beg.(point))........
925a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 2d 62 75 66 66 65 72 2d .................(insert-buffer-
925c0 73 75 62 73 74 72 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 substring.......................
925e0 20 20 20 62 75 66 20 28 6f 76 65 72 6c 61 79 2d 73 74 61 72 74 20 73 6f 75 72 63 65 2d 6f 76 29 ...buf.(overlay-start.source-ov)
92600 20 28 6f 76 65 72 6c 61 79 2d 65 6e 64 20 73 6f 75 72 63 65 2d 6f 76 29 29 0a 20 20 20 20 20 20 .(overlay-end.source-ov)).......
92620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 22 5c 6e 22 29 0a ..................(insert."\n").
92640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 6f 76 ........................(setq.ov
92660 20 28 6d 61 6b 65 2d 6f 76 65 72 6c 61 79 20 62 65 67 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 .(make-overlay.beg.(point)))....
92680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75 .....................(overlay-pu
926a0 74 20 6f 76 20 27 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 20 73 6f 75 72 63 65 2d 6f 76 29 0a 20 t.ov.'gptel-context.source-ov)..
926c0 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 76 65 72 6c 61 79 2d .......................(overlay-
926e0 70 75 74 20 6f 76 20 27 67 70 74 65 6c 2d 6f 76 65 72 6c 61 79 20 74 29 0a 20 20 20 20 20 20 20 put.ov.'gptel-overlay.t)........
92700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75 74 20 6f 76 .................(overlay-put.ov
92720 20 27 65 76 61 70 6f 72 61 74 65 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .'evaporate.t)..................
92740 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 22 5c 6e 22 20 28 6d 61 6b 65 2d 73 65 70 61 72 61 .......(insert."\n".(make-separa
92760 74 6f 72 2d 6c 69 6e 65 29 20 22 5c 6e 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 tor-line)."\n"))................
92780 20 20 20 20 20 3b 3b 20 42 55 46 20 69 73 20 61 20 66 69 6c 65 20 70 61 74 68 2c 20 6e 6f 74 20 .....;;.BUF.is.a.file.path,.not.
927a0 61 20 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 28 69 6e a.buffer.....................(in
927c0 73 65 72 74 20 28 70 72 6f 70 65 72 74 69 7a 65 20 28 66 6f 72 6d 61 74 20 22 49 6e 20 66 69 6c sert.(propertize.(format."In.fil
927e0 65 20 25 73 3a 5c 6e 5c 6e 22 20 28 66 69 6c 65 2d 6e 61 6d 65 2d 6e 6f 6e 64 69 72 65 63 74 6f e.%s:\n\n".(file-name-nondirecto
92800 72 79 20 62 75 66 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 ry.buf))........................
92820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 66 61 63 65 20 27 62 6f 6c 64 29 29 0a 20 .................'face.'bold))..
92840 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 62 65 67 20 28 70 6f ...................(setq.beg.(po
92860 69 6e 74 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 2d 6c 65 int)).....................(if-le
92880 74 2a 20 28 28 6d 69 6d 65 20 28 70 6c 69 73 74 2d 67 65 74 20 6f 76 73 20 3a 6d 69 6d 65 29 29 t*.((mime.(plist-get.ovs.:mime))
928a0 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 42 55 46 ).........................;;.BUF
928c0 20 69 73 20 61 20 62 69 6e 61 72 79 20 66 69 6c 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .is.a.binary.file...............
928e0 20 20 20 20 20 20 20 20 20 20 28 69 66 2d 6c 65 74 2a 20 28 28 28 73 74 72 69 6e 67 2d 6d 61 74 ..........(if-let*.(((string-mat
92900 63 68 2d 70 20 28 69 6d 61 67 65 2d 66 69 6c 65 2d 6e 61 6d 65 2d 72 65 67 65 78 70 29 20 62 75 ch-p.(image-file-name-regexp).bu
92920 66 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 f)).............................
92940 20 20 20 20 20 20 28 69 6d 67 20 28 63 72 65 61 74 65 2d 69 6d 61 67 65 20 62 75 66 29 29 29 0a ......(img.(create-image.buf))).
92960 20 20 20 20 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 ............................(ins
92980 65 72 74 2d 69 6d 61 67 65 20 69 6d 67 20 22 2a 22 29 20 3b 20 43 61 6e 20 62 65 20 64 69 73 70 ert-image.img."*").;.Can.be.disp
929a0 6c 61 79 65 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 layed...........................
929c0 28 69 6e 73 65 72 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 (insert.........................
929e0 20 20 20 62 75 66 20 22 20 22 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 28 4e 6f 20 70 72 65 76 ...buf.".".(propertize."(No.prev
92a00 69 65 77 20 66 6f 72 20 62 69 6e 61 72 79 20 66 69 6c 65 29 22 0a 20 20 20 20 20 20 20 20 20 20 iew.for.binary.file)"...........
92a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
92a40 20 20 20 20 20 27 66 61 63 65 20 27 28 3a 69 6e 68 65 72 69 74 20 73 68 61 64 6f 77 20 3a 73 6c .....'face.'(:inherit.shadow.:sl
92a60 61 6e 74 20 69 74 61 6c 69 63 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ant.italic))))..................
92a80 20 20 20 20 20 28 69 6e 73 65 72 74 2d 66 69 6c 65 2d 63 6f 6e 74 65 6e 74 73 20 62 75 66 29 29 .....(insert-file-contents.buf))
92aa0 0a 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 61 72 20 .....................(goto-char.
92ac0 28 70 6f 69 6e 74 2d 6d 61 78 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (point-max))....................
92ae0 20 28 69 6e 73 65 72 74 20 22 5c 6e 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .(insert."\n")..................
92b00 20 20 20 28 73 65 74 71 20 6f 76 20 28 6d 61 6b 65 2d 6f 76 65 72 6c 61 79 20 62 65 67 20 28 70 ...(setq.ov.(make-overlay.beg.(p
92b20 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 28 6f 76 65 oint))).....................(ove
92b40 72 6c 61 79 2d 70 75 74 20 6f 76 20 27 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 20 62 75 66 29 0a rlay-put.ov.'gptel-context.buf).
92b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75 74 ....................(overlay-put
92b80 20 6f 76 20 27 67 70 74 65 6c 2d 6f 76 65 72 6c 61 79 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 .ov.'gptel-overlay.t)...........
92ba0 20 20 20 20 20 20 20 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75 74 20 6f 76 20 27 65 76 61 70 6f ..........(overlay-put.ov.'evapo
92bc0 72 61 74 65 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 rate.t).....................(ins
92be0 65 72 74 20 22 5c 6e 22 20 28 6d 61 6b 65 2d 73 65 70 61 72 61 74 6f 72 2d 6c 69 6e 65 29 20 22 ert."\n".(make-separator-line)."
92c00 5c 6e 22 29 29 29 0a 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 \n"))).................(goto-cha
92c20 72 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 28 69 6e 73 r.(point-min))).............(ins
92c40 65 72 74 20 22 54 68 65 72 65 20 61 72 65 20 6e 6f 20 61 63 74 69 76 65 20 67 70 74 65 6c 20 63 ert."There.are.no.active.gptel.c
92c60 6f 6e 74 65 78 74 73 2e 22 29 29 29 29 29 0a 20 20 20 20 28 64 69 73 70 6c 61 79 2d 62 75 66 66 ontexts."))))).....(display-buff
92c80 65 72 20 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 er.(current-buffer).............
92ca0 20 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 72 65 75 73 65 2d ........`((display-buffer-reuse-
92cc0 77 69 6e 64 6f 77 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 69 window........................di
92ce0 73 70 6c 61 79 2d 62 75 66 66 65 72 2d 72 65 75 73 65 2d 6d 6f 64 65 2d 77 69 6e 64 6f 77 0a 20 splay-buffer-reuse-mode-window..
92d00 20 20 20 20 20 20 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 ......................display-bu
92d20 66 66 65 72 2d 62 65 6c 6f 77 2d 73 65 6c 65 63 74 65 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 ffer-below-selected)............
92d40 20 20 20 20 20 20 20 20 20 20 20 28 62 6f 64 79 2d 66 75 6e 63 74 69 6f 6e 20 2e 20 2c 23 27 73 ...........(body-function...,#'s
92d60 65 6c 65 63 74 2d 77 69 6e 64 6f 77 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 elect-window)...................
92d80 20 20 20 20 28 77 69 6e 64 6f 77 2d 68 65 69 67 68 74 20 2e 20 2c 23 27 66 69 74 2d 77 69 6e 64 ....(window-height...,#'fit-wind
92da0 6f 77 2d 74 6f 2d 62 75 66 66 65 72 29 29 29 29 29 0a 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c ow-to-buffer)))))..(defvar.gptel
92dc0 2d 63 6f 6e 74 65 78 74 2d 2d 62 75 66 66 65 72 2d 72 65 76 65 72 73 65 20 6e 69 6c 0a 20 20 22 -context--buffer-reverse.nil..."
92de0 4c 61 73 74 20 64 69 72 65 63 74 69 6f 6e 20 6f 66 20 63 75 72 73 6f 72 20 6d 6f 76 65 6d 65 6e Last.direction.of.cursor.movemen
92e00 74 20 69 6e 20 67 70 74 65 6c 20 63 6f 6e 74 65 78 74 20 62 75 66 66 65 72 2e 0a 0a 49 66 20 6e t.in.gptel.context.buffer...If.n
92e20 6f 6e 2d 6e 69 6c 2c 20 69 6e 64 69 63 61 74 65 73 20 62 61 63 6b 77 61 72 64 20 6d 6f 76 65 6d on-nil,.indicates.backward.movem
92e40 65 6e 74 2e 22 29 0a 0a 28 64 65 66 61 6c 69 61 73 20 27 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 ent.")..(defalias.'gptel-context
92e60 2d 2d 70 6f 73 74 2d 63 6f 6d 6d 61 6e 64 0a 20 20 28 6c 65 74 20 28 28 68 69 67 68 6c 69 67 68 --post-command...(let.((highligh
92e80 74 2d 6f 76 65 72 6c 61 79 29 29 0a 20 20 20 20 28 6c 61 6d 62 64 61 20 28 29 0a 20 20 20 20 20 t-overlay)).....(lambda.()......
92ea0 20 3b 3b 20 4f 6e 6c 79 20 75 70 64 61 74 65 20 69 66 20 70 6f 69 6e 74 20 6d 6f 76 65 64 20 6f .;;.Only.update.if.point.moved.o
92ec0 75 74 73 69 64 65 20 74 68 65 20 63 75 72 72 65 6e 74 20 72 65 67 69 6f 6e 2e 0a 20 20 20 20 20 utside.the.current.region.......
92ee0 20 28 75 6e 6c 65 73 73 20 28 6d 65 6d 71 20 68 69 67 68 6c 69 67 68 74 2d 6f 76 65 72 6c 61 79 .(unless.(memq.highlight-overlay
92f00 20 28 6f 76 65 72 6c 61 79 73 2d 61 74 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 20 20 20 20 .(overlays-at.(point))).........
92f20 28 6c 65 74 20 28 28 63 6f 6e 74 65 78 74 2d 6f 76 65 72 6c 61 79 0a 20 20 20 20 20 20 20 20 20 (let.((context-overlay..........
92f40 20 20 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 6f 76 20 69 6e 20 28 6f 76 65 72 6c 61 ......(cl-loop.for.ov.in.(overla
92f60 79 73 2d 61 74 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 20 ys-at.(point))..................
92f80 20 20 20 20 20 20 20 74 68 65 72 65 69 73 20 28 61 6e 64 20 28 6f 76 65 72 6c 61 79 2d 67 65 74 .......thereis.(and.(overlay-get
92fa0 20 6f 76 20 27 67 70 74 65 6c 2d 6f 76 65 72 6c 61 79 29 20 6f 76 29 29 29 29 0a 20 20 20 20 20 .ov.'gptel-overlay).ov))))......
92fc0 20 20 20 20 20 28 77 68 65 6e 20 68 69 67 68 6c 69 67 68 74 2d 6f 76 65 72 6c 61 79 0a 20 20 20 .....(when.highlight-overlay....
92fe0 20 20 20 20 20 20 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75 74 20 68 69 67 68 6c 69 67 68 74 2d .........(overlay-put.highlight-
93000 6f 76 65 72 6c 61 79 20 27 66 61 63 65 20 6e 69 6c 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 77 overlay.'face.nil))...........(w
93020 68 65 6e 20 63 6f 6e 74 65 78 74 2d 6f 76 65 72 6c 61 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 hen.context-overlay.............
93040 28 6f 76 65 72 6c 61 79 2d 70 75 74 20 63 6f 6e 74 65 78 74 2d 6f 76 65 72 6c 61 79 20 27 66 61 (overlay-put.context-overlay.'fa
93060 63 65 20 27 68 69 67 68 6c 69 67 68 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 ce.'highlight))...........(setq.
93080 68 69 67 68 6c 69 67 68 74 2d 6f 76 65 72 6c 61 79 20 63 6f 6e 74 65 78 74 2d 6f 76 65 72 6c 61 highlight-overlay.context-overla
930a0 79 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 76 69 y))))))..(defun.gptel-context-vi
930c0 73 69 74 20 28 29 0a 20 20 22 44 69 73 70 6c 61 79 20 74 68 65 20 6c 6f 63 61 74 69 6f 6e 20 6f sit.()..."Display.the.location.o
930e0 66 20 74 68 69 73 20 67 70 74 65 6c 20 63 6f 6e 74 65 78 74 20 63 68 75 6e 6b 20 69 6e 20 69 74 f.this.gptel.context.chunk.in.it
93100 73 20 6f 72 69 67 69 6e 61 6c 20 62 75 66 66 65 72 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 s.original.buffer."...(interacti
93120 76 65 29 0a 20 20 28 6c 65 74 20 28 28 6f 76 2d 68 65 72 65 20 28 63 61 72 20 28 6f 76 65 72 6c ve)...(let.((ov-here.(car.(overl
93140 61 79 73 2d 61 74 20 28 70 6f 69 6e 74 29 29 29 29 29 0a 20 20 20 20 28 69 66 2d 6c 65 74 2a 20 ays-at.(point))))).....(if-let*.
93160 28 28 73 6f 75 72 63 65 20 28 6f 76 65 72 6c 61 79 2d 67 65 74 20 6f 76 2d 68 65 72 65 20 27 67 ((source.(overlay-get.ov-here.'g
93180 70 74 65 6c 2d 63 6f 6e 74 65 78 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 ptel-context))...............(bu
931a0 66 20 28 69 66 20 28 6f 76 65 72 6c 61 79 70 20 73 6f 75 72 63 65 29 0a 20 20 20 20 20 20 20 20 f.(if.(overlayp.source).........
931c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 76 65 72 6c 61 79 2d 62 75 66 66 65 72 20 73 ...............(overlay-buffer.s
931e0 6f 75 72 63 65 29 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 6e ource)......................(fin
93200 64 2d 66 69 6c 65 2d 6e 6f 73 65 6c 65 63 74 20 73 6f 75 72 63 65 29 29 29 0a 20 20 20 20 20 20 d-file-noselect.source))).......
93220 20 20 20 20 20 20 20 20 28 6f 66 66 73 65 74 20 28 2d 20 28 70 6f 69 6e 74 29 20 28 6f 76 65 72 ........(offset.(-.(point).(over
93240 6c 61 79 2d 73 74 61 72 74 20 6f 76 2d 68 65 72 65 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 77 lay-start.ov-here)))).........(w
93260 69 74 68 2d 73 65 6c 65 63 74 65 64 2d 77 69 6e 64 6f 77 20 28 64 69 73 70 6c 61 79 2d 62 75 66 ith-selected-window.(display-buf
93280 66 65 72 20 62 75 66 29 0a 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 69 fer.buf)...........(goto-char.(i
932a0 66 20 28 6f 76 65 72 6c 61 79 70 20 73 6f 75 72 63 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 f.(overlayp.source).............
932c0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 76 65 72 6c 61 79 2d 73 74 61 72 74 20 73 6f 75 72 .............(overlay-start.sour
932e0 63 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 28 70 6f 69 6e ce)........................(poin
93300 74 2d 6d 69 6e 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 77 61 72 64 2d 63 68 61 72 t-min)))...........(forward-char
93320 20 6f 66 66 73 65 74 29 0a 20 20 20 20 20 20 20 20 20 20 28 72 65 63 65 6e 74 65 72 29 29 0a 20 .offset)...........(recenter))..
93340 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 4e 6f 20 73 6f 75 72 63 65 20 6c 6f 63 61 74 69 6f .....(message."No.source.locatio
93360 6e 20 66 6f 72 20 74 68 69 73 20 67 70 74 65 6c 20 63 6f 6e 74 65 78 74 20 63 68 75 6e 6b 2e 22 n.for.this.gptel.context.chunk."
93380 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 6e 65 78 74 20 ))))..(defun.gptel-context-next.
933a0 28 29 0a 20 20 22 4d 6f 76 65 20 74 6f 20 6e 65 78 74 20 67 70 74 65 6c 20 63 6f 6e 74 65 78 74 ()..."Move.to.next.gptel.context
933c0 20 63 68 75 6e 6b 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 28 6c 65 74 20 .chunk."...(interactive)...(let.
933e0 28 28 6f 76 2d 68 65 72 65 20 28 63 61 72 20 28 6f 76 65 72 6c 61 79 73 2d 61 74 20 28 70 6f 69 ((ov-here.(car.(overlays-at.(poi
93400 6e 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 6e 65 78 74 2d 73 74 61 72 74 20 28 6e 65 78 74 nt)))).........(next-start.(next
93420 2d 6f 76 65 72 6c 61 79 2d 63 68 61 6e 67 65 20 28 70 6f 69 6e 74 29 29 29 29 0a 20 20 20 20 28 -overlay-change.(point)))).....(
93440 77 68 65 6e 20 28 61 6e 64 20 28 2f 3d 20 28 70 6f 69 6e 74 2d 6d 61 78 29 20 6e 65 78 74 2d 73 when.(and.(/=.(point-max).next-s
93460 74 61 72 74 29 20 6f 76 2d 68 65 72 65 29 0a 20 20 20 20 20 20 3b 3b 20 57 65 20 77 65 72 65 20 tart).ov-here).......;;.We.were.
93480 69 6e 73 69 64 65 20 74 68 65 20 6f 76 65 72 6c 61 79 2c 20 73 6f 20 77 65 20 77 61 6e 74 20 74 inside.the.overlay,.so.we.want.t
934a0 68 65 20 6e 65 78 74 20 6f 76 65 72 6c 61 79 20 63 68 61 6e 67 65 2c 20 77 68 69 63 68 0a 20 20 he.next.overlay.change,.which...
934c0 20 20 20 20 3b 3b 20 77 6f 75 6c 64 20 62 65 20 74 68 65 20 73 74 61 72 74 20 6f 66 20 74 68 65 ....;;.would.be.the.start.of.the
934e0 20 6e 65 78 74 20 6f 76 65 72 6c 61 79 2e 0a 20 20 20 20 20 20 28 73 65 74 71 20 6e 65 78 74 2d .next.overlay........(setq.next-
93500 73 74 61 72 74 20 28 6e 65 78 74 2d 6f 76 65 72 6c 61 79 2d 63 68 61 6e 67 65 20 6e 65 78 74 2d start.(next-overlay-change.next-
93520 73 74 61 72 74 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 28 2f 3d 20 6e 65 78 74 2d 73 74 61 72 start))).....(when.(/=.next-star
93540 74 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 0a 20 20 20 20 20 20 28 73 65 74 71 20 67 70 74 65 6c t.(point-max)).......(setq.gptel
93560 2d 63 6f 6e 74 65 78 74 2d 2d 62 75 66 66 65 72 2d 72 65 76 65 72 73 65 20 6e 69 6c 29 0a 20 20 -context--buffer-reverse.nil)...
93580 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 6e 65 78 74 2d 73 74 61 72 74 29 0a 20 20 20 20 20 ....(goto-char.next-start)......
935a0 20 28 72 65 63 65 6e 74 65 72 20 28 66 6c 6f 6f 72 20 28 77 69 6e 64 6f 77 2d 68 65 69 67 68 74 .(recenter.(floor.(window-height
935c0 29 20 34 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 70 ).4)))))..(defun.gptel-context-p
935e0 72 65 76 69 6f 75 73 20 28 29 0a 20 20 22 4d 6f 76 65 20 74 6f 20 70 72 65 76 69 6f 75 73 20 67 revious.()..."Move.to.previous.g
93600 70 74 65 6c 20 63 6f 6e 74 65 78 74 20 63 68 75 6e 6b 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 ptel.context.chunk."...(interact
93620 69 76 65 29 0a 20 20 28 6c 65 74 20 28 28 6f 76 2d 68 65 72 65 20 28 63 61 72 20 28 6f 76 65 72 ive)...(let.((ov-here.(car.(over
93640 6c 61 79 73 2d 61 74 20 28 70 6f 69 6e 74 29 29 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 6f 76 lays-at.(point))))).....(when.ov
93660 2d 68 65 72 65 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 6f 76 65 72 6c 61 79 2d 73 74 61 72 74 20 -here.(goto-char.(overlay-start.
93680 6f 76 2d 68 65 72 65 29 29 29 0a 20 20 20 20 28 6c 65 74 20 28 28 70 72 65 76 69 6f 75 73 2d 63 ov-here))).....(let.((previous-c
936a0 6f 6e 74 65 78 74 2d 70 6f 73 20 28 70 72 65 76 69 6f 75 73 2d 6f 76 65 72 6c 61 79 2d 63 68 61 ontext-pos.(previous-overlay-cha
936c0 6e 67 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 nge.............................
936e0 20 20 20 20 20 28 70 72 65 76 69 6f 75 73 2d 6f 76 65 72 6c 61 79 2d 63 68 61 6e 67 65 20 28 70 .....(previous-overlay-change.(p
93700 6f 69 6e 74 29 29 29 29 29 0a 20 20 20 20 20 20 3b 3b 20 50 72 65 76 65 6e 74 20 70 6f 69 6e 74 oint))))).......;;.Prevent.point
93720 20 66 72 6f 6d 20 6a 75 6d 70 69 6e 67 20 74 6f 20 74 68 65 20 73 74 61 72 74 20 6f 66 20 74 68 .from.jumping.to.the.start.of.th
93740 65 20 62 75 66 66 65 72 2e 0a 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 3d 20 70 72 65 76 69 e.buffer........(unless.(=.previ
93760 6f 75 73 2d 63 6f 6e 74 65 78 74 2d 70 6f 73 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 0a 20 20 20 ous-context-pos.(point-min))....
93780 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 70 72 65 76 69 6f 75 73 2d 63 6f 6e 74 65 78 74 .....(goto-char.previous-context
937a0 2d 70 6f 73 29 0a 20 20 20 20 20 20 20 20 28 72 65 63 65 6e 74 65 72 20 28 66 6c 6f 6f 72 20 28 -pos).........(recenter.(floor.(
937c0 77 69 6e 64 6f 77 2d 68 65 69 67 68 74 29 20 34 29 29 0a 20 20 20 20 20 20 20 20 28 73 65 74 71 window-height).4)).........(setq
937e0 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 62 75 66 66 65 72 2d 72 65 76 65 72 73 65 20 74 .gptel-context--buffer-reverse.t
93800 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 66 6c 61 67 )))))..(defun.gptel-context-flag
93820 2d 64 65 6c 65 74 69 6f 6e 20 28 29 0a 20 20 22 4d 61 72 6b 20 67 70 74 65 6c 20 63 6f 6e 74 65 -deletion.()..."Mark.gptel.conte
93840 78 74 20 63 68 75 6e 6b 20 61 74 20 70 6f 69 6e 74 20 66 6f 72 20 72 65 6d 6f 76 61 6c 2e 22 0a xt.chunk.at.point.for.removal.".
93860 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 28 6c 65 74 2a 20 28 28 6f 76 65 72 6c 61 ..(interactive)...(let*.((overla
93880 79 73 20 28 69 66 20 28 75 73 65 2d 72 65 67 69 6f 6e 2d 70 29 0a 20 20 20 20 20 20 20 20 20 20 ys.(if.(use-region-p)...........
938a0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 76 65 72 6c 61 79 73 2d 69 6e 20 28 72 65 67 69 6f .............(overlays-in.(regio
938c0 6e 2d 62 65 67 69 6e 6e 69 6e 67 29 20 28 72 65 67 69 6f 6e 2d 65 6e 64 29 29 0a 20 20 20 20 20 n-beginning).(region-end))......
938e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 76 65 72 6c 61 79 73 2d 61 74 20 28 70 6f ................(overlays-at.(po
93900 69 6e 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 64 65 6c 65 74 69 6f 6e 2d 6f 76 29 0a 20 int))))..........(deletion-ov)..
93920 20 20 20 20 20 20 20 20 28 6d 61 72 6b 65 64 2d 6f 76 73 20 28 63 6c 2d 72 65 6d 6f 76 65 2d 69 ........(marked-ovs.(cl-remove-i
93940 66 2d 6e 6f 74 20 28 6c 61 6d 62 64 61 20 28 6f 76 29 20 28 6f 76 65 72 6c 61 79 2d 67 65 74 20 f-not.(lambda.(ov).(overlay-get.
93960 6f 76 20 27 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 64 65 6c 65 74 69 6f 6e 2d 6d 61 72 6b 29 ov.'gptel-context-deletion-mark)
93980 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 )...............................
939a0 20 20 20 20 20 20 20 20 20 6f 76 65 72 6c 61 79 73 29 29 29 0a 20 20 20 20 28 69 66 20 6d 61 72 .........overlays))).....(if.mar
939c0 6b 65 64 2d 6f 76 73 0a 20 20 20 20 20 20 20 20 28 6d 61 70 63 20 23 27 64 65 6c 65 74 65 2d 6f ked-ovs.........(mapc.#'delete-o
939e0 76 65 72 6c 61 79 20 6d 61 72 6b 65 64 2d 6f 76 73 29 0a 20 20 20 20 20 20 28 73 61 76 65 2d 65 verlay.marked-ovs).......(save-e
93a00 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 28 64 6f 6c 69 73 74 20 28 6f 76 20 6f 76 65 xcursion.........(dolist.(ov.ove
93a20 72 6c 61 79 73 29 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 6f 76 65 72 6c 61 79 2d rlays)...........(when.(overlay-
93a40 67 65 74 20 6f 76 20 27 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 20 get.ov.'gptel-context)..........
93a60 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 6f 76 65 72 6c 61 79 2d 73 74 61 72 74 20 6f 76 29 ...(goto-char.(overlay-start.ov)
93a80 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 64 65 6c 65 74 69 6f 6e 2d 6f 76 20 ).............(setq.deletion-ov.
93aa0 28 6d 61 6b 65 2d 6f 76 65 72 6c 61 79 20 28 6f 76 65 72 6c 61 79 2d 73 74 61 72 74 20 6f 76 29 (make-overlay.(overlay-start.ov)
93ac0 20 28 6f 76 65 72 6c 61 79 2d 65 6e 64 20 6f 76 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 .(overlay-end.ov))).............
93ae0 28 6f 76 65 72 6c 61 79 2d 70 75 74 20 64 65 6c 65 74 69 6f 6e 2d 6f 76 20 27 67 70 74 65 6c 2d (overlay-put.deletion-ov.'gptel-
93b00 63 6f 6e 74 65 78 74 20 28 6f 76 65 72 6c 61 79 2d 67 65 74 20 6f 76 20 27 67 70 74 65 6c 2d 63 context.(overlay-get.ov.'gptel-c
93b20 6f 6e 74 65 78 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75 ontext)).............(overlay-pu
93b40 74 20 64 65 6c 65 74 69 6f 6e 2d 6f 76 20 27 70 72 69 6f 72 69 74 79 20 2d 38 30 29 0a 20 20 20 t.deletion-ov.'priority.-80)....
93b60 20 20 20 20 20 20 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75 74 20 64 65 6c 65 74 69 6f 6e 2d 6f .........(overlay-put.deletion-o
93b80 76 20 27 66 61 63 65 20 27 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 64 65 6c 65 74 69 6f 6e 2d v.'face.'gptel-context-deletion-
93ba0 66 61 63 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75 74 20 64 face).............(overlay-put.d
93bc0 65 6c 65 74 69 6f 6e 2d 6f 76 20 27 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 64 65 6c 65 74 69 eletion-ov.'gptel-context-deleti
93be0 6f 6e 2d 6d 61 72 6b 20 74 29 29 29 29 29 0a 20 20 20 20 28 69 66 20 28 75 73 65 2d 72 65 67 69 on-mark.t))))).....(if.(use-regi
93c00 6f 6e 2d 70 29 0a 20 20 20 20 20 20 20 20 28 64 65 61 63 74 69 76 61 74 65 2d 6d 61 72 6b 29 0a on-p).........(deactivate-mark).
93c20 20 20 20 20 20 20 28 69 66 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 62 75 66 66 65 72 2d ......(if.gptel-context--buffer-
93c40 72 65 76 65 72 73 65 0a 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 reverse...........(gptel-context
93c60 2d 70 72 65 76 69 6f 75 73 29 0a 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 63 6f 6e 74 65 78 -previous).........(gptel-contex
93c80 74 2d 6e 65 78 74 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 t-next)))))..(defun.gptel-contex
93ca0 74 2d 71 75 69 74 20 28 29 0a 20 20 22 43 61 6e 63 65 6c 20 70 65 6e 64 69 6e 67 20 6f 70 65 72 t-quit.()..."Cancel.pending.oper
93cc0 61 74 69 6f 6e 73 20 61 6e 64 20 72 65 74 75 72 6e 20 74 6f 20 67 70 74 65 6c 27 73 20 6d 65 6e ations.and.return.to.gptel's.men
93ce0 75 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 28 71 75 69 74 2d 77 69 6e 64 u."...(interactive)...(quit-wind
93d00 6f 77 29 0a 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 ow)...(call-interactively.#'gpte
93d20 6c 2d 6d 65 6e 75 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 63 l-menu))..(defun.gptel-context-c
93d40 6f 6e 66 69 72 6d 20 28 29 0a 20 20 22 43 6f 6e 66 69 72 6d 20 70 65 6e 64 69 6e 67 20 6f 70 65 onfirm.()..."Confirm.pending.ope
93d60 72 61 74 69 6f 6e 73 20 61 6e 64 20 72 65 74 75 72 6e 20 74 6f 20 67 70 74 65 6c 27 73 20 6d 65 rations.and.return.to.gptel's.me
93d80 6e 75 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 3b 3b 20 44 65 6c 65 74 65 nu."...(interactive)...;;.Delete
93da0 20 61 6c 6c 20 74 68 65 20 63 6f 6e 74 65 78 74 20 6f 76 65 72 6c 61 79 73 20 74 68 61 74 20 68 .all.the.context.overlays.that.h
93dc0 61 76 65 20 62 65 65 6e 20 6d 61 72 6b 65 64 20 66 6f 72 20 64 65 6c 65 74 69 6f 6e 2e 0a 20 20 ave.been.marked.for.deletion....
93de0 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 64 65 6c 65 74 69 6f 6e 2d 6d 61 72 6b 73 0a 20 20 20 20 (when-let*.((deletion-marks.....
93e00 20 20 20 20 20 20 20 20 20 20 20 28 64 65 6c 71 20 6e 69 6c 20 28 6d 61 70 63 61 72 0a 20 20 20 ...........(delq.nil.(mapcar....
93e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 .......................(lambda.(
93e40 6f 76 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 ov).............................
93e60 28 61 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 20 (and............................
93e80 20 20 28 6f 76 65 72 6c 61 79 2d 67 65 74 20 6f 76 20 27 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 ..(overlay-get.ov.'gptel-context
93ea0 2d 64 65 6c 65 74 69 6f 6e 2d 6d 61 72 6b 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -deletion-mark).................
93ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 76 65 72 6c 61 79 2d 67 65 74 20 6f 76 20 27 67 70 .............(overlay-get.ov.'gp
93ee0 74 65 6c 2d 63 6f 6e 74 65 78 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 tel-context)))..................
93f00 20 20 20 20 20 20 20 20 20 28 6f 76 65 72 6c 61 79 73 2d 69 6e 20 28 70 6f 69 6e 74 2d 6d 69 6e .........(overlays-in.(point-min
93f20 29 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 29 29 29 29 0a 20 20 20 20 28 6d 61 70 63 20 23 27 67 ).(point-max)))))).....(mapc.#'g
93f40 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 72 65 6d 6f 76 65 20 64 65 6c 65 74 69 6f 6e 2d 6d 61 72 ptel-context-remove.deletion-mar
93f60 6b 73 29 0a 20 20 20 20 28 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 63 6f 6c 6c 65 63 74 29 ks).....(gptel-context--collect)
93f80 20 20 20 20 20 20 20 20 20 20 20 3b 55 70 64 61 74 65 20 63 6f 6e 74 65 78 74 73 20 61 6e 64 20 ...........;Update.contexts.and.
93fa0 72 65 76 65 72 74 20 62 75 66 66 65 72 20 28 23 34 38 32 29 0a 20 20 20 20 28 72 65 76 65 72 74 revert.buffer.(#482).....(revert
93fc0 2d 62 75 66 66 65 72 29 29 0a 20 20 28 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 71 75 69 74 29 -buffer))...(gptel-context-quit)
93fe0 29 0a 0a 28 70 72 6f 76 69 64 65 20 27 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 29 0a 3b 3b 3b 20 )..(provide.'gptel-context).;;;.
94000 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2e 65 6c 20 65 6e 64 73 20 68 65 72 65 2e 0a 00 00 00 00 gptel-context.el.ends.here......
94020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
94040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
94060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
94080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
940a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
940c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
940e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
94100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
94120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
94140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
94160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
94180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
941a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
941c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
941e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
94200 67 70 74 65 6c 2d 30 2e 39 2e 39 2f 4e 45 57 53 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 gptel-0.9.9/NEWS................
94220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
94240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
94260 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
94280 30 30 34 35 34 37 33 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 32 30 31 37 00 20 30 00 00 00 0045473.00000000000.012017..0...
942a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
942c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
942e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
94300 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...................
94320 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...................
94340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
94360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
94380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
943a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
943c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
943e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
94400 23 20 2d 2a 2d 20 6d 6f 64 65 3a 20 6f 72 67 3b 20 2d 2a 2d 0a 0a 2a 20 30 2e 39 2e 39 20 32 30 #.-*-.mode:.org;.-*-..*.0.9.9.20
94420 32 35 2d 30 38 2d 30 32 0a 0a 2a 2a 20 42 72 65 61 6b 69 6e 67 20 63 68 61 6e 67 65 73 0a 0a 2d 25-08-02..**.Breaking.changes..-
94440 20 54 68 65 20 73 75 66 66 69 78 20 3d 2d 6c 61 74 65 73 74 3d 20 68 61 73 20 62 65 65 6e 20 64 .The.suffix.=-latest=.has.been.d
94460 72 6f 70 70 65 64 20 66 72 6f 6d 20 47 72 6f 6b 20 6d 6f 64 65 6c 73 2c 20 61 73 20 74 68 65 79 ropped.from.Grok.models,.as.they
94480 20 61 72 65 0a 20 20 6e 6f 20 6c 6f 6e 67 65 72 20 72 65 71 75 69 72 65 64 2e 20 20 53 6f 20 74 .are...no.longer.required...So.t
944a0 68 65 20 6d 6f 64 65 6c 73 20 3d 67 72 6f 6b 2d 33 2d 6c 61 74 65 73 74 3d 2c 0a 20 20 3d 67 72 he.models.=grok-3-latest=,...=gr
944c0 6f 6b 2d 33 2d 6d 69 6e 69 2d 6c 61 74 65 73 74 3d 20 68 61 76 65 20 62 65 65 6e 20 72 65 6e 61 ok-3-mini-latest=.have.been.rena
944e0 6d 65 64 20 74 6f 20 6a 75 73 74 20 3d 67 72 6f 6b 2d 33 3d 2c 0a 20 20 3d 67 72 6f 6b 2d 33 2d med.to.just.=grok-3=,...=grok-3-
94500 6d 69 6e 69 3d 20 61 6e 64 20 73 6f 20 6f 6e 2e 0a 0a 2d 20 54 68 65 20 6d 6f 64 65 6c 73 20 3d mini=.and.so.on...-.The.models.=
94520 67 65 6d 69 6e 69 2d 65 78 70 2d 31 32 30 36 3d 2c 20 3d 67 65 6d 69 6e 69 2d 32 2e 35 2d 70 72 gemini-exp-1206=,.=gemini-2.5-pr
94540 6f 2d 70 72 65 76 69 65 77 2d 30 33 2d 32 35 3d 2c 0a 20 20 3d 67 65 6d 69 6e 69 2d 32 2e 35 2d o-preview-03-25=,...=gemini-2.5-
94560 70 72 6f 2d 70 72 65 76 69 65 77 2d 30 35 2d 30 36 3d 2c 20 3d 67 65 6d 69 6e 69 2d 32 2e 35 2d pro-preview-05-06=,.=gemini-2.5-
94580 66 6c 61 73 68 2d 70 72 65 76 69 65 77 2d 30 34 2d 31 37 3d 0a 20 20 68 61 76 65 20 62 65 65 6e flash-preview-04-17=...have.been
945a0 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d 20 74 68 65 20 64 65 66 61 75 6c 74 20 6c 69 73 74 20 6f .removed.from.the.default.list.o
945c0 66 20 47 65 6d 69 6e 69 20 6d 6f 64 65 6c 73 2e 20 20 54 68 65 20 66 69 72 73 74 0a 20 20 6f 6e f.Gemini.models...The.first...on
945e0 65 20 69 73 20 6e 6f 20 6c 6f 6e 67 65 72 20 61 76 61 69 6c 61 62 6c 65 2c 20 61 6e 64 20 74 68 e.is.no.longer.available,.and.th
94600 65 20 6f 74 68 65 72 73 20 61 72 65 20 73 75 70 65 72 73 65 64 65 64 20 62 79 20 74 68 65 69 72 e.others.are.superseded.by.their
94620 0a 20 20 73 74 61 62 6c 65 2c 20 6e 6f 6e 2d 70 72 65 76 69 65 77 20 76 65 72 73 69 6f 6e 73 2e ...stable,.non-preview.versions.
94640 20 20 49 66 20 72 65 71 75 69 72 65 64 2c 20 79 6f 75 20 63 61 6e 20 61 64 64 20 74 68 65 73 65 ..If.required,.you.can.add.these
94660 20 6d 6f 64 65 6c 73 0a 20 20 62 61 63 6b 20 74 6f 20 74 68 65 20 47 65 6d 69 6e 69 20 62 61 63 .models...back.to.the.Gemini.bac
94680 6b 65 6e 64 20 69 6e 20 79 6f 75 72 20 70 65 72 73 6f 6e 61 6c 20 63 6f 6e 66 69 67 75 72 61 74 kend.in.your.personal.configurat
946a0 69 6f 6e 3a 0a 20 20 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 20 20 ion:...#+begin_src.emacs-lisp...
946c0 28 70 75 73 68 20 27 67 65 6d 69 6e 69 2d 32 2e 35 2d 70 72 6f 2d 70 72 65 76 69 65 77 2d 30 33 (push.'gemini-2.5-pro-preview-03
946e0 2d 32 35 0a 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 6d 6f 64 65 6c -25.........(gptel-backend-model
94700 73 20 28 67 70 74 65 6c 2d 67 65 74 2d 62 61 63 6b 65 6e 64 20 22 47 65 6d 69 6e 69 22 29 29 29 s.(gptel-get-backend."Gemini")))
94720 0a 20 20 23 2b 65 6e 64 5f 73 72 63 0a 0a 2a 2a 20 4e 65 77 20 6d 6f 64 65 6c 73 20 61 6e 64 20 ...#+end_src..**.New.models.and.
94740 62 61 63 6b 65 6e 64 73 0a 0a 2d 20 41 64 64 20 73 75 70 70 6f 72 74 20 66 6f 72 20 7e 67 72 6f backends..-.Add.support.for.~gro
94760 6b 2d 63 6f 64 65 2d 66 61 73 74 2d 31 7e 2e 0a 0a 2d 20 41 64 64 20 73 75 70 70 6f 72 74 20 66 k-code-fast-1~...-.Add.support.f
94780 6f 72 20 7e 67 70 74 2d 35 7e 2c 20 7e 67 70 74 2d 35 2d 6d 69 6e 69 7e 20 61 6e 64 20 7e 67 70 or.~gpt-5~,.~gpt-5-mini~.and.~gp
947a0 74 2d 35 2d 6e 61 6e 6f 7e 2e 0a 0a 2d 20 41 64 64 20 73 75 70 70 6f 72 74 20 66 6f 72 20 7e 63 t-5-nano~...-.Add.support.for.~c
947c0 6c 61 75 64 65 2d 6f 70 75 73 2d 34 2d 31 2d 32 30 32 35 30 38 30 35 7e 2e 0a 0a 2d 20 41 64 64 laude-opus-4-1-20250805~...-.Add
947e0 20 73 75 70 70 6f 72 74 20 66 6f 72 20 7e 67 65 6d 69 6e 69 2d 32 2e 35 2d 70 72 6f 7e 2c 20 7e .support.for.~gemini-2.5-pro~,.~
94800 67 65 6d 69 6e 69 2d 32 2e 35 2d 66 6c 61 73 68 7e 2c 0a 20 20 7e 67 65 6d 69 6e 69 2d 32 2e 35 gemini-2.5-flash~,...~gemini-2.5
94820 2d 66 6c 61 73 68 2d 6c 69 74 65 2d 70 72 65 76 69 65 77 2d 30 36 2d 31 37 7e 2e 0a 0a 2d 20 41 -flash-lite-preview-06-17~...-.A
94840 64 64 20 73 75 70 70 6f 72 74 20 66 6f 72 20 4f 70 65 6e 20 57 65 62 55 49 2e 20 20 4f 70 65 6e dd.support.for.Open.WebUI...Open
94860 20 57 65 62 55 49 20 70 72 6f 76 69 64 65 73 20 61 6e 0a 20 20 4f 70 65 6e 41 49 2d 63 6f 6d 70 .WebUI.provides.an...OpenAI-comp
94880 61 74 69 62 6c 65 20 41 50 49 2c 20 73 6f 20 74 68 65 20 22 73 75 70 70 6f 72 74 22 20 69 73 20 atible.API,.so.the."support".is.
948a0 6a 75 73 74 20 61 20 6e 65 77 20 73 65 63 74 69 6f 6e 20 6f 66 20 74 68 65 0a 20 20 52 45 41 44 just.a.new.section.of.the...READ
948c0 4d 45 20 77 69 74 68 20 69 6e 73 74 72 75 63 74 69 6f 6e 73 2e 0a 0a 2d 20 41 64 64 20 73 75 70 ME.with.instructions...-.Add.sup
948e0 70 6f 72 74 20 66 6f 72 20 4d 6f 6f 6e 73 68 6f 74 20 28 4b 69 6d 69 29 2c 20 69 6e 20 61 20 73 port.for.Moonshot.(Kimi),.in.a.s
94900 69 6d 69 6c 61 72 20 73 65 6e 73 65 2e 0a 0a 2d 20 41 64 64 20 73 75 70 70 6f 72 74 20 66 6f 72 imilar.sense...-.Add.support.for
94920 20 74 68 65 20 41 49 2f 4d 4c 20 41 50 49 2c 20 69 6e 20 61 20 73 69 6d 69 6c 61 72 20 73 65 6e .the.AI/ML.API,.in.a.similar.sen
94940 73 65 2e 0a 0a 2d 20 41 64 64 20 73 75 70 70 6f 72 74 20 66 6f 72 20 7e 67 72 6f 6b 2d 34 7e 2e se...-.Add.support.for.~grok-4~.
94960 0a 0a 2a 2a 20 4e 65 77 20 66 65 61 74 75 72 65 73 20 61 6e 64 20 55 49 20 63 68 61 6e 67 65 73 ..**.New.features.and.UI.changes
94980 0a 0a 2d 20 7e 67 70 74 65 6c 2d 72 65 77 72 69 74 65 7e 20 6e 6f 77 20 6e 6f 20 6c 6f 6e 67 65 ..-.~gptel-rewrite~.now.no.longe
949a0 72 20 70 6f 70 73 20 75 70 20 61 20 54 72 61 6e 73 69 65 6e 74 20 6d 65 6e 75 2e 20 20 49 6e 73 r.pops.up.a.Transient.menu...Ins
949c0 74 65 61 64 2c 20 69 74 0a 20 20 72 65 61 64 73 20 61 20 72 65 77 72 69 74 65 20 69 6e 73 74 72 tead,.it...reads.a.rewrite.instr
949e0 75 63 74 69 6f 6e 20 61 6e 64 20 73 74 61 72 74 73 20 74 68 65 20 72 65 77 72 69 74 65 20 69 6d uction.and.starts.the.rewrite.im
94a00 6d 65 64 69 61 74 65 6c 79 2e 20 20 54 68 69 73 0a 20 20 69 73 20 69 6e 74 65 6e 64 65 64 20 74 mediately...This...is.intended.t
94a20 6f 20 72 65 64 75 63 65 20 74 68 65 20 66 72 69 63 74 69 6f 6e 20 6f 66 20 75 73 69 6e 67 20 7e o.reduce.the.friction.of.using.~
94a40 67 70 74 65 6c 2d 72 65 77 72 69 74 65 7e 2e 20 20 59 6f 75 20 63 61 6e 0a 20 20 73 74 69 6c 6c gptel-rewrite~...You.can...still
94a60 20 62 72 69 6e 67 20 75 70 20 74 68 65 20 54 72 61 6e 73 69 65 6e 74 20 6d 65 6e 75 20 62 79 20 .bring.up.the.Transient.menu.by.
94a80 70 72 65 73 73 69 6e 67 20 3d 4d 2d 52 45 54 3d 20 69 6e 73 74 65 61 64 20 6f 66 20 3d 52 45 54 pressing.=M-RET=.instead.of.=RET
94aa0 3d 0a 20 20 77 68 65 6e 20 73 75 70 70 6c 79 69 6e 67 20 74 68 65 20 72 65 77 72 69 74 65 20 69 =...when.supplying.the.rewrite.i
94ac0 6e 73 74 72 75 63 74 69 6f 6e 2e 20 20 49 66 20 6e 6f 20 72 65 67 69 6f 6e 20 69 73 20 73 65 6c nstruction...If.no.region.is.sel
94ae0 65 63 74 65 64 20 61 6e 64 0a 20 20 74 68 65 72 65 20 61 72 65 20 70 65 6e 64 69 6e 67 20 72 65 ected.and...there.are.pending.re
94b00 77 72 69 74 65 73 2c 20 74 68 65 20 72 65 77 72 69 74 65 20 6d 65 6e 75 20 69 73 20 64 69 73 70 writes,.the.rewrite.menu.is.disp
94b20 6c 61 79 65 64 2e 0a 0a 2d 20 7e 67 70 74 65 6c 2d 72 65 77 72 69 74 65 7e 20 77 69 6c 6c 20 6e layed...-.~gptel-rewrite~.will.n
94b40 6f 77 20 70 72 6f 64 75 63 65 20 6d 6f 72 65 20 72 65 66 69 6e 65 64 20 6d 65 72 67 65 20 63 6f ow.produce.more.refined.merge.co
94b60 6e 66 6c 69 63 74 73 20 77 68 65 6e 0a 20 20 75 73 69 6e 67 20 74 68 65 20 6d 65 72 67 65 20 61 nflicts.when...using.the.merge.a
94b80 63 74 69 6f 6e 2e 20 20 49 74 20 77 6f 72 6b 73 20 62 79 20 66 65 65 64 69 6e 67 20 74 68 65 20 ction...It.works.by.feeding.the.
94ba0 6f 72 69 67 69 6e 61 6c 20 61 6e 64 0a 20 20 72 65 77 72 69 74 74 65 6e 20 74 65 78 74 20 74 6f original.and...rewritten.text.to
94bc0 20 67 69 74 20 28 77 68 65 6e 20 69 74 20 69 73 20 61 76 61 69 6c 61 62 6c 65 29 2e 0a 0a 2d 20 .git.(when.it.is.available)...-.
94be0 4e 65 77 20 63 6f 6d 6d 61 6e 64 20 7e 67 70 74 65 6c 2d 67 68 2d 6c 6f 67 69 6e 7e 20 74 6f 20 New.command.~gptel-gh-login~.to.
94c00 61 75 74 68 65 6e 74 69 63 61 74 65 20 77 69 74 68 20 47 69 74 48 75 62 20 43 6f 70 69 6c 6f 74 authenticate.with.GitHub.Copilot
94c20 2e 20 20 54 68 65 0a 20 20 61 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 20 73 74 65 70 20 68 61 70 ...The...authentication.step.hap
94c40 70 65 6e 73 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 77 68 65 6e 20 79 6f 75 20 75 73 65 20 pens.automatically.when.you.use.
94c60 67 70 74 65 6c 2c 20 73 6f 0a 20 20 69 6e 76 6f 6b 69 6e 67 20 69 74 20 6d 61 6e 75 61 6c 6c 79 gptel,.so...invoking.it.manually
94c80 20 69 73 20 6e 6f 74 20 72 65 71 75 69 72 65 64 2e 20 20 42 75 74 20 79 6f 75 20 63 61 6e 20 75 .is.not.required...But.you.can.u
94ca0 73 65 20 74 68 69 73 20 63 6f 6d 6d 61 6e 64 20 74 6f 0a 20 20 63 68 61 6e 67 65 20 61 63 63 6f se.this.command.to...change.acco
94cc0 75 6e 74 73 20 6f 72 20 72 65 66 72 65 73 68 20 79 6f 75 72 20 6c 6f 67 69 6e 20 69 66 20 72 65 unts.or.refresh.your.login.if.re
94ce0 71 75 69 72 65 64 2e 0a 0a 2d 20 67 70 74 65 6c 20 6e 6f 77 20 73 75 70 70 6f 72 74 73 20 68 61 quired...-.gptel.now.supports.ha
94d00 6e 64 6c 69 6e 67 20 72 65 61 73 6f 6e 69 6e 67 2f 74 68 69 6e 6b 69 6e 67 20 62 6c 6f 63 6b 73 ndling.reasoning/thinking.blocks
94d20 20 69 6e 20 72 65 73 70 6f 6e 73 65 73 0a 20 20 66 72 6f 6d 20 78 41 49 27 73 20 47 72 6f 6b 20 .in.responses...from.xAI's.Grok.
94d40 6d 6f 64 65 6c 73 2e 20 20 54 68 69 73 20 69 73 20 63 6f 6e 74 72 6f 6c 6c 65 64 20 62 79 0a 20 models...This.is.controlled.by..
94d60 20 7e 67 70 74 65 6c 2d 69 6e 63 6c 75 64 65 2d 72 65 61 73 6f 6e 69 6e 67 7e 2c 20 69 6e 20 74 .~gptel-include-reasoning~,.in.t
94d80 68 65 20 73 61 6d 65 20 77 61 79 20 74 68 61 74 20 69 74 20 68 61 6e 64 6c 65 73 20 6f 74 68 65 he.same.way.that.it.handles.othe
94da0 72 0a 20 20 41 50 49 73 2e 0a 0a 2d 20 57 68 65 6e 20 69 6e 63 6c 75 64 69 6e 67 20 61 20 66 69 r...APIs...-.When.including.a.fi
94dc0 6c 65 20 69 6e 20 74 68 65 20 63 6f 6e 74 65 78 74 2c 20 74 68 65 20 61 62 62 72 65 76 69 61 74 le.in.the.context,.the.abbreviat
94de0 65 64 20 66 75 6c 6c 20 70 61 74 68 20 6f 66 0a 20 20 74 68 65 20 66 69 6c 65 20 69 73 20 69 6e ed.full.path.of...the.file.is.in
94e00 63 6c 75 64 65 64 20 69 73 20 6e 6f 77 20 69 6e 63 6c 75 64 65 64 20 69 6e 73 74 65 61 64 20 6f cluded.is.now.included.instead.o
94e20 66 20 74 68 65 20 62 61 73 65 6e 61 6d 65 2e 0a 20 20 53 70 65 63 69 66 69 63 61 6c 6c 79 2c 20 f.the.basename....Specifically,.
94e40 3d 2f 68 6f 6d 65 2f 75 73 65 72 2f 70 61 74 68 2f 74 6f 2f 66 69 6c 65 3d 20 69 73 20 69 6e 63 =/home/user/path/to/file=.is.inc
94e60 6c 75 64 65 64 20 61 73 0a 20 20 3d 7e 2f 70 61 74 68 2f 74 6f 2f 66 69 6c 65 3d 2e 20 20 54 68 luded.as...=~/path/to/file=...Th
94e80 69 73 20 69 73 20 74 6f 20 70 72 6f 76 69 64 65 20 61 64 64 69 74 69 6f 6e 61 6c 20 63 6f 6e 74 is.is.to.provide.additional.cont
94ea0 65 78 74 20 66 6f 72 20 4c 4c 4d 0a 20 20 61 63 74 69 6f 6e 73 2c 20 69 6e 63 6c 75 64 69 6e 67 ext.for.LLM...actions,.including
94ec0 20 74 6f 6f 6c 2d 75 73 65 20 69 6e 20 73 75 62 73 65 71 75 65 6e 74 20 63 6f 6e 76 65 72 73 61 .tool-use.in.subsequent.conversa
94ee0 74 69 6f 6e 20 74 75 72 6e 73 2e 20 20 54 68 69 73 0a 20 20 61 70 70 6c 69 65 73 20 74 6f 20 63 tion.turns...This...applies.to.c
94f00 6f 6e 74 65 78 74 20 69 6e 63 6c 75 64 65 64 20 76 69 61 20 7e 67 70 74 65 6c 2d 61 64 64 7e 20 ontext.included.via.~gptel-add~.
94f20 6f 72 20 61 73 20 61 20 6c 69 6e 6b 20 69 6e 20 61 0a 20 20 62 75 66 66 65 72 2e 0a 0a 2d 20 53 or.as.a.link.in.a...buffer...-.S
94f40 74 72 75 63 74 75 72 65 64 20 6f 75 74 70 75 74 20 73 75 70 70 6f 72 74 3a 20 7e 67 70 74 65 6c tructured.output.support:.~gptel
94f60 2d 72 65 71 75 65 73 74 7e 20 63 61 6e 20 6e 6f 77 20 74 61 6b 65 20 61 6e 20 6f 70 74 69 6f 6e -request~.can.now.take.an.option
94f80 61 6c 0a 20 20 73 63 68 65 6d 61 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 63 6f 6e 73 74 72 61 69 al...schema.argument.to.constrai
94fa0 6e 20 4c 4c 4d 20 6f 75 74 70 75 74 20 74 6f 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 4a 53 n.LLM.output.to.the.specified.JS
94fc0 4f 4e 20 73 63 68 65 6d 61 2e 0a 20 20 54 68 65 20 4a 53 4f 4e 20 73 63 68 65 6d 61 20 63 61 6e ON.schema....The.JSON.schema.can
94fe0 20 62 65 20 70 72 6f 76 69 64 65 64 20 61 73 0a 20 20 2d 20 61 6e 20 65 6c 69 73 70 20 6f 62 6a .be.provided.as...-.an.elisp.obj
95000 65 63 74 2c 20 61 20 6e 65 73 74 65 64 20 70 6c 69 73 74 20 73 74 72 75 63 74 75 72 65 2e 0a 20 ect,.a.nested.plist.structure...
95020 20 2d 20 41 20 4a 53 4f 4e 20 73 63 68 65 6d 61 20 73 65 72 69 61 6c 69 7a 65 64 20 74 6f 20 61 .-.A.JSON.schema.serialized.to.a
95040 20 73 74 72 69 6e 67 2e 0a 20 20 2d 20 41 20 73 68 6f 72 74 68 61 6e 64 20 6f 62 6a 65 63 74 2f .string....-.A.shorthand.object/
95060 61 72 72 61 79 20 64 65 73 63 72 69 70 74 69 6f 6e 2c 20 64 65 73 63 72 69 62 65 64 20 69 6e 20 array.description,.described.in.
95080 74 68 65 20 6d 61 6e 75 61 6c 20 28 61 6e 64 0a 20 20 20 20 74 68 65 20 64 6f 63 75 6d 65 6e 74 the.manual.(and.....the.document
950a0 61 74 69 6f 6e 20 6f 66 20 7e 67 70 74 65 6c 2d 2d 64 69 73 70 61 74 63 68 2d 73 63 68 65 6d 61 ation.of.~gptel--dispatch-schema
950c0 2d 74 79 70 65 7e 2e 29 0a 0a 20 20 54 68 69 73 20 66 65 61 74 75 72 65 20 77 6f 72 6b 73 20 77 -type~.)....This.feature.works.w
950e0 69 74 68 20 61 6c 6c 20 6d 61 6a 6f 72 20 62 61 63 6b 65 6e 64 73 3a 20 4f 70 65 6e 41 49 2c 20 ith.all.major.backends:.OpenAI,.
95100 41 6e 74 68 72 6f 70 69 63 2c 20 47 65 6d 69 6e 69 2c 0a 20 20 6c 6c 61 6d 61 2d 63 70 70 20 61 Anthropic,.Gemini,...llama-cpp.a
95120 6e 64 20 4f 6c 6c 61 6d 61 2e 20 20 49 74 20 69 73 20 70 72 65 73 65 6e 74 6c 79 20 73 75 70 70 nd.Ollama...It.is.presently.supp
95140 6f 72 74 65 64 20 62 79 20 73 6f 6d 65 20 62 75 74 20 6e 6f 74 20 61 6c 6c 0a 20 20 22 4f 70 65 orted.by.some.but.not.all..."Ope
95160 6e 41 49 2d 63 6f 6d 70 61 74 69 62 6c 65 20 41 50 49 22 20 70 72 6f 76 69 64 65 72 73 2e 0a 0a nAI-compatible.API".providers...
95180 20 20 4e 6f 74 65 20 74 68 61 74 20 74 68 69 73 20 69 73 20 6f 6e 6c 79 20 61 76 61 69 6c 61 62 ..Note.that.this.is.only.availab
951a0 6c 65 20 76 69 61 20 74 68 65 20 7e 67 70 74 65 6c 2d 72 65 71 75 65 73 74 7e 20 41 50 49 2c 20 le.via.the.~gptel-request~.API,.
951c0 61 6e 64 0a 20 20 63 75 72 72 65 6e 74 6c 79 20 75 6e 73 75 70 70 6f 72 74 65 64 20 62 79 20 7e and...currently.unsupported.by.~
951e0 67 70 74 65 6c 2d 73 65 6e 64 7e 2e 0a 0a 2d 20 67 70 74 65 6c 27 73 20 6c 6f 67 20 62 75 66 66 gptel-send~...-.gptel's.log.buff
95200 65 72 20 61 6e 64 20 6c 6f 67 67 69 6e 67 20 73 65 74 74 69 6e 67 73 20 61 72 65 20 6e 6f 77 20 er.and.logging.settings.are.now.
95220 61 63 63 65 73 73 69 62 6c 65 20 66 72 6f 6d 0a 20 20 67 70 74 65 6c 27 73 20 54 72 61 6e 73 69 accessible.from...gptel's.Transi
95240 65 6e 74 20 6d 65 6e 75 2e 20 20 54 6f 20 73 65 65 20 74 68 65 73 65 20 74 75 72 6e 20 6f 6e 20 ent.menu...To.see.these.turn.on.
95260 74 68 65 20 66 75 6c 6c 20 69 6e 74 65 72 66 61 63 65 20 62 79 0a 20 20 73 65 74 74 69 6e 67 20 the.full.interface.by...setting.
95280 7e 67 70 74 65 6c 2d 65 78 70 65 72 74 2d 63 6f 6d 6d 61 6e 64 73 7e 2e 0a 0a 2d 20 50 72 65 73 ~gptel-expert-commands~...-.Pres
952a0 65 74 73 3a 20 59 6f 75 20 63 61 6e 20 6e 6f 77 20 73 70 65 63 69 66 79 20 7e 3a 72 65 71 75 65 ets:.You.can.now.specify.~:reque
952c0 73 74 2d 70 61 72 61 6d 73 7e 20 28 41 50 49 2d 73 70 65 63 69 66 69 63 20 72 65 71 75 65 73 74 st-params~.(API-specific.request
952e0 0a 20 20 70 61 72 61 6d 65 74 65 72 73 29 20 69 6e 20 61 20 70 72 65 73 65 74 2e 0a 0a 2d 20 46 ...parameters).in.a.preset...-.F
95300 72 6f 6d 20 74 68 65 20 64 72 79 2d 72 75 6e 20 69 6e 73 70 65 63 74 6f 72 20 62 75 66 66 65 72 rom.the.dry-run.inspector.buffer
95320 2c 20 79 6f 75 20 63 61 6e 20 6e 6f 77 20 63 6f 70 79 20 74 68 65 20 43 75 72 6c 20 63 6f 6d 6d ,.you.can.now.copy.the.Curl.comm
95340 61 6e 64 0a 20 20 66 6f 72 20 74 68 65 20 72 65 71 75 65 73 74 2e 20 20 4c 69 6b 65 20 77 68 65 and...for.the.request...Like.whe
95360 6e 20 63 6f 6e 74 69 6e 75 69 6e 67 20 74 68 65 20 71 75 65 72 79 2c 20 74 68 65 20 72 65 71 75 n.continuing.the.query,.the.requ
95380 65 73 74 20 69 73 0a 20 20 63 6f 6e 73 74 72 75 63 74 65 64 20 66 72 6f 6d 20 74 68 65 20 63 6f est.is...constructed.from.the.co
953a0 6e 74 65 6e 74 73 20 6f 66 20 74 68 65 20 62 75 66 66 65 72 2c 20 77 68 69 63 68 20 69 73 20 65 ntents.of.the.buffer,.which.is.e
953c0 64 69 74 61 62 6c 65 2e 0a 0a 2d 20 67 70 74 65 6c 20 6e 6f 77 20 68 61 6e 64 6c 65 73 20 4f 6c ditable...-.gptel.now.handles.Ol
953e0 6c 61 6d 61 20 6d 6f 64 65 6c 73 20 74 68 61 74 20 72 65 74 75 72 6e 20 62 6f 74 68 20 72 65 61 lama.models.that.return.both.rea
95400 73 6f 6e 69 6e 67 20 63 6f 6e 74 65 6e 74 0a 20 20 61 6e 64 20 74 6f 6f 6c 20 63 61 6c 6c 73 20 soning.content...and.tool.calls.
95420 69 6e 20 61 20 73 69 6e 67 6c 65 20 72 65 71 75 65 73 74 2e 0a 0a 2d 20 54 68 65 20 22 50 72 6f in.a.single.request...-.The."Pro
95440 6d 70 74 20 66 72 6f 6d 20 6d 69 6e 69 62 75 66 66 65 72 22 20 6f 70 74 69 6f 6e 20 69 6e 20 67 mpt.from.minibuffer".option.in.g
95460 70 74 65 6c 27 73 20 54 72 61 6e 73 69 65 6e 74 20 6d 65 6e 75 0a 20 20 62 65 68 61 76 65 73 20 ptel's.Transient.menu...behaves.
95480 73 6c 69 67 68 74 6c 79 20 64 69 66 66 65 72 65 6e 74 6c 79 20 6e 6f 77 2e 20 20 49 66 20 61 20 slightly.differently.now...If.a.
954a0 72 65 67 69 6f 6e 20 69 73 20 61 63 74 69 76 65 20 69 6e 20 74 68 65 0a 20 20 62 75 66 66 65 72 region.is.active.in.the...buffer
954c0 2c 20 69 74 20 63 61 6e 20 6f 70 74 69 6f 6e 61 6c 6c 79 20 62 65 20 69 6e 63 6c 75 64 65 64 20 ,.it.can.optionally.be.included.
954e0 69 6e 20 74 68 65 20 70 72 6f 6d 70 74 2e 20 20 54 68 65 20 6b 65 79 62 69 6e 64 69 6e 67 0a 20 in.the.prompt...The.keybinding..
95500 20 74 6f 20 74 6f 67 67 6c 65 20 74 68 69 73 20 69 73 20 64 69 73 70 6c 61 79 65 64 20 64 75 72 .to.toggle.this.is.displayed.dur
95520 69 6e 67 20 74 68 65 20 6d 69 6e 69 62 75 66 66 65 72 2d 72 65 61 64 2e 0a 0a 20 20 41 64 64 69 ing.the.minibuffer-read.....Addi
95540 74 69 6f 6e 61 6c 6c 79 2c 20 77 68 65 6e 20 72 65 61 64 69 6e 67 20 61 20 70 72 6f 6d 70 74 20 tionally,.when.reading.a.prompt.
95560 6f 72 20 69 6e 73 74 72 75 63 74 69 6f 6e 73 20 66 72 6f 6d 20 74 68 65 0a 20 20 6d 69 6e 69 62 or.instructions.from.the...minib
95580 75 66 66 65 72 20 79 6f 75 20 63 61 6e 20 73 77 69 74 63 68 20 74 6f 20 61 20 64 65 64 69 63 61 uffer.you.can.switch.to.a.dedica
955a0 74 65 64 20 63 6f 6d 70 6f 73 69 74 69 6f 6e 20 62 75 66 66 65 72 20 76 69 61 0a 20 20 3d 43 2d ted.composition.buffer.via...=C-
955c0 63 20 43 2d 65 3d 2e 0a 0a 2a 20 30 2e 39 2e 38 2e 35 20 32 30 32 35 2d 30 36 2d 31 31 0a 0a 2a c.C-e=...*.0.9.8.5.2025-06-11..*
955e0 2a 20 42 72 65 61 6b 69 6e 67 20 63 68 61 6e 67 65 73 0a 0a 2d 20 7e 67 70 74 65 6c 2d 6f 72 67 *.Breaking.changes..-.~gptel-org
95600 2d 62 72 61 6e 63 68 69 6e 67 2d 63 6f 6e 74 65 78 74 7e 20 69 73 20 6e 6f 77 20 61 20 67 6c 6f -branching-context~.is.now.a.glo
95620 62 61 6c 20 76 61 72 69 61 62 6c 65 2e 20 20 49 74 20 77 61 73 0a 20 20 62 75 66 66 65 72 2d 6c bal.variable...It.was...buffer-l
95640 6f 63 61 6c 20 62 79 20 64 65 66 61 75 6c 74 20 69 6e 20 70 61 73 74 20 72 65 6c 65 61 73 65 73 ocal.by.default.in.past.releases
95660 2e 0a 0a 2d 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 6d 6f 64 65 6c 73 20 68 61 76 65 20 62 ...-.The.following.models.have.b
95680 65 65 6e 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d 20 74 68 65 20 64 65 66 61 75 6c 74 20 43 68 61 een.removed.from.the.default.Cha
956a0 74 47 50 54 20 62 61 63 6b 65 6e 64 3a 0a 20 20 2d 20 7e 6f 31 2d 70 72 65 76 69 65 77 7e 3a 20 tGPT.backend:...-.~o1-preview~:.
956c0 75 73 65 20 7e 6f 31 7e 20 69 6e 73 74 65 61 64 2e 0a 20 20 2d 20 7e 67 70 74 2d 34 2d 74 75 72 use.~o1~.instead....-.~gpt-4-tur
956e0 62 6f 2d 70 72 65 76 69 65 77 7e 3a 20 75 73 65 20 7e 67 70 74 2d 34 6f 7e 20 6f 72 20 7e 67 70 bo-preview~:.use.~gpt-4o~.or.~gp
95700 74 2d 34 2d 74 75 72 62 6f 7e 20 69 6e 73 74 65 61 64 2e 0a 20 20 2d 20 7e 67 70 74 2d 34 2d 33 t-4-turbo~.instead....-.~gpt-4-3
95720 32 6b 7e 2c 20 7e 67 70 74 2d 34 2d 30 31 32 35 2d 70 72 65 76 69 65 77 7e 20 61 6e 64 20 7e 67 2k~,.~gpt-4-0125-preview~.and.~g
95740 70 74 2d 34 2d 31 31 30 36 2d 70 72 65 76 69 65 77 7e 3a 20 75 73 65 0a 20 20 20 20 7e 67 70 74 pt-4-1106-preview~:.use.....~gpt
95760 2d 34 6f 7e 20 6f 72 20 7e 67 70 74 2d 34 7e 20 69 6e 73 74 65 61 64 2e 0a 20 20 41 6c 74 65 72 -4o~.or.~gpt-4~.instead....Alter
95780 6e 61 74 69 76 65 6c 79 2c 20 79 6f 75 20 63 61 6e 20 61 64 64 20 74 68 65 73 65 20 6d 6f 64 65 natively,.you.can.add.these.mode
957a0 6c 73 20 62 61 63 6b 20 74 6f 20 74 68 65 20 62 61 63 6b 65 6e 64 20 69 6e 20 79 6f 75 72 0a 20 ls.back.to.the.backend.in.your..
957c0 20 70 65 72 73 6f 6e 61 6c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 3a 0a 20 20 23 2b 62 65 67 .personal.configuration:...#+beg
957e0 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 20 20 28 70 75 73 68 20 27 67 70 74 2d 34 in_src.emacs-lisp...(push.'gpt-4
95800 2d 74 75 72 62 6f 2d 70 72 65 76 69 65 77 0a 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 62 61 -turbo-preview.........(gptel-ba
95820 63 6b 65 6e 64 2d 6d 6f 64 65 6c 73 20 28 67 70 74 65 6c 2d 67 65 74 2d 62 61 63 6b 65 6e 64 20 ckend-models.(gptel-get-backend.
95840 22 43 68 61 74 47 50 54 22 29 29 29 0a 20 20 23 2b 65 6e 64 5f 73 72 63 0a 0a 2d 20 4f 6e 6c 79 "ChatGPT")))...#+end_src..-.Only
95860 20 72 65 6c 65 76 61 6e 74 20 69 66 20 79 6f 75 20 75 73 65 20 7e 67 70 74 65 6c 2d 72 65 71 75 .relevant.if.you.use.~gptel-requ
95880 65 73 74 7e 20 69 6e 20 79 6f 75 72 20 65 6c 69 73 70 20 63 6f 64 65 2c 0a 20 20 2f 69 6e 74 65 est~.in.your.elisp.code,.../inte
958a0 72 61 63 74 69 76 65 20 67 70 74 65 6c 20 75 73 61 67 65 20 69 73 20 75 6e 61 66 66 65 63 74 65 ractive.gptel.usage.is.unaffecte
958c0 64 2f 3a 20 7e 67 70 74 65 6c 2d 72 65 71 75 65 73 74 7e 20 6e 6f 77 20 74 61 6b 65 73 20 61 0a d/:.~gptel-request~.now.takes.a.
958e0 20 20 6e 65 77 2c 20 6f 70 74 69 6f 6e 61 6c 20 3d 3a 74 72 61 6e 73 66 6f 72 6d 73 3d 20 61 72 ..new,.optional.=:transforms=.ar
95900 67 75 6d 65 6e 74 2e 20 20 41 6e 79 20 70 72 6f 6d 70 74 20 6d 6f 64 69 66 69 63 61 74 69 6f 6e gument...Any.prompt.modification
95920 73 0a 20 20 28 6c 69 6b 65 20 61 64 64 69 6e 67 20 63 6f 6e 74 65 78 74 20 74 6f 20 72 65 71 75 s...(like.adding.context.to.requ
95940 65 73 74 73 29 20 6d 75 73 74 20 6e 6f 77 20 62 65 20 73 70 65 63 69 66 69 65 64 20 76 69 61 20 ests).must.now.be.specified.via.
95960 74 68 69 73 0a 20 20 61 72 67 75 6d 65 6e 74 2e 20 20 53 65 65 20 74 68 65 20 64 65 66 69 6e 69 this...argument...See.the.defini
95980 74 69 6f 6e 20 6f 66 20 7e 67 70 74 65 6c 2d 73 65 6e 64 7e 20 66 6f 72 20 61 6e 20 65 78 61 6d tion.of.~gptel-send~.for.an.exam
959a0 70 6c 65 2e 0a 0a 2a 2a 20 4e 65 77 20 6d 6f 64 65 6c 73 20 61 6e 64 20 62 61 63 6b 65 6e 64 73 ple...**.New.models.and.backends
959c0 0a 0a 2d 20 41 64 64 20 73 75 70 70 6f 72 74 20 66 6f 72 20 7e 67 70 74 2d 34 2e 31 7e 2c 20 7e ..-.Add.support.for.~gpt-4.1~,.~
959e0 67 70 74 2d 34 2e 31 2d 6d 69 6e 69 7e 2c 20 7e 67 70 74 2d 34 2e 31 2d 6e 61 6e 6f 7e 2c 20 7e gpt-4.1-mini~,.~gpt-4.1-nano~,.~
95a00 6f 33 7e 20 61 6e 64 0a 20 20 7e 6f 34 2d 6d 69 6e 69 7e 2e 0a 0a 2d 20 41 64 64 20 73 75 70 70 o3~.and...~o4-mini~...-.Add.supp
95a20 6f 72 74 20 66 6f 72 20 7e 67 65 6d 69 6e 69 2d 32 2e 35 2d 70 72 6f 2d 65 78 70 2d 30 33 2d 32 ort.for.~gemini-2.5-pro-exp-03-2
95a40 35 7e 2c 0a 20 20 7e 67 65 6d 69 6e 69 2d 32 2e 35 2d 66 6c 61 73 68 2d 70 72 65 76 69 65 77 2d 5~,...~gemini-2.5-flash-preview-
95a60 30 34 2d 31 37 7e 2c 20 7e 67 65 6d 69 6e 69 2d 32 2e 35 2d 70 72 6f 2d 70 72 65 76 69 65 77 2d 04-17~,.~gemini-2.5-pro-preview-
95a80 30 35 2d 30 36 7e 20 61 6e 64 0a 20 20 7e 67 65 6d 69 6e 69 2d 32 2e 35 2d 70 72 6f 2d 70 72 65 05-06~.and...~gemini-2.5-pro-pre
95aa0 76 69 65 77 2d 30 36 2d 30 35 7e 2e 0a 0a 2d 20 41 64 64 20 73 75 70 70 6f 72 74 20 66 6f 72 20 view-06-05~...-.Add.support.for.
95ac0 7e 63 6c 61 75 64 65 2d 73 6f 6e 6e 65 74 2d 34 2d 32 30 32 35 30 35 31 34 7e 20 61 6e 64 0a 20 ~claude-sonnet-4-20250514~.and..
95ae0 20 7e 63 6c 61 75 64 65 2d 6f 70 75 73 2d 34 2d 32 30 32 35 30 35 31 34 7e 2e 0a 0a 2d 20 41 64 .~claude-opus-4-20250514~...-.Ad
95b00 64 20 73 75 70 70 6f 72 74 20 66 6f 72 20 41 57 53 20 42 65 64 72 6f 63 6b 20 6d 6f 64 65 6c 73 d.support.for.AWS.Bedrock.models
95b20 2e 20 20 59 6f 75 20 63 61 6e 20 63 72 65 61 74 65 20 61 6e 20 41 57 53 20 42 65 64 72 6f 63 6b ...You.can.create.an.AWS.Bedrock
95b40 0a 20 20 67 70 74 65 6c 20 62 61 63 6b 65 6e 64 20 77 69 74 68 20 7e 67 70 74 65 6c 2d 6d 61 6b ...gptel.backend.with.~gptel-mak
95b60 65 2d 62 65 64 72 6f 63 6b 7e 2c 20 77 68 69 63 68 20 73 65 65 2e 20 20 50 6c 65 61 73 65 20 6e e-bedrock~,.which.see...Please.n
95b80 6f 74 65 3a 0a 20 20 41 57 53 20 42 65 64 72 6f 63 6b 20 73 75 70 70 6f 72 74 20 72 65 71 75 69 ote:...AWS.Bedrock.support.requi
95ba0 72 65 73 20 43 75 72 6c 20 38 2e 39 2e 30 20 6f 72 20 68 69 67 68 65 72 2e 0a 0a 2d 20 59 6f 75 res.Curl.8.9.0.or.higher...-.You
95bc0 20 63 61 6e 20 6e 6f 77 20 63 72 65 61 74 65 20 61 6e 20 78 41 49 20 62 61 63 6b 65 6e 64 20 77 .can.now.create.an.xAI.backend.w
95be0 69 74 68 20 7e 67 70 74 65 6c 2d 6d 61 6b 65 2d 78 61 69 7e 2c 20 77 68 69 63 68 20 73 65 65 2e ith.~gptel-make-xai~,.which.see.
95c00 0a 20 20 28 78 41 49 20 77 61 73 20 73 75 70 70 6f 72 74 65 64 20 62 65 66 6f 72 65 20 62 75 74 ...(xAI.was.supported.before.but
95c20 20 74 68 65 20 6d 6f 64 65 6c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 69 73 20 6e 6f 77 20 .the.model.configuration.is.now.
95c40 68 61 6e 64 6c 65 64 0a 20 20 66 6f 72 20 79 6f 75 20 62 79 20 74 68 69 73 20 66 75 6e 63 74 69 handled...for.you.by.this.functi
95c60 6f 6e 2e 29 0a 0a 2d 20 41 64 64 20 73 75 70 70 6f 72 74 20 66 6f 72 20 47 69 74 48 75 62 20 43 on.)..-.Add.support.for.GitHub.C
95c80 6f 70 69 6c 6f 74 20 43 68 61 74 2e 20 20 53 65 65 20 74 68 65 20 52 45 41 44 4d 45 20 61 6e 64 opilot.Chat...See.the.README.and
95ca0 0a 20 20 7e 67 70 74 65 6c 2d 6d 61 6b 65 2d 67 68 2d 63 6f 70 69 6c 6f 74 7e 2e 20 20 50 6c 65 ...~gptel-make-gh-copilot~...Ple
95cc0 61 73 65 20 6e 6f 74 65 3a 20 74 68 69 73 20 69 73 20 6f 6e 6c 79 20 74 68 65 20 63 68 61 74 0a ase.note:.this.is.only.the.chat.
95ce0 20 20 63 6f 6d 70 6f 6e 65 6e 74 20 6f 66 20 47 69 74 48 75 62 20 43 6f 70 69 6c 6f 74 2e 20 20 ..component.of.GitHub.Copilot...
95d00 43 6f 70 69 6c 6f 74 27 73 20 7e 63 6f 6d 70 6c 65 74 69 6f 6e 2d 61 74 2d 70 6f 69 6e 74 7e 0a Copilot's.~completion-at-point~.
95d20 20 20 28 74 61 62 2d 63 6f 6d 70 6c 65 74 69 6f 6e 29 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 ..(tab-completion).functionality
95d40 20 69 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 65 64 20 62 79 20 67 70 74 65 6c 2e 0a 0a 2d 20 41 .is.not.supported.by.gptel...-.A
95d60 64 64 20 73 75 70 70 6f 72 74 20 66 6f 72 20 53 61 6d 62 61 6e 6f 76 61 2e 20 20 54 68 69 73 20 dd.support.for.Sambanova...This.
95d80 69 73 20 61 6e 20 4f 70 65 6e 41 49 2d 63 6f 6d 70 61 74 69 62 6c 65 20 41 50 49 20 73 6f 20 79 is.an.OpenAI-compatible.API.so.y
95da0 6f 75 0a 20 20 63 61 6e 20 63 72 65 61 74 65 20 61 20 62 61 63 6b 65 6e 64 20 77 69 74 68 20 7e ou...can.create.a.backend.with.~
95dc0 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 7e 2c 20 73 65 65 20 74 68 65 20 52 45 41 44 gptel-make-openai~,.see.the.READ
95de0 4d 45 20 66 6f 72 0a 20 20 64 65 74 61 69 6c 73 2e 0a 0a 2d 20 41 64 64 20 73 75 70 70 6f 72 74 ME.for...details...-.Add.support
95e00 20 66 6f 72 20 4d 69 73 74 72 61 6c 20 4c 65 20 43 68 61 74 2e 20 20 54 68 69 73 20 69 73 20 61 .for.Mistral.Le.Chat...This.is.a
95e20 6e 20 61 6e 20 4f 70 65 6e 41 49 2d 63 6f 6d 70 61 74 69 62 6c 65 0a 20 20 41 50 49 20 73 6f 20 n.an.OpenAI-compatible...API.so.
95e40 79 6f 75 20 63 61 6e 20 63 72 65 61 74 65 20 61 20 62 61 63 6b 65 6e 64 20 77 69 74 68 20 7e 67 you.can.create.a.backend.with.~g
95e60 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 7e 2c 20 73 65 65 20 74 68 65 0a 20 20 52 45 41 ptel-make-openai~,.see.the...REA
95e80 44 4d 45 20 66 6f 72 20 64 65 74 61 69 6c 73 2e 0a 0a 2a 2a 20 4e 65 77 20 66 65 61 74 75 72 65 DME.for.details...**.New.feature
95ea0 73 20 61 6e 64 20 55 49 20 63 68 61 6e 67 65 73 0a 0a 2d 20 67 70 74 65 6c 20 6e 6f 77 20 73 75 s.and.UI.changes..-.gptel.now.su
95ec0 70 70 6f 72 74 73 20 68 61 6e 64 6c 69 6e 67 20 72 65 61 73 6f 6e 69 6e 67 2f 74 68 69 6e 6b 69 pports.handling.reasoning/thinki
95ee0 6e 67 20 62 6c 6f 63 6b 73 20 69 6e 20 72 65 73 70 6f 6e 73 65 73 0a 20 20 66 72 6f 6d 20 47 65 ng.blocks.in.responses...from.Ge
95f00 6d 69 6e 69 20 6d 6f 64 65 6c 73 2e 20 20 54 68 69 73 20 69 73 20 63 6f 6e 74 72 6f 6c 6c 65 64 mini.models...This.is.controlled
95f20 20 62 79 0a 20 20 7e 67 70 74 65 6c 2d 69 6e 63 6c 75 64 65 2d 72 65 61 73 6f 6e 69 6e 67 7e 2c .by...~gptel-include-reasoning~,
95f40 20 69 6e 20 74 68 65 20 73 61 6d 65 20 77 61 79 20 74 68 61 74 20 69 74 20 68 61 6e 64 6c 65 73 .in.the.same.way.that.it.handles
95f60 20 6f 74 68 65 72 0a 20 20 41 50 49 73 2e 0a 0a 2d 20 54 68 65 20 6e 65 77 20 6f 70 74 69 6f 6e .other...APIs...-.The.new.option
95f80 20 7e 67 70 74 65 6c 2d 63 75 72 6c 2d 65 78 74 72 61 2d 61 72 67 73 7e 20 63 61 6e 20 62 65 20 .~gptel-curl-extra-args~.can.be.
95fa0 75 73 65 64 20 74 6f 20 73 70 65 63 69 66 79 20 65 78 74 72 61 0a 20 20 61 72 67 75 6d 65 6e 74 used.to.specify.extra...argument
95fc0 73 20 74 6f 20 74 68 65 20 43 75 72 6c 20 63 6f 6d 6d 61 6e 64 20 75 73 65 64 20 66 6f 72 20 74 s.to.the.Curl.command.used.for.t
95fe0 68 65 20 72 65 71 75 65 73 74 2e 20 20 54 68 69 73 20 69 73 20 74 68 65 0a 20 20 67 6c 6f 62 61 he.request...This.is.the...globa
96000 6c 20 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 73 l.version.of.the.gptel-backend-s
96020 70 65 63 69 66 69 63 20 7e 3a 63 75 72 6c 2d 61 72 67 73 7e 20 73 6c 6f 74 2c 0a 20 20 77 68 69 pecific.~:curl-args~.slot,...whi
96040 63 68 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 73 70 65 63 69 66 79 20 43 75 72 6c 20 61 ch.can.be.used.to.specify.Curl.a
96060 72 67 75 6d 65 6e 74 73 20 77 68 65 6e 20 75 73 69 6e 67 20 61 20 73 70 65 63 69 66 69 63 0a 20 rguments.when.using.a.specific..
96080 20 62 61 63 6b 65 6e 64 2e 0a 0a 2d 20 54 6f 6f 6c 73 20 6e 6f 77 20 72 75 6e 20 69 6e 20 74 68 .backend...-.Tools.now.run.in.th
960a0 65 20 62 75 66 66 65 72 20 66 72 6f 6d 20 77 68 69 63 68 20 74 68 65 20 72 65 71 75 65 73 74 20 e.buffer.from.which.the.request.
960c0 6f 72 69 67 69 6e 61 74 65 73 2e 20 20 54 68 69 73 0a 20 20 63 61 6e 20 62 65 20 73 69 67 6e 69 originates...This...can.be.signi
960e0 66 69 63 61 6e 74 20 77 68 65 6e 20 74 6f 6f 6c 73 20 72 65 61 64 20 6f 72 20 6d 61 6e 69 70 75 ficant.when.tools.read.or.manipu
96100 6c 61 74 65 20 45 6d 61 63 73 27 20 73 74 61 74 65 2e 0a 0a 2d 20 67 70 74 65 6c 20 63 61 6e 20 late.Emacs'.state...-.gptel.can.
96120 61 63 63 65 73 73 20 4d 43 50 20 73 65 72 76 65 72 20 74 6f 6f 6c 73 20 62 79 20 69 6e 74 65 67 access.MCP.server.tools.by.integ
96140 72 61 74 69 6e 67 20 77 69 74 68 20 74 68 65 20 6d 63 70 2e 65 6c 0a 20 20 70 61 63 6b 61 67 65 rating.with.the.mcp.el...package
96160 2c 20 77 68 69 63 68 20 69 73 20 61 74 20 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d ,.which.is.at.https://github.com
96180 2f 6c 69 7a 71 77 65 72 73 63 6f 74 74 2f 6d 63 70 2e 65 6c 2e 0a 20 20 28 6d 63 70 2e 65 6c 20 /lizqwerscott/mcp.el....(mcp.el.
961a0 69 73 20 61 76 61 69 6c 61 62 6c 65 20 6f 6e 20 4d 45 4c 50 41 2e 29 20 20 54 6f 20 68 65 6c 70 is.available.on.MELPA.)..To.help
961c0 20 77 69 74 68 20 74 68 65 20 69 6e 74 65 67 72 61 74 69 6f 6e 2c 20 74 77 6f 0a 20 20 6e 65 77 .with.the.integration,.two...new
961e0 20 63 6f 6d 6d 61 6e 64 73 20 61 72 65 20 70 72 6f 76 69 64 65 64 3a 20 7e 67 70 74 65 6c 2d 6d .commands.are.provided:.~gptel-m
96200 63 70 2d 63 6f 6e 6e 65 63 74 7e 20 61 6e 64 0a 20 20 7e 67 70 74 65 6c 2d 6d 63 70 2d 64 69 73 cp-connect~.and...~gptel-mcp-dis
96220 63 6f 6e 6e 65 63 74 7e 2e 20 20 59 6f 75 20 63 61 6e 20 75 73 65 20 74 68 65 73 65 20 74 6f 20 connect~...You.can.use.these.to.
96240 73 74 61 72 74 20 4d 43 50 20 73 65 72 76 65 72 73 0a 20 20 73 65 6c 65 63 74 69 76 65 6c 79 20 start.MCP.servers...selectively.
96260 61 6e 64 20 61 64 64 20 74 6f 6f 6c 73 20 74 6f 20 67 70 74 65 6c 2e 20 20 54 68 65 73 65 20 63 and.add.tools.to.gptel...These.c
96280 6f 6d 6d 61 6e 64 73 20 61 72 65 20 61 6c 73 6f 0a 20 20 61 76 61 69 6c 61 62 6c 65 20 66 72 6f ommands.are.also...available.fro
962a0 6d 20 67 70 74 65 6c 27 73 20 74 6f 6f 6c 73 20 6d 65 6e 75 2e 0a 20 20 0a 20 20 54 68 65 73 65 m.gptel's.tools.menu.......These
962c0 20 63 6f 6d 6d 61 6e 64 73 20 61 72 65 20 63 75 72 72 65 6e 74 6c 79 20 6e 6f 74 20 61 75 74 6f .commands.are.currently.not.auto
962e0 6c 6f 61 64 65 64 20 62 79 20 67 70 74 65 6c 2e 20 20 54 6f 20 61 63 63 65 73 73 0a 20 20 74 68 loaded.by.gptel...To.access...th
96300 65 6d 2c 20 72 65 71 75 69 72 65 20 74 68 65 20 7e 67 70 74 65 6c 2d 69 6e 74 65 67 72 61 74 69 em,.require.the.~gptel-integrati
96320 6f 6e 73 7e 20 66 65 61 74 75 72 65 2e 0a 0a 2d 20 59 6f 75 20 63 61 6e 20 6e 6f 77 20 64 65 66 ons~.feature...-.You.can.now.def
96340 69 6e 65 20 22 70 72 65 73 65 74 73 22 2c 20 77 68 69 63 68 20 61 72 65 20 61 20 62 75 6e 64 6c ine."presets",.which.are.a.bundl
96360 65 20 6f 66 20 67 70 74 65 6c 20 6f 70 74 69 6f 6e 73 2c 0a 20 20 73 75 63 68 20 61 73 20 74 68 e.of.gptel.options,...such.as.th
96380 65 20 62 61 63 6b 65 6e 64 2c 20 6d 6f 64 65 6c 2c 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 e.backend,.model,.system.message
963a0 2c 20 69 6e 63 6c 75 64 65 64 20 74 6f 6f 6c 73 2c 0a 20 20 74 65 6d 70 65 72 61 74 75 72 65 20 ,.included.tools,...temperature.
963c0 61 6e 64 20 73 6f 20 6f 6e 2e 20 20 54 68 69 73 20 73 65 74 20 6f 66 20 6f 70 74 69 6f 6e 73 20 and.so.on...This.set.of.options.
963e0 63 61 6e 20 62 65 20 61 70 70 6c 69 65 64 20 74 6f 67 65 74 68 65 72 2c 0a 20 20 6d 61 6b 69 6e can.be.applied.together,...makin
96400 67 20 69 74 20 65 61 73 79 20 74 6f 20 73 77 69 74 63 68 20 62 65 74 77 65 65 6e 20 64 69 66 66 g.it.easy.to.switch.between.diff
96420 65 72 65 6e 74 20 74 61 73 6b 73 20 75 73 69 6e 67 20 67 70 74 65 6c 2e 20 20 46 72 6f 6d 0a 20 erent.tasks.using.gptel...From..
96440 20 67 70 74 65 6c 27 73 20 74 72 61 6e 73 69 65 6e 74 20 6d 65 6e 75 2c 20 79 6f 75 20 63 61 6e .gptel's.transient.menu,.you.can
96460 20 73 61 76 65 20 74 68 65 20 63 75 72 72 65 6e 74 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 .save.the.current.configuration.
96480 61 73 20 61 0a 20 20 70 72 65 73 65 74 20 6f 72 20 61 70 70 6c 79 20 61 6e 6f 74 68 65 72 20 6f as.a...preset.or.apply.another.o
964a0 6e 65 2e 20 20 50 72 65 73 65 74 73 20 63 61 6e 20 62 65 20 61 70 70 6c 69 65 64 20 67 6c 6f 62 ne...Presets.can.be.applied.glob
964c0 61 6c 6c 79 2c 0a 20 20 62 75 66 66 65 72 2d 6c 6f 63 61 6c 6c 79 20 6f 72 20 66 6f 72 20 74 68 ally,...buffer-locally.or.for.th
964e0 65 20 6e 65 78 74 20 72 65 71 75 65 73 74 20 6f 6e 6c 79 2e 20 20 54 6f 20 70 65 72 73 69 73 74 e.next.request.only...To.persist
96500 20 70 72 65 73 65 74 73 0a 20 20 61 63 72 6f 73 73 20 45 6d 61 63 73 20 73 65 73 73 69 6f 6e 73 .presets...across.Emacs.sessions
96520 2c 20 64 65 66 69 6e 65 20 70 72 65 73 65 74 73 20 69 6e 20 79 6f 75 72 20 63 6f 6e 66 69 67 75 ,.define.presets.in.your.configu
96540 72 61 74 69 6f 6e 20 75 73 69 6e 67 0a 20 20 7e 67 70 74 65 6c 2d 6d 61 6b 65 2d 70 72 65 73 65 ration.using...~gptel-make-prese
96560 74 7e 2e 0a 0a 2d 20 57 68 65 6e 20 75 73 69 6e 67 20 7e 67 70 74 65 6c 2d 73 65 6e 64 7e 20 66 t~...-.When.using.~gptel-send~.f
96580 72 6f 6d 20 61 6e 79 77 68 65 72 65 20 69 6e 20 45 6d 61 63 73 2c 20 79 6f 75 20 63 61 6e 20 6e rom.anywhere.in.Emacs,.you.can.n
965a0 6f 77 20 69 6e 63 6c 75 64 65 0a 20 20 61 20 22 63 6f 6f 6b 69 65 22 20 6f 66 20 74 68 65 20 66 ow.include...a."cookie".of.the.f
965c0 6f 72 6d 20 3d 40 70 72 65 73 65 74 2d 6e 61 6d 65 3d 20 69 6e 20 74 68 65 20 70 72 6f 6d 70 74 orm.=@preset-name=.in.the.prompt
965e0 20 74 65 78 74 20 74 6f 20 61 70 70 6c 79 0a 20 20 74 68 61 74 20 70 72 65 73 65 74 20 62 65 66 .text.to.apply...that.preset.bef
96600 6f 72 65 20 73 65 6e 64 69 6e 67 2e 20 20 54 68 65 20 70 72 65 73 65 74 20 69 73 20 61 70 70 6c ore.sending...The.preset.is.appl
96620 69 65 64 20 66 6f 72 20 74 68 61 74 20 72 65 71 75 65 73 74 0a 20 20 6f 6e 6c 79 2e 20 20 54 68 ied.for.that.request...only...Th
96640 69 73 20 69 73 20 61 6e 20 65 61 73 79 20 77 61 79 20 74 6f 20 73 70 65 63 69 66 79 20 6d 6f 64 is.is.an.easy.way.to.specify.mod
96660 65 6c 73 2c 20 74 6f 6f 6c 73 2c 20 73 79 73 74 65 6d 0a 20 20 6d 65 73 73 61 67 65 73 20 28 65 els,.tools,.system...messages.(e
96680 74 63 29 20 6f 6e 20 74 68 65 20 66 6c 79 2e 20 20 49 6e 20 63 68 61 74 20 62 75 66 66 65 72 73 tc).on.the.fly...In.chat.buffers
966a0 20 74 68 65 20 70 72 65 73 65 74 20 63 6f 6f 6b 69 65 20 69 73 0a 20 20 66 6f 6e 74 69 66 69 65 .the.preset.cookie.is...fontifie
966c0 64 20 61 6e 64 20 61 76 61 69 6c 61 62 6c 65 20 66 6f 72 20 63 6f 6d 70 6c 65 74 69 6f 6e 20 76 d.and.available.for.completion.v
966e0 69 61 20 7e 63 6f 6d 70 6c 65 74 69 6f 6e 2d 61 74 2d 70 6f 69 6e 74 7e 2e 0a 0a 2d 20 46 6f 72 ia.~completion-at-point~...-.For
96700 20 73 63 72 69 70 74 69 6e 67 20 70 75 72 70 6f 73 65 73 2c 20 70 72 6f 76 69 64 65 20 61 20 7e .scripting.purposes,.provide.a.~
96720 67 70 74 65 6c 2d 77 69 74 68 2d 70 72 65 73 65 74 7e 20 6d 61 63 72 6f 20 74 6f 0a 20 20 63 72 gptel-with-preset~.macro.to...cr
96740 65 61 74 65 20 61 6e 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 77 69 74 68 20 61 20 70 72 65 73 65 eate.an.environment.with.a.prese
96760 74 20 61 70 70 6c 69 65 64 2e 0a 0a 2d 20 4c 69 6e 6b 73 20 74 6f 20 70 6c 61 69 6e 2d 74 65 78 t.applied...-.Links.to.plain-tex
96780 74 20 66 69 6c 65 73 20 69 6e 20 63 68 61 74 20 62 75 66 66 65 72 73 20 63 61 6e 20 62 65 20 66 t.files.in.chat.buffers.can.be.f
967a0 6f 6c 6c 6f 77 65 64 2c 20 61 6e 64 20 74 68 65 69 72 0a 20 20 63 6f 6e 74 65 6e 74 73 20 69 6e ollowed,.and.their...contents.in
967c0 63 6c 75 64 65 64 20 77 69 74 68 20 74 68 65 20 72 65 71 75 65 73 74 2e 20 20 55 73 69 6e 67 20 cluded.with.the.request...Using.
967e0 4f 72 67 20 6f 72 20 4d 61 72 6b 64 6f 77 6e 20 6c 69 6e 6b 73 20 69 73 0a 20 20 61 6e 20 65 61 Org.or.Markdown.links.is...an.ea
96800 73 79 2c 20 69 6e 74 75 69 74 69 76 65 2c 20 70 65 72 73 69 73 74 65 6e 74 20 61 6e 64 20 62 75 sy,.intuitive,.persistent.and.bu
96820 66 66 65 72 2d 6c 6f 63 61 6c 20 77 61 79 20 74 6f 20 73 70 65 63 69 66 79 0a 20 20 63 6f 6e 74 ffer-local.way.to.specify...cont
96840 65 78 74 2e 20 20 54 6f 20 65 6e 61 62 6c 65 20 74 68 69 73 20 62 65 68 61 76 69 6f 72 2c 20 74 ext...To.enable.this.behavior,.t
96860 75 72 6e 20 6f 6e 20 7e 67 70 74 65 6c 2d 74 72 61 63 6b 2d 6d 65 64 69 61 7e 2e 20 54 68 69 73 urn.on.~gptel-track-media~..This
96880 0a 20 20 69 73 20 61 20 70 72 65 2d 65 78 69 73 74 69 6e 67 20 6f 70 74 69 6f 6e 20 74 68 61 74 ...is.a.pre-existing.option.that
968a0 20 61 6c 73 6f 20 63 6f 6e 74 72 6f 6c 73 20 77 68 65 74 68 65 72 20 69 6d 61 67 65 2f 64 6f 63 .also.controls.whether.image/doc
968c0 75 6d 65 6e 74 0a 20 20 6c 69 6e 6b 73 20 61 72 65 20 66 6f 6c 6c 6f 77 65 64 20 61 6e 64 20 73 ument...links.are.followed.and.s
968e0 65 6e 74 20 28 77 68 65 6e 20 74 68 65 20 6d 6f 64 65 6c 20 73 75 70 70 6f 72 74 73 20 69 74 29 ent.(when.the.model.supports.it)
96900 2e 0a 0a 2d 20 41 20 6e 65 77 20 68 6f 6f 6b 20 7e 67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 74 72 ...-.A.new.hook.~gptel-prompt-tr
96920 61 6e 73 66 6f 72 6d 2d 66 75 6e 63 74 69 6f 6e 73 7e 20 69 73 20 70 72 6f 76 69 64 65 64 20 66 ansform-functions~.is.provided.f
96940 6f 72 0a 20 20 61 72 62 69 74 72 61 72 79 20 74 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 73 20 6f or...arbitrary.transformations.o
96960 66 20 74 68 65 20 70 72 6f 6d 70 74 20 70 72 69 6f 72 20 74 6f 20 73 65 6e 64 69 6e 67 20 61 20 f.the.prompt.prior.to.sending.a.
96980 72 65 71 75 65 73 74 2e 0a 20 20 54 68 69 73 20 68 6f 6f 6b 20 72 75 6e 73 20 69 6e 20 61 20 74 request....This.hook.runs.in.a.t
969a0 65 6d 70 6f 72 61 72 79 20 62 75 66 66 65 72 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 74 emporary.buffer.containing.the.t
969c0 65 78 74 20 74 6f 20 62 65 20 73 65 6e 74 2e 0a 20 20 41 6e 79 20 61 73 70 65 63 74 20 6f 66 20 ext.to.be.sent....Any.aspect.of.
969e0 74 68 65 20 72 65 71 75 65 73 74 20 28 74 68 65 20 74 65 78 74 2c 20 64 65 73 74 69 6e 61 74 69 the.request.(the.text,.destinati
96a00 6f 6e 2c 20 72 65 71 75 65 73 74 0a 20 20 70 61 72 61 6d 65 74 65 72 73 2c 20 72 65 73 70 6f 6e on,.request...parameters,.respon
96a20 73 65 20 68 61 6e 64 6c 69 6e 67 20 70 72 65 66 65 72 65 6e 63 65 73 29 20 63 61 6e 20 62 65 20 se.handling.preferences).can.be.
96a40 6d 6f 64 69 66 69 65 64 0a 20 20 62 75 66 66 65 72 2d 6c 6f 63 61 6c 6c 79 20 68 65 72 65 2e 20 modified...buffer-locally.here..
96a60 20 54 68 65 73 65 20 68 6f 6f 6b 20 66 75 6e 63 74 69 6f 6e 73 20 63 61 6e 20 62 65 20 61 73 79 .These.hook.functions.can.be.asy
96a80 6e 63 68 72 6f 6e 6f 75 73 2e 0a 0a 2d 20 54 68 65 20 75 73 65 72 20 6f 70 74 69 6f 6e 20 7e 67 nchronous...-.The.user.option.~g
96aa0 70 74 65 6c 2d 75 73 65 2d 63 75 72 6c 7e 20 63 61 6e 20 6e 6f 77 20 62 65 20 75 73 65 64 20 74 ptel-use-curl~.can.now.be.used.t
96ac0 6f 20 73 70 65 63 69 66 79 20 61 20 43 75 72 6c 0a 20 20 70 61 74 68 2e 0a 0a 2d 20 54 68 65 20 o.specify.a.Curl...path...-.The.
96ae0 63 75 72 72 65 6e 74 20 6b 69 6c 6c 20 63 61 6e 20 62 65 20 61 64 64 65 64 20 74 6f 20 67 70 74 current.kill.can.be.added.to.gpt
96b00 65 6c 27 73 20 63 6f 6e 74 65 78 74 2e 20 20 54 6f 20 65 6e 61 62 6c 65 20 74 68 69 73 2c 0a 20 el's.context...To.enable.this,..
96b20 20 74 75 72 6e 20 6f 6e 20 7e 67 70 74 65 6c 2d 65 78 70 65 72 74 2d 63 6f 6d 6d 61 6e 64 73 7e .turn.on.~gptel-expert-commands~
96b40 20 61 6e 64 20 75 73 65 20 67 70 74 65 6c 27 73 20 74 72 61 6e 73 69 65 6e 74 20 6d 65 6e 75 2e .and.use.gptel's.transient.menu.
96b60 20 0a 0a 2d 20 54 68 65 20 74 6f 6f 6c 73 20 6d 65 6e 75 20 28 7e 67 70 74 65 6c 2d 74 6f 6f 6c ...-.The.tools.menu.(~gptel-tool
96b80 73 7e 29 20 68 61 73 20 62 65 65 6e 20 72 65 64 65 73 69 67 6e 65 64 2e 20 20 49 74 20 6e 6f 77 s~).has.been.redesigned...It.now
96ba0 20 64 69 73 70 6c 61 79 73 0a 20 20 74 6f 6f 6c 20 63 61 74 65 67 6f 72 69 65 73 20 61 6e 64 20 .displays...tool.categories.and.
96bc0 61 73 73 6f 63 69 61 74 65 64 20 74 6f 6f 6c 73 20 69 6e 20 74 77 6f 20 63 6f 6c 75 6d 6e 73 2c associated.tools.in.two.columns,
96be0 20 61 6e 64 20 69 74 20 73 68 6f 75 6c 64 0a 20 20 73 63 61 6c 65 20 62 65 74 74 65 72 20 74 6f .and.it.should...scale.better.to
96c00 20 61 6e 79 20 6e 75 6d 62 65 72 20 6f 66 20 74 6f 6f 6c 73 2e 20 20 41 73 20 61 20 62 6f 6e 75 .any.number.of.tools...As.a.bonu
96c20 73 2c 20 74 68 65 20 6e 65 77 20 6d 65 6e 75 0a 20 20 72 65 71 75 69 72 65 73 20 68 61 6c 66 20 s,.the.new.menu...requires.half.
96c40 61 73 20 6d 61 6e 79 20 6b 65 79 73 74 72 6f 6b 65 73 20 61 73 20 62 65 66 6f 72 65 20 74 6f 20 as.many.keystrokes.as.before.to.
96c60 65 6e 61 62 6c 65 20 69 6e 64 69 76 69 64 75 61 6c 0a 20 20 74 6f 6f 6c 73 20 6f 72 20 74 6f 67 enable.individual...tools.or.tog
96c80 67 6c 65 20 63 61 74 65 67 6f 72 69 65 73 2e 0a 0a 2a 2a 20 4e 6f 74 61 62 6c 65 20 42 75 67 20 gle.categories...**.Notable.Bug.
96ca0 66 69 78 65 73 0a 0a 2d 20 46 69 78 20 6d 6f 72 65 20 4f 72 67 20 6d 61 72 6b 75 70 20 63 6f 6e fixes..-.Fix.more.Org.markup.con
96cc0 76 65 72 73 69 6f 6e 20 65 64 67 65 20 63 61 73 65 73 20 69 6e 76 6f 6c 76 69 6e 67 20 6e 65 73 version.edge.cases.involving.nes
96ce0 74 65 64 20 4d 61 72 6b 64 6f 77 6e 0a 20 20 64 65 6c 69 6d 69 74 65 72 73 2e 0a 0a 2a 20 30 2e ted.Markdown...delimiters...*.0.
96d00 39 2e 38 20 32 30 32 35 2d 30 33 2d 31 33 0a 0a 56 65 72 73 69 6f 6e 20 30 2e 39 2e 38 20 61 64 9.8.2025-03-13..Version.0.9.8.ad
96d20 64 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20 6e 65 77 20 47 65 6d 69 6e 69 2c 20 41 6e 74 68 72 ds.support.for.new.Gemini,.Anthr
96d40 6f 70 69 63 2c 20 4f 70 65 6e 41 49 2c 0a 50 65 72 70 6c 65 78 69 74 79 2c 20 61 6e 64 20 44 65 opic,.OpenAI,.Perplexity,.and.De
96d60 65 70 53 65 65 6b 20 6d 6f 64 65 6c 73 2c 20 69 6e 74 72 6f 64 75 63 65 73 20 4c 4c 4d 20 74 6f epSeek.models,.introduces.LLM.to
96d80 6f 6c 20 75 73 65 2f 66 75 6e 63 74 69 6f 6e 0a 63 61 6c 6c 69 6e 67 2c 20 61 20 72 65 64 65 73 ol.use/function.calling,.a.redes
96da0 69 67 6e 20 6f 66 20 7e 67 70 74 65 6c 2d 6d 65 6e 75 7e 2c 20 69 6e 63 6c 75 64 65 73 20 6e 65 ign.of.~gptel-menu~,.includes.ne
96dc0 77 20 63 75 73 74 6f 6d 69 7a 61 74 69 6f 6e 20 68 6f 6f 6b 73 2c 0a 64 72 79 2d 72 75 6e 20 6f w.customization.hooks,.dry-run.o
96de0 70 74 69 6f 6e 73 20 61 6e 64 20 72 65 66 69 6e 65 64 20 73 65 74 74 69 6e 67 73 2c 20 69 6d 70 ptions.and.refined.settings,.imp
96e00 72 6f 76 65 6d 65 6e 74 73 20 74 6f 20 74 68 65 20 72 65 77 72 69 74 65 0a 66 65 61 74 75 72 65 rovements.to.the.rewrite.feature
96e20 20 61 6e 64 20 63 6f 6e 74 72 6f 6c 20 6f 66 20 4c 4c 4d 20 22 72 65 61 73 6f 6e 69 6e 67 22 20 .and.control.of.LLM."reasoning".
96e40 63 6f 6e 74 65 6e 74 2e 0a 0a 2a 2a 20 42 72 65 61 6b 69 6e 67 20 63 68 61 6e 67 65 73 0a 0a 2d content...**.Breaking.changes..-
96e60 20 7e 67 65 6d 69 6e 69 2d 70 72 6f 7e 20 68 61 73 20 62 65 65 6e 20 72 65 6d 6f 76 65 64 20 66 .~gemini-pro~.has.been.removed.f
96e80 72 6f 6d 20 74 68 65 20 6c 69 73 74 20 6f 66 20 47 65 6d 69 6e 69 20 6d 6f 64 65 6c 73 2c 20 61 rom.the.list.of.Gemini.models,.a
96ea0 73 0a 20 20 74 68 69 73 20 6d 6f 64 65 6c 20 69 73 20 6e 6f 20 6c 6f 6e 67 65 72 20 73 75 70 70 s...this.model.is.no.longer.supp
96ec0 6f 72 74 65 64 20 62 79 20 74 68 65 20 47 65 6d 69 6e 69 20 41 50 49 2e 0a 0a 2d 20 53 65 6e 64 orted.by.the.Gemini.API...-.Send
96ee0 69 6e 67 20 61 6e 20 61 63 74 69 76 65 20 72 65 67 69 6f 6e 20 69 6e 20 4f 72 67 20 6d 6f 64 65 ing.an.active.region.in.Org.mode
96f00 20 77 69 6c 6c 20 6e 6f 77 20 61 70 70 6c 79 20 4f 72 67 0a 20 20 6d 6f 64 65 2d 73 70 65 63 69 .will.now.apply.Org...mode-speci
96f20 66 69 63 20 72 75 6c 65 73 20 74 6f 20 74 68 65 20 74 65 78 74 2c 20 73 75 63 68 20 61 73 20 62 fic.rules.to.the.text,.such.as.b
96f40 72 61 6e 63 68 69 6e 67 20 63 6f 6e 74 65 78 74 2e 0a 0a 2d 20 54 68 65 20 66 6f 6c 6c 6f 77 69 ranching.context...-.The.followi
96f60 6e 67 20 6f 62 73 6f 6c 65 74 65 20 76 61 72 69 61 62 6c 65 73 20 61 6e 64 20 66 75 6e 63 74 69 ng.obsolete.variables.and.functi
96f80 6f 6e 73 20 68 61 76 65 20 62 65 65 6e 20 72 65 6d 6f 76 65 64 3a 0a 20 20 2d 20 7e 67 70 74 65 ons.have.been.removed:...-.~gpte
96fa0 6c 2d 73 65 6e 64 2d 6d 65 6e 75 7e 3a 20 55 73 65 20 7e 67 70 74 65 6c 2d 6d 65 6e 75 7e 20 69 l-send-menu~:.Use.~gptel-menu~.i
96fc0 6e 73 74 65 61 64 2e 0a 20 20 2d 20 7e 67 70 74 65 6c 2d 68 6f 73 74 7e 3a 20 55 73 65 20 7e 67 nstead....-.~gptel-host~:.Use.~g
96fe0 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 7e 20 69 6e 73 74 65 61 64 2e 0a 20 20 2d 20 7e ptel-make-openai~.instead....-.~
97000 67 70 74 65 6c 2d 70 6c 61 79 62 61 63 6b 7e 3a 20 55 73 65 20 7e 67 70 74 65 6c 2d 73 74 72 65 gptel-playback~:.Use.~gptel-stre
97020 61 6d 7e 20 69 6e 73 74 65 61 64 2e 0a 20 20 2d 20 7e 67 70 74 65 6c 2d 2d 64 65 62 75 67 7e 3a am~.instead....-.~gptel--debug~:
97040 20 55 73 65 20 7e 67 70 74 65 6c 2d 6c 6f 67 2d 6c 65 76 65 6c 7e 20 69 6e 73 74 65 61 64 2e 0a .Use.~gptel-log-level~.instead..
97060 0a 2a 2a 20 4e 65 77 20 6d 6f 64 65 6c 73 20 61 6e 64 20 62 61 63 6b 65 6e 64 73 0a 0a 2d 20 41 .**.New.models.and.backends..-.A
97080 64 64 20 73 75 70 70 6f 72 74 20 66 6f 72 20 73 65 76 65 72 61 6c 20 6e 65 77 20 47 65 6d 69 6e dd.support.for.several.new.Gemin
970a0 69 20 6d 6f 64 65 6c 73 20 69 6e 63 6c 75 64 69 6e 67 0a 20 20 7e 67 65 6d 69 6e 69 2d 32 2e 30 i.models.including...~gemini-2.0
970c0 2d 66 6c 61 73 68 7e 2c 20 7e 67 65 6d 69 6e 69 2d 32 2e 30 2d 70 72 6f 2d 65 78 70 7e 20 61 6e -flash~,.~gemini-2.0-pro-exp~.an
970e0 64 0a 20 20 7e 67 65 6d 69 6e 69 2d 32 2e 30 2d 66 6c 61 73 68 2d 74 68 69 6e 6b 69 6e 67 2d 65 d...~gemini-2.0-flash-thinking-e
97100 78 70 7e 2c 20 61 6d 6f 6e 67 20 6f 74 68 65 72 73 2e 0a 0a 2d 20 41 64 64 20 73 75 70 70 6f 72 xp~,.among.others...-.Add.suppor
97120 74 20 66 6f 72 20 74 68 65 20 41 6e 74 68 72 6f 70 69 63 20 6d 6f 64 65 6c 20 7e 63 6c 61 75 64 t.for.the.Anthropic.model.~claud
97140 65 2d 33 2d 37 2d 73 6f 6e 6e 65 74 2d 32 30 32 35 30 32 31 39 7e 2c 0a 20 20 69 6e 63 6c 75 64 e-3-7-sonnet-20250219~,...includ
97160 69 6e 67 20 69 74 73 20 22 72 65 61 73 6f 6e 69 6e 67 22 20 6f 75 74 70 75 74 2e 0a 0a 2d 20 41 ing.its."reasoning".output...-.A
97180 64 64 20 73 75 70 70 6f 72 74 20 66 6f 72 20 4f 70 65 6e 41 49 27 73 20 7e 6f 31 7e 2c 20 7e 6f dd.support.for.OpenAI's.~o1~,.~o
971a0 33 2d 6d 69 6e 69 7e 20 61 6e 64 20 7e 67 70 74 2d 34 2e 35 2d 70 72 65 76 69 65 77 7e 0a 20 20 3-mini~.and.~gpt-4.5-preview~...
971c0 6d 6f 64 65 6c 73 2e 0a 0a 2d 20 41 64 64 20 73 75 70 70 6f 72 74 20 66 6f 72 20 50 65 72 70 6c models...-.Add.support.for.Perpl
971e0 65 78 69 74 79 2e 20 20 57 68 69 6c 65 20 67 70 74 65 6c 20 73 75 70 70 6f 72 74 65 64 20 50 65 exity...While.gptel.supported.Pe
97200 72 70 6c 65 78 69 74 79 20 69 6e 0a 20 20 65 61 72 6c 69 65 72 20 72 65 6c 65 61 73 65 73 20 62 rplexity.in...earlier.releases.b
97220 79 20 72 65 75 73 69 6e 67 20 69 74 73 20 4f 70 65 6e 41 49 20 73 75 70 70 6f 72 74 2c 20 74 68 y.reusing.its.OpenAI.support,.th
97240 65 72 65 20 69 73 20 6e 6f 77 20 66 69 72 73 74 0a 20 20 63 6c 61 73 73 20 73 75 70 70 6f 72 74 ere.is.now.first...class.support
97260 20 66 6f 72 20 74 68 65 20 50 65 72 70 6c 65 78 69 74 79 20 41 50 49 2c 20 69 6e 63 6c 75 64 69 .for.the.Perplexity.API,.includi
97280 6e 67 20 63 69 74 61 74 69 6f 6e 73 2e 0a 0a 2d 20 41 64 64 20 73 75 70 70 6f 72 74 20 66 6f 72 ng.citations...-.Add.support.for
972a0 20 44 65 65 70 53 65 65 6b 2e 20 20 57 68 69 6c 65 20 67 70 74 65 6c 20 73 75 70 70 6f 72 74 65 .DeepSeek...While.gptel.supporte
972c0 64 20 44 65 65 70 53 65 65 6b 20 69 6e 20 65 61 72 6c 69 65 72 0a 20 20 72 65 6c 65 61 73 65 73 d.DeepSeek.in.earlier...releases
972e0 20 62 79 20 72 65 75 73 69 6e 67 20 69 74 73 20 4f 70 65 6e 41 49 20 73 75 70 70 6f 72 74 2c 20 .by.reusing.its.OpenAI.support,.
97300 74 68 65 72 65 20 69 73 20 6e 6f 77 20 66 69 72 73 74 20 63 6c 61 73 73 0a 20 20 73 75 70 70 6f there.is.now.first.class...suppo
97320 72 74 20 66 6f 72 20 74 68 65 20 44 65 65 70 53 65 65 6b 20 41 50 49 2c 20 69 6e 63 6c 75 64 69 rt.for.the.DeepSeek.API,.includi
97340 6e 67 20 73 75 70 70 6f 72 74 20 66 6f 72 20 68 61 6e 64 6c 69 6e 67 0a 20 20 22 72 65 61 73 6f ng.support.for.handling..."reaso
97360 6e 69 6e 67 22 20 6f 75 74 70 75 74 2e 0a 0a 2a 2a 20 4e 65 77 20 66 65 61 74 75 72 65 73 20 61 ning".output...**.New.features.a
97380 6e 64 20 55 49 20 63 68 61 6e 67 65 73 0a 0a 2d 20 7e 67 70 74 65 6c 2d 72 65 77 72 69 74 65 7e nd.UI.changes..-.~gptel-rewrite~
973a0 20 6e 6f 77 20 73 75 70 70 6f 72 74 73 20 69 74 65 72 61 74 69 6e 67 20 6f 6e 20 72 65 73 70 6f .now.supports.iterating.on.respo
973c0 6e 73 65 73 2e 0a 0a 2d 20 67 70 74 65 6c 20 73 75 70 70 6f 72 74 73 20 74 68 65 20 61 62 69 6c nses...-.gptel.supports.the.abil
973e0 69 74 79 20 74 6f 20 73 69 6d 75 6c 61 74 65 2f 64 72 79 2d 72 75 6e 20 72 65 71 75 65 73 74 73 ity.to.simulate/dry-run.requests
97400 20 73 6f 20 79 6f 75 20 63 61 6e 0a 20 20 73 65 65 20 65 78 61 63 74 6c 79 20 77 68 61 74 20 77 .so.you.can...see.exactly.what.w
97420 69 6c 6c 20 62 65 20 73 65 6e 74 2e 20 20 54 68 69 73 20 70 61 79 6c 6f 61 64 20 70 72 65 76 69 ill.be.sent...This.payload.previ
97440 65 77 20 63 61 6e 20 6e 6f 77 20 62 65 0a 20 20 65 64 69 74 65 64 20 69 6e 20 70 6c 61 63 65 20 ew.can.now.be...edited.in.place.
97460 61 6e 64 20 74 68 65 20 72 65 71 75 65 73 74 20 63 6f 6e 74 69 6e 75 65 64 2e 0a 0a 2d 20 44 69 and.the.request.continued...-.Di
97480 72 65 63 74 6f 72 69 65 73 20 63 61 6e 20 6e 6f 77 20 62 65 20 61 64 64 65 64 20 74 6f 20 67 70 rectories.can.now.be.added.to.gp
974a0 74 65 6c 27 73 20 67 6c 6f 62 61 6c 20 63 6f 6e 74 65 78 74 2e 20 20 44 6f 69 6e 67 20 73 6f 0a tel's.global.context...Doing.so.
974c0 20 20 77 69 6c 6c 20 61 64 64 20 61 6c 6c 20 66 69 6c 65 73 20 69 6e 20 74 68 65 20 64 69 72 65 ..will.add.all.files.in.the.dire
974e0 63 74 6f 72 79 20 72 65 63 75 72 73 69 76 65 6c 79 2e 0a 0a 2d 20 22 4f 6e 65 73 68 6f 74 22 20 ctory.recursively...-."Oneshot".
97500 73 65 74 74 69 6e 67 73 3a 20 77 68 65 6e 20 75 73 69 6e 67 20 67 70 74 65 6c 27 73 20 54 72 61 settings:.when.using.gptel's.Tra
97520 6e 73 69 65 6e 74 20 6d 65 6e 75 73 2c 20 72 65 71 75 65 73 74 0a 20 20 70 61 72 61 6d 65 74 65 nsient.menus,.request...paramete
97540 72 73 2c 20 64 69 72 65 63 74 69 76 65 73 20 61 6e 64 20 74 6f 6f 6c 73 20 63 61 6e 20 6e 6f 77 rs,.directives.and.tools.can.now
97560 20 62 65 20 73 65 74 20 66 6f 72 20 74 68 65 20 6e 65 78 74 20 72 65 71 75 65 73 74 0a 20 20 6f .be.set.for.the.next.request...o
97580 6e 6c 79 20 69 6e 20 61 64 64 69 74 69 6f 6e 20 74 6f 20 67 6c 6f 62 61 6c 6c 79 20 61 63 72 6f nly.in.addition.to.globally.acro
975a0 73 73 20 74 68 65 20 45 6d 61 63 73 20 73 65 73 73 69 6f 6e 20 61 6e 64 0a 20 20 62 75 66 66 65 ss.the.Emacs.session.and...buffe
975c0 72 2d 6c 6f 63 61 6c 6c 79 2e 20 20 54 68 69 73 20 69 73 20 75 73 65 66 75 6c 20 66 6f 72 20 6d r-locally...This.is.useful.for.m
975e0 61 6b 69 6e 67 20 6f 6e 65 2d 6f 66 66 20 72 65 71 75 65 73 74 73 20 77 69 74 68 0a 20 20 64 69 aking.one-off.requests.with...di
97600 66 66 65 72 65 6e 74 20 73 65 74 74 69 6e 67 73 2e 0a 0a 2d 20 7e 67 70 74 65 6c 2d 6d 6f 64 65 fferent.settings...-.~gptel-mode
97620 7e 20 63 61 6e 20 6e 6f 77 20 62 65 20 75 73 65 64 20 69 6e 20 61 6c 6c 20 6d 6f 64 65 73 20 64 ~.can.now.be.used.in.all.modes.d
97640 65 72 69 76 65 64 20 66 72 6f 6d 20 7e 74 65 78 74 2d 6d 6f 64 65 7e 2e 0a 0a 2d 20 67 70 74 65 erived.from.~text-mode~...-.gpte
97660 6c 20 6e 6f 77 20 74 72 69 65 73 20 74 6f 20 68 61 6e 64 6c 65 20 4c 4c 4d 20 72 65 73 70 6f 6e l.now.tries.to.handle.LLM.respon
97680 73 65 73 20 74 68 61 74 20 61 72 65 20 69 6e 20 6d 69 78 65 64 0a 20 20 4f 72 67 2f 4d 61 72 6b ses.that.are.in.mixed...Org/Mark
976a0 64 6f 77 6e 20 6d 61 72 6b 75 70 20 63 6f 72 72 65 63 74 6c 79 2e 0a 0a 2d 20 41 64 64 20 7e 67 down.markup.correctly...-.Add.~g
976c0 70 74 65 6c 2d 6f 72 67 2d 63 6f 6e 76 65 72 74 2d 72 65 73 70 6f 6e 73 65 7e 20 74 6f 20 74 6f ptel-org-convert-response~.to.to
976e0 67 67 6c 65 20 74 68 65 20 61 75 74 6f 6d 61 74 69 63 20 63 6f 6e 76 65 72 73 69 6f 6e 0a 20 20 ggle.the.automatic.conversion...
97700 6f 66 20 28 70 6f 73 73 69 62 6c 79 29 20 4d 61 72 6b 64 6f 77 6e 2d 66 6f 72 6d 61 74 74 65 64 of.(possibly).Markdown-formatted
97720 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 73 20 74 6f 20 4f 72 67 20 6d 61 72 6b 75 70 20 77 68 65 .LLM.responses.to.Org.markup.whe
97740 72 65 0a 20 20 61 70 70 72 6f 70 72 69 61 74 65 2e 0a 0a 2d 20 59 6f 75 20 63 61 6e 20 6e 6f 77 re...appropriate...-.You.can.now
97760 20 6c 6f 6f 6b 20 75 70 20 72 65 67 69 73 74 65 72 65 64 20 67 70 74 65 6c 20 62 61 63 6b 65 6e .look.up.registered.gptel.backen
97780 64 73 20 75 73 69 6e 67 20 74 68 65 0a 20 20 7e 67 70 74 65 6c 2d 67 65 74 2d 62 61 63 6b 65 6e ds.using.the...~gptel-get-backen
977a0 64 7e 20 66 75 6e 63 74 69 6f 6e 2e 20 20 54 68 69 73 20 69 73 20 69 6e 74 65 6e 64 65 64 20 74 d~.function...This.is.intended.t
977c0 6f 20 6d 61 6b 65 20 73 63 72 69 70 74 69 6e 67 0a 20 20 61 6e 64 20 63 6f 6e 66 69 67 75 72 69 o.make.scripting...and.configuri
977e0 6e 67 20 67 70 74 65 6c 20 65 61 73 69 65 72 2e 20 20 7e 67 70 74 65 6c 2d 67 65 74 2d 62 61 63 ng.gptel.easier...~gptel-get-bac
97800 6b 65 6e 64 7e 20 69 73 20 61 20 67 65 6e 65 72 61 6c 69 7a 65 64 0a 20 20 76 61 72 69 61 62 6c kend~.is.a.generalized...variabl
97820 65 20 73 6f 20 79 6f 75 20 63 61 6e 20 28 75 6e 29 73 65 74 20 62 61 63 6b 65 6e 64 73 20 77 69 e.so.you.can.(un)set.backends.wi
97840 74 68 20 7e 73 65 74 66 7e 2e 0a 0a 2d 20 54 6f 6f 6c 20 75 73 65 3a 20 67 70 74 65 6c 20 6e 6f th.~setf~...-.Tool.use:.gptel.no
97860 77 20 73 75 70 70 6f 72 74 73 20 4c 4c 4d 20 74 6f 6f 6c 20 75 73 65 2c 20 6f 72 20 66 75 6e 63 w.supports.LLM.tool.use,.or.func
97880 74 69 6f 6e 20 63 61 6c 6c 69 6e 67 2e 0a 20 20 45 73 73 65 6e 74 69 61 6c 6c 79 20 79 6f 75 20 tion.calling....Essentially.you.
978a0 63 61 6e 20 65 71 75 69 70 20 74 68 65 20 4c 4c 4d 20 77 69 74 68 20 63 61 70 61 62 69 6c 69 74 can.equip.the.LLM.with.capabilit
978c0 69 65 73 20 28 73 75 63 68 20 61 73 0a 20 20 66 69 6c 65 73 79 73 74 65 6d 20 61 63 63 65 73 73 ies.(such.as...filesystem.access
978e0 2c 20 77 65 62 20 73 65 61 72 63 68 2c 20 63 6f 6e 74 72 6f 6c 20 6f 66 20 45 6d 61 63 73 20 6f ,.web.search,.control.of.Emacs.o
97900 72 20 69 6e 74 72 6f 73 70 65 63 74 69 6f 6e 20 6f 66 0a 20 20 45 6d 61 63 73 27 20 73 74 61 74 r.introspection.of...Emacs'.stat
97920 65 20 61 6e 64 20 6d 6f 72 65 29 20 74 68 61 74 20 69 74 20 63 61 6e 20 75 73 65 20 74 6f 20 70 e.and.more).that.it.can.use.to.p
97940 65 72 66 6f 72 6d 20 74 61 73 6b 73 20 66 6f 72 20 79 6f 75 2e 0a 20 20 67 70 74 65 6c 20 72 75 erform.tasks.for.you....gptel.ru
97960 6e 73 20 74 68 65 73 65 20 74 6f 6f 6c 73 20 75 73 69 6e 67 20 61 72 67 75 6d 65 6e 74 20 76 61 ns.these.tools.using.argument.va
97980 6c 75 65 73 20 70 72 6f 76 69 64 65 64 20 62 79 20 74 68 65 20 4c 4c 4d 73 2e 0a 20 20 54 68 69 lues.provided.by.the.LLMs....Thi
979a0 73 20 72 65 71 75 69 72 65 73 20 73 70 65 63 69 66 79 69 6e 67 20 74 6f 6f 6c 73 2c 20 77 68 69 s.requires.specifying.tools,.whi
979c0 63 68 20 61 72 65 20 65 6c 69 73 70 20 66 75 6e 63 74 69 6f 6e 73 20 77 69 74 68 20 70 6c 61 69 ch.are.elisp.functions.with.plai
979e0 6e 0a 20 20 74 65 78 74 20 64 65 73 63 72 69 70 74 69 6f 6e 73 20 6f 66 20 74 68 65 69 72 20 61 n...text.descriptions.of.their.a
97a00 72 67 75 6d 65 6e 74 73 20 61 6e 64 20 72 65 73 75 6c 74 73 2e 20 20 67 70 74 65 6c 20 64 6f 65 rguments.and.results...gptel.doe
97a20 73 20 6e 6f 74 0a 20 20 69 6e 63 6c 75 64 65 20 61 6e 79 20 74 6f 6f 6c 73 20 6f 75 74 20 6f 66 s.not...include.any.tools.out.of
97a40 20 74 68 65 20 62 6f 78 20 79 65 74 2e 0a 0a 2d 20 59 6f 75 20 63 61 6e 20 6c 6f 6f 6b 20 75 70 .the.box.yet...-.You.can.look.up
97a60 20 72 65 67 69 73 74 65 72 65 64 20 67 70 74 65 6c 20 74 6f 6f 6c 73 20 75 73 69 6e 67 20 74 68 .registered.gptel.tools.using.th
97a80 65 20 7e 67 70 74 65 6c 2d 67 65 74 2d 74 6f 6f 6c 7e 0a 20 20 66 75 6e 63 74 69 6f 6e 2e 20 20 e.~gptel-get-tool~...function...
97aa0 54 68 69 73 20 69 73 20 69 6e 74 65 6e 64 65 64 20 74 6f 20 6d 61 6b 65 20 73 63 72 69 70 74 69 This.is.intended.to.make.scripti
97ac0 6e 67 20 61 6e 64 20 63 6f 6e 66 69 67 75 72 69 6e 67 20 67 70 74 65 6c 0a 20 20 65 61 73 69 65 ng.and.configuring.gptel...easie
97ae0 72 2e 20 20 7e 67 70 74 65 6c 2d 67 65 74 2d 74 6f 6f 6c 7e 20 69 73 20 61 20 67 65 6e 65 72 61 r...~gptel-get-tool~.is.a.genera
97b00 6c 69 7a 65 64 20 76 61 72 69 61 62 6c 65 20 73 6f 20 79 6f 75 20 63 61 6e 0a 20 20 28 75 6e 29 lized.variable.so.you.can...(un)
97b20 73 65 74 20 74 6f 6f 6c 73 20 77 69 74 68 20 7e 73 65 74 66 7e 2e 0a 0a 2d 20 4e 65 77 20 68 6f set.tools.with.~setf~...-.New.ho
97b40 6f 6b 73 20 66 6f 72 20 63 75 73 74 6f 6d 69 7a 61 74 69 6f 6e 3a 0a 20 20 2b 20 7e 67 70 74 65 oks.for.customization:...+.~gpte
97b60 6c 2d 70 72 6f 6d 70 74 2d 66 69 6c 74 65 72 2d 68 6f 6f 6b 7e 20 72 75 6e 73 20 69 6e 20 61 20 l-prompt-filter-hook~.runs.in.a.
97b80 74 65 6d 70 6f 72 61 72 79 20 62 75 66 66 65 72 20 63 6f 6e 74 61 69 6e 69 6e 67 0a 20 20 20 20 temporary.buffer.containing.....
97ba0 74 68 65 20 74 65 78 74 20 74 6f 20 62 65 20 73 65 6e 74 2c 20 62 65 66 6f 72 65 20 74 68 65 20 the.text.to.be.sent,.before.the.
97bc0 66 75 6c 6c 20 71 75 65 72 79 20 69 73 20 63 72 65 61 74 65 64 2e 20 20 49 74 20 63 61 6e 20 62 full.query.is.created...It.can.b
97be0 65 0a 20 20 20 20 75 73 65 64 20 66 6f 72 20 61 72 62 69 74 72 61 72 79 20 74 65 78 74 20 74 72 e.....used.for.arbitrary.text.tr
97c00 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 73 20 74 6f 20 74 68 65 20 73 6f 75 72 63 65 20 74 65 78 74 ansformations.to.the.source.text
97c20 2e 0a 20 20 2b 20 7e 67 70 74 65 6c 2d 70 6f 73 74 2d 72 65 71 75 65 73 74 2d 68 6f 6f 6b 7e 20 ....+.~gptel-post-request-hook~.
97c40 72 75 6e 73 20 61 66 74 65 72 20 74 68 65 20 72 65 71 75 65 73 74 20 69 73 20 73 65 6e 74 2c 20 runs.after.the.request.is.sent,.
97c60 61 6e 64 0a 20 20 20 20 28 70 6f 73 73 69 62 6c 79 29 20 62 65 66 6f 72 65 20 61 6e 79 20 72 65 and.....(possibly).before.any.re
97c80 73 70 6f 6e 73 65 20 69 73 20 72 65 63 65 69 76 65 64 2e 20 20 54 68 69 73 20 69 73 20 69 6e 74 sponse.is.received...This.is.int
97ca0 65 6e 64 65 64 20 66 6f 72 0a 20 20 20 20 70 72 65 70 61 72 61 74 6f 72 79 2f 72 65 73 65 74 20 ended.for.....preparatory/reset.
97cc0 63 6f 64 65 2e 0a 20 20 2b 20 7e 67 70 74 65 6c 2d 70 6f 73 74 2d 72 65 77 72 69 74 65 2d 68 6f code....+.~gptel-post-rewrite-ho
97ce0 6f 6b 7e 20 72 75 6e 73 20 61 66 74 65 72 20 61 20 7e 67 70 74 65 6c 2d 72 65 77 72 69 74 65 7e ok~.runs.after.a.~gptel-rewrite~
97d00 20 72 65 71 75 65 73 74 20 69 73 0a 20 20 20 20 73 75 63 63 65 73 73 66 75 6c 6c 79 20 61 6e 64 .request.is.....successfully.and
97d20 20 66 75 6c 6c 79 20 72 65 63 65 69 76 65 64 2e 0a 0a 2d 20 7e 67 70 74 65 6c 2d 6d 65 6e 75 7e .fully.received...-.~gptel-menu~
97d40 20 68 61 73 20 62 65 65 6e 20 72 65 64 65 73 69 67 6e 65 64 2e 20 20 49 74 20 6e 6f 77 20 73 68 .has.been.redesigned...It.now.sh
97d60 6f 77 73 20 61 20 76 65 72 62 6f 73 65 0a 20 20 64 65 73 63 72 69 70 74 69 6f 6e 20 6f 66 20 77 ows.a.verbose...description.of.w
97d80 68 61 74 20 77 69 6c 6c 20 62 65 20 73 65 6e 74 20 61 6e 64 20 77 68 65 72 65 20 74 68 65 20 6f hat.will.be.sent.and.where.the.o
97da0 75 74 70 75 74 20 77 69 6c 6c 20 67 6f 2e 20 20 54 68 69 73 0a 20 20 69 73 20 69 6e 74 65 6e 64 utput.will.go...This...is.intend
97dc0 65 64 20 74 6f 20 70 72 6f 76 69 64 65 20 63 6c 61 72 69 74 79 20 6f 6e 20 67 70 74 65 6c 27 73 ed.to.provide.clarity.on.gptel's
97de0 20 64 65 66 61 75 6c 74 20 70 72 6f 6d 70 74 69 6e 67 0a 20 20 62 65 68 61 76 69 6f 72 2c 20 61 .default.prompting...behavior,.a
97e00 73 20 77 65 6c 6c 20 61 73 20 74 68 65 20 65 66 66 65 63 74 20 6f 66 20 74 68 65 20 76 61 72 69 s.well.as.the.effect.of.the.vari
97e20 6f 75 73 20 70 72 6f 6d 70 74 2f 72 65 73 70 6f 6e 73 65 0a 20 20 72 65 64 69 72 65 63 74 69 6f ous.prompt/response...redirectio
97e40 6e 20 69 74 20 70 72 6f 76 69 64 65 73 2e 20 20 49 6e 63 6f 6d 70 61 74 69 62 6c 65 20 63 6f 6d n.it.provides...Incompatible.com
97e60 62 69 6e 61 74 69 6f 6e 73 20 6f 66 20 6f 70 74 69 6f 6e 73 20 61 72 65 0a 20 20 6e 6f 77 20 64 binations.of.options.are...now.d
97e80 69 73 61 6c 6c 6f 77 65 64 2e 0a 0a 2d 20 54 68 65 20 73 70 61 63 69 6e 67 20 62 65 74 77 65 65 isallowed...-.The.spacing.betwee
97ea0 6e 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20 70 72 6f 6d 70 74 20 61 6e 64 20 74 68 65 20 n.the.end.of.the.prompt.and.the.
97ec0 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20 74 68 65 0a 20 20 72 65 73 70 6f 6e 73 65 20 69 6e 20 62 beginning.of.the...response.in.b
97ee0 75 66 66 65 72 73 20 69 73 20 6e 6f 77 20 63 75 73 74 6f 6d 69 7a 61 62 6c 65 20 76 69 61 0a 20 uffers.is.now.customizable.via..
97f00 20 7e 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 73 65 70 61 72 61 74 6f 72 7e 2c 20 61 6e 64 .~gptel-response-separator~,.and
97f20 20 63 61 6e 20 62 65 20 61 6e 79 20 73 74 72 69 6e 67 2e 0a 0a 2d 20 7e 67 70 74 65 6c 2d 63 6f .can.be.any.string...-.~gptel-co
97f40 6e 74 65 78 74 2d 72 65 6d 6f 76 65 2d 61 6c 6c 7e 20 69 73 20 6e 6f 77 20 61 6e 20 69 6e 74 65 ntext-remove-all~.is.now.an.inte
97f60 72 61 63 74 69 76 65 20 63 6f 6d 6d 61 6e 64 2e 0a 0a 2d 20 67 70 74 65 6c 20 6e 6f 77 20 68 61 ractive.command...-.gptel.now.ha
97f80 6e 64 6c 65 73 20 22 72 65 61 73 6f 6e 69 6e 67 22 20 63 6f 6e 74 65 6e 74 20 70 72 6f 64 75 63 ndles."reasoning".content.produc
97fa0 65 64 20 62 79 20 4c 4c 4d 73 2e 20 20 53 6f 6d 65 20 4c 4c 4d 73 0a 20 20 69 6e 63 6c 75 64 65 ed.by.LLMs...Some.LLMs...include
97fc0 20 69 6e 20 74 68 65 69 72 20 72 65 73 70 6f 6e 73 65 20 61 20 22 74 68 69 6e 6b 69 6e 67 22 20 .in.their.response.a."thinking".
97fe0 6f 72 20 22 72 65 61 73 6f 6e 69 6e 67 22 20 73 65 63 74 69 6f 6e 2e 20 20 54 68 69 73 0a 20 20 or."reasoning".section...This...
98000 74 65 78 74 20 69 6d 70 72 6f 76 65 73 20 74 68 65 20 71 75 61 6c 69 74 79 20 6f 66 20 74 68 65 text.improves.the.quality.of.the
98020 20 4c 4c 4d e2 80 99 73 20 66 69 6e 61 6c 20 6f 75 74 70 75 74 2c 20 62 75 74 20 6d 61 79 20 6e .LLM...s.final.output,.but.may.n
98040 6f 74 20 62 65 0a 20 20 69 6e 74 65 72 65 73 74 69 6e 67 20 74 6f 20 79 6f 75 20 62 79 20 69 74 ot.be...interesting.to.you.by.it
98060 73 65 6c 66 2e 20 20 54 68 65 20 6e 65 77 20 75 73 65 72 20 6f 70 74 69 6f 6e 0a 20 20 7e 67 70 self...The.new.user.option...~gp
98080 74 65 6c 2d 69 6e 63 6c 75 64 65 2d 72 65 61 73 6f 6e 69 6e 67 7e 20 63 6f 6e 74 72 6f 6c 73 20 tel-include-reasoning~.controls.
980a0 77 68 65 74 68 65 72 20 61 6e 64 20 68 6f 77 20 67 70 74 65 6c 20 64 69 73 70 6c 61 79 73 0a 20 whether.and.how.gptel.displays..
980c0 20 74 68 69 73 20 63 6f 6e 74 65 6e 74 2e 0a 0a 2d 20 28 41 6e 74 68 72 6f 70 69 63 20 41 50 49 .this.content...-.(Anthropic.API
980e0 20 6f 6e 6c 79 29 20 53 6f 6d 65 20 4c 4c 4d 20 62 61 63 6b 65 6e 64 73 20 63 61 6e 20 63 61 63 .only).Some.LLM.backends.can.cac
98100 68 65 20 63 6f 6e 74 65 6e 74 20 73 65 6e 74 20 74 6f 20 69 74 0a 20 20 62 79 20 67 70 74 65 6c he.content.sent.to.it...by.gptel
98120 2c 20 73 6f 20 74 68 61 74 20 6f 6e 6c 79 20 74 68 65 20 6e 65 77 6c 79 20 69 6e 63 6c 75 64 65 ,.so.that.only.the.newly.include
98140 64 20 70 61 72 74 20 6f 66 20 74 68 65 20 74 65 78 74 20 6e 65 65 64 73 20 74 6f 0a 20 20 62 65 d.part.of.the.text.needs.to...be
98160 20 70 72 6f 63 65 73 73 65 64 20 6f 6e 20 73 75 62 73 65 71 75 65 6e 74 20 63 6f 6e 76 65 72 73 .processed.on.subsequent.convers
98180 61 74 69 6f 6e 20 74 75 72 6e 73 2e 20 20 54 68 69 73 20 72 65 73 75 6c 74 73 20 69 6e 0a 20 20 ation.turns...This.results.in...
981a0 66 61 73 74 65 72 20 61 6e 64 20 73 69 67 6e 69 66 69 63 61 6e 74 6c 79 20 63 68 65 61 70 65 72 faster.and.significantly.cheaper
981c0 20 70 72 6f 63 65 73 73 69 6e 67 2e 20 54 68 65 20 6e 65 77 20 75 73 65 72 20 6f 70 74 69 6f 6e .processing..The.new.user.option
981e0 0a 20 20 7e 67 70 74 65 6c 2d 63 61 63 68 65 7e 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 ...~gptel-cache~.can.be.used.to.
98200 73 70 65 63 69 66 79 20 63 61 63 68 69 6e 67 20 70 72 65 66 65 72 65 6e 63 65 73 20 66 6f 72 0a specify.caching.preferences.for.
98220 20 20 70 72 6f 6d 70 74 73 2c 20 74 68 65 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 20 61 6e ..prompts,.the.system.message.an
98240 64 2f 6f 72 20 74 6f 6f 6c 20 64 65 66 69 6e 69 74 69 6f 6e 73 2e 20 20 54 68 69 73 20 69 73 0a d/or.tool.definitions...This.is.
98260 20 20 73 75 70 70 6f 72 74 65 64 20 6f 6e 6c 79 20 62 79 20 74 68 65 20 41 6e 74 68 72 6f 70 69 ..supported.only.by.the.Anthropi
98280 63 20 41 50 49 20 72 69 67 68 74 20 6e 6f 77 2e 0a 0a 2d 20 28 4f 72 67 20 6d 6f 64 65 29 20 4f c.API.right.now...-.(Org.mode).O
982a0 72 67 20 70 72 6f 70 65 72 74 79 20 64 72 61 77 65 72 73 20 61 72 65 20 6e 6f 77 20 73 74 72 69 rg.property.drawers.are.now.stri
982c0 70 70 65 64 20 66 72 6f 6d 20 74 68 65 20 70 72 6f 6d 70 74 0a 20 20 74 65 78 74 20 62 65 66 6f pped.from.the.prompt...text.befo
982e0 72 65 20 73 65 6e 64 69 6e 67 20 71 75 65 72 69 65 73 2e 20 20 59 6f 75 20 63 61 6e 20 63 6f 6e re.sending.queries...You.can.con
98300 74 72 6f 6c 20 74 68 69 73 20 62 65 68 61 76 69 6f 72 20 6f 72 0a 20 20 73 70 65 63 69 66 79 20 trol.this.behavior.or...specify.
98320 61 64 64 69 74 69 6f 6e 61 6c 20 4f 72 67 20 65 6c 65 6d 65 6e 74 73 20 74 6f 20 69 67 6e 6f 72 additional.Org.elements.to.ignor
98340 65 20 76 69 61 0a 20 20 7e 67 70 74 65 6c 2d 6f 72 67 2d 69 67 6e 6f 72 65 2d 65 6c 65 6d 65 6e e.via...~gptel-org-ignore-elemen
98360 74 73 7e 2e 20 20 28 46 6f 72 20 6d 6f 72 65 20 63 6f 6d 70 6c 65 78 20 70 72 65 2d 70 72 6f 63 ts~...(For.more.complex.pre-proc
98380 65 73 73 69 6e 67 20 79 6f 75 0a 20 20 63 61 6e 20 75 73 65 20 7e 67 70 74 65 6c 2d 70 72 6f 6d essing.you...can.use.~gptel-prom
983a0 70 74 2d 66 69 6c 74 65 72 2d 68 6f 6f 6b 7e 2e 29 0a 0a 2a 2a 20 4e 6f 74 61 62 6c 65 20 42 75 pt-filter-hook~.)..**.Notable.Bu
983c0 67 20 66 69 78 65 73 0a 0a 2d 20 46 69 78 20 72 65 73 70 6f 6e 73 65 20 6d 69 78 2d 75 70 20 77 g.fixes..-.Fix.response.mix-up.w
983e0 68 65 6e 20 72 75 6e 6e 69 6e 67 20 63 6f 6e 63 75 72 72 65 6e 74 20 72 65 71 75 65 73 74 73 20 hen.running.concurrent.requests.
98400 69 6e 20 4f 72 67 20 6d 6f 64 65 0a 20 20 62 75 66 66 65 72 73 2e 0a 2d 20 67 70 74 65 6c 20 6e in.Org.mode...buffers..-.gptel.n
98420 6f 77 20 77 6f 72 6b 73 20 61 72 6f 75 6e 64 20 61 6e 20 4f 72 67 20 66 6f 6e 74 69 66 69 63 61 ow.works.around.an.Org.fontifica
98440 74 69 6f 6e 20 62 75 67 20 77 68 65 72 65 20 73 74 72 65 61 6d 69 6e 67 0a 20 20 72 65 73 70 6f tion.bug.where.streaming...respo
98460 6e 73 65 73 20 69 6e 20 4f 72 67 20 6d 6f 64 65 20 62 75 66 66 65 72 73 20 73 6f 6d 65 74 69 6d nses.in.Org.mode.buffers.sometim
98480 65 73 20 63 61 75 73 65 64 20 73 6f 75 72 63 65 20 63 6f 64 65 20 62 6c 6f 63 6b 73 20 74 6f 0a es.caused.source.code.blocks.to.
984a0 20 20 72 65 6d 61 69 6e 20 75 6e 66 6f 6e 74 69 66 69 65 64 2e 0a 0a 2a 20 30 2e 39 2e 37 20 32 ..remain.unfontified...*.0.9.7.2
984c0 30 32 34 2d 31 32 2d 30 34 0a 0a 56 65 72 73 69 6f 6e 20 30 2e 39 2e 37 20 61 64 64 73 20 64 79 024-12-04..Version.0.9.7.adds.dy
984e0 6e 61 6d 69 63 20 64 69 72 65 63 74 69 76 65 73 2c 20 61 20 62 65 74 74 65 72 20 72 65 77 72 69 namic.directives,.a.better.rewri
98500 74 65 20 69 6e 74 65 72 66 61 63 65 2c 0a 73 74 72 65 61 6d 69 6e 67 20 73 75 70 70 6f 72 74 20 te.interface,.streaming.support.
98520 74 6f 20 74 68 65 20 67 70 74 65 6c 20 72 65 71 75 65 73 74 20 41 50 49 2c 20 61 6e 64 20 6d 6f to.the.gptel.request.API,.and.mo
98540 72 65 20 66 6c 65 78 69 62 6c 65 0a 6d 6f 64 65 6c 2f 62 61 63 6b 65 6e 64 20 63 6f 6e 66 69 67 re.flexible.model/backend.config
98560 75 72 61 74 69 6f 6e 2e 0a 0a 2a 2a 20 42 72 65 61 6b 69 6e 67 20 63 68 61 6e 67 65 73 0a 7e 67 uration...**.Breaking.changes.~g
98580 70 74 65 6c 2d 72 65 77 72 69 74 65 2d 6d 65 6e 75 7e 20 68 61 73 20 62 65 65 6e 20 6f 62 73 6f ptel-rewrite-menu~.has.been.obso
985a0 6c 65 74 65 64 2e 20 20 55 73 65 20 7e 67 70 74 65 6c 2d 72 65 77 72 69 74 65 7e 20 69 6e 73 74 leted...Use.~gptel-rewrite~.inst
985c0 65 61 64 2e 0a 0a 2a 2a 20 42 61 63 6b 65 6e 64 73 0a 2d 20 41 64 64 20 73 75 70 70 6f 72 74 20 ead...**.Backends.-.Add.support.
985e0 66 6f 72 20 4f 70 65 6e 41 49 27 73 20 7e 6f 31 2d 70 72 65 76 69 65 77 7e 20 61 6e 64 20 7e 6f for.OpenAI's.~o1-preview~.and.~o
98600 31 2d 6d 69 6e 69 7e 2e 0a 0a 2d 20 41 64 64 20 73 75 70 70 6f 72 74 20 66 6f 72 20 41 6e 74 68 1-mini~...-.Add.support.for.Anth
98620 72 6f 70 69 63 27 73 20 43 6c 61 75 64 65 20 33 2e 35 20 48 61 69 6b 75 2e 0a 0a 2d 20 41 64 64 ropic's.Claude.3.5.Haiku...-.Add
98640 20 73 75 70 70 6f 72 74 20 66 6f 72 20 78 41 49 2e 0a 0a 2d 20 41 64 64 20 73 75 70 70 6f 72 74 .support.for.xAI...-.Add.support
98660 20 66 6f 72 20 4e 6f 76 69 74 61 20 41 49 2e 0a 0a 2a 2a 20 4e 65 77 20 66 65 61 74 75 72 65 73 .for.Novita.AI...**.New.features
98680 20 61 6e 64 20 55 49 20 63 68 61 6e 67 65 73 0a 0a 2d 20 67 70 74 65 6c 27 73 20 64 69 72 65 63 .and.UI.changes..-.gptel's.direc
986a0 74 69 76 65 73 20 28 73 65 65 20 7e 67 70 74 65 6c 2d 64 69 72 65 63 74 69 76 65 73 7e 29 20 63 tives.(see.~gptel-directives~).c
986c0 61 6e 20 6e 6f 77 20 62 65 20 64 79 6e 61 6d 69 63 2c 20 61 6e 64 0a 20 20 69 6e 63 6c 75 64 65 an.now.be.dynamic,.and...include
986e0 20 6d 6f 72 65 20 74 68 61 6e 20 74 68 65 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 2e 20 20 .more.than.the.system.message...
98700 59 6f 75 20 63 61 6e 20 22 70 72 65 2d 66 69 6c 6c 22 20 61 0a 20 20 63 6f 6e 76 65 72 73 61 74 You.can."pre-fill".a...conversat
98720 69 6f 6e 20 77 69 74 68 20 63 61 6e 6e 65 64 20 75 73 65 72 2f 4c 4c 4d 20 6d 65 73 73 61 67 65 ion.with.canned.user/LLM.message
98740 73 2e 20 20 44 69 72 65 63 74 69 76 65 73 20 63 61 6e 20 6e 6f 77 20 62 65 0a 20 20 66 75 6e 63 s...Directives.can.now.be...func
98760 74 69 6f 6e 73 20 74 68 61 74 20 64 79 6e 61 6d 69 63 61 6c 6c 79 20 67 65 6e 65 72 61 74 65 20 tions.that.dynamically.generate.
98780 74 68 65 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 20 61 6e 64 0a 20 20 63 6f 6e 76 65 72 73 the.system.message.and...convers
987a0 61 74 69 6f 6e 20 68 69 73 74 6f 72 79 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20 63 75 72 72 65 ation.history.based.on.the.curre
987c0 6e 74 20 63 6f 6e 74 65 78 74 2e 20 20 54 68 69 73 20 70 61 76 65 73 20 74 68 65 0a 20 20 77 61 nt.context...This.paves.the...wa
987e0 79 20 66 6f 72 20 66 75 6c 6c 79 20 66 6c 65 78 69 62 6c 65 20 74 61 73 6b 2d 73 70 65 63 69 66 y.for.fully.flexible.task-specif
98800 69 63 20 74 65 6d 70 6c 61 74 65 73 2c 20 77 68 69 63 68 20 74 68 65 20 55 49 20 64 6f 65 73 0a ic.templates,.which.the.UI.does.
98820 20 20 6e 6f 74 20 79 65 74 20 73 75 70 70 6f 72 74 20 69 6e 20 66 75 6c 6c 2e 0a 0a 2d 20 67 70 ..not.yet.support.in.full...-.gp
98840 74 65 6c 27 73 20 72 65 77 72 69 74 65 20 69 6e 74 65 72 66 61 63 65 20 68 61 73 20 62 65 65 6e tel's.rewrite.interface.has.been
98860 20 72 65 77 6f 72 6b 65 64 2e 20 20 49 66 20 75 73 69 6e 67 20 61 20 73 74 72 65 61 6d 69 6e 67 .reworked...If.using.a.streaming
98880 0a 20 20 65 6e 64 70 6f 69 6e 74 2c 20 74 68 65 20 72 65 77 72 69 74 74 65 6e 20 74 65 78 74 20 ...endpoint,.the.rewritten.text.
988a0 69 73 20 73 74 72 65 61 6d 65 64 20 69 6e 20 61 73 20 61 20 70 72 65 76 69 65 77 20 70 6c 61 63 is.streamed.in.as.a.preview.plac
988c0 65 64 20 6f 76 65 72 0a 20 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 2e 20 20 49 6e 20 61 6c 6c 20 ed.over...the.original...In.all.
988e0 63 61 73 65 73 2c 20 63 6c 69 63 6b 69 6e 67 20 6f 6e 20 74 68 65 20 70 72 65 76 69 65 77 20 62 cases,.clicking.on.the.preview.b
98900 72 69 6e 67 73 20 75 70 20 61 0a 20 20 64 69 73 70 61 74 63 68 20 79 6f 75 20 63 61 6e 20 75 73 rings.up.a...dispatch.you.can.us
98920 65 20 74 6f 20 65 61 73 69 6c 79 20 64 69 66 66 2c 20 65 64 69 66 66 2c 20 6d 65 72 67 65 2c 20 e.to.easily.diff,.ediff,.merge,.
98940 61 63 63 65 70 74 20 6f 72 20 72 65 6a 65 63 74 0a 20 20 74 68 65 20 63 68 61 6e 67 65 73 20 28 accept.or.reject...the.changes.(
98960 34 61 65 39 63 31 62 32 29 2c 20 61 6e 64 20 79 6f 75 20 63 61 6e 20 63 6f 6e 66 69 67 75 72 65 4ae9c1b2),.and.you.can.configure
98980 20 67 70 74 65 6c 20 74 6f 20 72 75 6e 20 6f 6e 65 20 6f 66 0a 20 20 74 68 65 73 65 20 61 63 74 .gptel.to.run.one.of...these.act
989a0 69 6f 6e 73 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2e 20 20 53 65 65 20 74 68 65 20 52 45 41 ions.automatically...See.the.REA
989c0 44 4d 45 20 66 6f 72 20 65 78 61 6d 70 6c 65 73 2e 0a 0a 2d 20 7e 67 70 74 65 6c 2d 61 62 6f 72 DME.for.examples...-.~gptel-abor
989e0 74 7e 2c 20 75 73 65 64 20 74 6f 20 63 61 6e 63 65 6c 20 72 65 71 75 65 73 74 73 20 69 6e 20 70 t~,.used.to.cancel.requests.in.p
98a00 72 6f 67 72 65 73 73 2c 20 6e 6f 77 20 77 6f 72 6b 73 20 61 63 72 6f 73 73 0a 20 20 74 68 65 20 rogress,.now.works.across...the.
98a20 62 6f 61 72 64 2c 20 69 6e 63 6c 75 64 69 6e 67 20 77 68 65 6e 20 6e 6f 74 20 75 73 69 6e 67 20 board,.including.when.not.using.
98a40 43 75 72 6c 20 6f 72 20 77 69 74 68 20 7e 67 70 74 65 6c 2d 72 65 77 72 69 74 65 7e 2e 0a 0a 2d Curl.or.with.~gptel-rewrite~...-
98a60 20 54 68 65 20 7e 67 70 74 65 6c 2d 72 65 71 75 65 73 74 7e 20 41 50 49 20 6e 6f 77 20 65 78 70 .The.~gptel-request~.API.now.exp
98a80 6c 69 63 69 74 6c 79 20 73 75 70 70 6f 72 74 73 20 73 74 72 65 61 6d 69 6e 67 20 72 65 73 70 6f licitly.supports.streaming.respo
98aa0 6e 73 65 73 0a 20 20 2c 20 6d 61 6b 69 6e 67 20 69 74 20 65 61 73 79 20 74 6f 20 77 72 69 74 65 nses...,.making.it.easy.to.write
98ac0 20 79 6f 75 72 20 6f 77 6e 20 68 65 6c 70 65 72 73 20 6f 72 20 66 65 61 74 75 72 65 73 20 77 69 .your.own.helpers.or.features.wi
98ae0 74 68 0a 20 20 73 74 72 65 61 6d 69 6e 67 20 73 75 70 70 6f 72 74 2e 20 20 54 68 65 20 41 50 49 th...streaming.support...The.API
98b00 20 61 6c 73 6f 20 73 75 70 70 6f 72 74 73 20 7e 67 70 74 65 6c 2d 61 62 6f 72 74 7e 20 74 6f 20 .also.supports.~gptel-abort~.to.
98b20 73 74 6f 70 20 61 6e 64 0a 20 20 63 6c 65 61 6e 20 75 70 20 72 65 73 70 6f 6e 73 65 73 2e 0a 0a stop.and...clean.up.responses...
98b40 2d 20 59 6f 75 20 63 61 6e 20 6e 6f 77 20 75 6e 73 65 74 20 74 68 65 20 73 79 73 74 65 6d 20 6d -.You.can.now.unset.the.system.m
98b60 65 73 73 61 67 65 20 2d 2d 20 64 69 66 66 65 72 65 6e 74 20 66 72 6f 6d 20 73 65 74 74 69 6e 67 essage.--.different.from.setting
98b80 20 69 74 20 74 6f 0a 20 20 61 6e 20 65 6d 70 74 79 20 73 74 72 69 6e 67 2e 20 20 67 70 74 65 6c .it.to...an.empty.string...gptel
98ba0 20 77 69 6c 6c 20 61 6c 73 6f 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 64 69 73 61 62 6c 65 .will.also.automatically.disable
98bc0 20 74 68 65 20 73 79 73 74 65 6d 0a 20 20 6d 65 73 73 61 67 65 20 77 68 65 6e 20 75 73 69 6e 67 .the.system...message.when.using
98be0 20 6d 6f 64 65 6c 73 20 74 68 61 74 20 64 6f 6e 27 74 20 73 75 70 70 6f 72 74 20 69 74 2e 0a 0a .models.that.don't.support.it...
98c00 2d 20 53 75 70 70 6f 72 74 20 66 6f 72 20 69 6e 63 6c 75 64 69 6e 67 20 50 44 46 73 20 77 69 74 -.Support.for.including.PDFs.wit
98c20 68 20 72 65 71 75 65 73 74 73 20 74 6f 20 41 6e 74 68 72 6f 70 69 63 20 6d 6f 64 65 6c 73 20 68 h.requests.to.Anthropic.models.h
98c40 61 73 0a 20 20 62 65 65 6e 20 61 64 64 65 64 2e 20 20 28 54 68 65 73 65 20 71 75 65 72 69 65 73 as...been.added...(These.queries
98c60 20 61 72 65 20 63 61 63 68 65 64 2c 20 73 6f 20 79 6f 75 20 70 61 79 20 6f 6e 6c 79 20 31 30 25 .are.cached,.so.you.pay.only.10%
98c80 20 6f 66 20 74 68 65 0a 20 20 74 6f 6b 65 6e 20 63 6f 73 74 20 6f 66 20 74 68 65 20 50 44 46 20 .of.the...token.cost.of.the.PDF.
98ca0 69 6e 20 66 6f 6c 6c 6f 77 2d 75 70 20 71 75 65 72 69 65 73 2e 29 20 20 4e 6f 74 65 20 74 68 61 in.follow-up.queries.)..Note.tha
98cc0 74 20 64 6f 63 75 6d 65 6e 74 0a 20 20 73 75 70 70 6f 72 74 20 28 50 44 46 73 20 65 74 63 29 20 t.document...support.(PDFs.etc).
98ce0 66 6f 72 20 47 65 6d 69 6e 69 20 6d 6f 64 65 6c 73 20 68 61 73 20 62 65 65 6e 20 61 76 61 69 6c for.Gemini.models.has.been.avail
98d00 61 62 6c 65 20 73 69 6e 63 65 0a 20 20 76 30 2e 39 2e 35 2e 0a 0a 2d 20 57 68 65 6e 20 64 65 66 able.since...v0.9.5...-.When.def
98d20 69 6e 69 6e 67 20 61 20 67 70 74 65 6c 20 6d 6f 64 65 6c 20 6f 72 20 62 61 63 6b 65 6e 64 2c 20 ining.a.gptel.model.or.backend,.
98d40 79 6f 75 20 63 61 6e 20 73 70 65 63 69 66 79 20 61 72 62 69 74 72 61 72 79 0a 20 20 70 61 72 61 you.can.specify.arbitrary...para
98d60 6d 65 74 65 72 73 20 74 6f 20 62 65 20 73 65 6e 74 20 77 69 74 68 20 65 61 63 68 20 72 65 71 75 meters.to.be.sent.with.each.requ
98d80 65 73 74 2e 20 20 54 68 69 73 20 69 6e 63 6c 75 64 65 73 20 74 68 65 20 28 6d 61 6e 79 29 0a 20 est...This.includes.the.(many)..
98da0 20 41 50 49 20 6f 70 74 69 6f 6e 73 20 61 63 72 6f 73 73 20 61 6c 6c 20 41 50 49 73 20 74 68 61 .API.options.across.all.APIs.tha
98dc0 74 20 67 70 74 65 6c 20 64 6f 65 73 20 6e 6f 74 20 79 65 74 20 70 72 6f 76 69 64 65 20 65 78 70 t.gptel.does.not.yet.provide.exp
98de0 6c 69 63 69 74 0a 20 20 73 75 70 70 6f 72 74 20 66 6f 72 2e 0a 0a 2d 20 4e 65 77 20 74 72 61 6e licit...support.for...-.New.tran
98e00 73 69 65 6e 74 20 63 6f 6d 6d 61 6e 64 20 6f 70 74 69 6f 6e 20 74 6f 20 65 61 73 69 6c 79 20 72 sient.command.option.to.easily.r
98e20 65 6d 6f 76 65 20 61 6c 6c 20 69 6e 63 6c 75 64 65 64 20 63 6f 6e 74 65 78 74 0a 20 20 63 68 75 emove.all.included.context...chu
98e40 6e 6b 73 2e 0a 0a 2a 2a 20 4e 6f 74 61 62 6c 65 20 42 75 67 20 66 69 78 65 73 0a 2d 20 50 72 65 nks...**.Notable.Bug.fixes.-.Pre
98e60 73 73 69 6e 67 20 7e 52 45 54 7e 20 6f 6e 20 69 6e 63 6c 75 64 65 64 20 66 69 6c 65 73 20 69 6e ssing.~RET~.on.included.files.in
98e80 20 74 68 65 20 63 6f 6e 74 65 78 74 20 69 6e 73 70 65 63 74 6f 72 20 62 75 66 66 65 72 20 6e 6f .the.context.inspector.buffer.no
98ea0 77 0a 20 20 70 6f 70 73 20 75 70 20 74 68 65 20 66 69 6c 65 20 63 6f 72 72 65 63 74 6c 79 2e 0a w...pops.up.the.file.correctly..
98ec0 2d 20 41 50 49 20 6b 65 79 73 20 61 72 65 20 73 74 72 69 70 70 65 64 20 6f 66 20 77 68 69 74 65 -.API.keys.are.stripped.of.white
98ee0 73 70 61 63 65 20 62 65 66 6f 72 65 20 73 65 6e 64 69 6e 67 2e 0a 2d 20 4d 75 6c 74 69 70 6c 65 space.before.sending..-.Multiple
98f00 20 55 49 2c 20 62 61 63 6b 65 6e 64 20 61 6e 64 20 70 72 6f 6d 70 74 20 63 6f 6e 73 74 72 75 63 .UI,.backend.and.prompt.construc
98f20 74 69 6f 6e 20 62 75 67 73 20 68 61 76 65 20 62 65 65 6e 20 66 69 78 65 64 2e 0a 00 00 00 00 00 tion.bugs.have.been.fixed.......
98f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
98f60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
98f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
98fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
98fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
98fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
99000 67 70 74 65 6c 2d 30 2e 39 2e 39 2f 67 70 74 65 6c 2d 72 65 77 72 69 74 65 2e 65 6c 00 00 00 00 gptel-0.9.9/gptel-rewrite.el....
99020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
99040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
99060 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
99080 30 31 30 31 32 37 33 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 34 34 32 33 00 20 30 00 00 00 0101273.00000000000.014423..0...
990a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
990c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
990e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
99100 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...................
99120 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...................
99140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
99160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
99180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
991a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
991c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
991e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
99200 3b 3b 3b 20 67 70 74 65 6c 2d 72 65 77 72 69 74 65 2e 65 6c 20 2d 2d 2d 20 52 65 66 61 63 74 6f ;;;.gptel-rewrite.el.---.Refacto
99220 72 69 6e 67 20 66 75 6e 63 74 69 6f 6e 73 20 66 6f 72 20 67 70 74 65 6c 20 20 2d 2a 2d 20 6c 65 ring.functions.for.gptel..-*-.le
99240 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 79 72 69 xical-binding:.t;.-*-..;;.Copyri
99260 67 68 74 20 28 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 ght.(C).2024..Karthik.Chikmagalu
99280 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 61 6c 75 r..;;.Author:.Karthik.Chikmagalu
992a0 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 6f 6d 3e r.<karthikchikmagalur@gmail.com>
992c0 0a 3b 3b 20 4b 65 79 77 6f 72 64 73 3a 20 68 79 70 65 72 6d 65 64 69 61 2c 20 63 6f 6e 76 65 6e .;;.Keywords:.hypermedia,.conven
992e0 69 65 6e 63 65 2c 20 74 6f 6f 6c 73 0a 0a 3b 3b 20 54 68 69 73 20 70 72 6f 67 72 61 6d 20 69 73 ience,.tools..;;.This.program.is
99300 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 74 72 69 .free.software;.you.can.redistri
99320 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 6e 64 65 bute.it.and/or.modify.;;.it.unde
99340 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 6c 20 50 r.the.terms.of.the.GNU.General.P
99360 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 0a 3b 3b ublic.License.as.published.by.;;
99380 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 2c 20 65 .the.Free.Software.Foundation,.e
993a0 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 65 2c 20 ither.version.3.of.the.License,.
993c0 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 74 65 72 or.;;.(at.your.option).any.later
993e0 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 20 64 69 .version...;;.This.program.is.di
99400 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 20 77 69 stributed.in.the.hope.that.it.wi
99420 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 41 4e 59 ll.be.useful,.;;.but.WITHOUT.ANY
99440 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 6d 70 6c .WARRANTY;.without.even.the.impl
99460 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 49 4c 49 ied.warranty.of.;;.MERCHANTABILI
99480 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 52 20 50 TY.or.FITNESS.FOR.A.PARTICULAR.P
994a0 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 61 6c 20 URPOSE...See.the.;;.GNU.General.
994c0 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 6c 73 2e Public.License.for.more.details.
994e0 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 20 61 20 ..;;.You.should.have.received.a.
99500 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 63 20 4c copy.of.the.GNU.General.Public.L
99520 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 67 72 61 icense.;;.along.with.this.progra
99540 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 67 6e 75 m...If.not,.see.<https://www.gnu
99560 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 61 72 79 .org/licenses/>...;;;.Commentary
99580 3a 0a 0a 3b 3b 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 :..;;..;;;.Code:.(require.'gptel
995a0 2d 74 72 61 6e 73 69 65 6e 74 29 0a 28 72 65 71 75 69 72 65 20 27 63 6c 2d 6c 69 62 29 0a 0a 28 -transient).(require.'cl-lib)..(
995c0 64 65 66 76 61 72 20 65 6c 64 6f 63 2d 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 2d 66 75 6e 63 74 defvar.eldoc-documentation-funct
995e0 69 6f 6e 73 29 0a 28 64 65 66 76 61 72 20 64 69 66 66 2d 65 6e 74 69 72 65 2d 62 75 66 66 65 72 ions).(defvar.diff-entire-buffer
99600 73 29 0a 28 64 65 66 76 61 72 20 65 64 69 66 66 2d 77 69 6e 64 6f 77 2d 73 65 74 75 70 2d 66 75 s).(defvar.ediff-window-setup-fu
99620 6e 63 74 69 6f 6e 29 0a 28 64 65 66 76 61 72 20 65 64 69 66 66 2d 73 70 6c 69 74 2d 77 69 6e 64 nction).(defvar.ediff-split-wind
99640 6f 77 2d 66 75 6e 63 74 69 6f 6e 29 0a 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 ow-function)..(declare-function.
99660 64 69 66 66 2d 6e 6f 2d 73 65 6c 65 63 74 20 22 64 69 66 66 22 29 0a 28 64 65 63 6c 61 72 65 2d diff-no-select."diff").(declare-
99680 66 75 6e 63 74 69 6f 6e 20 72 6d 63 2d 2d 61 64 64 2d 6b 65 79 2d 64 65 73 63 72 69 70 74 69 6f function.rmc--add-key-descriptio
996a0 6e 20 22 72 6d 63 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 66 n."rmc").(declare-function.ediff
996c0 2d 73 65 74 75 70 2d 77 69 6e 64 6f 77 73 2d 70 6c 61 69 6e 20 22 65 64 69 66 66 2d 77 69 6e 64 -setup-windows-plain."ediff-wind
996e0 22 29 0a 0a 3b 3b 20 2a 20 55 73 65 72 20 6f 70 74 69 6f 6e 73 0a 0a 28 64 65 66 63 75 73 74 6f ")..;;.*.User.options..(defcusto
99700 6d 20 67 70 74 65 6c 2d 72 65 77 72 69 74 65 2d 64 69 72 65 63 74 69 76 65 73 2d 68 6f 6f 6b 20 m.gptel-rewrite-directives-hook.
99720 6e 69 6c 0a 20 20 22 48 6f 6f 6b 20 72 75 6e 20 74 6f 20 67 65 6e 65 72 61 74 65 20 67 70 74 65 nil..."Hook.run.to.generate.gpte
99740 6c 27 73 20 64 65 66 61 75 6c 74 20 72 65 77 72 69 74 65 20 64 69 72 65 63 74 69 76 65 73 2e 0a l's.default.rewrite.directives..
99760 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 6f 6b 20 69 73 20 63 .Each.function.in.this.hook.is.c
99780 61 6c 6c 65 64 20 77 69 74 68 20 6e 6f 20 61 72 67 75 6d 65 6e 74 73 20 75 6e 74 69 6c 20 6f 6e alled.with.no.arguments.until.on
997a0 65 0a 72 65 74 75 72 6e 73 20 61 20 6e 6f 6e 2d 6e 69 6c 20 76 61 6c 75 65 2c 20 74 68 65 20 62 e.returns.a.non-nil.value,.the.b
997c0 61 73 65 20 73 74 72 69 6e 67 20 74 6f 20 75 73 65 20 61 73 20 74 68 65 0a 72 65 77 72 69 74 65 ase.string.to.use.as.the.rewrite
997e0 20 69 6e 73 74 72 75 63 74 69 6f 6e 2e 0a 0a 55 73 65 20 74 68 69 73 20 68 6f 6f 6b 20 74 6f 20 .instruction...Use.this.hook.to.
99800 74 61 69 6c 6f 72 20 63 6f 6e 74 65 78 74 2d 73 70 65 63 69 66 69 63 20 72 65 77 72 69 74 65 20 tailor.context-specific.rewrite.
99820 64 69 72 65 63 74 69 76 65 73 2e 0a 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 79 6f 75 20 63 61 6e directives..For.example,.you.can
99840 20 73 70 65 63 69 61 6c 69 7a 65 20 74 68 65 20 64 65 66 61 75 6c 74 20 72 65 77 72 69 74 65 20 .specialize.the.default.rewrite.
99860 64 69 72 65 63 74 69 76 65 0a 66 6f 72 20 61 20 70 61 72 74 69 63 75 6c 61 72 20 6d 61 6a 6f 72 directive.for.a.particular.major
99880 2d 6d 6f 64 65 20 6f 72 20 70 72 6f 6a 65 63 74 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 67 70 74 -mode.or.project."...:group.'gpt
998a0 65 6c 0a 20 20 3a 74 79 70 65 20 27 68 6f 6f 6b 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 el...:type.'hook)..(defcustom.gp
998c0 74 65 6c 2d 70 6f 73 74 2d 72 65 77 72 69 74 65 2d 66 75 6e 63 74 69 6f 6e 73 20 6e 69 6c 0a 20 tel-post-rewrite-functions.nil..
998e0 20 22 41 62 6e 6f 72 6d 61 6c 20 68 6f 6f 6b 20 72 75 6e 20 61 66 74 65 72 20 61 20 60 67 70 74 ."Abnormal.hook.run.after.a.`gpt
99900 65 6c 2d 72 65 77 72 69 74 65 27 20 61 63 74 69 6f 6e 2e 0a 0a 54 68 69 73 20 68 6f 6f 6b 20 69 el-rewrite'.action...This.hook.i
99920 73 20 63 61 6c 6c 65 64 20 61 66 74 65 72 20 74 68 65 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 20 s.called.after.the.LLM.response.
99940 66 6f 72 20 74 68 65 20 72 65 77 72 69 74 65 20 61 63 74 69 6f 6e 0a 68 61 73 20 62 65 65 6e 20 for.the.rewrite.action.has.been.
99960 66 75 6c 6c 79 20 72 65 63 65 69 76 65 64 20 69 6e 20 61 20 74 65 6d 70 6f 72 61 72 79 20 62 75 fully.received.in.a.temporary.bu
99980 66 66 65 72 2e 20 20 45 61 63 68 20 66 75 6e 63 74 69 6f 6e 20 69 73 0a 63 61 6c 6c 65 64 20 77 ffer...Each.function.is.called.w
999a0 69 74 68 20 74 77 6f 20 61 72 67 75 6d 65 6e 74 73 3a 20 74 68 65 20 72 65 73 70 6f 6e 73 65 20 ith.two.arguments:.the.response.
999c0 62 65 67 69 6e 6e 69 6e 67 20 61 6e 64 20 65 6e 64 0a 70 6f 73 69 74 69 6f 6e 73 2e 0a 0a 4e 6f beginning.and.end.positions...No
999e0 74 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 te:.this.hook.only.runs.if.the.r
99a00 65 77 72 69 74 65 20 72 65 71 75 65 73 74 20 73 75 63 63 65 65 64 73 2e 22 0a 20 20 3a 74 79 70 ewrite.request.succeeds."...:typ
99a20 65 20 27 68 6f 6f 6b 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 e.'hook...:group.'gptel)..(defcu
99a40 73 74 6f 6d 20 67 70 74 65 6c 2d 72 65 77 72 69 74 65 2d 64 65 66 61 75 6c 74 2d 61 63 74 69 6f stom.gptel-rewrite-default-actio
99a60 6e 20 6e 69 6c 0a 20 20 22 41 63 74 69 6f 6e 20 74 6f 20 74 61 6b 65 20 77 68 65 6e 20 72 65 77 n.nil..."Action.to.take.when.rew
99a80 72 69 74 69 6e 67 20 61 20 74 65 78 74 20 72 65 67 69 6f 6e 20 75 73 69 6e 67 20 67 70 74 65 6c riting.a.text.region.using.gptel
99aa0 2e 0a 0a 57 68 65 6e 20 74 68 65 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 20 77 69 74 68 20 74 68 ...When.the.LLM.response.with.th
99ac0 65 20 72 65 77 72 69 74 74 65 6e 20 74 65 78 74 20 69 73 20 72 65 63 65 69 76 65 64 2c 20 79 6f e.rewritten.text.is.received,.yo
99ae0 75 20 63 61 6e 0a 2d 20 6d 65 72 67 65 20 69 74 20 77 69 74 68 20 74 68 65 20 63 75 72 72 65 6e u.can.-.merge.it.with.the.curren
99b00 74 20 72 65 67 69 6f 6e 2c 20 70 6f 73 73 69 62 6c 79 20 63 72 65 61 74 69 6e 67 20 61 20 6d 65 t.region,.possibly.creating.a.me
99b20 72 67 65 20 63 6f 6e 66 6c 69 63 74 2c 0a 2d 20 64 69 66 66 20 6f 72 20 65 64 69 66 66 20 61 67 rge.conflict,.-.diff.or.ediff.ag
99b40 61 69 6e 73 74 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 72 65 67 69 6f 6e 2c 0a 2d 20 6f 72 20 ainst.the.original.region,.-.or.
99b60 61 63 63 65 70 74 20 69 74 20 69 6e 20 70 6c 61 63 65 2c 20 72 65 70 6c 61 63 69 6e 67 20 74 68 accept.it.in.place,.replacing.th
99b80 65 20 6f 72 69 67 69 6e 61 6c 20 72 65 67 69 6f 6e 2e 0a 2d 20 64 69 73 70 6c 61 79 20 61 20 64 e.original.region..-.display.a.d
99ba0 69 73 70 61 74 63 68 20 6d 65 6e 75 20 77 69 74 68 20 74 68 65 20 61 62 6f 76 65 20 63 68 6f 69 ispatch.menu.with.the.above.choi
99bc0 63 65 73 2e 0a 0a 49 66 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 6e 69 6c 20 28 74 68 65 ces...If.this.option.is.nil.(the
99be0 20 64 65 66 61 75 6c 74 29 2c 20 67 70 74 65 6c 20 77 61 69 74 73 20 66 6f 72 20 61 6e 20 65 78 .default),.gptel.waits.for.an.ex
99c00 70 6c 69 63 69 74 0a 63 6f 6d 6d 61 6e 64 2e 20 20 53 65 74 20 69 74 20 74 6f 20 74 68 65 20 73 plicit.command...Set.it.to.the.s
99c20 79 6d 62 6f 6c 20 60 6d 65 72 67 65 27 2c 20 60 64 69 66 66 27 2c 20 60 65 64 69 66 66 27 2c 20 ymbol.`merge',.`diff',.`ediff',.
99c40 60 61 63 63 65 70 74 27 0a 6f 72 20 60 64 69 73 70 61 74 63 68 27 20 74 6f 20 61 75 74 6f 6d 61 `accept'.or.`dispatch'.to.automa
99c60 74 69 63 61 6c 6c 79 20 64 6f 20 6f 6e 65 20 6f 66 20 74 68 65 73 65 20 74 68 69 6e 67 73 20 69 tically.do.one.of.these.things.i
99c80 6e 73 74 65 61 64 2e 0a 0a 59 6f 75 20 63 61 6e 20 61 6c 73 6f 20 73 65 74 20 69 74 20 74 6f 20 nstead...You.can.also.set.it.to.
99ca0 61 20 66 75 6e 63 74 69 6f 6e 20 6f 66 20 79 6f 75 72 20 63 68 6f 6f 73 69 6e 67 20 66 6f 72 20 a.function.of.your.choosing.for.
99cc0 61 20 63 75 73 74 6f 6d 0a 61 63 74 69 6f 6e 2e 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 a.custom.action...This.function.
99ce0 72 65 63 65 69 76 65 73 20 6f 6e 65 20 61 72 67 75 6d 65 6e 74 2c 20 74 68 65 20 72 65 77 72 69 receives.one.argument,.the.rewri
99d00 74 65 0a 6f 76 65 72 6c 61 79 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 67 70 74 65 6c 0a 20 20 3a te.overlay."...:group.'gptel...:
99d20 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 3a type.'(choice...........(const.:
99d40 74 61 67 20 22 57 61 69 74 22 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 74 tag."Wait".nil)...........(const
99d60 20 3a 74 61 67 20 22 4d 65 72 67 65 20 77 69 74 68 20 63 75 72 72 65 6e 74 20 72 65 67 69 6f 6e .:tag."Merge.with.current.region
99d80 22 20 6d 65 72 67 65 29 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 20 20 ".merge)...........(const.:tag..
99da0 22 44 69 66 66 20 61 67 61 69 6e 73 74 20 63 75 72 72 65 6e 74 20 72 65 67 69 6f 6e 22 20 64 69 "Diff.against.current.region".di
99dc0 66 66 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 45 64 69 66 66 ff)...........(const.:tag."Ediff
99de0 20 61 67 61 69 6e 73 74 20 63 75 72 72 65 6e 74 20 72 65 67 69 6f 6e 22 20 65 64 69 66 66 29 0a .against.current.region".ediff).
99e00 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 20 22 41 63 63 65 70 74 20 72 65 ..........(const.:tag."Accept.re
99e20 77 72 69 74 65 22 20 61 63 63 65 70 74 29 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 write".accept)...........(const.
99e40 3a 74 61 67 20 22 44 69 73 70 61 74 63 68 22 20 64 69 73 70 61 74 63 68 29 0a 20 20 20 20 20 20 :tag."Dispatch".dispatch).......
99e60 20 20 20 20 28 66 75 6e 63 74 69 6f 6e 20 3a 74 61 67 20 22 43 75 73 74 6f 6d 20 61 63 74 69 6f ....(function.:tag."Custom.actio
99e80 6e 22 29 29 29 0a 0a 28 64 65 66 66 61 63 65 20 67 70 74 65 6c 2d 72 65 77 72 69 74 65 2d 68 69 n")))..(defface.gptel-rewrite-hi
99ea0 67 68 6c 69 67 68 74 2d 66 61 63 65 0a 20 20 27 28 28 28 28 63 6c 61 73 73 20 63 6f 6c 6f 72 29 ghlight-face...'((((class.color)
99ec0 20 28 6d 69 6e 2d 63 6f 6c 6f 72 73 20 38 38 29 20 28 62 61 63 6b 67 72 6f 75 6e 64 20 64 61 72 .(min-colors.88).(background.dar
99ee0 6b 29 29 0a 20 20 20 20 20 3a 62 61 63 6b 67 72 6f 75 6e 64 20 22 23 30 34 31 37 31 34 22 20 3a k))......:background."#041714".:
99f00 65 78 74 65 6e 64 20 74 20 3a 69 6e 68 65 72 69 74 20 64 65 66 61 75 6c 74 29 0a 20 20 20 20 28 extend.t.:inherit.default).....(
99f20 28 28 63 6c 61 73 73 20 63 6f 6c 6f 72 29 20 28 6d 69 6e 2d 63 6f 6c 6f 72 73 20 38 38 29 20 28 ((class.color).(min-colors.88).(
99f40 62 61 63 6b 67 72 6f 75 6e 64 20 6c 69 67 68 74 29 29 0a 20 20 20 20 20 3a 62 61 63 6b 67 72 6f background.light))......:backgro
99f60 75 6e 64 20 22 6c 69 67 68 74 20 67 6f 6c 64 65 6e 72 6f 64 20 79 65 6c 6c 6f 77 22 20 3a 65 78 und."light.goldenrod.yellow".:ex
99f80 74 65 6e 64 20 74 20 3a 69 6e 68 65 72 69 74 20 64 65 66 61 75 6c 74 29 0a 20 20 20 20 28 74 20 tend.t.:inherit.default).....(t.
99fa0 3a 69 6e 68 65 72 69 74 20 73 65 63 6f 6e 64 61 72 79 2d 73 65 6c 65 63 74 69 6f 6e 29 29 0a 20 :inherit.secondary-selection))..
99fc0 20 22 46 61 63 65 20 66 6f 72 20 68 69 67 68 6c 69 67 68 74 69 6e 67 20 72 65 67 69 6f 6e 73 20 ."Face.for.highlighting.regions.
99fe0 77 69 74 68 20 70 65 6e 64 69 6e 67 20 72 65 77 72 69 74 65 73 2e 22 0a 20 20 3a 67 72 6f 75 70 with.pending.rewrites."...:group
9a000 20 27 67 70 74 65 6c 29 0a 0a 3b 3b 20 2a 20 56 61 72 69 61 62 6c 65 73 0a 0a 28 64 65 66 76 61 .'gptel)..;;.*.Variables..(defva
9a020 72 2d 6b 65 79 6d 61 70 20 67 70 74 65 6c 2d 72 65 77 72 69 74 65 2d 61 63 74 69 6f 6e 73 2d 6d r-keymap.gptel-rewrite-actions-m
9a040 61 70 0a 20 20 3a 64 6f 63 20 22 4b 65 79 6d 61 70 20 66 6f 72 20 67 70 74 65 6c 20 72 65 77 72 ap...:doc."Keymap.for.gptel.rewr
9a060 69 74 65 20 61 63 74 69 6f 6e 73 20 61 74 20 70 6f 69 6e 74 2e 22 0a 20 20 22 52 45 54 22 20 23 ite.actions.at.point."..."RET".#
9a080 27 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 64 69 73 70 61 74 63 68 0a 20 20 22 3c 6d 6f 75 'gptel--rewrite-dispatch..."<mou
9a0a0 73 65 2d 31 3e 22 20 23 27 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 64 69 73 70 61 74 63 68 se-1>".#'gptel--rewrite-dispatch
9a0c0 0a 20 20 22 43 2d 63 20 43 2d 61 22 20 23 27 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 61 63 ..."C-c.C-a".#'gptel--rewrite-ac
9a0e0 63 65 70 74 0a 20 20 22 43 2d 63 20 43 2d 72 22 20 23 27 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 cept..."C-c.C-r".#'gptel--rewrit
9a100 65 2d 69 74 65 72 61 74 65 0a 20 20 22 43 2d 63 20 43 2d 6b 22 20 23 27 67 70 74 65 6c 2d 2d 72 e-iterate..."C-c.C-k".#'gptel--r
9a120 65 77 72 69 74 65 2d 72 65 6a 65 63 74 0a 20 20 22 43 2d 63 20 43 2d 64 22 20 23 27 67 70 74 65 ewrite-reject..."C-c.C-d".#'gpte
9a140 6c 2d 2d 72 65 77 72 69 74 65 2d 64 69 66 66 0a 20 20 22 43 2d 63 20 43 2d 65 22 20 23 27 67 70 l--rewrite-diff..."C-c.C-e".#'gp
9a160 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 65 64 69 66 66 0a 20 20 22 43 2d 63 20 43 2d 6e 22 20 23 tel--rewrite-ediff..."C-c.C-n".#
9a180 27 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6e 65 78 74 0a 20 20 22 43 2d 63 20 43 2d 70 22 'gptel--rewrite-next..."C-c.C-p"
9a1a0 20 23 27 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 70 72 65 76 69 6f 75 73 0a 20 20 22 43 2d .#'gptel--rewrite-previous..."C-
9a1c0 63 20 43 2d 6d 22 20 23 27 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6d 65 72 67 65 29 0a 0a c.C-m".#'gptel--rewrite-merge)..
9a1e0 28 64 65 66 76 61 72 2d 6c 6f 63 61 6c 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6f 76 65 (defvar-local.gptel--rewrite-ove
9a200 72 6c 61 79 73 20 6e 69 6c 0a 20 20 22 4c 69 73 74 20 6f 66 20 61 63 74 69 76 65 20 72 65 77 72 rlays.nil..."List.of.active.rewr
9a220 69 74 65 20 6f 76 65 72 6c 61 79 73 20 69 6e 20 74 68 65 20 62 75 66 66 65 72 2e 22 29 0a 0a 28 ite.overlays.in.the.buffer.")..(
9a240 64 65 66 76 61 72 2d 6c 6f 63 61 6c 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6d 65 73 73 defvar-local.gptel--rewrite-mess
9a260 61 67 65 20 6e 69 6c 0a 20 20 22 52 65 71 75 65 73 74 2d 73 70 65 63 69 66 69 63 20 69 6e 73 74 age.nil..."Request-specific.inst
9a280 72 75 63 74 69 6f 6e 73 20 66 6f 72 20 61 20 67 70 74 65 6c 2d 72 65 77 72 69 74 65 20 61 63 74 ructions.for.a.gptel-rewrite.act
9a2a0 69 6f 6e 2e 22 29 0a 0a 3b 3b 20 41 64 64 20 74 68 65 20 72 65 77 72 69 74 65 20 64 69 72 65 63 ion.")..;;.Add.the.rewrite.direc
9a2c0 74 69 76 65 20 74 6f 20 60 67 70 74 65 6c 2d 64 69 72 65 63 74 69 76 65 73 27 0a 28 75 6e 6c 65 tive.to.`gptel-directives'.(unle
9a2e0 73 73 20 28 61 6c 69 73 74 2d 67 65 74 20 27 72 65 77 72 69 74 65 20 67 70 74 65 6c 2d 64 69 72 ss.(alist-get.'rewrite.gptel-dir
9a300 65 63 74 69 76 65 73 29 0a 20 20 28 61 64 64 2d 74 6f 2d 6c 69 73 74 20 27 67 70 74 65 6c 2d 64 ectives)...(add-to-list.'gptel-d
9a320 69 72 65 63 74 69 76 65 73 20 60 28 72 65 77 72 69 74 65 20 2e 20 2c 23 27 67 70 74 65 6c 2d 2d irectives.`(rewrite...,#'gptel--
9a340 72 65 77 72 69 74 65 2d 64 69 72 65 63 74 69 76 65 2d 64 65 66 61 75 6c 74 29 29 29 0a 0a 28 64 rewrite-directive-default)))..(d
9a360 65 66 76 61 72 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 64 69 72 65 63 74 69 76 65 0a 20 efvar.gptel--rewrite-directive..
9a380 20 28 6f 72 20 28 61 6c 69 73 74 2d 67 65 74 20 27 72 65 77 72 69 74 65 20 67 70 74 65 6c 2d 64 .(or.(alist-get.'rewrite.gptel-d
9a3a0 69 72 65 63 74 69 76 65 73 29 0a 20 20 20 20 20 20 23 27 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 irectives).......#'gptel--rewrit
9a3c0 65 2d 64 69 72 65 63 74 69 76 65 2d 64 65 66 61 75 6c 74 29 0a 20 20 22 41 63 74 69 76 65 20 73 e-directive-default)..."Active.s
9a3e0 79 73 74 65 6d 20 6d 65 73 73 61 67 65 20 66 6f 72 20 72 65 77 72 69 74 65 20 61 63 74 69 6f 6e ystem.message.for.rewrite.action
9a400 73 2e 0a 0a 54 68 69 73 20 76 61 72 69 61 62 6c 65 20 69 73 20 66 6f 72 20 69 6e 74 65 72 6e 61 s...This.variable.is.for.interna
9a420 6c 20 75 73 65 20 6f 6e 6c 79 2e 20 20 54 6f 20 63 75 73 74 6f 6d 69 7a 65 20 74 68 65 20 72 65 l.use.only...To.customize.the.re
9a440 77 72 69 74 65 0a 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 2c 20 73 65 74 20 61 20 73 79 73 74 write.system.message,.set.a.syst
9a460 65 6d 20 6d 65 73 73 61 67 65 20 28 6f 72 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 67 65 6e em.message.(or.function.that.gen
9a480 65 72 61 74 65 73 0a 74 68 65 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 29 20 61 73 20 74 68 erates.the.system.message).as.th
9a4a0 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 60 72 65 77 72 69 74 65 27 20 6b 65 79 20 69 6e 0a e.value.of.the.`rewrite'.key.in.
9a4c0 60 67 70 74 65 6c 2d 64 69 72 65 63 74 69 76 65 73 27 3a 0a 0a 20 28 73 65 74 66 20 28 61 6c 69 `gptel-directives':...(setf.(ali
9a4e0 73 74 2d 67 65 74 20 5c 5c 3d 27 72 65 77 72 69 74 65 20 67 70 74 65 6c 2d 64 69 72 65 63 74 69 st-get.\\='rewrite.gptel-directi
9a500 76 65 73 29 0a 20 20 20 20 20 20 20 23 5c 5c 3d 27 6d 79 2d 72 65 77 72 69 74 65 2d 6d 65 73 73 ves)........#\\='my-rewrite-mess
9a520 61 67 65 2d 67 65 6e 65 72 61 74 6f 72 29 0a 0a 59 6f 75 20 63 61 6e 20 61 6c 73 6f 20 63 75 73 age-generator)..You.can.also.cus
9a540 74 6f 6d 69 7a 65 20 60 67 70 74 65 6c 2d 72 65 77 72 69 74 65 2d 64 69 72 65 63 74 69 76 65 73 tomize.`gptel-rewrite-directives
9a560 2d 68 6f 6f 6b 27 20 74 6f 0a 64 79 6e 61 6d 69 63 61 6c 6c 79 20 69 6e 6a 65 63 74 20 61 20 72 -hook'.to.dynamically.inject.a.r
9a580 65 77 72 69 74 65 2d 73 70 65 63 69 66 69 63 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 2e 22 ewrite-specific.system.message."
9a5a0 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 64 69 72 65 63 74 69 )..(defun.gptel--rewrite-directi
9a5c0 76 65 2d 64 65 66 61 75 6c 74 20 28 29 0a 20 20 22 47 65 6e 65 72 69 63 20 64 69 72 65 63 74 69 ve-default.()..."Generic.directi
9a5e0 76 65 20 66 6f 72 20 72 65 77 72 69 74 69 6e 67 20 6f 72 20 72 65 66 61 63 74 6f 72 69 6e 67 2e ve.for.rewriting.or.refactoring.
9a600 0a 0a 54 68 65 73 65 20 61 72 65 20 69 6e 73 74 72 75 63 74 69 6f 6e 73 20 6e 6f 74 20 73 70 65 ..These.are.instructions.not.spe
9a620 63 69 66 69 63 20 74 6f 20 61 6e 79 20 70 61 72 74 69 63 75 6c 61 72 20 72 65 71 75 69 72 65 64 cific.to.any.particular.required
9a640 0a 63 68 61 6e 67 65 2e 0a 0a 54 68 65 20 72 65 74 75 72 6e 65 64 20 73 74 72 69 6e 67 20 69 73 .change...The.returned.string.is
9a660 20 69 6e 74 65 72 70 72 65 74 65 64 20 61 73 20 74 68 65 20 73 79 73 74 65 6d 20 6d 65 73 73 61 .interpreted.as.the.system.messa
9a680 67 65 20 66 6f 72 20 74 68 65 0a 72 65 77 72 69 74 65 20 72 65 71 75 65 73 74 2e 20 20 54 6f 20 ge.for.the.rewrite.request...To.
9a6a0 75 73 65 20 79 6f 75 72 20 6f 77 6e 2c 20 61 64 64 20 61 20 64 69 66 66 65 72 65 6e 74 20 64 69 use.your.own,.add.a.different.di
9a6c0 72 65 63 74 69 76 65 20 74 6f 0a 60 67 70 74 65 6c 2d 64 69 72 65 63 74 69 76 65 73 27 2c 20 6f rective.to.`gptel-directives',.o
9a6e0 72 20 61 64 64 20 74 6f 20 60 67 70 74 65 6c 2d 72 65 77 72 69 74 65 2d 64 69 72 65 63 74 69 76 r.add.to.`gptel-rewrite-directiv
9a700 65 73 2d 68 6f 6f 6b 27 2c 0a 77 68 69 63 68 20 73 65 65 2e 22 0a 20 20 28 6f 72 20 28 73 61 76 es-hook',.which.see."...(or.(sav
9a720 65 2d 6d 61 72 6b 2d 61 6e 64 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 28 72 75 e-mark-and-excursion.........(ru
9a740 6e 2d 68 6f 6f 6b 2d 77 69 74 68 2d 61 72 67 73 2d 75 6e 74 69 6c 2d 73 75 63 63 65 73 73 0a 20 n-hook-with-args-until-success..
9a760 20 20 20 20 20 20 20 20 27 67 70 74 65 6c 2d 72 65 77 72 69 74 65 2d 64 69 72 65 63 74 69 76 65 ........'gptel-rewrite-directive
9a780 73 2d 68 6f 6f 6b 29 29 0a 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 6c 61 6e 67 20 28 64 6f 77 s-hook)).......(let*.((lang.(dow
9a7a0 6e 63 61 73 65 20 28 67 70 74 65 6c 2d 2d 73 74 72 69 70 2d 6d 6f 64 65 2d 73 75 66 66 69 78 20 ncase.(gptel--strip-mode-suffix.
9a7c0 6d 61 6a 6f 72 2d 6d 6f 64 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 72 74 69 major-mode)))..............(arti
9a7e0 63 6c 65 20 28 69 66 20 28 61 6e 64 20 6c 61 6e 67 20 28 6e 6f 74 20 28 73 74 72 69 6e 67 2d 65 cle.(if.(and.lang.(not.(string-e
9a800 6d 70 74 79 2d 70 20 6c 61 6e 67 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 mpty-p.lang))...................
9a820 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 65 6d 71 20 28 61 72 65 66 20 6c 61 6e 67 20 30 29 .............(memq.(aref.lang.0)
9a840 20 27 28 3f 61 20 3f 65 20 3f 69 20 3f 6f 20 3f 75 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 .'(?a.?e.?i.?o.?u)))............
9a860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 61 6e 22 20 22 61 22 29 29 29 0a 20 20 20 20 20 ..............."an"."a")))......
9a880 20 20 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 64 ...(if.(derived-mode-p.'prog-mod
9a8a0 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 28 63 6f 6e 63 61 74 20 22 e).............(format.(concat."
9a8c0 59 6f 75 20 61 72 65 20 25 73 20 25 73 20 70 72 6f 67 72 61 6d 6d 65 72 2e 20 20 22 0a 20 20 20 You.are.%s.%s.programmer..."....
9a8e0 20 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 46 6f 6c 6c 6f 77 ........................."Follow
9a900 20 6d 79 20 69 6e 73 74 72 75 63 74 69 6f 6e 73 20 61 6e 64 20 72 65 66 61 63 74 6f 72 20 25 73 .my.instructions.and.refactor.%s
9a920 20 63 6f 64 65 20 49 20 70 72 6f 76 69 64 65 2e 5c 6e 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 .code.I.provide.\n".............
9a940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 2d 20 47 65 6e 65 72 61 74 65 20 4f 4e 4c 59 ................"-.Generate.ONLY
9a960 20 25 73 20 63 6f 64 65 20 61 73 20 6f 75 74 70 75 74 2c 20 77 69 74 68 6f 75 74 20 22 0a 20 20 .%s.code.as.output,.without."...
9a980 20 20 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 61 6e 79 20 65 .........................."any.e
9a9a0 78 70 6c 61 6e 61 74 69 6f 6e 20 6f 72 20 6d 61 72 6b 64 6f 77 6e 20 63 6f 64 65 20 66 65 6e 63 xplanation.or.markdown.code.fenc
9a9c0 65 73 2e 5c 6e 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 es.\n"..........................
9a9e0 20 20 20 22 2d 20 47 65 6e 65 72 61 74 65 20 63 6f 64 65 20 69 6e 20 66 75 6c 6c 2c 20 64 6f 20 ..."-.Generate.code.in.full,.do.
9aa00 6e 6f 74 20 61 62 62 72 65 76 69 61 74 65 20 6f 72 20 6f 6d 69 74 20 63 6f 64 65 2e 5c 6e 22 0a not.abbreviate.or.omit.code.\n".
9aa20 20 20 20 20 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 2d 20 44 ............................"-.D
9aa40 6f 20 6e 6f 74 20 61 73 6b 20 66 6f 72 20 66 75 72 74 68 65 72 20 63 6c 61 72 69 66 69 63 61 74 o.not.ask.for.further.clarificat
9aa60 69 6f 6e 2c 20 61 6e 64 20 6d 61 6b 65 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ion,.and.make.".................
9aa80 20 20 20 20 20 20 20 20 20 20 20 20 22 61 6e 79 20 61 73 73 75 6d 70 74 69 6f 6e 73 20 79 6f 75 ............"any.assumptions.you
9aaa0 20 6e 65 65 64 20 74 6f 20 66 6f 6c 6c 6f 77 20 69 6e 73 74 72 75 63 74 69 6f 6e 73 2e 22 29 0a .need.to.follow.instructions.").
9aac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 72 74 69 63 6c 65 20 6c 61 6e 67 ....................article.lang
9aae0 20 6c 61 6e 67 20 6c 61 6e 67 29 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 0a 20 20 .lang.lang)...........(concat...
9ab00 20 20 20 20 20 20 20 20 20 28 69 66 20 28 73 74 72 69 6e 67 2d 65 6d 70 74 79 2d 70 20 6c 61 6e .........(if.(string-empty-p.lan
9ab20 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 59 6f 75 20 61 72 65 20 61 6e 20 65 64 g)................"You.are.an.ed
9ab40 69 74 6f 72 2e 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 59 6f 75 itor."..............(format."You
9ab60 20 61 72 65 20 25 73 20 25 73 20 65 64 69 74 6f 72 2e 22 20 61 72 74 69 63 6c 65 20 6c 61 6e 67 .are.%s.%s.editor.".article.lang
9ab80 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 22 20 20 46 6f 6c 6c 6f 77 20 6d 79 20 69 6e 73 74 72 ))............"..Follow.my.instr
9aba0 75 63 74 69 6f 6e 73 20 61 6e 64 20 69 6d 70 72 6f 76 65 20 6f 72 20 72 65 77 72 69 74 65 20 74 uctions.and.improve.or.rewrite.t
9abc0 68 65 20 74 65 78 74 20 49 20 70 72 6f 76 69 64 65 2e 22 0a 20 20 20 20 20 20 20 20 20 20 20 22 he.text.I.provide."............"
9abe0 20 20 47 65 6e 65 72 61 74 65 20 4f 4e 4c 59 20 74 68 65 20 72 65 70 6c 61 63 65 6d 65 6e 74 20 ..Generate.ONLY.the.replacement.
9ac00 74 65 78 74 2c 22 0a 20 20 20 20 20 20 20 20 20 20 20 22 20 77 69 74 68 6f 75 74 20 61 6e 79 20 text,"............".without.any.
9ac20 65 78 70 6c 61 6e 61 74 69 6f 6e 20 6f 72 20 6d 61 72 6b 64 6f 77 6e 20 63 6f 64 65 20 66 65 6e explanation.or.markdown.code.fen
9ac40 63 65 73 2e 22 29 29 29 29 29 0a 0a 3b 3b 20 2a 20 48 65 6c 70 65 72 20 66 75 6e 63 74 69 6f 6e ces.")))))..;;.*.Helper.function
9ac60 73 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6b 65 79 2d 68 65 6c s..(defun.gptel--rewrite-key-hel
9ac80 70 20 28 63 61 6c 6c 62 61 63 6b 29 0a 20 20 22 45 6c 64 6f 63 20 64 6f 63 75 6d 65 6e 74 61 74 p.(callback)..."Eldoc.documentat
9aca0 69 6f 6e 20 66 75 6e 63 74 69 6f 6e 20 66 6f 72 20 67 70 74 65 6c 20 72 65 77 72 69 74 65 20 61 ion.function.for.gptel.rewrite.a
9acc0 63 74 69 6f 6e 73 2e 0a 0a 43 41 4c 4c 42 41 43 4b 20 69 73 20 73 75 70 70 6c 69 65 64 20 62 79 ctions...CALLBACK.is.supplied.by
9ace0 20 45 6c 64 6f 63 2c 20 73 65 65 0a 60 65 6c 64 6f 63 2d 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e .Eldoc,.see.`eldoc-documentation
9ad00 2d 66 75 6e 63 74 69 6f 6e 73 27 2e 22 0a 20 20 28 77 68 65 6e 20 28 61 6e 64 20 67 70 74 65 6c -functions'."...(when.(and.gptel
9ad20 2d 2d 72 65 77 72 69 74 65 2d 6f 76 65 72 6c 61 79 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 --rewrite-overlays..............
9ad40 28 67 65 74 2d 63 68 61 72 2d 70 72 6f 70 65 72 74 79 20 28 70 6f 69 6e 74 29 20 27 67 70 74 65 (get-char-property.(point).'gpte
9ad60 6c 2d 72 65 77 72 69 74 65 29 29 0a 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 63 61 6c 6c 62 l-rewrite)).......(funcall.callb
9ad80 61 63 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 28 73 75 62 73 ack................(format.(subs
9ada0 74 69 74 75 74 65 2d 63 6f 6d 6d 61 6e 64 2d 6b 65 79 73 20 22 25 73 20 72 65 77 72 69 74 65 20 titute-command-keys."%s.rewrite.
9adc0 61 76 61 69 6c 61 62 6c 65 3a 20 61 63 63 65 70 74 20 5c 5c 5b 67 70 74 65 6c 2d 2d 72 65 77 72 available:.accept.\\[gptel--rewr
9ade0 69 74 65 2d 61 63 63 65 70 74 5d 2c 20 69 74 65 72 61 74 65 20 5c 5c 5b 67 70 74 65 6c 2d 2d 72 ite-accept],.iterate.\\[gptel--r
9ae00 65 77 72 69 74 65 2d 69 74 65 72 61 74 65 5d 2c 20 63 6c 65 61 72 20 5c 5c 5b 67 70 74 65 6c 2d ewrite-iterate],.clear.\\[gptel-
9ae20 2d 72 65 77 72 69 74 65 2d 72 65 6a 65 63 74 5d 2c 20 6d 65 72 67 65 20 5c 5c 5b 67 70 74 65 6c -rewrite-reject],.merge.\\[gptel
9ae40 2d 2d 72 65 77 72 69 74 65 2d 6d 65 72 67 65 5d 2c 20 64 69 66 66 20 5c 5c 5b 67 70 74 65 6c 2d --rewrite-merge],.diff.\\[gptel-
9ae60 2d 72 65 77 72 69 74 65 2d 64 69 66 66 5d 20 6f 72 20 65 64 69 66 66 20 5c 5c 5b 67 70 74 65 6c -rewrite-diff].or.ediff.\\[gptel
9ae80 2d 2d 72 65 77 72 69 74 65 2d 65 64 69 66 66 5d 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 --rewrite-ediff]")..............
9aea0 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 28 67 70 74 65 6c 2d 2d 6d 6f ..........(propertize.(gptel--mo
9aec0 64 65 6c 2d 6e 61 6d 65 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 29 20 27 66 61 63 65 20 27 6d 6f 64 del-name.gptel-model).'face.'mod
9aee0 65 2d 6c 69 6e 65 2d 65 6d 70 68 61 73 69 73 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 e-line-emphasis)))))..(defun.gpt
9af00 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6d 6f 76 65 20 28 73 65 61 72 63 68 2d 66 75 6e 63 29 0a 20 el--rewrite-move.(search-func)..
9af20 20 22 4d 6f 76 65 20 64 69 72 65 63 74 69 6f 6e 61 6c 6c 79 20 74 6f 20 61 20 67 70 74 65 6c 20 ."Move.directionally.to.a.gptel.
9af40 72 65 77 72 69 74 65 20 6c 6f 63 61 74 69 6f 6e 20 75 73 69 6e 67 20 53 45 41 52 43 48 2d 46 55 rewrite.location.using.SEARCH-FU
9af60 4e 43 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 6f 76 20 28 63 64 72 20 28 67 65 74 2d 63 68 61 72 NC."...(let*.((ov.(cdr.(get-char
9af80 2d 70 72 6f 70 65 72 74 79 2d 61 6e 64 2d 6f 76 65 72 6c 61 79 20 28 70 6f 69 6e 74 29 20 27 67 -property-and-overlay.(point).'g
9afa0 70 74 65 6c 2d 72 65 77 72 69 74 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 70 74 20 28 73 61 ptel-rewrite)))..........(pt.(sa
9afc0 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 ve-excursion................(if.
9afe0 6f 76 0a 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 61 72 ov....................(goto-char
9b000 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 73 65 .....................(funcall.se
9b020 61 72 63 68 2d 66 75 6e 63 20 28 6f 76 65 72 6c 61 79 2d 73 74 61 72 74 20 6f 76 29 20 27 67 70 arch-func.(overlay-start.ov).'gp
9b040 74 65 6c 2d 72 65 77 72 69 74 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 tel-rewrite))..................(
9b060 67 6f 74 6f 2d 63 68 61 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 78 goto-char...................(max
9b080 20 28 31 2d 20 28 66 75 6e 63 61 6c 6c 20 73 65 61 72 63 68 2d 66 75 6e 63 20 28 70 6f 69 6e 74 .(1-.(funcall.search-func.(point
9b0a0 29 20 27 67 70 74 65 6c 2d 72 65 77 72 69 74 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ).'gptel-rewrite))..............
9b0c0 20 20 20 20 20 20 20 20 20 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 29 29 0a 20 20 20 20 20 20 20 ..........(point-min))))........
9b0e0 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 73 65 61 72 63 68 2d 66 75 6e 63 20 28 70 6f ........(funcall.search-func.(po
9b100 69 6e 74 29 20 27 67 70 74 65 6c 2d 72 65 77 72 69 74 65 29 29 29 29 0a 20 20 20 20 28 69 66 20 int).'gptel-rewrite)))).....(if.
9b120 28 67 65 74 2d 63 68 61 72 2d 70 72 6f 70 65 72 74 79 20 70 74 20 27 67 70 74 65 6c 2d 72 65 77 (get-char-property.pt.'gptel-rew
9b140 72 69 74 65 29 0a 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 70 74 29 0a 20 20 20 rite).........(goto-char.pt)....
9b160 20 20 20 28 75 73 65 72 2d 65 72 72 6f 72 20 22 4e 6f 20 66 75 72 74 68 65 72 20 72 65 77 72 69 ...(user-error."No.further.rewri
9b180 74 65 20 72 65 67 69 6f 6e 73 21 22 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d te.regions!"))))..(defun.gptel--
9b1a0 72 65 77 72 69 74 65 2d 6e 65 78 74 20 28 29 0a 20 20 22 47 6f 20 74 6f 20 6e 65 78 74 20 70 65 rewrite-next.()..."Go.to.next.pe
9b1c0 6e 64 69 6e 67 20 4c 4c 4d 20 72 65 77 72 69 74 65 20 69 6e 20 62 75 66 66 65 72 2c 20 69 66 20 nding.LLM.rewrite.in.buffer,.if.
9b1e0 6f 6e 65 20 65 78 69 73 74 73 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 28 one.exists."...(interactive)...(
9b200 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6d 6f 76 65 20 23 27 6e 65 78 74 2d 73 69 6e 67 6c gptel--rewrite-move.#'next-singl
9b220 65 2d 63 68 61 72 2d 70 72 6f 70 65 72 74 79 2d 63 68 61 6e 67 65 29 29 0a 0a 28 64 65 66 75 6e e-char-property-change))..(defun
9b240 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 70 72 65 76 69 6f 75 73 20 28 29 0a 20 20 22 47 .gptel--rewrite-previous.()..."G
9b260 6f 20 74 6f 20 70 72 65 76 69 6f 75 73 20 70 65 6e 64 69 6e 67 20 4c 4c 4d 20 72 65 77 72 69 74 o.to.previous.pending.LLM.rewrit
9b280 65 20 69 6e 20 62 75 66 66 65 72 2c 20 69 66 20 6f 6e 65 20 65 78 69 73 74 73 2e 22 0a 20 20 28 e.in.buffer,.if.one.exists."...(
9b2a0 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 28 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6d interactive)...(gptel--rewrite-m
9b2c0 6f 76 65 20 23 27 70 72 65 76 69 6f 75 73 2d 73 69 6e 67 6c 65 2d 63 68 61 72 2d 70 72 6f 70 65 ove.#'previous-single-char-prope
9b2e0 72 74 79 2d 63 68 61 6e 67 65 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 72 65 77 72 rty-change))..(defun.gptel--rewr
9b300 69 74 65 2d 6f 76 65 72 6c 61 79 2d 61 74 20 28 26 6f 70 74 69 6f 6e 61 6c 20 70 74 29 0a 20 20 ite-overlay-at.(&optional.pt)...
9b320 22 43 68 65 63 6b 20 66 6f 72 20 61 20 67 70 74 65 6c 20 72 65 77 72 69 74 65 20 6f 76 65 72 6c "Check.for.a.gptel.rewrite.overl
9b340 61 79 20 61 74 20 50 54 20 61 6e 64 20 72 65 74 75 72 6e 20 69 74 2e 0a 0a 49 66 20 6e 6f 20 73 ay.at.PT.and.return.it...If.no.s
9b360 75 69 74 61 62 6c 65 20 6f 76 65 72 6c 61 79 20 69 73 20 66 6f 75 6e 64 2c 20 72 61 69 73 65 20 uitable.overlay.is.found,.raise.
9b380 61 6e 20 65 72 72 6f 72 2e 22 0a 20 20 28 70 63 61 73 65 2d 6c 65 74 20 28 28 60 28 2c 72 65 73 an.error."...(pcase-let.((`(,res
9b3a0 70 6f 6e 73 65 20 2e 20 2c 6f 76 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 65 74 ponse...,ov)................(get
9b3c0 2d 63 68 61 72 2d 70 72 6f 70 65 72 74 79 2d 61 6e 64 2d 6f 76 65 72 6c 61 79 20 28 6f 72 20 70 -char-property-and-overlay.(or.p
9b3e0 74 20 28 70 6f 69 6e 74 29 29 20 27 67 70 74 65 6c 2d 72 65 77 72 69 74 65 29 29 0a 20 20 20 20 t.(point)).'gptel-rewrite)).....
9b400 20 20 20 20 20 20 20 20 20 20 28 64 69 66 66 2d 65 6e 74 69 72 65 2d 62 75 66 66 65 72 73 20 6e ..........(diff-entire-buffers.n
9b420 69 6c 29 29 0a 20 20 20 20 28 75 6e 6c 65 73 73 20 6f 76 20 28 75 73 65 72 2d 65 72 72 6f 72 20 il)).....(unless.ov.(user-error.
9b440 22 43 6f 75 6c 64 20 6e 6f 74 20 66 69 6e 64 20 72 65 67 69 6f 6e 20 62 65 69 6e 67 20 72 65 77 "Could.not.find.region.being.rew
9b460 72 69 74 74 65 6e 2e 22 29 29 0a 20 20 20 20 28 75 6e 6c 65 73 73 20 72 65 73 70 6f 6e 73 65 20 ritten.")).....(unless.response.
9b480 28 75 73 65 72 2d 65 72 72 6f 72 20 22 4e 6f 20 4c 4c 4d 20 6f 75 74 70 75 74 20 61 76 61 69 6c (user-error."No.LLM.output.avail
9b4a0 61 62 6c 65 20 66 6f 72 20 74 68 69 73 20 72 65 77 72 69 74 65 2e 22 29 29 0a 20 20 20 20 6f 76 able.for.this.rewrite.")).....ov
9b4c0 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 70 72 65 70 61 72 ))..(defun.gptel--rewrite-prepar
9b4e0 65 2d 62 75 66 66 65 72 20 28 6f 76 73 20 26 6f 70 74 69 6f 6e 61 6c 20 62 75 66 29 0a 20 20 22 e-buffer.(ovs.&optional.buf)..."
9b500 50 72 65 70 61 72 65 20 6e 65 77 20 62 75 66 66 65 72 20 77 69 74 68 20 4c 4c 4d 20 63 68 61 6e Prepare.new.buffer.with.LLM.chan
9b520 67 65 73 20 61 70 70 6c 69 65 64 20 61 6e 64 20 72 65 74 75 72 6e 20 69 74 2e 0a 0a 54 68 69 73 ges.applied.and.return.it...This
9b540 20 69 73 20 75 73 65 64 20 66 6f 72 20 28 65 29 64 69 66 66 20 70 75 72 70 6f 73 65 73 2e 0a 0a .is.used.for.(e)diff.purposes...
9b560 52 45 53 50 4f 4e 53 45 20 69 73 20 74 68 65 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 2e 20 20 4f RESPONSE.is.the.LLM.response...O
9b580 56 53 20 61 72 65 20 74 68 65 20 6f 76 65 72 6c 61 79 73 20 73 70 65 63 69 66 79 69 6e 67 0a 74 VS.are.the.overlays.specifying.t
9b5a0 68 65 20 63 68 61 6e 67 65 64 20 72 65 67 69 6f 6e 73 2e 20 42 55 46 20 69 73 20 74 68 65 20 28 he.changed.regions..BUF.is.the.(
9b5c0 63 75 72 72 65 6e 74 29 20 62 75 66 66 65 72 2e 22 0a 20 20 28 73 65 74 71 20 62 75 66 20 28 6f current).buffer."...(setq.buf.(o
9b5e0 72 20 62 75 66 20 28 6f 76 65 72 6c 61 79 2d 62 75 66 66 65 72 20 28 6f 72 20 28 63 61 72 2d 73 r.buf.(overlay-buffer.(or.(car-s
9b600 61 66 65 20 6f 76 73 29 20 6f 76 73 29 29 29 29 0a 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 afe.ovs).ovs))))...(with-current
9b620 2d 62 75 66 66 65 72 20 62 75 66 0a 20 20 20 20 28 6c 65 74 20 28 28 70 6d 69 6e 20 28 70 6f 69 -buffer.buf.....(let.((pmin.(poi
9b640 6e 74 2d 6d 69 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 6d 61 78 20 28 70 6f 69 6e 74 2d nt-min))...........(pmax.(point-
9b660 6d 61 78 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 74 20 20 20 28 70 6f 69 6e 74 29 29 0a 20 max))...........(pt...(point))..
9b680 20 20 20 20 20 20 20 20 20 3b 3b 20 28 6d 6f 64 65 20 6d 61 6a 6f 72 2d 6d 6f 64 65 29 0a 20 20 .........;;.(mode.major-mode)...
9b6a0 20 20 20 20 20 20 20 20 28 6e 65 77 62 75 66 20 28 67 65 74 2d 62 75 66 66 65 72 2d 63 72 65 61 ........(newbuf.(get-buffer-crea
9b6c0 74 65 20 22 2a 67 70 74 65 6c 2d 64 69 66 66 2a 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 69 te."*gptel-diff*"))...........(i
9b6e0 6e 68 69 62 69 74 2d 72 65 61 64 2d 6f 6e 6c 79 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 28 69 nhibit-read-only.t)...........(i
9b700 6e 68 69 62 69 74 2d 6d 65 73 73 61 67 65 20 74 29 29 0a 20 20 20 20 20 20 28 73 61 76 65 2d 72 nhibit-message.t)).......(save-r
9b720 65 73 74 72 69 63 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 28 77 69 64 65 6e 29 0a 20 20 20 20 20 estriction.........(widen)......
9b740 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 6e 65 77 62 75 66 0a 20 ...(with-current-buffer.newbuf..
9b760 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 20 20 20 20 .........(erase-buffer).........
9b780 20 20 28 69 6e 73 65 72 74 2d 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 20 62 75 66 29 29 ..(insert-buffer-substring.buf))
9b7a0 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 6e 65 77 ).......(with-current-buffer.new
9b7c0 62 75 66 0a 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 70 6d buf.........(narrow-to-region.pm
9b7e0 69 6e 20 70 6d 61 78 29 0a 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 70 74 29 0a in.pmax).........(goto-char.pt).
9b800 20 20 20 20 20 20 20 20 3b 3b 20 57 65 20 6d 6f 73 74 6c 79 20 6a 75 73 74 20 77 61 6e 74 20 66 ........;;.We.mostly.just.want.f
9b820 6f 6e 74 2d 6c 6f 63 6b 69 6e 67 0a 20 20 20 20 20 20 20 20 3b 3b 20 28 64 65 6c 61 79 2d 6d 6f ont-locking.........;;.(delay-mo
9b840 64 65 2d 68 6f 6f 6b 73 20 28 66 75 6e 63 61 6c 6c 20 6d 6f 64 65 29 29 0a 20 20 20 20 20 20 20 de-hooks.(funcall.mode))........
9b860 20 3b 3b 20 41 70 70 6c 79 20 74 68 65 20 63 68 61 6e 67 65 73 20 74 6f 20 74 68 65 20 6e 65 77 .;;.Apply.the.changes.to.the.new
9b880 20 62 75 66 66 65 72 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 .buffer.........(save-excursion.
9b8a0 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 61 63 63 65 70 74 ..........(gptel--rewrite-accept
9b8c0 20 6f 76 73 20 6e 65 77 62 75 66 29 29 29 0a 20 20 20 20 20 20 6e 65 77 62 75 66 29 29 29 0a 0a .ovs.newbuf))).......newbuf)))..
9b8e0 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 72 65 61 64 2d 6d 65 73 73 61 (defun.gptel--rewrite-read-messa
9b900 67 65 20 28 70 72 6f 6d 70 74 20 26 6f 70 74 69 6f 6e 61 6c 20 5f 20 68 69 73 74 6f 72 79 29 0a ge.(prompt.&optional._.history).
9b920 20 20 22 52 65 61 64 20 61 20 72 65 77 72 69 74 65 20 6d 65 73 73 61 67 65 20 66 72 6f 6d 20 74 .."Read.a.rewrite.message.from.t
9b940 68 65 20 6d 69 6e 69 62 75 66 66 65 72 20 77 69 74 68 20 63 75 73 74 6f 6d 20 6b 65 79 62 69 6e he.minibuffer.with.custom.keybin
9b960 64 69 6e 67 73 20 66 6f 72 0a 63 79 63 6c 69 6e 67 2c 20 65 64 69 74 69 6e 67 2c 20 61 6e 64 20 dings.for.cycling,.editing,.and.
9b980 73 75 62 6d 69 74 74 69 6e 67 20 74 68 65 20 67 70 74 65 6c 20 72 65 77 72 69 74 65 2e 0a 0a 50 submitting.the.gptel.rewrite...P
9b9a0 52 4f 4d 50 54 20 69 73 20 74 68 65 20 70 72 6f 6d 70 74 20 73 74 72 69 6e 67 20 74 6f 20 64 69 ROMPT.is.the.prompt.string.to.di
9b9c0 73 70 6c 61 79 2e 20 20 48 49 53 54 4f 52 59 2c 20 69 66 20 70 72 6f 76 69 64 65 64 2c 20 69 73 splay...HISTORY,.if.provided,.is
9b9e0 20 74 68 65 0a 69 6e 70 75 74 20 68 69 73 74 6f 72 79 20 6c 69 73 74 2e 22 0a 20 20 28 6c 65 74 .the.input.history.list."...(let
9ba00 2a 20 28 28 72 65 77 72 69 74 65 2d 64 69 72 65 63 74 69 76 65 0a 20 20 20 20 20 20 20 20 20 20 *.((rewrite-directive...........
9ba20 28 63 61 72 2d 73 61 66 65 20 28 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 64 69 72 65 63 74 69 76 (car-safe.(gptel--parse-directiv
9ba40 65 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 64 69 72 65 63 74 69 76 65 20 27 72 61 77 29 e.gptel--rewrite-directive.'raw)
9ba60 29 29 0a 20 20 20 20 20 20 20 20 20 28 63 62 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 ))..........(cb.(current-buffer)
9ba80 29 0a 20 20 20 20 20 20 20 20 20 28 63 79 63 6c 65 2d 70 72 65 66 69 78 20 28 6c 61 6d 62 64 61 )..........(cycle-prefix.(lambda
9baa0 20 28 29 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .().(interactive)...............
9bac0 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 72 65 61 64 2d 77 69 74 68 2d 70 72 65 ...........(gptel--read-with-pre
9bae0 66 69 78 20 72 65 77 72 69 74 65 2d 64 69 72 65 63 74 69 76 65 29 0a 20 20 20 20 20 20 20 20 20 fix.rewrite-directive)..........
9bb00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 2d 6d 61 72 6b 29 20 28 67 6f 74 ................(push-mark).(got
9bb20 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 o-char.(point-max)).............
9bb40 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 63 74 69 76 61 74 65 2d 6d 61 72 6b 29 29 29 0a 20 .............(activate-mark)))..
9bb60 20 20 20 20 20 20 20 20 28 73 65 74 2d 72 65 77 72 69 74 65 2d 6d 65 73 73 61 67 65 0a 20 20 20 ........(set-rewrite-message....
9bb80 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6c .......(lambda.().............(l
9bba0 65 74 20 28 28 6d 65 73 73 61 67 65 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 2d 6e et.((message.(buffer-substring-n
9bbc0 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....................
9bbe0 20 20 20 20 20 20 20 20 20 28 6d 69 6e 69 62 75 66 66 65 72 2d 70 72 6f 6d 70 74 2d 65 6e 64 29 .........(minibuffer-prompt-end)
9bc00 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 .(point-max))))...............(w
9bc20 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 63 62 20 28 73 65 74 71 20 67 70 74 65 ith-current-buffer.cb.(setq.gpte
9bc40 6c 2d 2d 72 65 77 72 69 74 65 2d 6d 65 73 73 61 67 65 20 6d 65 73 73 61 67 65 29 29 0a 20 20 20 l--rewrite-message.message))....
9bc60 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 66 20 28 61 6c 69 73 74 2d 67 65 74 20 27 67 70 74 ...........(setf.(alist-get.'gpt
9bc80 65 6c 2d 2d 69 6e 66 69 78 2d 72 65 77 72 69 74 65 2d 65 78 74 72 61 20 74 72 61 6e 73 69 65 6e el--infix-rewrite-extra.transien
9bca0 74 2d 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 28 t-history).....................(
9bcc0 64 65 6c 65 74 65 2d 64 75 70 73 20 28 63 6f 6e 73 20 6d 65 73 73 61 67 65 20 74 72 61 6e 73 69 delete-dups.(cons.message.transi
9bce0 65 6e 74 2d 2d 68 69 73 74 6f 72 79 29 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 73 74 61 ent--history))))))..........(sta
9bd00 72 74 2d 72 65 77 72 69 74 65 2d 6d 61 79 62 65 0a 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 rt-rewrite-maybe...........(lamb
9bd20 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 20 20 20 20 20 20 da.().(interactive).............
9bd40 28 69 66 20 74 72 61 6e 73 69 65 6e 74 2d 2d 70 72 65 66 69 78 20 20 20 20 3b 43 61 6c 6c 65 64 (if.transient--prefix....;Called
9bd60 20 66 72 6f 6d 20 74 72 61 6e 73 69 65 6e 74 3f 20 44 6f 6e 27 74 20 73 74 61 72 74 20 72 65 77 .from.transient?.Don't.start.rew
9bd80 72 69 74 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 75 6e 2d 61 74 2d 74 69 6d rite.................(run-at-tim
9bda0 65 20 30 20 6e 69 6c 20 23 27 74 72 61 6e 73 69 65 6e 74 2d 73 65 74 75 70 20 27 67 70 74 65 6c e.0.nil.#'transient-setup.'gptel
9bdc0 2d 72 65 77 72 69 74 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 75 6e 2d 61 74 2d -rewrite)...............(run-at-
9bde0 74 69 6d 65 20 30 20 6e 69 6c 20 23 27 67 70 74 65 6c 2d 2d 73 75 66 66 69 78 2d 72 65 77 72 69 time.0.nil.#'gptel--suffix-rewri
9be00 74 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 te.gptel--rewrite-message)).....
9be20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 6d 69 6e 69 62 75 66 66 65 72 70 29 0a 20 20 20 20 ........(when.(minibufferp).....
9be40 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 73 65 74 2d 72 65 77 72 69 74 65 2d 6d ..........(funcall.set-rewrite-m
9be60 65 73 73 61 67 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 69 6e 69 62 75 66 66 65 essage)...............(minibuffe
9be80 72 2d 71 75 69 74 2d 72 65 63 75 72 73 69 76 65 2d 65 64 69 74 29 29 29 29 0a 20 20 20 20 20 20 r-quit-recursive-edit)))).......
9bea0 20 20 20 28 73 74 61 72 74 2d 74 72 61 6e 73 69 65 6e 74 0a 20 20 20 20 20 20 20 20 20 20 28 6c ...(start-transient...........(l
9bec0 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 20 20 20 ambda.().(interactive)..........
9bee0 20 20 20 28 72 75 6e 2d 61 74 2d 74 69 6d 65 20 30 20 6e 69 6c 20 23 27 74 72 61 6e 73 69 65 6e ...(run-at-time.0.nil.#'transien
9bf00 74 2d 73 65 74 75 70 20 27 67 70 74 65 6c 2d 72 65 77 72 69 74 65 29 0a 20 20 20 20 20 20 20 20 t-setup.'gptel-rewrite).........
9bf20 20 20 20 20 28 77 68 65 6e 20 28 6d 69 6e 69 62 75 66 66 65 72 70 29 0a 20 20 20 20 20 20 20 20 ....(when.(minibufferp).........
9bf40 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 73 65 74 2d 72 65 77 72 69 74 65 2d 6d 65 73 73 61 ......(funcall.set-rewrite-messa
9bf60 67 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 69 6e 69 62 75 66 66 65 72 2d 71 75 ge)...............(minibuffer-qu
9bf80 69 74 2d 72 65 63 75 72 73 69 76 65 2d 65 64 69 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 it-recursive-edit))))..........(
9bfa0 65 64 69 74 2d 69 6e 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 edit-in-buffer...........(lambda
9bfc0 20 28 29 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6c .().(interactive).............(l
9bfe0 65 74 20 28 28 6f 66 66 73 65 74 20 28 2d 20 28 70 6f 69 6e 74 29 20 28 6d 69 6e 69 62 75 66 66 et.((offset.(-.(point).(minibuff
9c000 65 72 2d 70 72 6f 6d 70 74 2d 65 6e 64 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 er-prompt-end))))...............
9c020 28 67 70 74 65 6c 2d 2d 65 64 69 74 2d 64 69 72 65 63 74 69 76 65 20 27 67 70 74 65 6c 2d 2d 72 (gptel--edit-directive.'gptel--r
9c040 65 77 72 69 74 65 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 3a ewrite-message.................:
9c060 70 72 6f 6d 70 74 20 72 65 77 72 69 74 65 2d 64 69 72 65 63 74 69 76 65 20 3a 69 6e 69 74 69 61 prompt.rewrite-directive.:initia
9c080 6c 20 28 6d 69 6e 69 62 75 66 66 65 72 2d 63 6f 6e 74 65 6e 74 73 29 0a 20 20 20 20 20 20 20 20 l.(minibuffer-contents).........
9c0a0 20 20 20 20 20 20 20 20 3a 62 75 66 66 65 72 20 63 62 20 3a 73 65 74 75 70 20 28 6c 61 6d 62 64 ........:buffer.cb.:setup.(lambd
9c0c0 61 20 28 29 20 28 69 67 6e 6f 72 65 2d 65 72 72 6f 72 73 20 28 66 6f 72 77 61 72 64 2d 63 68 61 a.().(ignore-errors.(forward-cha
9c0e0 72 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 20 20 3a 63 61 6c r.offset))).................:cal
9c100 6c 62 61 63 6b 0a 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 6d lback.................(lambda.(m
9c120 73 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 6d 73 67 0a sg)...................(when.msg.
9c140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 75 6e 2d 61 74 2d 74 69 6d 65 ....................(run-at-time
9c160 20 30 20 6e 69 6c 20 23 27 67 70 74 65 6c 2d 2d 73 75 66 66 69 78 2d 72 65 77 72 69 74 65 29 0a .0.nil.#'gptel--suffix-rewrite).
9c180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 62 75 66 66 65 ....................(push.(buffe
9c1a0 72 2d 6c 6f 63 61 6c 2d 76 61 6c 75 65 20 27 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6d 65 r-local-value.'gptel--rewrite-me
9c1c0 73 73 61 67 65 20 63 62 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ssage.cb).......................
9c1e0 20 20 20 20 28 61 6c 69 73 74 2d 67 65 74 20 27 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 72 65 77 ....(alist-get.'gptel--infix-rew
9c200 72 69 74 65 2d 65 78 74 72 61 20 74 72 61 6e 73 69 65 6e 74 2d 68 69 73 74 6f 72 79 29 29 29 0a rite-extra.transient-history))).
9c220 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 6d 69 6e 69 62 75 66 ..................(when.(minibuf
9c240 66 65 72 70 29 20 28 6d 69 6e 69 62 75 66 66 65 72 2d 71 75 69 74 2d 72 65 63 75 72 73 69 76 65 ferp).(minibuffer-quit-recursive
9c260 2d 65 64 69 74 29 29 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 6d 69 6e 69 62 75 66 66 65 -edit)))))))..........(minibuffe
9c280 72 2d 6c 6f 63 61 6c 2d 6d 61 70 0a 20 20 20 20 20 20 20 20 20 20 28 6d 61 6b 65 2d 63 6f 6d 70 r-local-map...........(make-comp
9c2a0 6f 73 65 64 2d 6b 65 79 6d 61 70 20 28 64 65 66 69 6e 65 2d 6b 65 79 6d 61 70 0a 20 20 20 20 20 osed-keymap.(define-keymap......
9c2c0 20 20 20 20 20 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 54 41 ............................."TA
9c2e0 42 22 20 63 79 63 6c 65 2d 70 72 65 66 69 78 20 22 3c 74 61 62 3e 22 20 63 79 63 6c 65 2d 70 72 B".cycle-prefix."<tab>".cycle-pr
9c300 65 66 69 78 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 efix............................
9c320 20 20 20 20 20 20 20 22 43 2d 63 20 43 2d 65 22 20 65 64 69 74 2d 69 6e 2d 62 75 66 66 65 72 0a ......."C-c.C-e".edit-in-buffer.
9c340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
9c360 20 20 22 3c 72 65 6d 61 70 3e 20 3c 65 78 69 74 2d 6d 69 6e 69 62 75 66 66 65 72 3e 22 20 73 74 .."<remap>.<exit-minibuffer>".st
9c380 61 72 74 2d 72 65 77 72 69 74 65 2d 6d 61 79 62 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 art-rewrite-maybe...............
9c3a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4d 2d 52 45 54 22 20 73 74 61 72 ...................."M-RET".star
9c3c0 74 2d 74 72 61 6e 73 69 65 6e 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 t-transient)....................
9c3e0 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 69 6e 69 62 75 66 66 65 72 2d 6c 6f 63 61 6c 2d 6d 61 .............minibuffer-local-ma
9c400 70 29 29 29 0a 20 20 20 20 28 6d 69 6e 69 62 75 66 66 65 72 2d 77 69 74 68 2d 73 65 74 75 70 2d p))).....(minibuffer-with-setup-
9c420 68 6f 6f 6b 20 63 79 63 6c 65 2d 70 72 65 66 69 78 0a 20 20 20 20 20 20 28 72 65 61 64 2d 73 74 hook.cycle-prefix.......(read-st
9c440 72 69 6e 67 0a 20 20 20 20 20 20 20 70 72 6f 6d 70 74 20 28 6f 72 20 67 70 74 65 6c 2d 2d 72 65 ring........prompt.(or.gptel--re
9c460 77 72 69 74 65 2d 6d 65 73 73 61 67 65 20 22 52 65 77 72 69 74 65 3a 20 22 29 0a 20 20 20 20 20 write-message."Rewrite:.")......
9c480 20 20 68 69 73 74 6f 72 79 29 29 29 29 0a 0a 3b 3b 20 2a 20 52 65 77 72 69 74 65 20 61 63 74 69 ..history))))..;;.*.Rewrite.acti
9c4a0 6f 6e 20 66 75 6e 63 74 69 6f 6e 73 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 72 65 77 72 on.functions..(defun.gptel--rewr
9c4c0 69 74 65 2d 72 65 6a 65 63 74 20 28 26 6f 70 74 69 6f 6e 61 6c 20 6f 76 73 29 0a 20 20 22 43 6c ite-reject.(&optional.ovs)..."Cl
9c4e0 65 61 72 20 70 65 6e 64 69 6e 67 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 73 20 69 6e 20 4f 56 53 ear.pending.LLM.responses.in.OVS
9c500 20 6f 72 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 20 28 6c .or.at.point."...(interactive.(l
9c520 69 73 74 20 28 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6f 76 65 72 6c 61 79 2d 61 74 29 29 ist.(gptel--rewrite-overlay-at))
9c540 29 0a 20 20 28 64 6f 6c 69 73 74 20 28 6f 76 20 28 65 6e 73 75 72 65 2d 6c 69 73 74 20 6f 76 73 )...(dolist.(ov.(ensure-list.ovs
9c560 29 29 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 6f 76 65 72 )).....(setq.gptel--rewrite-over
9c580 6c 61 79 73 20 28 64 65 6c 71 20 6f 76 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6f 76 65 lays.(delq.ov.gptel--rewrite-ove
9c5a0 72 6c 61 79 73 29 29 0a 20 20 20 20 28 64 65 6c 65 74 65 2d 6f 76 65 72 6c 61 79 20 6f 76 29 29 rlays)).....(delete-overlay.ov))
9c5c0 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 6f 76 65 72 6c 61 ...(unless.gptel--rewrite-overla
9c5e0 79 73 0a 20 20 20 20 28 72 65 6d 6f 76 65 2d 68 6f 6f 6b 20 27 65 6c 64 6f 63 2d 64 6f 63 75 6d ys.....(remove-hook.'eldoc-docum
9c600 65 6e 74 61 74 69 6f 6e 2d 66 75 6e 63 74 69 6f 6e 73 20 27 67 70 74 65 6c 2d 2d 72 65 77 72 69 entation-functions.'gptel--rewri
9c620 74 65 2d 6b 65 79 2d 68 65 6c 70 20 27 6c 6f 63 61 6c 29 29 0a 20 20 28 6d 65 73 73 61 67 65 20 te-key-help.'local))...(message.
9c640 22 43 6c 65 61 72 65 64 20 70 65 6e 64 69 6e 67 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 28 73 29 "Cleared.pending.LLM.response(s)
9c660 2e 22 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 61 63 63 65 ."))..(defun.gptel--rewrite-acce
9c680 70 74 20 28 26 6f 70 74 69 6f 6e 61 6c 20 6f 76 73 20 62 75 66 29 0a 20 20 22 41 70 70 6c 79 20 pt.(&optional.ovs.buf)..."Apply.
9c6a0 70 65 6e 64 69 6e 67 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 73 20 69 6e 20 4f 56 53 20 6f 72 20 pending.LLM.responses.in.OVS.or.
9c6c0 61 74 20 70 6f 69 6e 74 2e 0a 0a 42 55 46 20 69 73 20 74 68 65 20 62 75 66 66 65 72 20 74 6f 20 at.point...BUF.is.the.buffer.to.
9c6e0 6d 6f 64 69 66 79 2c 20 64 65 66 61 75 6c 74 73 20 74 6f 20 74 68 65 20 6f 76 65 72 6c 61 79 20 modify,.defaults.to.the.overlay.
9c700 62 75 66 66 65 72 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 67 buffer."...(interactive.(list.(g
9c720 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6f 76 65 72 6c 61 79 2d 61 74 29 29 29 0a 20 20 28 77 ptel--rewrite-overlay-at)))...(w
9c740 68 65 6e 2d 6c 65 74 2a 20 28 28 6f 76 2d 62 75 66 20 28 6f 76 65 72 6c 61 79 2d 62 75 66 66 65 hen-let*.((ov-buf.(overlay-buffe
9c760 72 20 28 6f 72 20 28 63 61 72 2d 73 61 66 65 20 6f 76 73 29 20 6f 76 73 29 29 29 0a 20 20 20 20 r.(or.(car-safe.ovs).ovs))).....
9c780 20 20 20 20 20 20 20 20 20 20 28 62 75 66 20 28 6f 72 20 62 75 66 20 6f 76 2d 62 75 66 29 29 0a ..........(buf.(or.buf.ov-buf)).
9c7a0 20 20 20 20 20 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 62 75 ..............((buffer-live-p.bu
9c7c0 66 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 6f 76 f))).....(with-current-buffer.ov
9c7e0 2d 62 75 66 0a 20 20 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 6f 76 20 69 6e 20 28 65 -buf.......(cl-loop.for.ov.in.(e
9c800 6e 73 75 72 65 2d 6c 69 73 74 20 6f 76 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 nsure-list.ovs)................f
9c820 6f 72 20 6f 76 2d 62 65 67 20 3d 20 28 6f 76 65 72 6c 61 79 2d 73 74 61 72 74 20 6f 76 29 0a 20 or.ov-beg.=.(overlay-start.ov)..
9c840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 6f 76 2d 65 6e 64 20 3d 20 28 6f 76 65 72 ..............for.ov-end.=.(over
9c860 6c 61 79 2d 65 6e 64 20 6f 76 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 72 lay-end.ov)................for.r
9c880 65 73 70 6f 6e 73 65 20 3d 20 28 6f 76 65 72 6c 61 79 2d 67 65 74 20 6f 76 20 27 67 70 74 65 6c esponse.=.(overlay-get.ov.'gptel
9c8a0 2d 72 65 77 72 69 74 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 20 28 6f 76 65 -rewrite)................do.(ove
9c8c0 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 6c 29 0a rlay-put.ov.'before-string.nil).
9c8e0 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 75 66 ...............(with-current-buf
9c900 66 65 72 20 62 75 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 fer.buf..................(goto-c
9c920 68 61 72 20 6f 76 2d 62 65 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 65 har.ov-beg)..................(de
9c940 6c 65 74 65 2d 72 65 67 69 6f 6e 20 6f 76 2d 62 65 67 20 6f 76 2d 65 6e 64 29 0a 20 20 20 20 20 lete-region.ov-beg.ov-end)......
9c960 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 29 29 29 ............(insert.response))))
9c980 0a 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 52 65 70 6c 61 63 65 64 20 72 65 67 69 6f 6e 28 73 .....(message."Replaced.region(s
9c9a0 29 20 77 69 74 68 20 4c 4c 4d 20 6f 75 74 70 75 74 20 69 6e 20 62 75 66 66 65 72 3a 20 25 73 2e ).with.LLM.output.in.buffer:.%s.
9c9c0 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 2d 6e 61 6d 65 20 6f 76 2d 62 "..............(buffer-name.ov-b
9c9e0 75 66 29 29 29 29 0a 0a 28 64 65 66 61 6c 69 61 73 20 27 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 uf))))..(defalias.'gptel--rewrit
9ca00 65 2d 69 74 65 72 61 74 65 20 27 67 70 74 65 6c 2d 72 65 77 72 69 74 65 0a 20 20 22 49 74 65 72 e-iterate.'gptel-rewrite..."Iter
9ca20 61 74 65 20 6f 6e 20 70 65 6e 64 69 6e 67 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 20 61 74 20 70 ate.on.pending.LLM.response.at.p
9ca40 6f 69 6e 74 2e 22 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 64 oint.")..(defun.gptel--rewrite-d
9ca60 69 66 66 20 28 26 6f 70 74 69 6f 6e 61 6c 20 6f 76 73 20 73 77 69 74 63 68 65 73 29 0a 20 20 22 iff.(&optional.ovs.switches)..."
9ca80 44 69 66 66 20 70 65 6e 64 69 6e 67 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 73 20 69 6e 20 4f 56 Diff.pending.LLM.responses.in.OV
9caa0 53 20 6f 72 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 20 28 S.or.at.point."...(interactive.(
9cac0 6c 69 73 74 20 28 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6f 76 65 72 6c 61 79 2d 61 74 29 list.(gptel--rewrite-overlay-at)
9cae0 29 29 0a 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 6f 76 2d 62 75 66 20 28 6f 76 65 72 6c 61 ))...(when-let*.((ov-buf.(overla
9cb00 79 2d 62 75 66 66 65 72 20 28 6f 72 20 28 63 61 72 2d 73 61 66 65 20 6f 76 73 29 20 6f 76 73 29 y-buffer.(or.(car-safe.ovs).ovs)
9cb20 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 62 75 66 66 65 72 2d 6c 69 76 65 2d 70 ))...............((buffer-live-p
9cb40 20 6f 76 2d 62 75 66 29 29 29 0a 20 20 20 20 28 72 65 71 75 69 72 65 20 27 64 69 66 66 29 0a 20 .ov-buf))).....(require.'diff)..
9cb60 20 20 20 28 6c 65 74 2a 20 28 28 6e 65 77 62 75 66 20 28 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 ...(let*.((newbuf.(gptel--rewrit
9cb80 65 2d 70 72 65 70 61 72 65 2d 62 75 66 66 65 72 20 6f 76 73 29 29 0a 20 20 20 20 20 20 20 20 20 e-prepare-buffer.ovs))..........
9cba0 20 20 28 64 69 66 66 2d 62 75 66 20 28 64 69 66 66 2d 6e 6f 2d 73 65 6c 65 63 74 20 6f 76 2d 62 ..(diff-buf.(diff-no-select.ov-b
9cbc0 75 66 20 6e 65 77 62 75 66 20 73 77 69 74 63 68 65 73 29 29 29 0a 20 20 20 20 20 20 28 77 69 74 uf.newbuf.switches))).......(wit
9cbe0 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 64 69 66 66 2d 62 75 66 0a 20 20 20 20 20 20 h-current-buffer.diff-buf.......
9cc00 20 20 28 73 65 74 71 2d 6c 6f 63 61 6c 20 64 69 66 66 2d 6a 75 6d 70 2d 74 6f 2d 6f 6c 64 2d 66 ..(setq-local.diff-jump-to-old-f
9cc20 69 6c 65 20 74 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 64 69 ile.t)).......(display-buffer.di
9cc40 66 66 2d 62 75 66 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 ff-buf))))..(defun.gptel--rewrit
9cc60 65 2d 65 64 69 66 66 20 28 26 6f 70 74 69 6f 6e 61 6c 20 6f 76 73 29 0a 20 20 22 45 64 69 66 66 e-ediff.(&optional.ovs)..."Ediff
9cc80 20 70 65 6e 64 69 6e 67 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 73 20 69 6e 20 4f 56 53 20 6f 72 .pending.LLM.responses.in.OVS.or
9cca0 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 20 28 6c 69 73 74 .at.point."...(interactive.(list
9ccc0 20 28 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6f 76 65 72 6c 61 79 2d 61 74 29 29 29 0a 20 .(gptel--rewrite-overlay-at)))..
9cce0 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 6f 76 2d 62 75 66 20 28 6f 76 65 72 6c 61 79 2d 62 75 .(when-let*.((ov-buf.(overlay-bu
9cd00 66 66 65 72 20 28 6f 72 20 28 63 61 72 2d 73 61 66 65 20 6f 76 73 29 20 6f 76 73 29 29 29 0a 20 ffer.(or.(car-safe.ovs).ovs)))..
9cd20 20 20 20 20 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 6f 76 2d .............((buffer-live-p.ov-
9cd40 62 75 66 29 29 29 0a 20 20 20 20 28 6c 65 74 72 65 63 20 28 28 6e 65 77 62 75 66 20 28 67 70 74 buf))).....(letrec.((newbuf.(gpt
9cd60 65 6c 2d 2d 72 65 77 72 69 74 65 2d 70 72 65 70 61 72 65 2d 62 75 66 66 65 72 20 6f 76 73 29 29 el--rewrite-prepare-buffer.ovs))
9cd80 0a 20 20 20 20 20 20 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 ..............(cwc.(current-wind
9cda0 6f 77 2d 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ow-configuration))..............
9cdc0 28 68 69 64 65 73 68 6f 77 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 (hideshow...............(lambda.
9cde0 28 26 6f 70 74 69 6f 6e 61 6c 20 72 65 73 74 6f 72 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 (&optional.restore).............
9ce00 20 20 20 20 28 64 6f 6c 69 73 74 20 28 6f 76 20 28 65 6e 73 75 72 65 2d 6c 69 73 74 20 6f 76 73 ....(dolist.(ov.(ensure-list.ovs
9ce20 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 6e 2d 6c 65 74 2a 20 ))...................(when-let*.
9ce40 28 28 6f 76 65 72 6c 61 79 2d 62 75 66 66 65 72 20 6f 76 29 29 0a 20 20 20 20 20 20 20 20 20 20 ((overlay-buffer.ov))...........
9ce60 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 64 69 73 70 20 28 6f 76 65 72 6c 61 79 2d 67 ..........(let.((disp.(overlay-g
9ce80 65 74 20 6f 76 20 27 64 69 73 70 6c 61 79 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 et.ov.'display))................
9cea0 20 20 20 20 20 20 20 20 20 20 20 28 73 74 6f 72 65 64 20 28 6f 76 65 72 6c 61 79 2d 67 65 74 20 ...........(stored.(overlay-get.
9cec0 6f 76 20 27 67 70 74 65 6c 2d 2d 65 64 69 66 66 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 ov.'gptel--ediff))).............
9cee0 20 20 20 20 20 20 20 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75 74 20 6f 76 20 27 66 61 63 65 20 ..........(overlay-put.ov.'face.
9cf00 28 61 6e 64 20 72 65 73 74 6f 72 65 20 27 67 70 74 65 6c 2d 72 65 77 72 69 74 65 2d 68 69 67 68 (and.restore.'gptel-rewrite-high
9cf20 6c 69 67 68 74 2d 66 61 63 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 light-face))....................
9cf40 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75 74 20 6f 76 20 27 64 69 73 70 6c 61 79 20 28 61 6e 64 ...(overlay-put.ov.'display.(and
9cf60 20 72 65 73 74 6f 72 65 20 73 74 6f 72 65 64 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .restore.stored))...............
9cf80 20 20 20 20 20 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75 74 20 6f 76 20 27 67 70 74 65 6c 2d 2d ........(overlay-put.ov.'gptel--
9cfa0 65 64 69 66 66 20 28 75 6e 6c 65 73 73 20 72 65 73 74 6f 72 65 20 64 69 73 70 29 29 29 29 29 29 ediff.(unless.restore.disp))))))
9cfc0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 65 64 69 66 66 2d 72 65 73 )..............(gptel--ediff-res
9cfe0 74 6f 72 65 0a 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 tore...............(lambda.()...
9d000 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 63 6f 6e 66 ..............(when.(window-conf
9d020 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 20 20 20 20 iguration-p.cwc)................
9d040 20 20 20 28 73 65 74 2d 77 69 6e 64 6f 77 2d 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 63 77 63 ...(set-window-configuration.cwc
9d060 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 68 69 64 65 )).................(funcall.hide
9d080 73 68 6f 77 20 27 72 65 73 74 6f 72 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 show.'restore).................(
9d0a0 72 65 6d 6f 76 65 2d 68 6f 6f 6b 20 27 65 64 69 66 66 2d 71 75 69 74 2d 68 6f 6f 6b 20 67 70 74 remove-hook.'ediff-quit-hook.gpt
9d0c0 65 6c 2d 2d 65 64 69 66 66 2d 72 65 73 74 6f 72 65 29 29 29 29 0a 20 20 20 20 20 20 28 66 75 6e el--ediff-restore)))).......(fun
9d0e0 63 61 6c 6c 20 68 69 64 65 73 68 6f 77 29 0a 20 20 20 20 20 20 28 61 64 64 2d 68 6f 6f 6b 20 27 call.hideshow).......(add-hook.'
9d100 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 73 ediff-quit-hook.gptel--ediff-res
9d120 74 6f 72 65 29 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 65 64 69 66 66 2d 77 69 6e 64 6f 77 2d tore).......(let.((ediff-window-
9d140 73 65 74 75 70 2d 66 75 6e 63 74 69 6f 6e 20 23 27 65 64 69 66 66 2d 73 65 74 75 70 2d 77 69 6e setup-function.#'ediff-setup-win
9d160 64 6f 77 73 2d 70 6c 61 69 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 65 64 69 66 66 2d 73 dows-plain).............(ediff-s
9d180 70 6c 69 74 2d 77 69 6e 64 6f 77 2d 66 75 6e 63 74 69 6f 6e 20 23 27 73 70 6c 69 74 2d 77 69 6e plit-window-function.#'split-win
9d1a0 64 6f 77 2d 68 6f 72 69 7a 6f 6e 74 61 6c 6c 79 29 29 0a 20 20 20 20 20 20 20 20 28 65 64 69 66 dow-horizontally)).........(edif
9d1c0 66 2d 62 75 66 66 65 72 73 20 6f 76 2d 62 75 66 20 6e 65 77 62 75 66 29 29 29 29 29 0a 0a 28 64 f-buffers.ov-buf.newbuf)))))..(d
9d1e0 65 66 75 6e 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6d 65 72 67 65 2d 67 69 74 20 28 62 efun.gptel--rewrite-merge-git.(b
9d200 65 67 20 65 6e 64 20 6e 65 77 2d 73 74 72 29 0a 20 20 22 50 72 6f 64 75 63 65 20 61 20 6d 65 72 eg.end.new-str)..."Produce.a.mer
9d220 67 65 20 63 6f 6e 66 6c 69 63 74 20 72 65 67 69 6f 6e 20 62 65 74 77 65 65 6e 20 42 45 47 20 61 ge.conflict.region.between.BEG.a
9d240 6e 64 20 45 4e 44 2e 0a 0a 4d 65 72 67 65 20 74 68 65 20 72 65 67 69 6f 6e 20 77 69 74 68 20 4e nd.END...Merge.the.region.with.N
9d260 45 57 2d 53 54 52 20 75 73 69 6e 67 20 67 69 74 20 6d 65 72 67 65 2d 66 69 6c 65 2e 22 0a 20 20 EW-STR.using.git.merge-file."...
9d280 28 6c 65 74 20 28 28 6f 72 69 67 69 6e 61 6c 2d 74 65 6d 70 2d 66 69 6c 65 20 28 6d 61 6b 65 2d (let.((original-temp-file.(make-
9d2a0 74 65 6d 70 2d 66 69 6c 65 20 22 67 70 74 65 6c 2d 6d 65 72 67 65 2d 22 29 29 0a 20 20 20 20 20 temp-file."gptel-merge-"))......
9d2c0 20 20 20 28 65 6d 70 74 79 2d 74 65 6d 70 2d 66 69 6c 65 20 28 6d 61 6b 65 2d 74 65 6d 70 2d 66 ...(empty-temp-file.(make-temp-f
9d2e0 69 6c 65 20 22 67 70 74 65 6c 2d 6d 65 72 67 65 2d 22 29 29 20 3b 20 75 73 65 20 2f 64 65 76 2f ile."gptel-merge-")).;.use./dev/
9d300 6e 75 6c 6c 3f 20 28 77 69 6e 64 6f 77 73 3f 29 0a 20 20 20 20 20 20 20 20 28 6e 65 77 2d 74 65 null?.(windows?).........(new-te
9d320 6d 70 2d 66 69 6c 65 20 28 6d 61 6b 65 2d 74 65 6d 70 2d 66 69 6c 65 20 22 67 70 74 65 6c 2d 6d mp-file.(make-temp-file."gptel-m
9d340 65 72 67 65 2d 22 29 29 29 0a 20 20 20 20 28 75 6e 77 69 6e 64 2d 70 72 6f 74 65 63 74 0a 20 20 erge-"))).....(unwind-protect...
9d360 20 20 20 20 20 20 28 70 72 6f 67 6e 20 28 77 72 69 74 65 2d 72 65 67 69 6f 6e 20 62 65 67 20 65 ......(progn.(write-region.beg.e
9d380 6e 64 20 6f 72 69 67 69 6e 61 6c 2d 74 65 6d 70 2d 66 69 6c 65 29 0a 20 20 20 20 20 20 20 20 20 nd.original-temp-file)..........
9d3a0 20 20 20 20 20 20 28 77 69 74 68 2d 74 65 6d 70 2d 66 69 6c 65 20 65 6d 70 74 79 2d 74 65 6d 70 ......(with-temp-file.empty-temp
9d3c0 2d 66 69 6c 65 20 28 69 6e 73 65 72 74 20 22 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 -file.(insert.""))..............
9d3e0 20 20 28 77 69 74 68 2d 74 65 6d 70 2d 66 69 6c 65 20 6e 65 77 2d 74 65 6d 70 2d 66 69 6c 65 20 ..(with-temp-file.new-temp-file.
9d400 28 69 6e 73 65 72 74 20 6e 65 77 2d 73 74 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (insert.new-str))...............
9d420 20 28 67 6f 74 6f 2d 63 68 61 72 20 62 65 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .(goto-char.beg)................
9d440 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 20 20 20 20 (delete-region.beg.end).........
9d460 20 20 20 20 20 20 20 28 63 61 6c 6c 2d 70 72 6f 63 65 73 73 0a 20 20 20 20 20 20 20 20 20 20 20 .......(call-process............
9d480 20 20 20 20 20 22 67 69 74 22 20 6e 69 6c 20 28 6c 69 73 74 20 28 63 75 72 72 65 6e 74 2d 62 75 ....."git".nil.(list.(current-bu
9d4a0 66 66 65 72 29 20 6e 69 6c 29 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 ffer).nil).nil................."
9d4c0 6d 65 72 67 65 2d 66 69 6c 65 22 20 22 2d 2d 6e 6f 2d 64 69 66 66 33 22 20 22 2d 4c 22 20 22 6f merge-file"."--no-diff3"."-L"."o
9d4e0 72 69 67 69 6e 61 6c 22 20 22 2d 4c 22 20 22 45 6d 70 74 79 22 20 22 2d 4c 22 0a 20 20 20 20 20 riginal"."-L"."Empty"."-L"......
9d500 20 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 ...........(gptel-backend-name.g
9d520 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 20 22 2d 70 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ptel-backend)."-p"..............
9d540 20 20 20 6f 72 69 67 69 6e 61 6c 2d 74 65 6d 70 2d 66 69 6c 65 20 65 6d 70 74 79 2d 74 65 6d 70 ...original-temp-file.empty-temp
9d560 2d 66 69 6c 65 20 6e 65 77 2d 74 65 6d 70 2d 66 69 6c 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 -file.new-temp-file)............
9d580 20 20 20 20 3b 3b 20 4d 61 6b 65 20 6d 65 72 67 65 20 6d 61 72 6b 65 72 20 61 63 74 69 76 65 20 ....;;.Make.merge.marker.active.
9d5a0 69 66 20 72 65 71 75 69 72 65 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f if.required................(goto
9d5c0 2d 63 68 61 72 20 62 65 67 29 20 28 75 6e 6c 65 73 73 20 28 62 6f 6c 70 29 20 28 69 6e 73 65 72 -char.beg).(unless.(bolp).(inser
9d5e0 74 20 22 5c 6e 22 29 29 29 0a 20 20 20 20 20 20 28 64 65 6c 65 74 65 2d 66 69 6c 65 20 6f 72 69 t."\n"))).......(delete-file.ori
9d600 67 69 6e 61 6c 2d 74 65 6d 70 2d 66 69 6c 65 29 0a 20 20 20 20 20 20 28 64 65 6c 65 74 65 2d 66 ginal-temp-file).......(delete-f
9d620 69 6c 65 20 65 6d 70 74 79 2d 74 65 6d 70 2d 66 69 6c 65 29 0a 20 20 20 20 20 20 28 64 65 6c 65 ile.empty-temp-file).......(dele
9d640 74 65 2d 66 69 6c 65 20 6e 65 77 2d 74 65 6d 70 2d 66 69 6c 65 29 29 29 29 0a 0a 28 64 65 66 75 te-file.new-temp-file))))..(defu
9d660 6e 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6d 65 72 67 65 2d 73 69 6d 70 6c 65 20 28 62 n.gptel--rewrite-merge-simple.(b
9d680 65 67 20 65 6e 64 20 6e 65 77 2d 73 74 72 29 0a 20 20 22 50 72 6f 64 75 63 65 20 61 20 6d 65 72 eg.end.new-str)..."Produce.a.mer
9d6a0 67 65 20 63 6f 6e 66 6c 69 63 74 20 72 65 67 69 6f 6e 20 62 65 74 77 65 65 6e 20 42 45 47 20 61 ge.conflict.region.between.BEG.a
9d6c0 6e 64 20 45 4e 44 2e 0a 0a 4e 45 57 2d 53 54 52 20 69 73 20 74 68 65 20 6e 65 77 20 73 74 72 69 nd.END...NEW-STR.is.the.new.stri
9d6e0 6e 67 20 69 6e 74 65 6e 64 65 64 20 74 6f 20 72 65 70 6c 61 63 65 20 74 68 65 20 72 65 67 69 6f ng.intended.to.replace.the.regio
9d700 6e 2e 22 0a 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 65 6e 64 29 20 20 20 20 20 20 20 20 20 20 20 n."...(goto-char.end)...........
9d720 20 20 20 20 20 20 20 20 20 20 20 20 3b 45 6e 64 20 66 69 72 73 74 20 74 6f 20 70 72 65 73 65 72 ............;End.first.to.preser
9d740 76 65 20 6f 72 64 65 72 69 6e 67 0a 20 20 28 75 6e 6c 65 73 73 20 28 62 6f 6c 70 29 20 28 69 6e ve.ordering...(unless.(bolp).(in
9d760 73 65 72 74 20 22 5c 6e 22 29 29 0a 20 20 28 69 6e 73 65 72 74 20 22 3d 3d 3d 3d 3d 3d 3d 5c 6e sert."\n"))...(insert."=======\n
9d780 22 20 6e 65 77 2d 73 74 72 20 22 5c 6e 3e 3e 3e 3e 3e 3e 3e 20 22 0a 20 20 20 20 20 20 20 20 20 ".new-str."\n>>>>>>>."..........
9d7a0 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 61 63 6b 65 .(gptel-backend-name.gptel-backe
9d7c0 6e 64 29 20 22 5c 6e 22 29 0a 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 62 65 67 29 0a 20 20 28 75 nd)."\n")...(goto-char.beg)...(u
9d7e0 6e 6c 65 73 73 20 28 62 6f 6c 70 29 20 28 69 6e 73 65 72 74 20 22 5c 6e 22 29 29 0a 20 20 28 69 nless.(bolp).(insert."\n"))...(i
9d800 6e 73 65 72 74 2d 62 65 66 6f 72 65 2d 6d 61 72 6b 65 72 73 20 22 3c 3c 3c 3c 3c 3c 3c 20 6f 72 nsert-before-markers."<<<<<<<.or
9d820 69 67 69 6e 61 6c 5c 6e 22 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 iginal\n"))..(defun.gptel--rewri
9d840 74 65 2d 6d 65 72 67 65 20 28 26 6f 70 74 69 6f 6e 61 6c 20 6f 76 73 29 0a 20 20 22 49 6e 73 65 te-merge.(&optional.ovs)..."Inse
9d860 72 74 20 70 65 6e 64 69 6e 67 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 73 20 69 6e 20 4f 56 53 20 rt.pending.LLM.responses.in.OVS.
9d880 61 73 20 6d 65 72 67 65 20 63 6f 6e 66 6c 69 63 74 73 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 as.merge.conflicts."...(interact
9d8a0 69 76 65 20 28 6c 69 73 74 20 28 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6f 76 65 72 6c 61 ive.(list.(gptel--rewrite-overla
9d8c0 79 2d 61 74 29 29 29 0a 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 6f 76 2d 62 75 66 20 28 6f y-at)))...(when-let*.((ov-buf.(o
9d8e0 76 65 72 6c 61 79 2d 62 75 66 66 65 72 20 28 6f 72 20 28 63 61 72 2d 73 61 66 65 20 6f 76 73 29 verlay-buffer.(or.(car-safe.ovs)
9d900 20 6f 76 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 62 75 66 66 65 72 2d 6c .ovs)))...............((buffer-l
9d920 69 76 65 2d 70 20 6f 76 2d 62 75 66 29 29 29 0a 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e ive-p.ov-buf))).....(with-curren
9d940 74 2d 62 75 66 66 65 72 20 6f 76 2d 62 75 66 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 63 68 61 t-buffer.ov-buf.......(let.((cha
9d960 6e 67 65 64 29 29 0a 20 20 20 20 20 20 20 20 28 64 6f 6c 69 73 74 20 28 6f 76 20 28 65 6e 73 75 nged)).........(dolist.(ov.(ensu
9d980 72 65 2d 6c 69 73 74 20 6f 76 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 61 76 65 2d 65 78 re-list.ovs))...........(save-ex
9d9a0 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 cursion.............(when-let*.(
9d9c0 28 6e 65 77 2d 73 74 72 20 28 6f 76 65 72 6c 61 79 2d 67 65 74 20 6f 76 20 27 67 70 74 65 6c 2d (new-str.(overlay-get.ov.'gptel-
9d9e0 72 65 77 72 69 74 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 65 78 rewrite)))...............(if.(ex
9da00 65 63 75 74 61 62 6c 65 2d 66 69 6e 64 20 22 67 69 74 22 29 20 3b 52 65 70 6c 61 63 65 20 6f 76 ecutable-find."git").;Replace.ov
9da20 65 72 6c 61 79 20 63 6f 6e 74 65 6e 74 20 77 69 74 68 20 6d 65 72 67 65 20 72 65 73 75 6c 74 0a erlay.content.with.merge.result.
9da40 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 72 65 77 72 69 74 ..................(gptel--rewrit
9da60 65 2d 6d 65 72 67 65 2d 67 69 74 20 28 6f 76 65 72 6c 61 79 2d 73 74 61 72 74 20 6f 76 29 20 28 e-merge-git.(overlay-start.ov).(
9da80 6f 76 65 72 6c 61 79 2d 65 6e 64 20 6f 76 29 20 6e 65 77 2d 73 74 72 29 0a 20 20 20 20 20 20 20 overlay-end.ov).new-str)........
9daa0 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6d 65 72 67 65 2d 73 .........(gptel--rewrite-merge-s
9dac0 69 6d 70 6c 65 20 28 6f 76 65 72 6c 61 79 2d 73 74 61 72 74 20 6f 76 29 20 28 6f 76 65 72 6c 61 imple.(overlay-start.ov).(overla
9dae0 79 2d 65 6e 64 20 6f 76 29 20 6e 65 77 2d 73 74 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 y-end.ov).new-str)).............
9db00 20 20 28 73 65 74 71 20 63 68 61 6e 67 65 64 20 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 77 ..(setq.changed.t)))).........(w
9db20 68 65 6e 20 63 68 61 6e 67 65 64 20 28 73 6d 65 72 67 65 2d 6d 6f 64 65 20 31 29 29 29 0a 20 20 hen.changed.(smerge-mode.1)))...
9db40 20 20 20 20 28 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 72 65 6a 65 63 74 20 6f 76 73 29 29 ....(gptel--rewrite-reject.ovs))
9db60 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 64 69 73 70 61 74 ))..(defun.gptel--rewrite-dispat
9db80 63 68 20 28 26 6f 70 74 69 6f 6e 61 6c 20 6f 76 20 63 69 29 0a 20 20 22 44 69 73 70 61 74 63 68 ch.(&optional.ov.ci)..."Dispatch
9dba0 20 61 63 74 69 6f 6e 73 20 66 6f 72 20 67 70 74 65 6c 20 72 65 77 72 69 74 65 73 2e 0a 0a 4f 56 .actions.for.gptel.rewrites...OV
9dbc0 20 69 73 20 74 68 65 20 72 65 77 72 69 74 65 20 6f 76 65 72 6c 61 79 2c 20 43 49 20 69 73 20 74 .is.the.rewrite.overlay,.CI.is.t
9dbe0 72 75 65 20 66 6f 72 20 69 6e 74 65 72 61 63 74 69 76 65 20 63 61 6c 6c 73 2e 22 0a 20 20 28 69 rue.for.interactive.calls."...(i
9dc00 6e 74 65 72 61 63 74 69 76 65 20 28 6c 69 73 74 20 28 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 nteractive.(list.(gptel--rewrite
9dc20 2d 6f 76 65 72 6c 61 79 2d 61 74 29 20 74 29 29 0a 20 20 28 6c 65 74 20 28 28 63 68 6f 69 63 65 -overlay-at).t))...(let.((choice
9dc40 29 29 0a 20 20 20 20 28 75 6e 77 69 6e 64 2d 70 72 6f 74 65 63 74 0a 20 20 20 20 20 20 20 20 28 )).....(unwind-protect.........(
9dc60 70 63 61 73 65 2d 6c 65 74 20 28 28 63 68 6f 69 63 65 73 20 27 28 28 3f 61 20 22 61 63 63 65 70 pcase-let.((choices.'((?a."accep
9dc80 74 22 29 20 28 3f 6b 20 22 72 65 6a 65 63 74 22 29 20 28 3f 72 20 22 69 74 65 72 61 74 65 22 29 t").(?k."reject").(?r."iterate")
9dca0 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 ................................
9dcc0 28 3f 6d 20 22 6d 65 72 67 65 22 29 20 28 3f 64 20 22 64 69 66 66 22 29 20 28 3f 65 20 22 65 64 (?m."merge").(?d."diff").(?e."ed
9dce0 69 66 66 22 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 68 69 6e iff"))).....................(hin
9dd00 74 2d 73 74 72 20 28 63 6f 6e 63 61 74 20 22 5b 22 20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d t-str.(concat."[".(gptel--model-
9dd20 6e 61 6d 65 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 29 20 22 5d 5c 6e 22 29 29 29 0a 20 20 20 20 20 name.gptel-model)."]\n")))......
9dd40 20 20 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75 74 0a 20 20 20 20 20 20 20 20 20 20 20 6f 76 20 .....(overlay-put............ov.
9dd60 27 62 65 66 6f 72 65 2d 73 74 72 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 'before-string............(conca
9dd80 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 65 71 20 28 63 68 61 72 2d t.............(unless.(eq.(char-
9dda0 62 65 66 6f 72 65 20 28 6f 76 65 72 6c 61 79 2d 73 74 61 72 74 20 6f 76 29 29 20 3f 5c 6e 29 20 before.(overlay-start.ov)).?\n).
9ddc0 22 5c 6e 22 29 0a 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 52 "\n").............(propertize."R
9dde0 45 57 52 49 54 45 20 52 45 41 44 59 3a 20 22 20 27 66 61 63 65 20 27 73 75 63 63 65 73 73 29 0a EWRITE.READY:.".'face.'success).
9de00 09 20 20 20 20 28 77 68 65 6e 20 28 66 62 6f 75 6e 64 70 20 23 27 72 6d 63 2d 2d 61 64 64 2d 6b .....(when.(fboundp.#'rmc--add-k
9de20 65 79 2d 64 65 73 63 72 69 70 74 69 6f 6e 29 20 20 3b 20 69 6e 74 72 6f 64 75 63 65 64 20 69 6e ey-description)..;.introduced.in
9de40 20 45 6d 61 63 73 20 32 39 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 70 63 6f 6e 63 .Emacs.29...............(mapconc
9de60 61 74 20 28 6c 61 6d 62 64 61 20 28 65 29 20 28 63 64 72 20 65 29 29 20 28 6d 61 70 63 61 72 20 at.(lambda.(e).(cdr.e)).(mapcar.
9de80 23 27 72 6d 63 2d 2d 61 64 64 2d 6b 65 79 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 63 68 6f 69 63 #'rmc--add-key-description.choic
9dea0 65 73 29 20 22 2c 20 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 es).",.")).............(properti
9dec0 7a 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 22 20 22 20 27 64 69 73 70 6c 61 79 20 60 28 73 ze..............".".'display.`(s
9dee0 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 31 2b 20 28 6c 65 pace.:align-to.(-.right.,(1+.(le
9df00 6e 67 74 68 20 68 69 6e 74 2d 73 74 72 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 ngth.hint-str))))).............(
9df20 70 72 6f 70 65 72 74 69 7a 65 20 68 69 6e 74 2d 73 74 72 20 27 66 61 63 65 20 27 73 75 63 63 65 propertize.hint-str.'face.'succe
9df40 73 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 63 68 6f 69 63 65 20 28 72 65 ss)))...........(setq.choice.(re
9df60 61 64 2d 6d 75 6c 74 69 70 6c 65 2d 63 68 6f 69 63 65 20 22 41 63 74 69 6f 6e 3a 20 22 20 63 68 ad-multiple-choice."Action:.".ch
9df80 6f 69 63 65 73 29 29 29 0a 20 20 20 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75 74 20 6f 76 20 27 oices))).......(overlay-put.ov.'
9dfa0 62 65 66 6f 72 65 2d 73 74 72 69 6e 67 20 6e 69 6c 29 29 0a 20 20 20 20 28 69 66 20 63 69 0a 20 before-string.nil)).....(if.ci..
9dfc0 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 28 69 6e 74 65 .......(call-interactively.(inte
9dfe0 72 6e 20 28 63 6f 6e 63 61 74 20 22 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 22 20 28 63 61 rn.(concat."gptel--rewrite-".(ca
9e000 64 72 20 63 68 6f 69 63 65 29 29 29 29 0a 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 28 69 6e dr.choice)))).......(funcall.(in
9e020 74 65 72 6e 20 28 63 6f 6e 63 61 74 20 22 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 22 20 28 tern.(concat."gptel--rewrite-".(
9e040 63 61 64 72 20 63 68 6f 69 63 65 29 29 29 20 6f 76 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 cadr.choice))).ov))))..(defun.gp
9e060 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 63 61 6c 6c 62 61 63 6b 20 28 72 65 73 70 6f 6e 73 65 20 tel--rewrite-callback.(response.
9e080 69 6e 66 6f 29 0a 20 20 22 43 61 6c 6c 62 61 63 6b 20 66 6f 72 20 67 70 74 65 6c 20 72 65 77 72 info)..."Callback.for.gptel.rewr
9e0a0 69 74 65 20 61 63 74 69 6f 6e 73 2e 0a 0a 53 68 6f 77 20 74 68 65 20 72 65 77 72 69 74 65 20 72 ite.actions...Show.the.rewrite.r
9e0c0 65 73 75 6c 74 20 69 6e 20 61 6e 20 6f 76 65 72 6c 61 79 20 6f 76 65 72 20 74 68 65 20 6f 72 69 esult.in.an.overlay.over.the.ori
9e0e0 67 69 6e 61 6c 20 74 65 78 74 2c 20 61 6e 64 0a 73 65 74 20 75 70 20 64 69 73 70 61 74 63 68 20 ginal.text,.and.set.up.dispatch.
9e100 61 63 74 69 6f 6e 73 2e 0a 0a 52 45 53 50 4f 4e 53 45 20 69 73 20 74 68 65 20 72 65 73 70 6f 6e actions...RESPONSE.is.the.respon
9e120 73 65 20 72 65 63 65 69 76 65 64 2e 20 20 49 74 20 6d 61 79 20 61 6c 73 6f 20 62 65 20 74 20 28 se.received...It.may.also.be.t.(
9e140 74 6f 20 69 6e 64 69 63 61 74 65 0a 73 75 63 63 65 73 73 29 20 6e 69 6c 20 28 74 6f 20 69 6e 64 to.indicate.success).nil.(to.ind
9e160 69 63 61 74 65 20 66 61 69 6c 75 72 65 29 2c 20 6f 72 20 74 68 65 20 73 79 6d 62 6f 6c 20 60 61 icate.failure),.or.the.symbol.`a
9e180 62 6f 72 74 27 2e 0a 0a 49 4e 46 4f 20 69 73 20 74 68 65 20 61 73 79 6e 63 20 63 6f 6d 6d 75 6e bort'...INFO.is.the.async.commun
9e1a0 69 63 61 74 69 6f 6e 20 63 68 61 6e 6e 65 6c 20 66 6f 72 20 74 68 65 20 72 65 77 72 69 74 65 20 ication.channel.for.the.rewrite.
9e1c0 72 65 71 75 65 73 74 2e 22 0a 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 6f 76 2d 61 6e 64 2d request."...(when-let*.((ov-and-
9e1e0 62 75 66 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 63 6f 6e 74 65 78 74 29 29 0a 20 buf.(plist-get.info.:context))..
9e200 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 76 20 28 63 61 72 20 6f 76 2d 61 6e 64 2d 62 75 66 .............(ov.(car.ov-and-buf
9e220 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 63 2d 62 75 66 20 28 63 64 72 20 ))...............(proc-buf.(cdr.
9e240 6f 76 2d 61 6e 64 2d 62 75 66 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 20 ov-and-buf))...............(buf.
9e260 28 6f 76 65 72 6c 61 79 2d 62 75 66 66 65 72 20 6f 76 29 29 29 0a 20 20 20 20 28 63 6f 6e 64 0a (overlay-buffer.ov))).....(cond.
9e280 20 20 20 20 20 28 28 73 74 72 69 6e 67 70 20 72 65 73 70 6f 6e 73 65 29 20 20 20 20 20 20 20 20 .....((stringp.response)........
9e2a0 20 20 20 20 20 20 20 20 3b 70 61 72 74 69 61 6c 20 6f 72 20 66 75 6c 6c 79 20 73 75 63 63 65 73 ........;partial.or.fully.succes
9e2c0 73 66 75 6c 20 72 65 73 75 6c 74 0a 20 20 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d sful.result.......(with-current-
9e2e0 62 75 66 66 65 72 20 70 72 6f 63 2d 62 75 66 20 20 20 20 20 3b 61 75 78 69 6c 69 61 72 79 20 62 buffer.proc-buf.....;auxiliary.b
9e300 75 66 66 65 72 2c 20 69 6e 73 65 72 74 20 74 65 78 74 20 68 65 72 65 20 61 6e 64 20 63 6f 70 79 uffer,.insert.text.here.and.copy
9e320 20 74 6f 20 6f 76 65 72 6c 61 79 0a 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 69 6e 68 69 62 .to.overlay.........(let.((inhib
9e340 69 74 2d 6d 6f 64 69 66 69 63 61 74 69 6f 6e 2d 68 6f 6f 6b 73 20 6e 69 6c 29 0a 20 20 20 20 20 it-modification-hooks.nil)......
9e360 20 20 20 20 20 20 20 20 20 28 69 6e 68 69 62 69 74 2d 72 65 61 64 2d 6f 6e 6c 79 20 74 29 29 0a .........(inhibit-read-only.t)).
9e380 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 3d 20 28 62 75 66 66 65 72 2d 73 69 7a 65 29 ..........(when.(=.(buffer-size)
9e3a0 20 30 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 2d 64 69 73 61 62 6c 65 2d .0).............(buffer-disable-
9e3c0 75 6e 64 6f 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75 74 20 6f undo).............(overlay-put.o
9e3e0 76 20 27 67 70 74 65 6c 2d 72 65 77 72 69 74 65 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 v.'gptel-rewrite.nil)...........
9e400 20 20 28 69 6e 73 65 72 74 2d 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 20 62 75 66 20 28 ..(insert-buffer-substring.buf.(
9e420 6f 76 65 72 6c 61 79 2d 73 74 61 72 74 20 6f 76 29 20 28 6f 76 65 72 6c 61 79 2d 65 6e 64 20 6f overlay-start.ov).(overlay-end.o
9e440 76 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 65 71 20 28 63 68 61 72 2d v)).............(when.(eq.(char-
9e460 62 65 66 6f 72 65 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 20 3f 5c 6e 29 0a 20 20 20 20 20 20 20 before.(point-max)).?\n)........
9e480 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 6e 65 77 6c 69 6e 65 20 .......(plist-put.info.:newline.
9e4a0 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 6d 61 6a 6f 72 2d 6d 6f 64 65 t)).............(setq.major-mode
9e4c0 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 6d 6f 64 65 .(buffer-local-value.'major-mode
9e4e0 20 62 75 66 29 29 20 3b 44 6f 6e 27 74 20 74 75 72 6e 20 6f 6e 20 6d 61 6a 6f 72 2d 6d 6f 64 65 .buf)).;Don't.turn.on.major-mode
9e500 20 28 23 37 33 30 2c 20 23 37 32 32 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 61 64 64 2d 74 .(#730,.#722).............(add-t
9e520 65 78 74 2d 70 72 6f 70 65 72 74 69 65 73 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28 70 6f 69 6e ext-properties.(point-min).(poin
9e540 74 2d 6d 61 78 29 20 27 28 66 61 63 65 20 73 68 61 64 6f 77 20 66 6f 6e 74 2d 6c 6f 63 6b 2d 66 t-max).'(face.shadow.font-lock-f
9e560 61 63 65 20 73 68 61 64 6f 77 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 ace.shadow)).............(goto-c
9e580 68 61 72 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 28 69 6e 73 har.(point-min)))...........(ins
9e5a0 65 72 74 20 72 65 73 70 6f 6e 73 65 29 0a 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 ert.response)...........(unless.
9e5c0 28 65 6f 62 70 29 20 28 69 67 6e 6f 72 65 2d 65 72 72 6f 72 73 20 28 64 65 6c 65 74 65 2d 63 68 (eobp).(ignore-errors.(delete-ch
9e5e0 61 72 20 28 6c 65 6e 67 74 68 20 72 65 73 70 6f 6e 73 65 29 29 29 29 0a 20 20 20 20 20 20 20 20 ar.(length.response)))).........
9e600 20 20 28 66 6f 6e 74 2d 6c 6f 63 6b 2d 65 6e 73 75 72 65 29 0a 20 20 20 20 20 20 20 20 20 20 28 ..(font-lock-ensure)...........(
9e620 6f 76 65 72 6c 61 79 2d 70 75 74 20 6f 76 20 27 64 69 73 70 6c 61 79 20 28 62 75 66 66 65 72 2d overlay-put.ov.'display.(buffer-
9e640 73 74 72 69 6e 67 29 29 29 29 0a 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 70 6c 69 73 74 2d string)))).......(unless.(plist-
9e660 67 65 74 20 69 6e 66 6f 20 3a 73 74 72 65 61 6d 29 20 28 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 get.info.:stream).(gptel--rewrit
9e680 65 2d 63 61 6c 6c 62 61 63 6b 20 74 20 69 6e 66 6f 29 29 29 0a 20 20 20 20 20 28 28 65 71 20 72 e-callback.t.info)))......((eq.r
9e6a0 65 73 70 6f 6e 73 65 20 27 61 62 6f 72 74 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 72 65 esponse.'abort)..............;re
9e6c0 71 75 65 73 74 20 61 62 6f 72 74 65 64 0a 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 quest.aborted.......(when-let*.(
9e6e0 28 70 72 6f 63 2d 62 75 66 20 28 63 64 72 2d 73 61 66 65 20 28 70 6c 69 73 74 2d 67 65 74 20 69 (proc-buf.(cdr-safe.(plist-get.i
9e700 6e 66 6f 20 3a 63 6f 6e 74 65 78 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 6b 69 6c 6c 2d 62 nfo.:context)))).........(kill-b
9e720 75 66 66 65 72 20 70 72 6f 63 2d 62 75 66 29 29 0a 20 20 20 20 20 20 28 64 65 6c 65 74 65 2d 6f uffer.proc-buf)).......(delete-o
9e740 76 65 72 6c 61 79 20 6f 76 29 29 0a 20 20 20 20 20 28 28 6e 75 6c 6c 20 72 65 73 70 6f 6e 73 65 verlay.ov))......((null.response
9e760 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 66 69 6e 69 73 68 65 64 20 77 69 )...................;finished.wi
9e780 74 68 20 65 72 72 6f 72 0a 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 28 63 6f 6e 63 61 74 20 th.error.......(message.(concat.
9e7a0 22 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 20 65 72 72 6f 72 3a 20 25 73 2e 20 52 65 77 72 69 74 65 "LLM.response.error:.%s..Rewrite
9e7c0 20 69 6e 20 62 75 66 66 65 72 20 25 73 20 63 61 6e 63 65 6c 65 64 2e 22 29 0a 20 20 20 20 20 20 .in.buffer.%s.canceled.").......
9e7e0 20 20 20 20 20 20 20 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 .........(plist-get.info.:status
9e800 29 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 29 0a 20 20 20 20 ).(plist-get.info.:buffer)).....
9e820 20 20 28 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 63 61 6c 6c 62 61 63 6b 20 27 61 62 6f 72 ..(gptel--rewrite-callback.'abor
9e840 74 20 69 6e 66 6f 29 29 0a 20 20 20 20 20 28 28 63 6f 6e 73 70 20 72 65 73 70 6f 6e 73 65 29 29 t.info))......((consp.response))
9e860 20 3b 72 65 61 73 6f 6e 69 6e 67 20 6f 72 20 74 6f 6f 6c 20 63 61 6c 6c 73 20 2d 2d 20 64 6f 6e .;reasoning.or.tool.calls.--.don
9e880 27 74 20 63 61 72 65 20 61 6e 64 20 6e 6f 74 20 69 6d 70 6c 65 6d 65 6e 74 65 64 2c 20 72 65 73 't.care.and.not.implemented,.res
9e8a0 70 65 63 74 69 76 65 6c 79 0a 20 20 20 20 20 28 74 20 28 6c 65 74 20 28 28 70 72 6f 63 2d 62 75 pectively......(t.(let.((proc-bu
9e8c0 66 20 28 63 64 72 2d 73 61 66 65 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 63 6f 6e f.(cdr-safe.(plist-get.info.:con
9e8e0 74 65 78 74 29 29 29 20 3b 66 69 6e 69 73 68 65 64 20 73 75 63 63 65 73 73 66 75 6c 6c 79 0a 20 text))).;finished.successfully..
9e900 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6b 62 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 3c .............(mkb.(propertize."<
9e920 6d 6f 75 73 65 2d 31 3e 22 20 27 66 61 63 65 20 27 68 65 6c 70 2d 6b 65 79 2d 62 69 6e 64 69 6e mouse-1>".'face.'help-key-bindin
9e940 67 29 29 29 0a 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 g)))...........(with-current-buf
9e960 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 28 6c 65 74 20 28 28 fer.proc-buf.............(let.((
9e980 69 6e 68 69 62 69 74 2d 72 65 61 64 2d 6f 6e 6c 79 20 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 inhibit-read-only.t))...........
9e9a0 20 20 20 20 28 64 65 6c 65 74 65 2d 72 65 67 69 6f 6e 20 28 70 6f 69 6e 74 29 20 28 70 6f 69 6e ....(delete-region.(point).(poin
9e9c0 74 2d 6d 61 78 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 52 75 6e 20 70 6f 73 t-max))...............;;.Run.pos
9e9e0 74 2d 72 65 77 72 69 74 65 2d 66 75 6e 63 74 69 6f 6e 73 20 6f 6e 20 72 65 77 72 69 74 74 65 6e t-rewrite-functions.on.rewritten
9ea00 20 74 65 78 74 20 69 6e 20 69 74 73 20 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 .text.in.its.buffer.............
9ea20 20 20 28 77 69 74 68 2d 64 65 6d 6f 74 65 64 2d 65 72 72 6f 72 73 20 22 67 70 74 65 6c 2d 70 6f ..(with-demoted-errors."gptel-po
9ea40 73 74 2d 72 65 77 72 69 74 65 2d 66 75 6e 63 74 69 6f 6e 73 3a 20 25 53 22 0a 20 20 20 20 20 20 st-rewrite-functions:.%S".......
9ea60 20 20 20 20 20 20 20 20 20 20 28 72 75 6e 2d 68 6f 6f 6b 2d 77 69 74 68 2d 61 72 67 73 20 27 67 ..........(run-hook-with-args.'g
9ea80 70 74 65 6c 2d 70 6f 73 74 2d 72 65 77 72 69 74 65 2d 66 75 6e 63 74 69 6f 6e 73 20 28 70 6f 69 ptel-post-rewrite-functions.(poi
9eaa0 6e 74 2d 6d 69 6e 29 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 nt-min).(point-max)))...........
9eac0 20 20 20 20 28 77 68 65 6e 20 28 61 6e 64 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a ....(when.(and.(plist-get.info.:
9eae0 6e 65 77 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 newline)........................
9eb00 20 20 28 6e 6f 74 20 28 65 71 20 28 63 68 61 72 2d 62 65 66 6f 72 65 20 28 70 6f 69 6e 74 2d 6d ..(not.(eq.(char-before.(point-m
9eb20 61 78 29 29 20 3f 5c 6e 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 ax)).?\n))).................(ins
9eb40 65 72 74 20 22 5c 6e 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 6e 74 2d 6c ert."\n"))...............(font-l
9eb60 6f 63 6b 2d 65 6e 73 75 72 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 76 65 72 6c 61 ock-ensure)).............(overla
9eb80 79 2d 70 75 74 20 6f 76 20 27 64 69 73 70 6c 61 79 20 28 62 75 66 66 65 72 2d 73 74 72 69 6e 67 y-put.ov.'display.(buffer-string
9eba0 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75 74 20 6f 76 20 27 )).............(overlay-put.ov.'
9ebc0 67 70 74 65 6c 2d 72 65 77 72 69 74 65 20 28 62 75 66 66 65 72 2d 73 74 72 69 6e 67 29 29 0a 20 gptel-rewrite.(buffer-string))..
9ebe0 20 20 20 20 20 20 20 20 20 20 20 28 6b 69 6c 6c 2d 62 75 66 66 65 72 20 70 72 6f 63 2d 62 75 66 ...........(kill-buffer.proc-buf
9ec00 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 62 75 66 66 65 72 2d 6c 69 76 65 2d ))...........(when.(buffer-live-
9ec20 70 20 62 75 66 29 0a 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 p.buf).............(with-current
9ec40 2d 62 75 66 66 65 72 20 62 75 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 6c 73 65 -buffer.buf...............(pulse
9ec60 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 28 6f 76 65 -momentary-highlight-region.(ove
9ec80 72 6c 61 79 2d 73 74 61 72 74 20 6f 76 29 20 28 6f 76 65 72 6c 61 79 2d 65 6e 64 20 6f 76 29 29 rlay-start.ov).(overlay-end.ov))
9eca0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 64 64 2d 68 6f 6f 6b 20 27 65 6c 64 6f 63 2d ...............(add-hook.'eldoc-
9ecc0 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 2d 66 75 6e 63 74 69 6f 6e 73 20 23 27 67 70 74 65 6c 2d documentation-functions.#'gptel-
9ece0 2d 72 65 77 72 69 74 65 2d 6b 65 79 2d 68 65 6c 70 20 6e 69 6c 20 27 6c 6f 63 61 6c 29 0a 20 20 -rewrite-key-help.nil.'local)...
9ed00 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 28 6f 76 65 72 6c 61 79 2d 70 75 74 20 6f 76 20 27 ............;;.(overlay-put.ov.'
9ed20 67 70 74 65 6c 2d 72 65 77 72 69 74 65 20 72 65 73 70 6f 6e 73 65 29 0a 20 20 20 20 20 20 20 20 gptel-rewrite.response).........
9ed40 20 20 20 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75 74 20 6f 76 20 27 66 61 63 65 20 27 67 70 74 ......(overlay-put.ov.'face.'gpt
9ed60 65 6c 2d 72 65 77 72 69 74 65 2d 68 69 67 68 6c 69 67 68 74 2d 66 61 63 65 29 0a 09 20 20 20 20 el-rewrite-highlight-face)......
9ed80 20 20 28 6f 76 65 72 6c 61 79 2d 70 75 74 20 6f 76 20 27 70 72 69 6f 72 69 74 79 20 32 30 30 30 ..(overlay-put.ov.'priority.2000
9eda0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75 74 20 6f 76 20 )...............(overlay-put.ov.
9edc0 27 6b 65 79 6d 61 70 20 67 70 74 65 6c 2d 72 65 77 72 69 74 65 2d 61 63 74 69 6f 6e 73 2d 6d 61 'keymap.gptel-rewrite-actions-ma
9ede0 70 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75 74 20 6f 76 p)...............(overlay-put.ov
9ee00 20 27 6d 6f 75 73 65 2d 66 61 63 65 20 27 68 69 67 68 6c 69 67 68 74 29 0a 20 20 20 20 20 20 20 .'mouse-face.'highlight)........
9ee20 20 20 20 20 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 .......(overlay-put.............
9ee40 20 20 20 6f 76 20 27 68 65 6c 70 2d 65 63 68 6f 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ...ov.'help-echo................
9ee60 28 66 6f 72 6d 61 74 20 28 63 6f 6e 63 61 74 20 22 25 73 20 72 65 77 72 69 74 65 20 61 76 61 69 (format.(concat."%s.rewrite.avai
9ee80 6c 61 62 6c 65 3a 20 25 73 20 6f 72 20 5c 5c 5b 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 64 lable:.%s.or.\\[gptel--rewrite-d
9eea0 69 73 70 61 74 63 68 5d 20 66 6f 72 20 6f 70 74 69 6f 6e 73 22 29 0a 20 20 20 20 20 20 20 20 20 ispatch].for.options")..........
9eec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 28 67 70 74 65 6c 2d 62 61 63 ..............(concat.(gptel-bac
9eee0 6b 65 6e 64 2d 6e 61 6d 65 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 20 22 3a 22 20 28 67 70 kend-name.gptel-backend).":".(gp
9ef00 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 6e 61 6d 65 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 29 29 0a 20 20 tel--model-name.gptel-model))...
9ef20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6b 62 29 29 0a 20 20 20 20 20 .....................mkb))......
9ef40 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 6f 76 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 .........(push.ov.gptel--rewrite
9ef60 2d 6f 76 65 72 6c 61 79 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 2d 6c 65 74 2a -overlays)).............(if-let*
9ef80 20 28 28 73 79 6d 20 67 70 74 65 6c 2d 72 65 77 72 69 74 65 2d 64 65 66 61 75 6c 74 2d 61 63 74 .((sym.gptel-rewrite-default-act
9efa0 69 6f 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 2d 6c 65 74 2a 20 28 ion)).................(if-let*.(
9efc0 28 61 63 74 69 6f 6e 20 28 69 6e 74 65 72 6e 20 28 63 6f 6e 63 61 74 20 22 67 70 74 65 6c 2d 2d (action.(intern.(concat."gptel--
9efe0 72 65 77 72 69 74 65 2d 22 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 73 79 6d 29 29 29 29 0a 20 rewrite-".(symbol-name.sym))))..
9f000 20 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 66 75 6e 63 74 .........................((funct
9f020 69 6f 6e 70 20 61 63 74 69 6f 6e 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ionp.action)))..................
9f040 20 20 20 28 66 75 6e 63 61 6c 6c 20 61 63 74 69 6f 6e 20 6f 76 29 20 28 66 75 6e 63 61 6c 6c 20 ...(funcall.action.ov).(funcall.
9f060 73 79 6d 20 6f 76 29 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 sym.ov))...............(message.
9f080 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 20 20 20 20 (concat.........................
9f0a0 22 4c 4c 4d 20 72 65 77 72 69 74 65 20 6f 75 74 70 75 74 22 0a 20 20 20 20 20 20 20 20 20 20 20 "LLM.rewrite.output"............
9f0c0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 65 71 20 28 63 75 72 72 65 6e .............(unless.(eq.(curren
9f0e0 74 2d 62 75 66 66 65 72 29 20 62 75 66 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 t-buffer).buf)..................
9f100 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 20 69 6e 20 62 75 66 66 65 72 20 25 73 20 .........(format.".in.buffer.%s.
9f120 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 20 20 20 20 20 20 ".(buffer-name.buf)))...........
9f140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 22 20 72 65 61 64 79 3a 20 22 ..............(concat.".ready:."
9f160 20 6d 6b 62 20 22 2c 20 22 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 52 45 54 22 20 27 66 61 63 .mkb.",.".(propertize."RET".'fac
9f180 65 20 27 68 65 6c 70 2d 6b 65 79 2d 62 69 6e 64 69 6e 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 e.'help-key-binding)............
9f1a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 20 6f 72 20 22 20 28 73 75 62 .....................".or.".(sub
9f1c0 73 74 69 74 75 74 65 2d 63 6f 6d 6d 61 6e 64 2d 6b 65 79 73 20 22 5c 5c 5b 67 70 74 65 6c 2d 72 stitute-command-keys."\\[gptel-r
9f1e0 65 77 72 69 74 65 5d 20 74 6f 20 63 6f 6e 74 69 6e 75 65 2e 22 29 29 29 29 29 29 29 29 29 29 29 ewrite].to.continue.")))))))))))
9f200 0a 0a 3b 3b 20 2a 20 54 72 61 6e 73 69 65 6e 74 20 50 72 65 66 69 78 65 73 20 66 6f 72 20 72 65 ..;;.*.Transient.Prefixes.for.re
9f220 77 72 69 74 69 6e 67 0a 0a 28 74 72 61 6e 73 69 65 6e 74 2d 64 65 66 69 6e 65 2d 70 72 65 66 69 writing..(transient-define-prefi
9f240 78 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 64 69 72 65 63 74 69 76 65 2d 6d 65 6e 75 20 x.gptel--rewrite-directive-menu.
9f260 28 29 0a 20 20 22 53 65 74 20 74 68 65 20 64 69 72 65 63 74 69 76 65 20 28 73 79 73 74 65 6d 20 ()..."Set.the.directive.(system.
9f280 6d 65 73 73 61 67 65 29 20 66 6f 72 20 72 65 77 72 69 74 65 20 61 63 74 69 6f 6e 73 2e 0a 0a 42 message).for.rewrite.actions...B
9f2a0 79 20 64 65 66 61 75 6c 74 2c 20 67 70 74 65 6c 20 75 73 65 73 20 74 68 65 20 64 69 72 65 63 74 y.default,.gptel.uses.the.direct
9f2c0 69 76 65 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20 60 72 65 77 72 69 74 65 ive.associated.with.the.`rewrite
9f2e0 27 0a 20 6b 65 79 20 69 6e 20 60 67 70 74 65 6c 2d 64 69 72 65 63 74 69 76 65 73 27 2e 20 20 59 '..key.in.`gptel-directives'...Y
9f300 6f 75 20 63 61 6e 20 61 64 64 20 6d 6f 72 65 20 72 65 77 72 69 74 65 2d 73 70 65 63 69 66 69 63 ou.can.add.more.rewrite-specific
9f320 0a 20 64 69 72 65 63 74 69 76 65 73 20 74 6f 20 60 67 70 74 65 6c 2d 64 69 72 65 63 74 69 76 65 ..directives.to.`gptel-directive
9f340 73 27 20 61 6e 64 20 70 69 63 6b 20 6f 6e 65 20 66 72 6f 6d 20 68 65 72 65 2e 22 0a 20 20 5b 3a s'.and.pick.one.from.here."...[:
9f360 64 65 73 63 72 69 70 74 69 6f 6e 20 67 70 74 65 6c 2d 73 79 73 74 65 6d 2d 70 72 6f 6d 70 74 2d description.gptel-system-prompt-
9f380 2d 66 6f 72 6d 61 74 0a 20 20 20 5b 28 67 70 74 65 6c 2d 2d 73 75 66 66 69 78 2d 72 65 77 72 69 -format....[(gptel--suffix-rewri
9f3a0 74 65 2d 64 69 72 65 63 74 69 76 65 29 5d 0a 20 20 20 5b 28 67 70 74 65 6c 2d 2d 69 6e 66 69 78 te-directive)]....[(gptel--infix
9f3c0 2d 76 61 72 69 61 62 6c 65 2d 73 63 6f 70 65 29 5d 5d 0a 20 20 20 5b 3a 63 6c 61 73 73 20 74 72 -variable-scope)]]....[:class.tr
9f3e0 61 6e 73 69 65 6e 74 2d 63 6f 6c 75 6d 6e 0a 20 20 20 20 3a 73 65 74 75 70 2d 63 68 69 6c 64 72 ansient-column.....:setup-childr
9f400 65 6e 0a 20 20 20 20 28 6c 61 6d 62 64 61 20 28 5f 29 20 28 74 72 61 6e 73 69 65 6e 74 2d 70 61 en.....(lambda.(_).(transient-pa
9f420 72 73 65 2d 73 75 66 66 69 78 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 27 67 70 74 65 6c 2d rse-suffixes.............'gptel-
9f440 2d 72 65 77 72 69 74 65 2d 64 69 72 65 63 74 69 76 65 2d 6d 65 6e 75 0a 20 20 20 20 20 20 20 20 -rewrite-directive-menu.........
9f460 20 20 20 20 28 67 70 74 65 6c 2d 2d 73 65 74 75 70 2d 64 69 72 65 63 74 69 76 65 2d 6d 65 6e 75 ....(gptel--setup-directive-menu
9f480 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 27 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 64 69 ..............'gptel--rewrite-di
9f4a0 72 65 63 74 69 76 65 20 22 52 65 77 72 69 74 65 20 64 69 72 65 63 74 69 76 65 22 29 29 29 0a 20 rective."Rewrite.directive")))..
9f4c0 20 20 20 3a 70 61 64 2d 6b 65 79 73 20 74 5d 29 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 ...:pad-keys.t])..;;;###autoload
9f4e0 20 28 61 75 74 6f 6c 6f 61 64 20 27 67 70 74 65 6c 2d 72 65 77 72 69 74 65 20 22 67 70 74 65 6c .(autoload.'gptel-rewrite."gptel
9f500 2d 72 65 77 72 69 74 65 22 20 6e 69 6c 20 74 29 0a 28 74 72 61 6e 73 69 65 6e 74 2d 64 65 66 69 -rewrite".nil.t).(transient-defi
9f520 6e 65 2d 70 72 65 66 69 78 20 67 70 74 65 6c 2d 72 65 77 72 69 74 65 20 28 29 0a 20 20 22 52 65 ne-prefix.gptel-rewrite.()..."Re
9f540 77 72 69 74 65 20 6f 72 20 72 65 66 61 63 74 6f 72 20 74 65 78 74 20 72 65 67 69 6f 6e 20 75 73 write.or.refactor.text.region.us
9f560 69 6e 67 20 61 6e 20 4c 4c 4d 2e 22 0a 20 20 5b 3a 64 65 73 63 72 69 70 74 69 6f 6e 0a 20 20 20 ing.an.LLM."...[:description....
9f580 28 6c 61 6d 62 64 61 20 28 29 0a 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 64 65 73 63 72 69 62 65 (lambda.()......(gptel--describe
9f5a0 2d 64 69 72 65 63 74 69 76 65 0a 20 20 20 20 20 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d -directive.......gptel--rewrite-
9f5c0 64 69 72 65 63 74 69 76 65 20 28 6d 61 78 20 28 2d 20 28 77 69 6e 64 6f 77 2d 77 69 64 74 68 29 directive.(max.(-.(window-width)
9f5e0 20 31 34 29 20 32 30 29 20 22 20 22 29 29 0a 20 20 20 5b 22 22 0a 20 20 20 20 28 67 70 74 65 6c .14).20)."."))....["".....(gptel
9f600 2d 2d 70 72 65 73 65 74 0a 20 20 20 20 20 3a 69 66 20 28 6c 61 6d 62 64 61 20 28 29 20 28 6f 72 --preset......:if.(lambda.().(or
9f620 20 28 67 65 74 2d 63 68 61 72 2d 70 72 6f 70 65 72 74 79 20 28 70 6f 69 6e 74 29 20 27 67 70 74 .(get-char-property.(point).'gpt
9f640 65 6c 2d 72 65 77 72 69 74 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 el-rewrite)....................(
9f660 75 73 65 2d 72 65 67 69 6f 6e 2d 70 29 29 29 0a 20 20 20 20 20 3a 6b 65 79 20 22 40 22 20 3a 66 use-region-p)))......:key."@".:f
9f680 6f 72 6d 61 74 20 22 25 64 22 0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 0a 20 20 20 ormat."%d"......:description....
9f6a0 20 20 28 6c 61 6d 62 64 61 20 28 29 0a 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 28 70 72 6f ..(lambda.()........(concat.(pro
9f6c0 70 65 72 74 69 7a 65 20 22 49 6e 73 74 72 75 63 74 69 6f 6e 73 22 20 27 66 61 63 65 20 27 74 72 pertize."Instructions".'face.'tr
9f6e0 61 6e 73 69 65 6e 74 2d 68 65 61 64 69 6e 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ansient-heading)................
9f700 28 67 70 74 65 6c 2d 2d 66 6f 72 6d 61 74 2d 70 72 65 73 65 74 2d 73 74 72 69 6e 67 29 29 29 29 (gptel--format-preset-string))))
9f720 0a 20 20 20 20 28 22 73 22 20 22 53 65 74 20 66 75 6c 6c 20 64 69 72 65 63 74 69 76 65 22 20 67 .....("s"."Set.full.directive".g
9f740 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 64 69 72 65 63 74 69 76 65 2d 6d 65 6e 75 29 0a 20 20 ptel--rewrite-directive-menu)...
9f760 20 20 28 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 72 65 77 72 69 74 65 2d 65 78 74 72 61 29 5d 5d ..(gptel--infix-rewrite-extra)]]
9f780 0a 20 20 3b 3b 20 46 49 58 4d 45 3a 20 57 65 20 61 72 65 20 72 65 71 75 69 72 69 6e 67 20 60 67 ...;;.FIXME:.We.are.requiring.`g
9f7a0 70 74 65 6c 2d 74 72 61 6e 73 69 65 6e 74 27 20 62 65 63 61 75 73 65 20 6f 66 20 74 68 69 73 20 ptel-transient'.because.of.this.
9f7c0 73 75 66 66 69 78 2c 20 70 65 72 68 61 70 73 0a 20 20 3b 3b 20 77 65 20 63 61 6e 20 67 65 74 20 suffix,.perhaps...;;.we.can.get.
9f7e0 66 69 6e 64 20 73 6f 6d 65 20 77 61 79 20 61 72 6f 75 6e 64 20 74 68 61 74 3f 0a 20 20 5b 3a 64 find.some.way.around.that?...[:d
9f800 65 73 63 72 69 70 74 69 6f 6e 20 22 43 6f 6e 74 65 78 74 20 66 6f 72 20 72 65 77 72 69 74 65 22 escription."Context.for.rewrite"
9f820 0a 20 20 20 3a 69 66 20 75 73 65 2d 72 65 67 69 6f 6e 2d 70 0a 20 20 20 28 67 70 74 65 6c 2d 2d ....:if.use-region-p....(gptel--
9f840 69 6e 66 69 78 2d 63 6f 6e 74 65 78 74 2d 72 65 6d 6f 76 65 2d 61 6c 6c 20 3a 6b 65 79 20 22 2d infix-context-remove-all.:key."-
9f860 64 22 29 0a 20 20 20 28 67 70 74 65 6c 2d 2d 73 75 66 66 69 78 2d 63 6f 6e 74 65 78 74 2d 62 75 d")....(gptel--suffix-context-bu
9f880 66 66 65 72 20 3a 6b 65 79 20 22 43 22 20 3a 66 6f 72 6d 61 74 20 22 20 20 25 6b 20 25 64 22 29 ffer.:key."C".:format."..%k.%d")
9f8a0 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 6e 73 ]...[[:description."Diff.Options
9f8c0 22 0a 20 20 20 20 3a 69 66 20 28 6c 61 6d 62 64 61 20 28 29 20 67 70 74 65 6c 2d 2d 72 65 77 72 ".....:if.(lambda.().gptel--rewr
9f8e0 69 74 65 2d 6f 76 65 72 6c 61 79 73 29 0a 20 20 20 20 28 22 2d 62 22 20 22 49 67 6e 6f 72 65 20 ite-overlays).....("-b"."Ignore.
9f900 77 68 69 74 65 73 70 61 63 65 20 63 68 61 6e 67 65 73 22 20 20 20 20 20 20 28 22 2d 62 22 20 22 whitespace.changes"......("-b"."
9f920 2d 2d 69 67 6e 6f 72 65 2d 73 70 61 63 65 2d 63 68 61 6e 67 65 22 29 29 0a 20 20 20 20 28 22 2d --ignore-space-change")).....("-
9f940 77 22 20 22 49 67 6e 6f 72 65 20 61 6c 6c 20 77 68 69 74 65 73 70 61 63 65 22 20 20 20 20 20 20 w"."Ignore.all.whitespace"......
9f960 20 20 20 20 28 22 2d 77 22 20 22 2d 2d 69 67 6e 6f 72 65 2d 61 6c 6c 2d 73 70 61 63 65 22 29 29 ....("-w"."--ignore-all-space"))
9f980 0a 20 20 20 20 28 22 2d 69 22 20 22 49 67 6e 6f 72 65 20 63 61 73 65 22 20 20 20 20 20 20 20 20 .....("-i"."Ignore.case"........
9f9a0 20 20 20 20 20 20 20 20 20 20 20 20 28 22 2d 69 22 20 22 2d 2d 69 67 6e 6f 72 65 2d 63 61 73 65 ............("-i"."--ignore-case
9f9c0 22 29 29 0a 20 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 64 69 ")).....(gptel--infix-rewrite-di
9f9e0 66 66 3a 2d 55 29 5d 0a 20 20 20 5b 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 41 63 63 65 70 74 ff:-U)]....[:description."Accept
9fa00 20 61 6c 6c 22 0a 20 20 20 20 3a 69 66 20 28 6c 61 6d 62 64 61 20 28 29 20 67 70 74 65 6c 2d 2d .all".....:if.(lambda.().gptel--
9fa20 72 65 77 72 69 74 65 2d 6f 76 65 72 6c 61 79 73 29 0a 20 20 20 20 28 67 70 74 65 6c 2d 2d 73 75 rewrite-overlays).....(gptel--su
9fa40 66 66 69 78 2d 72 65 77 72 69 74 65 2d 6d 65 72 67 65 29 0a 20 20 20 20 28 67 70 74 65 6c 2d 2d ffix-rewrite-merge).....(gptel--
9fa60 73 75 66 66 69 78 2d 72 65 77 72 69 74 65 2d 61 63 63 65 70 74 29 0a 20 20 20 20 22 52 65 6a 65 suffix-rewrite-accept)....."Reje
9fa80 63 74 20 61 6c 6c 22 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 ct.all".....(gptel--suffix-rewri
9faa0 74 65 2d 72 65 6a 65 63 74 29 5d 5d 0a 20 20 5b 5b 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 44 te-reject)]]...[[:description."D
9fac0 69 66 66 20 72 65 77 72 69 74 65 20 72 65 67 69 6f 6e 73 22 0a 20 20 20 20 3a 69 66 20 28 6c 61 iff.rewrite.regions".....:if.(la
9fae0 6d 62 64 61 20 28 29 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6f 76 65 72 6c 61 79 73 29 mbda.().gptel--rewrite-overlays)
9fb00 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 64 69 66 66 .....(gptel--suffix-rewrite-diff
9fb20 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 65 64 69 ).....(gptel--suffix-rewrite-edi
9fb40 66 66 29 5d 5d 0a 20 20 5b 5b 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 52 65 77 72 69 74 65 22 ff)]]...[[:description."Rewrite"
9fb60 0a 20 20 20 20 3a 69 66 20 28 6c 61 6d 62 64 61 20 28 29 20 28 6f 72 20 28 67 65 74 2d 63 68 61 .....:if.(lambda.().(or.(get-cha
9fb80 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 72 65 77 72 69 74 r-property.(point).'gptel-rewrit
9fba0 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 73 65 2d 72 65 67 69 6f 6e e)...................(use-region
9fbc0 2d 70 29 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 69 74 65 -p))).....(gptel--suffix-rewrite
9fbe0 29 5d 0a 20 20 20 5b 22 44 72 79 20 52 75 6e 22 0a 20 20 20 20 3a 69 66 20 28 6c 61 6d 62 64 61 )]....["Dry.Run".....:if.(lambda
9fc00 20 28 29 20 28 61 6e 64 20 28 6f 72 20 67 70 74 65 6c 2d 6c 6f 67 2d 6c 65 76 65 6c 20 67 70 74 .().(and.(or.gptel-log-level.gpt
9fc20 65 6c 2d 65 78 70 65 72 74 2d 63 6f 6d 6d 61 6e 64 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 el-expert-commands).............
9fc40 20 20 20 20 20 20 20 28 6f 72 20 28 67 65 74 2d 63 68 61 72 2d 70 72 6f 70 65 72 74 79 20 28 70 .......(or.(get-char-property.(p
9fc60 6f 69 6e 74 29 20 27 67 70 74 65 6c 2d 72 65 77 72 69 74 65 29 0a 20 20 20 20 20 20 20 20 20 20 oint).'gptel-rewrite)...........
9fc80 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 73 65 2d 72 65 67 69 6f 6e 2d 70 29 29 29 29 0a 20 .............(use-region-p))))..
9fca0 20 20 20 28 22 49 22 20 22 49 6e 73 70 65 63 74 20 71 75 65 72 79 20 28 4c 69 73 70 29 22 0a 20 ...("I"."Inspect.query.(Lisp)"..
9fcc0 20 20 20 20 28 6c 61 6d 62 64 61 20 28 29 0a 20 20 20 20 20 20 20 22 49 6e 73 70 65 63 74 20 74 ....(lambda.()........"Inspect.t
9fce0 68 65 20 71 75 65 72 79 20 74 68 61 74 20 77 69 6c 6c 20 62 65 20 73 65 6e 74 20 61 73 20 61 20 he.query.that.will.be.sent.as.a.
9fd00 6c 69 73 70 20 6f 62 6a 65 63 74 2e 22 0a 20 20 20 20 20 20 20 28 69 6e 74 65 72 61 63 74 69 76 lisp.object."........(interactiv
9fd20 65 29 0a 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 73 61 6e 69 74 69 7a 65 2d 6d 6f 64 65 6c e)........(gptel--sanitize-model
9fd40 29 0a 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 69 6e 73 70 65 63 74 2d 71 75 65 72 79 0a 20 )........(gptel--inspect-query..
9fd60 20 20 20 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 20 67 70 .......(gptel--suffix-rewrite.gp
9fd80 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6d 65 73 73 61 67 65 20 74 29 29 29 29 0a 20 20 20 20 28 tel--rewrite-message.t)))).....(
9fda0 22 4a 22 20 22 49 6e 73 70 65 63 74 20 71 75 65 72 79 20 28 4a 53 4f 4e 29 22 0a 20 20 20 20 20 "J"."Inspect.query.(JSON)"......
9fdc0 28 6c 61 6d 62 64 61 20 28 29 0a 20 20 20 20 20 20 20 22 49 6e 73 70 65 63 74 20 74 68 65 20 71 (lambda.()........"Inspect.the.q
9fde0 75 65 72 79 20 74 68 61 74 20 77 69 6c 6c 20 62 65 20 73 65 6e 74 20 61 73 20 61 20 4a 53 4f 4e uery.that.will.be.sent.as.a.JSON
9fe00 20 6f 62 6a 65 63 74 2e 22 0a 20 20 20 20 20 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 .object."........(interactive)..
9fe20 20 20 20 20 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 ......(gptel--sanitize-model)...
9fe40 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 69 6e 73 70 65 63 74 2d 71 75 65 72 79 0a 20 20 20 20 20 .....(gptel--inspect-query......
9fe60 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 20 67 70 74 65 6c 2d ...(gptel--suffix-rewrite.gptel-
9fe80 2d 72 65 77 72 69 74 65 2d 6d 65 73 73 61 67 65 20 74 29 0a 20 20 20 20 20 20 20 20 27 6a 73 6f -rewrite-message.t).........'jso
9fea0 6e 29 29 29 5d 5d 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 28 67 70 74 65 6c 2d n)))]]...(interactive)...(gptel-
9fec0 2d 72 65 77 72 69 74 65 2d 73 61 6e 69 74 69 7a 65 2d 6f 76 65 72 6c 61 79 73 29 0a 20 20 28 63 -rewrite-sanitize-overlays)...(c
9fee0 6f 6e 64 0a 20 20 20 28 28 75 73 65 2d 72 65 67 69 6f 6e 2d 70 29 20 20 20 20 20 20 20 20 20 20 ond....((use-region-p)..........
9ff00 20 20 20 20 20 20 20 20 20 20 20 20 3b 53 74 61 72 74 20 61 2f 61 6e 6f 74 68 65 72 20 72 65 77 ............;Start.a/another.rew
9ff20 72 69 74 65 0a 20 20 20 20 28 6c 65 74 20 28 28 74 72 61 6e 73 69 65 6e 74 2d 2d 68 69 73 74 6f rite.....(let.((transient--histo
9ff40 72 79 20 3b 4e 6f 20 74 72 61 6e 73 69 65 6e 74 20 72 65 61 64 65 72 2c 20 73 6f 20 57 65 20 6d ry.;No.transient.reader,.so.We.m
9ff60 61 6e 61 67 65 20 68 69 73 74 6f 72 79 20 6f 75 72 73 65 6c 76 65 73 0a 20 20 20 20 20 20 20 20 anage.history.ourselves.........
9ff80 20 20 20 28 61 6c 69 73 74 2d 67 65 74 20 27 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 72 65 77 72 ...(alist-get.'gptel--infix-rewr
9ffa0 69 74 65 2d 65 78 74 72 61 20 74 72 61 6e 73 69 65 6e 74 2d 68 69 73 74 6f 72 79 29 29 29 0a 20 ite-extra.transient-history)))..
9ffc0 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 72 65 61 64 2d 6d 65 73 73 61 67 .....(gptel--rewrite-read-messag
9ffe0 65 0a 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 22 49 6e 73 74 72 75 63 74 69 6f 6e 73 20 28 e........(concat."Instructions.(
a0000 22 20 67 70 74 65 6c 2d 2d 72 65 61 64 2d 77 69 74 68 2d 70 72 65 66 69 78 2d 68 65 6c 70 0a 20 ".gptel--read-with-prefix-help..
a0020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 20 25 73 25 73 29 20 22 0a ..............(format.".%s%s).".
a0040 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 65 72 74 69 .......................(properti
a0060 7a 65 20 22 4d 2d 52 45 54 22 20 27 66 61 63 65 20 27 68 65 6c 70 2d 6b 65 79 2d 62 69 6e 64 69 ze."M-RET".'face.'help-key-bindi
a0080 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 28 70 72 6f 70 ng)........................(prop
a00a0 65 72 74 69 7a 65 20 22 3a 20 4d 6f 72 65 20 6f 70 74 69 6f 6e 73 22 20 27 66 61 63 65 20 27 64 ertize.":.More.options".'face.'d
a00c0 65 66 61 75 6c 74 29 29 29 0a 20 20 20 20 20 20 20 6e 69 6c 20 28 63 6f 6e 73 20 27 74 72 61 6e efault)))........nil.(cons.'tran
a00e0 73 69 65 6e 74 2d 2d 68 69 73 74 6f 72 79 20 31 29 29 29 29 0a 20 20 20 28 67 70 74 65 6c 2d 2d sient--history.1))))....(gptel--
a0100 72 65 77 72 69 74 65 2d 6f 76 65 72 6c 61 79 73 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 52 65 rewrite-overlays.............;Re
a0120 77 72 69 74 65 20 61 63 74 69 6f 6e 73 20 70 65 6e 64 69 6e 67 2c 20 73 68 6f 77 20 6f 70 74 69 write.actions.pending,.show.opti
a0140 6f 6e 73 0a 20 20 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 ons.....(transient-setup.'gptel-
a0160 72 65 77 72 69 74 65 29 29 0a 20 20 20 28 74 20 28 75 73 65 72 2d 65 72 72 6f 72 0a 20 20 20 20 rewrite))....(t.(user-error.....
a0180 20 20 20 22 60 67 70 74 65 6c 2d 72 65 77 72 69 74 65 27 20 72 65 71 75 69 72 65 73 20 61 6e 20 ..."`gptel-rewrite'.requires.an.
a01a0 61 63 74 69 76 65 20 72 65 67 69 6f 6e 20 6f 72 20 72 65 77 72 69 74 65 20 69 6e 20 70 72 6f 67 active.region.or.rewrite.in.prog
a01c0 72 65 73 73 2e 22 29 29 29 29 0a 0a 3b 3b 20 2a 20 54 72 61 6e 73 69 65 6e 74 20 69 6e 66 69 78 ress."))))..;;.*.Transient.infix
a01e0 65 73 20 66 6f 72 20 72 65 77 72 69 74 69 6e 67 0a 0a 28 74 72 61 6e 73 69 65 6e 74 2d 64 65 66 es.for.rewriting..(transient-def
a0200 69 6e 65 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 65 ine-infix.gptel--infix-rewrite-e
a0220 78 74 72 61 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 xtra.()..."Chat.directive.(syste
a0240 6d 20 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 m.message).to.use.for.rewriting.
a0260 6f 72 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 or.refactoring."...:description.
a0280 22 52 65 77 72 69 74 65 20 69 6e 73 74 72 75 63 74 69 6f 6e 22 0a 20 20 3a 63 6c 61 73 73 20 27 "Rewrite.instruction"...:class.'
a02a0 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 65 20 gptel-lisp-variable...:variable.
a02c0 27 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6d 65 73 73 61 67 65 0a 20 20 3a 73 65 74 2d 76 'gptel--rewrite-message...:set-v
a02e0 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 20 3a alue.#'gptel--set-with-scope...:
a0300 64 69 73 70 6c 61 79 2d 6e 69 6c 20 22 28 4e 6f 6e 65 29 22 0a 20 20 3a 6b 65 79 20 22 64 22 0a display-nil."(None)"...:key."d".
a0320 20 20 3a 66 6f 72 6d 61 74 20 22 20 25 6b 20 25 64 20 25 76 22 0a 20 20 3a 70 72 6f 6d 70 74 20 ..:format.".%k.%d.%v"...:prompt.
a0340 28 63 6f 6e 63 61 74 20 22 49 6e 73 74 72 75 63 74 69 6f 6e 73 20 28 22 20 67 70 74 65 6c 2d 2d (concat."Instructions.(".gptel--
a0360 72 65 61 64 2d 77 69 74 68 2d 70 72 65 66 69 78 2d 68 65 6c 70 20 22 29 20 22 29 0a 20 20 3a 72 read-with-prefix-help.").")...:r
a0380 65 61 64 65 72 20 23 27 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 72 65 61 64 2d 6d 65 73 73 eader.#'gptel--rewrite-read-mess
a03a0 61 67 65 29 0a 0a 28 74 72 61 6e 73 69 65 6e 74 2d 64 65 66 69 6e 65 2d 61 72 67 75 6d 65 6e 74 age)..(transient-define-argument
a03c0 20 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 72 65 77 72 69 74 65 2d 64 69 66 66 3a 2d 55 20 28 29 .gptel--infix-rewrite-diff:-U.()
a03e0 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 43 6f 6e 74 65 78 74 20 6c 69 6e 65 73 22 0a ...:description."Context.lines".
a0400 20 20 3a 63 6c 61 73 73 20 27 74 72 61 6e 73 69 65 6e 74 2d 6f 70 74 69 6f 6e 0a 20 20 3a 61 72 ..:class.'transient-option...:ar
a0420 67 75 6d 65 6e 74 20 22 2d 55 22 0a 20 20 3a 72 65 61 64 65 72 20 23 27 74 72 61 6e 73 69 65 6e gument."-U"...:reader.#'transien
a0440 74 2d 72 65 61 64 2d 6e 75 6d 62 65 72 2d 4e 30 29 0a 0a 3b 3b 20 2a 20 54 72 61 6e 73 69 65 6e t-read-number-N0)..;;.*.Transien
a0460 74 20 73 75 66 66 69 78 65 73 20 66 6f 72 20 72 65 77 72 69 74 69 6e 67 0a 0a 28 74 72 61 6e 73 t.suffixes.for.rewriting..(trans
a0480 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 75 66 66 69 78 ient-define-suffix.gptel--suffix
a04a0 2d 72 65 77 72 69 74 65 2d 64 69 72 65 63 74 69 76 65 20 28 26 6f 70 74 69 6f 6e 61 6c 20 63 61 -rewrite-directive.(&optional.ca
a04c0 6e 63 65 6c 29 0a 20 20 22 45 64 69 74 20 52 65 77 72 69 74 65 20 64 69 72 65 63 74 69 76 65 2e ncel)..."Edit.Rewrite.directive.
a04e0 0a 0a 43 41 4e 43 45 4c 20 69 73 20 75 73 65 64 20 74 6f 20 61 76 6f 69 64 20 74 6f 75 63 68 69 ..CANCEL.is.used.to.avoid.touchi
a0500 6e 67 20 64 79 6e 61 6d 69 63 20 72 65 77 72 69 74 65 20 64 69 72 65 63 74 69 76 65 73 2c 0a 67 ng.dynamic.rewrite.directives,.g
a0520 65 6e 65 72 61 74 65 64 20 66 72 6f 6d 20 66 75 6e 63 74 69 6f 6e 73 2e 22 0a 20 20 3a 74 72 61 enerated.from.functions."...:tra
a0540 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 0a 20 20 3a 64 65 nsient.'transient--do-exit...:de
a0560 73 63 72 69 70 74 69 6f 6e 20 22 45 64 69 74 20 66 75 6c 6c 20 72 65 77 72 69 74 65 20 64 69 72 scription."Edit.full.rewrite.dir
a0580 65 63 74 69 76 65 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 ective"...:key."s"...(interactiv
a05a0 65 0a 20 20 20 28 6c 69 73 74 20 28 61 6e 64 0a 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 74 e....(list.(and...........(funct
a05c0 69 6f 6e 70 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 64 69 72 65 63 74 69 76 65 29 0a 20 ionp.gptel--rewrite-directive)..
a05e0 20 20 20 20 20 20 20 20 20 28 6e 6f 74 20 28 79 2d 6f 72 2d 6e 2d 70 0a 20 20 20 20 20 20 20 20 .........(not.(y-or-n-p.........
a0600 20 20 20 20 20 20 20 20 22 52 65 77 72 69 74 65 20 64 69 72 65 63 74 69 76 65 20 69 73 20 64 79 ........"Rewrite.directive.is.dy
a0620 6e 61 6d 69 63 61 6c 6c 79 20 67 65 6e 65 72 61 74 65 64 3a 20 45 64 69 74 20 69 74 73 20 63 75 namically.generated:.Edit.its.cu
a0640 72 72 65 6e 74 20 76 61 6c 75 65 20 69 6e 73 74 65 61 64 3f 22 29 29 29 29 29 0a 20 20 28 69 66 rrent.value.instead?")))))...(if
a0660 20 63 61 6e 63 65 6c 20 28 70 72 6f 67 6e 20 28 6d 65 73 73 61 67 65 20 22 45 64 69 74 20 63 61 .cancel.(progn.(message."Edit.ca
a0680 6e 63 65 6c 65 64 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 61 nceled").....................(ca
a06a0 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 72 65 77 72 69 74 65 ll-interactively.#'gptel-rewrite
a06c0 29 29 0a 20 20 20 20 28 67 70 74 65 6c 2d 2d 65 64 69 74 2d 64 69 72 65 63 74 69 76 65 20 27 67 )).....(gptel--edit-directive.'g
a06e0 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 64 69 72 65 63 74 69 76 65 0a 20 20 20 20 20 20 3a 63 ptel--rewrite-directive.......:c
a0700 61 6c 6c 62 61 63 6b 20 28 6c 61 6d 62 64 61 20 28 5f 29 20 28 63 61 6c 6c 2d 69 6e 74 65 72 61 allback.(lambda.(_).(call-intera
a0720 63 74 69 76 65 6c 79 20 23 27 67 70 74 65 6c 2d 72 65 77 72 69 74 65 29 29 0a 20 20 20 20 20 20 ctively.#'gptel-rewrite)).......
a0740 3a 73 65 74 75 70 20 23 27 61 63 74 69 76 61 74 65 2d 6d 61 72 6b 29 29 29 0a 0a 28 74 72 61 6e :setup.#'activate-mark)))..(tran
a0760 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 75 66 66 69 sient-define-suffix.gptel--suffi
a0780 78 2d 72 65 77 72 69 74 65 20 28 26 6f 70 74 69 6f 6e 61 6c 20 72 65 77 72 69 74 65 2d 6d 65 73 x-rewrite.(&optional.rewrite-mes
a07a0 73 61 67 65 20 64 72 79 2d 72 75 6e 29 0a 20 20 22 52 65 77 72 69 74 65 20 6f 72 20 72 65 66 61 sage.dry-run)..."Rewrite.or.refa
a07c0 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 20 22 72 ctor.region.contents."...:key."r
a07e0 22 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 69 66 20 "...:description.(lambda.().(if.
a0800 28 67 65 74 2d 63 68 61 72 2d 70 72 6f 70 65 72 74 79 20 28 70 6f 69 6e 74 29 20 27 67 70 74 65 (get-char-property.(point).'gpte
a0820 6c 2d 72 65 77 72 69 74 65 29 20 22 49 74 65 72 61 74 65 22 20 22 52 65 77 72 69 74 65 22 29 29 l-rewrite)."Iterate"."Rewrite"))
a0840 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 20 28 6c 69 73 74 20 67 70 74 65 6c 2d 2d 72 65 77 ...(interactive.(list.gptel--rew
a0860 72 69 74 65 2d 6d 65 73 73 61 67 65 29 29 0a 20 20 28 6c 65 74 2a 20 28 28 6e 6f 73 79 73 74 65 rite-message))...(let*.((nosyste
a0880 6d 20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 63 61 70 61 62 6c 65 2d 70 20 27 6e 6f 73 79 73 m.(gptel--model-capable-p.'nosys
a08a0 74 65 6d 29 29 0a 20 20 20 20 20 20 20 20 20 3b 3b 20 54 72 79 20 74 6f 20 73 65 6e 64 20 63 6f tem))..........;;.Try.to.send.co
a08c0 6e 74 65 78 74 20 77 69 74 68 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 0a 20 20 20 20 20 20 ntext.with.system.message.......
a08e0 20 20 20 28 67 70 74 65 6c 2d 75 73 65 2d 63 6f 6e 74 65 78 74 0a 20 20 20 20 20 20 20 20 20 20 ...(gptel-use-context...........
a0900 28 61 6e 64 20 67 70 74 65 6c 2d 75 73 65 2d 63 6f 6e 74 65 78 74 20 28 69 66 20 6e 6f 73 79 73 (and.gptel-use-context.(if.nosys
a0920 74 65 6d 20 27 75 73 65 72 20 27 73 79 73 74 65 6d 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 70 tem.'user.'system)))..........(p
a0940 72 6f 6d 70 74 20 28 6c 69 73 74 20 28 6f 72 20 28 67 65 74 2d 63 68 61 72 2d 70 72 6f 70 65 72 rompt.(list.(or.(get-char-proper
a0960 74 79 20 28 70 6f 69 6e 74 29 20 27 67 70 74 65 6c 2d 72 65 77 72 69 74 65 29 0a 20 20 20 20 20 ty.(point).'gptel-rewrite)......
a0980 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 73 75 ......................(buffer-su
a09a0 62 73 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 bstring-no-properties.(region-be
a09c0 67 69 6e 6e 69 6e 67 29 20 28 72 65 67 69 6f 6e 2d 65 6e 64 29 29 29 0a 20 20 20 20 20 20 20 20 ginning).(region-end))).........
a09e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 57 68 61 74 20 69 73 20 74 68 65 20 72 65 71 75 ..............."What.is.the.requ
a0a00 69 72 65 64 20 63 68 61 6e 67 65 3f 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ired.change?"...................
a0a20 20 20 20 20 20 28 6f 72 20 72 65 77 72 69 74 65 2d 6d 65 73 73 61 67 65 20 67 70 74 65 6c 2d 2d .....(or.rewrite-message.gptel--
a0a40 72 65 77 72 69 74 65 2d 6d 65 73 73 61 67 65 29 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 6e 6f rewrite-message)))).....(when.no
a0a60 73 79 73 74 65 6d 0a 20 20 20 20 20 20 28 73 65 74 63 61 72 20 70 72 6f 6d 70 74 20 28 63 6f 6e system.......(setcar.prompt.(con
a0a80 63 61 74 20 28 63 61 72 2d 73 61 66 65 20 28 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 64 69 72 65 cat.(car-safe.(gptel--parse-dire
a0aa0 63 74 69 76 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 ctive...........................
a0ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 64 69 72 ..............gptel--rewrite-dir
a0ae0 65 63 74 69 76 65 20 27 72 61 77 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ective.'raw))...................
a0b00 20 20 20 20 20 20 20 20 20 20 20 22 5c 6e 5c 6e 22 20 28 63 61 72 20 70 72 6f 6d 70 74 29 29 29 ..........."\n\n".(car.prompt)))
a0b20 29 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 ).....(prog1.(gptel-request.prom
a0b40 70 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 64 72 79 2d 72 75 6e 20 64 72 79 2d 72 75 6e pt..............:dry-run.dry-run
a0b60 0a 20 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 72 65 77 ..............:system.gptel--rew
a0b80 72 69 74 65 2d 64 69 72 65 63 74 69 76 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 73 74 72 rite-directive..............:str
a0ba0 65 61 6d 20 67 70 74 65 6c 2d 73 74 72 65 61 6d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 eam.gptel-stream..............:c
a0bc0 6f 6e 74 65 78 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 6f 76 20 28 6f ontext..............(let.((ov.(o
a0be0 72 20 28 63 64 72 2d 73 61 66 65 20 28 67 65 74 2d 63 68 61 72 2d 70 72 6f 70 65 72 74 79 2d 61 r.(cdr-safe.(get-char-property-a
a0c00 6e 64 2d 6f 76 65 72 6c 61 79 20 28 70 6f 69 6e 74 29 20 27 67 70 74 65 6c 2d 72 65 77 72 69 74 nd-overlay.(point).'gptel-rewrit
a0c20 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 20 20 20 20 20 28 e))............................(
a0c40 6d 61 6b 65 2d 6f 76 65 72 6c 61 79 20 28 72 65 67 69 6f 6e 2d 62 65 67 69 6e 6e 69 6e 67 29 20 make-overlay.(region-beginning).
a0c60 28 72 65 67 69 6f 6e 2d 65 6e 64 29 20 6e 69 6c 20 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 (region-end).nil.t))))..........
a0c80 20 20 20 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75 74 20 6f 76 20 27 63 61 74 65 67 6f 72 79 20 ......(overlay-put.ov.'category.
a0ca0 27 67 70 74 65 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 76 65 72 6c 61 79 2d 'gptel)................(overlay-
a0cc0 70 75 74 20 6f 76 20 27 65 76 61 70 6f 72 61 74 65 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 put.ov.'evaporate.t)............
a0ce0 20 20 20 20 3b 3b 20 4e 4f 54 45 3a 20 53 77 69 74 63 68 20 74 6f 20 60 67 65 6e 65 72 61 74 65 ....;;.NOTE:.Switch.to.`generate
a0d00 2d 6e 65 77 2d 62 75 66 66 65 72 27 20 61 66 74 65 72 20 77 65 20 64 72 6f 70 20 45 6d 61 63 73 -new-buffer'.after.we.drop.Emacs
a0d20 20 32 37 2e 31 20 28 23 37 32 34 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e .27.1.(#724)................(con
a0d40 73 20 6f 76 20 28 67 70 74 65 6c 2d 2d 74 65 6d 70 2d 62 75 66 66 65 72 20 22 20 2a 67 70 74 65 s.ov.(gptel--temp-buffer.".*gpte
a0d60 6c 2d 72 65 77 72 69 74 65 2a 22 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 74 72 61 l-rewrite*")))..............:tra
a0d80 6e 73 66 6f 72 6d 73 20 67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 74 72 61 6e 73 66 6f 72 6d 2d 66 nsforms.gptel-prompt-transform-f
a0da0 75 6e 63 74 69 6f 6e 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 61 6c 6c 62 61 63 6b 20 unctions..............:callback.
a0dc0 23 27 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 63 61 6c 6c 62 61 63 6b 29 0a 20 20 20 20 20 #'gptel--rewrite-callback)......
a0de0 20 3b 3b 20 4d 6f 76 65 20 62 61 63 6b 20 73 6f 20 74 68 61 74 20 74 68 65 20 63 75 72 73 6f 72 .;;.Move.back.so.that.the.cursor
a0e00 20 69 73 20 6f 6e 20 74 68 65 20 6f 76 65 72 6c 61 79 20 77 68 65 6e 20 64 6f 6e 65 2e 0a 20 20 .is.on.the.overlay.when.done....
a0e20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 67 65 74 2d 63 68 61 72 2d 70 72 6f 70 65 72 74 79 20 28 ....(unless.(get-char-property.(
a0e40 70 6f 69 6e 74 29 20 27 67 70 74 65 6c 2d 72 65 77 72 69 74 65 29 0a 20 20 20 20 20 20 20 20 28 point).'gptel-rewrite).........(
a0e60 77 68 65 6e 20 28 3d 20 28 70 6f 69 6e 74 29 20 28 72 65 67 69 6f 6e 2d 65 6e 64 29 29 20 28 62 when.(=.(point).(region-end)).(b
a0e80 61 63 6b 77 61 72 64 2d 63 68 61 72 20 31 29 29 29 0a 20 20 20 20 20 20 28 64 65 61 63 74 69 76 ackward-char.1))).......(deactiv
a0ea0 61 74 65 2d 6d 61 72 6b 29 29 29 29 0a 0a 3b 3b 20 41 6c 6c 6f 77 20 74 68 69 73 20 74 6f 20 62 ate-mark))))..;;.Allow.this.to.b
a0ec0 65 20 63 61 6c 6c 65 64 20 6e 6f 6e 2d 69 6e 74 65 72 61 63 74 69 76 65 6c 79 20 66 6f 72 20 64 e.called.non-interactively.for.d
a0ee0 72 79 20 72 75 6e 73 0a 28 70 75 74 20 27 67 70 74 65 6c 2d 2d 73 75 66 66 69 78 2d 72 65 77 72 ry.runs.(put.'gptel--suffix-rewr
a0f00 69 74 65 20 27 69 6e 74 65 72 61 63 74 69 76 65 2d 6f 6e 6c 79 20 6e 69 6c 29 0a 0a 28 74 72 61 ite.'interactive-only.nil)..(tra
a0f20 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 75 66 66 nsient-define-suffix.gptel--suff
a0f40 69 78 2d 72 65 77 72 69 74 65 2d 64 69 66 66 20 28 26 6f 70 74 69 6f 6e 61 6c 20 73 77 69 74 63 ix-rewrite-diff.(&optional.switc
a0f60 68 65 73 29 0a 20 20 22 44 69 66 66 20 4c 4c 4d 20 6f 75 74 70 75 74 20 61 67 61 69 6e 73 74 20 hes)..."Diff.LLM.output.against.
a0f80 62 75 66 66 65 72 2e 22 0a 20 20 3a 69 66 20 28 6c 61 6d 62 64 61 20 28 29 20 67 70 74 65 6c 2d buffer."...:if.(lambda.().gptel-
a0fa0 2d 72 65 77 72 69 74 65 2d 6f 76 65 72 6c 61 79 73 29 0a 20 20 3a 6b 65 79 20 22 44 22 0a 20 20 -rewrite-overlays)...:key."D"...
a0fc0 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 44 69 66 66 20 20 4c 4c 4d 20 72 65 77 72 69 74 65 73 :description."Diff..LLM.rewrites
a0fe0 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 20 28 6c 69 73 74 20 28 74 72 61 6e 73 69 65 6e "...(interactive.(list.(transien
a1000 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 64 t-args.transient-current-command
a1020 29 29 29 0a 20 20 28 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 64 69 66 66 20 67 70 74 65 6c )))...(gptel--rewrite-diff.gptel
a1040 2d 2d 72 65 77 72 69 74 65 2d 6f 76 65 72 6c 61 79 73 20 73 77 69 74 63 68 65 73 29 29 0a 0a 28 --rewrite-overlays.switches))..(
a1060 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
a1080 75 66 66 69 78 2d 72 65 77 72 69 74 65 2d 65 64 69 66 66 20 28 29 0a 20 20 22 45 64 69 66 66 20 uffix-rewrite-ediff.()..."Ediff.
a10a0 4c 4c 4d 20 6f 75 74 70 75 74 20 61 67 61 69 6e 73 74 20 62 75 66 66 65 72 2e 22 0a 20 20 3a 69 LLM.output.against.buffer."...:i
a10c0 66 20 28 6c 61 6d 62 64 61 20 28 29 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6f 76 65 72 f.(lambda.().gptel--rewrite-over
a10e0 6c 61 79 73 29 0a 20 20 3a 6b 65 79 20 22 45 22 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 lays)...:key."E"...:description.
a1100 22 45 64 69 66 66 20 4c 4c 4d 20 72 65 77 72 69 74 65 73 22 0a 20 20 28 69 6e 74 65 72 61 63 74 "Ediff.LLM.rewrites"...(interact
a1120 69 76 65 29 0a 20 20 28 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 65 64 69 66 66 20 67 70 74 ive)...(gptel--rewrite-ediff.gpt
a1140 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6f 76 65 72 6c 61 79 73 29 29 0a 0a 28 74 72 61 6e 73 69 65 el--rewrite-overlays))..(transie
a1160 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
a1180 65 77 72 69 74 65 2d 6d 65 72 67 65 20 28 29 0a 20 20 22 49 6e 73 65 72 74 20 4c 4c 4d 20 6f 75 ewrite-merge.()..."Insert.LLM.ou
a11a0 74 70 75 74 20 61 73 20 6d 65 72 67 65 20 63 6f 6e 66 6c 69 63 74 73 22 0a 20 20 3a 69 66 20 28 tput.as.merge.conflicts"...:if.(
a11c0 6c 61 6d 62 64 61 20 28 29 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6f 76 65 72 6c 61 79 lambda.().gptel--rewrite-overlay
a11e0 73 29 0a 20 20 3a 6b 65 79 20 22 4d 22 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 4d 65 s)...:key."M"...:description."Me
a1200 72 67 65 20 77 69 74 68 20 63 6f 6e 66 6c 69 63 74 73 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 rge.with.conflicts"...(interacti
a1220 76 65 29 0a 20 20 28 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6d 65 72 67 65 20 67 70 74 65 ve)...(gptel--rewrite-merge.gpte
a1240 6c 2d 2d 72 65 77 72 69 74 65 2d 6f 76 65 72 6c 61 79 73 29 29 0a 0a 28 74 72 61 6e 73 69 65 6e l--rewrite-overlays))..(transien
a1260 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 65 t-define-suffix.gptel--suffix-re
a1280 77 72 69 74 65 2d 61 63 63 65 70 74 20 28 29 0a 20 20 22 41 63 63 65 70 74 20 70 65 6e 64 69 6e write-accept.()..."Accept.pendin
a12a0 67 20 4c 4c 4d 20 72 65 77 72 69 74 65 73 2e 22 0a 20 20 3a 69 66 20 28 6c 61 6d 62 64 61 20 28 g.LLM.rewrites."...:if.(lambda.(
a12c0 29 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6f 76 65 72 6c 61 79 73 29 0a 20 20 3a 6b 65 ).gptel--rewrite-overlays)...:ke
a12e0 79 20 22 41 22 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 41 63 63 65 70 74 20 61 6e 64 y."A"...:description."Accept.and
a1300 20 72 65 70 6c 61 63 65 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 28 67 70 74 .replace"...(interactive)...(gpt
a1320 65 6c 2d 2d 72 65 77 72 69 74 65 2d 61 63 63 65 70 74 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 el--rewrite-accept.gptel--rewrit
a1340 65 2d 6f 76 65 72 6c 61 79 73 29 29 0a 0a 28 74 72 61 6e 73 69 65 6e 74 2d 64 65 66 69 6e 65 2d e-overlays))..(transient-define-
a1360 73 75 66 66 69 78 20 67 70 74 65 6c 2d 2d 73 75 66 66 69 78 2d 72 65 77 72 69 74 65 2d 72 65 6a suffix.gptel--suffix-rewrite-rej
a1380 65 63 74 20 28 29 0a 20 20 22 43 6c 65 61 72 20 70 65 6e 64 69 6e 67 20 4c 4c 4d 20 72 65 77 72 ect.()..."Clear.pending.LLM.rewr
a13a0 69 74 65 73 2e 22 0a 20 20 3a 69 66 20 28 6c 61 6d 62 64 61 20 28 29 20 67 70 74 65 6c 2d 2d 72 ites."...:if.(lambda.().gptel--r
a13c0 65 77 72 69 74 65 2d 6f 76 65 72 6c 61 79 73 29 0a 20 20 3a 6b 65 79 20 22 4b 22 0a 20 20 3a 64 ewrite-overlays)...:key."K"...:d
a13e0 65 73 63 72 69 70 74 69 6f 6e 20 22 43 6c 65 61 72 20 70 65 6e 64 69 6e 67 20 72 65 77 72 69 74 escription."Clear.pending.rewrit
a1400 65 73 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 28 67 70 74 65 6c 2d 2d 72 65 es"...(interactive)...(gptel--re
a1420 77 72 69 74 65 2d 72 65 6a 65 63 74 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6f 76 65 72 write-reject.gptel--rewrite-over
a1440 6c 61 79 73 29 29 0a 0a 28 70 72 6f 76 69 64 65 20 27 67 70 74 65 6c 2d 72 65 77 72 69 74 65 29 lays))..(provide.'gptel-rewrite)
a1460 0a 3b 3b 3b 20 67 70 74 65 6c 2d 72 65 77 72 69 74 65 2e 65 6c 20 65 6e 64 73 20 68 65 72 65 0a .;;;.gptel-rewrite.el.ends.here.
a1480 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 65 2d .;;.Local.Variables:.;;.outline-
a14a0 72 65 67 65 78 70 3a 20 22 5e 3b 3b 20 5c 5c 2a 2b 22 0a 3b 3b 20 45 6e 64 3a 0a 00 00 00 00 00 regexp:."^;;.\\*+".;;.End:......
a14c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a14e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a1500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a1520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a1540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a1560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a1580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a15a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a15c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a15e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a1600 67 70 74 65 6c 2d 30 2e 39 2e 39 2f 67 70 74 65 6c 2d 6f 70 65 6e 61 69 2e 65 6c 00 00 00 00 00 gptel-0.9.9/gptel-openai.el.....
a1620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a1640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a1660 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
a1680 30 30 37 33 30 35 37 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 34 32 32 35 00 20 30 00 00 00 0073057.00000000000.014225..0...
a16a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a16c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a16e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a1700 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...................
a1720 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...................
a1740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a1760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a1780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a17a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a17c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a17e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a1800 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
a1820 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
a1840 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.(
a1860 43 29 20 32 30 32 33 2d 32 30 32 35 20 20 4b 61 72 74 68 69 6b 20 43 68 69 6b 6d 61 67 61 6c 75 C).2023-2025..Karthik.Chikmagalu
a1880 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 61 6c 75 r..;;.Author:.Karthik.Chikmagalu
a18a0 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 6f 6d 3e r.<karthikchikmagalur@gmail.com>
a18c0 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 77 61 ..;;.This.program.is.free.softwa
a18e0 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 64 2f re;.you.can.redistribute.it.and/
a1900 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 73 20 or.modify.;;.it.under.the.terms.
a1920 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 73 of.the.GNU.General.Public.Licens
a1940 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 53 6f e.as.published.by.;;.the.Free.So
a1960 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 69 6f ftware.Foundation,.either.versio
a1980 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 79 6f n.3.of.the.License,.or.;;.(at.yo
a19a0 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 0a 3b ur.option).any.later.version...;
a19c0 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 69 6e ;.This.program.is.distributed.in
a19e0 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 75 6c .the.hope.that.it.will.be.useful
a1a00 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 20 77 ,.;;.but.WITHOUT.ANY.WARRANTY;.w
a1a20 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 74 79 ithout.even.the.implied.warranty
a1a40 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 45 53 .of.;;.MERCHANTABILITY.or.FITNES
a1a60 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 65 65 S.FOR.A.PARTICULAR.PURPOSE...See
a1a80 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 65 6e .the.;;.GNU.General.Public.Licen
a1aa0 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 68 6f se.for.more.details...;;.You.sho
a1ac0 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 65 20 uld.have.received.a.copy.of.the.
a1ae0 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 61 6c GNU.General.Public.License.;;.al
a1b00 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 2c 20 ong.with.this.program...If.not,.
a1b20 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 73 65 see.<https://www.gnu.org/license
a1b40 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 73 20 66 s/>...;;;.Commentary:..;;.This.f
a1b60 69 6c 65 20 61 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 ile.adds.support.for.the.ChatGPT
a1b80 20 41 50 49 20 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 .API.to.gptel..;;;.Code:.(requir
a1ba0 65 20 27 63 6c 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 e.'cl-generic).(eval-when-compil
a1bc0 65 0a 20 20 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 e...(require.'cl-lib)).(require.
a1be0 27 6d 61 70 29 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 'map)..(defvar.gptel-model).(def
a1c00 76 61 72 20 67 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 var.gptel-stream).(defvar.gptel-
a1c20 75 73 65 2d 63 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 use-curl).(defvar.gptel-backend)
a1c40 0a 28 64 65 66 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 .(defvar.gptel-temperature).(def
a1c60 76 61 72 20 67 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 var.gptel-max-tokens).(defvar.gp
a1c80 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 29 0a 28 64 65 66 76 61 72 20 6a 73 6f tel--system-message).(defvar.jso
a1ca0 6e 2d 6f 62 6a 65 63 74 2d 74 79 70 65 29 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d 6d 6f 64 n-object-type).(defvar.gptel-mod
a1cc0 65 29 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d 74 72 61 63 6b 2d 72 65 73 70 6f 6e 73 65 29 e).(defvar.gptel-track-response)
a1ce0 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d 74 72 61 63 6b 2d 6d 65 64 69 61 29 0a 28 64 65 66 .(defvar.gptel-track-media).(def
a1d00 76 61 72 20 67 70 74 65 6c 2d 75 73 65 2d 74 6f 6f 6c 73 29 0a 28 64 65 66 76 61 72 20 67 70 74 var.gptel-use-tools).(defvar.gpt
a1d20 65 6c 2d 74 6f 6f 6c 73 29 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d 2d 73 63 68 65 6d 61 29 el-tools).(defvar.gptel--schema)
a1d40 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d 2d 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 29 0a .(defvar.gptel--request-params).
a1d60 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d (declare-function.gptel-context-
a1d80 2d 63 6f 6c 6c 65 63 74 2d 6d 65 64 69 61 20 22 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 22 29 0a -collect-media."gptel-context").
a1da0 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 67 70 74 65 6c 2d 2d 62 61 73 65 36 34 2d (declare-function.gptel--base64-
a1dc0 65 6e 63 6f 64 65 20 22 67 70 74 65 6c 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f encode."gptel").(declare-functio
a1de0 6e 20 67 70 74 65 6c 2d 2d 74 72 69 6d 2d 70 72 65 66 69 78 65 73 20 22 67 70 74 65 6c 22 29 0a n.gptel--trim-prefixes."gptel").
a1e00 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 6d (declare-function.gptel--parse-m
a1e20 65 64 69 61 2d 6c 69 6e 6b 73 20 22 67 70 74 65 6c 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e edia-links."gptel").(declare-fun
a1e40 63 74 69 6f 6e 20 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 63 61 70 61 62 6c 65 2d 70 20 22 67 70 ction.gptel--model-capable-p."gp
a1e60 74 65 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 65 6c 2d 2d 6d tel").(declare-function.gptel--m
a1e80 6f 64 65 6c 2d 6e 61 6d 65 20 22 67 70 74 65 6c 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 odel-name."gptel").(declare-func
a1ea0 74 69 6f 6e 20 67 70 74 65 6c 2d 2d 67 65 74 2d 61 70 69 2d 6b 65 79 20 22 67 70 74 65 6c 22 29 tion.gptel--get-api-key."gptel")
a1ec0 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 2d 69 6e 73 65 72 74 .(declare-function.gptel--insert
a1ee0 2d 66 69 6c 65 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 -file-string."gptel").(declare-f
a1f00 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 2d 70 unction.prop-match-value."text-p
a1f20 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 69 roperty-search").(declare-functi
a1f40 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 72 64 on.text-property-search-backward
a1f60 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 72 ."text-property-search").(declar
a1f80 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 64 65 e-function.json-read."json").(de
a1fa0 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 65 66 clare-function.gptel-prompt-pref
a1fc0 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 6e 63 ix-string."gptel").(declare-func
a1fe0 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 69 6e tion.gptel-response-prefix-strin
a2000 67 20 22 67 70 74 65 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 g."gptel").(declare-function.gpt
a2020 65 6c 2d 2d 6d 65 72 67 65 2d 70 6c 69 73 74 73 20 22 67 70 74 65 6c 22 29 0a 28 64 65 63 6c 61 el--merge-plists."gptel").(decla
a2040 72 65 2d 66 75 6e 63 74 69 6f 6e 20 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 72 65 71 75 65 73 74 re-function.gptel--model-request
a2060 2d 70 61 72 61 6d 73 20 22 67 70 74 65 6c 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 -params."gptel").(declare-functi
a2080 6f 6e 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 77 72 61 70 20 22 67 70 74 65 6c 2d 63 6f on.gptel-context--wrap."gptel-co
a20a0 6e 74 65 78 74 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 ntext").(declare-function.gptel-
a20c0 2d 69 6e 6a 65 63 74 2d 70 72 6f 6d 70 74 20 22 67 70 74 65 6c 22 29 0a 28 64 65 63 6c 61 72 65 -inject-prompt."gptel").(declare
a20e0 2d 66 75 6e 63 74 69 6f 6e 20 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 74 6f 6f 6c 73 20 22 67 70 -function.gptel--parse-tools."gp
a2100 74 65 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 65 6c 2d 2d 70 tel").(declare-function.gptel--p
a2120 61 72 73 65 2d 73 63 68 65 6d 61 20 22 67 70 74 65 6c 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 arse-schema."gptel").(declare-fu
a2140 6e 63 74 69 6f 6e 20 67 70 74 65 6c 2d 2d 70 72 65 70 72 6f 63 65 73 73 2d 73 63 68 65 6d 61 20 nction.gptel--preprocess-schema.
a2160 22 67 70 74 65 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 65 6c "gptel").(declare-function.gptel
a2180 2d 2d 64 69 73 70 61 74 63 68 2d 73 63 68 65 6d 61 2d 74 79 70 65 20 22 67 70 74 65 6c 22 29 0a --dispatch-schema-type."gptel").
a21a0 0a 3b 3b 20 4a 53 4f 4e 20 63 6f 6e 76 65 72 73 69 6f 6e 20 73 65 6d 61 6e 74 69 63 73 20 75 73 .;;.JSON.conversion.semantics.us
a21c0 65 64 20 62 79 20 67 70 74 65 6c 0a 3b 3b 20 65 6d 70 74 79 20 6f 62 6a 65 63 74 20 22 7b 7d 22 ed.by.gptel.;;.empty.object."{}"
a21e0 20 3d 3e 20 65 6d 70 74 79 20 6c 69 73 74 20 27 28 29 20 3d 3d 20 6e 69 6c 0a 3b 3b 20 6e 75 6c .=>.empty.list.'().==.nil.;;.nul
a2200 6c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3d 3e 20 3a 6e 75 6c 6c 0a 3b 3b 20 66 61 6c 73 65 l..............=>.:null.;;.false
a2220 20 20 20 20 20 20 20 20 20 20 20 20 20 3d 3e 20 3a 6a 73 6f 6e 2d 66 61 6c 73 65 0a 0a 3b 3b 20 .............=>.:json-false..;;.
a2240 54 4f 44 4f 28 74 6f 6f 6c 29 20 45 78 63 65 70 74 20 77 68 65 6e 20 72 65 61 64 69 6e 67 20 4a TODO(tool).Except.when.reading.J
a2260 53 4f 4e 20 66 72 6f 6d 20 61 20 73 74 72 69 6e 67 2c 20 77 68 65 72 65 20 6e 75 6c 6c 20 3d 3e SON.from.a.string,.where.null.=>
a2280 20 6e 69 6c 0a 0a 28 64 65 66 6d 61 63 72 6f 20 67 70 74 65 6c 2d 2d 6a 73 6f 6e 2d 72 65 61 64 .nil..(defmacro.gptel--json-read
a22a0 20 28 29 0a 20 20 28 69 66 20 28 66 62 6f 75 6e 64 70 20 27 6a 73 6f 6e 2d 70 61 72 73 65 2d 62 .()...(if.(fboundp.'json-parse-b
a22c0 75 66 66 65 72 29 0a 20 20 20 20 20 20 60 28 6a 73 6f 6e 2d 70 61 72 73 65 2d 62 75 66 66 65 72 uffer).......`(json-parse-buffer
a22e0 0a 20 20 20 20 20 20 20 20 3a 6f 62 6a 65 63 74 2d 74 79 70 65 20 27 70 6c 69 73 74 0a 20 20 20 .........:object-type.'plist....
a2300 20 20 20 20 20 3a 6e 75 6c 6c 2d 6f 62 6a 65 63 74 20 3a 6e 75 6c 6c 0a 20 20 20 20 20 20 20 20 .....:null-object.:null.........
a2320 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).....(
a2340 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-
a2360 6f 62 6a 65 63 74 2d 74 79 70 65 29 0a 20 20 20 20 28 64 65 66 76 61 72 20 6a 73 6f 6e 2d 6e 75 object-type).....(defvar.json-nu
a2380 6c 6c 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 6e 2d 72 ll).....(declare-function.json-r
a23a0 65 61 64 20 22 6a 73 6f 6e 22 20 28 29 29 0a 20 20 20 20 60 28 6c 65 74 20 28 28 6a 73 6f 6e 2d ead."json".()).....`(let.((json-
a23c0 6f 62 6a 65 63 74 2d 74 79 70 65 20 27 70 6c 69 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 object-type.'plist)............(
a23e0 6a 73 6f 6e 2d 6e 75 6c 6c 20 3a 6e 75 6c 6c 29 29 0a 20 20 20 20 20 20 28 6a 73 6f 6e 2d 72 65 json-null.:null)).......(json-re
a2400 61 64 29 29 29 29 0a 0a 28 64 65 66 6d 61 63 72 6f 20 67 70 74 65 6c 2d 2d 6a 73 6f 6e 2d 72 65 ad))))..(defmacro.gptel--json-re
a2420 61 64 2d 73 74 72 69 6e 67 20 28 73 74 72 29 0a 20 20 28 69 66 20 28 66 62 6f 75 6e 64 70 20 27 ad-string.(str)...(if.(fboundp.'
a2440 6a 73 6f 6e 2d 70 61 72 73 65 2d 73 74 72 69 6e 67 29 0a 20 20 20 20 20 20 60 28 6a 73 6f 6e 2d json-parse-string).......`(json-
a2460 70 61 72 73 65 2d 73 74 72 69 6e 67 20 2c 73 74 72 0a 20 20 20 20 20 20 20 20 3a 6f 62 6a 65 63 parse-string.,str.........:objec
a2480 74 2d 74 79 70 65 20 27 70 6c 69 73 74 0a 20 20 20 20 20 20 20 20 3a 6e 75 6c 6c 2d 6f 62 6a 65 t-type.'plist.........:null-obje
a24a0 63 74 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 3a 66 61 6c 73 65 2d 6f 62 6a 65 63 74 20 3a 6a 73 ct.nil.........:false-object.:js
a24c0 6f 6e 2d 66 61 6c 73 65 29 0a 20 20 20 20 28 72 65 71 75 69 72 65 20 27 6a 73 6f 6e 29 0a 20 20 on-false).....(require.'json)...
a24e0 20 20 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 20 20 20 20 ..(defvar.json-object-type).....
a2500 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 2d 66 72 6f 6d (declare-function.json-read-from
a2520 2d 73 74 72 69 6e 67 20 22 6a 73 6f 6e 22 20 28 29 29 0a 20 20 20 20 60 28 6c 65 74 20 28 28 6a -string."json".()).....`(let.((j
a2540 73 6f 6e 2d 6f 62 6a 65 63 74 2d 74 79 70 65 20 27 70 6c 69 73 74 29 29 0a 20 20 20 20 20 20 28 son-object-type.'plist)).......(
a2560 6a 73 6f 6e 2d 72 65 61 64 2d 66 72 6f 6d 2d 73 74 72 69 6e 67 20 2c 73 74 72 29 29 29 29 0a 0a json-read-from-string.,str))))..
a2580 28 64 65 66 6d 61 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 (defmacro.gptel--json-encode.(ob
a25a0 6a 65 63 74 29 0a 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 ject)...(if.(fboundp.'json-seria
a25c0 6c 69 7a 65 29 0a 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 lize).......`(json-serialize.,ob
a25e0 6a 65 63 74 0a 20 20 20 20 20 20 20 20 3a 6e 75 6c 6c 2d 6f 62 6a 65 63 74 20 3a 6e 75 6c 6c 0a ject.........:null-object.:null.
a2600 20 20 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 ........:false-object.:json-fals
a2620 65 29 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 e).....(require.'json).....(defv
a2640 61 72 20 6a 73 6f 6e 2d 66 61 6c 73 65 29 0a 20 20 20 20 28 64 65 66 76 61 72 20 6a 73 6f 6e 2d ar.json-false).....(defvar.json-
a2660 6e 75 6c 6c 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 6e null).....(declare-function.json
a2680 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 6c -encode."json".(object)).....`(l
a26a0 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 0a 20 20 20 et.((json-false.:json-false)....
a26c0 20 20 20 20 20 20 20 20 28 6a 73 6f 6e 2d 6e 75 6c 6c 20 20 3a 6e 75 6c 6c 29 29 0a 20 20 20 20 ........(json-null..:null)).....
a26e0 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 28 64 65 66 ..(json-encode.,object))))..(def
a2700 75 6e 20 67 70 74 65 6c 2d 2d 70 72 6f 63 65 73 73 2d 6d 6f 64 65 6c 73 20 28 6d 6f 64 65 6c 73 un.gptel--process-models.(models
a2720 29 0a 20 20 22 43 6f 6e 76 65 72 74 20 69 74 65 6d 73 20 69 6e 20 4d 4f 44 45 4c 53 20 74 6f 20 )..."Convert.items.in.MODELS.to.
a2740 73 79 6d 62 6f 6c 73 20 77 69 74 68 20 61 70 70 72 6f 70 72 69 61 74 65 20 70 72 6f 70 65 72 74 symbols.with.appropriate.propert
a2760 69 65 73 2e 22 0a 20 20 28 6c 65 74 20 28 28 6d 6f 64 65 6c 73 2d 70 72 6f 63 65 73 73 65 64 29 ies."...(let.((models-processed)
a2780 29 0a 20 20 20 20 28 64 6f 6c 69 73 74 20 28 6d 6f 64 65 6c 20 6d 6f 64 65 6c 73 29 0a 20 20 20 ).....(dolist.(model.models)....
a27a0 20 20 20 28 63 6c 2d 65 74 79 70 65 63 61 73 65 20 6d 6f 64 65 6c 0a 20 20 20 20 20 20 20 20 28 ...(cl-etypecase.model.........(
a27c0 73 74 72 69 6e 67 20 28 70 75 73 68 20 28 69 6e 74 65 72 6e 20 6d 6f 64 65 6c 29 20 6d 6f 64 65 string.(push.(intern.model).mode
a27e0 6c 73 2d 70 72 6f 63 65 73 73 65 64 29 29 0a 20 20 20 20 20 20 20 20 28 73 79 6d 62 6f 6c 20 28 ls-processed)).........(symbol.(
a2800 70 75 73 68 20 6d 6f 64 65 6c 20 6d 6f 64 65 6c 73 2d 70 72 6f 63 65 73 73 65 64 29 29 0a 20 20 push.model.models-processed))...
a2820 20 20 20 20 20 20 28 63 6f 6e 73 0a 20 20 20 20 20 20 20 20 20 28 63 6c 2d 64 65 73 74 72 75 63 ......(cons..........(cl-destruc
a2840 74 75 72 69 6e 67 2d 62 69 6e 64 20 28 6e 61 6d 65 20 2e 20 70 72 6f 70 73 29 20 6d 6f 64 65 6c turing-bind.(name...props).model
a2860 0a 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 66 20 28 73 79 6d 62 6f 6c 2d 70 6c 69 73 74 20 ............(setf.(symbol-plist.
a2880 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 4d 41 59 42 45 3a name)..................;;.MAYBE:
a28a0 20 4d 65 72 67 69 6e 67 20 65 78 69 73 74 69 6e 67 20 73 79 6d 62 6f 6c 20 70 6c 69 73 74 73 20 .Merging.existing.symbol.plists.
a28c0 69 73 20 73 61 66 65 72 2c 20 62 75 74 20 6d 61 6b 65 73 20 69 74 0a 20 20 20 20 20 20 20 20 20 is.safer,.but.makes.it..........
a28e0 20 20 20 20 20 20 20 20 3b 3b 20 64 69 66 66 69 63 75 6c 74 20 74 6f 20 72 65 73 65 74 20 61 20 ........;;.difficult.to.reset.a.
a2900 73 79 6d 62 6f 6c 20 70 6c 69 73 74 2c 20 73 69 6e 63 65 20 72 65 6d 6f 76 69 6e 67 20 6b 65 79 symbol.plist,.since.removing.key
a2920 73 20 66 72 6f 6d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 69 74 20 28 61 s.from..................;;.it.(a
a2940 73 20 6f 70 70 6f 73 65 64 20 74 6f 20 73 65 74 74 69 6e 67 20 74 68 65 6d 20 74 6f 20 6e 69 6c s.opposed.to.setting.them.to.nil
a2960 29 20 69 73 20 6d 6f 72 65 20 77 6f 72 6b 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ).is.more.work..................
a2980 20 3b 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 28 6d 61 70 2d 6d 65 72 .;;..................;;.(map-mer
a29a0 67 65 20 27 70 6c 69 73 74 20 28 73 79 6d 62 6f 6c 2d 70 6c 69 73 74 20 6e 61 6d 65 29 20 70 72 ge.'plist.(symbol-plist.name).pr
a29c0 6f 70 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 70 73 29 0a 20 20 20 ops)..................props)....
a29e0 20 20 20 20 20 20 20 20 28 70 75 73 68 20 6e 61 6d 65 20 6d 6f 64 65 6c 73 2d 70 72 6f 63 65 73 ........(push.name.models-proces
a2a00 73 65 64 29 29 29 29 29 0a 20 20 20 20 28 6e 72 65 76 65 72 73 65 20 6d 6f 64 65 6c 73 2d 70 72 sed))))).....(nreverse.models-pr
a2a20 6f 63 65 73 73 65 64 29 29 29 0a 0a 3b 3b 3b 20 43 6f 6d 6d 6f 6e 20 62 61 63 6b 65 6e 64 20 73 ocessed)))..;;;.Common.backend.s
a2a40 74 72 75 63 74 20 66 6f 72 20 4c 4c 4d 20 73 75 70 70 6f 72 74 0a 28 64 65 66 76 61 72 20 67 70 truct.for.LLM.support.(defvar.gp
a2a60 74 65 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 tel--known-backends.nil..."Alist
a2a80 20 6f 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 .of.LLM.backends.known.to.gptel.
a2aa0 0a 0a 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 ..This.is.an.alist.mapping.user-
a2ac0 70 72 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 provided.names.to.backend.struct
a2ae0 73 2c 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 s,.see.`gptel-backend'...You.can
a2b00 20 68 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 .have.more.than.one.backend.poin
a2b20 74 69 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 ting.to.the.same.resource.with.d
a2b40 69 66 66 65 72 69 6e 67 20 73 65 74 74 69 6e 67 73 2e 22 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 iffering.settings.")..(defun.gpt
a2b60 65 6c 2d 67 65 74 2d 62 61 63 6b 65 6e 64 20 28 6e 61 6d 65 29 0a 20 20 22 52 65 74 75 72 6e 20 el-get-backend.(name)..."Return.
a2b80 67 70 74 65 6c 20 62 61 63 6b 65 6e 64 20 77 69 74 68 20 4e 41 4d 45 2e 0a 0a 54 68 72 6f 77 20 gptel.backend.with.NAME...Throw.
a2ba0 61 6e 20 65 72 72 6f 72 20 69 66 20 74 68 65 72 65 20 69 73 20 6e 6f 20 6d 61 74 63 68 2e 22 0a an.error.if.there.is.no.match.".
a2bc0 20 20 28 6f 72 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 ..(or.(alist-get.name.gptel--kno
a2be0 77 6e 2d 62 61 63 6b 65 6e 64 73 20 6e 69 6c 20 6e 69 6c 20 23 27 65 71 75 61 6c 29 0a 20 20 20 wn-backends.nil.nil.#'equal)....
a2c00 20 20 20 28 75 73 65 72 2d 65 72 72 6f 72 20 22 42 61 63 6b 65 6e 64 20 25 73 20 69 73 20 6e 6f ...(user-error."Backend.%s.is.no
a2c20 74 20 6b 6e 6f 77 6e 20 74 6f 20 62 65 20 64 65 66 69 6e 65 64 22 0a 20 20 20 20 20 20 20 20 20 t.known.to.be.defined"..........
a2c40 20 20 20 20 20 20 20 20 20 6e 61 6d 65 29 29 29 0a 0a 28 67 76 2d 64 65 66 69 6e 65 2d 73 65 74 .........name)))..(gv-define-set
a2c60 74 65 72 20 67 70 74 65 6c 2d 67 65 74 2d 62 61 63 6b 65 6e 64 20 28 76 61 6c 20 6e 61 6d 65 29 ter.gptel-get-backend.(val.name)
a2c80 0a 20 20 60 28 73 65 74 66 20 28 61 6c 69 73 74 2d 67 65 74 20 2c 6e 61 6d 65 20 67 70 74 65 6c ...`(setf.(alist-get.,name.gptel
a2ca0 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 6e 69 6c 20 74 --known-backends...........nil.t
a2cc0 20 23 27 65 71 75 61 6c 29 0a 20 20 20 20 2c 76 61 6c 29 29 0a 0a 28 63 6c 2d 64 65 66 73 74 72 .#'equal).....,val))..(cl-defstr
a2ce0 75 63 74 0a 20 20 20 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 28 3a 63 6f 6e 73 74 72 75 uct.....(gptel-backend.(:constru
a2d00 63 74 6f 72 20 67 70 74 65 6c 2d 2d 6d 61 6b 65 2d 62 61 63 6b 65 6e 64 29 0a 20 20 20 20 20 20 ctor.gptel--make-backend).......
a2d20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 3a 63 6f 70 69 65 72 20 67 70 74 65 6c 2d 2d 63 6f 70 .............(:copier.gptel--cop
a2d40 79 2d 62 61 63 6b 65 6e 64 29 29 0a 20 20 6e 61 6d 65 20 68 6f 73 74 20 68 65 61 64 65 72 20 70 y-backend))...name.host.header.p
a2d60 72 6f 74 6f 63 6f 6c 20 73 74 72 65 61 6d 0a 20 20 65 6e 64 70 6f 69 6e 74 20 6b 65 79 20 6d 6f rotocol.stream...endpoint.key.mo
a2d80 64 65 6c 73 20 75 72 6c 20 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 0a 20 20 63 75 72 6c 2d 61 dels.url.request-params...curl-a
a2da0 72 67 73 0a 20 20 28 63 6f 64 69 6e 67 2d 73 79 73 74 65 6d 20 6e 69 6c 20 3a 64 6f 63 75 6d 65 rgs...(coding-system.nil.:docume
a2dc0 6e 74 61 74 69 6f 6e 20 22 43 61 6e 20 62 65 20 73 65 74 20 74 6f 20 60 62 69 6e 61 72 79 27 20 ntation."Can.be.set.to.`binary'.
a2de0 69 66 20 74 68 65 20 62 61 63 6b 65 6e 64 20 65 78 70 65 63 74 73 20 6e 6f 6e 20 55 54 46 2d 38 if.the.backend.expects.non.UTF-8
a2e00 20 6f 75 74 70 75 74 2e 22 29 29 0a 0a 3b 3b 3b 20 4f 70 65 6e 41 49 20 28 43 68 61 74 47 50 54 .output."))..;;;.OpenAI.(ChatGPT
a2e20 29 0a 28 63 6c 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 ).(cl-defstruct.(gptel-openai.(:
a2e40 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 70 65 6e 61 69 29 0a constructor.gptel--make-openai).
a2e60 20 20 20 20 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 6f ............................(:co
a2e80 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 20 20 pier.nil).......................
a2ea0 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 29 29 ......(:include.gptel-backend)))
a2ec0 0a 0a 3b 3b 20 48 6f 77 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 66 75 6e 63 74 69 6f 6e 20 ..;;.How.the.following.function.
a2ee0 77 6f 72 6b 73 3a 0a 3b 3b 0a 3b 3b 20 54 68 65 20 4f 70 65 6e 41 49 20 41 50 49 20 72 65 74 75 works:.;;.;;.The.OpenAI.API.retu
a2f00 72 6e 73 20 61 20 73 74 72 65 61 6d 20 6f 66 20 64 61 74 61 20 63 68 75 6e 6b 73 2e 20 20 45 61 rns.a.stream.of.data.chunks...Ea
a2f20 63 68 20 64 61 74 61 20 63 68 75 6e 6b 20 68 61 73 20 61 0a 3b 3b 20 63 6f 6d 70 6f 6e 65 6e 74 ch.data.chunk.has.a.;;.component
a2f40 20 74 68 61 74 20 63 61 6e 20 62 65 20 70 61 72 73 65 64 20 61 73 20 4a 53 4f 4e 2e 20 20 42 65 .that.can.be.parsed.as.JSON...Be
a2f60 73 69 64 65 73 20 6d 65 74 61 64 61 74 61 2c 20 65 61 63 68 20 63 68 75 6e 6b 20 68 61 73 0a 3b sides.metadata,.each.chunk.has.;
a2f80 3b 20 65 69 74 68 65 72 20 73 6f 6d 65 20 74 65 78 74 20 6f 72 20 70 61 72 74 20 6f 66 20 61 20 ;.either.some.text.or.part.of.a.
a2fa0 74 6f 6f 6c 20 63 61 6c 6c 2e 0a 3b 3b 0a 3b 3b 20 49 66 20 77 65 20 66 69 6e 64 20 74 65 78 74 tool.call..;;.;;.If.we.find.text
a2fc0 2c 20 77 65 20 63 6f 6c 6c 65 63 74 20 69 74 20 69 6e 20 61 20 6c 69 73 74 2c 20 63 6f 6e 63 61 ,.we.collect.it.in.a.list,.conca
a2fe0 74 20 74 68 65 6d 20 61 74 20 74 68 65 20 65 6e 64 20 61 6e 64 20 72 65 74 75 72 6e 0a 3b 3b 20 t.them.at.the.end.and.return.;;.
a3000 69 74 2e 0a 3b 3b 0a 3b 3b 20 49 66 20 77 65 20 66 69 6e 64 20 70 61 72 74 20 6f 66 20 61 20 74 it..;;.;;.If.we.find.part.of.a.t
a3020 6f 6f 6c 20 63 61 6c 6c 2c 20 77 65 20 62 65 67 69 6e 20 63 6f 6c 6c 65 63 74 69 6e 67 20 74 68 ool.call,.we.begin.collecting.th
a3040 65 20 70 69 65 63 65 73 20 69 6e 0a 3b 3b 20 49 4e 46 4f 20 2d 3e 20 3a 74 6f 6f 6c 2d 75 73 65 e.pieces.in.;;.INFO.->.:tool-use
a3060 2e 0a 3b 3b 0a 3b 3b 20 54 6f 6f 6c 20 63 61 6c 6c 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 ..;;.;;.Tool.call.arguments.are.
a3080 74 68 65 6d 73 65 6c 76 65 73 20 4a 53 4f 4e 20 65 6e 63 6f 64 65 64 20 73 74 72 69 6e 67 73 20 themselves.JSON.encoded.strings.
a30a0 63 61 6e 20 62 65 20 73 70 72 65 61 64 20 61 63 72 6f 73 73 0a 3b 3b 20 63 68 75 6e 6b 73 2e 20 can.be.spread.across.;;.chunks..
a30c0 20 57 65 20 63 6f 6c 6c 65 63 74 20 74 68 65 6d 20 69 6e 20 49 4e 46 4f 20 2d 3e 20 3a 70 61 72 .We.collect.them.in.INFO.->.:par
a30e0 74 69 61 6c 5f 6a 73 6f 6e 2e 20 20 54 68 65 20 65 6e 64 20 6f 66 20 61 20 74 6f 6f 6c 20 63 61 tial_json...The.end.of.a.tool.ca
a3100 6c 6c 0a 3b 3b 20 63 68 75 6e 6b 20 69 73 20 6d 61 72 6b 65 64 20 62 79 20 74 68 65 20 62 65 67 ll.;;.chunk.is.marked.by.the.beg
a3120 69 6e 6e 69 6e 67 20 6f 66 20 61 6e 6f 74 68 65 72 2c 20 6f 72 20 62 79 20 74 68 65 20 65 6e 64 inning.of.another,.or.by.the.end
a3140 20 6f 66 20 74 68 65 20 73 74 72 65 61 6d 2e 20 20 49 6e 0a 3b 3b 20 65 69 74 68 65 72 20 63 61 .of.the.stream...In.;;.either.ca
a3160 73 65 20 77 65 20 66 6c 61 74 65 6e 20 74 68 65 20 3a 70 61 72 74 69 61 6c 5f 6a 73 6f 6e 20 77 se.we.flaten.the.:partial_json.w
a3180 65 20 68 61 76 65 20 74 68 75 73 20 66 61 72 2c 20 61 64 64 20 69 74 20 74 6f 20 74 68 65 20 74 e.have.thus.far,.add.it.to.the.t
a31a0 6f 6f 6c 0a 3b 3b 20 63 61 6c 6c 20 73 70 65 63 20 69 6e 20 3a 74 6f 6f 6c 2d 75 73 65 20 61 6e ool.;;.call.spec.in.:tool-use.an
a31c0 64 20 72 65 73 65 74 20 69 74 2e 20 20 46 69 6e 61 6c 6c 79 20 77 65 20 61 70 70 65 6e 64 20 74 d.reset.it...Finally.we.append.t
a31e0 68 65 20 74 6f 6f 6c 20 63 61 6c 6c 73 20 74 6f 20 74 68 65 0a 3b 3b 20 28 49 4e 46 4f 20 2d 3e he.tool.calls.to.the.;;.(INFO.->
a3200 20 3a 64 61 74 61 20 2d 3e 20 3a 6d 65 73 73 61 67 65 73 29 20 6c 69 73 74 20 6f 66 20 70 72 6f .:data.->.:messages).list.of.pro
a3220 6d 70 74 73 2e 0a 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 mpts...(cl-defmethod.gptel-curl-
a3240 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 74 65 6c 2d 6f -parse-stream.((_backend.gptel-o
a3260 70 65 6e 61 69 29 20 69 6e 66 6f 29 0a 20 20 22 50 61 72 73 65 20 61 6e 20 4f 70 65 6e 41 49 20 penai).info)..."Parse.an.OpenAI.
a3280 41 50 49 20 64 61 74 61 20 73 74 72 65 61 6d 2e 0a 0a 52 65 74 75 72 6e 20 74 68 65 20 74 65 78 API.data.stream...Return.the.tex
a32a0 74 20 72 65 73 70 6f 6e 73 65 20 61 63 63 75 6d 75 6c 61 74 65 64 20 73 69 6e 63 65 20 74 68 65 t.response.accumulated.since.the
a32c0 20 6c 61 73 74 20 63 61 6c 6c 20 74 6f 20 74 68 69 73 0a 66 75 6e 63 74 69 6f 6e 2e 20 20 41 64 .last.call.to.this.function...Ad
a32e0 64 69 74 69 6f 6e 61 6c 6c 79 2c 20 6d 75 74 61 74 65 20 73 74 61 74 65 20 49 4e 46 4f 20 74 6f ditionally,.mutate.state.INFO.to
a3300 20 61 64 64 20 74 6f 6f 6c 2d 75 73 65 0a 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 66 20 74 68 65 .add.tool-use.information.if.the
a3320 20 73 74 72 65 61 6d 20 63 6f 6e 74 61 69 6e 73 20 69 74 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 .stream.contains.it."...(let*.((
a3340 63 6f 6e 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 content-strs)).....(condition-ca
a3360 73 65 20 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 se.nil.........(while.(re-search
a3380 2d 66 6f 72 77 61 72 64 20 22 5e 64 61 74 61 3a 22 20 6e 69 6c 20 74 29 0a 20 20 20 20 20 20 20 -forward."^data:".nil.t)........
a33a0 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 20 ...(save-match-data.............
a33c0 28 69 66 20 28 6c 6f 6f 6b 69 6e 67 2d 61 74 20 22 20 2a 5c 5c 5b 44 4f 4e 45 5c 5c 5d 22 29 0a (if.(looking-at.".*\\[DONE\\]").
a33e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 54 68 65 20 73 74 72 65 61 6d 20 68 61 ................;;.The.stream.ha
a3400 73 20 65 6e 64 65 64 2c 20 73 6f 20 77 65 20 64 6f 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 s.ended,.so.we.do.the.following.
a3420 74 68 69 6e 67 20 28 69 66 20 77 65 20 66 6f 75 6e 64 20 74 6f 6f 6c 20 63 61 6c 6c 73 29 0a 20 thing.(if.we.found.tool.calls)..
a3440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 2d 20 70 61 63 6b 20 74 6f 6f 6c 20 63 61 ...............;;.-.pack.tool.ca
a3460 6c 6c 73 20 69 6e 74 6f 20 74 68 65 20 6d 65 73 73 61 67 65 73 20 70 72 6f 6d 70 74 73 20 6c 69 lls.into.the.messages.prompts.li
a3480 73 74 20 74 6f 20 73 65 6e 64 20 28 49 4e 46 4f 20 2d 3e 20 3a 64 61 74 61 20 2d 3e 20 3a 6d 65 st.to.send.(INFO.->.:data.->.:me
a34a0 73 73 61 67 65 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 2d 20 63 6f 6c ssages).................;;.-.col
a34c0 6c 65 63 74 20 74 6f 6f 6c 20 63 61 6c 6c 73 20 28 66 6f 72 6d 61 74 74 65 64 20 64 69 66 66 65 lect.tool.calls.(formatted.diffe
a34e0 72 65 6e 74 6c 79 29 20 69 6e 74 6f 20 28 49 4e 46 4f 20 2d 3e 20 3a 74 6f 6f 6c 2d 75 73 65 29 rently).into.(INFO.->.:tool-use)
a3500 0a 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 2a 20 28 28 74 6f .................(when-let*.((to
a3520 6f 6c 2d 75 73 65 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 74 6f 6f 6c 2d 75 73 65 ol-use.(plist-get.info.:tool-use
a3540 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 28 )).............................(
a3560 61 72 67 73 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 20 28 args.(apply.#'concat.(nreverse.(
a3580 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 70 61 72 74 69 61 6c 5f 6a 73 6f 6e 29 29 29 29 plist-get.info.:partial_json))))
a35a0 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 66 75 .............................(fu
a35c0 6e 63 20 28 70 6c 69 73 74 2d 67 65 74 20 28 63 61 72 20 74 6f 6f 6c 2d 75 73 65 29 20 3a 66 75 nc.(plist-get.(car.tool-use).:fu
a35e0 6e 63 74 69 6f 6e 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 nction)))...................(pli
a3600 73 74 2d 70 75 74 20 66 75 6e 63 20 3a 61 72 67 75 6d 65 6e 74 73 20 61 72 67 73 29 20 3b 55 70 st-put.func.:arguments.args).;Up
a3620 64 61 74 65 20 61 72 67 75 6d 65 6e 74 73 20 66 6f 72 20 6c 61 73 74 20 72 65 63 6f 72 64 65 64 date.arguments.for.last.recorded
a3640 20 74 6f 6f 6c 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 2d 2d .tool...................(gptel--
a3660 69 6e 6a 65 63 74 2d 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 inject-prompt...................
a3680 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 62 61 63 6b 65 6e 64 29 20 28 70 6c 69 73 .(plist-get.info.:backend).(plis
a36a0 74 2d 67 65 74 20 69 6e 66 6f 20 3a 64 61 74 61 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 t-get.info.:data)...............
a36c0 20 20 20 20 20 60 28 3a 72 6f 6c 65 20 22 61 73 73 69 73 74 61 6e 74 22 20 3a 63 6f 6e 74 65 6e .....`(:role."assistant".:conten
a36e0 74 20 3a 6e 75 6c 6c 20 3a 74 6f 6f 6c 5f 63 61 6c 6c 73 20 2c 28 76 63 6f 6e 63 61 74 20 74 6f t.:null.:tool_calls.,(vconcat.to
a3700 6f 6c 2d 75 73 65 29 29 29 20 3b 20 3a 72 65 66 75 73 61 6c 20 3a 6e 75 6c 6c 0a 20 20 20 20 20 ol-use))).;.:refusal.:null......
a3720 20 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 20 20 20 .............(cl-loop...........
a3740 20 20 20 20 20 20 20 20 20 66 6f 72 20 74 6f 6f 6c 2d 63 61 6c 6c 20 69 6e 20 74 6f 6f 6c 2d 75 .........for.tool-call.in.tool-u
a3760 73 65 20 3b 20 43 6f 6e 73 74 72 75 63 74 20 74 68 65 20 63 61 6c 6c 20 73 70 65 63 73 20 66 6f se.;.Construct.the.call.specs.fo
a3780 72 20 72 75 6e 6e 69 6e 67 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 73 0a 20 20 20 r.running.the.function.calls....
a37a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 73 70 65 63 20 3d 20 28 70 6c 69 73 ................for.spec.=.(plis
a37c0 74 2d 67 65 74 20 74 6f 6f 6c 2d 63 61 6c 6c 20 3a 66 75 6e 63 74 69 6f 6e 29 0a 20 20 20 20 20 t-get.tool-call.:function)......
a37e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6c 6c 65 63 74 20 28 6c 69 73 74 20 3a 69 64 20 ..............collect.(list.:id.
a3800 28 70 6c 69 73 74 2d 67 65 74 20 74 6f 6f 6c 2d 63 61 6c 6c 20 3a 69 64 29 0a 20 20 20 20 20 20 (plist-get.tool-call.:id).......
a3820 20 20 20 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 6e 61 6d 65 ...........................:name
a3840 20 28 70 6c 69 73 74 2d 67 65 74 20 73 70 65 63 20 3a 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 .(plist-get.spec.:name).........
a3860 20 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 61 72 67 73 20 28 .........................:args.(
a3880 69 67 6e 6f 72 65 2d 65 72 72 6f 72 73 20 28 67 70 74 65 6c 2d 2d 6a 73 6f 6e 2d 72 65 61 64 2d ignore-errors.(gptel--json-read-
a38a0 73 74 72 69 6e 67 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 string..........................
a38c0 20 20 20 20 20 20 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 ..............................(p
a38e0 6c 69 73 74 2d 67 65 74 20 73 70 65 63 20 3a 61 72 67 75 6d 65 6e 74 73 29 29 29 29 0a 20 20 20 list-get.spec.:arguments))))....
a3900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 6f 20 63 61 6c 6c 2d 73 70 65 63 73 0a ................into.call-specs.
a3920 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 28 70 6c 69 73 ...................finally.(plis
a3940 74 2d 70 75 74 20 69 6e 66 6f 20 3a 74 6f 6f 6c 2d 75 73 65 20 63 61 6c 6c 2d 73 70 65 63 73 29 t-put.info.:tool-use.call-specs)
a3960 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 72 65 ))...............(when-let*.((re
a3980 73 70 6f 6e 73 65 20 28 67 70 74 65 6c 2d 2d 6a 73 6f 6e 2d 72 65 61 64 29 29 0a 20 20 20 20 20 sponse.(gptel--json-read))......
a39a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 65 6c 74 61 20 28 6d 61 70 .....................(delta.(map
a39c0 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 6f 69 63 65 73 20 -nested-elt.response.'(:choices.
a39e0 30 20 3a 64 65 6c 74 61 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 0.:delta)))).................(if
a3a00 2d 6c 65 74 2a 20 28 28 63 6f 6e 74 65 6e 74 20 28 70 6c 69 73 74 2d 67 65 74 20 64 65 6c 74 61 -let*.((content.(plist-get.delta
a3a20 20 3a 63 6f 6e 74 65 6e 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .:content)).....................
a3a40 20 20 20 20 20 20 28 28 6e 6f 74 20 28 6f 72 20 28 65 71 20 63 6f 6e 74 65 6e 74 20 3a 6e 75 6c ......((not.(or.(eq.content.:nul
a3a60 6c 29 20 28 73 74 72 69 6e 67 2d 65 6d 70 74 79 2d 70 20 63 6f 6e 74 65 6e 74 29 29 29 29 29 0a l).(string-empty-p.content))))).
a3a80 20 20 20 20 20 20 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 ....................(push.conten
a3aa0 74 20 63 6f 6e 74 65 6e 74 2d 73 74 72 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 t.content-strs).................
a3ac0 20 20 3b 3b 20 4e 6f 20 74 65 78 74 20 63 6f 6e 74 65 6e 74 2c 20 73 6f 20 6c 6f 6f 6b 20 66 6f ..;;.No.text.content,.so.look.fo
a3ae0 72 20 74 6f 6f 6c 20 63 61 6c 6c 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 r.tool.calls...................(
a3b00 77 68 65 6e 2d 6c 65 74 2a 20 28 28 74 6f 6f 6c 2d 63 61 6c 6c 20 28 6d 61 70 2d 6e 65 73 74 65 when-let*.((tool-call.(map-neste
a3b20 64 2d 65 6c 74 20 64 65 6c 74 61 20 27 28 3a 74 6f 6f 6c 5f 63 61 6c 6c 73 20 30 29 29 29 0a 20 d-elt.delta.'(:tool_calls.0)))..
a3b40 20 20 20 20 20 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 .............................(fu
a3b60 6e 63 20 28 70 6c 69 73 74 2d 67 65 74 20 74 6f 6f 6c 2d 63 61 6c 6c 20 3a 66 75 6e 63 74 69 6f nc.(plist-get.tool-call.:functio
a3b80 6e 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 61 6e n))).....................(if.(an
a3ba0 64 20 28 70 6c 69 73 74 2d 67 65 74 20 66 75 6e 63 20 3a 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 d.(plist-get.func.:name)........
a3bc0 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 54 45 4d 50 3a 20 54 ......................;;.TEMP:.T
a3be0 68 69 73 20 63 68 65 63 6b 20 69 73 20 66 6f 72 20 6c 69 74 65 6c 6c 6d 20 63 6f 6d 70 61 74 69 his.check.is.for.litellm.compati
a3c00 62 69 6c 69 74 79 2c 20 73 68 6f 75 6c 64 20 62 65 20 72 65 6d 6f 76 65 64 0a 20 20 20 20 20 20 bility,.should.be.removed.......
a3c20 20 20 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 65 71 75 .......................(not.(equ
a3c40 61 6c 20 28 70 6c 69 73 74 2d 67 65 74 20 66 75 6e 63 20 3a 6e 61 6d 65 29 20 22 6e 75 6c 6c 22 al.(plist-get.func.:name)."null"
a3c60 29 29 29 20 3b 20 6e 65 77 20 74 6f 6f 6c 20 62 6c 6f 63 6b 20 62 65 67 69 6e 73 0a 20 20 20 20 ))).;.new.tool.block.begins.....
a3c80 20 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 0a 20 20 20 20 20 ....................(progn......
a3ca0 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 2d 6c 65 74 2a 20 .....................(when-let*.
a3cc0 28 28 70 61 72 74 69 61 6c 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 70 61 72 74 69 ((partial.(plist-get.info.:parti
a3ce0 61 6c 5f 6a 73 6f 6e 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 al_json)))......................
a3d00 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 70 72 65 76 2d 74 6f 6f 6c 2d 63 61 6c 6c 20 28 63 .......(let*.((prev-tool-call.(c
a3d20 61 72 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 74 6f 6f 6c 2d 75 73 65 29 29 29 0a ar.(plist-get.info.:tool-use))).
a3d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
a3d60 20 20 20 28 70 72 65 76 2d 66 75 6e 63 20 28 70 6c 69 73 74 2d 67 65 74 20 70 72 65 76 2d 74 6f ...(prev-func.(plist-get.prev-to
a3d80 6f 6c 2d 63 61 6c 6c 20 3a 66 75 6e 63 74 69 6f 6e 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 ol-call.:function)))............
a3da0 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 70 72 ...................(plist-put.pr
a3dc0 65 76 2d 66 75 6e 63 20 3a 61 72 67 75 6d 65 6e 74 73 20 3b 75 70 64 61 74 65 20 61 72 67 73 20 ev-func.:arguments.;update.args.
a3de0 66 6f 72 20 6f 6c 64 20 74 6f 6f 6c 20 62 6c 6f 63 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 for.old.tool.block..............
a3e00 20 20 20 20 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 70 70 ............................(app
a3e20 6c 79 20 23 27 63 6f 6e 63 61 74 20 28 6e 72 65 76 65 72 73 65 20 28 70 6c 69 73 74 2d 67 65 74 ly.#'concat.(nreverse.(plist-get
a3e40 20 69 6e 66 6f 20 3a 70 61 72 74 69 61 6c 5f 6a 73 6f 6e 29 29 29 29 29 0a 20 20 20 20 20 20 20 .info.:partial_json)))))........
a3e60 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.
a3e80 69 6e 66 6f 20 3a 70 61 72 74 69 61 6c 5f 6a 73 6f 6e 20 6e 69 6c 29 29 20 3b 63 6c 65 61 72 20 info.:partial_json.nil)).;clear.
a3ea0 6f 75 74 20 66 69 6e 69 73 68 65 64 20 63 68 61 69 6e 20 6f 66 20 70 61 72 74 69 61 6c 20 61 72 out.finished.chain.of.partial.ar
a3ec0 67 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 3b 3b 20 gs...........................;;.
a3ee0 53 74 61 72 74 20 6e 65 77 20 63 68 61 69 6e 20 6f 66 20 70 61 72 74 69 61 6c 20 61 72 67 75 6d Start.new.chain.of.partial.argum
a3f00 65 6e 74 20 73 74 72 69 6e 67 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ent.strings.....................
a3f20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 70 61 72 74 69 61 6c 5f 6a ......(plist-put.info.:partial_j
a3f40 73 6f 6e 20 28 6c 69 73 74 20 28 70 6c 69 73 74 2d 67 65 74 20 66 75 6e 63 20 3a 61 72 67 75 6d son.(list.(plist-get.func.:argum
a3f60 65 6e 74 73 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 ents))).........................
a3f80 20 20 3b 3b 20 4e 4f 54 45 3a 20 44 6f 20 4e 4f 54 20 75 73 65 20 60 70 75 73 68 27 20 66 6f 72 ..;;.NOTE:.Do.NOT.use.`push'.for
a3fa0 20 74 68 69 73 2c 20 69 74 20 70 72 65 70 65 6e 64 73 20 61 6e 64 20 77 65 20 6c 6f 73 65 20 74 .this,.it.prepends.and.we.lose.t
a3fc0 68 65 20 72 65 66 65 72 65 6e 63 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 he.reference....................
a3fe0 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 74 6f 6f 6c 2d 75 73 65 .......(plist-put.info.:tool-use
a4000 20 28 63 6f 6e 73 20 74 6f 6f 6c 2d 63 61 6c 6c 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f .(cons.tool-call.(plist-get.info
a4020 20 3a 74 6f 6f 6c 2d 75 73 65 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .:tool-use))))..................
a4040 20 20 20 20 20 3b 3b 20 6f 6c 64 20 74 6f 6f 6c 20 62 6c 6f 63 6b 20 63 6f 6e 74 69 6e 75 65 73 .....;;.old.tool.block.continues
a4060 2c 20 73 6f 20 63 6f 6e 74 69 6e 75 65 20 63 6f 6c 6c 65 63 74 69 6e 67 20 61 72 67 75 6d 65 6e ,.so.continue.collecting.argumen
a4080 74 73 20 69 6e 20 3a 70 61 72 74 69 61 6c 5f 6a 73 6f 6e 20 0a 20 20 20 20 20 20 20 20 20 20 20 ts.in.:partial_json.............
a40a0 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 70 6c 69 73 74 2d 67 65 74 20 66 75 6e 63 ...........(push.(plist-get.func
a40c0 20 3a 61 72 67 75 6d 65 6e 74 73 29 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 70 61 .:arguments).(plist-get.info.:pa
a40e0 72 74 69 61 6c 5f 6a 73 6f 6e 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rtial_json))))).................
a4100 3b 3b 20 43 68 65 63 6b 20 66 6f 72 20 72 65 61 73 6f 6e 69 6e 67 20 62 6c 6f 63 6b 73 2c 20 63 ;;.Check.for.reasoning.blocks,.c
a4120 75 72 72 65 6e 74 6c 79 20 6f 6e 6c 79 20 75 73 65 64 20 62 79 20 4f 70 65 6e 72 6f 75 74 65 72 urrently.only.used.by.Openrouter
a4140 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 65 71 20 28 70 6c .................(unless.(eq.(pl
a4160 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 72 65 61 73 6f 6e 69 6e 67 2d 62 6c 6f 63 6b 29 20 27 ist-get.info.:reasoning-block).'
a4180 64 6f 6e 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 2d 6c 65 74 2a done)...................(if-let*
a41a0 20 28 28 72 65 61 73 6f 6e 69 6e 67 2d 63 68 75 6e 6b 20 28 6f 72 20 28 70 6c 69 73 74 2d 67 65 .((reasoning-chunk.(or.(plist-ge
a41c0 74 20 64 65 6c 74 61 20 3a 72 65 61 73 6f 6e 69 6e 67 29 20 3b 66 6f 72 20 4f 70 65 6e 72 6f 75 t.delta.:reasoning).;for.Openrou
a41e0 74 65 72 20 61 6e 64 20 63 6f 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ter.and.co......................
a4200 20 20 20 20 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 6c 69 ............................(pli
a4220 73 74 2d 67 65 74 20 64 65 6c 74 61 20 3a 72 65 61 73 6f 6e 69 6e 67 5f 63 6f 6e 74 65 6e 74 29 st-get.delta.:reasoning_content)
a4240 29 29 20 3b 66 6f 72 20 44 65 65 70 73 65 65 6b 2c 20 4c 6c 61 6d 61 2e 63 70 70 0a 20 20 20 20 )).;for.Deepseek,.Llama.cpp.....
a4260 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 6e 6f 74 20 28 6f ........................((not.(o
a4280 72 20 28 65 71 20 72 65 61 73 6f 6e 69 6e 67 2d 63 68 75 6e 6b 20 3a 6e 75 6c 6c 29 20 28 73 74 r.(eq.reasoning-chunk.:null).(st
a42a0 72 69 6e 67 2d 65 6d 70 74 79 2d 70 20 72 65 61 73 6f 6e 69 6e 67 2d 63 68 75 6e 6b 29 29 29 29 ring-empty-p.reasoning-chunk))))
a42c0 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 6c 69 73 74 2d 70 ).......................(plist-p
a42e0 75 74 20 69 6e 66 6f 20 3a 72 65 61 73 6f 6e 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ut.info.:reasoning..............
a4300 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 28 70 6c 69 ....................(concat.(pli
a4320 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 72 65 61 73 6f 6e 69 6e 67 29 20 72 65 61 73 6f 6e 69 6e st-get.info.:reasoning).reasonin
a4340 67 2d 63 68 75 6e 6b 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b g-chunk)).....................;;
a4360 20 44 6f 6e 65 20 77 69 74 68 20 72 65 61 73 6f 6e 69 6e 67 20 69 66 20 77 65 20 67 65 74 20 6e .Done.with.reasoning.if.we.get.n
a4380 6f 6e 2d 65 6d 70 74 79 20 63 6f 6e 74 65 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 on-empty.content................
a43a0 20 20 20 20 20 28 69 66 2d 6c 65 74 2a 20 28 28 28 70 6c 69 73 74 2d 6d 65 6d 62 65 72 20 69 6e .....(if-let*.(((plist-member.in
a43c0 66 6f 20 3a 72 65 61 73 6f 6e 69 6e 67 29 29 20 3b 49 73 20 74 68 69 73 20 61 20 72 65 61 73 6f fo.:reasoning)).;Is.this.a.reaso
a43e0 6e 69 6e 67 20 6d 6f 64 65 6c 3f 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ning.model?.....................
a4400 20 20 20 20 20 20 20 20 20 20 28 63 20 28 70 6c 69 73 74 2d 67 65 74 20 64 65 6c 74 61 20 3a 63 ..........(c.(plist-get.delta.:c
a4420 6f 6e 74 65 6e 74 29 29 20 3b 53 74 61 72 74 65 64 20 72 65 63 65 69 76 69 6e 67 20 74 65 78 74 ontent)).;Started.receiving.text
a4440 20 63 6f 6e 74 65 6e 74 3f 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .content?.......................
a4460 20 20 20 20 20 20 20 20 28 28 6e 6f 74 20 28 6f 72 20 28 65 71 20 63 20 3a 6e 75 6c 6c 29 20 28 ........((not.(or.(eq.c.:null).(
a4480 73 74 72 69 6e 67 2d 62 6c 61 6e 6b 2d 70 20 63 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 string-blank-p.c)))))...........
a44a0 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 72 ..............(plist-put.info.:r
a44c0 65 61 73 6f 6e 69 6e 67 2d 62 6c 6f 63 6b 20 74 29 29 29 29 29 29 29 29 20 3b 53 69 67 6e 61 6c easoning-block.t)))))))).;Signal
a44e0 20 65 6e 64 20 6f 66 20 72 65 61 73 6f 6e 69 6e 67 20 62 6c 6f 63 6b 0a 20 20 20 20 20 20 28 65 .end.of.reasoning.block.......(e
a4500 72 72 6f 72 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 rror.(goto-char.(match-beginning
a4520 20 30 29 29 29 29 0a 20 20 20 20 28 61 70 70 6c 79 20 23 27 63 6f 6e 63 61 74 20 28 6e 72 65 76 .0)))).....(apply.#'concat.(nrev
a4540 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 2d 64 65 66 6d 65 erse.content-strs))))..(cl-defme
a4560 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 20 28 28 5f 62 61 thod.gptel--parse-response.((_ba
a4580 63 6b 65 6e 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 69 6e 66 ckend.gptel-openai).response.inf
a45a0 6f 29 0a 20 20 22 50 61 72 73 65 20 61 6e 20 4f 70 65 6e 41 49 20 28 6e 6f 6e 2d 73 74 72 65 61 o)..."Parse.an.OpenAI.(non-strea
a45c0 6d 69 6e 67 29 20 52 45 53 50 4f 4e 53 45 20 61 6e 64 20 72 65 74 75 72 6e 20 72 65 73 70 6f 6e ming).RESPONSE.and.return.respon
a45e0 73 65 20 74 65 78 74 2e 0a 0a 4d 75 74 61 74 65 20 73 74 61 74 65 20 49 4e 46 4f 20 77 69 74 68 se.text...Mutate.state.INFO.with
a4600 20 72 65 73 70 6f 6e 73 65 20 6d 65 74 61 64 61 74 61 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 63 .response.metadata."...(let*.((c
a4620 68 6f 69 63 65 30 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 hoice0.(map-nested-elt.response.
a4640 27 28 3a 63 68 6f 69 63 65 73 20 30 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 6d 65 73 73 61 67 '(:choices.0)))..........(messag
a4660 65 20 28 70 6c 69 73 74 2d 67 65 74 20 63 68 6f 69 63 65 30 20 3a 6d 65 73 73 61 67 65 29 29 0a e.(plist-get.choice0.:message)).
a4680 20 20 20 20 20 20 20 20 20 28 63 6f 6e 74 65 6e 74 20 28 70 6c 69 73 74 2d 67 65 74 20 6d 65 73 .........(content.(plist-get.mes
a46a0 73 61 67 65 20 3a 63 6f 6e 74 65 6e 74 29 29 29 0a 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 sage.:content))).....(plist-put.
a46c0 69 6e 66 6f 20 3a 73 74 6f 70 2d 72 65 61 73 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 info.:stop-reason...............
a46e0 20 28 70 6c 69 73 74 2d 67 65 74 20 63 68 6f 69 63 65 30 20 3a 66 69 6e 69 73 68 5f 72 65 61 73 .(plist-get.choice0.:finish_reas
a4700 6f 6e 29 29 0a 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 6f 75 74 70 75 74 on)).....(plist-put.info.:output
a4720 2d 74 6f 6b 65 6e 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 70 2d 6e 65 73 74 -tokens................(map-nest
a4740 65 64 2d 65 6c 74 20 72 65 73 70 6f 6e 73 65 20 27 28 3a 75 73 61 67 65 20 3a 63 6f 6d 70 6c 65 ed-elt.response.'(:usage.:comple
a4760 74 69 6f 6e 5f 74 6f 6b 65 6e 73 29 29 29 0a 20 20 20 20 3b 3b 20 4f 70 65 6e 41 49 20 72 65 74 tion_tokens))).....;;.OpenAI.ret
a4780 75 72 6e 73 20 65 69 74 68 65 72 20 6e 6f 6e 2d 62 6c 61 6e 6b 20 74 65 78 74 20 63 6f 6e 74 65 urns.either.non-blank.text.conte
a47a0 6e 74 20 6f 72 20 61 20 74 6f 6f 6c 20 63 61 6c 6c 2c 20 6e 6f 74 20 62 6f 74 68 2e 0a 20 20 20 nt.or.a.tool.call,.not.both.....
a47c0 20 3b 3b 20 48 6f 77 65 76 65 72 20 4f 70 65 6e 41 49 2d 63 6f 6d 70 61 74 69 62 6c 65 20 41 50 .;;.However.OpenAI-compatible.AP
a47e0 49 73 20 6c 69 6b 65 20 6c 6c 61 6d 61 2e 63 70 70 20 63 61 6e 20 69 6e 63 6c 75 64 65 20 62 6f Is.like.llama.cpp.can.include.bo
a4800 74 68 20 28 23 38 31 39 29 2c 20 73 6f 0a 20 20 20 20 3b 3b 20 77 65 20 63 68 65 63 6b 20 66 6f th.(#819),.so.....;;.we.check.fo
a4820 72 20 62 6f 74 68 20 74 6f 6f 6c 20 63 61 6c 6c 73 20 61 6e 64 20 72 65 73 70 6f 6e 73 65 73 20 r.both.tool.calls.and.responses.
a4840 69 6e 64 65 70 65 6e 64 65 6e 74 6c 79 2e 0a 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 independently......(when-let*.((
a4860 74 6f 6f 6c 2d 63 61 6c 6c 73 20 28 70 6c 69 73 74 2d 67 65 74 20 6d 65 73 73 61 67 65 20 3a 74 tool-calls.(plist-get.message.:t
a4880 6f 6f 6c 5f 63 61 6c 6c 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 6e 6f ool_calls)).................((no
a48a0 74 20 28 65 71 20 74 6f 6f 6c 2d 63 61 6c 6c 73 20 3a 6e 75 6c 6c 29 29 29 29 0a 20 20 20 20 20 t.(eq.tool-calls.:null))))......
a48c0 20 28 67 70 74 65 6c 2d 2d 69 6e 6a 65 63 74 2d 70 72 6f 6d 70 74 20 20 20 20 20 20 20 20 3b 20 .(gptel--inject-prompt........;.
a48e0 46 69 72 73 74 20 61 64 64 20 74 68 65 20 74 6f 6f 6c 20 63 61 6c 6c 20 74 6f 20 74 68 65 20 70 First.add.the.tool.call.to.the.p
a4900 72 6f 6d 70 74 73 20 6c 69 73 74 0a 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e rompts.list........(plist-get.in
a4920 66 6f 20 3a 62 61 63 6b 65 6e 64 29 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 64 61 fo.:backend).(plist-get.info.:da
a4940 74 61 29 20 6d 65 73 73 61 67 65 29 0a 20 20 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 20 20 20 20 20 ta).message).......(cl-loop.....
a4960 20 20 20 20 20 20 20 20 3b 54 68 65 6e 20 63 61 70 74 75 72 65 20 74 68 65 20 74 6f 6f 6c 20 63 ........;Then.capture.the.tool.c
a4980 61 6c 6c 20 64 61 74 61 20 66 6f 72 20 72 75 6e 6e 69 6e 67 20 74 68 65 20 74 6f 6f 6c 0a 20 20 all.data.for.running.the.tool...
a49a0 20 20 20 20 20 66 6f 72 20 74 6f 6f 6c 2d 63 61 6c 6c 20 61 63 72 6f 73 73 20 74 6f 6f 6c 2d 63 .....for.tool-call.across.tool-c
a49c0 61 6c 6c 73 20 20 3b 72 65 70 6c 61 63 65 20 22 3a 61 72 67 75 6d 65 6e 74 73 22 20 77 69 74 68 alls..;replace.":arguments".with
a49e0 20 22 3a 61 72 67 73 22 0a 20 20 20 20 20 20 20 66 6f 72 20 63 61 6c 6c 2d 73 70 65 63 20 3d 20 .":args"........for.call-spec.=.
a4a00 28 63 6f 70 79 2d 73 65 71 75 65 6e 63 65 20 28 70 6c 69 73 74 2d 67 65 74 20 74 6f 6f 6c 2d 63 (copy-sequence.(plist-get.tool-c
a4a20 61 6c 6c 20 3a 66 75 6e 63 74 69 6f 6e 29 29 0a 20 20 20 20 20 20 20 64 6f 20 28 69 67 6e 6f 72 all.:function))........do.(ignor
a4a40 65 2d 65 72 72 6f 72 73 20 28 70 6c 69 73 74 2d 70 75 74 20 63 61 6c 6c 2d 73 70 65 63 20 3a 61 e-errors.(plist-put.call-spec.:a
a4a60 72 67 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 rgs.............................
a4a80 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 6a 73 6f 6e 2d 72 65 61 64 2d 73 74 72 69 6e 67 ........(gptel--json-read-string
a4aa0 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 ................................
a4ac0 20 20 20 20 20 20 28 70 6c 69 73 74 2d 67 65 74 20 63 61 6c 6c 2d 73 70 65 63 20 3a 61 72 67 75 ......(plist-get.call-spec.:argu
a4ae0 6d 65 6e 74 73 29 29 29 29 0a 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 63 61 6c 6c ments))))........(plist-put.call
a4b00 2d 73 70 65 63 20 3a 61 72 67 75 6d 65 6e 74 73 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 28 70 6c -spec.:arguments.nil)........(pl
a4b20 69 73 74 2d 70 75 74 20 63 61 6c 6c 2d 73 70 65 63 20 3a 69 64 20 28 70 6c 69 73 74 2d 67 65 74 ist-put.call-spec.:id.(plist-get
a4b40 20 74 6f 6f 6c 2d 63 61 6c 6c 20 3a 69 64 29 29 0a 20 20 20 20 20 20 20 63 6f 6c 6c 65 63 74 20 .tool-call.:id))........collect.
a4b60 63 61 6c 6c 2d 73 70 65 63 20 69 6e 74 6f 20 74 6f 6f 6c 2d 75 73 65 0a 20 20 20 20 20 20 20 66 call-spec.into.tool-use........f
a4b80 69 6e 61 6c 6c 79 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 74 6f 6f 6c 2d 75 73 65 inally.(plist-put.info.:tool-use
a4ba0 20 74 6f 6f 6c 2d 75 73 65 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 28 61 6e 64 20 63 6f 6e 74 .tool-use))).....(when.(and.cont
a4bc0 65 6e 74 20 28 6e 6f 74 20 28 6f 72 20 28 65 71 20 63 6f 6e 74 65 6e 74 20 3a 6e 75 6c 6c 29 20 ent.(not.(or.(eq.content.:null).
a4be0 28 73 74 72 69 6e 67 2d 65 6d 70 74 79 2d 70 20 63 6f 6e 74 65 6e 74 29 29 29 29 0a 20 20 20 20 (string-empty-p.content)))).....
a4c00 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 72 65 61 73 6f 6e 69 6e 67 20 28 6f 72 20 28 70 6c ..(when-let*.((reasoning.(or.(pl
a4c20 69 73 74 2d 67 65 74 20 6d 65 73 73 61 67 65 20 3a 72 65 61 73 6f 6e 69 6e 67 29 20 3b 66 6f 72 ist-get.message.:reasoning).;for
a4c40 20 4f 70 65 6e 72 6f 75 74 65 72 20 61 6e 64 20 63 6f 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 .Openrouter.and.co..............
a4c60 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 6d ....................(plist-get.m
a4c80 65 73 73 61 67 65 20 3a 72 65 61 73 6f 6e 69 6e 67 5f 63 6f 6e 74 65 6e 74 29 29 29 20 3b 66 6f essage.:reasoning_content))).;fo
a4ca0 72 20 44 65 65 70 73 65 65 6b 2c 20 4c 6c 61 6d 61 2e 63 70 70 0a 20 20 20 20 20 20 20 20 20 20 r.Deepseek,.Llama.cpp...........
a4cc0 20 20 20 20 20 20 20 20 28 28 61 6e 64 20 28 73 74 72 69 6e 67 70 20 72 65 61 73 6f 6e 69 6e 67 ........((and.(stringp.reasoning
a4ce0 29 20 28 6e 6f 74 20 28 73 74 72 69 6e 67 2d 65 6d 70 74 79 2d 70 20 72 65 61 73 6f 6e 69 6e 67 ).(not.(string-empty-p.reasoning
a4d00 29 29 29 29 29 0a 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 72 ))))).........(plist-put.info.:r
a4d20 65 61 73 6f 6e 69 6e 67 20 72 65 61 73 6f 6e 69 6e 67 29 29 0a 20 20 20 20 20 20 63 6f 6e 74 65 easoning.reasoning)).......conte
a4d40 6e 74 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 72 65 71 75 nt)))..(cl-defmethod.gptel--requ
a4d60 65 73 74 2d 64 61 74 61 20 28 28 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 6f 70 65 6e 61 69 29 est-data.((backend.gptel-openai)
a4d80 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 50 52 4f 4d 50 54 53 .prompts)..."JSON.encode.PROMPTS
a4da0 20 66 6f 72 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 77 68 65 .for.sending.to.ChatGPT."...(whe
a4dc0 6e 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 28 70 75 73 n.gptel--system-message.....(pus
a4de0 68 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 h.(list.:role."system"..........
a4e00 20 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 .......:content.gptel--system-me
a4e20 73 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 0a 20 20 28 6c 65 ssage)...........prompts))...(le
a4e40 74 20 28 28 70 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 t.((prompts-plist..........`(:mo
a4e60 64 65 6c 20 2c 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 6e 61 6d 65 20 67 70 74 65 6c 2d 6d 6f del.,(gptel--model-name.gptel-mo
a4e80 64 65 6c 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 del)............:messages.[,@pro
a4ea0 6d 70 74 73 5d 0a 20 20 20 20 20 20 20 20 20 20 20 3a 73 74 72 65 61 6d 20 2c 28 6f 72 20 67 70 mpts]............:stream.,(or.gp
a4ec0 74 65 6c 2d 73 74 72 65 61 6d 20 3a 6a 73 6f 6e 2d 66 61 6c 73 65 29 29 29 0a 20 20 20 20 20 20 tel-stream.:json-false))).......
a4ee0 20 20 28 72 65 61 73 6f 6e 69 6e 67 2d 6d 6f 64 65 6c 2d 70 20 3b 20 54 4f 44 4f 3a 20 45 6d 62 ..(reasoning-model-p.;.TODO:.Emb
a4f00 65 64 20 74 68 69 73 20 63 61 70 61 62 69 6c 69 74 79 20 69 6e 20 74 68 65 20 6d 6f 64 65 6c 27 ed.this.capability.in.the.model'
a4f20 73 20 70 72 6f 70 65 72 74 69 65 73 0a 20 20 20 20 20 20 20 20 20 28 6d 65 6d 71 20 67 70 74 65 s.properties..........(memq.gpte
a4f40 6c 2d 6d 6f 64 65 6c 20 27 28 6f 31 20 6f 31 2d 70 72 65 76 69 65 77 20 6f 31 2d 6d 69 6e 69 20 l-model.'(o1.o1-preview.o1-mini.
a4f60 6f 33 2d 6d 69 6e 69 20 6f 33 20 6f 34 2d 6d 69 6e 69 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 o3-mini.o3.o4-mini..............
a4f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 70 74 2d 35 20 67 70 74 2d 35 2d 6d ...................gpt-5.gpt-5-m
a4fa0 69 6e 69 20 67 70 74 2d 35 2d 6e 61 6e 6f 29 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 28 61 6e ini.gpt-5-nano)))).....(when.(an
a4fc0 64 20 67 70 74 65 6c 2d 74 65 6d 70 65 72 61 74 75 72 65 20 28 6e 6f 74 20 72 65 61 73 6f 6e 69 d.gptel-temperature.(not.reasoni
a4fe0 6e 67 2d 6d 6f 64 65 6c 2d 70 29 29 0a 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 70 72 ng-model-p)).......(plist-put.pr
a5000 6f 6d 70 74 73 2d 70 6c 69 73 74 20 3a 74 65 6d 70 65 72 61 74 75 72 65 20 67 70 74 65 6c 2d 74 ompts-plist.:temperature.gptel-t
a5020 65 6d 70 65 72 61 74 75 72 65 29 29 0a 20 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 75 73 65 emperature)).....(when.gptel-use
a5040 2d 74 6f 6f 6c 73 0a 20 20 20 20 20 20 28 77 68 65 6e 20 28 65 71 20 67 70 74 65 6c 2d 75 73 65 -tools.......(when.(eq.gptel-use
a5060 2d 74 6f 6f 6c 73 20 27 66 6f 72 63 65 29 0a 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 -tools.'force).........(plist-pu
a5080 74 20 70 72 6f 6d 70 74 73 2d 70 6c 69 73 74 20 3a 74 6f 6f 6c 5f 63 68 6f 69 63 65 20 22 72 65 t.prompts-plist.:tool_choice."re
a50a0 71 75 69 72 65 64 22 29 29 0a 20 20 20 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 74 6f 6f 6c quired")).......(when.gptel-tool
a50c0 73 0a 20 20 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 s.........(plist-put.prompts-pli
a50e0 73 74 20 3a 74 6f 6f 6c 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 st.:tools....................(gp
a5100 74 65 6c 2d 2d 70 61 72 73 65 2d 74 6f 6f 6c 73 20 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 74 tel--parse-tools.backend.gptel-t
a5120 6f 6f 6c 73 29 29 0a 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 72 65 61 73 6f 6e 69 6e 67 ools)).........(unless.reasoning
a5140 2d 6d 6f 64 65 6c 2d 70 0a 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 70 72 -model-p...........(plist-put.pr
a5160 6f 6d 70 74 73 2d 70 6c 69 73 74 20 3a 70 61 72 61 6c 6c 65 6c 5f 74 6f 6f 6c 5f 63 61 6c 6c 73 ompts-plist.:parallel_tool_calls
a5180 20 74 29 29 29 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 .t)))).....(when.gptel-max-token
a51a0 73 0a 20 20 20 20 20 20 3b 3b 20 48 41 43 4b 3a 20 54 68 65 20 4f 70 65 6e 41 49 20 41 50 49 20 s.......;;.HACK:.The.OpenAI.API.
a51c0 68 61 73 20 64 65 70 72 65 63 61 74 65 64 20 6d 61 78 5f 74 6f 6b 65 6e 73 2c 20 62 75 74 20 77 has.deprecated.max_tokens,.but.w
a51e0 65 20 73 74 69 6c 6c 20 6e 65 65 64 20 69 74 0a 20 20 20 20 20 20 3b 3b 20 66 6f 72 20 4f 70 65 e.still.need.it.......;;.for.Ope
a5200 6e 41 49 2d 63 6f 6d 70 61 74 69 62 6c 65 20 41 50 49 73 20 6c 69 6b 65 20 47 50 54 34 41 6c 6c nAI-compatible.APIs.like.GPT4All
a5220 20 28 23 34 38 35 29 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 .(#485).......(plist-put.prompts
a5240 2d 70 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 72 65 61 73 -plist..................(if.reas
a5260 6f 6e 69 6e 67 2d 6d 6f 64 65 6c 2d 70 20 3a 6d 61 78 5f 63 6f 6d 70 6c 65 74 69 6f 6e 5f 74 6f oning-model-p.:max_completion_to
a5280 6b 65 6e 73 20 3a 6d 61 78 5f 74 6f 6b 65 6e 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 kens.:max_tokens)...............
a52a0 20 20 20 67 70 74 65 6c 2d 6d 61 78 2d 74 6f 6b 65 6e 73 29 29 0a 20 20 20 20 28 77 68 65 6e 20 ...gptel-max-tokens)).....(when.
a52c0 67 70 74 65 6c 2d 2d 73 63 68 65 6d 61 0a 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 70 gptel--schema.......(plist-put.p
a52e0 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 20 3a 72 rompts-plist..................:r
a5300 65 73 70 6f 6e 73 65 5f 66 6f 72 6d 61 74 20 28 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 73 63 68 esponse_format.(gptel--parse-sch
a5320 65 6d 61 20 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 2d 73 63 68 65 6d 61 29 29 29 0a 20 20 20 ema.backend.gptel--schema)))....
a5340 20 3b 3b 20 4d 65 72 67 65 20 72 65 71 75 65 73 74 20 70 61 72 61 6d 73 20 77 69 74 68 20 6d 6f .;;.Merge.request.params.with.mo
a5360 64 65 6c 20 61 6e 64 20 62 61 63 6b 65 6e 64 20 70 61 72 61 6d 73 2e 0a 20 20 20 20 28 67 70 74 del.and.backend.params......(gpt
a5380 65 6c 2d 2d 6d 65 72 67 65 2d 70 6c 69 73 74 73 0a 20 20 20 20 20 70 72 6f 6d 70 74 73 2d 70 6c el--merge-plists......prompts-pl
a53a0 69 73 74 0a 20 20 20 20 20 67 70 74 65 6c 2d 2d 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 0a 20 ist......gptel--request-params..
a53c0 20 20 20 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 72 65 71 75 65 73 74 2d 70 61 72 61 6d ....(gptel-backend-request-param
a53e0 73 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 0a 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 6d 6f s.gptel-backend)......(gptel--mo
a5400 64 65 6c 2d 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 20 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 29 del-request-params..gptel-model)
a5420 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 2d )))..(cl-defmethod.gptel--parse-
a5440 73 63 68 65 6d 61 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 schema.((_backend.gptel-openai).
a5460 73 63 68 65 6d 61 29 0a 20 20 28 6c 69 73 74 20 3a 74 79 70 65 20 22 6a 73 6f 6e 5f 73 63 68 65 schema)...(list.:type."json_sche
a5480 6d 61 22 0a 20 20 20 20 20 20 20 20 3a 6a 73 6f 6e 5f 73 63 68 65 6d 61 0a 20 20 20 20 20 20 20 ma".........:json_schema........
a54a0 20 28 6c 69 73 74 20 3a 6e 61 6d 65 20 28 6d 64 35 20 28 66 6f 72 6d 61 74 20 22 25 73 22 20 28 .(list.:name.(md5.(format."%s".(
a54c0 72 61 6e 64 6f 6d 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 73 63 68 65 6d 61 20 random)))...............:schema.
a54e0 28 67 70 74 65 6c 2d 2d 70 72 65 70 72 6f 63 65 73 73 2d 73 63 68 65 6d 61 0a 20 20 20 20 20 20 (gptel--preprocess-schema.......
a5500 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 64 69 73 70 61 74 63 .................(gptel--dispatc
a5520 68 2d 73 63 68 65 6d 61 2d 74 79 70 65 20 73 63 68 65 6d 61 29 29 0a 20 20 20 20 20 20 20 20 20 h-schema-type.schema))..........
a5540 20 20 20 20 20 3a 73 74 72 69 63 74 20 74 29 29 29 0a 0a 3b 3b 20 4e 4f 54 45 3a 20 4e 6f 20 60 .....:strict.t)))..;;.NOTE:.No.`
a5560 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 74 6f 6f 6c 73 27 20 6d 65 74 68 6f 64 20 72 65 71 75 69 gptel--parse-tools'.method.requi
a5580 72 65 64 20 66 6f 72 20 67 70 74 65 6c 2d 6f 70 65 6e 61 69 2c 20 73 69 6e 63 65 20 74 68 69 73 red.for.gptel-openai,.since.this
a55a0 20 69 73 0a 3b 3b 20 68 61 6e 64 6c 65 64 20 62 79 20 69 74 73 20 64 65 66 67 65 6e 65 72 69 63 .is.;;.handled.by.its.defgeneric
a55c0 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 67 .implementation..(cl-defmethod.g
a55e0 70 74 65 6c 2d 2d 70 61 72 73 65 2d 74 6f 6f 6c 2d 72 65 73 75 6c 74 73 20 28 28 5f 62 61 63 6b ptel--parse-tool-results.((_back
a5600 65 6e 64 20 67 70 74 65 6c 2d 6f 70 65 6e 61 69 29 20 74 6f 6f 6c 2d 75 73 65 29 0a 20 20 22 52 end.gptel-openai).tool-use)..."R
a5620 65 74 75 72 6e 20 61 20 70 72 6f 6d 70 74 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 6f 6f 6c 20 63 eturn.a.prompt.containing.tool.c
a5640 61 6c 6c 20 72 65 73 75 6c 74 73 20 69 6e 20 54 4f 4f 4c 2d 55 53 45 2e 22 0a 20 20 3b 3b 20 28 all.results.in.TOOL-USE."...;;.(
a5660 64 65 63 6c 61 72 65 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 declare.(side-effect-free.t))...
a5680 28 6d 61 70 63 61 72 0a 20 20 20 28 6c 61 6d 62 64 61 20 28 74 6f 6f 6c 2d 63 61 6c 6c 29 0a 20 (mapcar....(lambda.(tool-call)..
a56a0 20 20 20 20 28 6c 69 73 74 0a 20 20 20 20 20 20 3a 72 6f 6c 65 20 22 74 6f 6f 6c 22 0a 20 20 20 ....(list.......:role."tool"....
a56c0 20 20 20 3a 74 6f 6f 6c 5f 63 61 6c 6c 5f 69 64 20 28 70 6c 69 73 74 2d 67 65 74 20 74 6f 6f 6c ...:tool_call_id.(plist-get.tool
a56e0 2d 63 61 6c 6c 20 3a 69 64 29 0a 20 20 20 20 20 20 3a 63 6f 6e 74 65 6e 74 20 28 70 6c 69 73 74 -call.:id).......:content.(plist
a5700 2d 67 65 74 20 74 6f 6f 6c 2d 63 61 6c 6c 20 3a 72 65 73 75 6c 74 29 29 29 0a 20 20 20 74 6f 6f -get.tool-call.:result)))....too
a5720 6c 2d 75 73 65 29 29 0a 0a 3b 3b 20 54 4f 44 4f 3a 20 52 65 6d 6f 76 65 20 74 68 65 73 65 20 66 l-use))..;;.TODO:.Remove.these.f
a5740 75 6e 63 74 69 6f 6e 73 20 28 23 37 39 32 29 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 6f 70 unctions.(#792).(defun.gptel--op
a5760 65 6e 61 69 2d 66 6f 72 6d 61 74 2d 74 6f 6f 6c 2d 69 64 20 28 74 6f 6f 6c 2d 69 64 29 0a 20 20 enai-format-tool-id.(tool-id)...
a5780 22 46 6f 72 6d 61 74 20 54 4f 4f 4c 2d 49 44 20 66 6f 72 20 4f 70 65 6e 41 49 2e 0a 0a 49 66 20 "Format.TOOL-ID.for.OpenAI...If.
a57a0 74 68 65 20 49 44 20 68 61 73 20 74 68 65 20 66 6f 72 6d 61 74 20 75 73 65 64 20 62 79 20 61 20 the.ID.has.the.format.used.by.a.
a57c0 64 69 66 66 65 72 65 6e 74 20 62 61 63 6b 65 6e 64 2c 20 75 73 65 20 61 73 2d 69 73 2e 22 0a 20 different.backend,.use.as-is."..
a57e0 20 28 75 6e 6c 65 73 73 20 74 6f 6f 6c 2d 69 64 0a 20 20 20 20 28 73 65 74 71 20 74 6f 6f 6c 2d .(unless.tool-id.....(setq.tool-
a5800 69 64 20 28 73 75 62 73 74 72 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 id.(substring...................
a5820 20 28 6d 64 35 20 28 66 6f 72 6d 61 74 20 22 25 73 25 73 22 20 28 72 61 6e 64 6f 6d 29 20 28 66 .(md5.(format."%s%s".(random).(f
a5840 6c 6f 61 74 2d 74 69 6d 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 loat-time)))....................
a5860 6e 69 6c 20 32 34 29 29 29 0a 20 20 28 69 66 20 28 6f 72 20 28 73 74 72 69 6e 67 2d 70 72 65 66 nil.24)))...(if.(or.(string-pref
a5880 69 78 2d 70 20 22 74 6f 6f 6c 75 5f 22 20 74 6f 6f 6c 2d 69 64 29 20 3b 23 37 34 37 0a 20 20 20 ix-p."toolu_".tool-id).;#747....
a58a0 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 2d 70 72 65 66 69 78 2d 70 20 22 63 61 6c 6c 5f 22 20 .......(string-prefix-p."call_".
a58c0 20 74 6f 6f 6c 2d 69 64 29 29 0a 20 20 20 20 20 20 74 6f 6f 6c 2d 69 64 0a 20 20 20 20 28 66 6f .tool-id)).......tool-id.....(fo
a58e0 72 6d 61 74 20 22 63 61 6c 6c 5f 25 73 22 20 74 6f 6f 6c 2d 69 64 29 29 29 0a 0a 28 64 65 66 75 rmat."call_%s".tool-id)))..(defu
a5900 6e 20 67 70 74 65 6c 2d 2d 6f 70 65 6e 61 69 2d 75 6e 66 6f 72 6d 61 74 2d 74 6f 6f 6c 2d 69 64 n.gptel--openai-unformat-tool-id
a5920 20 28 74 6f 6f 6c 2d 69 64 29 0a 20 20 28 6f 72 20 28 61 6e 64 20 28 73 74 72 69 6e 67 2d 6d 61 .(tool-id)...(or.(and.(string-ma
a5940 74 63 68 20 22 63 61 6c 6c 5f 5c 5c 28 2e 2b 5c 5c 29 22 20 74 6f 6f 6c 2d 69 64 29 0a 20 20 20 tch."call_\\(.+\\)".tool-id)....
a5960 20 20 20 20 20 20 20 20 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 20 31 20 74 6f 6f 6c 2d 69 64 29 ........(match-string.1.tool-id)
a5980 29 0a 20 20 20 20 20 20 74 6f 6f 6c 2d 69 64 29 29 0a 0a 3b 3b 20 4e 4f 54 45 3a 20 4e 6f 20 60 ).......tool-id))..;;.NOTE:.No.`
a59a0 67 70 74 65 6c 2d 2d 69 6e 6a 65 63 74 2d 70 72 6f 6d 70 74 27 20 6d 65 74 68 6f 64 20 72 65 71 gptel--inject-prompt'.method.req
a59c0 75 69 72 65 64 20 66 6f 72 20 67 70 74 65 6c 2d 6f 70 65 6e 61 69 2c 20 73 69 6e 63 65 20 74 68 uired.for.gptel-openai,.since.th
a59e0 69 73 0a 3b 3b 20 69 73 20 68 61 6e 64 6c 65 64 20 62 79 20 69 74 73 20 64 65 66 67 65 6e 65 72 is.;;.is.handled.by.its.defgener
a5a00 69 63 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 ic.implementation..(cl-defmethod
a5a20 20 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 6c 69 73 74 20 28 28 62 61 63 6b 65 6e 64 20 67 70 74 .gptel--parse-list.((backend.gpt
a5a40 65 6c 2d 6f 70 65 6e 61 69 29 20 70 72 6f 6d 70 74 2d 6c 69 73 74 29 0a 20 20 28 69 66 20 28 63 el-openai).prompt-list)...(if.(c
a5a60 6f 6e 73 70 20 28 63 61 72 20 70 72 6f 6d 70 74 2d 6c 69 73 74 29 29 0a 20 20 20 20 20 20 28 6c onsp.(car.prompt-list)).......(l
a5a80 65 74 20 28 28 66 75 6c 6c 2d 70 72 6f 6d 70 74 29 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 et.((full-prompt))..............
a5aa0 3b 20 41 64 76 61 6e 63 65 64 20 66 6f 72 6d 61 74 2c 20 6c 69 73 74 20 6f 66 20 6c 69 73 74 73 ;.Advanced.format,.list.of.lists
a5ac0 0a 20 20 20 20 20 20 20 20 28 64 6f 6c 69 73 74 20 28 65 6e 74 72 79 20 70 72 6f 6d 70 74 2d 6c .........(dolist.(entry.prompt-l
a5ae0 69 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 63 61 73 65 20 65 6e 74 72 79 0a 20 20 20 20 ist)...........(pcase.entry.....
a5b00 20 20 20 20 20 20 20 20 28 60 28 70 72 6f 6d 70 74 20 2e 20 2c 6d 73 67 29 0a 20 20 20 20 20 20 ........(`(prompt...,msg).......
a5b20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 6c 69 73 74 20 3a 72 6f 6c 65 20 22 75 73 65 72 22 20 .......(push.(list.:role."user".
a5b40 3a 63 6f 6e 74 65 6e 74 20 28 6f 72 20 28 63 61 72 2d 73 61 66 65 20 6d 73 67 29 20 6d 73 67 29 :content.(or.(car-safe.msg).msg)
a5b60 29 20 66 75 6c 6c 2d 70 72 6f 6d 70 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 60 28 72 ).full-prompt)).............(`(r
a5b80 65 73 70 6f 6e 73 65 20 2e 20 2c 6d 73 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 esponse...,msg)..............(pu
a5ba0 73 68 20 28 6c 69 73 74 20 3a 72 6f 6c 65 20 22 61 73 73 69 73 74 61 6e 74 22 20 3a 63 6f 6e 74 sh.(list.:role."assistant".:cont
a5bc0 65 6e 74 20 28 6f 72 20 28 63 61 72 2d 73 61 66 65 20 6d 73 67 29 20 6d 73 67 29 29 20 66 75 6c ent.(or.(car-safe.msg).msg)).ful
a5be0 6c 2d 70 72 6f 6d 70 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 60 28 74 6f 6f 6c 20 2e l-prompt)).............(`(tool..
a5c00 20 2c 63 61 6c 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 70 6c .,call)..............(unless.(pl
a5c20 69 73 74 2d 67 65 74 20 63 61 6c 6c 20 3a 69 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ist-get.call.:id)...............
a5c40 20 28 70 6c 69 73 74 2d 70 75 74 20 63 61 6c 6c 20 3a 69 64 20 28 67 70 74 65 6c 2d 2d 6f 70 65 .(plist-put.call.:id.(gptel--ope
a5c60 6e 61 69 2d 66 6f 72 6d 61 74 2d 74 6f 6f 6c 2d 69 64 20 6e 69 6c 29 29 29 0a 20 20 20 20 20 20 nai-format-tool-id.nil))).......
a5c80 20 20 20 20 20 20 20 28 70 75 73 68 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 .......(push...............(list
a5ca0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 72 6f 6c 65 20 22 61 73 73 69 73 74 61 6e 74 ................:role."assistant
a5cc0 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 74 6f 6f 6c 5f 63 61 6c 6c 73 0a 20 20 20 "................:tool_calls....
a5ce0 20 20 20 20 20 20 20 20 20 20 20 20 28 76 65 63 74 6f 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 ............(vector.............
a5d00 20 20 20 20 28 6c 69 73 74 20 3a 74 79 70 65 20 22 66 75 6e 63 74 69 6f 6e 22 0a 20 20 20 20 20 ....(list.:type."function"......
a5d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 69 64 20 28 70 6c 69 73 74 2d 67 65 74 20 .................:id.(plist-get.
a5d40 63 61 6c 6c 20 3a 69 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 call.:id).......................
a5d60 3a 66 75 6e 63 74 69 6f 6e 20 60 28 20 3a 6e 61 6d 65 20 2c 28 70 6c 69 73 74 2d 67 65 74 20 63 :function.`(.:name.,(plist-get.c
a5d80 61 6c 6c 20 3a 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 20 20 all.:name)......................
a5da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 61 72 67 75 6d 65 6e 74 73 20 2c 28 64 65 63 6f 64 ..............:arguments.,(decod
a5dc0 65 2d 63 6f 64 69 6e 67 2d 73 74 72 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 e-coding-string.................
a5de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
a5e00 28 67 70 74 65 6c 2d 2d 6a 73 6f 6e 2d 65 6e 63 6f 64 65 20 28 70 6c 69 73 74 2d 67 65 74 20 63 (gptel--json-encode.(plist-get.c
a5e20 61 6c 6c 20 3a 61 72 67 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 all.:args)).....................
a5e40 20 20 20 20 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 75 74 66 ............................'utf
a5e60 2d 38 20 74 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 75 6c 6c 2d 70 72 6f -8.t)))))...............full-pro
a5e80 6d 70 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 63 61 72 20 28 67 70 mpt)..............(push.(car.(gp
a5ea0 74 65 6c 2d 2d 70 61 72 73 65 2d 74 6f 6f 6c 2d 72 65 73 75 6c 74 73 20 62 61 63 6b 65 6e 64 20 tel--parse-tool-results.backend.
a5ec0 28 6c 69 73 74 20 28 63 64 72 20 65 6e 74 72 79 29 29 29 29 20 66 75 6c 6c 2d 70 72 6f 6d 70 74 (list.(cdr.entry)))).full-prompt
a5ee0 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 6e 72 65 76 65 72 73 65 20 66 75 6c 6c 2d 70 72 6f 6d )))).........(nreverse.full-prom
a5f00 70 74 29 29 0a 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 74 65 78 74 20 69 6e 20 70 72 pt)).....(cl-loop.for.text.in.pr
a5f20 6f 6d 70 74 2d 6c 69 73 74 20 20 20 20 3b 20 53 69 6d 70 6c 65 20 66 6f 72 6d 61 74 2c 20 6c 69 ompt-list....;.Simple.format,.li
a5f40 73 74 20 6f 66 20 73 74 72 69 6e 67 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 72 st.of.strings..............for.r
a5f60 6f 6c 65 20 3d 20 74 20 74 68 65 6e 20 28 6e 6f 74 20 72 6f 6c 65 29 0a 20 20 20 20 20 20 20 20 ole.=.t.then.(not.role).........
a5f80 20 20 20 20 20 69 66 20 74 65 78 74 20 63 6f 6c 6c 65 63 74 0a 20 20 20 20 20 20 20 20 20 20 20 .....if.text.collect............
a5fa0 20 20 28 6c 69 73 74 20 3a 72 6f 6c 65 20 28 69 66 20 72 6f 6c 65 20 22 75 73 65 72 22 20 22 61 ..(list.:role.(if.role."user"."a
a5fc0 73 73 69 73 74 61 6e 74 22 29 20 3a 63 6f 6e 74 65 6e 74 20 74 65 78 74 29 29 29 29 0a 0a 28 63 ssistant").:content.text))))..(c
a5fe0 6c 2d 64 65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 62 75 66 66 65 72 20 l-defmethod.gptel--parse-buffer.
a6000 28 28 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 6f 70 65 6e 61 69 29 20 26 6f 70 74 69 6f 6e 61 ((backend.gptel-openai).&optiona
a6020 6c 20 6d 61 78 2d 65 6e 74 72 69 65 73 29 0a 20 20 28 6c 65 74 20 28 28 70 72 6f 6d 70 74 73 29 l.max-entries)...(let.((prompts)
a6040 20 28 70 72 65 76 2d 70 74 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 28 69 66 20 28 6f 72 20 .(prev-pt.(point))).....(if.(or.
a6060 67 70 74 65 6c 2d 6d 6f 64 65 20 67 70 74 65 6c 2d 74 72 61 63 6b 2d 72 65 73 70 6f 6e 73 65 29 gptel-mode.gptel-track-response)
a6080 0a 20 20 20 20 20 20 20 20 28 77 68 69 6c 65 20 28 61 6e 64 20 28 6f 72 20 28 6e 6f 74 20 6d 61 .........(while.(and.(or.(not.ma
a60a0 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 29 0a 20 x-entries).(>=.max-entries.0))..
a60c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 2f 3d 20 70 72 65 76 2d 70 74 20 28 ...................(/=.prev-pt.(
a60e0 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 20 20 20 20 point-min)).....................
a6100 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 72 65 76 69 6f 75 73 2d 73 69 6e 67 6c 65 2d 70 72 6f 70 (goto-char.(previous-single-prop
a6120 65 72 74 79 2d 63 68 61 6e 67 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 erty-change.....................
a6140 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6f 69 6e 74 29 20 27 67 70 74 65 6c 20 6e 69 6c 20 28 ............(point).'gptel.nil.(
a6160 70 6f 69 6e 74 2d 6d 69 6e 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 63 61 73 65 20 28 point-min))))...........(pcase.(
a6180 67 65 74 2d 63 68 61 72 2d 70 72 6f 70 65 72 74 79 20 28 70 6f 69 6e 74 29 20 27 67 70 74 65 6c get-char-property.(point).'gptel
a61a0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 27 72 65 73 70 6f 6e 73 65 0a 20 20 20 20 20 20 20 ).............('response........
a61c0 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 63 6f 6e 74 65 6e 74 20 28 67 70 74 65 ......(when-let*.((content.(gpte
a61e0 6c 2d 2d 74 72 69 6d 2d 70 72 65 66 69 78 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 l--trim-prefixes................
a6200 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
a6220 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 20 28 70 6f 69 6e 74 29 20 70 72 65 76 tring-no-properties.(point).prev
a6240 2d 70 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 6c 69 -pt))))................(push.(li
a6260 73 74 20 3a 72 6f 6c 65 20 22 61 73 73 69 73 74 61 6e 74 22 20 3a 63 6f 6e 74 65 6e 74 20 63 6f st.:role."assistant".:content.co
a6280 6e 74 65 6e 74 29 20 70 72 6f 6d 70 74 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 60 ntent).prompts))).............(`
a62a0 28 74 6f 6f 6c 20 2e 20 2c 69 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 61 76 65 2d (tool...,id)..............(save-
a62c0 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 69 74 excursion................(condit
a62e0 69 6f 6e 2d 63 61 73 65 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ion-case.nil....................
a6300 28 6c 65 74 2a 20 28 28 74 6f 6f 6c 2d 63 61 6c 6c 20 28 72 65 61 64 20 28 63 75 72 72 65 6e 74 (let*.((tool-call.(read.(current
a6320 2d 62 75 66 66 65 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -buffer)))......................
a6340 20 20 20 20 20 28 6e 61 6d 65 20 28 70 6c 69 73 74 2d 67 65 74 20 74 6f 6f 6c 2d 63 61 6c 6c 20 .....(name.(plist-get.tool-call.
a6360 3a 6e 61 6d 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 20 20 :name)).........................
a6380 20 20 28 61 72 67 75 6d 65 6e 74 73 20 28 64 65 63 6f 64 65 2d 63 6f 64 69 6e 67 2d 73 74 72 69 ..(arguments.(decode-coding-stri
a63a0 6e 67 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 ng..............................
a63c0 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 6a 73 6f 6e 2d 65 6e 63 6f 64 65 20 28 70 6c .........(gptel--json-encode.(pl
a63e0 69 73 74 2d 67 65 74 20 74 6f 6f 6c 2d 63 61 6c 6c 20 3a 61 72 67 73 29 29 0a 20 20 20 20 20 20 ist-get.tool-call.:args)).......
a6400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
a6420 27 75 74 66 2d 38 20 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 'utf-8.t))).....................
a6440 20 28 73 65 74 71 20 69 64 20 28 67 70 74 65 6c 2d 2d 6f 70 65 6e 61 69 2d 66 6f 72 6d 61 74 2d .(setq.id.(gptel--openai-format-
a6460 74 6f 6f 6c 2d 69 64 20 69 64 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 tool-id.id))....................
a6480 20 20 28 70 6c 69 73 74 2d 70 75 74 20 74 6f 6f 6c 2d 63 61 6c 6c 20 3a 69 64 20 69 64 29 0a 20 ..(plist-put.tool-call.:id.id)..
a64a0 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 74 ....................(plist-put.t
a64c0 6f 6f 6c 2d 63 61 6c 6c 20 3a 72 65 73 75 6c 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ool-call.:result................
a64e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 2d 74 72 69 6d 20 28 62 .................(string-trim.(b
a6500 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 20 20 uffer-substring-no-properties...
a6520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
a6540 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6f 69 6e 74 29 20 70 72 65 76 2d 70 74 29 29 29 0a 20 ............(point).prev-pt)))..
a6560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 63 61 72 20 28 ....................(push.(car.(
a6580 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 74 6f 6f 6c 2d 72 65 73 75 6c 74 73 20 62 61 63 6b 65 6e gptel--parse-tool-results.backen
a65a0 64 20 28 6c 69 73 74 20 74 6f 6f 6c 2d 63 61 6c 6c 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 d.(list.tool-call)))............
a65c0 20 20 20 20 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 20 ................prompts)........
a65e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 6c 69 73 74 20 3a 72 6f 6c 65 20 ..............(push.(list.:role.
a6600 22 61 73 73 69 73 74 61 6e 74 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 "assistant".....................
a6620 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 74 6f 6f 6c 5f 63 61 6c 6c 73 0a 20 20 20 20 20 20 20 .............:tool_calls........
a6640 20 20 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 76 65 63 74 6f ..........................(vecto
a6660 72 20 28 6c 69 73 74 20 3a 74 79 70 65 20 22 66 75 6e 63 74 69 6f 6e 22 0a 20 20 20 20 20 20 20 r.(list.:type."function"........
a6680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
a66a0 20 20 20 20 20 20 20 20 3a 69 64 20 69 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ........:id.id..................
a66c0 20 20 20 20 20 20 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 66 ..............................:f
a66e0 75 6e 63 74 69 6f 6e 20 60 28 20 3a 6e 61 6d 65 20 2c 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 unction.`(.:name.,name..........
a6700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
a6720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 61 72 67 75 6d 65 6e 74 73 20 2c 61 ...................:arguments.,a
a6740 72 67 75 6d 65 6e 74 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 rguments))))....................
a6760 20 20 20 20 20 20 20 20 70 72 6f 6d 70 74 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ........prompts))...............
a6780 20 20 20 28 28 65 6e 64 2d 6f 66 2d 66 69 6c 65 20 69 6e 76 61 6c 69 64 2d 72 65 61 64 2d 73 79 ...((end-of-file.invalid-read-sy
a67a0 6e 74 61 78 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 ntax)...................(message
a67c0 20 28 66 6f 72 6d 61 74 20 22 43 6f 75 6c 64 20 6e 6f 74 20 70 61 72 73 65 20 74 6f 6f 6c 2d 63 .(format."Could.not.parse.tool-c
a67e0 61 6c 6c 20 25 73 20 6f 6e 20 6c 69 6e 65 20 25 73 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 all.%s.on.line.%s"..............
a6800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 64 20 28 6c 69 6e 65 2d 6e ......................id.(line-n
a6820 75 6d 62 65 72 2d 61 74 2d 70 6f 73 20 28 70 6f 69 6e 74 29 29 29 29 29 29 29 29 0a 20 20 20 20 umber-at-pos.(point)))))))).....
a6840 20 20 20 20 20 20 20 20 28 27 69 67 6e 6f 72 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 27 ........('ignore).............('
a6860 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 6d 61 78 2d 65 6e 74 72 69 65 nil..............(and.max-entrie
a6880 73 20 28 63 6c 2d 64 65 63 66 20 6d 61 78 2d 65 6e 74 72 69 65 73 29 29 0a 20 20 20 20 20 20 20 s.(cl-decf.max-entries))........
a68a0 20 20 20 20 20 20 28 69 66 20 67 70 74 65 6c 2d 74 72 61 63 6b 2d 6d 65 64 69 61 0a 20 20 20 20 ......(if.gptel-track-media.....
a68c0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 63 6f 6e 74 65 6e .............(when-let*.((conten
a68e0 74 20 28 67 70 74 65 6c 2d 2d 6f 70 65 6e 61 69 2d 70 61 72 73 65 2d 6d 75 6c 74 69 70 61 72 74 t.(gptel--openai-parse-multipart
a6900 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 ................................
a6920 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 6d 65 64 69 61 2d 6c 69 6e 6b ........(gptel--parse-media-link
a6940 73 20 6d 61 6a 6f 72 2d 6d 6f 64 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 s.major-mode....................
a6960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
a6980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6f 69 6e 74 29 20 70 72 65 76 2d 70 74 29 29 29 ..............(point).prev-pt)))
a69a0 29 0a 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 3e 20 28 6c )....................(when.(>.(l
a69c0 65 6e 67 74 68 20 63 6f 6e 74 65 6e 74 29 20 30 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ength.content).0)...............
a69e0 20 20 20 20 20 20 20 28 70 75 73 68 20 28 6c 69 73 74 20 3a 72 6f 6c 65 20 22 75 73 65 72 22 20 .......(push.(list.:role."user".
a6a00 3a 63 6f 6e 74 65 6e 74 20 63 6f 6e 74 65 6e 74 29 20 70 72 6f 6d 70 74 73 29 29 29 0a 20 20 20 :content.content).prompts)))....
a6a20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 63 6f 6e 74 65 6e 74 ............(when-let*.((content
a6a40 20 28 67 70 74 65 6c 2d 2d 74 72 69 6d 2d 70 72 65 66 69 78 65 73 20 28 62 75 66 66 65 72 2d 73 .(gptel--trim-prefixes.(buffer-s
a6a60 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 20 20 20 20 20 ubstring-no-properties..........
a6a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
a6aa0 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 20 70 72 65 76 2d 70 ..................(point).prev-p
a6ac0 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 6c 69 t))))..................(push.(li
a6ae0 73 74 20 3a 72 6f 6c 65 20 22 75 73 65 72 22 20 3a 63 6f 6e 74 65 6e 74 20 63 6f 6e 74 65 6e 74 st.:role."user".:content.content
a6b00 29 20 70 72 6f 6d 70 74 73 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 70 ).prompts)))))...........(setq.p
a6b20 72 65 76 2d 70 74 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 63 6f rev-pt.(point))).......(let.((co
a6b40 6e 74 65 6e 74 20 28 73 74 72 69 6e 67 2d 74 72 69 6d 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 ntent.(string-trim.(buffer-subst
a6b60 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ring-no-properties..............
a6b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6f 69 6e 74 2d 6d 69 .......................(point-mi
a6ba0 6e 29 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 70 75 73 68 n).(point-max))))).........(push
a6bc0 20 28 6c 69 73 74 20 3a 72 6f 6c 65 20 22 75 73 65 72 22 20 3a 63 6f 6e 74 65 6e 74 20 63 6f 6e .(list.:role."user".:content.con
a6be0 74 65 6e 74 29 20 70 72 6f 6d 70 74 73 29 29 29 0a 20 20 20 20 70 72 6f 6d 70 74 73 29 29 0a 0a tent).prompts))).....prompts))..
a6c00 3b 3b 20 54 4f 44 4f 20 54 68 69 73 20 63 6f 75 6c 64 20 62 65 20 61 20 67 65 6e 65 72 69 63 20 ;;.TODO.This.could.be.a.generic.
a6c20 66 75 6e 63 74 69 6f 6e 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 6f 70 65 6e 61 69 2d 70 61 function.(defun.gptel--openai-pa
a6c40 72 73 65 2d 6d 75 6c 74 69 70 61 72 74 20 28 70 61 72 74 73 29 0a 20 20 22 43 6f 6e 76 65 72 74 rse-multipart.(parts)..."Convert
a6c60 20 61 20 6d 75 6c 74 69 70 61 72 74 20 70 72 6f 6d 70 74 20 50 41 52 54 53 20 74 6f 20 74 68 65 .a.multipart.prompt.PARTS.to.the
a6c80 20 4f 70 65 6e 41 49 20 41 50 49 20 66 6f 72 6d 61 74 2e 0a 0a 54 68 65 20 69 6e 70 75 74 20 69 .OpenAI.API.format...The.input.i
a6ca0 73 20 61 6e 20 61 6c 69 73 74 20 6f 66 20 74 68 65 20 66 6f 72 6d 0a 20 28 28 3a 74 65 78 74 20 s.an.alist.of.the.form..((:text.
a6cc0 5c 22 73 6f 6d 65 20 74 65 78 74 5c 22 29 0a 20 20 28 3a 6d 65 64 69 61 20 5c 22 2f 70 61 74 68 \"some.text\")...(:media.\"/path
a6ce0 2f 74 6f 2f 6d 65 64 69 61 2e 70 6e 67 5c 22 20 3a 6d 69 6d 65 20 5c 22 69 6d 61 67 65 2f 70 6e /to/media.png\".:mime.\"image/pn
a6d00 67 5c 22 29 0a 20 20 28 3a 74 65 78 74 20 5c 22 4d 6f 72 65 20 74 65 78 74 5c 22 29 29 2e 0a 0a g\")...(:text.\"More.text\"))...
a6d20 54 68 65 20 6f 75 74 70 75 74 20 69 73 20 61 20 76 65 63 74 6f 72 20 6f 66 20 65 6e 74 72 69 65 The.output.is.a.vector.of.entrie
a6d40 73 20 69 6e 20 61 20 62 61 63 6b 65 6e 64 2d 61 70 70 72 6f 70 72 69 61 74 65 0a 66 6f 72 6d 61 s.in.a.backend-appropriate.forma
a6d60 74 2e 22 0a 20 20 28 63 6c 2d 6c 6f 6f 70 0a 20 20 20 66 6f 72 20 70 61 72 74 20 69 6e 20 70 61 t."...(cl-loop....for.part.in.pa
a6d80 72 74 73 0a 20 20 20 66 6f 72 20 6e 20 75 70 66 72 6f 6d 20 31 0a 20 20 20 77 69 74 68 20 6c 61 rts....for.n.upfrom.1....with.la
a6da0 73 74 20 3d 20 28 6c 65 6e 67 74 68 20 70 61 72 74 73 29 0a 20 20 20 66 6f 72 20 74 65 78 74 20 st.=.(length.parts)....for.text.
a6dc0 3d 20 28 70 6c 69 73 74 2d 67 65 74 20 70 61 72 74 20 3a 74 65 78 74 29 0a 20 20 20 66 6f 72 20 =.(plist-get.part.:text)....for.
a6de0 6d 65 64 69 61 20 3d 20 28 70 6c 69 73 74 2d 67 65 74 20 70 61 72 74 20 3a 6d 65 64 69 61 29 0a media.=.(plist-get.part.:media).
a6e00 20 20 20 69 66 20 74 65 78 74 20 64 6f 0a 20 20 20 28 61 6e 64 20 28 6f 72 20 28 3d 20 6e 20 31 ...if.text.do....(and.(or.(=.n.1
a6e20 29 20 28 3d 20 6e 20 6c 61 73 74 29 29 20 28 73 65 74 71 20 74 65 78 74 20 28 67 70 74 65 6c 2d ).(=.n.last)).(setq.text.(gptel-
a6e40 2d 74 72 69 6d 2d 70 72 65 66 69 78 65 73 20 74 65 78 74 29 29 29 0a 20 20 20 61 6e 64 20 69 66 -trim-prefixes.text)))....and.if
a6e60 20 74 65 78 74 0a 20 20 20 63 6f 6c 6c 65 63 74 20 60 28 3a 74 79 70 65 20 22 74 65 78 74 22 20 .text....collect.`(:type."text".
a6e80 3a 74 65 78 74 20 2c 74 65 78 74 29 20 69 6e 74 6f 20 70 61 72 74 73 2d 61 72 72 61 79 20 65 6e :text.,text).into.parts-array.en
a6ea0 64 0a 20 20 20 65 6c 73 65 20 69 66 20 6d 65 64 69 61 20 63 6f 6c 6c 65 63 74 0a 20 20 20 60 28 d....else.if.media.collect....`(
a6ec0 3a 74 79 70 65 20 22 69 6d 61 67 65 5f 75 72 6c 22 0a 20 20 20 20 20 3a 69 6d 61 67 65 5f 75 72 :type."image_url"......:image_ur
a6ee0 6c 20 28 3a 75 72 6c 20 2c 28 63 6f 6e 63 61 74 20 22 64 61 74 61 3a 22 20 28 70 6c 69 73 74 2d l.(:url.,(concat."data:".(plist-
a6f00 67 65 74 20 70 61 72 74 20 3a 6d 69 6d 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 get.part.:mime).................
a6f20 20 20 20 20 20 20 20 20 22 3b 62 61 73 65 36 34 2c 22 20 28 67 70 74 65 6c 2d 2d 62 61 73 65 36 ........";base64,".(gptel--base6
a6f40 34 2d 65 6e 63 6f 64 65 20 6d 65 64 69 61 29 29 29 29 0a 20 20 20 69 6e 74 6f 20 70 61 72 74 73 4-encode.media))))....into.parts
a6f60 2d 61 72 72 61 79 0a 20 20 20 65 6c 73 65 20 69 66 20 28 70 6c 69 73 74 2d 67 65 74 20 70 61 72 -array....else.if.(plist-get.par
a6f80 74 20 3a 74 65 78 74 66 69 6c 65 29 20 63 6f 6c 6c 65 63 74 0a 20 20 20 60 28 3a 74 79 70 65 20 t.:textfile).collect....`(:type.
a6fa0 22 74 65 78 74 22 0a 20 20 20 20 20 3a 74 65 78 74 20 2c 28 77 69 74 68 2d 74 65 6d 70 2d 62 75 "text"......:text.,(with-temp-bu
a6fc0 66 66 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 69 6e 73 65 72 ffer...............(gptel--inser
a6fe0 74 2d 66 69 6c 65 2d 73 74 72 69 6e 67 20 28 70 6c 69 73 74 2d 67 65 74 20 70 61 72 74 20 3a 74 t-file-string.(plist-get.part.:t
a7000 65 78 74 66 69 6c 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 2d extfile))...............(buffer-
a7020 73 74 72 69 6e 67 29 29 29 0a 20 20 20 69 6e 74 6f 20 70 61 72 74 73 2d 61 72 72 61 79 20 65 6e string)))....into.parts-array.en
a7040 64 20 61 6e 64 0a 20 20 20 69 66 20 28 70 6c 69 73 74 2d 67 65 74 20 70 61 72 74 20 3a 75 72 6c d.and....if.(plist-get.part.:url
a7060 29 0a 20 20 20 63 6f 6c 6c 65 63 74 0a 20 20 20 60 28 3a 74 79 70 65 20 22 69 6d 61 67 65 5f 75 )....collect....`(:type."image_u
a7080 72 6c 22 0a 20 20 20 20 20 3a 69 6d 61 67 65 5f 75 72 6c 20 28 3a 75 72 6c 20 2c 28 70 6c 69 73 rl"......:image_url.(:url.,(plis
a70a0 74 2d 67 65 74 20 70 61 72 74 20 3a 75 72 6c 29 29 29 0a 20 20 20 69 6e 74 6f 20 70 61 72 74 73 t-get.part.:url)))....into.parts
a70c0 2d 61 72 72 61 79 0a 20 20 20 66 69 6e 61 6c 6c 79 20 72 65 74 75 72 6e 20 28 76 63 6f 6e 63 61 -array....finally.return.(vconca
a70e0 74 20 70 61 72 74 73 2d 61 72 72 61 79 29 29 29 0a 0a 3b 3b 20 54 4f 44 4f 3a 20 44 6f 65 73 20 t.parts-array)))..;;.TODO:.Does.
a7100 74 68 69 73 20 6e 65 65 64 20 74 6f 20 62 65 20 61 20 67 65 6e 65 72 69 63 20 66 75 6e 63 74 69 this.need.to.be.a.generic.functi
a7120 6f 6e 3f 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 2d 77 72 61 70 2d 75 73 on?.(cl-defmethod.gptel--wrap-us
a7140 65 72 2d 70 72 6f 6d 70 74 20 28 28 5f 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 6f 70 65 6e 61 er-prompt.((_backend.gptel-opena
a7160 69 29 20 70 72 6f 6d 70 74 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 i).prompts......................
a7180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 26 6f 70 74 69 6f 6e 61 6c 20 69 6e 6a 65 ..................&optional.inje
a71a0 63 74 2d 6d 65 64 69 61 29 0a 20 20 22 57 72 61 70 20 74 68 65 20 6c 61 73 74 20 75 73 65 72 20 ct-media)..."Wrap.the.last.user.
a71c0 70 72 6f 6d 70 74 20 69 6e 20 50 52 4f 4d 50 54 53 20 77 69 74 68 20 74 68 65 20 63 6f 6e 74 65 prompt.in.PROMPTS.with.the.conte
a71e0 78 74 20 73 74 72 69 6e 67 2e 0a 0a 49 66 20 49 4e 4a 45 43 54 2d 4d 45 44 49 41 20 69 73 20 6e xt.string...If.INJECT-MEDIA.is.n
a7200 6f 6e 2d 6e 69 6c 20 77 72 61 70 20 69 74 20 77 69 74 68 20 62 61 73 65 36 34 2d 65 6e 63 6f 64 on-nil.wrap.it.with.base64-encod
a7220 65 64 20 6d 65 64 69 61 0a 66 69 6c 65 73 20 69 6e 20 74 68 65 20 63 6f 6e 74 65 78 74 2e 22 0a ed.media.files.in.the.context.".
a7240 20 20 28 69 66 20 69 6e 6a 65 63 74 2d 6d 65 64 69 61 0a 20 20 20 20 20 20 3b 3b 20 57 72 61 70 ..(if.inject-media.......;;.Wrap
a7260 20 74 68 65 20 66 69 72 73 74 20 75 73 65 72 20 70 72 6f 6d 70 74 20 77 69 74 68 20 69 6e 63 6c .the.first.user.prompt.with.incl
a7280 75 64 65 64 20 6d 65 64 69 61 20 66 69 6c 65 73 2f 63 6f 6e 74 65 78 74 73 0a 20 20 20 20 20 20 uded.media.files/contexts.......
a72a0 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 6d 65 64 69 61 2d 6c 69 73 74 20 28 67 70 74 65 6c 2d 63 (when-let*.((media-list.(gptel-c
a72c0 6f 6e 74 65 78 74 2d 2d 63 6f 6c 6c 65 63 74 2d 6d 65 64 69 61 29 29 29 0a 20 20 20 20 20 20 20 ontext--collect-media)))........
a72e0 20 28 63 6c 2d 63 61 6c 6c 66 20 28 6c 61 6d 62 64 61 20 28 63 75 72 72 65 6e 74 29 0a 20 20 20 .(cl-callf.(lambda.(current)....
a7300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 76 63 6f 6e 63 61 74 0a 20 20 20 20 20 20 .................(vconcat.......
a7320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 6f 70 65 6e 61 69 2d 70 61 ...............(gptel--openai-pa
a7340 72 73 65 2d 6d 75 6c 74 69 70 61 72 74 20 6d 65 64 69 61 2d 6c 69 73 74 29 0a 20 20 20 20 20 20 rse-multipart.media-list).......
a7360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 74 79 70 65 63 61 73 65 20 63 75 72 72 ...............(cl-typecase.curr
a7380 65 6e 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 28 73 74 72 69 ent........................(stri
a73a0 6e 67 20 60 28 28 3a 74 79 70 65 20 22 74 65 78 74 22 20 3a 74 65 78 74 20 2c 63 75 72 72 65 6e ng.`((:type."text".:text.,curren
a73c0 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 76 65 63 t)))........................(vec
a73e0 74 6f 72 20 63 75 72 72 65 6e 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 tor.current)....................
a7400 20 20 20 20 28 74 20 63 75 72 72 65 6e 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 ....(t.current)))).............(
a7420 70 6c 69 73 74 2d 67 65 74 20 28 63 61 72 20 70 72 6f 6d 70 74 73 29 20 3a 63 6f 6e 74 65 6e 74 plist-get.(car.prompts).:content
a7440 29 29 29 0a 20 20 20 20 3b 3b 20 57 72 61 70 20 74 68 65 20 6c 61 73 74 20 75 73 65 72 20 70 72 ))).....;;.Wrap.the.last.user.pr
a7460 6f 6d 70 74 20 77 69 74 68 20 69 6e 63 6c 75 64 65 64 20 74 65 78 74 20 63 6f 6e 74 65 78 74 73 ompt.with.included.text.contexts
a7480 0a 20 20 20 20 28 63 6c 2d 63 61 6c 6c 66 20 28 6c 61 6d 62 64 61 20 28 63 75 72 72 65 6e 74 29 .....(cl-callf.(lambda.(current)
a74a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 65 74 79 70 65 63 61 73 65 20 63 .................(cl-etypecase.c
a74c0 75 72 72 65 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 urrent...................(string
a74e0 20 28 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 77 72 61 70 20 63 75 72 72 65 6e 74 29 29 0a .(gptel-context--wrap.current)).
a7500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 76 65 63 74 6f 72 20 28 69 66 2d 6c 65 ..................(vector.(if-le
a7520 74 2a 20 28 28 77 72 61 70 70 65 64 20 28 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 77 72 61 t*.((wrapped.(gptel-context--wra
a7540 70 20 6e 69 6c 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 p.nil)))........................
a7560 20 20 20 20 20 20 20 28 76 63 6f 6e 63 61 74 20 60 28 28 3a 74 79 70 65 20 22 74 65 78 74 22 20 .......(vconcat.`((:type."text".
a7580 3a 74 65 78 74 20 2c 77 72 61 70 70 65 64 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :text.,wrapped))................
a75a0 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 75 72 72 65 6e 74 29 ........................current)
a75c0 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 63 75 72 .............................cur
a75e0 72 65 6e 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 67 65 74 20 28 63 61 72 rent)))).........(plist-get.(car
a7600 20 28 6c 61 73 74 20 70 72 6f 6d 70 74 73 29 29 20 3a 63 6f 6e 74 65 6e 74 29 29 29 29 0a 0a 3b .(last.prompts)).:content))))..;
a7620 3b 3b 23 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 ;;###autoload.(cl-defun.gptel-ma
a7640 6b 65 2d 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 ke-openai.....(name.&key.curl-ar
a7660 67 73 20 6d 6f 64 65 6c 73 20 73 74 72 65 61 6d 20 6b 65 79 20 72 65 71 75 65 73 74 2d 70 61 72 gs.models.stream.key.request-par
a7680 61 6d 73 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 ams...........(header...........
a76a0 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 6b 65 79 20 28 67 70 .(lambda.().(when-let*.((key.(gp
a76c0 74 65 6c 2d 2d 67 65 74 2d 61 70 69 2d 6b 65 79 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 tel--get-api-key))).............
a76e0 20 20 20 20 20 20 20 60 28 28 22 41 75 74 68 6f 72 69 7a 61 74 69 6f 6e 22 20 2e 20 2c 28 63 6f .......`(("Authorization"...,(co
a7700 6e 63 61 74 20 22 42 65 61 72 65 72 20 22 20 6b 65 79 29 29 29 29 29 29 0a 20 20 20 20 20 20 20 ncat."Bearer.".key))))))........
a7720 20 20 20 28 68 6f 73 74 20 22 61 70 69 2e 6f 70 65 6e 61 69 2e 63 6f 6d 22 29 0a 20 20 20 20 20 ...(host."api.openai.com")......
a7740 20 20 20 20 20 28 70 72 6f 74 6f 63 6f 6c 20 22 68 74 74 70 73 22 29 0a 20 20 20 20 20 20 20 20 .....(protocol."https").........
a7760 20 20 28 65 6e 64 70 6f 69 6e 74 20 22 2f 76 31 2f 63 68 61 74 2f 63 6f 6d 70 6c 65 74 69 6f 6e ..(endpoint."/v1/chat/completion
a7780 73 22 29 29 0a 20 20 22 52 65 67 69 73 74 65 72 20 61 6e 20 4f 70 65 6e 41 49 20 41 50 49 2d 63 s"))..."Register.an.OpenAI.API-c
a77a0 6f 6d 70 61 74 69 62 6c 65 20 62 61 63 6b 65 6e 64 20 66 6f 72 20 67 70 74 65 6c 20 77 69 74 68 ompatible.backend.for.gptel.with
a77c0 20 4e 41 4d 45 2e 0a 0a 4b 65 79 77 6f 72 64 20 61 72 67 75 6d 65 6e 74 73 3a 0a 0a 43 55 52 4c .NAME...Keyword.arguments:..CURL
a77e0 2d 41 52 47 53 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 61 64 -ARGS.(optional).is.a.list.of.ad
a7800 64 69 74 69 6f 6e 61 6c 20 43 75 72 6c 20 61 72 67 75 6d 65 6e 74 73 2e 0a 0a 48 4f 53 54 20 28 ditional.Curl.arguments...HOST.(
a7820 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 74 68 65 20 41 50 49 20 68 6f 73 74 2c 20 74 79 70 69 63 optional).is.the.API.host,.typic
a7840 61 6c 6c 79 20 5c 22 61 70 69 2e 6f 70 65 6e 61 69 2e 63 6f 6d 5c 22 2e 0a 0a 4d 4f 44 45 4c 53 ally.\"api.openai.com\"...MODELS
a7860 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 61 76 61 69 6c 61 62 6c 65 20 6d 6f 64 65 6c 20 6e 61 .is.a.list.of.available.model.na
a7880 6d 65 73 2c 20 61 73 20 73 79 6d 62 6f 6c 73 2e 0a 41 64 64 69 74 69 6f 6e 61 6c 6c 79 2c 20 79 mes,.as.symbols..Additionally,.y
a78a0 6f 75 20 63 61 6e 20 73 70 65 63 69 66 79 20 73 75 70 70 6f 72 74 65 64 20 4c 4c 4d 20 63 61 70 ou.can.specify.supported.LLM.cap
a78c0 61 62 69 6c 69 74 69 65 73 20 6c 69 6b 65 0a 76 69 73 69 6f 6e 20 6f 72 20 74 6f 6f 6c 2d 75 73 abilities.like.vision.or.tool-us
a78e0 65 20 62 79 20 61 70 70 65 6e 64 69 6e 67 20 61 20 70 6c 69 73 74 20 74 6f 20 74 68 65 20 6d 6f e.by.appending.a.plist.to.the.mo
a7900 64 65 6c 20 77 69 74 68 20 6d 6f 72 65 0a 69 6e 66 6f 72 6d 61 74 69 6f 6e 2c 20 69 6e 20 74 68 del.with.more.information,.in.th
a7920 65 20 66 6f 72 6d 0a 0a 20 28 6d 6f 64 65 6c 2d 6e 61 6d 65 20 2e 20 70 6c 69 73 74 29 0a 0a 46 e.form...(model-name...plist)..F
a7940 6f 72 20 61 20 6c 69 73 74 20 6f 66 20 63 75 72 72 65 6e 74 6c 79 20 72 65 63 6f 67 6e 69 7a 65 or.a.list.of.currently.recognize
a7960 64 20 70 6c 69 73 74 20 6b 65 79 73 2c 20 73 65 65 0a 60 67 70 74 65 6c 2d 2d 6f 70 65 6e 61 69 d.plist.keys,.see.`gptel--openai
a7980 2d 6d 6f 64 65 6c 73 27 2e 20 20 41 6e 20 65 78 61 6d 70 6c 65 20 6f 66 20 61 20 6d 6f 64 65 6c -models'...An.example.of.a.model
a79a0 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e 0a 69 6e 63 6c 75 64 69 6e 67 20 62 6f 74 68 20 6b 69 .specification.including.both.ki
a79c0 6e 64 73 20 6f 66 20 73 70 65 63 73 3a 0a 0a 3a 6d 6f 64 65 6c 73 0a 5c 5c 3d 27 28 67 70 74 2d nds.of.specs:..:models.\\='(gpt-
a79e0 33 2e 35 2d 74 75 72 62 6f 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3.5-turbo.......................
a7a00 20 20 3b 53 69 6d 70 6c 65 20 73 70 65 63 73 0a 20 20 67 70 74 2d 34 2d 74 75 72 62 6f 0a 20 20 ..;Simple.specs...gpt-4-turbo...
a7a20 28 67 70 74 2d 34 6f 2d 6d 69 6e 69 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (gpt-4o-mini....................
a7a40 20 20 20 20 20 20 3b 46 75 6c 6c 20 73 70 65 63 0a 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e ......;Full.spec....:description
a7a60 0a 20 20 20 5c 22 41 66 66 6f 72 64 61 62 6c 65 20 61 6e 64 20 69 6e 74 65 6c 6c 69 67 65 6e 74 ....\"Affordable.and.intelligent
a7a80 20 73 6d 61 6c 6c 20 6d 6f 64 65 6c 20 66 6f 72 20 6c 69 67 68 74 77 65 69 67 68 74 20 74 61 73 .small.model.for.lightweight.tas
a7aa0 6b 73 5c 22 0a 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 6d 65 64 69 61 20 74 6f 6f ks\"....:capabilities.(media.too
a7ac0 6c 20 6a 73 6f 6e 20 75 72 6c 29 0a 20 20 20 3a 6d 69 6d 65 2d 74 79 70 65 73 0a 20 20 20 28 5c l.json.url)....:mime-types....(\
a7ae0 22 69 6d 61 67 65 2f 6a 70 65 67 5c 22 20 5c 22 69 6d 61 67 65 2f 70 6e 67 5c 22 20 5c 22 69 6d "image/jpeg\".\"image/png\".\"im
a7b00 61 67 65 2f 67 69 66 5c 22 20 5c 22 69 6d 61 67 65 2f 77 65 62 70 5c 22 29 29 29 0a 0a 53 54 52 age/gif\".\"image/webp\")))..STR
a7b20 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
a7b40 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
a7b60 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
a7b80 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
a7ba0 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
a7bc0 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
a7be0 75 6c 74 73 20 74 6f 0a 5c 22 2f 76 31 2f 63 68 61 74 2f 63 6f 6d 70 6c 65 74 69 6f 6e 73 5c 22 ults.to.\"/v1/chat/completions\"
a7c00 2e 0a 0a 48 45 41 44 45 52 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 66 6f 72 20 61 64 64 69 ...HEADER.(optional).is.for.addi
a7c20 74 69 6f 6e 61 6c 20 68 65 61 64 65 72 73 20 74 6f 20 73 65 6e 64 20 77 69 74 68 20 65 61 63 68 tional.headers.to.send.with.each
a7c40 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 74 .request...It.should.be.an.alist
a7c60 20 6f 72 20 61 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 72 65 74 75 72 6e 73 20 61 6e 0a 61 .or.a.function.that.returns.an.a
a7c80 6c 69 73 74 2c 20 6c 69 6b 65 3a 0a 20 28 28 5c 22 43 6f 6e 74 65 6e 74 2d 54 79 70 65 5c 22 20 list,.like:..((\"Content-Type\".
a7ca0 2e 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 ..\"application/json\"))..KEY.(o
a7cc0 70 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 ptional).is.a.variable.whose.val
a7ce0 75 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 ue.is.the.API.key,.or.function.t
a7d00 68 61 74 20 72 65 74 75 72 6e 73 20 74 68 65 20 6b 65 79 2e 0a 0a 52 45 51 55 45 53 54 2d 50 41 hat.returns.the.key...REQUEST-PA
a7d20 52 41 4d 53 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 61 20 70 6c 69 73 74 20 6f 66 20 61 64 RAMS.(optional).is.a.plist.of.ad
a7d40 64 69 74 69 6f 6e 61 6c 20 48 54 54 50 20 72 65 71 75 65 73 74 0a 70 61 72 61 6d 65 74 65 72 73 ditional.HTTP.request.parameters
a7d60 20 28 61 73 20 70 6c 69 73 74 20 6b 65 79 73 29 20 61 6e 64 20 76 61 6c 75 65 73 20 73 75 70 70 .(as.plist.keys).and.values.supp
a7d80 6f 72 74 65 64 20 62 79 20 74 68 65 20 41 50 49 2e 20 20 55 73 65 0a 74 68 65 73 65 20 74 6f 20 orted.by.the.API...Use.these.to.
a7da0 73 65 74 20 70 61 72 61 6d 65 74 65 72 73 20 74 68 61 74 20 67 70 74 65 6c 20 64 6f 65 73 20 6e set.parameters.that.gptel.does.n
a7dc0 6f 74 20 70 72 6f 76 69 64 65 20 75 73 65 72 20 6f 70 74 69 6f 6e 73 0a 66 6f 72 2e 22 0a 20 20 ot.provide.user.options.for."...
a7de0 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 62 61 (declare.(indent.1))...(let.((ba
a7e00 63 6b 65 6e 64 20 28 67 70 74 65 6c 2d 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 0a 20 20 20 20 20 20 ckend.(gptel--make-openai.......
a7e20 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 2d 61 72 67 73 ............:curl-args.curl-args
a7e40 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 6d 65 0a 20 20 ...................:name.name...
a7e60 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 20 20 20 20 20 ................:host.host......
a7e80 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 0a 20 20 20 20 .............:header.header.....
a7ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6b 65 79 20 6b 65 79 0a 20 20 20 20 20 20 20 20 20 ..............:key.key..........
a7ec0 20 20 20 20 20 20 20 20 20 3a 6d 6f 64 65 6c 73 20 28 67 70 74 65 6c 2d 2d 70 72 6f 63 65 73 73 .........:models.(gptel--process
a7ee0 2d 6d 6f 64 65 6c 73 20 6d 6f 64 65 6c 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -models.models).................
a7f00 20 20 3a 70 72 6f 74 6f 63 6f 6c 20 70 72 6f 74 6f 63 6f 6c 0a 20 20 20 20 20 20 20 20 20 20 20 ..:protocol.protocol............
a7f20 20 20 20 20 20 20 20 3a 65 6e 64 70 6f 69 6e 74 20 65 6e 64 70 6f 69 6e 74 0a 20 20 20 20 20 20 .......:endpoint.endpoint.......
a7f40 20 20 20 20 20 20 20 20 20 20 20 20 3a 73 74 72 65 61 6d 20 73 74 72 65 61 6d 0a 20 20 20 20 20 ............:stream.stream......
a7f60 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 20 72 65 71 .............:request-params.req
a7f80 75 65 73 74 2d 70 61 72 61 6d 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 75 uest-params...................:u
a7fa0 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.................
a7fc0 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."://
a7fe0 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)................
a8000 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)
a8020 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
a8040 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
a8060 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.......................
a8080 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)...............
a80a0 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.;;;##
a80c0 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
a80e0 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
a8100 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").
a8120 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.().`((
a8140 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
a8160 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-
a8180 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
a81a0 70 6f 69 6e 74 20 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 29 0a 20 20 22 52 65 67 69 73 74 65 point.request-params)..."Registe
a81c0 72 20 61 6e 20 41 7a 75 72 65 20 62 61 63 6b 65 6e 64 20 66 6f 72 20 67 70 74 65 6c 20 77 69 74 r.an.Azure.backend.for.gptel.wit
a81e0 68 20 4e 41 4d 45 2e 0a 0a 4b 65 79 77 6f 72 64 20 61 72 67 75 6d 65 6e 74 73 3a 0a 0a 43 55 52 h.NAME...Keyword.arguments:..CUR
a8200 4c 2d 41 52 47 53 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 61 L-ARGS.(optional).is.a.list.of.a
a8220 64 64 69 74 69 6f 6e 61 6c 20 43 75 72 6c 20 61 72 67 75 6d 65 6e 74 73 2e 0a 0a 48 4f 53 54 20 dditional.Curl.arguments...HOST.
a8240 69 73 20 74 68 65 20 41 50 49 20 68 6f 73 74 2e 0a 0a 4d 4f 44 45 4c 53 20 69 73 20 61 20 6c 69 is.the.API.host...MODELS.is.a.li
a8260 73 74 20 6f 66 20 61 76 61 69 6c 61 62 6c 65 20 6d 6f 64 65 6c 20 6e 61 6d 65 73 2c 20 61 73 20 st.of.available.model.names,.as.
a8280 73 79 6d 62 6f 6c 73 2e 0a 0a 53 54 52 45 41 4d 20 69 73 20 61 20 62 6f 6f 6c 65 61 6e 20 74 6f symbols...STREAM.is.a.boolean.to
a82a0 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 2c 20 64 65 66 .toggle.streaming.responses,.def
a82c0 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 6f 70 74 69 6f aults.to.false...PROTOCOL.(optio
a82e0 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 2c 20 68 74 74 nal).specifies.the.protocol,.htt
a8300 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 20 74 68 65 20 ps.by.default...ENDPOINT.is.the.
a8320 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 2e 0a 0a 48 API.endpoint.for.completions...H
a8340 45 41 44 45 52 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 66 6f 72 20 61 64 64 69 74 69 6f 6e EADER.(optional).is.for.addition
a8360 61 6c 20 68 65 61 64 65 72 73 20 74 6f 20 73 65 6e 64 20 77 69 74 68 20 65 61 63 68 0a 72 65 71 al.headers.to.send.with.each.req
a8380 75 65 73 74 2e 20 20 49 74 20 73 68 6f 75 6c 64 20 62 65 20 61 6e 20 61 6c 69 73 74 20 6f 72 20 uest...It.should.be.an.alist.or.
a83a0 61 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 72 65 74 75 6e 73 20 61 6e 0a 61 6c 69 73 74 2c a.function.that.retuns.an.alist,
a83c0 20 6c 69 6b 65 3a 0a 20 28 28 5c 22 43 6f 6e 74 65 6e 74 2d 54 79 70 65 5c 22 20 2e 20 5c 22 61 .like:..((\"Content-Type\"...\"a
a83e0 70 70 6c 69 63 61 74 69 6f 6e 2f 6a 73 6f 6e 5c 22 29 29 0a 0a 4b 45 59 20 28 6f 70 74 69 6f 6e pplication/json\"))..KEY.(option
a8400 61 6c 29 20 69 73 20 61 20 76 61 72 69 61 62 6c 65 20 77 68 6f 73 65 20 76 61 6c 75 65 20 69 73 al).is.a.variable.whose.value.is
a8420 20 74 68 65 20 41 50 49 20 6b 65 79 2c 20 6f 72 0a 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 72 .the.API.key,.or.function.that.r
a8440 65 74 75 72 6e 73 20 74 68 65 20 6b 65 79 2e 0a 0a 52 45 51 55 45 53 54 2d 50 41 52 41 4d 53 20 eturns.the.key...REQUEST-PARAMS.
a8460 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 61 20 70 6c 69 73 74 20 6f 66 20 61 64 64 69 74 69 6f (optional).is.a.plist.of.additio
a8480 6e 61 6c 20 48 54 54 50 20 72 65 71 75 65 73 74 0a 70 61 72 61 6d 65 74 65 72 73 20 28 61 73 20 nal.HTTP.request.parameters.(as.
a84a0 70 6c 69 73 74 20 6b 65 79 73 29 20 61 6e 64 20 76 61 6c 75 65 73 20 73 75 70 70 6f 72 74 65 64 plist.keys).and.values.supported
a84c0 20 62 79 20 74 68 65 20 41 50 49 2e 20 20 55 73 65 0a 74 68 65 73 65 20 74 6f 20 73 65 74 20 70 .by.the.API...Use.these.to.set.p
a84e0 61 72 61 6d 65 74 65 72 73 20 74 68 61 74 20 67 70 74 65 6c 20 64 6f 65 73 20 6e 6f 74 20 70 72 arameters.that.gptel.does.not.pr
a8500 6f 76 69 64 65 20 75 73 65 72 20 6f 70 74 69 6f 6e 73 0a 66 6f 72 2e 0a 0a 45 78 61 6d 70 6c 65 ovide.user.options.for...Example
a8520 3a 0a 2d 2d 2d 2d 2d 2d 2d 0a 0a 20 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 61 7a 75 72 65 0a 20 20 :.-------...(gptel-make-azure...
a8540 5c 22 41 7a 75 72 65 2d 31 5c 22 0a 20 20 3a 70 72 6f 74 6f 63 6f 6c 20 5c 22 68 74 74 70 73 5c \"Azure-1\"...:protocol.\"https\
a8560 22 0a 20 20 3a 68 6f 73 74 20 5c 22 52 45 53 4f 55 52 43 45 5f 4e 41 4d 45 2e 6f 70 65 6e 61 69 "...:host.\"RESOURCE_NAME.openai
a8580 2e 61 7a 75 72 65 2e 63 6f 6d 5c 22 0a 20 20 3a 65 6e 64 70 6f 69 6e 74 0a 20 20 5c 22 2f 6f 70 .azure.com\"...:endpoint...\"/op
a85a0 65 6e 61 69 2f 64 65 70 6c 6f 79 6d 65 6e 74 73 2f 44 45 50 4c 4f 59 4d 45 4e 54 5f 4e 41 4d 45 enai/deployments/DEPLOYMENT_NAME
a85c0 2f 63 6f 6d 70 6c 65 74 69 6f 6e 73 3f 61 70 69 2d 76 65 72 73 69 6f 6e 3d 32 30 32 33 2d 30 35 /completions?api-version=2023-05
a85e0 2d 31 35 5c 22 0a 20 20 3a 73 74 72 65 61 6d 20 74 0a 20 20 3a 6d 6f 64 65 6c 73 20 5c 5c 3d 27 -15\"...:stream.t...:models.\\='
a8600 28 67 70 74 2d 33 2e 35 2d 74 75 72 62 6f 20 67 70 74 2d 34 29 29 22 0a 20 20 28 64 65 63 6c 61 (gpt-3.5-turbo.gpt-4))"...(decla
a8620 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 6b 65 6e 64 20 re.(indent.1))...(let.((backend.
a8640 28 67 70 74 65 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 (gptel--make-openai.............
a8660 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 20 20 20 20 20 ......:curl-args.curl-args......
a8680 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 20 20 20 20 20 .............:name.name.........
a86a0 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 20 20 20 20 20 ..........:host.host............
a86c0 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 20 20 20 20 20 .......:header.header...........
a86e0 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 20 20 20 20 20 ........:key.key................
a8700 20 20 20 3a 6d 6f 64 65 6c 73 20 28 67 70 74 65 6c 2d 2d 70 72 6f 63 65 73 73 2d 6d 6f 64 65 6c ...:models.(gptel--process-model
a8720 73 20 6d 6f 64 65 6c 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 70 72 6f s.models)...................:pro
a8740 74 6f 63 6f 6c 20 70 72 6f 74 6f 63 6f 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 tocol.protocol..................
a8760 20 3a 65 6e 64 70 6f 69 6e 74 20 65 6e 64 70 6f 69 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 .:endpoint.endpoint.............
a8780 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............
a87a0 20 20 20 20 20 20 20 3a 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 20 72 65 71 75 65 73 74 2d 70 .......:request-params.request-p
a87c0 61 72 61 6d 73 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 arams...................:url.(if
a87e0 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 20 20 .protocol.......................
a8800 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 73 74 .....(concat.protocol."://".host
a8820 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 20 20 .endpoint)......................
a8840 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 0a 20 ....(concat.host.endpoint)))))..
a8860 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 28 61 ...(prog1.backend.......(setf.(a
a8880 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 6b 65 list-get.name.gptel--known-backe
a88a0 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 20 6e nds........................nil.n
a88c0 69 6c 20 23 27 65 71 75 61 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 61 63 6b 65 6e 64 29 il.#'equal).............backend)
a88e0 29 29 29 0a 0a 3b 3b 20 47 50 54 34 41 6c 6c 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a 28 )))..;;.GPT4All.;;;###autoload.(
a8900 64 65 66 61 6c 69 61 73 20 27 67 70 74 65 6c 2d 6d 61 6b 65 2d 67 70 74 34 61 6c 6c 20 27 67 70 defalias.'gptel-make-gpt4all.'gp
a8920 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 0a 20 20 22 52 65 67 69 73 74 65 72 20 61 20 47 50 tel-make-openai..."Register.a.GP
a8940 54 34 41 6c 6c 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 T4All.backend.for.gptel.with.NAM
a8960 45 2e 0a 0a 4b 65 79 77 6f 72 64 20 61 72 67 75 6d 65 6e 74 73 3a 0a 0a 43 55 52 4c 2d 41 52 47 E...Keyword.arguments:..CURL-ARG
a8980 53 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 61 64 64 69 74 69 S.(optional).is.a.list.of.additi
a89a0 6f 6e 61 6c 20 43 75 72 6c 20 61 72 67 75 6d 65 6e 74 73 2e 0a 0a 48 4f 53 54 20 69 73 20 77 68 onal.Curl.arguments...HOST.is.wh
a89c0 65 72 65 20 47 50 54 34 41 6c 6c 20 72 75 6e 73 20 28 77 69 74 68 20 70 6f 72 74 29 2c 20 74 79 ere.GPT4All.runs.(with.port),.ty
a89e0 70 69 63 61 6c 6c 79 20 6c 6f 63 61 6c 68 6f 73 74 3a 34 38 39 31 0a 0a 4d 4f 44 45 4c 53 20 69 pically.localhost:4891..MODELS.i
a8a00 73 20 61 20 6c 69 73 74 20 6f 66 20 61 76 61 69 6c 61 62 6c 65 20 6d 6f 64 65 6c 20 6e 61 6d 65 s.a.list.of.available.model.name
a8a20 73 2c 20 61 73 20 73 79 6d 62 6f 6c 73 2e 0a 0a 53 54 52 45 41 4d 20 69 73 20 61 20 62 6f 6f 6c s,.as.symbols...STREAM.is.a.bool
a8a40 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 65 ean.to.toggle.streaming.response
a8a60 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 20 s,.defaults.to.false...PROTOCOL.
a8a80 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 74 70 73 20 62 79 specifies.the.protocol,.https.by
a8aa0 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 6e 61 6c 29 20 69 .default...ENDPOINT.(optional).i
a8ac0 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 70 6c 65 74 69 6f s.the.API.endpoint.for.completio
a8ae0 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 63 6f 6d 70 6c 65 ns,.defaults.to.\"/api/v1/comple
a8b00 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 20 69 73 20 66 6f tions\"..HEADER.(optional).is.fo
a8b20 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 6e 64 20 77 69 74 r.additional.headers.to.send.wit
a8b40 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 62 65 20 61 6e 20 h.each.request..It.should.be.an.
a8b60 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 65 74 75 6e 73 20 alist.or.a.function.that.retuns.
a8b80 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 74 2d 54 79 70 65 an.alist,.like:.((\"Content-Type
a8ba0 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 29 0a 0a 4b 45 59 \"...\"application/json\"))..KEY
a8bc0 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 77 68 6f 73 65 20 .(optional).is.a.variable.whose.
a8be0 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 75 6e 63 74 69 6f value.is.the.API.key,.or.functio
a8c00 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 69 73 20 69 73 20 n.that.returns.the.key..This.is.
a8c20 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 0a 6c 6f 63 61 6c typically.not.required.for.local
a8c40 20 6d 6f 64 65 6c 73 20 6c 69 6b 65 20 47 50 54 34 41 6c 6c 2e 0a 0a 52 45 51 55 45 53 54 2d 50 .models.like.GPT4All...REQUEST-P
a8c60 41 52 41 4d 53 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 61 20 70 6c 69 73 74 20 6f 66 20 61 ARAMS.(optional).is.a.plist.of.a
a8c80 64 64 69 74 69 6f 6e 61 6c 20 48 54 54 50 20 72 65 71 75 65 73 74 0a 70 61 72 61 6d 65 74 65 72 dditional.HTTP.request.parameter
a8ca0 73 20 28 61 73 20 70 6c 69 73 74 20 6b 65 79 73 29 20 61 6e 64 20 76 61 6c 75 65 73 20 73 75 70 s.(as.plist.keys).and.values.sup
a8cc0 70 6f 72 74 65 64 20 62 79 20 74 68 65 20 41 50 49 2e 20 20 55 73 65 0a 74 68 65 73 65 20 74 6f ported.by.the.API...Use.these.to
a8ce0 20 73 65 74 20 70 61 72 61 6d 65 74 65 72 73 20 74 68 61 74 20 67 70 74 65 6c 20 64 6f 65 73 20 .set.parameters.that.gptel.does.
a8d00 6e 6f 74 20 70 72 6f 76 69 64 65 20 75 73 65 72 20 6f 70 74 69 6f 6e 73 0a 66 6f 72 2e 0a 0a 45 not.provide.user.options.for...E
a8d20 78 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 67 70 74 xample:.-------..(gptel-make-gpt
a8d40 34 61 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 4all..\"GPT4All\"..:protocol.\"h
a8d60 74 74 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 ttp\"..:host.\"localhost:4891\".
a8d80 20 3a 6d 6f 64 65 6c 73 20 5c 5c 3d 27 28 6d 69 73 74 72 61 6c 2d 37 62 2d 6f 70 65 6e 6f 72 63 .:models.\\='(mistral-7b-openorc
a8da0 61 2e 51 34 5f 30 2e 67 67 75 66 29 29 22 29 0a 0a 28 70 72 6f 76 69 64 65 20 27 67 70 74 65 6c a.Q4_0.gguf))")..(provide.'gptel
a8dc0 2d 6f 70 65 6e 61 69 29 0a 3b 3b 3b 20 67 70 74 65 6c 2d 6f 70 65 6e 61 69 2e 65 6c 20 65 6e 64 -openai).;;;.gptel-openai.el.end
a8de0 73 20 68 65 72 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 62 s.here..;;.Local.Variables:.;;.b
a8e00 79 74 65 2d 63 6f 6d 70 69 6c 65 2d 77 61 72 6e 69 6e 67 73 3a 20 28 6e 6f 74 20 64 6f 63 73 74 yte-compile-warnings:.(not.docst
a8e20 72 69 6e 67 73 29 0a 3b 3b 20 45 6e 64 3a 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 rings).;;.End:..................
a8e40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8e60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8e80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8ea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8ec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8ee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8f00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8f20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8f60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9000 67 70 74 65 6c 2d 30 2e 39 2e 39 2f 2e 64 69 72 2d 6c 6f 63 61 6c 73 2e 65 6c 00 00 00 00 00 00 gptel-0.9.9/.dir-locals.el......
a9020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9060 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
a9080 30 30 30 30 32 32 34 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 33 37 33 32 00 20 30 00 00 00 0000224.00000000000.013732..0...
a90a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a90c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a90e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9100 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...................
a9120 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...................
a9140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a91a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a91c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a91e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9200 28 28 6e 69 6c 20 2e 20 28 28 69 6e 64 65 6e 74 2d 74 61 62 73 2d 6d 6f 64 65 20 2e 20 6e 69 6c ((nil...((indent-tabs-mode...nil
a9220 29 0a 09 20 28 73 65 6e 74 65 6e 63 65 2d 65 6e 64 2d 64 6f 75 62 6c 65 2d 73 70 61 63 65 20 2e )...(sentence-end-double-space..
a9240 20 74 29 0a 09 20 28 62 75 67 2d 72 65 66 65 72 65 6e 63 65 2d 75 72 6c 2d 66 6f 72 6d 61 74 20 .t)...(bug-reference-url-format.
a9260 2e 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 69 6e 6b 2f 67 .."https://github.com/karthink/g
a9280 70 74 65 6c 2f 69 73 73 75 65 73 2f 25 73 22 29 29 29 29 0a 00 00 00 00 00 00 00 00 00 00 00 00 ptel/issues/%s")))).............
a92a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a92c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a92e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a93a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a93c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a93e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9400 67 70 74 65 6c 2d 30 2e 39 2e 39 2f 67 70 74 65 6c 2d 6f 72 67 2e 65 6c 00 00 00 00 00 00 00 00 gptel-0.9.9/gptel-org.el........
a9420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9460 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
a9480 30 31 30 33 30 34 33 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 33 35 32 36 00 20 30 00 00 00 0103043.00000000000.013526..0...
a94a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a94c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a94e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9500 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...................
a9520 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...................
a9540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a95a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a95c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a95e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9600 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
a9620 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
a9640 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.(
a9660 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..;;
a9680 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
a96a0 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
a96c0 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
a96e0 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
a9700 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
a9720 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
a9740 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
a9760 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
a9780 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.;
a97a0 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
a97c0 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
a97e0 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
a9800 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
a9820 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.
a9840 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
a9860 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
a9880 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
a98a0 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...;;
a98c0 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
a98e0 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
a9900 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...
a9920 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
a9940 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:..;
a9960 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.
a9980 28 72 65 71 75 69 72 65 20 27 67 70 74 65 6c 29 29 0a 28 72 65 71 75 69 72 65 20 27 63 6c 2d 6c (require.'gptel)).(require.'cl-l
a99a0 69 62 29 0a 28 72 65 71 75 69 72 65 20 27 6f 72 67 2d 65 6c 65 6d 65 6e 74 29 0a 28 72 65 71 75 ib).(require.'org-element).(requ
a99c0 69 72 65 20 27 6f 75 74 6c 69 6e 65 29 0a 0a 3b 3b 20 46 75 6e 63 74 69 6f 6e 73 20 75 73 65 64 ire.'outline)..;;.Functions.used
a99e0 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
a9a00 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 67 70 74 65 6c 2d 2d e.in.Org.buffers.(defvar.gptel--
a9a20 6e 75 6d 2d 6d 65 73 73 61 67 65 73 2d 74 6f 2d 73 65 6e 64 29 0a 28 64 65 66 76 61 72 20 6f 72 num-messages-to-send).(defvar.or
a9a40 67 2d 65 6e 74 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 g-entry-property-inherited-from)
a9a60 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 76 61 72 20 .(defvar.gptel-backend).(defvar.
a9a80 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 62 61 63 6b 65 6e 64 73 29 0a 28 64 65 66 76 61 72 20 67 gptel--known-backends).(defvar.g
a9aa0 70 74 65 6c 2d 2d 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 ptel--system-message).(defvar.gp
a9ac0 74 65 6c 2d 6d 6f 64 65 6c 29 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d 74 65 6d 70 65 72 61 tel-model).(defvar.gptel-tempera
a9ae0 74 75 72 65 29 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d 6d 61 78 2d 74 6f 6b 65 6e 73 29 0a ture).(defvar.gptel-max-tokens).
a9b00 0a 28 64 65 66 76 61 72 20 6f 72 67 2d 6c 69 6e 6b 2d 61 6e 67 6c 65 2d 72 65 29 0a 28 64 65 66 .(defvar.org-link-angle-re).(def
a9b20 76 61 72 20 6f 72 67 2d 6c 69 6e 6b 2d 62 72 61 63 6b 65 74 2d 72 65 29 0a 28 64 65 63 6c 61 72 var.org-link-bracket-re).(declar
a9b40 65 2d 66 75 6e 63 74 69 6f 6e 20 6d 61 69 6c 63 61 70 2d 66 69 6c 65 2d 6e 61 6d 65 2d 74 6f 2d e-function.mailcap-file-name-to-
a9b60 6d 69 6d 65 2d 74 79 70 65 20 22 6d 61 69 6c 63 61 70 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 mime-type."mailcap").(declare-fu
a9b80 6e 63 74 69 6f 6e 20 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 63 61 70 61 62 6c 65 2d 70 20 22 67 nction.gptel--model-capable-p."g
a9ba0 70 74 65 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 65 6c 2d 2d ptel").(declare-function.gptel--
a9bc0 6d 6f 64 65 6c 2d 6d 69 6d 65 2d 63 61 70 61 62 6c 65 2d 70 20 22 67 70 74 65 6c 22 29 0a 28 64 model-mime-capable-p."gptel").(d
a9be0 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 6e 61 6d eclare-function.gptel--model-nam
a9c00 65 20 22 67 70 74 65 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 e."gptel").(declare-function.gpt
a9c20 65 6c 2d 2d 74 6f 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 el--to-string."gptel").(declare-
a9c40 66 75 6e 63 74 69 6f 6e 20 67 70 74 65 6c 2d 2d 74 6f 2d 6e 75 6d 62 65 72 20 22 67 70 74 65 6c function.gptel--to-number."gptel
a9c60 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 2d 69 6e 74 65 ").(declare-function.gptel--inte
a9c80 72 6e 20 22 67 70 74 65 6c 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 67 70 rn."gptel").(declare-function.gp
a9ca0 74 65 6c 2d 2d 67 65 74 2d 62 75 66 66 65 72 2d 62 6f 75 6e 64 73 20 22 67 70 74 65 6c 22 29 0a tel--get-buffer-bounds."gptel").
a9cc0 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d (declare-function.gptel-backend-
a9ce0 6e 61 6d 65 20 22 67 70 74 65 6c 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 name."gptel").(declare-function.
a9d00 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 62 75 66 66 65 72 20 22 67 70 74 65 6c 22 29 0a 28 64 65 gptel--parse-buffer."gptel").(de
a9d20 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 64 69 72 65 clare-function.gptel--parse-dire
a9d40 63 74 69 76 65 20 22 67 70 74 65 6c 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e ctive."gptel").(declare-function
a9d60 20 67 70 74 65 6c 2d 2d 72 65 73 74 6f 72 65 2d 70 72 6f 70 73 20 22 67 70 74 65 6c 22 29 0a 28 .gptel--restore-props."gptel").(
a9d80 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 67 70 74 65 6c 2d 2d 77 69 74 68 2d 62 75 66 declare-function.gptel--with-buf
a9da0 66 65 72 2d 63 6f 70 79 20 22 67 70 74 65 6c 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 fer-copy."gptel").(declare-funct
a9dc0 69 6f 6e 20 67 70 74 65 6c 2d 2d 66 69 6c 65 2d 62 69 6e 61 72 79 2d 70 20 22 67 70 74 65 6c 22 ion.gptel--file-binary-p."gptel"
a9de0 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 67 65 ).(declare-function.org-entry-ge
a9e00 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 65 t."org").(declare-function.org-e
a9e20 6e 74 72 79 2d 70 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 ntry-put."org").(declare-functio
a9e40 6e 20 6f 72 67 2d 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 n.org-with-wide-buffer."org-macs
a9e60 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 73 65 74 2d 70 72 6f ").(declare-function.org-set-pro
a9e80 70 65 72 74 79 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 perty."org").(declare-function.o
a9ea0 72 67 2d 70 72 6f 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 rg-property-values."org").(decla
a9ec0 72 65 2d 66 75 6e 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 re-function.org-open-line."org")
a9ee0 0a 28 64 65 63 6c 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 .(declare-function.org-at-headin
a9f00 67 2d 70 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 g-p."org").(declare-function.org
a9f20 2d 67 65 74 2d 68 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 -get-heading."org").(declare-fun
a9f40 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 72 67 22 29 0a 0a 3b ction.org-at-heading-p."org")..;
a9f60 3b 20 42 75 6e 64 6c 65 20 60 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 6c 69 6e 65 61 67 65 2d 6d 61 ;.Bundle.`org-element-lineage-ma
a9f80 70 27 20 69 66 20 69 74 27 73 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c 65 20 28 66 6f 72 20 4f 72 p'.if.it's.not.available.(for.Or
a9fa0 67 20 39 2e 36 37 20 6f 72 20 6f 6c 64 65 72 29 0a 28 65 76 61 6c 2d 61 6e 64 2d 63 6f 6d 70 69 g.9.67.or.older).(eval-and-compi
a9fc0 6c 65 0a 20 20 28 69 66 20 28 66 62 6f 75 6e 64 70 20 27 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 6c le...(if.(fboundp.'org-element-l
a9fe0 69 6e 65 61 67 65 2d 6d 61 70 29 0a 20 20 20 20 20 20 28 70 72 6f 67 6e 20 28 64 65 63 6c 61 72 ineage-map).......(progn.(declar
aa000 65 2d 66 75 6e 63 74 69 6f 6e 20 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 6c 69 6e 65 61 67 65 2d 6d e-function.org-element-lineage-m
aa020 61 70 20 22 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 61 73 74 22 29 0a 20 20 20 20 20 20 20 20 20 20 ap."org-element-ast")...........
aa040 20 20 20 28 64 65 66 61 6c 69 61 73 20 27 67 70 74 65 6c 2d 6f 72 67 2d 2d 65 6c 65 6d 65 6e 74 ...(defalias.'gptel-org--element
aa060 2d 6c 69 6e 65 61 67 65 2d 6d 61 70 20 27 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 6c 69 6e 65 61 67 -lineage-map.'org-element-lineag
aa080 65 2d 6d 61 70 29 29 0a 20 20 20 20 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 6f 72 67 2d 2d 65 6c e-map)).....(defun.gptel-org--el
aa0a0 65 6d 65 6e 74 2d 6c 69 6e 65 61 67 65 2d 6d 61 70 20 28 64 61 74 75 6d 20 66 75 6e 20 26 6f 70 ement-lineage-map.(datum.fun.&op
aa0c0 74 69 6f 6e 61 6c 20 74 79 70 65 73 20 77 69 74 68 2d 73 65 6c 66 20 66 69 72 73 74 2d 6d 61 74 tional.types.with-self.first-mat
aa0e0 63 68 29 0a 20 20 20 20 20 20 22 4d 61 70 20 46 55 4e 20 61 63 72 6f 73 73 20 61 6e 63 65 73 74 ch)......."Map.FUN.across.ancest
aa100 6f 72 73 20 6f 66 20 44 41 54 55 4d 2c 20 66 72 6f 6d 20 63 6c 6f 73 65 73 74 20 74 6f 20 66 75 ors.of.DATUM,.from.closest.to.fu
aa120 72 74 68 65 73 74 2e 0a 0a 44 41 54 55 4d 20 69 73 20 61 6e 20 6f 62 6a 65 63 74 20 6f 72 20 65 rthest...DATUM.is.an.object.or.e
aa140 6c 65 6d 65 6e 74 2e 20 20 46 6f 72 20 54 59 50 45 53 2c 20 57 49 54 48 2d 53 45 4c 46 20 61 6e lement...For.TYPES,.WITH-SELF.an
aa160 64 0a 46 49 52 53 54 2d 4d 41 54 43 48 20 73 65 65 20 60 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 6c d.FIRST-MATCH.see.`org-element-l
aa180 69 6e 65 61 67 65 2d 6d 61 70 27 2e 0a 0a 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 70 ineage-map'...This.function.is.p
aa1a0 72 6f 76 69 64 65 64 20 66 6f 72 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 77 69 74 68 20 6f rovided.for.compatibility.with.o
aa1c0 6c 64 65 72 20 76 65 72 73 69 6f 6e 73 0a 6f 66 20 4f 72 67 2e 22 0a 20 20 20 20 20 20 28 64 65 lder.versions.of.Org.".......(de
aa1e0 63 6c 61 72 65 20 28 69 6e 64 65 6e 74 20 32 29 29 0a 20 20 20 20 20 20 28 73 65 74 71 20 66 75 clare.(indent.2)).......(setq.fu
aa200 6e 20 28 69 66 20 28 66 75 6e 63 74 69 6f 6e 70 20 66 75 6e 29 20 66 75 6e 20 60 28 6c 61 6d 62 n.(if.(functionp.fun).fun.`(lamb
aa220 64 61 20 28 6e 6f 64 65 29 20 2c 66 75 6e 29 29 29 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 75 da.(node).,fun))).......(let.((u
aa240 70 20 28 69 66 20 77 69 74 68 2d 73 65 6c 66 20 64 61 74 75 6d 20 28 6f 72 67 2d 65 6c 65 6d 65 p.(if.with-self.datum.(org-eleme
aa260 6e 74 2d 70 61 72 65 6e 74 20 64 61 74 75 6d 29 29 29 0a 09 20 20 20 20 61 63 63 20 72 74 6e 29 nt-parent.datum)))......acc.rtn)
aa280 0a 20 20 20 20 20 20 20 20 28 63 61 74 63 68 20 3a 2d 2d 66 69 72 73 74 2d 6d 61 74 63 68 0a 20 .........(catch.:--first-match..
aa2a0 20 20 20 20 20 20 20 20 20 28 77 68 69 6c 65 20 75 70 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 .........(while.up.............(
aa2c0 77 68 65 6e 20 28 6f 72 20 28 6e 6f 74 20 74 79 70 65 73 29 20 28 6f 72 67 2d 65 6c 65 6d 65 6e when.(or.(not.types).(org-elemen
aa2e0 74 2d 74 79 70 65 2d 70 20 75 70 20 74 79 70 65 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 t-type-p.up.types)).............
aa300 20 20 28 73 65 74 71 20 72 74 6e 20 28 66 75 6e 63 61 6c 6c 20 66 75 6e 20 75 70 29 29 0a 20 20 ..(setq.rtn.(funcall.fun.up))...
aa320 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 61 6e 64 20 66 69 72 73 74 2d 6d 61 74 63 68 ............(if.(and.first-match
aa340 20 72 74 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 68 72 6f 77 20 3a .rtn)...................(throw.:
aa360 2d 2d 66 69 72 73 74 2d 6d 61 74 63 68 20 72 74 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 --first-match.rtn)..............
aa380 20 20 20 28 77 68 65 6e 20 72 74 6e 20 28 70 75 73 68 20 72 74 6e 20 61 63 63 29 29 29 29 0a 20 ...(when.rtn.(push.rtn.acc))))..
aa3a0 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 75 70 20 28 6f 72 67 2d 65 6c 65 6d 65 6e 74 ...........(setq.up.(org-element
aa3c0 2d 70 61 72 65 6e 74 20 75 70 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 6e 72 65 76 65 72 73 -parent.up)))...........(nrevers
aa3e0 65 20 61 63 63 29 29 29 29 29 0a 20 20 28 69 66 20 28 66 62 6f 75 6e 64 70 20 27 6f 72 67 2d 65 e.acc)))))...(if.(fboundp.'org-e
aa400 6c 65 6d 65 6e 74 2d 62 65 67 69 6e 29 0a 20 20 20 20 20 20 28 70 72 6f 67 6e 20 28 64 65 63 6c lement-begin).......(progn.(decl
aa420 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 6e 20 22 are-function.org-element-begin."
aa440 6f 72 67 2d 65 6c 65 6d 65 6e 74 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 65 63 6c org-element")..............(decl
aa460 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 65 6e 64 20 22 6f 72 are-function.org-element-end."or
aa480 67 2d 65 6c 65 6d 65 6e 74 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 65 63 6c 61 72 g-element")..............(declar
aa4a0 65 2d 66 75 6e 63 74 69 6f 6e 20 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 70 61 72 65 6e 74 20 22 6f e-function.org-element-parent."o
aa4c0 72 67 2d 65 6c 65 6d 65 6e 74 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 65 66 61 6c rg-element")..............(defal
aa4e0 69 61 73 20 27 67 70 74 65 6c 2d 6f 72 67 2d 2d 65 6c 65 6d 65 6e 74 2d 62 65 67 69 6e 20 27 6f ias.'gptel-org--element-begin.'o
aa500 72 67 2d 65 6c 65 6d 65 6e 74 2d 62 65 67 69 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 rg-element-begin)..............(
aa520 64 65 66 61 6c 69 61 73 20 27 67 70 74 65 6c 2d 6f 72 67 2d 2d 65 6c 65 6d 65 6e 74 2d 65 6e 64 defalias.'gptel-org--element-end
aa540 20 27 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 65 6e 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 .'org-element-end)..............
aa560 28 64 65 66 61 6c 69 61 73 20 27 67 70 74 65 6c 2d 6f 72 67 2d 2d 65 6c 65 6d 65 6e 74 2d 70 61 (defalias.'gptel-org--element-pa
aa580 72 65 6e 74 20 27 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 70 61 72 65 6e 74 29 29 0a 20 20 20 20 28 rent.'org-element-parent)).....(
aa5a0 64 65 66 73 75 62 73 74 20 67 70 74 65 6c 2d 6f 72 67 2d 2d 65 6c 65 6d 65 6e 74 2d 62 65 67 69 defsubst.gptel-org--element-begi
aa5c0 6e 20 28 6e 6f 64 65 29 0a 20 20 20 20 20 20 22 47 65 74 20 60 3a 62 65 67 69 6e 27 20 70 72 6f n.(node)......."Get.`:begin'.pro
aa5e0 70 65 72 74 79 20 6f 66 20 4e 4f 44 45 2e 22 0a 20 20 20 20 20 20 28 6f 72 67 2d 65 6c 65 6d 65 perty.of.NODE.".......(org-eleme
aa600 6e 74 2d 70 72 6f 70 65 72 74 79 20 3a 62 65 67 69 6e 20 6e 6f 64 65 29 29 0a 20 20 20 20 28 64 nt-property.:begin.node)).....(d
aa620 65 66 73 75 62 73 74 20 67 70 74 65 6c 2d 6f 72 67 2d 2d 65 6c 65 6d 65 6e 74 2d 65 6e 64 20 28 efsubst.gptel-org--element-end.(
aa640 6e 6f 64 65 29 0a 20 20 20 20 20 20 22 47 65 74 20 60 3a 65 6e 64 27 20 70 72 6f 70 65 72 74 79 node)......."Get.`:end'.property
aa660 20 6f 66 20 4e 4f 44 45 2e 22 0a 20 20 20 20 20 20 28 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 70 72 .of.NODE.".......(org-element-pr
aa680 6f 70 65 72 74 79 20 3a 65 6e 64 20 6e 6f 64 65 29 29 0a 20 20 20 20 28 64 65 66 73 75 62 73 74 operty.:end.node)).....(defsubst
aa6a0 20 67 70 74 65 6c 2d 6f 72 67 2d 2d 65 6c 65 6d 65 6e 74 2d 70 61 72 65 6e 74 20 28 6e 6f 64 65 .gptel-org--element-parent.(node
aa6c0 29 0a 20 20 20 20 20 20 22 52 65 74 75 72 6e 20 60 3a 70 61 72 65 6e 74 27 20 70 72 6f 70 65 72 )......."Return.`:parent'.proper
aa6e0 74 79 20 6f 66 20 4e 4f 44 45 2e 22 0a 20 20 20 20 20 20 28 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d ty.of.NODE.".......(org-element-
aa700 70 72 6f 70 65 72 74 79 20 3a 70 61 72 65 6e 74 20 6e 6f 64 65 29 29 29 29 0a 0a 0c 0a 3b 3b 3b property.:parent.node))))....;;;
aa720 20 55 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 .User.options.(defcustom.gptel-o
aa740 72 67 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 rg-branching-context.nil..."Use.
aa760 74 68 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 the.lineage.of.the.current.headi
aa780 6e 67 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 ng.as.the.context.for.gptel.in.O
aa7a0 72 67 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 rg.buffers...This.makes.each.sam
aa7c0 65 20 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 e.level.heading.a.separate.conve
aa7e0 72 73 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 rsation.branch...By.default,.gpt
aa800 65 6c 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 el.uses.a.linear.context:.all.th
aa820 65 20 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 e.text.up.to.the.cursor.is.sent.
aa840 74 6f 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 to.the.LLM...Enabling.this.optio
aa860 6e 20 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 n.makes.the.context.the.hierarch
aa880 69 63 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 ical.lineage.of.the.current.Org.
aa8a0 68 65 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 heading...In.this.example:..----
aa8c0 2d 0a 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 -.Top.level.text..*.Heading.1.he
aa8e0 61 64 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 ading.1.text..*.Heading.2.headin
aa900 67 20 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 g.2.text..**.Heading.2.1.heading
aa920 20 32 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 .2.1.text.**.Heading.2.2.heading
aa940 20 32 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 .2.2.text.-----..With.the.cursor
aa960 20 61 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 .at.the.end.of.the.buffer,.the.t
aa980 65 78 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 ext.sent.to.the.LLM.will.be.limi
aa9a0 74 65 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 ted.to..-----.Top.level.text..*.
aa9c0 48 65 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 Heading.2.heading.2.text..**.Hea
aa9e0 64 69 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 ding.2.2.heading.2.2.text.-----.
aaa00 0a 54 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 .This.makes.it.feasible.to.have.
aaa20 6d 75 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 multiple.conversation.branches."
aaa40 0a 20 20 3a 74 79 70 65 20 27 62 6f 6f 6c 65 61 6e 0a 20 20 3a 67 72 6f 75 70 20 27 67 70 74 65 ...:type.'boolean...:group.'gpte
aaa60 6c 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 6f 72 67 2d 69 67 6e 6f 72 65 2d l)..(defcustom.gptel-org-ignore-
aaa80 65 6c 65 6d 65 6e 74 73 20 27 28 70 72 6f 70 65 72 74 79 2d 64 72 61 77 65 72 29 0a 20 20 22 4c elements.'(property-drawer)..."L
aaaa0 69 73 74 20 6f 66 20 4f 72 67 20 65 6c 65 6d 65 6e 74 73 20 74 68 61 74 20 73 68 6f 75 6c 64 20 ist.of.Org.elements.that.should.
aaac0 62 65 20 73 74 72 69 70 70 65 64 20 66 72 6f 6d 20 74 68 65 20 70 72 6f 6d 70 74 0a 62 65 66 6f be.stripped.from.the.prompt.befo
aaae0 72 65 20 73 65 6e 64 69 6e 67 20 69 74 2e 0a 0a 42 79 20 64 65 66 61 75 6c 74 20 67 70 74 65 6c re.sending.it...By.default.gptel
aab00 20 77 69 6c 6c 20 72 65 6d 6f 76 65 20 4f 72 67 20 70 72 6f 70 65 72 74 79 20 64 72 61 77 65 72 .will.remove.Org.property.drawer
aab20 73 20 66 72 6f 6d 20 74 68 65 0a 70 72 6f 6d 70 74 2e 20 20 46 6f 72 20 74 68 65 20 66 75 6c 6c s.from.the.prompt...For.the.full
aab40 20 6c 69 73 74 20 6f 66 20 61 76 61 69 6c 61 62 6c 65 20 65 6c 65 6d 65 6e 74 73 2c 20 70 6c 65 .list.of.available.elements,.ple
aab60 61 73 65 20 73 65 65 0a 60 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 61 6c 6c 2d 65 6c 65 6d 65 6e 74 ase.see.`org-element-all-element
aab80 73 27 2e 0a 0a 50 6c 65 61 73 65 20 6e 6f 74 65 3a 20 52 65 6d 6f 76 69 6e 67 20 70 72 6f 70 65 s'...Please.note:.Removing.prope
aaba0 72 74 79 2d 64 72 61 77 65 72 20 65 6c 65 6d 65 6e 74 73 20 69 73 20 66 61 73 74 2c 20 62 75 74 rty-drawer.elements.is.fast,.but
aabc0 0a 61 64 64 69 6e 67 20 65 6c 65 6d 65 6e 74 73 20 74 6f 20 74 68 69 73 20 6c 69 73 74 20 63 61 .adding.elements.to.this.list.ca
aabe0 6e 20 73 69 67 6e 69 66 69 63 61 6e 74 6c 79 20 73 6c 6f 77 20 64 6f 77 6e 0a 60 67 70 74 65 6c n.significantly.slow.down.`gptel
aac00 2d 73 65 6e 64 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 -send'."...:group.'gptel...:type
aac20 20 27 28 72 65 70 65 61 74 20 73 79 6d 62 6f 6c 29 29 0a 0a 0c 0a 3b 3b 3b 20 53 65 74 74 69 6e .'(repeat.symbol))....;;;.Settin
aac40 67 20 63 6f 6e 74 65 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 g.context.and.creating.queries.(
aac60 64 65 66 75 6e 20 67 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 defun.gptel-org--get-topic-start
aac80 20 28 29 0a 20 20 22 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 .()..."If.a.conversation.topic.i
aaca0 73 20 73 65 74 2c 20 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 s.set,.return.it."...(when.(org-
aacc0 65 6e 74 72 79 2d 67 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 entry-get.(point)."GPTEL_TOPIC".
aace0 27 69 6e 68 65 72 69 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 'inherit).....(marker-position.o
aad00 72 67 2d 65 6e 74 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 rg-entry-property-inherited-from
aad20 29 29 29 0a 0a 28 64 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 )))..(defun.gptel-org-set-topic.
aad40 28 74 6f 70 69 63 29 0a 20 20 22 53 65 74 20 61 20 54 4f 50 49 43 20 61 6e 64 20 6c 69 6d 69 74 (topic)..."Set.a.TOPIC.and.limit
aad60 20 74 68 69 73 20 63 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 .this.conversation.to.the.curren
aad80 74 20 68 65 61 64 69 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 t.heading...This.limits.the.cont
aada0 65 78 74 20 73 65 6e 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 ext.sent.to.the.LLM.to.the.text.
aadc0 62 65 74 77 65 65 6e 20 74 68 65 20 63 75 72 72 65 6e 74 0a 68 65 61 64 69 6e 67 20 28 69 2e 65 between.the.current.heading.(i.e
aade0 2e 20 74 68 65 20 68 65 61 64 69 6e 67 20 77 69 74 68 20 74 68 65 20 74 6f 70 69 63 20 73 65 74 ..the.heading.with.the.topic.set
aae00 29 20 61 6e 64 20 74 68 65 20 63 75 72 73 6f 72 20 70 6f 73 69 74 69 6f 6e 2e 22 0a 20 20 28 69 ).and.the.cursor.position."...(i
aae20 6e 74 65 72 61 63 74 69 76 65 0a 20 20 20 28 6c 69 73 74 0a 20 20 20 20 28 70 72 6f 67 6e 0a 20 nteractive....(list.....(progn..
aae40 20 20 20 20 20 28 6f 72 20 28 64 65 72 69 76 65 64 2d 6d 6f 64 65 2d 70 20 27 6f 72 67 2d 6d 6f .....(or.(derived-mode-p.'org-mo
aae60 64 65 29 0a 20 20 20 20 20 20 20 20 20 20 28 75 73 65 72 2d 65 72 72 6f 72 20 22 53 75 70 70 6f de)...........(user-error."Suppo
aae80 72 74 20 66 6f 72 20 6d 75 6c 74 69 70 6c 65 20 74 6f 70 69 63 73 20 70 65 72 20 62 75 66 66 65 rt.for.multiple.topics.per.buffe
aaea0 72 20 69 73 20 6f 6e 6c 79 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 66 6f 72 20 60 6f 72 67 2d 6d r.is.only.implemented.for.`org-m
aaec0 6f 64 65 27 22 29 29 0a 20 20 20 20 20 20 28 63 6f 6d 70 6c 65 74 69 6e 67 2d 72 65 61 64 20 22 ode'")).......(completing-read."
aaee0 53 65 74 20 74 6f 70 69 63 20 61 73 3a 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 Set.topic.as:.".................
aaf00 20 20 20 20 20 20 20 28 6f 72 67 2d 70 72 6f 70 65 72 74 79 2d 76 61 6c 75 65 73 20 22 47 50 54 .......(org-property-values."GPT
aaf20 45 4c 5f 54 4f 50 49 43 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 EL_TOPIC")......................
aaf40 20 20 6e 69 6c 20 6e 69 6c 20 28 64 6f 77 6e 63 61 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 ..nil.nil.(downcase.............
aaf60 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
aaf80 72 69 6e 67 2d 74 6f 2d 77 69 64 74 68 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ring-to-width...................
aafa0 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 2d 6e 6f 2d 70 72 6f ...............(substring-no-pro
aafc0 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 20 20 20 20 20 perties.........................
aafe0 20 20 20 20 20 20 20 20 20 20 28 72 65 70 6c 61 63 65 2d 72 65 67 65 78 70 2d 69 6e 2d 73 74 72 ..........(replace-regexp-in-str
ab000 69 6e 67 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 ing.............................
ab020 20 20 20 20 20 20 20 22 5c 5c 73 2d 2b 22 20 22 2d 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ......."\\s-+"."-"..............
ab040 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 65 6e 74 72 79 ......................(org-entry
ab060 2d 67 65 74 20 6e 69 6c 20 22 49 54 45 4d 22 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 -get.nil."ITEM")))..............
ab080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 35 30 29 29 29 29 29 29 0a 20 20 28 ....................50))))))...(
ab0a0 77 68 65 6e 20 28 73 74 72 69 6e 67 70 20 74 6f 70 69 63 29 20 28 6f 72 67 2d 73 65 74 2d 70 72 when.(stringp.topic).(org-set-pr
ab0c0 6f 70 65 72 74 79 20 22 47 50 54 45 4c 5f 54 4f 50 49 43 22 20 74 6f 70 69 63 29 29 29 0a 0a 3b operty."GPTEL_TOPIC".topic)))..;
ab0e0 3b 20 4e 4f 54 45 3a 20 54 68 69 73 20 63 61 6e 20 62 65 20 63 6f 6e 76 65 72 74 65 64 20 74 6f ;.NOTE:.This.can.be.converted.to
ab100 20 61 20 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 66 6f 72 0a 3b 3b 20 60 67 70 74 65 6c 2d 2d 63 .a.cl-defmethod.for.;;.`gptel--c
ab120 72 65 61 74 65 2d 70 72 6f 6d 70 74 2d 62 75 66 66 65 72 27 20 28 63 6f 6e 63 65 70 74 75 61 6c reate-prompt-buffer'.(conceptual
ab140 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 0a 3b 3b 20 6c ly.cleaner),.but.will.cause.;;.l
ab160 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
ab180 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 65 66 75 .might.be.harder.to.debug..(defu
ab1a0 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 2d 62 75 66 66 65 n.gptel-org--create-prompt-buffe
ab1c0 72 20 28 26 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 r.(&optional.prompt-end)..."Retu
ab1e0 72 6e 20 61 20 62 75 66 66 65 72 20 77 69 74 68 20 74 68 65 20 63 6f 6e 76 65 72 73 61 74 69 6f rn.a.buffer.with.the.conversatio
ab200 6e 20 70 72 6f 6d 70 74 20 74 6f 20 62 65 20 73 65 6e 74 2e 0a 0a 49 66 20 74 68 65 20 72 65 67 n.prompt.to.be.sent...If.the.reg
ab220 69 6f 6e 20 69 73 20 61 63 74 69 76 65 20 6c 69 6d 69 74 20 74 68 65 20 70 72 6f 6d 70 74 20 74 ion.is.active.limit.the.prompt.t
ab240 65 78 74 20 74 6f 20 74 68 65 20 72 65 67 69 6f 6e 20 63 6f 6e 74 65 6e 74 73 2e 0a 4f 74 68 65 ext.to.the.region.contents..Othe
ab260 72 77 69 73 65 20 74 68 65 20 70 72 6f 6d 70 74 20 74 65 78 74 20 69 73 20 63 6f 6e 73 74 72 75 rwise.the.prompt.text.is.constru
ab280 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 68 65 0a 63 75 cted.from.the.contents.of.the.cu
ab2a0 72 72 65 6e 74 20 62 75 66 66 65 72 20 75 70 20 74 6f 20 70 6f 69 6e 74 2c 20 6f 72 20 50 52 4f rrent.buffer.up.to.point,.or.PRO
ab2c0 4d 50 54 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 MPT-END.if.provided...Its.conten
ab2e0 74 73 0a 64 65 70 65 6e 64 20 6f 6e 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 60 67 70 74 65 6c ts.depend.on.the.value.of.`gptel
ab300 2d 6f 72 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 -org-branching-context',.which.s
ab320 65 65 2e 22 0a 20 20 28 77 68 65 6e 20 28 75 73 65 2d 72 65 67 69 6f 6e 2d 70 29 0a 20 20 20 20 ee."...(when.(use-region-p).....
ab340 28 6e 61 72 72 6f 77 2d 74 6f 2d 72 65 67 69 6f 6e 20 28 72 65 67 69 6f 6e 2d 62 65 67 69 6e 6e (narrow-to-region.(region-beginn
ab360 69 6e 67 29 20 28 72 65 67 69 6f 6e 2d 65 6e 64 29 29 0a 20 20 20 20 28 73 65 74 71 20 70 72 6f ing).(region-end)).....(setq.pro
ab380 6d 70 74 2d 65 6e 64 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 29 0a 20 20 28 67 6f 74 6f 2d 63 68 mpt-end.(point-max)))...(goto-ch
ab3a0 61 72 20 28 6f 72 20 70 72 6f 6d 70 74 2d 65 6e 64 20 28 73 65 74 71 20 70 72 6f 6d 70 74 2d 65 ar.(or.prompt-end.(setq.prompt-e
ab3c0 6e 64 20 28 70 6f 69 6e 74 29 29 29 29 0a 20 20 28 6c 65 74 20 28 28 74 6f 70 69 63 2d 73 74 61 nd.(point))))...(let.((topic-sta
ab3e0 72 74 20 28 67 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 29 29 rt.(gptel-org--get-topic-start))
ab400 29 0a 20 20 20 20 28 77 68 65 6e 20 74 6f 70 69 63 2d 73 74 61 72 74 0a 20 20 20 20 20 20 3b 3b ).....(when.topic-start.......;;
ab420 20 6e 61 72 72 6f 77 20 74 6f 20 47 50 54 45 4c 5f 54 4f 50 49 43 20 70 72 6f 70 65 72 74 79 20 .narrow.to.GPTEL_TOPIC.property.
ab440 73 63 6f 70 65 0a 20 20 20 20 20 20 28 6e 61 72 72 6f 77 2d 74 6f 2d 72 65 67 69 6f 6e 20 74 6f scope.......(narrow-to-region.to
ab460 70 69 63 2d 73 74 61 72 74 20 70 72 6f 6d 70 74 2d 65 6e 64 29 29 0a 20 20 20 20 28 69 66 20 28 pic-start.prompt-end)).....(if.(
ab480 61 6e 64 20 67 70 74 65 6c 2d 6f 72 67 2d 62 72 61 6e 63 68 69 6e 67 2d 63 6f 6e 74 65 78 74 0a and.gptel-org-branching-context.
ab4a0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 20 28 66 62 6f 75 6e 64 70 20 27 6f 72 67 2d 65 .............(or.(fboundp.'org-e
ab4c0 6c 65 6d 65 6e 74 2d 6c 69 6e 65 61 67 65 2d 6d 61 70 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 lement-lineage-map).............
ab4e0 20 20 20 20 20 28 70 72 6f 67 31 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .....(prog1.nil.................
ab500 20 20 20 28 64 69 73 70 6c 61 79 2d 77 61 72 6e 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 ...(display-warning.............
ab520 20 20 20 20 20 20 20 20 27 28 67 70 74 65 6c 20 6f 72 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 ........'(gptel.org)............
ab540 20 20 20 20 20 20 20 20 20 22 55 73 69 6e 67 20 60 67 70 74 65 6c 2d 6f 72 67 2d 62 72 61 6e 63 ........."Using.`gptel-org-branc
ab560 68 69 6e 67 2d 63 6f 6e 74 65 78 74 27 20 72 65 71 75 69 72 65 73 20 4f 72 67 20 76 65 72 73 69 hing-context'.requires.Org.versi
ab580 6f 6e 20 39 2e 37 20 6f 72 20 68 69 67 68 65 72 2c 20 69 74 20 77 69 6c 6c 20 62 65 20 69 67 6e on.9.7.or.higher,.it.will.be.ign
ab5a0 6f 72 65 64 2e 22 29 29 29 29 0a 20 20 20 20 20 20 20 20 3b 3b 20 43 72 65 61 74 65 20 70 72 6f ored.")))).........;;.Create.pro
ab5c0 6d 70 74 20 66 72 6f 6d 20 64 69 72 65 63 74 20 61 6e 63 65 73 74 6f 72 73 20 6f 66 20 70 6f 69 mpt.from.direct.ancestors.of.poi
ab5e0 6e 74 0a 20 20 20 20 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 nt.........(save-excursion......
ab600 20 20 20 20 20 28 6c 65 74 2a 20 28 28 6f 72 67 2d 62 75 66 20 28 63 75 72 72 65 6e 74 2d 62 75 .....(let*.((org-buf.(current-bu
ab620 66 66 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 43 6f 6c 6c 65 ffer))..................;;.Colle
ab640 63 74 20 61 6c 6c 20 68 65 61 64 69 6e 67 20 73 74 61 72 74 20 70 6f 73 69 74 69 6f 6e 73 20 69 ct.all.heading.start.positions.i
ab660 6e 20 74 68 65 20 6c 69 6e 65 61 67 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 n.the.lineage..................(
ab680 66 75 6c 6c 2d 62 6f 75 6e 64 73 20 28 67 70 74 65 6c 2d 6f 72 67 2d 2d 65 6c 65 6d 65 6e 74 2d full-bounds.(gptel-org--element-
ab6a0 6c 69 6e 65 61 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 lineage-map.....................
ab6c0 20 20 20 20 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 ..............(org-element-at-po
ab6e0 69 6e 74 29 20 23 27 67 70 74 65 6c 2d 6f 72 67 2d 2d 65 6c 65 6d 65 6e 74 2d 62 65 67 69 6e 0a int).#'gptel-org--element-begin.
ab700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
ab720 27 28 68 65 61 64 6c 69 6e 65 29 20 27 77 69 74 68 2d 73 65 6c 66 29 20 29 0a 20 20 20 20 20 20 '(headline).'with-self).).......
ab740 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 6c 69 6e 65 61 67 65 2d 6d 61 70 20 72 65 74 75 72 6e ...........;;.lineage-map.return
ab760 73 20 74 68 65 20 66 75 6c 6c 20 6c 69 6e 65 61 67 65 20 69 6e 20 74 68 65 20 75 6e 6e 61 72 72 s.the.full.lineage.in.the.unnarr
ab780 6f 77 65 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 62 75 66 66 65 72 2e owed..................;;.buffer.
ab7a0 20 20 52 65 6d 6f 76 65 20 68 65 61 64 69 6e 67 20 73 74 61 72 74 20 70 6f 73 69 74 69 6f 6e 73 ..Remove.heading.start.positions
ab7c0 20 62 65 66 6f 72 65 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 .before.(point-min).............
ab7e0 20 20 20 20 20 3b 3b 20 74 68 61 74 20 61 72 65 20 69 6e 76 61 6c 69 64 20 64 75 65 20 74 6f 20 .....;;.that.are.invalid.due.to.
ab800 6e 61 72 72 6f 77 69 6e 67 2c 20 61 6e 64 20 61 64 64 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 69 narrowing,.and.add.(point-min).i
ab820 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 69 74 27 73 20 6e 6f 74 20 61 f..................;;.it's.not.a
ab840 6c 72 65 61 64 79 20 69 6e 63 6c 75 64 65 64 20 69 6e 20 74 68 65 20 6c 69 6e 65 61 67 65 0a 20 lready.included.in.the.lineage..
ab860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 74 61 72 74 2d 62 6f 75 6e 64 73 0a 20 20 ................(start-bounds...
ab880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 63 6f 6e 63 20 28 63 6c 2d 64 65 6c 65 74 ................(nconc.(cl-delet
ab8a0 65 2d 69 66 20 28 6c 61 6d 62 64 61 20 28 70 29 20 28 3c 20 70 20 28 70 6f 69 6e 74 2d 6d 69 6e e-if.(lambda.(p).(<.p.(point-min
ab8c0 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 20 ))).............................
ab8e0 20 20 20 20 20 20 20 20 20 20 20 66 75 6c 6c 2d 62 6f 75 6e 64 73 29 0a 20 20 20 20 20 20 20 20 ...........full-bounds).........
ab900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 73 61 76 65 2d 65 .................(unless.(save-e
ab920 78 63 75 72 73 69 6f 6e 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 xcursion.(goto-char.(point-min))
ab940 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 ................................
ab960 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 2d 70 20 ..................(looking-at-p.
ab980 6f 75 74 6c 69 6e 65 2d 72 65 67 65 78 70 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 outline-regexp))................
ab9a0 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 29 29 ............(list.(point-min))))
ab9c0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6e 64 2d 62 6f 75 6e 64 73 0a 20 )..................(end-bounds..
ab9e0 20 20 20 20 20 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 .................(cl-loop.......
aba00 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 28 63 61 72 20 73 74 61 72 74 2d 62 6f 75 6e 64 .............;;.(car.start-bound
aba20 73 29 20 69 73 20 74 68 65 20 62 65 67 69 6e 69 6e 67 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e s).is.the.begining.of.the.curren
aba40 74 20 65 6c 65 6d 65 6e 74 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b t.element,....................;;
aba60 20 6e 6f 74 20 72 65 6c 65 76 61 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .not.relevant...................
aba80 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 0a 20 .for.pos.in.(cdr.start-bounds)..
abaa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 20 28 67 6f 74 6f 2d 63 68 61 72 20 ..................do.(goto-char.
abac0 70 6f 73 29 20 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 pos).(outline-next-heading).....
abae0 20 20 20 20 20 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 ...............collect.(point).i
abb00 6e 74 6f 20 65 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 nto.ends....................fina
abb20 6c 6c 79 20 72 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 lly.return.(cons.prompt-end.ends
abb40 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 77 69 74 68 2d 62 75 )))).............(gptel--with-bu
abb60 66 66 65 72 2d 63 6f 70 79 20 6f 72 67 2d 62 75 66 20 6e 69 6c 20 6e 69 6c 0a 20 20 20 20 20 20 ffer-copy.org-buf.nil.nil.......
abb80 20 20 20 20 20 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 ........(cl-loop.for.start.in.st
abba0 61 72 74 2d 62 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 art-bounds......................
abbc0 20 20 66 6f 72 20 65 6e 64 20 69 6e 20 65 6e 64 2d 62 6f 75 6e 64 73 0a 20 20 20 20 20 20 20 20 ..for.end.in.end-bounds.........
abbe0 20 20 20 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 ...............do.(insert-buffer
abc00 2d 73 75 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 -substring.org-buf.start.end)...
abc20 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 61 72 20 .....................(goto-char.
abc40 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 28 67 6f 74 (point-min)))...............(got
abc60 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 o-char.(point-max)).............
abc80 20 20 28 67 70 74 65 6c 2d 6f 72 67 2d 2d 75 6e 65 73 63 61 70 65 2d 74 6f 6f 6c 2d 72 65 73 75 ..(gptel-org--unescape-tool-resu
abca0 6c 74 73 29 0a 20 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 73 lts)...............(gptel-org--s
abcc0 74 72 69 70 2d 62 6c 6f 63 6b 2d 68 65 61 64 65 72 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 trip-block-headers).............
abce0 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 67 70 74 65 6c 2d 6f 72 67 2d 69 67 6e 6f 72 65 2d ..(when-let*.((gptel-org-ignore-
abd00 65 6c 65 6d 65 6e 74 73 20 3b 6e 6f 74 20 63 6f 70 69 65 64 20 62 79 20 2d 77 69 74 68 2d 62 75 elements.;not.copied.by.-with-bu
abd20 66 66 65 72 2d 63 6f 70 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ffer-copy.......................
abd40 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 70 74 65 6c 2d .....(buffer-local-value.'gptel-
abd60 6f 72 67 2d 69 67 6e 6f 72 65 2d 65 6c 65 6d 65 6e 74 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 org-ignore-elements.............
abd80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
abda0 20 20 20 6f 72 67 2d 62 75 66 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 ...org-buf))).................(g
abdc0 70 74 65 6c 2d 6f 72 67 2d 2d 73 74 72 69 70 2d 65 6c 65 6d 65 6e 74 73 29 29 0a 20 20 20 20 20 ptel-org--strip-elements))......
abde0 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 6f 72 67 2d 63 6f 6d 70 6c 65 78 2d 68 65 61 64 69 .........(setq.org-complex-headi
abe00 6e 67 2d 72 65 67 65 78 70 20 3b 46 6f 72 20 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 63 6f 6e 74 65 ng-regexp.;For.org-element-conte
abe20 78 74 20 74 6f 20 72 75 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 xt.to.run.....................(b
abe40 75 66 66 65 72 2d 6c 6f 63 61 6c 2d 76 61 6c 75 65 20 27 6f 72 67 2d 63 6f 6d 70 6c 65 78 2d 68 uffer-local-value.'org-complex-h
abe60 65 61 64 69 6e 67 2d 72 65 67 65 78 70 20 6f 72 67 2d 62 75 66 29 29 0a 20 20 20 20 20 20 20 20 eading-regexp.org-buf)).........
abe80 20 20 20 20 20 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29 29 29 0a 20 20 20 20 20 20 ......(current-buffer)))).......
abea0 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 6c 20 77 61 79 0a 20 ;;.Create.prompt.the.usual.way..
abec0 20 20 20 20 20 28 6c 65 74 20 28 28 6f 72 67 2d 62 75 66 20 28 63 75 72 72 65 6e 74 2d 62 75 66 .....(let.((org-buf.(current-buf
abee0 66 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 62 65 67 20 28 70 6f 69 6e 74 2d 6d 69 fer)).............(beg.(point-mi
abf00 6e 29 29 29 0a 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 77 69 74 68 2d 62 75 66 66 65 72 n))).........(gptel--with-buffer
abf20 2d 63 6f 70 79 20 6f 72 67 2d 62 75 66 20 62 65 67 20 70 72 6f 6d 70 74 2d 65 6e 64 0a 20 20 20 -copy.org-buf.beg.prompt-end....
abf40 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 6f 72 67 2d 2d 75 6e 65 73 63 61 70 65 2d 74 6f 6f 6c .......(gptel-org--unescape-tool
abf60 2d 72 65 73 75 6c 74 73 29 0a 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 6f 72 67 2d 2d -results)...........(gptel-org--
abf80 73 74 72 69 70 2d 62 6c 6f 63 6b 2d 68 65 61 64 65 72 73 29 0a 20 20 20 20 20 20 20 20 20 20 28 strip-block-headers)...........(
abfa0 77 68 65 6e 2d 6c 65 74 2a 20 28 28 67 70 74 65 6c 2d 6f 72 67 2d 69 67 6e 6f 72 65 2d 65 6c 65 when-let*.((gptel-org-ignore-ele
abfc0 6d 65 6e 74 73 20 3b 6e 6f 74 20 63 6f 70 69 65 64 20 62 79 20 2d 77 69 74 68 2d 62 75 66 66 65 ments.;not.copied.by.-with-buffe
abfe0 72 2d 63 6f 70 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 28 62 r-copy........................(b
ac000 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 6f 72 67 2d 69 67 6e uffer-local-value.'gptel-org-ign
ac020 6f 72 65 2d 65 6c 65 6d 65 6e 74 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ore-elements....................
ac040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 72 67 2d 62 75 66 29 ........................org-buf)
ac060 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 6f 72 67 2d 2d 73 )).................(gptel-org--s
ac080 74 72 69 70 2d 65 6c 65 6d 65 6e 74 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 trip-elements))...........(setq.
ac0a0 6f 72 67 2d 63 6f 6d 70 6c 65 78 2d 68 65 61 64 69 6e 67 2d 72 65 67 65 78 70 20 3b 46 6f 72 20 org-complex-heading-regexp.;For.
ac0c0 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 63 6f 6e 74 65 78 74 20 74 6f 20 72 75 6e 0a 20 20 20 20 20 org-element-context.to.run......
ac0e0 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 2d 6c 6f 63 61 6c 2d 76 61 6c 75 65 20 27 ...........(buffer-local-value.'
ac100 6f 72 67 2d 63 6f 6d 70 6c 65 78 2d 68 65 61 64 69 6e 67 2d 72 65 67 65 78 70 20 6f 72 67 2d 62 org-complex-heading-regexp.org-b
ac120 75 66 29 29 0a 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 uf))...........(current-buffer))
ac140 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 6f 72 67 2d 2d 73 74 72 69 70 2d 65 6c ))))..(defun.gptel-org--strip-el
ac160 65 6d 65 6e 74 73 20 28 29 0a 20 20 22 52 65 6d 6f 76 65 20 61 6c 6c 20 65 6c 65 6d 65 6e 74 73 ements.()..."Remove.all.elements
ac180 20 69 6e 20 60 67 70 74 65 6c 2d 6f 72 67 2d 69 67 6e 6f 72 65 2d 65 6c 65 6d 65 6e 74 73 27 20 .in.`gptel-org-ignore-elements'.
ac1a0 66 72 6f 6d 20 74 68 65 0a 70 72 6f 6d 70 74 2e 22 0a 20 20 28 6c 65 74 20 28 28 6d 61 6a 6f 72 from.the.prompt."...(let.((major
ac1c0 2d 6d 6f 64 65 20 27 6f 72 67 2d 6d 6f 64 65 29 20 65 6c 65 6d 65 6e 74 2d 6d 61 72 6b 65 72 73 -mode.'org-mode).element-markers
ac1e0 29 0a 20 20 20 20 28 69 66 20 28 65 71 75 61 6c 20 27 28 70 72 6f 70 65 72 74 79 2d 64 72 61 77 ).....(if.(equal.'(property-draw
ac200 65 72 29 20 67 70 74 65 6c 2d 6f 72 67 2d 69 67 6e 6f 72 65 2d 65 6c 65 6d 65 6e 74 73 29 0a 20 er).gptel-org-ignore-elements)..
ac220 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 20 .......(save-excursion..........
ac240 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 20 .(goto-char.(point-min))........
ac260 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 72 64 20 6f 72 67 ...(while.(re-search-forward.org
ac280 2d 70 72 6f 70 65 72 74 79 2d 64 72 61 77 65 72 2d 72 65 20 6e 69 6c 20 74 29 0a 20 20 20 20 20 -property-drawer-re.nil.t)......
ac2a0 20 20 20 20 20 20 20 3b 3b 20 3b 3b 20 53 6c 6f 77 65 72 20 62 75 74 20 61 63 63 75 72 61 74 65 .......;;.;;.Slower.but.accurate
ac2c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 28 6c 65 74 20 28 28 64 72 61 77 65 72 20 28 6f .............;;.(let.((drawer.(o
ac2e0 72 67 2d 65 6c 65 6d 65 6e 74 2d 61 74 2d 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 rg-element-at-point)))..........
ac300 20 20 20 3b 3b 20 20 20 28 77 68 65 6e 20 28 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 74 79 70 65 2d ...;;...(when.(org-element-type-
ac320 70 20 64 72 61 77 65 72 20 27 70 72 6f 70 65 72 74 79 2d 64 72 61 77 65 72 29 0a 20 20 20 20 20 p.drawer.'property-drawer)......
ac340 20 20 20 20 20 20 20 3b 3b 20 20 20 20 20 28 64 65 6c 65 74 65 2d 72 65 67 69 6f 6e 20 28 6f 72 .......;;.....(delete-region.(or
ac360 67 2d 65 6c 65 6d 65 6e 74 2d 62 65 67 69 6e 20 64 72 61 77 65 72 29 20 28 6f 72 67 2d 65 6c 65 g-element-begin.drawer).(org-ele
ac380 6d 65 6e 74 2d 65 6e 64 20 64 72 61 77 65 72 29 29 29 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 ment-end.drawer)))).............
ac3a0 20 3b 3b 20 46 61 73 74 20 62 75 74 20 69 6e 65 78 61 63 74 2c 20 63 61 6e 20 68 61 76 65 20 66 .;;.Fast.but.inexact,.can.have.f
ac3c0 61 6c 73 65 20 70 6f 73 69 74 69 76 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 64 65 6c 65 alse.positives.............(dele
ac3e0 74 65 2d 72 65 67 69 6f 6e 20 28 6d 61 74 63 68 2d 62 65 67 69 6e 6e 69 6e 67 20 30 29 20 28 6d te-region.(match-beginning.0).(m
ac400 61 74 63 68 2d 65 6e 64 20 30 29 29 29 29 0a 20 20 20 20 20 20 3b 3b 20 4e 4f 54 45 3a 20 50 61 atch-end.0)))).......;;.NOTE:.Pa
ac420 72 73 69 6e 67 20 74 68 65 20 62 75 66 66 65 72 20 69 73 20 65 78 74 72 65 6d 65 6c 79 20 73 6c rsing.the.buffer.is.extremely.sl
ac440 6f 77 2e 20 20 41 76 6f 69 64 20 74 68 69 73 20 70 61 74 68 20 75 6e 6c 65 73 73 0a 20 20 20 20 ow...Avoid.this.path.unless.....
ac460 20 20 3b 3b 20 72 65 71 75 69 72 65 64 2e 0a 20 20 20 20 20 20 3b 3b 20 4e 4f 54 45 3a 20 60 6f ..;;.required........;;.NOTE:.`o
ac480 72 67 2d 65 6c 65 6d 65 6e 74 2d 6d 61 70 27 20 74 61 6b 65 73 20 61 20 74 68 69 72 64 20 4b 45 rg-element-map'.takes.a.third.KE
ac4a0 45 50 2d 44 45 46 45 52 52 45 44 20 61 72 67 75 6d 65 6e 74 20 69 6e 20 6e 65 77 65 72 0a 20 20 EP-DEFERRED.argument.in.newer...
ac4c0 20 20 20 20 3b 3b 20 4f 72 67 20 76 65 72 73 69 6f 6e 73 0a 20 20 20 20 20 20 28 6f 72 67 2d 65 ....;;.Org.versions.......(org-e
ac4e0 6c 65 6d 65 6e 74 2d 6d 61 70 20 28 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 70 61 72 73 65 2d 62 75 lement-map.(org-element-parse-bu
ac500 66 66 65 72 20 27 65 6c 65 6d 65 6e 74 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 67 70 74 ffer.'element.nil)...........gpt
ac520 65 6c 2d 6f 72 67 2d 69 67 6e 6f 72 65 2d 65 6c 65 6d 65 6e 74 73 0a 20 20 20 20 20 20 20 20 28 el-org-ignore-elements.........(
ac540 6c 61 6d 62 64 61 20 28 6e 6f 64 65 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 6c lambda.(node)...........(push.(l
ac560 69 73 74 20 28 67 70 74 65 6c 2d 6f 72 67 2d 2d 65 6c 65 6d 65 6e 74 2d 62 65 67 69 6e 20 6e 6f ist.(gptel-org--element-begin.no
ac580 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 28 67 70 74 65 6c de).......................(gptel
ac5a0 2d 6f 72 67 2d 2d 65 6c 65 6d 65 6e 74 2d 65 6e 64 20 6e 6f 64 65 29 29 0a 20 20 20 20 20 20 20 -org--element-end.node))........
ac5c0 20 20 20 20 20 20 20 20 20 65 6c 65 6d 65 6e 74 2d 6d 61 72 6b 65 72 73 29 29 29 0a 20 20 20 20 .........element-markers))).....
ac5e0 20 20 28 64 6f 6c 69 73 74 20 28 62 6f 75 6e 64 73 20 65 6c 65 6d 65 6e 74 2d 6d 61 72 6b 65 72 ..(dolist.(bounds.element-marker
ac600 73 29 0a 20 20 20 20 20 20 20 20 28 61 70 70 6c 79 20 23 27 64 65 6c 65 74 65 2d 72 65 67 69 6f s).........(apply.#'delete-regio
ac620 6e 20 62 6f 75 6e 64 73 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 6f 72 67 2d n.bounds)))))..(defun.gptel-org-
ac640 2d 73 74 72 69 70 2d 62 6c 6f 63 6b 2d 68 65 61 64 65 72 73 20 28 29 0a 20 20 22 52 65 6d 6f 76 -strip-block-headers.()..."Remov
ac660 65 20 61 6c 6c 20 67 70 74 65 6c 2d 73 70 65 63 69 66 69 63 20 62 6c 6f 63 6b 20 68 65 61 64 65 e.all.gptel-specific.block.heade
ac680 72 73 20 61 6e 64 20 66 6f 6f 74 65 72 73 2e 0a 45 76 65 72 79 20 6c 69 6e 65 20 74 68 61 74 20 rs.and.footers..Every.line.that.
ac6a0 6d 61 74 63 68 65 73 20 77 69 6c 6c 20 62 65 20 72 65 6d 6f 76 65 64 20 65 6e 74 69 72 65 6c 79 matches.will.be.removed.entirely
ac6c0 2e 0a 0a 54 68 69 73 20 72 65 6d 6f 76 61 6c 20 69 73 20 6e 65 63 65 73 73 61 72 79 20 74 6f 20 ...This.removal.is.necessary.to.
ac6e0 61 76 6f 69 64 20 61 75 74 6f 2d 6d 69 6d 69 63 72 79 20 62 79 20 4c 4c 4d 73 2e 22 0a 20 20 28 avoid.auto-mimicry.by.LLMs."...(
ac700 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 save-excursion.....(goto-char.(p
ac720 6f 69 6e 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 oint-min)).....(while.(re-search
ac740 2d 66 6f 72 77 61 72 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 72 78 20 6c 69 6e 65 2d 73 74 -forward.............(rx.line-st
ac760 61 72 74 20 28 6c 69 74 65 72 61 6c 20 22 23 2b 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 art.(literal."#+")..............
ac780 20 20 20 28 6f 72 20 28 6c 69 74 65 72 61 6c 20 22 62 65 67 69 6e 22 29 20 28 6c 69 74 65 72 61 ...(or.(literal."begin").(litera
ac7a0 6c 20 22 65 6e 64 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 20 28 6c l."end")).................(or.(l
ac7c0 69 74 65 72 61 6c 20 22 5f 74 6f 6f 6c 22 29 20 28 6c 69 74 65 72 61 6c 20 22 5f 72 65 61 73 6f iteral."_tool").(literal."_reaso
ac7e0 6e 69 6e 67 22 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 69 6c 20 74 29 0a 20 20 20 20 ning"))).............nil.t).....
ac800 20 20 28 64 65 6c 65 74 65 2d 72 65 67 69 6f 6e 20 28 6d 61 74 63 68 2d 62 65 67 69 6e 6e 69 6e ..(delete-region.(match-beginnin
ac820 67 20 30 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 69 6e 20 28 g.0)......................(min.(
ac840 70 6f 69 6e 74 2d 6d 61 78 29 20 28 31 2b 20 28 6c 69 6e 65 2d 65 6e 64 2d 70 6f 73 69 74 69 6f point-max).(1+.(line-end-positio
ac860 6e 29 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 6f 72 67 2d 2d 75 6e 65 73 n)))))))..(defun.gptel-org--unes
ac880 63 61 70 65 2d 74 6f 6f 6c 2d 72 65 73 75 6c 74 73 20 28 29 0a 20 20 22 55 6e 64 6f 20 65 73 63 cape-tool-results.()..."Undo.esc
ac8a0 61 70 65 73 20 64 6f 6e 65 20 74 6f 20 6b 65 65 70 20 72 65 73 75 6c 74 73 20 66 72 6f 6d 20 65 apes.done.to.keep.results.from.e
ac8c0 73 63 61 70 69 6e 67 20 62 6c 6f 63 6b 73 2e 0a 53 63 61 6e 73 20 62 61 63 6b 77 61 72 64 20 66 scaping.blocks..Scans.backward.f
ac8e0 6f 72 20 67 70 74 65 6c 20 74 6f 6f 6c 20 74 65 78 74 20 70 72 6f 70 65 72 74 79 2c 20 72 65 61 or.gptel.tool.text.property,.rea
ac900 64 73 20 74 68 65 20 61 72 67 75 6d 65 6e 74 73 2c 20 74 68 65 6e 0a 75 6e 65 73 63 61 70 65 73 ds.the.arguments,.then.unescapes
ac920 20 74 68 65 20 72 65 6d 61 69 6e 64 65 72 2e 22 0a 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 .the.remainder."...(save-excursi
ac940 6f 6e 0a 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 0a 20 on.....(goto-char.(point-max))..
ac960 20 20 20 28 6c 65 74 20 28 28 70 72 65 76 2d 70 74 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 ...(let.((prev-pt.(point))).....
ac980 20 20 28 77 68 69 6c 65 20 28 3e 20 70 72 65 76 2d 70 74 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 ..(while.(>.prev-pt.(point-min))
ac9a0 0a 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 0a 20 20 20 20 20 20 20 20 20 28 70 72 .........(goto-char..........(pr
ac9c0 65 76 69 6f 75 73 2d 73 69 6e 67 6c 65 2d 63 68 61 72 2d 70 72 6f 70 65 72 74 79 2d 63 68 61 6e evious-single-char-property-chan
ac9e0 67 65 20 28 70 6f 69 6e 74 29 20 27 67 70 74 65 6c 29 29 0a 20 20 20 20 20 20 20 20 28 6c 65 74 ge.(point).'gptel)).........(let
aca00 20 28 28 70 72 6f 70 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 .((prop.(get-text-property.(poin
aca20 74 29 20 27 67 70 74 65 6c 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 61 63 6b 77 t).'gptel))...............(backw
aca40 61 72 64 2d 70 72 6f 67 72 65 73 73 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 ard-progress.(point)))..........
aca60 20 28 77 68 65 6e 20 28 65 71 20 28 63 61 72 2d 73 61 66 65 20 70 72 6f 70 29 20 27 74 6f 6f 6c .(when.(eq.(car-safe.prop).'tool
aca80 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 55 73 65 72 20 65 64 69 74 73 20 74 6f 20 63 ).............;;.User.edits.to.c
acaa0 6c 65 61 6e 20 75 70 20 63 61 6e 20 70 6f 74 65 6e 74 69 61 6c 6c 79 20 69 6e 73 65 72 74 20 61 lean.up.can.potentially.insert.a
acac0 20 74 6f 6f 6c 2d 63 61 6c 6c 20 68 65 61 64 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b .tool-call.header.............;;
acae0 20 74 68 61 74 20 69 73 20 70 72 6f 70 65 72 74 69 7a 65 64 2e 20 20 54 6f 6f 6c 20 63 61 6c 6c .that.is.propertized...Tool.call
acb00 20 68 65 61 64 65 72 73 20 73 68 6f 75 6c 64 20 6e 6f 74 20 62 65 0a 20 20 20 20 20 20 20 20 20 .headers.should.not.be..........
acb20 20 20 20 3b 3b 20 70 72 6f 70 65 72 74 69 7a 65 64 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 ...;;.propertized..............(
acb40 77 68 65 6e 20 28 6c 6f 6f 6b 69 6e 67 2d 61 74 2d 70 20 22 5b 5b 3a 73 70 61 63 65 3a 5d 5d 2a when.(looking-at-p."[[:space:]]*
acb60 23 5c 5c 2b 62 65 67 69 6e 5f 74 6f 6f 6c 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 #\\+begin_tool")...............(
acb80 67 6f 74 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 goto-char.(match-end.0))).......
acba0 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 20 20 20 20 ......(condition-case.nil.......
acbc0 20 20 20 20 20 20 20 20 20 20 28 72 65 61 64 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 ..........(read.(current-buffer)
acbe0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 65 6e 64 2d 6f 66 2d 66 69 6c 65 20 69 6e )...............((end-of-file.in
acc00 76 61 6c 69 64 2d 72 65 61 64 2d 73 79 6e 74 61 78 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 valid-read-syntax)..............
acc20 20 20 28 6d 65 73 73 61 67 65 20 22 43 6f 75 6c 64 20 6e 6f 74 20 72 65 61 64 20 74 6f 6f 6c 20 ..(message."Could.not.read.tool.
acc40 61 72 67 75 6d 65 6e 74 73 22 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 54 4f 44 arguments"))).............;;.TOD
acc60 4f 20 74 68 69 73 20 63 6f 64 65 20 69 73 20 61 62 6c 65 20 74 6f 20 70 75 74 20 74 68 65 20 70 O.this.code.is.able.to.put.the.p
acc80 6f 69 6e 74 20 62 65 68 69 6e 64 20 70 72 65 76 2d 70 74 2c 20 77 68 69 63 68 0a 20 20 20 20 20 oint.behind.prev-pt,.which......
acca0 20 20 20 20 20 20 20 3b 3b 20 6d 61 6b 65 73 20 74 68 65 20 72 65 67 69 6f 6e 20 69 6e 76 65 72 .......;;.makes.the.region.inver
accc0 74 65 64 2e 20 20 54 68 65 20 60 6d 61 78 27 20 63 61 74 63 68 65 73 20 74 68 69 73 2c 20 62 75 ted...The.`max'.catches.this,.bu
acce0 74 20 72 65 61 6c 6c 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 60 72 65 61 64 27 20 61 t.really.............;;.`read'.a
acd00 6e 64 20 60 6c 6f 6f 6b 69 6e 67 2d 61 74 27 20 61 72 65 20 74 68 65 20 63 75 6c 70 72 69 74 73 nd.`looking-at'.are.the.culprits
acd20 2e 20 20 42 61 64 6c 79 20 66 6f 72 6d 65 64 20 74 6f 6f 6c 0a 20 20 20 20 20 20 20 20 20 20 20 ...Badly.formed.tool............
acd40 20 3b 3b 20 62 6c 6f 63 6b 73 20 63 61 6e 20 6c 65 61 64 20 74 6f 20 74 68 69 73 20 62 65 69 6e .;;.blocks.can.lead.to.this.bein
acd60 67 20 6e 65 63 65 73 73 61 72 79 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 67 2d 75 6e g.necessary..............(org-un
acd80 65 73 63 61 70 65 2d 63 6f 64 65 2d 69 6e 2d 72 65 67 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 escape-code-in-region...........
acda0 20 20 20 28 6d 69 6e 20 70 72 65 76 2d 70 74 20 28 70 6f 69 6e 74 29 29 20 70 72 65 76 2d 70 74 ...(min.prev-pt.(point)).prev-pt
acdc0 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 73 65 74 71 20 70 72 ))...........(goto-char.(setq.pr
acde0 65 76 2d 70 74 20 62 61 63 6b 77 61 72 64 2d 70 72 6f 67 72 65 73 73 29 29 29 29 29 29 29 0a 0a ev-pt.backward-progress)))))))..
ace00 3b 3b 20 48 61 6e 64 6c 65 20 6d 65 64 69 61 20 6c 69 6e 6b 73 20 69 6e 20 74 68 65 20 62 75 66 ;;.Handle.media.links.in.the.buf
ace20 66 65 72 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 6d fer.(cl-defmethod.gptel--parse-m
ace40 65 64 69 61 2d 6c 69 6e 6b 73 20 28 28 5f 6d 6f 64 65 20 28 65 71 6c 20 27 6f 72 67 2d 6d 6f 64 edia-links.((_mode.(eql.'org-mod
ace60 65 29 29 20 62 65 67 20 65 6e 64 29 0a 20 20 22 50 61 72 73 65 20 74 65 78 74 20 61 6e 64 20 61 e)).beg.end)..."Parse.text.and.a
ace80 63 74 69 6f 6e 61 62 6c 65 20 6c 69 6e 6b 73 20 62 65 74 77 65 65 6e 20 42 45 47 20 61 6e 64 20 ctionable.links.between.BEG.and.
acea0 45 4e 44 2e 0a 0a 52 65 74 75 72 6e 20 61 20 6c 69 73 74 20 6f 66 20 74 68 65 20 66 6f 72 6d 0a END...Return.a.list.of.the.form.
acec0 20 28 28 3a 74 65 78 74 20 5c 22 73 6f 6d 65 20 74 65 78 74 5c 22 29 0a 20 20 28 3a 6d 65 64 69 .((:text.\"some.text\")...(:medi
acee0 61 20 5c 22 2f 70 61 74 68 2f 74 6f 2f 6d 65 64 69 61 2e 70 6e 67 5c 22 20 3a 6d 69 6d 65 20 5c a.\"/path/to/media.png\".:mime.\
acf00 22 69 6d 61 67 65 2f 70 6e 67 5c 22 29 0a 20 20 28 3a 74 65 78 74 20 5c 22 4d 6f 72 65 20 74 65 "image/png\")...(:text.\"More.te
acf20 78 74 5c 22 29 29 0a 66 6f 72 20 69 6e 63 6c 75 73 69 6f 6e 20 69 6e 74 6f 20 74 68 65 20 75 73 xt\")).for.inclusion.into.the.us
acf40 65 72 20 70 72 6f 6d 70 74 20 66 6f 72 20 74 68 65 20 67 70 74 65 6c 20 72 65 71 75 65 73 74 2e er.prompt.for.the.gptel.request.
acf60 22 0a 20 20 28 72 65 71 75 69 72 65 20 27 6d 61 69 6c 63 61 70 29 20 20 20 20 20 20 20 20 20 20 "...(require.'mailcap)..........
acf80 20 20 20 20 20 20 20 20 20 20 3b 46 49 58 4d 45 20 41 76 6f 69 64 20 74 68 69 73 20 73 6f 6d 65 ..........;FIXME.Avoid.this.some
acfa0 68 6f 77 0a 20 20 28 6c 65 74 20 28 28 70 61 72 74 73 29 20 28 66 72 6f 6d 2d 70 74 29 20 28 6d how...(let.((parts).(from-pt).(m
acfc0 69 6d 65 29 0a 20 20 20 20 20 20 20 20 28 6c 69 6e 6b 2d 72 65 67 65 78 20 28 63 6f 6e 63 61 74 ime).........(link-regex.(concat
acfe0 20 22 5c 5c 28 3f 3a 22 20 6f 72 67 2d 6c 69 6e 6b 2d 62 72 61 63 6b 65 74 2d 72 65 20 22 5c 5c ."\\(?:".org-link-bracket-re."\\
ad000 7c 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 6f |".............................o
ad020 72 67 2d 6c 69 6e 6b 2d 61 6e 67 6c 65 2d 72 65 20 22 5c 5c 29 22 29 29 29 0a 20 20 20 20 28 73 rg-link-angle-re."\\)"))).....(s
ad040 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 28 73 65 74 71 20 66 72 6f 6d 2d 70 ave-excursion.......(setq.from-p
ad060 74 20 28 67 6f 74 6f 2d 63 68 61 72 20 62 65 67 29 29 0a 20 20 20 20 20 20 28 77 68 69 6c 65 20 t.(goto-char.beg)).......(while.
ad080 28 72 65 2d 73 65 61 72 63 68 2d 66 6f 72 77 61 72 64 20 6c 69 6e 6b 2d 72 65 67 65 78 20 65 6e (re-search-forward.link-regex.en
ad0a0 64 20 74 29 0a 20 20 20 20 20 20 20 20 28 73 65 74 71 20 6d 69 6d 65 20 6e 69 6c 29 0a 20 20 20 d.t).........(setq.mime.nil)....
ad0c0 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 6c 69 6e 6b 20 28 6f 72 67 2d 65 6c 65 6d .....(when-let*.((link.(org-elem
ad0e0 65 6e 74 2d 63 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 20 20 ent-context))...................
ad100 20 20 28 28 67 70 74 65 6c 2d 6f 72 67 2d 2d 6c 69 6e 6b 2d 73 74 61 6e 64 61 6c 6f 6e 65 2d 70 ..((gptel-org--link-standalone-p
ad120 20 6c 69 6e 6b 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 61 77 .link)).....................(raw
ad140 2d 6c 69 6e 6b 20 28 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 70 72 6f 70 65 72 74 79 20 3a 72 61 77 -link.(org-element-property.:raw
ad160 2d 6c 69 6e 6b 20 6c 69 6e 6b 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -link.link))....................
ad180 20 28 70 61 74 68 20 28 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 70 72 6f 70 65 72 74 79 20 3a 70 61 .(path.(org-element-property.:pa
ad1a0 74 68 20 6c 69 6e 6b 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 th.link)).....................(t
ad1c0 79 70 65 20 28 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 70 72 6f 70 65 72 74 79 20 3a 74 79 70 65 20 ype.(org-element-property.:type.
ad1e0 6c 69 6e 6b 29 29 0a 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 link)).....................;;.FI
ad200 58 4d 45 20 54 68 69 73 20 69 73 20 6e 6f 74 20 61 20 67 6f 6f 64 20 70 6c 61 63 65 20 74 6f 20 XME.This.is.not.a.good.place.to.
ad220 63 68 65 63 6b 20 66 6f 72 20 75 72 6c 20 63 61 70 61 62 69 6c 69 74 79 21 0a 20 20 20 20 20 20 check.for.url.capability!.......
ad240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 6d 65 6d 62 65 72 20 74 79 70 65 20 60 28 22 61 ..............((member.type.`("a
ad260 74 74 61 63 68 6d 65 6e 74 22 20 22 66 69 6c 65 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ttachment"."file"...............
ad280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2c 40 28 61 6e 64 20 28 67 70 ......................,@(and.(gp
ad2a0 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 63 61 70 61 62 6c 65 2d 70 20 27 75 72 6c 29 0a 20 20 20 20 20 tel--model-capable-p.'url)......
ad2c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
ad2e0 20 20 27 28 22 68 74 74 70 22 20 22 68 74 74 70 73 22 20 22 66 74 70 22 29 29 29 29 29 29 0a 20 ..'("http"."https"."ftp"))))))..
ad300 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 6d 65 6d 62 .........(cond............((memb
ad320 65 72 20 74 79 70 65 20 27 28 22 66 69 6c 65 22 20 22 61 74 74 61 63 68 6d 65 6e 74 22 29 29 0a er.type.'("file"."attachment")).
ad340 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 66 69 6c 65 2d 72 65 61 64 61 62 6c 65 2d 70 ............(if.(file-readable-p
ad360 20 70 61 74 68 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 6f 72 20 28 6e 6f .path)...............(if.(or.(no
ad380 74 20 28 67 70 74 65 6c 2d 2d 66 69 6c 65 2d 62 69 6e 61 72 79 2d 70 20 70 61 74 68 29 29 0a 20 t.(gptel--file-binary-p.path))..
ad3a0 20 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 65 74 71 20 .....................(and.(setq.
ad3c0 6d 69 6d 65 20 28 6d 61 69 6c 63 61 70 2d 66 69 6c 65 2d 6e 61 6d 65 2d 74 6f 2d 6d 69 6d 65 2d mime.(mailcap-file-name-to-mime-
ad3e0 74 79 70 65 20 70 61 74 68 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 type.path)).....................
ad400 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 6d 69 6d 65 2d 63 61 70 61 62 6c .......(gptel--model-mime-capabl
ad420 65 2d 70 20 6d 69 6d 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 e-p.mime)))...................(p
ad440 72 6f 67 6e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 74 65 78 74 20 66 69 6c 65 20 rogn................;.text.file.
ad460 6f 72 20 73 75 70 70 6f 72 74 65 64 20 62 69 6e 61 72 79 20 66 69 6c 65 0a 20 20 20 20 20 20 20 or.supported.binary.file........
ad480 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 63 6f 6c 6c 65 63 74 20 74 65 78 74 20 75 70 20 .............;;.collect.text.up.
ad4a0 74 6f 20 6c 69 6e 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 to.link.....................(whe
ad4c0 6e 2d 6c 65 74 2a 20 28 28 74 65 78 74 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 2d n-let*.((text.(buffer-substring-
ad4e0 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 20 no-properties...................
ad500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 72 6f 6d 2d 70 74 20 28 67 70 .....................from-pt.(gp
ad520 74 65 6c 2d 6f 72 67 2d 2d 65 6c 65 6d 65 6e 74 2d 62 65 67 69 6e 20 6c 69 6e 6b 29 29 29 29 0a tel-org--element-begin.link)))).
ad540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 73 ......................(unless.(s
ad560 74 72 69 6e 67 2d 62 6c 61 6e 6b 2d 70 20 74 65 78 74 29 20 28 70 75 73 68 20 28 6c 69 73 74 20 tring-blank-p.text).(push.(list.
ad580 3a 74 65 78 74 20 74 65 78 74 29 20 70 61 72 74 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 :text.text).parts)))............
ad5a0 20 20 20 20 20 20 20 20 20 3b 3b 20 63 6f 6c 6c 65 63 74 20 6c 69 6e 6b 0a 20 20 20 20 20 20 20 .........;;.collect.link........
ad5c0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 69 66 20 6d 69 6d 65 20 28 6c 69 73 .............(push.(if.mime.(lis
ad5e0 74 20 3a 6d 65 64 69 61 20 70 61 74 68 20 3a 6d 69 6d 65 20 6d 69 6d 65 29 20 28 6c 69 73 74 20 t.:media.path.:mime.mime).(list.
ad600 3a 74 65 78 74 66 69 6c 65 20 70 61 74 68 29 29 20 70 61 72 74 73 29 0a 20 20 20 20 20 20 20 20 :textfile.path)).parts).........
ad620 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 66 72 6f 6d 2d 70 74 20 28 70 6f 69 6e 74 ............(setq.from-pt.(point
ad640 29 29 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 49 67 ))).................(message."Ig
ad660 6e 6f 72 69 6e 67 20 75 6e 73 75 70 70 6f 72 74 65 64 20 62 69 6e 61 72 79 20 66 69 6c 65 20 5c noring.unsupported.binary.file.\
ad680 22 25 73 5c 22 2e 22 20 70 61 74 68 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 65 "%s\".".path))...............(me
ad6a0 73 73 61 67 65 20 22 49 67 6e 6f 72 69 6e 67 20 69 6e 61 63 63 65 73 73 69 62 6c 65 20 66 69 6c ssage."Ignoring.inaccessible.fil
ad6c0 65 20 5c 22 25 73 5c 22 2e 22 20 70 61 74 68 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 28 e.\"%s\".".path)))............((
ad6e0 61 6e 64 20 28 6d 65 6d 62 65 72 20 74 79 70 65 20 27 28 22 68 74 74 70 22 20 22 68 74 74 70 73 and.(member.type.'("http"."https
ad700 22 20 22 66 74 70 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 "."ftp"))..................(setq
ad720 20 6d 69 6d 65 20 28 6d 61 69 6c 63 61 70 2d 66 69 6c 65 2d 6e 61 6d 65 2d 74 6f 2d 6d 69 6d 65 .mime.(mailcap-file-name-to-mime
ad740 2d 74 79 70 65 20 70 61 74 68 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 -type.path))..................(g
ad760 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 63 61 70 61 62 6c 65 2d 70 20 6d 69 6d 65 29 29 0a 20 20 20 ptel--model-capable-p.mime))....
ad780 20 20 20 20 20 20 20 20 20 3b 3b 20 43 6f 6c 6c 65 63 74 20 74 65 78 74 20 75 70 20 74 6f 20 74 .........;;.Collect.text.up.to.t
ad7a0 68 69 73 20 69 6d 61 67 65 2c 20 61 6e 64 20 63 6f 6c 6c 65 63 74 20 74 68 69 73 20 69 6d 61 67 his.image,.and.collect.this.imag
ad7c0 65 20 75 72 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 74 e.url.............(when-let*.((t
ad7e0 65 78 74 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 ext.(buffer-substring-no-propert
ad800 69 65 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 ies.............................
ad820 20 20 20 66 72 6f 6d 2d 70 74 20 28 67 70 74 65 6c 2d 6f 72 67 2d 2d 65 6c 65 6d 65 6e 74 2d 62 ...from-pt.(gptel-org--element-b
ad840 65 67 69 6e 20 6c 69 6e 6b 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c egin.link))))...............(unl
ad860 65 73 73 20 28 73 74 72 69 6e 67 2d 62 6c 61 6e 6b 2d 70 20 74 65 78 74 29 20 28 70 75 73 68 20 ess.(string-blank-p.text).(push.
ad880 28 6c 69 73 74 20 3a 74 65 78 74 20 74 65 78 74 29 20 70 61 72 74 73 29 29 29 0a 20 20 20 20 20 (list.:text.text).parts)))......
ad8a0 20 20 20 20 20 20 20 28 70 75 73 68 20 28 6c 69 73 74 20 3a 75 72 6c 20 72 61 77 2d 6c 69 6e 6b .......(push.(list.:url.raw-link
ad8c0 20 3a 6d 69 6d 65 20 6d 69 6d 65 29 20 70 61 72 74 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 .:mime.mime).parts).............
ad8e0 28 73 65 74 71 20 66 72 6f 6d 2d 70 74 20 28 70 6f 69 6e 74 29 29 29 29 29 29 0a 20 20 20 20 20 (setq.from-pt.(point))))))......
ad900 20 28 75 6e 6c 65 73 73 20 28 3d 20 66 72 6f 6d 2d 70 74 20 65 6e 64 29 0a 20 20 20 20 20 20 20 .(unless.(=.from-pt.end)........
ad920 20 28 70 75 73 68 20 28 6c 69 73 74 20 3a 74 65 78 74 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 .(push.(list.:text.(buffer-subst
ad940 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 20 66 72 6f 6d 2d 70 74 20 65 6e 64 29 29 ring-no-properties.from-pt.end))
ad960 20 70 61 72 74 73 29 29 29 0a 20 20 20 20 28 6e 72 65 76 65 72 73 65 20 70 61 72 74 73 29 29 29 .parts))).....(nreverse.parts)))
ad980 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 6f 72 67 2d 2d 6c 69 6e 6b 2d 73 74 61 6e 64 61 6c ..(defun.gptel-org--link-standal
ad9a0 6f 6e 65 2d 70 20 28 6f 62 6a 65 63 74 29 0a 20 20 22 43 68 65 63 6b 20 69 66 20 6c 69 6e 6b 20 one-p.(object)..."Check.if.link.
ad9c0 4f 42 4a 45 43 54 20 69 73 20 6f 6e 20 61 20 6c 69 6e 65 20 62 79 20 69 74 73 65 6c 66 2e 22 0a OBJECT.is.on.a.line.by.itself.".
ad9e0 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 70 61 72 20 28 67 70 74 65 6c 2d 6f 72 67 2d 2d 65 ..(when-let*.((par.(gptel-org--e
ada00 6c 65 6d 65 6e 74 2d 70 61 72 65 6e 74 20 6f 62 6a 65 63 74 29 29 0a 20 20 20 20 20 20 20 20 20 lement-parent.object))..........
ada20 20 20 20 20 20 28 28 65 71 20 28 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 74 79 70 65 20 70 61 72 29 .....((eq.(org-element-type.par)
ada40 20 27 70 61 72 61 67 72 61 70 68 29 29 29 0a 20 20 20 20 28 61 6e 64 20 28 3d 20 28 67 70 74 65 .'paragraph))).....(and.(=.(gpte
ada60 6c 2d 6f 72 67 2d 2d 65 6c 65 6d 65 6e 74 2d 62 65 67 69 6e 20 6f 62 6a 65 63 74 29 0a 20 20 20 l-org--element-begin.object)....
ada80 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 20 20 .........(save-excursion........
adaa0 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 70 .......(goto-char.(org-element-p
adac0 72 6f 70 65 72 74 79 20 3a 63 6f 6e 74 65 6e 74 73 2d 62 65 67 69 6e 20 70 61 72 29 29 0a 20 20 roperty.:contents-begin.par))...
adae0 20 20 20 20 20 20 20 20 20 20 20 20 28 73 6b 69 70 2d 63 68 61 72 73 2d 66 6f 72 77 61 72 64 20 ............(skip-chars-forward.
adb00 22 5c 74 20 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6f 69 6e 74 29 29 29 20 20 "\t.")...............(point)))..
adb20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 61 63 63 6f 75 6e 74 20 66 6f 72 20 6c 65 61 64 ...............;account.for.lead
adb40 69 6e 67 20 73 70 61 63 65 20 62 65 66 6f 72 65 20 6f 62 6a 65 63 74 0a 20 20 20 20 20 20 20 20 ing.space.before.object.........
adb60 20 28 3c 3d 20 28 2d 20 28 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 70 72 6f 70 65 72 74 79 20 3a 63 .(<=.(-.(org-element-property.:c
adb80 6f 6e 74 65 6e 74 73 2d 65 6e 64 20 70 61 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ontents-end.par)................
adba0 20 28 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 70 72 6f 70 65 72 74 79 20 3a 65 6e 64 20 6f 62 6a 65 .(org-element-property.:end.obje
adbc0 63 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 31 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 ct))..............1))))..(defun.
adbe0 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 20 28 73 65 6e 64 gptel-org--send-with-props.(send
adc00 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 74 69 6f 6e 61 6c 6c -fun.&rest.args)..."Conditionall
adc20 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 6e 67 20 65 6e 76 69 y.modify.SEND-FUN's.calling.envi
adc40 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 66 66 65 72 20 75 6e ronment...If.in.an.Org.buffer.un
adc60 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 61 20 73 74 6f 72 65 der.a.heading.containing.a.store
adc80 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 65 20 74 68 61 74 20 d.gptel.configuration,.use.that.
adca0 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 69 73 20 69 6e 63 6c for.requests.instead...This.incl
adcc0 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 6d 6f 64 65 6c 20 61 udes.the.system.message,.model.a
adce0 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 6f 6e 67 20 6f 74 68 nd.provider.(backend),.among.oth
add00 65 72 0a 70 61 72 61 6d 65 74 65 72 73 2e 0a 0a 41 52 47 53 20 61 72 65 20 74 68 65 20 6f 72 69 er.parameters...ARGS.are.the.ori
add20 67 69 6e 61 6c 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 20 61 72 67 75 6d 65 6e 74 73 2e 22 0a ginal.function.call.arguments.".
add40 20 20 28 69 66 20 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 ..(if.(derived-mode-p.'org-mode)
add60 0a 20 20 20 20 20 20 28 70 63 61 73 65 2d 6c 65 74 20 28 28 60 28 2c 67 70 74 65 6c 2d 2d 73 79 .......(pcase-let.((`(,gptel--sy
add80 73 74 65 6d 2d 6d 65 73 73 61 67 65 20 2c 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 2c 67 70 74 stem-message.,gptel-backend.,gpt
adda0 65 6c 2d 6d 6f 64 65 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2c 67 el-model......................,g
addc0 70 74 65 6c 2d 74 65 6d 70 65 72 61 74 75 72 65 20 2c 67 70 74 65 6c 2d 6d 61 78 2d 74 6f 6b 65 ptel-temperature.,gptel-max-toke
adde0 6e 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 71 2d 6d 61 70 6e ns)....................(seq-mapn
ade00 20 28 6c 61 6d 62 64 61 20 28 61 20 62 29 20 28 6f 72 20 61 20 62 29 29 0a 20 20 20 20 20 20 20 .(lambda.(a.b).(or.a.b))........
ade20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 6f 72 67 ......................(gptel-org
ade40 2d 2d 65 6e 74 72 79 2d 70 72 6f 70 65 72 74 69 65 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 --entry-properties).............
ade60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 67 70 74 65 6c 2d 2d 73 79 .................(list.gptel--sy
ade80 73 74 65 6d 2d 6d 65 73 73 61 67 65 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 67 70 74 65 6c stem-message.gptel-backend.gptel
adea0 2d 6d 6f 64 65 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -model..........................
adec0 20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 74 65 6d 70 65 72 61 74 75 72 65 20 67 70 74 65 ..........gptel-temperature.gpte
adee0 6c 2d 6d 61 78 2d 74 6f 6b 65 6e 73 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 61 70 70 6c 79 20 l-max-tokens)))).........(apply.
adf00 73 65 6e 64 2d 66 75 6e 20 61 72 67 73 29 29 0a 20 20 20 20 28 61 70 70 6c 79 20 73 65 6e 64 2d send-fun.args)).....(apply.send-
adf20 66 75 6e 20 61 72 67 73 29 29 29 0a 0a 28 61 64 76 69 63 65 2d 61 64 64 20 27 67 70 74 65 6c 2d fun.args)))..(advice-add.'gptel-
adf40 73 65 6e 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 send.:around.#'gptel-org--send-w
adf60 69 74 68 2d 70 72 6f 70 73 29 0a 28 61 64 76 69 63 65 2d 61 64 64 20 27 67 70 74 65 6c 2d 2d 73 ith-props).(advice-add.'gptel--s
adf80 75 66 66 69 78 2d 73 65 6e 64 20 3a 61 72 6f 75 6e 64 20 23 27 67 70 74 65 6c 2d 6f 72 67 2d 2d uffix-send.:around.#'gptel-org--
adfa0 73 65 6e 64 2d 77 69 74 68 2d 70 72 6f 70 73 29 0a 0a 3b 3b 20 3b 3b 20 4e 4f 54 45 3a 20 42 61 send-with-props)..;;.;;.NOTE:.Ba
adfc0 73 69 63 20 75 73 65 73 20 69 6e 20 6f 72 67 2d 6d 6f 64 65 20 61 72 65 20 63 6f 76 65 72 65 64 sic.uses.in.org-mode.are.covered
adfe0 20 62 79 20 61 64 76 69 73 69 6e 67 20 67 70 74 65 6c 2d 73 65 6e 64 20 61 6e 64 0a 3b 3b 20 3b .by.advising.gptel-send.and.;;.;
ae000 3b 20 67 70 74 65 6c 2d 2d 73 75 66 66 69 78 2d 73 65 6e 64 2e 20 20 46 6f 72 20 63 75 73 74 6f ;.gptel--suffix-send...For.custo
ae020 6d 20 63 6f 6d 6d 61 6e 64 73 20 69 74 20 6d 69 67 68 74 20 62 65 20 6e 65 63 65 73 73 61 72 79 m.commands.it.might.be.necessary
ae040 20 74 6f 20 61 64 76 69 73 65 0a 3b 3b 20 3b 3b 20 67 70 74 65 6c 2d 72 65 71 75 65 73 74 20 69 .to.advise.;;.;;.gptel-request.i
ae060 6e 73 74 65 61 64 2e 0a 3b 3b 20 28 61 64 76 69 63 65 2d 61 64 64 20 27 67 70 74 65 6c 2d 72 65 nstead..;;.(advice-add.'gptel-re
ae080 71 75 65 73 74 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 quest.:around.#'gptel-org--send-
ae0a0 77 69 74 68 2d 70 72 6f 70 73 29 0a 0a 0c 0a 3b 3b 3b 20 53 61 76 69 6e 67 20 61 6e 64 20 72 65 with-props)....;;;.Saving.and.re
ae0c0 73 74 6f 72 69 6e 67 20 73 74 61 74 65 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 6f 72 67 2d 2d storing.state.(defun.gptel-org--
ae0e0 65 6e 74 72 79 2d 70 72 6f 70 65 72 74 69 65 73 20 28 26 6f 70 74 69 6f 6e 61 6c 20 70 74 29 0a entry-properties.(&optional.pt).
ae100 20 20 22 46 69 6e 64 20 67 70 74 65 6c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 70 72 6f 70 .."Find.gptel.configuration.prop
ae120 65 72 74 69 65 73 20 73 74 6f 72 65 64 20 61 74 20 50 54 2e 22 0a 20 20 28 70 63 61 73 65 2d 6c erties.stored.at.PT."...(pcase-l
ae140 65 74 0a 20 20 20 20 20 20 28 28 60 28 2c 73 79 73 74 65 6d 20 2c 62 61 63 6b 65 6e 64 20 2c 6d et.......((`(,system.,backend.,m
ae160 6f 64 65 6c 20 2c 74 65 6d 70 65 72 61 74 75 72 65 20 2c 74 6f 6b 65 6e 73 20 2c 6e 75 6d 29 0a odel.,temperature.,tokens.,num).
ae180 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 61 6d 62 .........(mapcar...........(lamb
ae1a0 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 70 74 20 da.(prop).(org-entry-get.(or.pt.
ae1c0 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 20 20 20 (point)).prop.'selective))......
ae1e0 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 42 41 43 .....'("GPTEL_SYSTEM"."GPTEL_BAC
ae200 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 20 20 20 KEND"."GPTEL_MODEL".............
ae220 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 58 5f 54 "GPTEL_TEMPERATURE"."GPTEL_MAX_T
ae240 4f 4b 45 4e 53 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 47 50 54 45 4c 5f 4e 55 4d 5f 4d 45 OKENS"............."GPTEL_NUM_ME
ae260 53 53 41 47 45 53 5f 54 4f 5f 53 45 4e 44 22 29 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 73 79 SSAGES_TO_SEND")))).....(when.sy
ae280 73 74 65 6d 0a 20 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 stem.......(setq.system.(string-
ae2a0 72 65 70 6c 61 63 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 replace."\\n"."\n".system)))....
ae2c0 20 28 77 68 65 6e 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 .(when.backend.......(setq.backe
ae2e0 6e 64 20 28 61 6c 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 nd.(alist-get.backend.gptel--kno
ae300 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 20 wn-backends.....................
ae320 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)))...
ae340 20 20 28 77 68 65 6e 20 6d 6f 64 65 6c 20 28 73 65 74 71 20 6d 6f 64 65 6c 20 28 67 70 74 65 6c ..(when.model.(setq.model.(gptel
ae360 2d 2d 69 6e 74 65 72 6e 20 6d 6f 64 65 6c 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 74 65 6d 70 --intern.model))).....(when.temp
ae380 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 61 74 75 72 65 20 erature.......(setq.temperature.
ae3a0 28 67 70 74 65 6c 2d 2d 74 6f 2d 6e 75 6d 62 65 72 20 74 65 6d 70 65 72 61 74 75 72 65 29 29 29 (gptel--to-number.temperature)))
ae3c0 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 6b 65 6e 73 20 28 .....(when.tokens.(setq.tokens.(
ae3e0 67 70 74 65 6c 2d 2d 74 6f 2d 6e 75 6d 62 65 72 20 74 6f 6b 65 6e 73 29 29 29 0a 20 20 20 20 28 gptel--to-number.tokens))).....(
ae400 77 68 65 6e 20 6e 75 6d 20 28 73 65 74 71 20 6e 75 6d 20 28 67 70 74 65 6c 2d 2d 74 6f 2d 6e 75 when.num.(setq.num.(gptel--to-nu
ae420 6d 62 65 72 20 6e 75 6d 29 29 29 0a 20 20 20 20 28 6c 69 73 74 20 73 79 73 74 65 6d 20 62 61 63 mber.num))).....(list.system.bac
ae440 6b 65 6e 64 20 6d 6f 64 65 6c 20 74 65 6d 70 65 72 61 74 75 72 65 20 74 6f 6b 65 6e 73 20 6e 75 kend.model.temperature.tokens.nu
ae460 6d 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 6f 72 67 2d 2d 72 65 73 74 6f 72 65 2d m)))..(defun.gptel-org--restore-
ae480 73 74 61 74 65 20 28 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 state.()..."Restore.gptel.state.
ae4a0 66 6f 72 20 4f 72 67 20 62 75 66 66 65 72 73 20 77 68 65 6e 20 74 75 72 6e 69 6e 67 20 6f 6e 20 for.Org.buffers.when.turning.on.
ae4c0 60 67 70 74 65 6c 2d 6d 6f 64 65 27 2e 22 0a 20 20 28 73 61 76 65 2d 72 65 73 74 72 69 63 74 69 `gptel-mode'."...(save-restricti
ae4e0 6f 6e 0a 20 20 20 20 28 6c 65 74 20 28 28 6d 6f 64 69 66 69 65 64 20 28 62 75 66 66 65 72 2d 6d on.....(let.((modified.(buffer-m
ae500 6f 64 69 66 69 65 64 2d 70 29 29 29 0a 20 20 20 20 20 20 28 77 69 64 65 6e 29 0a 20 20 20 20 20 odified-p))).......(widen)......
ae520 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 20 20 20 .(condition-case.status.........
ae540 20 20 28 70 72 6f 67 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 ..(progn.............(when-let*.
ae560 28 28 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 ((bounds.(org-entry-get.(point-m
ae580 69 6e 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 in)."GPTEL_BOUNDS")))...........
ae5a0 20 20 20 20 28 67 70 74 65 6c 2d 2d 72 65 73 74 6f 72 65 2d 70 72 6f 70 73 20 28 72 65 61 64 20 ....(gptel--restore-props.(read.
ae5c0 62 6f 75 6e 64 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 63 61 73 65 2d 6c 65 74 bounds))).............(pcase-let
ae5e0 20 28 28 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 .((`(,system.,backend.,model.,te
ae600 6d 70 65 72 61 74 75 72 65 20 2c 74 6f 6b 65 6e 73 20 2c 6e 75 6d 29 0a 20 20 20 20 20 20 20 20 mperature.,tokens.,num).........
ae620 20 20 20 20 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 .................(gptel-org--ent
ae640 72 79 2d 70 72 6f 70 65 72 74 69 65 73 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 29 29 0a 20 20 20 ry-properties.(point-min))))....
ae660 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 73 79 73 74 65 6d 20 28 73 65 74 71 2d 6c 6f ...........(when.system.(setq-lo
ae680 63 61 6c 20 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 20 73 79 73 74 65 6d cal.gptel--system-message.system
ae6a0 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 62 61 63 6b 65 6e 64 20 28 73 65 ))...............(if.backend.(se
ae6c0 74 71 2d 6c 6f 63 61 6c 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 62 61 63 6b 65 6e 64 29 0a tq-local.gptel-backend.backend).
ae6e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 0a 20 20 20 20 20 20 20 ................(message........
ae700 20 20 20 20 20 20 20 20 20 20 28 73 75 62 73 74 69 74 75 74 65 2d 63 6f 6d 6d 61 6e 64 2d 6b 65 ..........(substitute-command-ke
ae720 79 73 0a 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 0a 20 20 20 ys...................(concat....
ae740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 43 6f 75 6c 64 20 6e 6f 74 20 61 63 74 69 76 ................"Could.not.activ
ae760 61 74 65 20 67 70 74 65 6c 20 62 61 63 6b 65 6e 64 20 5c 22 25 73 5c 22 21 20 20 22 0a 20 20 20 ate.gptel.backend.\"%s\"!.."....
ae780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 53 77 69 74 63 68 20 62 61 63 6b 65 6e 64 73 ................"Switch.backends
ae7a0 20 77 69 74 68 20 5c 5c 5b 75 6e 69 76 65 72 73 61 6c 2d 61 72 67 75 6d 65 6e 74 5d 20 5c 5c 5b .with.\\[universal-argument].\\[
ae7c0 67 70 74 65 6c 2d 73 65 6e 64 5d 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 gptel-send]"....................
ae7e0 22 20 62 65 66 6f 72 65 20 75 73 69 6e 67 20 67 70 74 65 6c 2e 22 29 29 0a 20 20 20 20 20 20 20 ".before.using.gptel."))........
ae800 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 20 20 20 20 ..........backend)).............
ae820 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 6c 2d ..(when.model.(setq-local.gptel-
ae840 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 20 20 28 77 68 65 model.model))...............(whe
ae860 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-
ae880 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)).......
ae8a0 20 20 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 ........(when.tokens.(setq-local
ae8c0 20 67 70 74 65 6c 2d 6d 61 78 2d 74 6f 6b 65 6e 73 20 74 6f 6b 65 6e 73 29 29 0a 20 20 20 20 20 .gptel-max-tokens.tokens))......
ae8e0 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 6e 75 6d 20 28 73 65 74 71 2d 6c 6f 63 61 6c 20 67 .........(when.num.(setq-local.g
ae900 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 6e 75 6d 29 29 ptel--num-messages-to-send.num))
ae920 29 29 0a 20 20 20 20 20 20 20 20 28 3a 73 75 63 63 65 73 73 20 28 6d 65 73 73 61 67 65 20 22 67 )).........(:success.(message."g
ae940 70 74 65 6c 20 63 68 61 74 20 72 65 73 74 6f 72 65 64 2e 22 29 29 0a 20 20 20 20 20 20 20 20 28 ptel.chat.restored.")).........(
ae960 65 72 72 6f 72 20 28 6d 65 73 73 61 67 65 20 22 43 6f 75 6c 64 20 6e 6f 74 20 72 65 73 74 6f 72 error.(message."Could.not.restor
ae980 65 20 67 70 74 65 6c 20 73 74 61 74 65 2c 20 73 6f 72 72 79 21 20 45 72 72 6f 72 3a 20 25 73 22 e.gptel.state,.sorry!.Error:.%s"
ae9a0 20 73 74 61 74 75 73 29 29 29 0a 20 20 20 20 20 20 28 73 65 74 2d 62 75 66 66 65 72 2d 6d 6f 64 .status))).......(set-buffer-mod
ae9c0 69 66 69 65 64 2d 70 20 6d 6f 64 69 66 69 65 64 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 ified-p.modified))))..(defun.gpt
ae9e0 65 6c 2d 6f 72 67 2d 73 65 74 2d 70 72 6f 70 65 72 74 69 65 73 20 28 70 74 20 26 6f 70 74 69 6f el-org-set-properties.(pt.&optio
aea00 6e 61 6c 20 6d 73 67 29 0a 20 20 22 53 74 6f 72 65 20 74 68 65 20 61 63 74 69 76 65 20 67 70 74 nal.msg)..."Store.the.active.gpt
aea20 65 6c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 75 6e 64 65 72 20 74 68 65 20 63 75 72 72 65 el.configuration.under.the.curre
aea40 6e 74 20 68 65 61 64 69 6e 67 2e 0a 0a 54 68 65 20 61 63 74 69 76 65 20 67 70 74 65 6c 20 63 6f nt.heading...The.active.gptel.co
aea60 6e 66 69 67 75 72 61 74 69 6f 6e 20 69 6e 63 6c 75 64 65 73 20 74 68 65 20 63 75 72 72 65 6e 74 nfiguration.includes.the.current
aea80 20 73 79 73 74 65 6d 0a 6d 65 73 73 61 67 65 2c 20 6c 61 6e 67 75 61 67 65 20 6d 6f 64 65 6c 20 .system.message,.language.model.
aeaa0 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 6e 64 20 61 64 64 69 and.provider.(backend),.and.addi
aeac0 74 69 6f 6e 61 6c 0a 73 65 74 74 69 6e 67 73 20 77 68 65 6e 20 61 70 70 6c 69 63 61 62 6c 65 2e tional.settings.when.applicable.
aeae0 0a 0a 50 54 20 69 73 20 74 68 65 20 63 75 72 73 6f 72 20 70 6f 73 69 74 69 6f 6e 20 62 79 20 64 ..PT.is.the.cursor.position.by.d
aeb00 65 66 61 75 6c 74 2e 20 20 49 66 20 4d 53 47 20 69 73 0a 6e 6f 6e 2d 6e 69 6c 20 28 64 65 66 61 efault...If.MSG.is.non-nil.(defa
aeb20 75 6c 74 29 2c 20 64 69 73 70 6c 61 79 20 61 20 6d 65 73 73 61 67 65 20 61 66 74 65 72 77 61 72 ult),.display.a.message.afterwar
aeb40 64 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 28 70 6f 69 6e 74 ds."...(interactive.(list.(point
aeb60 29 20 74 29 29 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 ).t))...(org-entry-put.pt."GPTEL
aeb80 5f 4d 4f 44 45 4c 22 20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 6e 61 6d 65 20 67 70 74 65 6c _MODEL".(gptel--model-name.gptel
aeba0 2d 6d 6f 64 65 6c 29 29 0a 20 20 28 6f 72 67 2d 65 6e 74 72 79 2d 70 75 74 20 70 74 20 22 47 50 -model))...(org-entry-put.pt."GP
aebc0 54 45 4c 5f 42 41 43 4b 45 4e 44 22 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 TEL_BACKEND".(gptel-backend-name
aebe0 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 29 0a 20 20 28 75 6e 6c 65 73 73 20 28 65 71 75 61 .gptel-backend))...(unless.(equa
aec00 6c 20 28 64 65 66 61 75 6c 74 2d 76 61 6c 75 65 20 27 67 70 74 65 6c 2d 74 65 6d 70 65 72 61 74 l.(default-value.'gptel-temperat
aec20 75 72 65 29 20 67 70 74 65 6c 2d 74 65 6d 70 65 72 61 74 75 72 65 29 0a 20 20 20 20 28 6f 72 67 ure).gptel-temperature).....(org
aec40 2d 65 6e 74 72 79 2d 70 75 74 20 70 74 20 22 47 50 54 45 4c 5f 54 45 4d 50 45 52 41 54 55 52 45 -entry-put.pt."GPTEL_TEMPERATURE
aec60 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 75 6d 62 65 72 2d 74 6f 2d "....................(number-to-
aec80 73 74 72 69 6e 67 20 67 70 74 65 6c 2d 74 65 6d 70 65 72 61 74 75 72 65 29 29 29 0a 20 20 28 77 string.gptel-temperature)))...(w
aeca0 68 65 6e 20 28 6e 61 74 6e 75 6d 70 20 67 70 74 65 6c 2d 2d 6e 75 6d 2d 6d 65 73 73 61 67 65 73 hen.(natnump.gptel--num-messages
aecc0 2d 74 6f 2d 73 65 6e 64 29 0a 20 20 20 20 28 6f 72 67 2d 65 6e 74 72 79 2d 70 75 74 20 70 74 20 -to-send).....(org-entry-put.pt.
aece0 22 47 50 54 45 4c 5f 4e 55 4d 5f 4d 45 53 53 41 47 45 53 5f 54 4f 5f 53 45 4e 44 22 0a 20 20 20 "GPTEL_NUM_MESSAGES_TO_SEND"....
aed00 20 20 20 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 ................(number-to-strin
aed20 67 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 6e 64 29 29 29 g.gptel--num-messages-to-send)))
aed40 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 53 59 53 54 ...(org-entry-put.pt."GPTEL_SYST
aed60 45 4d 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 2d 6c 65 74 2a 20 28 EM"..................(and-let*.(
aed80 28 6d 73 67 20 28 63 61 72 2d 73 61 66 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (msg.(car-safe..................
aeda0 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 70 61 72 73 65 2d 64 .................(gptel--parse-d
aedc0 69 72 65 63 74 69 76 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 irective........................
aede0 20 20 20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 ............gptel--system-messag
aee00 65 29 29 29 29 0a 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 e))))....................(string
aee20 2d 72 65 70 6c 61 63 65 20 22 5c 6e 22 20 22 5c 5c 6e 22 20 6d 73 67 29 29 29 0a 20 20 28 77 68 -replace."\n"."\\n".msg)))...(wh
aee40 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 65 6e 74 en.gptel-max-tokens.....(org-ent
aee60 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 45 4e 53 ry-put......pt."GPTEL_MAX_TOKENS
aee80 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 2d 74 6f ".(number-to-string.gptel-max-to
aeea0 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 61 67 65 kens)))...(when.msg.....(message
aeec0 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 6f 20 63 ."Added.gptel.configuration.to.c
aeee0 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 67 70 74 urrent.headline.")))..(defun.gpt
aef00 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 65 20 74 el-org--save-state.()..."Write.t
aef20 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 66 65 72 he.gptel.state.to.the.Org.buffer
aef40 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 69 74 68 .as.Org.properties."...(org-with
aef60 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 6f 69 6e -wide-buffer....(goto-char.(poin
aef80 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 69 6e 67 t-min))....(when.(org-at-heading
aefa0 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 20 20 28 -p)......(org-open-line.1))....(
aefc0 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 6e 74 2d gptel-org-set-properties.(point-
aefe0 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 6e 64 61 min))....;;.Save.response.bounda
af000 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 73 0a 20 ries....(letrec.((write-bounds..
af020 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 29 0a 20 ............(lambda.(attempts)..
af040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 62 6f 75 6e 64 ..............(when-let*.((bound
af060 73 20 28 67 70 74 65 6c 2d 2d 67 65 74 2d 62 75 66 66 65 72 2d 62 6f 75 6e 64 73 29 29 0a 20 20 s.(gptel--get-buffer-bounds))...
af080 20 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 66 69 72 73 .........................;;.firs
af0a0 74 20 76 61 6c 75 65 20 6f 66 20 28 28 70 72 6f 70 20 2e 20 28 28 62 65 67 20 65 6e 64 20 76 61 t.value.of.((prop...((beg.end.va
af0c0 6c 29 2e 2e 2e 29 29 2e 2e 2e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 l)...))...).....................
af0e0 20 20 20 20 20 20 20 28 6f 66 66 73 65 74 20 28 63 61 61 64 61 72 20 62 6f 75 6e 64 73 29 29 0a .......(offset.(caadar.bounds)).
af100 20 20 20 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 6f 66 66 73 ...........................(offs
af120 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 6d 61 72 6b et-marker.(set-marker.(make-mark
af140 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 20 20 20 28 er).offset)))..................(
af160 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 50 54 45 4c org-entry-put.(point-min)."GPTEL
af180 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 20 20 20 20 _BOUNDS"........................
af1a0 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 70 74 65 6c .........(prin1-to-string.(gptel
af1c0 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 20 20 20 20 --get-buffer-bounds)))..........
af1e0 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 6d 61 72 6b ........(when.(and.(not.(=.(mark
af200 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 66 66 73 65 er-position.offset-marker).offse
af220 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 t)).............................
af240 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 20 20 20 20 (>.attempts.0)).................
af260 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 20 61 74 74 ...(funcall.write-bounds.(1-.att
af280 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 72 69 74 65 empts)))))))......(funcall.write
af2a0 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 72 6d 69 6e -bounds.6))))....;;;.Transformin
af2c0 67 20 72 65 73 70 6f 6e 73 65 73 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a 28 64 65 66 75 g.responses.;;;###autoload.(defu
af2e0 6e 20 67 70 74 65 6c 2d 2d 63 6f 6e 76 65 72 74 2d 6d 61 72 6b 64 6f 77 6e 2d 3e 6f 72 67 20 28 n.gptel--convert-markdown->org.(
af300 73 74 72 29 0a 20 20 22 43 6f 6e 76 65 72 74 20 73 74 72 69 6e 67 20 53 54 52 20 66 72 6f 6d 20 str)..."Convert.string.STR.from.
af320 6d 61 72 6b 64 6f 77 6e 20 74 6f 20 6f 72 67 20 6d 61 72 6b 75 70 2e 0a 0a 54 68 69 73 20 69 73 markdown.to.org.markup...This.is
af340 20 61 20 76 65 72 79 20 62 61 73 69 63 20 63 6f 6e 76 65 72 74 65 72 20 74 68 61 74 20 68 61 6e .a.very.basic.converter.that.han
af360 64 6c 65 73 20 6f 6e 6c 79 20 61 20 66 65 77 20 6d 61 72 6b 75 70 0a 65 6c 65 6d 65 6e 74 73 2e dles.only.a.few.markup.elements.
af380 22 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 69 6e 73 65 72 "...(with-temp-buffer.....(inser
af3a0 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 74 2d 6d 69 6e t.str).....(goto-char.(point-min
af3c0 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 72 77 61 72 64 )).....(while.(re-search-forward
af3e0 20 22 60 2b 5c 5c 7c 5c 5c 2a 5c 5c 7b 31 2c 32 5c 5c 7d 5c 5c 7c 5f 5c 5c 7c 5e 23 2b 22 20 6e ."`+\\|\\*\\{1,2\\}\\|_\\|^#+".n
af400 69 6c 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 il.t).......(pcase.(match-string
af420 20 30 29 0a 20 20 20 20 20 20 20 20 3b 3b 20 48 61 6e 64 6c 65 20 62 61 63 6b 74 69 63 6b 73 0a .0).........;;.Handle.backticks.
af440 20 20 20 20 20 20 20 20 28 28 61 6e 64 20 28 67 75 61 72 64 20 28 65 71 20 28 63 68 61 72 2d 62 ........((and.(guard.(eq.(char-b
af460 65 66 6f 72 65 29 20 3f 60 29 29 20 74 69 63 6b 73 29 0a 20 20 20 20 20 20 20 20 20 28 67 70 74 efore).?`)).ticks)..........(gpt
af480 65 6c 2d 2d 72 65 70 6c 61 63 65 2d 73 6f 75 72 63 65 2d 6d 61 72 6b 65 72 20 28 6c 65 6e 67 74 el--replace-source-marker.(lengt
af4a0 68 20 74 69 63 6b 73 29 29 0a 20 20 20 20 20 20 20 20 20 28 73 61 76 65 2d 6d 61 74 63 68 2d 64 h.ticks))..........(save-match-d
af4c0 61 74 61 0a 20 20 20 20 20 20 20 20 20 20 20 28 63 61 74 63 68 20 27 62 6c 6f 63 6b 2d 65 6e 64 ata............(catch.'block-end
af4e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 69 6c 65 20 28 73 65 61 72 63 68 2d 66 6f 72 ..............(while.(search-for
af500 77 61 72 64 20 74 69 63 6b 73 20 6e 69 6c 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ward.ticks.nil.t)...............
af520 20 28 75 6e 6c 65 73 73 20 28 6f 72 20 28 65 71 20 28 63 68 61 72 2d 62 65 66 6f 72 65 20 28 6d .(unless.(or.(eq.(char-before.(m
af540 61 74 63 68 2d 62 65 67 69 6e 6e 69 6e 67 20 30 29 29 20 3f 60 29 0a 20 20 20 20 20 20 20 20 20 atch-beginning.0)).?`)..........
af560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 71 20 28 63 68 61 72 2d 61 66 74 65 ..................(eq.(char-afte
af580 72 29 20 3f 60 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d r).?`))..................(gptel-
af5a0 2d 72 65 70 6c 61 63 65 2d 73 6f 75 72 63 65 2d 6d 61 72 6b 65 72 20 28 6c 65 6e 67 74 68 20 74 -replace-source-marker.(length.t
af5c0 69 63 6b 73 29 20 27 65 6e 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 68 icks).'end)..................(th
af5e0 72 6f 77 20 27 62 6c 6f 63 6b 2d 65 6e 64 20 6e 69 6c 29 29 29 29 29 29 0a 20 20 20 20 20 20 20 row.'block-end.nil))))))........
af600 20 3b 3b 20 48 61 6e 64 6c 65 20 68 65 61 64 69 6e 67 73 0a 20 20 20 20 20 20 20 20 28 28 61 6e .;;.Handle.headings.........((an
af620 64 20 28 67 75 61 72 64 20 28 65 71 20 28 63 68 61 72 2d 62 65 66 6f 72 65 29 20 3f 23 29 29 20 d.(guard.(eq.(char-before).?#)).
af640 68 65 61 64 69 6e 67 29 0a 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 heading)..........(cond.........
af660 20 20 28 28 6c 6f 6f 6b 69 6e 67 2d 61 74 20 22 5b 5b 3a 73 70 61 63 65 3a 5d 5d 22 29 20 20 20 ..((looking-at."[[:space:]]")...
af680 3b 48 61 6e 64 6c 65 20 68 65 61 64 69 6e 67 73 0a 20 20 20 20 20 20 20 20 20 20 20 28 64 65 6c ;Handle.headings............(del
af6a0 65 74 65 2d 72 65 67 69 6f 6e 20 28 6c 69 6e 65 2d 62 65 67 69 6e 6e 69 6e 67 2d 70 6f 73 69 74 ete-region.(line-beginning-posit
af6c0 69 6f 6e 29 20 28 70 6f 69 6e 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 ion).(point))............(insert
af6e0 20 28 6d 61 6b 65 2d 73 74 72 69 6e 67 20 28 6c 65 6e 67 74 68 20 68 65 61 64 69 6e 67 29 20 3f .(make-string.(length.heading).?
af700 2a 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 28 6c 6f 6f 6b 69 6e 67 2d 61 74 20 22 5c 5c 2b *)))...........((looking-at."\\+
af720 62 65 67 69 6e 5f 73 72 63 22 29 20 3b 4f 76 65 72 65 61 67 65 72 20 4c 4c 4d 20 73 77 69 74 63 begin_src").;Overeager.LLM.switc
af740 68 65 64 20 74 6f 20 75 73 69 6e 67 20 4f 72 67 20 73 72 63 20 62 6c 6f 63 6b 73 0a 20 20 20 20 hed.to.using.Org.src.blocks.....
af760 20 20 20 20 20 20 20 28 73 61 76 65 2d 6d 61 74 63 68 2d 64 61 74 61 20 28 72 65 2d 73 65 61 72 .......(save-match-data.(re-sear
af780 63 68 2d 66 6f 72 77 61 72 64 20 22 5e 23 5c 5c 2b 65 6e 64 5f 73 72 63 22 20 6e 69 6c 20 74 29 ch-forward."^#\\+end_src".nil.t)
af7a0 29 29 29 29 0a 20 20 20 20 20 20 20 20 3b 3b 20 48 61 6e 64 6c 65 20 65 6d 70 68 61 73 69 73 0a )))).........;;.Handle.emphasis.
af7c0 20 20 20 20 20 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 ........("**".(cond.............
af7e0 20 20 20 3b 3b 20 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 ...;;.((looking-at."\\*\\(?:[[:w
af800 6f 72 64 3a 5d 5d 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 ord:]]\\|\s\\)")................
af820 3b 3b 20 20 28 64 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 ;;..(delete-char.1))............
af840 20 20 20 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 ....((looking-back."\\(?:[[:word
af860 3a 5d 5b 3a 70 75 6e 63 74 3a 5d 5c 6e 5d 5c 5c 7c 5c 73 5c 5c 29 5c 5c 2a 5c 5c 7b 32 5c 5c 7d :][:punct:]\n]\\|\s\\)\\*\\{2\\}
af880 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 20 20 "...............................
af8a0 28 6d 61 78 20 28 2d 20 28 70 6f 69 6e 74 29 20 33 29 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 29 (max.(-.(point).3).(point-min)))
af8c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 65 6c 65 74 65 2d 63 68 61 72 20 2d 31 .................(delete-char.-1
af8e0 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 22 2a 22 0a 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 )))).........("*"..........(cond
af900 0a 20 20 20 20 20 20 20 20 20 20 28 28 73 61 76 65 2d 6d 61 74 63 68 2d 64 61 74 61 0a 20 20 20 ...........((save-match-data....
af920 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 28 6f 72 20 28 3d 20 28 70 6f 69 6e 74 29 20 32 29 ..........(and.(or.(=.(point).2)
af940 0a 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 6f 6b 69 6e 67 2d .......................(looking-
af960 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 5c 5c back."\\(?:[[:space:]]\\|\s\\)\\
af980 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 20 20 (?:_\\|\\*\\)"..................
af9a0 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 69 6e ...................(max.(-.(poin
af9c0 74 29 20 32 29 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 t).2).(point-min))))............
af9e0 20 20 20 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 .......(not.(looking-at."[[:spac
afa00 65 3a 5d 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 e:]]\\|\s"))))............;;.Pos
afa20 73 69 62 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 sible.beginning.of.emphasis.....
afa40 20 20 20 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 .......(and.............(save-ex
afa60 63 75 72 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 cursion...............(when.(and
afa80 20 28 72 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 .(re-search-forward.(regexp-quot
afaa0 65 20 28 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 e.(match-string.0)).............
afac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
afae0 28 6c 69 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 (line-end-position).t)..........
afb00 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 20 22 5b 5b 3a ................(looking-at."[[:
afb20 73 70 61 63 65 3a 5d 5b 3a 70 75 6e 63 74 3a 5d 5d 5c 5c 7c 5c 73 22 29 0a 20 20 20 20 20 20 20 space:][:punct:]]\\|\s")........
afb40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 6f 74 20 28 6c 6f 6f 6b 69 6e 67 2d ..................(not.(looking-
afb60 62 61 63 6b 20 22 5c 5c 28 3f 3a 5b 5b 3a 73 70 61 63 65 5d 5d 5c 5c 7c 5c 73 5c 5c 29 5c 5c 28 back."\\(?:[[:space]]\\|\s\\)\\(
afb80 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 20 20 20 ?:_\\|\\*\\)"...................
afba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 78 20 28 ..........................(max.(
afbc0 2d 20 28 70 6f 69 6e 74 29 20 32 29 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 29 29 29 0a 20 20 20 -.(point).2).(point-min)))))....
afbe0 20 20 20 20 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 20 28 69 .............(delete-char.-1).(i
afc00 6e 73 65 72 74 20 22 2f 22 29 20 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 67 nsert."/").t)).............(prog
afc20 6e 20 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 29 n.(delete-char.-1).(insert."/"))
afc40 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 ))...........((save-excursion...
afc60 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 6b 77 ...........(ignore-errors.(backw
afc80 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 28 6f 72 20 28 61 ard-char.2))..............(or.(a
afca0 6e 64 20 28 62 6f 62 70 29 20 28 6c 6f 6f 6b 69 6e 67 2d 61 74 20 22 5c 5c 2a 5b 5b 3a 73 70 61 nd.(bobp).(looking-at."\\*[[:spa
afcc0 63 65 3a 5d 5d 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 6f 6f 6b 69 ce:]]"))..................(looki
afce0 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 2a 5b 5b 3a 73 70 ng-at."\\(?:$\\|\\`\\)\n\\*[[:sp
afd00 61 63 65 3a 5d 5d 22 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 42 75 6c 6c 65 74 20 ace:]]")))............;;.Bullet.
afd20 70 6f 69 6e 74 2c 20 72 65 70 6c 61 63 65 20 77 69 74 68 20 68 79 70 68 65 6e 0a 20 20 20 20 20 point,.replace.with.hyphen......
afd40 20 20 20 20 20 20 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 ......(delete-char.-1).(insert."
afd60 2d 22 29 29 29 29 29 29 0a 20 20 20 20 28 62 75 66 66 65 72 2d 73 74 72 69 6e 67 29 29 29 0a 0a -")))))).....(buffer-string)))..
afd80 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 72 65 70 6c 61 63 65 2d 73 6f 75 72 63 65 2d 6d 61 72 (defun.gptel--replace-source-mar
afda0 6b 65 72 20 28 6e 75 6d 2d 74 69 63 6b 73 20 26 6f 70 74 69 6f 6e 61 6c 20 65 6e 64 29 0a 20 20 ker.(num-ticks.&optional.end)...
afdc0 22 52 65 70 6c 61 63 65 20 6d 61 72 6b 64 6f 77 6e 20 73 74 79 6c 65 20 62 61 63 6b 74 69 63 6b "Replace.markdown.style.backtick
afde0 73 20 77 69 74 68 20 4f 72 67 20 65 71 75 69 76 61 6c 65 6e 74 73 2e 0a 0a 4e 55 4d 2d 54 49 43 s.with.Org.equivalents...NUM-TIC
afe00 4b 53 20 69 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 62 61 63 6b 74 69 63 6b 73 20 62 65 KS.is.the.number.of.backticks.be
afe20 69 6e 67 20 72 65 70 6c 61 63 65 64 2e 20 20 49 66 20 45 4e 44 20 69 73 0a 74 72 75 65 20 74 68 ing.replaced...If.END.is.true.th
afe40 65 73 65 20 61 72 65 20 5c 22 65 6e 64 69 6e 67 5c 22 20 62 61 63 6b 74 69 63 6b 73 2e 0a 0a 54 ese.are.\"ending\".backticks...T
afe60 68 69 73 20 69 73 20 69 6e 74 65 6e 64 65 64 20 66 6f 72 20 75 73 65 20 69 6e 20 74 68 65 20 6d his.is.intended.for.use.in.the.m
afe80 61 72 6b 64 6f 77 6e 20 74 6f 20 6f 72 67 20 73 74 72 65 61 6d 20 63 6f 6e 76 65 72 74 65 72 2e arkdown.to.org.stream.converter.
afea0 22 0a 20 20 28 6c 65 74 20 28 28 66 72 6f 6d 20 28 6d 61 74 63 68 2d 62 65 67 69 6e 6e 69 6e 67 "...(let.((from.(match-beginning
afec0 20 30 29 29 29 0a 20 20 20 20 28 64 65 6c 65 74 65 2d 72 65 67 69 6f 6e 20 66 72 6f 6d 20 28 70 .0))).....(delete-region.from.(p
afee0 6f 69 6e 74 29 29 0a 20 20 20 20 28 69 66 20 28 61 6e 64 20 28 3d 20 6e 75 6d 2d 74 69 63 6b 73 oint)).....(if.(and.(=.num-ticks
aff00 20 33 29 0a 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 .3)..............(save-excursion
aff20 20 28 62 65 67 69 6e 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 .(beginning-of-line)............
aff40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 6b 69 70 2d 63 68 61 72 73 2d 66 6f ..................(skip-chars-fo
aff60 72 77 61 72 64 20 22 20 5c 74 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rward.".\t")....................
aff80 20 20 20 20 20 20 20 20 20 20 28 65 71 20 28 70 6f 69 6e 74 29 20 66 72 6f 6d 29 29 29 0a 20 20 ..........(eq.(point).from)))...
affa0 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 28 69 66 20 65 6e 64 20 22 23 2b 65 6e 64 5f 73 72 63 ......(insert.(if.end."#+end_src
affc0 22 20 22 23 2b 62 65 67 69 6e 5f 73 72 63 20 22 29 29 0a 20 20 20 20 20 20 28 69 6e 73 65 72 74 "."#+begin_src.")).......(insert
affe0 20 22 3d 22 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 ."="))))..;;;###autoload.(defun.
b0000 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 6e 2d 3e gptel--stream-convert-markdown->
b0020 6f 72 67 20 28 73 74 61 72 74 2d 6d 61 72 6b 65 72 29 0a 20 20 22 52 65 74 75 72 6e 20 61 20 4d org.(start-marker)..."Return.a.M
b0040 61 72 6b 64 6f 77 6e 20 74 6f 20 4f 72 67 20 63 6f 6e 76 65 72 74 65 72 2e 0a 0a 54 68 69 73 20 arkdown.to.Org.converter...This.
b0060 66 75 6e 63 74 69 6f 6e 20 70 61 72 73 65 73 20 61 20 73 74 72 65 61 6d 20 6f 66 20 4d 61 72 6b function.parses.a.stream.of.Mark
b0080 64 6f 77 6e 20 74 65 78 74 20 74 6f 20 4f 72 67 0a 63 6f 6e 74 69 6e 75 6f 75 73 6c 79 20 77 68 down.text.to.Org.continuously.wh
b00a0 65 6e 20 69 74 20 69 73 20 63 61 6c 6c 65 64 20 77 69 74 68 20 73 75 63 63 65 73 73 69 76 65 20 en.it.is.called.with.successive.
b00c0 63 68 75 6e 6b 73 20 6f 66 20 74 68 65 0a 74 65 78 74 20 73 74 72 65 61 6d 2e 0a 0a 53 54 41 52 chunks.of.the.text.stream...STAR
b00e0 54 2d 4d 41 52 4b 45 52 20 69 73 20 75 73 65 64 20 74 6f 20 69 64 65 6e 74 69 66 79 20 74 68 65 T-MARKER.is.used.to.identify.the
b0100 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 70 72 6f 63 65 73 73 20 77 68 65 6e 0a 63 6c 65 61 .corresponding.process.when.clea
b0120 6e 69 6e 67 20 75 70 20 61 66 74 65 72 2e 22 0a 20 20 28 6c 65 74 72 65 63 20 28 28 69 6e 2d 73 ning.up.after."...(letrec.((in-s
b0140 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 69 63 69 rc-block.nil)...........;explici
b0160 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 20 20 20 t.nil.to.address.BUG.#183.......
b0180 20 20 20 20 20 28 69 6e 2d 6f 72 67 2d 73 72 63 2d 62 6c 6f 63 6b 20 6e 69 6c 29 0a 20 20 20 20 .....(in-org-src-block.nil).....
b01a0 20 20 20 20 20 20 20 28 74 65 6d 70 2d 62 75 66 20 3b 20 4e 4f 54 45 3a 20 53 77 69 74 63 68 20 .......(temp-buf.;.NOTE:.Switch.
b01c0 74 6f 20 60 67 65 6e 65 72 61 74 65 2d 6e 65 77 2d 62 75 66 66 65 72 27 20 61 66 74 65 72 20 77 to.`generate-new-buffer'.after.w
b01e0 65 20 64 72 6f 70 20 45 6d 61 63 73 20 32 37 2e 31 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 67 e.drop.Emacs.27.1.............(g
b0200 70 74 65 6c 2d 2d 74 65 6d 70 2d 62 75 66 66 65 72 20 22 20 2a 67 70 74 65 6c 2d 74 65 6d 70 2a ptel--temp-buffer.".*gptel-temp*
b0220 22 29 29 0a 20 20 20 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 "))............(start-pt.(make-m
b0240 61 72 6b 65 72 29 29 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 arker))............(ticks-total.
b0260 30 29 20 20 20 20 20 20 3b 4d 41 59 42 45 20 73 68 6f 75 6c 64 20 77 65 20 6c 65 74 2d 62 69 6e 0)......;MAYBE.should.we.let-bin
b0280 64 20 63 61 73 65 2d 66 6f 6c 64 2d 73 65 61 72 63 68 20 68 65 72 65 3f 0a 20 20 20 20 20 20 20 d.case-fold-search.here?........
b02a0 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 6c 61 6d ....(cleanup-fn.............(lam
b02c0 62 64 61 20 28 62 65 67 20 5f 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 bda.(beg._)...............(when.
b02e0 28 61 6e 64 20 28 65 71 75 61 6c 20 62 65 67 20 28 6d 61 72 6b 65 72 2d 70 6f 73 69 74 69 6f 6e (and.(equal.beg.(marker-position
b0300 20 73 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 20 20 20 20 20 .start-marker)).................
b0320 20 20 20 20 20 20 20 20 20 28 65 71 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 20 28 6d .........(eq.(current-buffer).(m
b0340 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 29 29 0a 20 20 20 arker-buffer.start-marker)))....
b0360 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 62 75 66 66 65 72 2d 6c 69 76 65 2d .............(when.(buffer-live-
b0380 70 20 28 67 65 74 2d 62 75 66 66 65 72 20 74 65 6d 70 2d 62 75 66 29 29 0a 20 20 20 20 20 20 20 p.(get-buffer.temp-buf))........
b03a0 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 74 20 ...........(set-marker.start-pt.
b03c0 6e 69 6c 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 nil)...................(kill-buf
b03e0 66 65 72 20 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 fer.temp-buf)).................(
b0400 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 73 65 remove-hook.'gptel-post-response
b0420 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 20 28 -functions.cleanup-fn))))).....(
b0440 61 64 64 2d 68 6f 6f 6b 20 27 67 70 74 65 6c 2d 70 6f 73 74 2d 72 65 73 70 6f 6e 73 65 2d 66 75 add-hook.'gptel-post-response-fu
b0460 6e 63 74 69 6f 6e 73 20 63 6c 65 61 6e 75 70 2d 66 6e 29 0a 20 20 20 20 28 6c 61 6d 62 64 61 20 nctions.cleanup-fn).....(lambda.
b0480 28 73 74 72 29 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 6e 6f 6f 70 2d 70 29 20 28 74 69 63 6b (str).......(let.((noop-p).(tick
b04a0 73 20 30 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 75 66 66 s.0)).........(with-current-buff
b04c0 65 72 20 28 67 65 74 2d 62 75 66 66 65 72 20 74 65 6d 70 2d 62 75 66 29 0a 20 20 20 20 20 20 20 er.(get-buffer.temp-buf)........
b04e0 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 ...(save-excursion.(goto-char.(p
b0500 6f 69 6e 74 2d 6d 61 78 29 29 20 28 69 6e 73 65 72 74 20 73 74 72 29 29 0a 20 20 20 20 20 20 20 oint-max)).(insert.str))........
b0520 20 20 20 28 77 68 65 6e 20 28 6d 61 72 6b 65 72 2d 70 6f 73 69 74 69 6f 6e 20 73 74 61 72 74 2d ...(when.(marker-position.start-
b0540 70 74 29 20 28 67 6f 74 6f 2d 63 68 61 72 20 73 74 61 72 74 2d 70 74 29 29 0a 20 20 20 20 20 20 pt).(goto-char.start-pt)).......
b0560 20 20 20 20 28 77 68 65 6e 20 69 6e 2d 73 72 63 2d 62 6c 6f 63 6b 20 28 73 65 74 71 20 74 69 63 ....(when.in-src-block.(setq.tic
b0580 6b 73 20 74 69 63 6b 73 2d 74 6f 74 61 6c 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 61 76 65 ks.ticks-total))...........(save
b05a0 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 69 6c 65 20 28 72 -excursion.............(while.(r
b05c0 65 2d 73 65 61 72 63 68 2d 66 6f 72 77 61 72 64 20 22 60 5c 5c 7c 5c 5c 2a 5c 5c 7b 31 2c 32 5c e-search-forward."`\\|\\*\\{1,2\
b05e0 5c 7d 5c 5c 7c 5f 5c 5c 7c 5e 23 2b 22 20 6e 69 6c 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 \}\\|_\\|^#+".nil.t)............
b0600 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 29 0a 20 20 20 20 20 ...(pcase.(match-string.0)......
b0620 20 20 20 20 20 20 20 20 20 20 20 28 22 60 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ...........("`".................
b0640 20 3b 3b 20 43 6f 75 6e 74 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6e 73 65 63 75 74 69 76 65 20 .;;.Count.number.of.consecutive.
b0660 62 61 63 6b 74 69 63 6b 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 61 63 6b backticks..................(back
b0680 77 61 72 64 2d 63 68 61 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 69 ward-char)..................(whi
b06a0 6c 65 20 28 61 6e 64 20 28 63 68 61 72 2d 61 66 74 65 72 29 20 28 65 71 20 28 63 68 61 72 2d 61 le.(and.(char-after).(eq.(char-a
b06c0 66 74 65 72 29 20 3f 60 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 fter).?`))....................(f
b06e0 6f 72 77 61 72 64 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 orward-char)....................
b0700 28 69 66 20 69 6e 2d 73 72 63 2d 62 6c 6f 63 6b 20 28 63 6c 2d 64 65 63 66 20 74 69 63 6b 73 29 (if.in-src-block.(cl-decf.ticks)
b0720 20 28 63 6c 2d 69 6e 63 66 20 74 69 63 6b 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 .(cl-incf.ticks)))..............
b0740 20 20 20 20 3b 3b 20 53 65 74 20 74 68 65 20 76 65 72 62 61 74 69 6d 20 73 74 61 74 65 20 6f 66 ....;;.Set.the.verbatim.state.of
b0760 20 74 68 65 20 70 61 72 73 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 .the.parser..................(if
b0780 20 28 61 6e 64 20 28 65 6f 62 70 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .(and.(eobp)....................
b07a0 20 20 20 20 20 20 20 3b 3b 20 53 70 65 63 69 61 6c 20 63 61 73 65 20 68 65 75 72 69 73 74 69 63 .......;;.Special.case.heuristic
b07c0 3a 20 49 66 20 74 68 65 20 72 65 73 70 6f 6e 73 65 20 65 6e 64 73 20 77 69 74 68 0a 20 20 20 20 :.If.the.response.ends.with.....
b07e0 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 5e 60 60 60 20 77 65 ......................;;.^```.we
b0800 20 64 6f 6e 27 74 20 77 61 69 74 20 66 6f 72 20 6d 6f 72 65 20 69 6e 70 75 74 2e 0a 20 20 20 20 .don't.wait.for.more.input......
b0820 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 46 49 58 4d 45 3a 20 ......................;;.FIXME:.
b0840 54 68 69 73 20 63 61 6e 20 68 61 76 65 20 66 61 6c 73 65 20 70 6f 73 69 74 69 76 65 73 2e 0a 20 This.can.have.false.positives...
b0860 20 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 6e 6f 74 20 28 73 .........................(not.(s
b0880 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 2d 6c 69 6e 65 ave-excursion.(beginning-of-line
b08a0 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 )...............................
b08c0 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 20 22 5e 60 .................(looking-at."^`
b08e0 60 60 24 22 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 3b 3b ``$"))))......................;;
b0900 20 45 6e 64 20 6f 66 20 69 6e 70 75 74 20 3d 3e 20 74 68 65 72 65 20 63 6f 75 6c 64 20 62 65 20 .End.of.input.=>.there.could.be.
b0920 6d 6f 72 65 20 62 61 63 6b 74 69 63 6b 73 20 63 6f 6d 69 6e 67 2c 0a 20 20 20 20 20 20 20 20 20 more.backticks.coming,..........
b0940 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 73 6f 20 77 65 20 77 61 69 74 20 66 6f 72 20 6d 6f ............;;.so.we.wait.for.mo
b0960 72 65 20 69 6e 70 75 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 re.input......................(p
b0980 72 6f 67 6e 20 28 73 65 74 71 20 6e 6f 6f 70 2d 70 20 74 29 20 28 73 65 74 2d 6d 61 72 6b 65 72 rogn.(setq.noop-p.t).(set-marker
b09a0 20 73 74 61 72 74 2d 70 74 20 28 6d 61 74 63 68 2d 62 65 67 69 6e 6e 69 6e 67 20 30 29 29 29 0a .start-pt.(match-beginning.0))).
b09c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 57 65 20 72 65 61 63 68 65 64 ...................;;.We.reached
b09e0 20 61 20 63 68 61 72 61 63 74 65 72 20 6f 74 68 65 72 20 74 68 61 6e 20 61 20 62 61 63 6b 74 69 .a.character.other.than.a.backti
b0a00 63 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 ck....................(cond.....
b0a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 54 69 63 6b 73 20 62 61 6c 61 6e 63 65 ................;;.Ticks.balance
b0a40 64 2c 20 65 6e 64 20 73 72 63 20 62 6c 6f 63 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 d,.end.src.block................
b0a60 20 20 20 20 20 28 28 3d 20 74 69 63 6b 73 20 30 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .....((=.ticks.0)...............
b0a80 20 20 20 20 20 20 20 28 70 72 6f 67 6e 20 28 73 65 74 71 20 69 6e 2d 73 72 63 2d 62 6c 6f 63 6b .......(progn.(setq.in-src-block
b0aa0 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 20 20 20 20 20 20 .nil)...........................
b0ac0 20 20 28 67 70 74 65 6c 2d 2d 72 65 70 6c 61 63 65 2d 73 6f 75 72 63 65 2d 6d 61 72 6b 65 72 20 ..(gptel--replace-source-marker.
b0ae0 74 69 63 6b 73 2d 74 6f 74 61 6c 20 27 65 6e 64 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 ticks-total.'end))).............
b0b00 20 20 20 20 20 20 20 20 3b 3b 20 50 6f 73 69 74 69 76 65 20 6e 75 6d 62 65 72 20 6f 66 20 74 69 ........;;.Positive.number.of.ti
b0b20 63 6b 73 2c 20 73 74 61 72 74 20 61 6e 20 73 72 63 20 62 6c 6f 63 6b 0a 20 20 20 20 20 20 20 20 cks,.start.an.src.block.........
b0b40 20 20 20 20 20 20 20 20 20 20 20 20 28 28 61 6e 64 20 28 3e 20 74 69 63 6b 73 20 30 29 20 28 6e ............((and.(>.ticks.0).(n
b0b60 6f 74 20 69 6e 2d 73 72 63 2d 62 6c 6f 63 6b 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ot.in-src-block))...............
b0b80 20 20 20 20 20 20 20 28 73 65 74 71 20 74 69 63 6b 73 2d 74 6f 74 61 6c 20 74 69 63 6b 73 0a 20 .......(setq.ticks-total.ticks..
b0ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 2d 73 72 63 ..........................in-src
b0bc0 2d 62 6c 6f 63 6b 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 -block.t)......................(
b0be0 67 70 74 65 6c 2d 2d 72 65 70 6c 61 63 65 2d 73 6f 75 72 63 65 2d 6d 61 72 6b 65 72 20 74 69 63 gptel--replace-source-marker.tic
b0c00 6b 73 2d 74 6f 74 61 6c 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b ks-total)).....................;
b0c20 3b 20 4e 65 67 61 74 69 76 65 20 6e 75 6d 62 65 72 20 6f 66 20 74 69 63 6b 73 20 6f 72 20 69 6e ;.Negative.number.of.ticks.or.in
b0c40 20 61 20 73 72 63 20 62 6c 6f 63 6b 20 61 6c 72 65 61 64 79 2c 0a 20 20 20 20 20 20 20 20 20 20 .a.src.block.already,...........
b0c60 20 20 20 20 20 20 20 20 20 20 3b 3b 20 72 65 73 65 74 20 74 69 63 6b 73 0a 20 20 20 20 20 20 20 ..........;;.reset.ticks........
b0c80 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 20 28 73 65 74 71 20 74 69 63 6b 73 20 74 69 63 6b .............(t.(setq.ticks.tick
b0ca0 73 2d 74 6f 74 61 6c 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 s-total))))).................;;.
b0cc0 48 61 6e 64 6c 65 20 68 65 61 64 69 6e 67 73 20 61 6e 64 20 6d 69 73 67 75 69 64 65 64 20 23 2b Handle.headings.and.misguided.#+
b0ce0 62 65 67 69 6e 5f 73 72 63 20 74 65 78 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 begin_src.text.................(
b0d00 28 61 6e 64 20 28 67 75 61 72 64 20 28 61 6e 64 20 28 65 71 20 28 63 68 61 72 2d 62 65 66 6f 72 (and.(guard.(and.(eq.(char-befor
b0d20 65 29 20 3f 23 29 20 28 6f 72 20 28 6e 6f 74 20 69 6e 2d 73 72 63 2d 62 6c 6f 63 6b 29 20 69 6e e).?#).(or.(not.in-src-block).in
b0d40 2d 6f 72 67 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 20 -org-src-block)))...............
b0d60 20 20 20 20 20 20 20 20 68 65 61 64 69 6e 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ........heading)................
b0d80 20 20 28 69 66 20 69 6e 2d 6f 72 67 2d 73 72 63 2d 62 6c 6f 63 6b 0a 20 20 20 20 20 20 20 20 20 ..(if.in-org-src-block..........
b0da0 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 49 66 20 77 65 20 61 72 65 20 69 6e 73 69 64 65 20 ............;;.If.we.are.inside.
b0dc0 61 6e 20 4f 72 67 2d 73 74 79 6c 65 20 73 72 63 20 62 6c 6f 63 6b 2c 20 6c 6f 6f 6b 20 66 6f 72 an.Org-style.src.block,.look.for
b0de0 20 23 2b 65 6e 64 5f 73 72 63 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .#+end_src......................
b0e00 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 28 28 3c 20 (cond.......................((<.
b0e20 28 2d 20 28 70 6f 69 6e 74 2d 6d 61 78 29 20 28 70 6f 69 6e 74 29 29 20 38 29 20 3b 6e 6f 74 20 (-.(point-max).(point)).8).;not.
b0e40 65 6e 6f 75 67 68 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 74 6f 20 63 6c 6f 73 65 20 4f 72 67 20 enough.information.to.close.Org.
b0e60 73 72 63 20 62 6c 6f 63 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 src.block.......................
b0e80 20 28 73 65 74 71 20 6e 6f 6f 70 2d 70 20 74 29 20 28 73 65 74 2d 6d 61 72 6b 65 72 20 73 74 61 .(setq.noop-p.t).(set-marker.sta
b0ea0 72 74 2d 70 74 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 rt-pt.(match-beginning.0))).....
b0ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 6c 6f 6f 6b 69 6e 67 2d 61 74 20 22 ..................((looking-at."
b0ee0 5c 5c 2b 65 6e 64 5f 73 72 63 22 29 20 3b 43 6c 6f 73 65 20 4f 72 67 20 73 72 63 20 62 6c 6f 63 \\+end_src").;Close.Org.src.bloc
b0f00 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 28 73 65 74 71 20 69 k........................(setq.i
b0f20 6e 2d 73 72 63 2d 62 6c 6f 63 6b 20 6e 69 6c 20 69 6e 2d 6f 72 67 2d 73 72 63 2d 62 6c 6f 63 6b n-src-block.nil.in-org-src-block
b0f40 20 6e 69 6c 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 4f 74 .nil)))....................;;.Ot
b0f60 68 65 72 77 69 73 65 20 63 68 65 63 6b 20 66 6f 72 20 4d 61 72 6b 64 6f 77 6e 20 68 65 61 64 69 herwise.check.for.Markdown.headi
b0f80 6e 67 73 2c 20 6f 72 20 66 6f 72 20 23 2b 62 65 67 69 6e 5f 73 72 63 0a 20 20 20 20 20 20 20 20 ngs,.or.for.#+begin_src.........
b0fa0 20 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 20 20 20 20 ...........(cond................
b0fc0 20 20 20 20 20 28 28 65 6f 62 70 29 20 20 20 20 20 20 20 3b 20 4e 6f 74 20 65 6e 6f 75 67 68 20 .....((eobp).......;.Not.enough.
b0fe0 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 74 68 65 20 68 65 61 64 69 6e 67 20 79 65 information.about.the.heading.ye
b1000 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 6e 6f 6f t......................(setq.noo
b1020 70 2d 70 20 74 29 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 p-p.t).(set-marker.start-pt.(mat
b1040 63 68 2d 62 65 67 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 ch-beginning.0)))...............
b1060 20 20 20 20 20 20 28 28 6c 6f 6f 6b 69 6e 67 2d 61 74 20 22 5b 5b 3a 73 70 61 63 65 3a 5d 5d 22 ......((looking-at."[[:space:]]"
b1080 29 20 3b 20 43 6f 6e 76 65 72 74 20 6d 61 72 6b 64 6f 77 6e 20 68 65 61 64 69 6e 67 20 74 6f 20 ).;.Convert.markdown.heading.to.
b10a0 4f 72 67 20 68 65 61 64 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 Org.heading.....................
b10c0 20 28 64 65 6c 65 74 65 2d 72 65 67 69 6f 6e 20 28 6c 69 6e 65 2d 62 65 67 69 6e 6e 69 6e 67 2d .(delete-region.(line-beginning-
b10e0 70 6f 73 69 74 69 6f 6e 29 20 28 70 6f 69 6e 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 position).(point))..............
b1100 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 28 6d 61 6b 65 2d 73 74 72 69 6e 67 20 28 6c 65 ........(insert.(make-string.(le
b1120 6e 67 74 68 20 68 65 61 64 69 6e 67 29 20 3f 2a 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 ngth.heading).?*))).............
b1140 20 20 20 20 20 20 20 20 28 28 3c 20 28 2d 20 28 70 6f 69 6e 74 2d 6d 61 78 29 20 28 70 6f 69 6e ........((<.(-.(point-max).(poin
b1160 74 29 29 20 31 31 29 20 3b 4e 6f 74 20 65 6e 6f 75 67 68 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 t)).11).;Not.enough.information.
b1180 74 6f 20 63 68 65 63 6b 20 69 66 20 4f 72 67 20 73 72 63 20 62 6c 6f 63 6b 0a 20 20 20 20 20 20 to.check.if.Org.src.block.......
b11a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 6e 6f 6f 70 2d 70 20 74 29 20 28 ...............(setq.noop-p.t).(
b11c0 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 69 6e set-marker.start-pt.(match-begin
b11e0 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 20 28 28 ning.0))).....................((
b1200 6c 6f 6f 6b 69 6e 67 2d 61 74 20 22 5c 5c 2b 62 65 67 69 6e 5f 73 72 63 20 22 29 20 3b 4f 76 65 looking-at."\\+begin_src.").;Ove
b1220 72 65 61 67 65 72 20 4c 4c 4d 20 73 77 69 74 63 68 65 64 20 74 6f 20 75 73 69 6e 67 20 4f 72 67 reager.LLM.switched.to.using.Org
b1240 20 73 72 63 20 62 6c 6f 63 6b 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .src.blocks.....................
b1260 20 28 73 65 74 71 20 69 6e 2d 73 72 63 2d 62 6c 6f 63 6b 20 74 20 69 6e 2d 6f 72 67 2d 73 72 63 .(setq.in-src-block.t.in-org-src
b1280 2d 62 6c 6f 63 6b 20 74 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b -block.t))))).................;;
b12a0 20 48 61 6e 64 6c 65 20 6f 74 68 65 72 20 63 68 61 72 73 3a 20 65 6d 70 68 61 73 69 73 2c 20 62 .Handle.other.chars:.emphasis,.b
b12c0 6f 6c 64 20 61 6e 64 20 62 75 6c 6c 65 74 20 69 74 65 6d 73 0a 20 20 20 20 20 20 20 20 20 20 20 old.and.bullet.items............
b12e0 20 20 20 20 20 28 28 61 6e 64 20 22 2a 2a 22 20 28 67 75 61 72 64 20 28 6e 6f 74 20 69 6e 2d 73 .....((and."**".(guard.(not.in-s
b1300 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 20 20 20 20 28 63 6f rc-block)))..................(co
b1320 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 54 4f 44 4f 20 4e 6f 74 nd...................;;.TODO.Not
b1340 20 73 75 72 65 20 77 68 79 20 74 68 69 73 20 62 72 61 6e 63 68 20 77 61 73 20 6e 65 65 64 65 64 .sure.why.this.branch.was.needed
b1360 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 28 28 6c 6f 6f 6b 69 6e 67 2d ...................;;.((looking-
b1380 61 74 20 22 5c 5c 2a 5c 5c 28 3f 3a 5b 5b 3a 77 6f 72 64 3a 5d 5d 5c 5c 7c 5c 73 5c 5c 29 22 29 at."\\*\\(?:[[:word:]]\\|\s\\)")
b13a0 20 28 64 65 6c 65 74 65 2d 63 68 61 72 20 31 29 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 .(delete-char.1))...............
b13c0 20 20 20 20 20 3b 3b 20 4c 6f 6f 6b 69 6e 67 20 62 61 63 6b 20 61 74 20 22 77 2a 2a 22 20 6f 72 .....;;.Looking.back.at."w**".or
b13e0 20 22 20 2a 2a 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 6c 6f 6f 6b 69 .".**"...................((looki
b1400 6e 67 2d 62 61 63 6b 20 22 5c 5c 28 3f 3a 5b 5b 3a 77 6f 72 64 3a 5d 5b 3a 70 75 6e 63 74 3a 5d ng-back."\\(?:[[:word:][:punct:]
b1420 5c 6e 5d 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 \n]\\|\s\\)\\*\\{2\\}"..........
b1440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 78 20 28 2d 20 ........................(max.(-.
b1460 28 70 6f 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 (point).3).(point-min)))........
b1480 20 20 20 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 ............(delete-char.-1)))).
b14a0 20 20 20 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 ................((and."*".(guard
b14c0 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 20 .(not.in-src-block)))...........
b14e0 20 20 20 20 20 20 20 28 69 66 20 28 65 6f 62 70 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .......(if.(eobp)...............
b1500 20 20 20 20 20 20 20 3b 3b 20 4e 6f 74 20 65 6e 6f 75 67 68 20 69 6e 66 6f 72 6d 61 74 69 6f 6e .......;;.Not.enough.information
b1520 20 61 62 6f 75 74 20 74 68 65 20 22 2a 22 20 79 65 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 .about.the."*".yet..............
b1540 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 20 28 ........(progn.(setq.noop-p.t).(
b1560 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 69 6e set-marker.start-pt.(match-begin
b1580 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 3b 20 ning.0)))....................;;.
b15a0 22 2a 22 20 69 73 20 65 69 74 68 65 72 20 65 6d 70 68 61 73 69 73 20 6f 72 20 61 20 62 75 6c 6c "*".is.either.emphasis.or.a.bull
b15c0 65 74 20 70 6f 69 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 61 76 et.point....................(sav
b15e0 65 2d 6d 61 74 63 68 2d 64 61 74 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 e-match-data....................
b1600 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..(save-excursion...............
b1620 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 6b 77 61 72 .........(ignore-errors.(backwar
b1640 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 20 20 20 20 d-char.2))......................
b1660 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 20 20 ..(cond.........................
b1680 28 28 61 6e 64 20 20 20 20 20 3b 20 41 74 20 62 6f 62 2c 20 75 6e 64 65 72 73 63 6f 72 65 2f 61 ((and.....;.At.bob,.underscore/a
b16a0 73 74 65 72 69 73 6b 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 77 6f 72 64 0a 20 20 20 20 20 20 20 sterisk.followed.by.word........
b16c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 20 28 61 6e 64 20 28 62 6f 62 ...................(or.(and.(bob
b16e0 70 29 20 28 6c 6f 6f 6b 69 6e 67 2d 61 74 20 22 5c 5c 28 3f 3a 5f 5c 5c 7c 5c 5c 2a 5c 5c 29 5c p).(looking-at."\\(?:_\\|\\*\\)\
b1700 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 7c 24 5c 5c 29 22 29 \([^[:space:][:punct:]]\\|$\\)")
b1720 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 )...............................
b1740 28 6c 6f 6f 6b 69 6e 67 2d 61 74 20 3b 20 77 6f 72 64 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 75 (looking-at.;.word.followed.by.u
b1760 6e 64 65 72 73 63 6f 72 65 2f 61 73 74 65 72 69 73 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 nderscore/asterisk..............
b1780 20 20 20 20 20 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 5c 6e .................."[^[:space:]\n
b17a0 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 65 3a 5d 5b ]\\(?:_\\|\\*\\)\\(?:[[:space:][
b17c0 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 20 20 20 20 :punct:]]\\|$\\)")..............
b17e0 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 20 3b 20 75 .................(looking-at.;.u
b1800 6e 64 65 72 73 63 6f 72 65 2f 61 73 74 65 72 69 73 6b 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 77 nderscore/asterisk.followed.by.w
b1820 6f 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 20 20 20 20 ord.............................
b1840 20 20 20 22 5c 5c 28 3f 3a 5b 5b 3a 73 70 61 63 65 3a 5d 5d 5c 5c 29 5c 5c 28 3f 3a 5f 5c 5c 7c ..."\\(?:[[:space:]]\\)\\(?:_\\|
b1860 5c 5c 2a 5c 5c 29 5c 5c 28 5b 5e 5b 3a 73 70 61 63 65 3a 5d 5d 5c 5c 7c 24 5c 5c 29 22 29 29 0a \\*\\)\\([^[:space:]]\\|$\\)")).
b1880 20 20 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 6e 6f 74 20 28 ..........................(not.(
b18a0 6c 6f 6f 6b 69 6e 67 2d 61 74 20 22 5b 5b 3a 70 75 6e 63 74 3a 5d 5d 5c 5c 28 3f 3a 5f 5c 5c 7c looking-at."[[:punct:]]\\(?:_\\|
b18c0 5c 5c 2a 5c 5c 29 5b 5b 3a 70 75 6e 63 74 3a 5d 5d 22 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 \\*\\)[[:punct:]]")))...........
b18e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 45 6d 70 68 61 73 69 73 2c 20 72 65 70 6c ...............;;.Emphasis,.repl
b1900 61 63 65 20 77 69 74 68 20 73 6c 61 73 68 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ace.with.slashes................
b1920 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 77 61 72 64 2d 63 68 61 72 20 28 69 66 20 28 62 6f 62 ..........(forward-char.(if.(bob
b1940 70 29 20 31 20 32 29 29 20 28 64 65 6c 65 74 65 2d 63 68 61 72 20 2d 31 29 20 28 69 6e 73 65 72 p).1.2)).(delete-char.-1).(inser
b1960 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 20 20 t."/")).........................
b1980 28 28 6f 72 20 28 61 6e 64 20 28 62 6f 62 70 29 20 28 6c 6f 6f 6b 69 6e 67 2d 61 74 20 22 5c 5c ((or.(and.(bobp).(looking-at."\\
b19a0 2a 5b 5b 3a 73 70 61 63 65 3a 5d 5d 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 *[[:space:]]")).................
b19c0 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."\\(?:$
b19e0 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:]]"))....
b1a00 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 42 75 6c 6c 65 74 20 ......................;;.Bullet.
b1a20 70 6f 69 6e 74 2c 20 72 65 70 6c 61 63 65 20 77 69 74 68 20 68 79 70 68 65 6e 0a 20 20 20 20 20 point,.replace.with.hyphen......
b1a40 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 64 2d 63 68 61 ....................(forward-cha
b1a60 72 20 28 69 66 20 28 62 6f 62 70 29 20 31 20 32 29 29 20 28 64 65 6c 65 74 65 2d 63 68 61 72 20 r.(if.(bobp).1.2)).(delete-char.
b1a80 2d 31 29 20 28 69 6e 73 65 72 74 20 22 2d 22 29 29 29 29 29 29 29 29 29 29 0a 20 20 20 20 20 20 -1).(insert."-")))))))))).......
b1aa0 20 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 ....(if.noop-p...............(bu
b1ac0 66 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 ffer-substring.(point).start-pt)
b1ae0 0a 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 .............(prog1.(buffer-subs
b1b00 74 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 tring.(point).(point-max))......
b1b20 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 20 73 74 61 72 74 2d ..............(set-marker.start-
b1b40 70 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 pt.(point-max)))))))))..(provide
b1b60 20 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 .'gptel-org).;;;.gptel-org.el.en
b1b80 64 73 20 68 65 72 65 0a 0a 3b 3b 20 53 69 6c 65 6e 63 65 20 77 61 72 6e 69 6e 67 73 20 61 62 6f ds.here..;;.Silence.warnings.abo
b1ba0 75 74 20 60 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 74 79 70 65 2d 70 27 20 61 6e 64 20 60 6f 72 67 ut.`org-element-type-p'.and.`org
b1bc0 2d 65 6c 65 6d 65 6e 74 2d 70 61 72 65 6e 74 27 2c 20 73 65 65 20 23 32 39 34 2e 0a 3b 3b 20 4c -element-parent',.see.#294..;;.L
b1be0 6f 63 61 6c 20 56 61 72 69 61 62 6c 65 73 3a 0a 3b 3b 20 62 79 74 65 2d 63 6f 6d 70 69 6c 65 2d ocal.Variables:.;;.byte-compile-
b1c00 77 61 72 6e 69 6e 67 73 3a 20 28 6e 6f 74 20 75 6e 72 65 73 6f 6c 76 65 64 29 0a 3b 3b 20 45 6e warnings:.(not.unresolved).;;.En
b1c20 64 3a 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 00 00 00 00 d:..............................
b1c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b1c60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b1c80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b1ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b1cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b1ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b1d00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b1d20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b1d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b1d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b1d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b1da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b1dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b1de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b1e00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b1e20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b1e40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b1e60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b1e80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b1ea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b1ec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b1ee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b1f00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b1f20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b1f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b1f60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b1f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b1fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b1fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b1fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b20a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b20c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b20e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b21a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b21c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b21e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b22a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b22c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b22e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b23a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b23c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b23e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b24a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b24c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b24e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b25a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b25c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b25e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b26a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b26c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b26e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b27a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b27c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b27e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b28a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b28c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b28e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b29a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b29c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b29e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2a00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2a20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2a60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2a80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2b00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2b20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2c00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2c20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2c60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2c80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2d00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2d20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2e00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2e20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2e40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2e60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2e80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2ea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2ec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2ee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2f00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2f20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2f60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b30a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b30c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b30e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b31a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b31c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b31e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b32a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b32c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b32e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b33a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b33c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b33e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b34a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b34c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b34e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b35a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b35c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b35e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b36a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b36c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b36e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b37a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b37c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b37e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b38a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b38c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b38e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b39a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b39c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b39e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3a00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3a20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3a60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3a80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3b00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3b20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3c00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3c20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3c60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3c80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3d00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3d20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3e00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3e20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3e40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3e60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3e80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3ea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3ec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3ee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3f00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3f20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3f60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................