summaryrefslogtreecommitdiff
path: root/.localrepo/gptel-0.9.8.5.tar
blob: 6a4c933896613f47628c4139d4538871421e57d3 (plain)
ofshex dumpascii
0000 67 70 74 65 6c 2d 30 2e 39 2e 38 2e 35 2f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 gptel-0.9.8.5/..................
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 34 34 35 00 20 35 00 00 00 0000000.00000000000.011445..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 38 2e 35 2f 52 45 41 44 4d 45 2e 6f 72 67 00 00 00 00 00 00 00 00 gptel-0.9.8.5/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 34 32 33 32 31 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 33 31 31 37 00 20 30 00 00 00 0242321.00000000000.013117..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 23 2b 68 74 6d 6c 3a 20 3c 64 69 76 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 er...#+html:.<div.align="center"
0680 3e 0a 7c 20 4c 4c 4d 20 42 61 63 6b 65 6e 64 20 20 20 20 20 20 20 20 20 20 7c 20 53 75 70 70 6f >.|.LLM.Backend..........|.Suppo
06a0 72 74 73 20 7c 20 52 65 71 75 69 72 65 73 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rts.|.Requires..................
06c0 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 2b 2d 2d 2d 2d 2d .|.|----------------------+-----
06e0 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 -----+--------------------------
0700 2d 2d 7c 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 e2 9c 93 --|.|.ChatGPT..............|....
0720 20 20 20 20 20 20 20 20 7c 20 5b 5b 68 74 74 70 73 3a 2f 2f 70 6c 61 74 66 6f 72 6d 2e 6f 70 65 ........|.[[https://platform.ope
0740 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 41 50 49 20 6b 65 nai.com/account/api-keys][API.ke
0760 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 6e 74 68 72 y]]....................|.|.Anthr
0780 6f 70 69 63 20 28 43 6c 61 75 64 65 29 20 20 20 7c 20 e2 9c 93 20 20 20 20 20 20 20 20 7c 20 5b opic.(Claude)...|............|.[
07a0 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 69 5d 5b [https://www.anthropic.com/api][
07c0 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]]....................|.|
07e0 20 47 65 6d 69 6e 69 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 e2 9c 93 20 20 20 20 20 .Gemini...............|.........
0800 20 20 20 7c 20 5b 5b 68 74 74 70 73 3a 2f 2f 6d 61 6b 65 72 73 75 69 74 65 2e 67 6f 6f 67 6c 65 ...|.[[https://makersuite.google
0820 2e 63 6f 6d 2f 61 70 70 2f 61 70 69 6b 65 79 5d 5b 41 50 49 20 6b 65 79 5d 5d 20 20 20 20 20 20 .com/app/apikey][API.key]]......
0840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 7c 20 4f 6c 6c 61 6d 61 20 20 20 20 20 20 20 20 ..............|.|.Ollama........
0860 20 20 20 20 20 20 20 7c 20 e2 9c 93 20 20 20 20 20 20 20 20 7c 20 5b 5b 68 74 74 70 73 3a 2f 2f .......|............|.[[https://
0880 6f 6c 6c 61 6d 61 2e 61 69 2f 5d 5b 4f 6c 6c 61 6d 61 20 72 75 6e 6e 69 6e 67 20 6c 6f 63 61 6c ollama.ai/][Ollama.running.local
08a0 6c 79 5d 5d 20 20 20 20 20 7c 0a 7c 20 4c 6c 61 6d 61 2e 63 70 70 20 20 20 20 20 20 20 20 20 20 ly]].....|.|.Llama.cpp..........
08c0 20 20 7c 20 e2 9c 93 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 ..|............|.[[https://githu
08e0 62 2e 63 6f 6d 2f 67 67 6d 6c 2d 6f 72 67 2f 6c 6c 61 6d 61 2e 63 70 70 2f 74 72 65 65 2f 6d 61 b.com/ggml-org/llama.cpp/tree/ma
0900 73 74 65 72 2f 74 6f 6f 6c 73 2f 73 65 72 76 65 72 23 71 75 69 63 6b 2d 73 74 61 72 74 5d 5b 4c ster/tools/server#quick-start][L
0920 6c 61 6d 61 2e 63 70 70 20 72 75 6e 6e 69 6e 67 20 6c 6f 63 61 6c 6c 79 5d 5d 20 20 7c 0a 7c 20 lama.cpp.running.locally]]..|.|.
0940 4c 6c 61 6d 61 66 69 6c 65 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 e2 9c 93 20 20 20 20 20 20 Llamafile............|..........
0960 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 61 ..|.[[https://github.com/Mozilla
0980 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 61 -Ocho/llamafile#quickstart][Loca
09a0 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 54 l.Llamafile.server]].....|.|.GPT
09c0 34 41 6c 6c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 e2 9c 93 20 20 20 20 20 20 20 20 7c 4All..............|............|
09e0 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 70 74 34 61 6c 6c 2e 69 6f 2f 69 6e 64 65 78 2e 68 74 6d 6c .[[https://gpt4all.io/index.html
0a00 5d 5b 47 50 54 34 41 6c 6c 20 72 75 6e 6e 69 6e 67 20 6c 6f 63 61 6c 6c 79 5d 5d 20 20 20 20 7c ][GPT4All.running.locally]]....|
0a20 0a 7c 20 4b 61 67 69 20 46 61 73 74 47 50 54 20 20 20 20 20 20 20 20 20 7c 20 e2 9c 93 20 20 20 .|.Kagi.FastGPT.........|.......
0a40 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 69 6e .....|.[[https://kagi.com/settin
0a60 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 20 20 gs?p=api][API.key]].............
0a80 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 72 20 20 20 20 20 20 .......|.|.Kagi.Summarizer......
0aa0 7c 20 e2 9c 93 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 |............|.[[https://kagi.co
0ac0 6d 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 m/settings?p=api][API.key]].....
0ae0 20 20 20 20 20 20 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 ...............|.|.Azure........
0b00 20 20 20 20 20 20 20 20 7c 20 e2 9c 93 20 20 20 20 20 20 20 20 7c 20 44 65 70 6c 6f 79 6d 65 6e ........|............|.Deploymen
0b20 74 20 61 6e 64 20 41 50 49 20 6b 65 79 20 20 20 20 20 7c 0a 7c 20 47 72 6f 71 20 20 20 20 20 20 t.and.API.key.....|.|.Groq......
0b40 20 20 20 20 20 20 20 20 20 20 20 7c 20 e2 9c 93 20 20 20 20 20 20 20 20 7c 20 5b 5b 68 74 74 70 ...........|............|.[[http
0b60 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
0b80 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
0ba0 72 61 6c 20 4c 65 20 43 68 61 74 20 20 20 20 20 20 7c 20 e2 9c 93 20 20 20 20 20 20 20 20 7c 20 ral.Le.Chat......|............|.
0bc0 5b 5b 68 74 74 70 73 3a 2f 2f 63 6f 6e 73 6f 6c 65 2e 6d 69 73 74 72 61 6c 2e 61 69 2f 61 70 69 [[https://console.mistral.ai/api
0be0 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 20 20 20 -keys][API.key]]................
0c00 20 20 20 20 7c 0a 7c 20 50 65 72 70 6c 65 78 69 74 79 20 20 20 20 20 20 20 20 20 20 20 7c 20 e2 ....|.|.Perplexity...........|..
0c20 9c 93 20 20 20 20 20 20 20 20 7c 20 5b 5b 68 74 74 70 73 3a 2f 2f 64 6f 63 73 2e 70 65 72 70 6c ..........|.[[https://docs.perpl
0c40 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 74 65 64 5d 5b 41 exity.ai/docs/getting-started][A
0c60 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 20 PI.key]]....................|.|.
0c80 4f 70 65 6e 52 6f 75 74 65 72 20 20 20 20 20 20 20 20 20 20 20 7c 20 e2 9c 93 20 20 20 20 20 20 OpenRouter...........|..........
0ca0 20 20 7c 20 5b 5b 68 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 ..|.[[https://openrouter.ai/keys
0cc0 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 7c ][API.key]]....................|
0ce0 0a 7c 20 74 6f 67 65 74 68 65 72 2e 61 69 20 20 20 20 20 20 20 20 20 20 7c 20 e2 9c 93 20 20 20 .|.together.ai..........|.......
0d00 20 20 20 20 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 .....|.[[https://api.together.xy
0d20 7a 2f 73 65 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 z/settings/api-keys][API.key]]..
0d40 20 20 20 20 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 ..................|.|.Anyscale..
0d60 20 20 20 20 20 20 20 20 20 20 20 7c 20 e2 9c 93 20 20 20 20 20 20 20 20 7c 20 5b 5b 68 74 74 70 ...........|............|.[[http
0d80 73 3a 2f 2f 64 6f 63 73 2e 65 6e 64 70 6f 69 6e 74 73 2e 61 6e 79 73 63 61 6c 65 2e 63 6f 6d 2f s://docs.endpoints.anyscale.com/
0da0 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 7c ][API.key]]....................|
0dc0 0a 7c 20 50 72 69 76 61 74 65 47 50 54 20 20 20 20 20 20 20 20 20 20 20 7c 20 e2 9c 93 20 20 20 .|.PrivateGPT...........|.......
0de0 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 6c 6f .....|.[[https://github.com/zylo
0e00 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 6e 5d n-ai/private-gpt#-documentation]
0e20 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 7c 0a [PrivateGPT.running.locally]].|.
0e40 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 e2 9c 93 20 20 20 20 |.DeepSeek.............|........
0e60 20 20 20 20 7c 20 5b 5b 68 74 74 70 73 3a 2f 2f 70 6c 61 74 66 6f 72 6d 2e 64 65 65 70 73 65 65 ....|.[[https://platform.deepsee
0e80 6b 2e 63 6f 6d 2f 61 70 69 5f 6b 65 79 73 5d 5b 41 50 49 20 6b 65 79 5d 5d 20 20 20 20 20 20 20 k.com/api_keys][API.key]].......
0ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 7c 20 53 61 6d 62 61 6e 6f 76 61 20 28 44 65 65 70 .............|.|.Sambanova.(Deep
0ec0 73 65 65 6b 29 20 7c 20 e2 9c 93 20 20 20 20 20 20 20 20 7c 20 5b 5b 68 74 74 70 73 3a 2f 2f 63 seek).|............|.[[https://c
0ee0 6c 6f 75 64 2e 73 61 6d 62 61 6e 6f 76 61 2e 61 69 2f 61 70 69 73 5d 5b 41 50 49 20 6b 65 79 5d loud.sambanova.ai/apis][API.key]
0f00 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 43 65 72 65 62 72 61 ]....................|.|.Cerebra
0f20 73 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 e2 9c 93 20 20 20 20 20 20 20 20 7c 20 5b 5b 68 s.............|............|.[[h
0f40 74 74 70 73 3a 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 ttps://cloud.cerebras.ai/][API.k
0f60 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 47 69 74 68 ey]]....................|.|.Gith
0f80 75 62 20 4d 6f 64 65 6c 73 20 20 20 20 20 20 20 20 7c 20 e2 9c 93 20 20 20 20 20 20 20 20 7c 20 ub.Models........|............|.
0fa0 5b 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 74 6f [[https://github.com/settings/to
0fc0 6b 65 6e 73 5d 5b 54 6f 6b 65 6e 5d 5d 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 kens][Token]]...................
0fe0 20 20 20 7c 0a 7c 20 4e 6f 76 69 74 61 20 41 49 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 e2 9c ...|.|.Novita.AI............|...
1000 93 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 6d .........|.[[https://novita.ai/m
1020 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 75 odel-api/product/llm-api?utm_sou
1040 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 68 rce=github_gptel&utm_medium=gith
1060 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 6b ub_readme&utm_campaign=link][Tok
1080 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 41 en]]......................|.|.xA
10a0 49 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 e2 9c 93 20 20 20 20 20 20 20 20 I..................|............
10c0 7c 20 5b 5b 68 74 74 70 73 3a 2f 2f 63 6f 6e 73 6f 6c 65 2e 78 2e 61 69 3f 75 74 6d 5f 73 6f 75 |.[[https://console.x.ai?utm_sou
10e0 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 68 rce=github_gptel&utm_medium=gith
1100 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 41 50 49 ub_readme&utm_campaign=link][API
1120 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 20 47 69 .key]]....................|.|.Gi
1140 74 68 75 62 20 43 6f 70 69 6c 6f 74 43 68 61 74 20 20 20 7c 20 e2 9c 93 20 20 20 20 20 20 20 20 thub.CopilotChat...|............
1160 7c 20 47 69 74 68 75 62 20 61 63 63 6f 75 6e 74 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 7c |.Github.account.............|.|
1180 20 42 65 64 72 6f 63 6b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 e2 9c 93 20 20 20 20 20 .Bedrock..............|.........
11a0 20 20 20 7c 20 41 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 ...|.AWS.credentials............
11c0 7c 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 69 76 3e 0a 0a 2a 47 65 6e 65 72 61 6c 20 75 73 61 67 65 |.#+html:.</div>..*General.usage
11e0 2a 3a 20 28 5b 5b 68 74 74 70 73 3a 2f 2f 77 77 77 2e 79 6f 75 74 75 62 65 2e 63 6f 6d 2f 77 61 *:.([[https://www.youtube.com/wa
1200 74 63 68 3f 76 3d 62 73 52 6e 68 5f 62 72 67 67 4d 5d 5b 59 6f 75 54 75 62 65 20 44 65 6d 6f 5d tch?v=bsRnh_brggM][YouTube.Demo]
1220 5d 29 0a 0a 68 74 74 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 ])..https://user-images.githubus
1240 65 72 63 6f 6e 74 65 6e 74 2e 63 6f 6d 2f 38 36 30 37 35 33 32 2f 32 33 30 35 31 36 38 31 32 2d ercontent.com/8607532/230516812-
1260 38 36 35 31 30 61 30 39 2d 61 32 66 62 2d 34 63 62 64 2d 62 35 33 66 2d 63 63 32 35 32 32 64 30 86510a09-a2fb-4cbd-b53f-cc2522d0
1280 35 61 31 33 2e 6d 70 34 0a 0a 68 74 74 70 73 3a 2f 2f 75 73 65 72 2d 69 6d 61 67 65 73 2e 67 69 5a13.mp4..https://user-images.gi
12a0 74 68 75 62 75 73 65 72 63 6f 6e 74 65 6e 74 2e 63 6f 6d 2f 38 36 30 37 35 33 32 2f 32 33 30 35 thubusercontent.com/8607532/2305
12c0 31 36 38 31 36 2d 61 65 34 61 36 31 33 61 2d 34 64 30 31 2d 34 30 37 33 2d 61 64 33 66 2d 62 36 16816-ae4a613a-4d01-4073-ad3f-b6
12e0 36 66 61 37 33 63 36 65 34 35 2e 6d 70 34 0a 0a 2a 49 6e 2d 70 6c 61 63 65 20 75 73 61 67 65 2a 6fa73c6e45.mp4..*In-place.usage*
1300 0a 0a 23 2b 68 74 6d 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 ..#+html:.<p.align="center">.htt
1320 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 63 68 6d 65 6e 74 73 ps://github.com/user-attachments
1340 2f 61 73 73 65 74 73 2f 63 65 63 31 31 61 65 63 2d 35 32 66 36 2d 34 31 32 65 2d 39 65 37 61 2d /assets/cec11aec-52f6-412e-9e7a-
1360 39 33 35 38 65 38 62 39 62 31 62 66 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 70 3e 0a 0a 2a 54 6f 6f 6c 9358e8b9b1bf.#+html:.</p>..*Tool
1380 20 75 73 65 2a 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 70 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 .use*..#+html:.<p.align="center"
13a0 3e 0a 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 63 68 >.https://github.com/user-attach
13c0 6d 65 6e 74 73 2f 61 73 73 65 74 73 2f 35 66 39 39 33 36 35 39 2d 34 63 66 64 2d 34 39 66 61 2d ments/assets/5f993659-4cfd-49fa-
13e0 62 35 63 64 2d 31 39 63 35 35 37 36 36 62 39 62 32 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 70 3e 0a 0a b5cd-19c55766b9b2.#+html:.</p>..
1400 23 2b 68 74 6d 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 #+html:.<p.align="center">.https
1420 3a 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 ://github.com/user-attachments/a
1440 73 73 65 74 73 2f 38 66 35 37 63 32 30 62 2d 65 31 62 30 2d 34 64 38 36 2d 62 39 37 32 2d 66 34 ssets/8f57c20b-e1b0-4d86-b972-f4
1460 36 66 62 39 30 61 65 31 65 37 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 70 3e 0a 0a 53 65 65 20 61 6c 73 6fb90ae1e7.#+html:.</p>..See.als
1480 6f 20 5b 5b 68 74 74 70 73 3a 2f 2f 79 6f 75 74 75 2e 62 65 2f 67 31 56 4d 47 68 43 35 67 52 55 o.[[https://youtu.be/g1VMGhC5gRU
14a0 5d 5b 74 68 69 73 20 79 6f 75 74 75 62 65 20 64 65 6d 6f 20 28 32 20 6d 69 6e 75 74 65 73 29 5d ][this.youtube.demo.(2.minutes)]
14c0 5d 20 62 79 20 41 72 6d 69 6e 20 44 61 72 76 69 73 68 2e 0a 0a 23 20 2a 4d 65 64 69 61 20 73 75 ].by.Armin.Darvish...#.*Media.su
14e0 70 70 6f 72 74 2a 0a 0a 23 20 23 2b 68 74 6d 6c 3a 20 3c 70 20 61 6c 69 67 6e 3d 22 63 65 6e 74 pport*..#.#+html:.<p.align="cent
1500 65 72 22 3e 0a 23 20 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 er">.#.https://github.com/user-a
1520 74 74 61 63 68 6d 65 6e 74 73 2f 61 73 73 65 74 73 2f 31 66 64 39 34 37 65 31 2d 32 32 36 62 2d ttachments/assets/1fd947e1-226b-
1540 34 62 65 32 2d 62 63 36 38 2d 37 62 32 32 62 32 65 33 32 31 35 66 0a 23 20 23 2b 68 74 6d 6c 3a 4be2-bc68-7b22b2e3215f.#.#+html:
1560 20 3c 2f 70 3e 0a 0a 23 20 2a 4d 75 6c 74 69 2d 4c 4c 4d 20 73 75 70 70 6f 72 74 20 64 65 6d 6f .</p>..#.*Multi-LLM.support.demo
1580 2a 3a 0a 0a 23 20 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2d 70 72 6f 64 75 63 74 69 6f 6e 2d *:..#.https://github-production-
15a0 75 73 65 72 2d 61 73 73 65 74 2d 36 32 31 30 64 66 2e 73 33 2e 61 6d 61 7a 6f 6e 61 77 73 2e 63 user-asset-6210df.s3.amazonaws.c
15c0 6f 6d 2f 38 36 30 37 35 33 32 2f 32 37 38 38 35 34 30 32 34 2d 61 65 31 33 33 36 63 34 2d 35 62 om/8607532/278854024-ae1336c4-5b
15e0 38 37 2d 34 31 66 32 2d 38 33 65 39 2d 65 34 31 35 33 34 39 64 36 61 34 33 2e 6d 70 34 0a 0a 2d 87-41f2-83e9-e415349d6a43.mp4..-
1600 2d 2d 2d 2d 2d 0a 0a 2d 20 67 70 74 65 6c 20 69 73 20 61 73 79 6e 63 20 61 6e 64 20 66 61 73 74 -----..-.gptel.is.async.and.fast
1620 2c 20 73 74 72 65 61 6d 73 20 72 65 73 70 6f 6e 73 65 73 2e 0a 2d 20 49 6e 74 65 72 61 63 74 20 ,.streams.responses..-.Interact.
1640 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
1660 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,
1680 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 20 61 72 65 20 .wherever)..-.LLM.responses.are.
16a0 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 2d 20 53 75 70 in.Markdown.or.Org.markup..-.Sup
16c0 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 63 6f 6e 76 65 ports.multiple.independent.conve
16e0 72 73 61 74 69 6f 6e 73 20 61 6e 64 20 6f 6e 65 2d 6f 66 66 20 61 64 20 68 6f 63 20 69 6e 74 65 rsations.and.one-off.ad.hoc.inte
1700 72 61 63 74 69 6f 6e 73 2e 0a 2d 20 53 75 70 70 6f 72 74 73 20 74 6f 6f 6c 2d 75 73 65 20 74 6f ractions..-.Supports.tool-use.to
1720 20 65 71 75 69 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 .equip.LLMs.with.agentic.capabil
1740 69 74 69 65 73 2e 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 ities..-.Supports.Model.Context.
1760 50 72 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 Protocol.(MCP).integration.using
1780 20 5b 5b 68 74 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 .[[https://github.com/lizqwersco
17a0 74 74 2f 6d 63 70 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 tt/mcp.el][mcp.el]]..-.Supports.
17c0 6d 75 6c 74 69 2d 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 multi-modal.input.(include.image
17e0 73 2c 20 64 6f 63 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 s,.documents)..-.Supports."reaso
1800 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 2e 0a ning".content.in.LLM.responses..
1820 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 6b 64 6f 77 6e -.Save.chats.as.regular.Markdown
1840 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 74 68 65 6d 20 /Org/Text.files.and.resume.them.
1860 6c 61 74 65 72 2e 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 later..-.Edit.your.previous.prom
1880 70 74 73 20 6f 72 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 73 20 77 68 65 6e 20 63 6f 6e 74 69 6e pts.or.LLM.responses.when.contin
18a0 75 69 6e 67 20 61 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 uing.a.conversation..These.will.
18c0 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 2d 20 53 75 70 70 be.fed.back.to.the.model..-.Supp
18e0 6f 72 74 73 20 69 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 orts.introspection,.so.you.can.s
1900 65 65 20 2f 65 78 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 ee./exactly/.what.will.be.sent..
1920 20 49 6e 73 70 65 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 .Inspect.and.modify.queries.befo
1940 72 65 20 73 65 6e 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 re.sending.them..-.Pause.multi-s
1960 74 61 67 65 20 72 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 tage.requests.at.an.intermediate
1980 20 73 74 61 67 65 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 .stage.and.resume.them.later..-.
19a0 44 6f 6e 27 74 20 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 Don't.like.gptel's.workflow?.Use
19c0 20 69 74 20 74 6f 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 .it.to.create.your.own.for.any.s
19e0 75 70 70 6f 72 74 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 upported.model/backend.with.a.[[
1a00 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 65 https://github.com/karthink/gpte
1a20 6c 2f 77 69 6b 69 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 l/wiki/Defining-custom-gptel-com
1a40 6d 61 6e 64 73 5d 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 mands][simple.API]]...gptel.uses
1a60 20 43 75 72 6c 20 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 .Curl.if.available,.but.falls.ba
1a80 63 6b 20 74 6f 20 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 ck.to.the.built-in.url-retrieve.
1aa0 74 6f 20 77 6f 72 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 to.work.without.external.depende
1ac0 6e 63 69 65 73 2e 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 ncies...**.Contents.:toc:...-.[[
1ae0 23 69 6e 73 74 61 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 #installation][Installation]]...
1b00 20 20 20 20 2d 20 5b 5b 23 73 74 72 61 69 67 68 74 5d 5b 53 74 72 61 69 67 68 74 5d 5d 0a 20 20 ....-.[[#straight][Straight]]...
1b20 20 20 20 20 2d 20 5b 5b 23 6d 61 6e 75 61 6c 5d 5b 4d 61 6e 75 61 6c 5d 5d 0a 20 20 20 20 20 20 ....-.[[#manual][Manual]].......
1b40 2d 20 5b 5b 23 64 6f 6f 6d 2d 65 6d 61 63 73 5d 5b 44 6f 6f 6d 20 45 6d 61 63 73 5d 5d 0a 20 20 -.[[#doom-emacs][Doom.Emacs]]...
1b60 20 20 20 20 2d 20 5b 5b 23 73 70 61 63 65 6d 61 63 73 5d 5b 53 70 61 63 65 6d 61 63 73 5d 5d 0a ....-.[[#spacemacs][Spacemacs]].
1b80 20 20 2d 20 5b 5b 23 73 65 74 75 70 5d 5b 53 65 74 75 70 5d 5d 0a 20 20 20 20 2d 20 5b 5b 23 63 ..-.[[#setup][Setup]].....-.[[#c
1ba0 68 61 74 67 70 74 5d 5b 43 68 61 74 47 50 54 5d 5d 0a 20 20 20 20 2d 20 5b 5b 23 6f 74 68 65 72 hatgpt][ChatGPT]].....-.[[#other
1bc0 2d 6c 6c 6d 2d 62 61 63 6b 65 6e 64 73 5d 5b 4f 74 68 65 72 20 4c 4c 4d 20 62 61 63 6b 65 6e 64 -llm-backends][Other.LLM.backend
1be0 73 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b 23 61 7a 75 72 65 5d 5b 41 7a 75 72 65 5d 5d 0a 20 20 s]].......-.[[#azure][Azure]]...
1c00 20 20 20 20 2d 20 5b 5b 23 67 70 74 34 61 6c 6c 5d 5b 47 50 54 34 41 6c 6c 5d 5d 0a 20 20 20 20 ....-.[[#gpt4all][GPT4All]].....
1c20 20 20 2d 20 5b 5b 23 6f 6c 6c 61 6d 61 5d 5b 4f 6c 6c 61 6d 61 5d 5d 0a 20 20 20 20 20 20 2d 20 ..-.[[#ollama][Ollama]].......-.
1c40 5b 5b 23 67 65 6d 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 [[#gemini][Gemini]].......-.[[#l
1c60 6c 61 6d 61 63 70 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 lamacpp-or-llamafile][Llama.cpp.
1c80 6f 72 20 4c 6c 61 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 or.Llamafile]].......-.[[#kagi-f
1ca0 61 73 74 67 70 74 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 astgpt--summarizer][Kagi.(FastGP
1cc0 54 20 26 20 53 75 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 T.&.Summarizer)]].......-.[[#tog
1ce0 65 74 68 65 72 61 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 etherai][together.ai]].......-.[
1d00 5b 23 61 6e 79 73 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 [#anyscale][Anyscale]].......-.[
1d20 5b 23 70 65 72 70 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 [#perplexity][Perplexity]]......
1d40 20 2d 20 5b 5b 23 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 .-.[[#anthropic-claude][Anthropi
1d60 63 20 28 43 6c 61 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 c.(Claude)]].......-.[[#groq][Gr
1d80 6f 71 5d 5d 0a 20 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 oq]].......-.[[#mistral-le-chat]
1da0 5b 4d 69 73 74 72 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 [Mistral.Le.Chat]].......-.[[#op
1dc0 65 6e 72 6f 75 74 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 enrouter][OpenRouter]].......-.[
1de0 5b 23 70 72 69 76 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 [#privategpt][PrivateGPT]]......
1e00 20 2d 20 5b 5b 23 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 .-.[[#deepseek][DeepSeek]]......
1e20 20 2d 20 5b 5b 23 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 .-.[[#sambanova-deepseek][Samban
1e40 6f 76 61 20 28 44 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 ova.(Deepseek)]].......-.[[#cere
1e60 62 72 61 73 5d 5b 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 bras][Cerebras]].......-.[[#gith
1e80 75 62 2d 6d 6f 64 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 ub-models][Github.Models]]......
1ea0 20 2d 20 5b 5b 23 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 .-.[[#novita-ai][Novita.AI]]....
1ec0 20 20 20 2d 20 5b 5b 23 78 61 69 5d 5b 78 41 49 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b 23 67 69 ...-.[[#xai][xAI]].......-.[[#gi
1ee0 74 68 75 62 2d 63 6f 70 69 6c 6f 74 63 68 61 74 5d 5b 47 69 74 68 75 62 20 43 6f 70 69 6c 6f 74 thub-copilotchat][Github.Copilot
1f00 43 68 61 74 5d 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 Chat]].......-.[[#aws-bedrock][A
1f20 57 53 20 42 65 64 72 6f 63 6b 5d 5d 0a 20 20 2d 20 5b 5b 23 75 73 61 67 65 5d 5b 55 73 61 67 65 WS.Bedrock]]...-.[[#usage][Usage
1f40 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 5d 5b 49 6e 20 61 6e ]].....-.[[#in-any-buffer][In.an
1f60 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 2d 64 65 64 69 63 61 y.buffer:]].....-.[[#in-a-dedica
1f80 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 69 63 61 74 65 64 20 ted-chat-buffer][In.a.dedicated.
1fa0 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 23 69 6e 63 6c 75 64 chat.buffer:]].......-.[[#includ
1fc0 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 73 2d 6f 72 2d 70 6c ing-media-images-documents-or-pl
1fe0 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 73 74 73 5d 5b 49 6e ain-text-files-with-requests][In
2000 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 63 75 6d 65 6e 74 73 cluding.media.(images,.documents
2020 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 68 20 72 65 71 75 65 .or.plain-text.files).with.reque
2040 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 2d 72 65 73 74 6f 72 sts]].......-.[[#save-and-restor
2060 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 65 20 61 6e 64 20 72 e-your-chat-sessions][Save.and.r
2080 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 5d 5d 0a 20 20 20 20 estore.your.chat.sessions]].....
20a0 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 65 6e 64 2d 6d 6f 64 -.[[#setting-options-backend-mod
20c0 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 74 65 6d 2d 70 72 6f el-request-parameters-system-pro
20e0 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 74 69 6f 6e 73 20 28 mpts-and-more][Setting.options.(
2100 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 72 61 6d 65 74 65 backend,.model,.request.paramete
2120 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 65 29 5d 5d 0a 20 rs,.system.prompts.and.more)]]..
2140 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 65 78 74 2d 77 69 74 ...-.[[#include-more-context-wit
2160 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 63 6f 6e 74 65 78 74 h-requests][Include.more.context
2180 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 23 68 61 6e 64 6c 65 .with.requests]].....-.[[#handle
21a0 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 65 20 22 72 65 61 73 -reasoning-content][Handle."reas
21c0 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 23 74 6f 6f 6c 2d 75 oning".content]].....-.[[#tool-u
21e0 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 23 64 65 66 69 6e 69 se][Tool.use]].......-.[[#defini
2200 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 67 70 74 65 6c 20 74 ng-gptel-tools][Defining.gptel.t
2220 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 6e 67 2d 74 6f 6f 6c ools]].......-.[[#selecting-tool
2240 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 20 20 2d 20 5b 5b 23 s][Selecting.tools]].......-.[[#
2260 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 70 2d 69 6e 74 65 67 model-context-protocol-mcp-integ
2280 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 74 6f 63 6f 6c 20 28 ration][Model.Context.Protocol.(
22a0 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 5b 5b 23 72 65 77 72 MCP).integration]].....-.[[#rewr
22c0 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 2d 72 65 67 69 6f 6e ite-refactor-or-fill-in-a-region
22e0 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 6c 6c 20 69 6e 20 61 ][Rewrite,.refactor.or.fill.in.a
2300 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 6f 72 67 2d 6d 6f 64 .region]].....-.[[#extra-org-mod
2320 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 20 6d 6f 64 65 20 63 e-conveniences][Extra.Org.mode.c
2340 6f 6e 76 65 6e 69 65 6e 63 65 73 5d 5d 0a 20 20 2d 20 5b 5b 23 66 61 71 5d 5b 46 41 51 5d 5d 0a onveniences]]...-.[[#faq][FAQ]].
2360 20 20 20 20 2d 20 5b 5b 23 63 68 61 74 2d 62 75 66 66 65 72 2d 75 69 5d 5b 43 68 61 74 20 62 75 ....-.[[#chat-buffer-ui][Chat.bu
2380 66 66 65 72 20 55 49 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b 23 69 2d 77 61 6e 74 2d 74 68 65 2d ffer.UI]].......-.[[#i-want-the-
23a0 77 69 6e 64 6f 77 2d 74 6f 2d 73 63 72 6f 6c 6c 2d 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2d 61 window-to-scroll-automatically-a
23c0 73 2d 74 68 65 2d 72 65 73 70 6f 6e 73 65 2d 69 73 2d 69 6e 73 65 72 74 65 64 5d 5b 49 20 77 61 s-the-response-is-inserted][I.wa
23e0 6e 74 20 74 68 65 20 77 69 6e 64 6f 77 20 74 6f 20 73 63 72 6f 6c 6c 20 61 75 74 6f 6d 61 74 69 nt.the.window.to.scroll.automati
2400 63 61 6c 6c 79 20 61 73 20 74 68 65 20 72 65 73 70 6f 6e 73 65 20 69 73 20 69 6e 73 65 72 74 65 cally.as.the.response.is.inserte
2420 64 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b 23 69 2d 77 61 6e 74 2d 74 68 65 2d 63 75 72 73 6f 72 d]].......-.[[#i-want-the-cursor
2440 2d 74 6f 2d 6d 6f 76 65 2d 74 6f 2d 74 68 65 2d 6e 65 78 74 2d 70 72 6f 6d 70 74 2d 61 66 74 65 -to-move-to-the-next-prompt-afte
2460 72 2d 74 68 65 2d 72 65 73 70 6f 6e 73 65 2d 69 73 2d 69 6e 73 65 72 74 65 64 5d 5b 49 20 77 61 r-the-response-is-inserted][I.wa
2480 6e 74 20 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 nt.the.cursor.to.move.to.the.nex
24a0 74 20 70 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 t.prompt.after.the.response.is.i
24c0 6e 73 65 72 74 65 64 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b 23 69 2d 77 61 6e 74 2d 74 6f 2d 63 nserted]].......-.[[#i-want-to-c
24e0 68 61 6e 67 65 2d 74 68 65 2d 66 6f 72 6d 61 74 74 69 6e 67 2d 6f 66 2d 74 68 65 2d 70 72 6f 6d hange-the-formatting-of-the-prom
2500 70 74 2d 61 6e 64 2d 6c 6c 6d 2d 72 65 73 70 6f 6e 73 65 5d 5b 49 20 77 61 6e 74 20 74 6f 20 63 pt-and-llm-response][I.want.to.c
2520 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 6f 6d hange.the.formatting.of.the.prom
2540 70 74 20 61 6e 64 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b pt.and.LLM.response]].......-.[[
2560 23 68 6f 77 2d 64 6f 65 73 2d 67 70 74 65 6c 2d 64 69 73 74 69 6e 67 75 69 73 68 2d 62 65 74 77 #how-does-gptel-distinguish-betw
2580 65 65 6e 2d 75 73 65 72 2d 70 72 6f 6d 70 74 73 2d 61 6e 64 2d 6c 6c 6d 2d 72 65 73 70 6f 6e 73 een-user-prompts-and-llm-respons
25a0 65 73 5d 5b 48 6f 77 20 64 6f 65 73 20 67 70 74 65 6c 20 64 69 73 74 69 6e 67 75 69 73 68 20 62 es][How.does.gptel.distinguish.b
25c0 65 74 77 65 65 6e 20 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 etween.user.prompts.and.LLM.resp
25e0 6f 6e 73 65 73 3f 5d 5d 0a 20 20 20 20 2d 20 5b 5b 23 74 72 61 6e 73 69 65 6e 74 2d 6d 65 6e 75 onses?]].....-.[[#transient-menu
2600 2d 62 65 68 61 76 69 6f 72 5d 5b 54 72 61 6e 73 69 65 6e 74 20 6d 65 6e 75 20 62 65 68 61 76 69 -behavior][Transient.menu.behavi
2620 6f 72 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b 23 69 2d 77 61 6e 74 2d 74 6f 2d 73 65 74 2d 67 70 or]].......-.[[#i-want-to-set-gp
2640 74 65 6c 2d 6f 70 74 69 6f 6e 73 2d 62 75 74 2d 6f 6e 6c 79 2d 66 6f 72 2d 74 68 69 73 2d 62 75 tel-options-but-only-for-this-bu
2660 66 66 65 72 5d 5b 49 20 77 61 6e 74 20 74 6f 20 73 65 74 20 67 70 74 65 6c 20 6f 70 74 69 6f 6e ffer][I.want.to.set.gptel.option
2680 73 2c 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 5d 5d 0a 20 20 s,.but.only.for.this.buffer]]...
26a0 20 20 20 20 2d 20 5b 5b 23 69 2d 77 61 6e 74 2d 74 68 65 2d 74 72 61 6e 73 69 65 6e 74 2d 6d 65 ....-.[[#i-want-the-transient-me
26c0 6e 75 2d 6f 70 74 69 6f 6e 73 2d 74 6f 2d 62 65 2d 73 61 76 65 64 2d 73 6f 2d 69 2d 6f 6e 6c 79 nu-options-to-be-saved-so-i-only
26e0 2d 6e 65 65 64 2d 74 6f 2d 73 65 74 2d 74 68 65 6d 2d 6f 6e 63 65 5d 5b 49 20 77 61 6e 74 20 74 -need-to-set-them-once][I.want.t
2700 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.
2720 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
2740 20 6f 6e 63 65 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b 23 75 73 69 6e 67 2d 74 68 65 2d 74 72 61 .once]].......-.[[#using-the-tra
2760 6e 73 69 65 6e 74 2d 6d 65 6e 75 2d 6c 65 61 76 65 73 2d 62 65 68 69 6e 64 2d 65 78 74 72 61 2d nsient-menu-leaves-behind-extra-
2780 77 69 6e 64 6f 77 73 5d 5b 55 73 69 6e 67 20 74 68 65 20 74 72 61 6e 73 69 65 6e 74 20 6d 65 6e windows][Using.the.transient.men
27a0 75 20 6c 65 61 76 65 73 20 62 65 68 69 6e 64 20 65 78 74 72 61 20 77 69 6e 64 6f 77 73 5d 5d 0a u.leaves.behind.extra.windows]].
27c0 20 20 20 20 20 20 2d 20 5b 5b 23 63 61 6e 2d 69 2d 63 68 61 6e 67 65 2d 74 68 65 2d 74 72 61 6e ......-.[[#can-i-change-the-tran
27e0 73 69 65 6e 74 2d 6d 65 6e 75 2d 6b 65 79 2d 62 69 6e 64 69 6e 67 73 5d 5b 43 61 6e 20 49 20 63 sient-menu-key-bindings][Can.I.c
2800 68 61 6e 67 65 20 74 68 65 20 74 72 61 6e 73 69 65 6e 74 20 6d 65 6e 75 20 6b 65 79 20 62 69 6e hange.the.transient.menu.key.bin
2820 64 69 6e 67 73 3f 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b 23 64 6f 6f 6d 2d 65 6d 61 63 73 2d 73 dings?]].......-.[[#doom-emacs-s
2840 65 6e 64 69 6e 67 2d 61 2d 71 75 65 72 79 2d 66 72 6f 6d 2d 74 68 65 2d 67 70 74 65 6c 2d 6d 65 ending-a-query-from-the-gptel-me
2860 6e 75 2d 66 61 69 6c 73 2d 62 65 63 61 75 73 65 2d 6f 66 2d 61 2d 6b 65 79 2d 63 6f 6e 66 6c 69 nu-fails-because-of-a-key-confli
2880 63 74 2d 77 69 74 68 2d 6f 72 67 2d 6d 6f 64 65 5d 5b 28 44 6f 6f 6d 20 45 6d 61 63 73 29 20 53 ct-with-org-mode][(Doom.Emacs).S
28a0 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
28c0 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
28e0 63 74 20 77 69 74 68 20 4f 72 67 20 6d 6f 64 65 5d 5d 0a 20 20 20 20 2d 20 5b 5b 23 6d 69 73 63 ct.with.Org.mode]].....-.[[#misc
2900 65 6c 6c 61 6e 65 6f 75 73 5d 5b 4d 69 73 63 65 6c 6c 61 6e 65 6f 75 73 5d 5d 0a 20 20 20 20 20 ellaneous][Miscellaneous]]......
2920 20 2d 20 5b 5b 23 69 2d 77 61 6e 74 2d 74 6f 2d 75 73 65 2d 67 70 74 65 6c 2d 69 6e 2d 61 2d 77 .-.[[#i-want-to-use-gptel-in-a-w
2940 61 79 2d 74 68 61 74 73 2d 6e 6f 74 2d 73 75 70 70 6f 72 74 65 64 2d 62 79 2d 67 70 74 65 6c 2d ay-thats-not-supported-by-gptel-
2960 73 65 6e 64 2d 6f 72 2d 74 68 65 2d 6f 70 74 69 6f 6e 73 2d 6d 65 6e 75 5d 5b 49 20 77 61 6e 74 send-or-the-options-menu][I.want
2980 20 74 6f 20 75 73 65 20 67 70 74 65 6c 20 69 6e 20 61 20 77 61 79 20 74 68 61 74 27 73 20 6e 6f .to.use.gptel.in.a.way.that's.no
29a0 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 20 6f 72 20 74 t.supported.by.=gptel-send=.or.t
29c0 68 65 20 6f 70 74 69 6f 6e 73 20 6d 65 6e 75 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b 23 63 68 61 he.options.menu]].......-.[[#cha
29e0 74 67 70 74 2d 69 2d 67 65 74 2d 74 68 65 2d 65 72 72 6f 72 2d 68 74 74 70 32 2d 34 32 39 2d 79 tgpt-i-get-the-error-http2-429-y
2a00 6f 75 2d 65 78 63 65 65 64 65 64 2d 79 6f 75 72 2d 63 75 72 72 65 6e 74 2d 71 75 6f 74 61 5d 5b ou-exceeded-your-current-quota][
2a20 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 54 50 (ChatGPT).I.get.the.error."(HTTP
2a40 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 65 6e /2.429).You.exceeded.your.curren
2a60 74 20 71 75 6f 74 61 22 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b 23 77 68 79 2d 61 6e 6f 74 68 65 t.quota"]].......-.[[#why-anothe
2a80 72 2d 6c 6c 6d 2d 63 6c 69 65 6e 74 5d 5b 57 68 79 20 61 6e 6f 74 68 65 72 20 4c 4c 4d 20 63 6c r-llm-client][Why.another.LLM.cl
2aa0 69 65 6e 74 3f 5d 5d 0a 20 20 2d 20 5b 5b 23 61 64 64 69 74 69 6f 6e 61 6c 2d 63 6f 6e 66 69 67 ient?]]...-.[[#additional-config
2ac0 75 72 61 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 uration][Additional.Configuratio
2ae0 6e 5d 5d 0a 20 20 20 20 2d 20 5b 5b 23 6f 70 74 69 6f 6e 2d 70 72 65 73 65 74 73 5d 5b 4f 70 74 n]].....-.[[#option-presets][Opt
2b00 69 6f 6e 20 70 72 65 73 65 74 73 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b 23 61 70 70 6c 79 69 6e ion.presets]].......-.[[#applyin
2b20 67 2d 70 72 65 73 65 74 73 2d 74 6f 2d 72 65 71 75 65 73 74 73 2d 61 75 74 6f 6d 61 74 69 63 61 g-presets-to-requests-automatica
2b40 6c 6c 79 5d 5b 41 70 70 6c 79 69 6e 67 20 70 72 65 73 65 74 73 20 74 6f 20 72 65 71 75 65 73 74 lly][Applying.presets.to.request
2b60 73 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 5d 5d 0a 20 20 2d 20 5b 5b 23 61 6c 74 65 72 6e 61 s.automatically]]...-.[[#alterna
2b80 74 69 76 65 73 5d 5b 41 6c 74 65 72 6e 61 74 69 76 65 73 5d 5d 0a 20 20 20 20 2d 20 5b 5b 23 70 tives][Alternatives]].....-.[[#p
2ba0 61 63 6b 61 67 65 73 2d 75 73 69 6e 67 2d 67 70 74 65 6c 5d 5b 50 61 63 6b 61 67 65 73 20 75 73 ackages-using-gptel][Packages.us
2bc0 69 6e 67 20 67 70 74 65 6c 5d 5d 0a 20 20 2d 20 5b 5b 23 61 63 6b 6e 6f 77 6c 65 64 67 6d 65 6e ing.gptel]]...-.[[#acknowledgmen
2be0 74 73 5d 5b 41 63 6b 6e 6f 77 6c 65 64 67 6d 65 6e 74 73 5d 5d 0a 0a 2a 2a 20 43 4f 4d 4d 45 4e ts][Acknowledgments]]..**.COMMEN
2c00 54 20 42 72 65 61 6b 69 6e 67 20 63 68 61 6e 67 65 73 21 0a 0a 2d 20 3d 67 70 74 65 6c 2d 6d 6f T.Breaking.changes!..-.=gptel-mo
2c20 64 65 6c 3d 20 69 73 20 6e 6f 77 20 65 78 70 65 63 74 65 64 20 74 6f 20 62 65 20 61 20 73 79 6d del=.is.now.expected.to.be.a.sym
2c40 62 6f 6c 2c 20 6e 6f 74 20 61 20 73 74 72 69 6e 67 2e 20 20 50 6c 65 61 73 65 20 75 70 64 61 74 bol,.not.a.string...Please.updat
2c60 65 20 79 6f 75 72 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 0a 0a 2a 2a 20 49 6e 73 74 61 6c e.your.configuration...**.Instal
2c80 6c 61 74 69 6f 6e 0a 0a 2d 20 2a 52 65 6c 65 61 73 65 20 76 65 72 73 69 6f 6e 2a 3a 20 3d 4d 2d lation..-.*Release.version*:.=M-
2ca0 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 65 6c 3d 20 69 x.package-install=.....=gptel=.i
2cc0 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 70 73 68 6f 74 n.Emacs..-.*Development.snapshot
2ce0 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 6c 20 45 4c 50 *:.Add.MELPA.or.NonGNU-devel.ELP
2d00 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 6f 75 72 63 65 A.to.your.list.of.package.source
2d20 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 61 63 6b 61 67 s,.then.install.with.=M-x.packag
2d40 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 4f 70 74 69 6f e-install=.....=gptel=..-.*Optio
2d60 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 65 3d 2e 0a 0a nal:*.Install.=markdown-mode=...
2d80 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 20 #+html:.<details><summary>.****.
2da0 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 23 2b 62 65 Straight.#+html:.</summary>.#+be
2dc0 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 68 74 2d 75 gin_src.emacs-lisp...(straight-u
2de0 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 0a 23 2b 68 se-package.'gptel).#+end_src.#+h
2e00 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 73 tml:.</details>.#+html:.<details
2e20 3e 3c 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 4d 61 6e 75 61 6c 0a 23 2b 68 74 6d 6c 3a 20 3c ><summary>.****.Manual.#+html:.<
2e40 2f 73 75 6d 6d 61 72 79 3e 0a 43 6c 6f 6e 65 20 6f 72 20 64 6f 77 6e 6c 6f 61 64 20 74 68 69 73 /summary>.Clone.or.download.this
2e60 20 72 65 70 6f 73 69 74 6f 72 79 20 61 6e 64 20 72 75 6e 20 3d 4d 2d 78 20 70 61 63 6b 61 67 65 .repository.and.run.=M-x.package
2e80 2d 69 6e 73 74 61 6c 6c 2d 66 69 6c 65 e2 8f 8e 3d 20 6f 6e 20 74 68 65 20 72 65 70 6f 73 69 74 -install-file...=.on.the.reposit
2ea0 6f 72 79 20 64 69 72 65 63 74 6f 72 79 2e 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 ory.directory..#+html:.</details
2ec0 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>.***
2ee0 2a 20 44 6f 6f 6d 20 45 6d 61 63 73 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a *.Doom.Emacs.#+html:.</summary>.
2f00 49 6e 20 3d 70 61 63 6b 61 67 65 73 2e 65 6c 3d 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 In.=packages.el=.#+begin_src.ema
2f20 63 73 2d 6c 69 73 70 0a 28 70 61 63 6b 61 67 65 21 20 67 70 74 65 6c 20 3a 72 65 63 69 70 65 20 cs-lisp.(package!.gptel.:recipe.
2f40 28 3a 6e 6f 6e 72 65 63 75 72 73 69 76 65 20 74 29 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 49 6e (:nonrecursive.t)).#+end_src..In
2f60 20 3d 63 6f 6e 66 69 67 2e 65 6c 3d 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c .=config.el=.#+begin_src.emacs-l
2f80 69 73 70 0a 28 75 73 65 2d 70 61 63 6b 61 67 65 21 20 67 70 74 65 6c 0a 20 3a 63 6f 6e 66 69 67 isp.(use-package!.gptel..:config
2fa0 0a 20 28 73 65 74 71 21 20 67 70 74 65 6c 2d 61 70 69 2d 6b 65 79 20 22 79 6f 75 72 20 6b 65 79 ..(setq!.gptel-api-key."your.key
2fc0 22 29 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 22 79 6f 75 72 20 6b 65 79 22 20 63 61 6e 20 62 65 20 ")).#+end_src."your.key".can.be.
2fe0 74 68 65 20 41 50 49 20 6b 65 79 20 69 74 73 65 6c 66 2c 20 6f 72 20 28 73 61 66 65 72 29 20 61 the.API.key.itself,.or.(safer).a
3000 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 2e 20 .function.that.returns.the.key..
3020 20 53 65 74 74 69 6e 67 20 3d 67 70 74 65 6c 2d 61 70 69 2d 6b 65 79 3d 20 69 73 20 6f 70 74 69 .Setting.=gptel-api-key=.is.opti
3040 6f 6e 61 6c 2c 20 79 6f 75 20 77 69 6c 6c 20 62 65 20 61 73 6b 65 64 20 66 6f 72 20 61 20 6b 65 onal,.you.will.be.asked.for.a.ke
3060 79 20 69 66 20 69 74 27 73 20 6e 6f 74 20 66 6f 75 6e 64 2e 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f y.if.it's.not.found...#+html:.</
3080 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 6d 61 details>.#+html:.<details><summa
30a0 72 79 3e 0a 2a 2a 2a 2a 20 53 70 61 63 65 6d 61 63 73 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d ry>.****.Spacemacs.#+html:.</sum
30c0 6d 61 72 79 3e 0a 49 6e 20 79 6f 75 72 20 3d 2e 73 70 61 63 65 6d 61 63 73 3d 20 66 69 6c 65 2c mary>.In.your.=.spacemacs=.file,
30e0 20 61 64 64 20 3d 6c 6c 6d 2d 63 6c 69 65 6e 74 3d 20 74 6f 20 3d 64 6f 74 73 70 61 63 65 6d 61 .add.=llm-client=.to.=dotspacema
3100 63 73 2d 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2d 6c 61 79 65 72 73 3d 2e 0a 23 2b 62 65 67 69 cs-configuration-layers=..#+begi
3120 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 28 6c 6c 6d 2d 63 6c 69 65 6e 74 20 3a 76 61 n_src.emacs-lisp.(llm-client.:va
3140 72 69 61 62 6c 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6c 6d 2d 63 6c 69 65 6e 74 2d 65 riables.............llm-client-e
3160 6e 61 62 6c 65 2d 67 70 74 65 6c 20 74 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 23 2b 68 74 6d 6c 3a nable-gptel.t).#+end_src.#+html:
3180 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 2a 2a 20 53 65 74 75 70 0a 2a 2a 2a 20 43 68 61 74 47 50 54 .</details>.**.Setup.***.ChatGPT
31a0 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 6f .Procure.an.[[https://platform.o
31c0 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 6e penai.com/account/api-keys][Open
31e0 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 70 AI.API.key]]...Optional:.Set.=gp
3200 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 61 tel-api-key=.to.the.key..Alterna
3220 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 65 tively,.you.may.choose.a.more.se
3240 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 20 cure.method.such.as:..-.Setting.
3260 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 74 it.to.a.custom.function.that.ret
3280 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 74 urns.the.key..-.Leaving.it.set.t
32a0 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 6f o.the.default.=gptel-api-key-fro
32c0 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 65 m-auth-source=.function.which.re
32e0 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 65 ads.keys.from.=~/.authinfo=..(Se
3300 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 2d e.[[#optional-securing-api-keys-
3320 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 5d with-authinfo][authinfo.details]
3340 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 74 ])..***.Other.LLM.backends..Chat
3360 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 78 GPT.is.configured.out.of.the.box
3380 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 20 ...If.you.want.to.use.other.LLM.
33a0 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 6e backends.(like.Ollama,.Claude/An
33c0 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 72 thropic.or.Gemini).you.need.to.r
33e0 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 74 egister.and.configure.them.first
3400 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 20 ...As.an.example,.registering.a.
3420 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 65 backend.typically.looks.like.the
3440 20 66 6f 6c 6c 6f 77 69 6e 67 3a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 .following:.#+begin_src.emacs-li
3460 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 64 65 sp.(gptel-make-anthropic."Claude
3480 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 29 0a ".:stream.t.:key.gptel-api-key).
34a0 23 2b 65 6e 64 5f 73 72 63 0a 4f 6e 63 65 20 74 68 69 73 20 62 61 63 6b 65 6e 64 20 69 73 20 72 #+end_src.Once.this.backend.is.r
34c0 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 61 6d 65 egistered,.you'll.see.model.name
34e0 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 72 20 69 s.prefixed.by."Claude:".appear.i
3500 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 72 20 64 n.gptel's.menu...See.below.for.d
3520 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 70 72 6f etails.on.your.preferred.LLM.pro
3540 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 0a 23 2b vider,.including.local.LLMs...#+
3560 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 2a 20 28 html:.<details><summary>.*****.(
3580 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 74 68 Optional).Securing.API.keys.with
35a0 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 0a 0a .=authinfo=.#+html:.</summary>..
35c0 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 70 70 You.can.use.Emacs'.built-in.supp
35e0 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 49 20 ort.for.=authinfo=.to.store.API.
3600 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 6f 75 keys.required.by.gptel...Add.you
3620 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 6e 64 r.API.keys.to.=~/.authinfo=,.and
3640 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 69 74 .leave.=gptel-api-key=.set.to.it
3660 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 49 20 s.default...By.default,.the.API.
3680 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 70 65 endpoint.DNS.name.(e.g.."api.ope
36a0 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 22 61 nai.com").is.used.as.HOST.and."a
36c0 70 69 6b 65 79 22 20 61 73 20 55 53 45 52 2e 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 61 75 74 68 pikey".as.USER..#+begin_src.auth
36e0 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 6f 67 69 info.machine.api.openai.com.logi
3700 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 70 65 6e n.apikey.password.sk-secret-open
3720 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 61 70 69 ai-api-key-goes-here.machine.api
3740 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 61 73 73 .anthropic.com.login.apikey.pass
3760 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 6b 65 79 word.sk-secret-anthropic-api-key
3780 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 20 3c 2f -goes-here.#+end_src..#+html:.</
37a0 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 6d 61 details>.#+html:.<details><summa
37c0 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 61 72 79 ry>.****.Azure.#+html:.</summary
37e0 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
3800 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 61 7a in_src.emacs-lisp.(gptel-make-az
3820 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 61 6d 65 2c ure."Azure-1".............;Name,
3840 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 6f 63 6f 6c .whatever.you'd.like...:protocol
3860 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 20 3b 4f 70 ."https".....................;Op
3880 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 6c 74 0a 20 tional.--.https.is.the.default..
38a0 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 70 65 6e 61 .:host."YOUR_RESOURCE_NAME.opena
38c0 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 70 65 6e 61 i.azure.com"...:endpoint."/opena
38e0 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 54 5f 4e 41 i/deployments/YOUR_DEPLOYMENT_NA
3900 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 69 6f 6e 3d ME/chat/completions?api-version=
3920 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 20 3a 73 74 2023-05-15".;or.equivalent...:st
3940 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 20 ream.t..........................
3960 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 65 73 0a 20 ...;Enable.streaming.responses..
3980 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 65 6c 73 20 .:key.#'gptel-api-key...:models.
39a0 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 64 5f 73 72 '(gpt-3.5-turbo.gpt-4)).#+end_sr
39c0 63 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 6e 20 6f 66 20 c.Refer.to.the.documentation.of.
39e0 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 6f 72 65 20 70 =gptel-make-azure=.to.set.more.p
3a00 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 69 73 20 62 61 arameters...You.can.pick.this.ba
3a20 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
3a40 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 5d 29 2e 0a 0a ptel..(see.[[#usage][Usage]])...
3a60 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 61 *****.(Optional).Set.as.the.defa
3a80 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 64 ult.gptel.backend..The.above.cod
3aa0 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 6f e.makes.the.backend.available.to
3ac0 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 74 .select...If.you.want.it.to.be.t
3ae0 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 6f he.default.backend.for.gptel,.yo
3b00 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 3d u.can.set.this.as.the.value.of.=
3b20 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 61 gptel-backend=...Use.this.instea
3b40 64 20 6f 66 20 74 68 65 20 61 62 6f 76 65 2e 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 d.of.the.above..#+begin_src.emac
3b60 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
3b80 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 2e 35 2d 74 75 72 .(setq..gptel-model.'gpt-3.5-tur
3ba0 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 61 6b 65 2d 61 7a bo..gptel-backend.(gptel-make-az
3bc0 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 20 20 20 20 20 3a ure."Azure-1"..................:
3be0 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 20 20 20 20 20 20 protocol."https"................
3c00 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 70 65 6e ..:host."YOUR_RESOURCE_NAME.open
3c20 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 20 20 20 20 20 3a ai.azure.com"..................:
3c40 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 6e 74 73 2f 59 4f endpoint."/openai/deployments/YO
3c60 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 6d 70 6c 65 74 69 UR_DEPLOYMENT_NAME/chat/completi
3c80 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 22 0a 20 20 20 20 ons?api-version=2023-05-15".....
3ca0 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 20 20 20 20 20 20 .............:stream.t..........
3cc0 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 65 79 0a 20 20 20 ........:key.#'gptel-api-key....
3ce0 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 74 2d 33 2e 35 2d ..............:models.'(gpt-3.5-
3d00 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 23 2b 68 74 6d 6c 3a turbo.gpt-4))).#+end_src.#+html:
3d20 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 74 61 69 6c 73 3e 3c 73 .</details>..#+html:.<details><s
3d40 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 6c 3a 20 3c 2f 73 ummary>.****.GPT4All.#+html:.</s
3d60 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
3d80 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 6d .#+begin_src.emacs-lisp.(gptel-m
3da0 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 20 20 20 20 20 20 20 ake-gpt4all."GPT4All"...........
3dc0 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 70 72 6f 74 6f 63 6f ;Name.of.your.choosing..:protoco
3de0 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 74 3a 34 38 39 31 22 l."http"..:host."localhost:4891"
3e00 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 74 27 73 20 72 75 6e .................;Where.it's.run
3e20 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 62 2d 6f 70 65 6e 6f ning..:models.'(mistral-7b-openo
3e40 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 65 20 6d 6f 64 65 6c rca.Q4_0.gguf)).;Available.model
3e60 73 0a 23 2b 65 6e 64 5f 73 72 63 0a 54 68 65 73 65 20 61 72 65 20 74 68 65 20 72 65 71 75 69 72 s.#+end_src.These.are.the.requir
3e80 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
3ea0 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 70 74 34 61 6c 6c mentation.of.=gptel-make-gpt4all
3ec0 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 20 62 =.for.more...You.can.pick.this.b
3ee0 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 67 20 ackend.from.the.menu.when.using.
3f00 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 2e 0a 0a gptel.(see.[[#usage][Usage]])...
3f20 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 61 *****.(Optional).Set.as.the.defa
3f40 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 64 ult.gptel.backend..The.above.cod
3f60 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 6f e.makes.the.backend.available.to
3f80 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 74 .select...If.you.want.it.to.be.t
3fa0 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 6f he.default.backend.for.gptel,.yo
3fc0 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 3d u.can.set.this.as.the.value.of.=
3fe0 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 61 gptel-backend=...Use.this.instea
4000 64 20 6f 66 20 74 68 65 20 61 62 6f 76 65 2e 20 20 41 64 64 69 74 69 6f 6e 61 6c 6c 79 20 79 6f d.of.the.above...Additionally.yo
4020 75 20 6d 61 79 20 77 61 6e 74 20 74 6f 20 69 6e 63 72 65 61 73 65 20 74 68 65 20 72 65 73 70 6f u.may.want.to.increase.the.respo
4040 6e 73 65 20 74 6f 6b 65 6e 20 73 69 7a 65 20 73 69 6e 63 65 20 47 50 54 34 41 6c 6c 20 75 73 65 nse.token.size.since.GPT4All.use
4060 73 20 76 65 72 79 20 73 68 6f 72 74 20 28 6f 66 74 65 6e 20 74 72 75 6e 63 61 74 65 64 29 20 72 s.very.short.(often.truncated).r
4080 65 73 70 6f 6e 73 65 73 20 62 79 20 64 65 66 61 75 6c 74 2e 0a 23 2b 62 65 67 69 6e 5f 73 72 63 esponses.by.default..#+begin_src
40a0 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
40c0 61 74 69 6f 6e 0a 28 73 65 74 71 0a 20 67 70 74 65 6c 2d 6d 61 78 2d 74 6f 6b 65 6e 73 20 35 30 ation.(setq..gptel-max-tokens.50
40e0 30 0a 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 20 27 6d 69 73 74 72 61 6c 2d 37 62 2d 6f 70 65 6e 6f 0..gptel-model.'mistral-7b-openo
4100 72 63 61 2e 51 34 5f 30 2e 67 67 75 66 0a 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 28 67 70 rca.Q4_0.gguf..gptel-backend.(gp
4120 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 0a 20 20 20 20 20 tel-make-gpt4all."GPT4All"......
4140 20 20 20 20 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 ............:protocol."http"....
4160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 68 6f 73 74 20 22 6c 6f 63 61 6c 68 6f 73 74 3a 34 ..............:host."localhost:4
4180 38 39 31 22 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 891"..................:models.'(
41a0 6d 69 73 74 72 61 6c 2d 37 62 2d 6f 70 65 6e 6f 72 63 61 2e 51 34 5f 30 2e 67 67 75 66 29 29 29 mistral-7b-openorca.Q4_0.gguf)))
41c0 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 0a 0a .#+end_src..#+html:.</details>..
41e0 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 20 #+html:.<details><summary>.****.
4200 4f 6c 6c 61 6d 61 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 Ollama.#+html:.</summary>..Regis
4220 74 65 72 20 61 20 62 61 63 6b 65 6e 64 20 77 69 74 68 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 ter.a.backend.with.#+begin_src.e
4240 6d 61 63 73 2d 6c 69 73 70 0a 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 6c 6c 61 6d 61 20 22 4f 6c macs-lisp.(gptel-make-ollama."Ol
4260 6c 61 6d 61 22 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 41 6e 79 20 6e 61 6d 65 20 6f 66 20 79 lama".............;Any.name.of.y
4280 6f 75 72 20 63 68 6f 6f 73 69 6e 67 0a 20 20 3a 68 6f 73 74 20 22 6c 6f 63 61 6c 68 6f 73 74 3a our.choosing...:host."localhost:
42a0 31 31 34 33 34 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 57 68 65 72 65 20 69 74 27 73 11434"...............;Where.it's
42c0 20 72 75 6e 6e 69 6e 67 0a 20 20 3a 73 74 72 65 61 6d 20 74 20 20 20 20 20 20 20 20 20 20 20 20 .running...:stream.t............
42e0 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 72 65 73 70 6f 6e 73 .................;Stream.respons
4300 65 73 0a 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 20 es...:models.'(mistral:latest)).
4320 20 20 20 20 20 20 20 20 20 3b 4c 69 73 74 20 6f 66 20 6d 6f 64 65 6c 73 0a 23 2b 65 6e 64 5f 73 .........;List.of.models.#+end_s
4340 72 63 0a 54 68 65 73 65 20 61 72 65 20 74 68 65 20 72 65 71 75 69 72 65 64 20 70 61 72 61 6d 65 rc.These.are.the.required.parame
4360 74 65 72 73 2c 20 72 65 66 65 72 20 74 6f 20 74 68 65 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e ters,.refer.to.the.documentation
4380 20 6f 66 20 3d 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 6c 6c 61 6d 61 3d 20 66 6f 72 20 6d 6f 72 65 .of.=gptel-make-ollama=.for.more
43a0 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
43c0 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
43e0 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
4400 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
4420 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
4440 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
4460 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.
4480 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
44a0 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
44c0 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
44e0 6f 76 65 2e 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 ove..#+begin_src.emacs-lisp.;;.O
4500 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 74 PTIONAL.configuration.(setq..gpt
4520 65 6c 2d 6d 6f 64 65 6c 20 27 6d 69 73 74 72 61 6c 3a 6c 61 74 65 73 74 0a 20 67 70 74 65 6c 2d el-model.'mistral:latest..gptel-
4540 62 61 63 6b 65 6e 64 20 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 6c 6c 61 6d 61 20 22 4f 6c 6c 61 backend.(gptel-make-ollama."Olla
4560 6d 61 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 63 61 ma"..................:host."loca
4580 6c 68 6f 73 74 3a 31 31 34 33 34 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 73 lhost:11434"..................:s
45a0 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 6d 6f 64 65 6c 73 tream.t..................:models
45c0 20 27 28 6d 69 73 74 72 61 6c 3a 6c 61 74 65 73 74 29 29 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a .'(mistral:latest))).#+end_src..
45e0 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 74 #+html:.</details>..#+html:.<det
4600 61 69 6c 73 3e 3c 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 47 65 6d 69 6e 69 0a 23 2b 68 74 6d ails><summary>.****.Gemini.#+htm
4620 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
4640 64 20 77 69 74 68 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 d.with.#+begin_src.emacs-lisp.;;
4660 20 3a 6b 65 79 20 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 .:key.can.be.a.function.that.ret
4680 75 72 6e 73 20 74 68 65 20 41 50 49 20 6b 65 79 2e 0a 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 67 65 urns.the.API.key..(gptel-make-ge
46a0 6d 69 6e 69 20 22 47 65 6d 69 6e 69 22 20 3a 6b 65 79 20 22 59 4f 55 52 5f 47 45 4d 49 4e 49 5f mini."Gemini".:key."YOUR_GEMINI_
46c0 41 50 49 5f 4b 45 59 22 20 3a 73 74 72 65 61 6d 20 74 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 54 68 API_KEY".:stream.t).#+end_src.Th
46e0 65 73 65 20 61 72 65 20 74 68 65 20 72 65 71 75 69 72 65 64 20 70 61 72 61 6d 65 74 65 72 73 2c ese.are.the.required.parameters,
4700 20 72 65 66 65 72 20 74 6f 20 74 68 65 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 3d .refer.to.the.documentation.of.=
4720 67 70 74 65 6c 2d 6d 61 6b 65 2d 67 65 6d 69 6e 69 3d 20 66 6f 72 20 6d 6f 72 65 2e 0a 0a 59 6f gptel-make-gemini=.for.more...Yo
4740 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 68 65 u.can.pick.this.backend.from.the
4760 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 23 75 .menu.when.using.gptel.(see.[[#u
4780 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 6c 29 sage][Usage]])..*****.(Optional)
47a0 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
47c0 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
47e0 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
4800 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
4820 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
4840 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=..
4860 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..
4880 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
48a0 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 2d 6d 6f AL.configuration.(setq..gptel-mo
48c0 64 65 6c 20 27 67 65 6d 69 6e 69 2d 32 2e 35 2d 70 72 6f 2d 65 78 70 2d 30 33 2d 32 35 0a 20 67 del.'gemini-2.5-pro-exp-03-25..g
48e0 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 67 65 6d 69 6e 69 20 ptel-backend.(gptel-make-gemini.
4900 22 47 65 6d 69 6e 69 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 "Gemini"..................:key."
4920 59 4f 55 52 5f 47 45 4d 49 4e 49 5f 41 50 49 5f 4b 45 59 22 0a 20 20 20 20 20 20 20 20 20 20 20 YOUR_GEMINI_API_KEY"............
4940 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 0a 23 2b 68 ......:stream.t)).#+end_src..#+h
4960 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 74 61 69 6c tml:.</details>..#+html:.<detail
4980 73 3e 0a 23 2b 68 74 6d 6c 3a 20 3c 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 4c 6c 61 6d 61 2e s>.#+html:.<summary>.****.Llama.
49a0 63 70 70 20 6f 72 20 4c 6c 61 6d 61 66 69 6c 65 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 cpp.or.Llamafile.#+html:.</summa
49c0 72 79 3e 0a 0a 28 49 66 20 75 73 69 6e 67 20 61 20 6c 6c 61 6d 61 66 69 6c 65 2c 20 72 75 6e 20 ry>..(If.using.a.llamafile,.run.
49e0 61 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 61 2d 4f a.[[https://github.com/Mozilla-O
4a00 63 68 6f 2f 6c 6c 61 6d 61 66 69 6c 65 23 6f 74 68 65 72 2d 65 78 61 6d 70 6c 65 2d 6c 6c 61 6d cho/llamafile#other-example-llam
4a20 61 66 69 6c 65 73 5d 5b 73 65 72 76 65 72 20 6c 6c 61 6d 61 66 69 6c 65 5d 5d 20 69 6e 73 74 65 afiles][server.llamafile]].inste
4a40 61 64 20 6f 66 20 61 20 22 63 6f 6d 6d 61 6e 64 2d 6c 69 6e 65 20 6c 6c 61 6d 61 66 69 6c 65 22 ad.of.a."command-line.llamafile"
4a60 2c 20 61 6e 64 20 61 20 6d 6f 64 65 6c 20 74 68 61 74 20 73 75 70 70 6f 72 74 73 20 74 65 78 74 ,.and.a.model.that.supports.text
4a80 20 67 65 6e 65 72 61 74 69 6f 6e 2e 29 0a 0a 52 65 67 69 73 74 65 72 20 61 20 62 61 63 6b 65 6e .generation.)..Register.a.backen
4aa0 64 20 77 69 74 68 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 d.with.#+begin_src.emacs-lisp.;;
4ac0 20 4c 6c 61 6d 61 2e 63 70 70 20 6f 66 66 65 72 73 20 61 6e 20 4f 70 65 6e 41 49 20 63 6f 6d 70 .Llama.cpp.offers.an.OpenAI.comp
4ae0 61 74 69 62 6c 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 6c atible.API.(gptel-make-openai."l
4b00 6c 61 6d 61 2d 63 70 70 22 20 20 20 20 20 20 20 20 20 20 3b 41 6e 79 20 6e 61 6d 65 0a 20 20 3a lama-cpp"..........;Any.name...:
4b20 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 20 20 stream.t........................
4b40 20 20 20 20 20 3b 53 74 72 65 61 6d 20 72 65 73 70 6f 6e 73 65 73 0a 20 20 3a 70 72 6f 74 6f 63 .....;Stream.responses...:protoc
4b60 6f 6c 20 22 68 74 74 70 22 0a 20 20 3a 68 6f 73 74 20 22 6c 6f 63 61 6c 68 6f 73 74 3a 38 30 30 ol."http"...:host."localhost:800
4b80 30 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 4c 6c 61 6d 61 2e 63 70 70 20 73 65 72 0"................;Llama.cpp.ser
4ba0 76 65 72 20 6c 6f 63 61 74 69 6f 6e 0a 20 20 3a 6d 6f 64 65 6c 73 20 27 28 74 65 73 74 29 29 20 ver.location...:models.'(test)).
4bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 41 6e 79 20 6e 61 6d 65 73 2c 20 64 ...................;Any.names,.d
4be0 6f 65 73 6e 27 74 20 6d 61 74 74 65 72 20 66 6f 72 20 4c 6c 61 6d 61 0a 23 2b 65 6e 64 5f 73 72 oesn't.matter.for.Llama.#+end_sr
4c00 63 0a 54 68 65 73 65 20 61 72 65 20 74 68 65 20 72 65 71 75 69 72 65 64 20 70 61 72 61 6d 65 74 c.These.are.the.required.paramet
4c20 65 72 73 2c 20 72 65 66 65 72 20 74 6f 20 74 68 65 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 ers,.refer.to.the.documentation.
4c40 6f 66 20 3d 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 3d 20 66 6f 72 20 6d 6f 72 65 2e of.=gptel-make-openai=.for.more.
4c60 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 6d ..You.can.pick.this.backend.from
4c80 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 20 .the.menu.when.using.gptel.(see.
4ca0 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 6f [[#usage][Usage]])..*****.(Optio
4cc0 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
4ce0 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.
4d00 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
4d20 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
4d40 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
4d60 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
4d80 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
4da0 76 65 2e 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 ve..#+begin_src.emacs-lisp.;;.OP
4dc0 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 74 65 TIONAL.configuration.(setq..gpte
4de0 6c 2d 6d 6f 64 65 6c 20 20 20 27 74 65 73 74 0a 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 28 l-model...'test..gptel-backend.(
4e00 67 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 0a 20 20 gptel-make-openai."llama-cpp"...
4e20 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 20 20 20 20 ...............:stream.t........
4e40 20 20 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 ..........:protocol."http"......
4e60 20 20 20 20 20 20 20 20 20 20 20 20 3a 68 6f 73 74 20 22 6c 6f 63 61 6c 68 6f 73 74 3a 38 30 30 ............:host."localhost:800
4e80 30 22 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 74 65 0"..................:models.'(te
4ea0 73 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 st))).#+end_src..#+html:.</detai
4ec0 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>.*
4ee0 2a 2a 2a 20 4b 61 67 69 20 28 46 61 73 74 47 50 54 20 26 20 53 75 6d 6d 61 72 69 7a 65 72 29 0a ***.Kagi.(FastGPT.&.Summarizer).
4f00 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a 4b 61 67 69 27 73 20 46 61 73 74 47 #+html:.</summary>..Kagi's.FastG
4f20 50 54 20 6d 6f 64 65 6c 20 61 6e 64 20 74 68 65 20 55 6e 69 76 65 72 73 61 6c 20 53 75 6d 6d 61 PT.model.and.the.Universal.Summa
4f40 72 69 7a 65 72 20 61 72 65 20 62 6f 74 68 20 73 75 70 70 6f 72 74 65 64 2e 20 20 41 20 63 6f 75 rizer.are.both.supported...A.cou
4f60 70 6c 65 20 6f 66 20 6e 6f 74 65 73 3a 0a 0a 31 2e 20 55 6e 69 76 65 72 73 61 6c 20 53 75 6d 6d ple.of.notes:..1..Universal.Summ
4f80 61 72 69 7a 65 72 3a 20 49 66 20 74 68 65 72 65 20 69 73 20 61 20 55 52 4c 20 61 74 20 70 6f 69 arizer:.If.there.is.a.URL.at.poi
4fa0 6e 74 2c 20 74 68 65 20 73 75 6d 6d 61 72 69 7a 65 72 20 77 69 6c 6c 20 73 75 6d 6d 61 72 69 7a nt,.the.summarizer.will.summariz
4fc0 65 20 74 68 65 20 63 6f 6e 74 65 6e 74 73 20 6f 66 20 74 68 65 20 55 52 4c 2e 20 20 4f 74 68 65 e.the.contents.of.the.URL...Othe
4fe0 72 77 69 73 65 20 74 68 65 20 63 6f 6e 74 65 78 74 20 73 65 6e 74 20 74 6f 20 74 68 65 20 6d 6f rwise.the.context.sent.to.the.mo
5000 64 65 6c 20 69 73 20 74 68 65 20 73 61 6d 65 20 61 73 20 61 6c 77 61 79 73 3a 20 74 68 65 20 62 del.is.the.same.as.always:.the.b
5020 75 66 66 65 72 20 74 65 78 74 20 75 70 74 6f 20 70 6f 69 6e 74 2c 20 6f 72 20 74 68 65 20 63 6f uffer.text.upto.point,.or.the.co
5040 6e 74 65 6e 74 73 20 6f 66 20 74 68 65 20 72 65 67 69 6f 6e 20 69 66 20 74 68 65 20 72 65 67 69 ntents.of.the.region.if.the.regi
5060 6f 6e 20 69 73 20 61 63 74 69 76 65 2e 0a 0a 32 2e 20 4b 61 67 69 20 6d 6f 64 65 6c 73 20 64 6f on.is.active...2..Kagi.models.do
5080 20 6e 6f 74 20 73 75 70 70 6f 72 74 20 6d 75 6c 74 69 2d 74 75 72 6e 20 63 6f 6e 76 65 72 73 61 .not.support.multi-turn.conversa
50a0 74 69 6f 6e 73 2c 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 tions,.interactions.are."one-sho
50c0 74 22 2e 20 20 54 68 65 79 20 61 6c 73 6f 20 64 6f 20 6e 6f 74 20 73 75 70 70 6f 72 74 20 73 74 t"...They.also.do.not.support.st
50e0 72 65 61 6d 69 6e 67 20 72 65 73 70 6f 6e 73 65 73 2e 0a 0a 52 65 67 69 73 74 65 72 20 61 20 62 reaming.responses...Register.a.b
5100 61 63 6b 65 6e 64 20 77 69 74 68 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 ackend.with.#+begin_src.emacs-li
5120 73 70 0a 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 6b 61 67 69 20 22 4b 61 67 69 22 20 20 20 20 20 20 sp.(gptel-make-kagi."Kagi"......
5140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 61 6e 79 20 6e 61 6d 65 0a 20 20 3a 6b 65 79 20 22 ..............;any.name...:key."
5160 59 4f 55 52 5f 4b 41 47 49 5f 41 50 49 5f 4b 45 59 22 29 20 20 20 20 20 20 20 20 20 20 20 20 20 YOUR_KAGI_API_KEY").............
5180 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
51a0 6e 73 20 74 68 65 20 6b 65 79 0a 23 2b 65 6e 64 5f 73 72 63 0a 54 68 65 73 65 20 61 72 65 20 74 ns.the.key.#+end_src.These.are.t
51c0 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 6f he.required.parameters,.refer.to
51e0 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 6b .the.documentation.of.=gptel-mak
5200 65 2d 6b 61 67 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 e-kagi=.for.more...You.can.pick.
5220 74 68 69 73 20 62 61 63 6b 65 6e 64 20 61 6e 64 20 74 68 65 20 6d 6f 64 65 6c 20 28 66 61 73 74 this.backend.and.the.model.(fast
5240 67 70 74 2f 73 75 6d 6d 61 72 69 7a 65 72 29 20 66 72 6f 6d 20 74 68 65 20 74 72 61 6e 73 69 65 gpt/summarizer).from.the.transie
5260 6e 74 20 6d 65 6e 75 20 77 68 65 6e 20 75 73 69 6e 67 20 67 70 74 65 6c 2e 0a 0a 2a 2a 2a 2a 2a nt.menu.when.using.gptel...*****
5280 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 20 67 .(Optional).Set.as.the.default.g
52a0 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 61 6b ptel.backend..The.above.code.mak
52c0 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 6c 65 es.the.backend.available.to.sele
52e0 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 64 65 ct...If.you.want.it.to.be.the.de
5300 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 61 6e fault.backend.for.gptel,.you.can
5320 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 65 6c .set.this.as.the.value.of.=gptel
5340 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 66 20 -backend=...Use.this.instead.of.
5360 74 68 65 20 61 62 6f 76 65 2e 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 the.above..#+begin_src.emacs-lis
5380 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 73 65 74 p.;;.OPTIONAL.configuration.(set
53a0 71 0a 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 20 27 66 61 73 74 67 70 74 0a 20 67 70 74 65 6c 2d 62 q..gptel-model.'fastgpt..gptel-b
53c0 61 63 6b 65 6e 64 20 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 6b 61 67 69 20 22 4b 61 67 69 22 0a 20 ackend.(gptel-make-kagi."Kagi"..
53e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6b 65 79 20 22 59 4f 55 52 5f 4b 41 47 49 5f ................:key."YOUR_KAGI_
5400 41 50 49 5f 4b 45 59 22 29 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 54 68 65 20 61 6c 74 65 72 6e API_KEY")).#+end_src..The.altern
5420 61 74 69 76 65 73 20 74 6f 20 3d 66 61 73 74 67 70 74 3d 20 69 6e 63 6c 75 64 65 20 3d 73 75 6d atives.to.=fastgpt=.include.=sum
5440 6d 61 72 69 7a 65 3a 63 65 63 69 6c 3d 2c 20 3d 73 75 6d 6d 61 72 69 7a 65 3a 61 67 6e 65 73 3d marize:cecil=,.=summarize:agnes=
5460 2c 20 3d 73 75 6d 6d 61 72 69 7a 65 3a 64 61 70 68 6e 65 3d 20 61 6e 64 20 3d 73 75 6d 6d 61 72 ,.=summarize:daphne=.and.=summar
5480 69 7a 65 3a 6d 75 72 69 65 6c 3d 2e 20 20 54 68 65 20 64 69 66 66 65 72 65 6e 63 65 20 62 65 74 ize:muriel=...The.difference.bet
54a0 77 65 65 6e 20 74 68 65 20 73 75 6d 6d 61 72 69 7a 65 72 20 65 6e 67 69 6e 65 73 20 69 73 20 5b ween.the.summarizer.engines.is.[
54c0 5b 68 74 74 70 73 3a 2f 2f 68 65 6c 70 2e 6b 61 67 69 2e 63 6f 6d 2f 6b 61 67 69 2f 61 70 69 2f [https://help.kagi.com/kagi/api/
54e0 73 75 6d 6d 61 72 69 7a 65 72 2e 68 74 6d 6c 23 73 75 6d 6d 61 72 69 7a 61 74 69 6f 6e 2d 65 6e summarizer.html#summarization-en
5500 67 69 6e 65 73 5d 5b 64 6f 63 75 6d 65 6e 74 65 64 20 68 65 72 65 5d 5d 2e 0a 0a 23 2b 68 74 6d gines][documented.here]]...#+htm
5520 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 3c l:.</details>.#+html:.<details><
5540 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 74 6f 67 65 74 68 65 72 2e 61 69 0a 23 2b 68 74 6d 6c summary>.****.together.ai.#+html
5560 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 64 :.</summary>..Register.a.backend
5580 20 77 69 74 68 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 .with.#+begin_src.emacs-lisp.;;.
55a0 54 6f 67 65 74 68 65 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 Together.ai.offers.an.OpenAI.com
55c0 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 70 65 6e 61 69 20 22 patible.API.(gptel-make-openai."
55e0 54 6f 67 65 74 68 65 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 TogetherAI".........;Any.name.yo
5600 75 20 77 61 6e 74 0a 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 u.want...:host."api.together.xyz
5620 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 20 20 20 20 20 "...:key."your-api-key".........
5640 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 61 ..........;can.be.a.function.tha
5660 74 20 72 65 74 75 72 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 t.returns.the.key...:stream.t...
5680 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 63 :models.'(;;.has.many.more,.chec
56a0 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 6d 69 73 74 72 61 k.together.ai.............mistra
56c0 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 2e 31 0a 20 lai/Mixtral-8x7B-Instruct-v0.1..
56e0 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 61 6d 61 2d 31 ...........codellama/CodeLlama-1
5700 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 63 6f 64 65 6c 3b-Instruct-hf.............codel
5720 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 74 2d 68 66 29 29 lama/CodeLlama-34b-Instruct-hf))
5740 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
5760 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
5780 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]])..**
57a0 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
57c0 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.
57e0 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
5800 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
5820 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.
5840 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
5860 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.
5880 6f 66 20 74 68 65 20 61 62 6f 76 65 2e 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d of.the.above..#+begin_src.emacs-
58a0 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.(
58c0 73 65 74 71 0a 20 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 setq..gptel-model...'mistralai/M
58e0 69 78 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 67 70 74 65 6c ixtral-8x7B-Instruct-v0.1..gptel
5900 2d 62 61 63 6b 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 54 6f -backend..(gptel-make-openai."To
5920 67 65 74 68 65 72 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 getherAI".............:host."api
5940 2e 74 6f 67 65 74 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 .together.xyz"....:key."your-api
5960 2d 6b 65 79 22 20 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 -key".......................:str
5980 65 61 6d 20 74 0a 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 eam.t....:models.'(;;.has.many.m
59a0 6f 72 65 2c 20 63 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 ore,.check.together.ai..........
59c0 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 73 74 72 ....mistralai/Mixtral-8x7B-Instr
59e0 75 63 74 2d 76 30 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 uct-v0.1..............codellama/
5a00 43 6f 64 65 4c 6c 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 CodeLlama-13b-Instruct-hf.......
5a20 20 20 20 20 20 20 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 .......codellama/CodeLlama-34b-I
5a40 6e 73 74 72 75 63 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 nstruct-hf))).#+end_src..#+html:
5a60 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
5a80 6d 6d 61 72 79 3e 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 mmary>.****.Anyscale.#+html:.</s
5aa0 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
5ac0 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 41 6e 79 73 63 .#+begin_src.emacs-lisp.;;.Anysc
5ae0 61 6c 65 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 20 ale.offers.an.OpenAI.compatible.
5b00 41 50 49 0a 28 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 API.(gptel-make-openai."Anyscale
5b20 22 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 0a 20 "...........;Any.name.you.want..
5b40 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 73 63 61 6c 65 2e 63 .:host."api.endpoints.anyscale.c
5b60 6f 6d 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 20 20 20 om"...:key."your-api-key".......
5b80 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 20 74 ............;can.be.a.function.t
5ba0 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 27 28 hat.returns.the.key...:models.'(
5bc0 3b 3b 20 68 61 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 ;;.has.many.more,.check.anyscale
5be0 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 74 72 61 6c 2d 38 .............mistralai/Mixtral-8
5c00 78 37 42 2d 49 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 x7B-Instruct-v0.1)).#+end_src..Y
5c20 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 68 ou.can.pick.this.backend.from.th
5c40 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 23 e.menu.when.using.gptel.(see.[[#
5c60 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 6c usage][Usage]])..*****.(Optional
5c80 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 65 ).Set.as.the.default.gptel.backe
5ca0 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 63 nd..The.above.code.makes.the.bac
5cc0 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 6f kend.available.to.select...If.yo
5ce0 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 6b u.want.it.to.be.the.default.back
5d00 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 20 end.for.gptel,.you.can.set.this.
5d20 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 2e as.the.value.of.=gptel-backend=.
5d40 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 2e ..Use.this.instead.of.the.above.
5d60 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
5d80 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 2d 6d NAL.configuration.(setq..gptel-m
5da0 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 2d 38 78 37 42 2d 49 odel...'mistralai/Mixtral-8x7B-I
5dc0 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 6e 64 0a 20 28 67 70 nstruct-v0.1..gptel-backend..(gp
5de0 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 0a 20 20 20 20 20 tel-make-openai."Anyscale"......
5e00 20 20 20 20 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 ............:host."api.endpoints
5e20 2e 61 6e 79 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 .anyscale.com"..................
5e40 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 20 20 20 20 20 20 :key."your-api-key".............
5e60 20 20 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 .....:models.'(;;.has.many.more,
5e80 20 63 68 65 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 .check.anyscale.................
5ea0 20 20 20 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 ...........mistralai/Mixtral-8x7
5ec0 42 2d 49 6e 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 B-Instruct-v0.1))).#+end_src..#+
5ee0 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
5f00 73 3e 3c 73 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 s><summary>.****.Perplexity.#+ht
5f20 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 63 6b 65 ml:.</summary>..Register.a.backe
5f40 6e 64 20 77 69 74 68 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 nd.with.#+begin_src.emacs-lisp.(
5f60 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
5f80 79 22 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 6b 65 79 y".....;Any.name.you.want...:key
5fa0 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 20 ."your-api-key".................
5fc0 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 6e ..;can.be.a.function.that.return
5fe0 73 20 74 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 s.the.key...:stream.t)..........
6000 20 20 20 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 ..................;If.you.want.r
6020 65 73 70 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 esponses.to.be.streamed.#+end_sr
6040 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 72 6f c..You.can.pick.this.backend.fro
6060 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
6080 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
60a0 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
60c0 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
60e0 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
6100 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.
6120 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
6140 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
6160 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
6180 6f 76 65 2e 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 ove..#+begin_src.emacs-lisp.;;.O
61a0 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 74 PTIONAL.configuration.(setq..gpt
61c0 65 6c 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 el-model...'sonar..gptel-backend
61e0 20 28 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 .(gptel-make-perplexity."Perplex
6200 69 74 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 ity"..................:key."your
6220 2d 61 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 -api-key".:stream.t)).#+end_src.
6240 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
6260 61 69 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 ails><summary>.****.Anthropic.(C
6280 6c 61 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 laude).#+html:.</summary>.Regist
62a0 65 72 20 61 20 62 61 63 6b 65 6e 64 20 77 69 74 68 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d er.a.backend.with.#+begin_src.em
62c0 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 20 22 acs-lisp.(gptel-make-anthropic."
62e0 43 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 Claude"..........;Any.name.you.w
6300 61 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 ant...:stream.t.................
6320 20 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 ............;Streaming.responses
6340 0a 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 ...:key."your-api-key").#+end_sr
6360 63 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 c.The.=:key=.can.be.a.function.t
6380 68 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 hat.returns.the.key.(more.secure
63a0 29 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 )...You.can.pick.this.backend.fr
63c0 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 65 om.the.menu.when.using.gptel.(se
63e0 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 28 4f 70 e.[[#usage][Usage]])...*****.(Op
6400 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
6420 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
6440 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..
6460 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
6480 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
64a0 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
64c0 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.
64e0 61 62 6f 76 65 2e 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 above..#+begin_src.emacs-lisp.;;
6500 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
6520 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
6540 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"
6560 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.(
6580 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"...
65a0 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
65c0 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..*****.
65e0 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
6600 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.
6620 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
6640 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
6660 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
6680 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.
66a0 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
66c0 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
66e0 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
6700 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 33 2d 37 2d 73 tream.t...:models.'(claude-3-7-s
6720 6f 6e 6e 65 74 2d 32 30 32 35 30 32 31 39 29 0a 20 20 3a 68 65 61 64 65 72 20 28 6c 61 6d 62 64 onnet-20250219)...:header.(lambd
6740 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 74 65 6c 2d 2d 67 65 a.().(when-let*.((key.(gptel--ge
6760 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 20 20 20 20 20 20 60 t-api-key)))...................`
6780 28 28 22 78 2d 61 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 (("x-api-key"...,key)...........
67a0 20 20 20 20 20 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 ..........("anthropic-version"..
67c0 20 22 32 30 32 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 ."2023-06-01")..................
67e0 20 20 20 28 22 61 6e 74 68 72 6f 70 69 63 2d 62 65 74 61 22 20 2e 20 22 70 64 66 73 2d 32 30 32 ...("anthropic-beta"..."pdfs-202
6800 34 2d 30 39 2d 32 35 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 22 4-09-25").....................("
6820 61 6e 74 68 72 6f 70 69 63 2d 62 65 74 61 22 20 2e 20 22 6f 75 74 70 75 74 2d 31 32 38 6b 2d 32 anthropic-beta"..."output-128k-2
6840 30 32 35 2d 30 32 2d 31 39 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 025-02-19").....................
6860 28 22 61 6e 74 68 72 6f 70 69 63 2d 62 65 74 61 22 20 2e 20 22 70 72 6f 6d 70 74 2d 63 61 63 68 ("anthropic-beta"..."prompt-cach
6880 69 6e 67 2d 32 30 32 34 2d 30 37 2d 33 31 22 29 29 29 29 0a 20 20 3a 72 65 71 75 65 73 74 2d 70 ing-2024-07-31"))))...:request-p
68a0 61 72 61 6d 73 20 27 28 3a 74 68 69 6e 6b 69 6e 67 20 28 3a 74 79 70 65 20 22 65 6e 61 62 6c 65 arams.'(:thinking.(:type."enable
68c0 64 22 20 3a 62 75 64 67 65 74 5f 74 6f 6b 65 6e 73 20 32 30 34 38 29 0a 20 20 20 20 20 20 20 20 d".:budget_tokens.2048).........
68e0 20 20 20 20 20 20 20 20 20 20 20 20 3a 6d 61 78 5f 74 6f 6b 65 6e 73 20 34 30 39 36 29 29 0a 23 ............:max_tokens.4096)).#
6900 2b 65 6e 64 5f 73 72 63 0a 0a 59 6f 75 20 63 61 6e 20 73 65 74 20 74 68 65 20 72 65 61 73 6f 6e +end_src..You.can.set.the.reason
6920 69 6e 67 20 62 75 64 67 65 74 20 74 6f 6b 65 6e 73 20 61 6e 64 20 6d 61 78 20 74 6f 6b 65 6e 73 ing.budget.tokens.and.max.tokens
6940 20 66 6f 72 20 74 68 69 73 20 75 73 61 67 65 20 76 69 61 20 74 68 65 20 3d 3a 62 75 64 67 65 74 .for.this.usage.via.the.=:budget
6960 5f 74 6f 6b 65 6e 73 3d 20 61 6e 64 20 3d 3a 6d 61 78 5f 74 6f 6b 65 6e 73 3d 20 6b 65 79 73 20 _tokens=.and.=:max_tokens=.keys.
6980 68 65 72 65 2c 20 72 65 73 70 65 63 74 69 76 65 6c 79 2e 0a 0a 59 6f 75 20 63 61 6e 20 63 6f 6e here,.respectively...You.can.con
69a0 74 72 6f 6c 20 77 68 65 74 68 65 72 2f 68 6f 77 20 74 68 65 20 72 65 61 73 6f 6e 69 6e 67 20 6f trol.whether/how.the.reasoning.o
69c0 75 74 70 75 74 20 69 73 20 73 68 6f 77 6e 20 76 69 61 20 67 70 74 65 6c 27 73 20 6d 65 6e 75 20 utput.is.shown.via.gptel's.menu.
69e0 6f 72 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 2c 20 73 65 or.=gptel-include-reasoning=,.se
6a00 65 20 5b 5b 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 68 e.[[#handle-reasoning-content][h
6a20 61 6e 64 6c 69 6e 67 20 72 65 61 73 6f 6e 69 6e 67 20 63 6f 6e 74 65 6e 74 5d 5d 2e 20 0a 0a 23 andling.reasoning.content]]....#
6a40 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
6a60 6c 73 3e 3c 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 47 72 6f 71 0a 23 2b 68 74 6d 6c 3a 20 3c ls><summary>.****.Groq.#+html:.<
6a80 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 69 /summary>..Register.a.backend.wi
6aa0 74 68 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 47 72 6f th.#+begin_src.emacs-lisp.;;.Gro
6ac0 71 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 20 41 50 q.offers.an.OpenAI.compatible.AP
6ae0 49 0a 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 20 22 47 72 6f 71 22 20 20 20 20 20 I.(gptel-make-openai."Groq".....
6b00 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 0a 20 20 3a ..........;Any.name.you.want...:
6b20 68 6f 73 74 20 22 61 70 69 2e 67 72 6f 71 2e 63 6f 6d 22 0a 20 20 3a 65 6e 64 70 6f 69 6e 74 20 host."api.groq.com"...:endpoint.
6b40 22 2f 6f 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 "/openai/v1/chat/completions"...
6b60 3a 73 74 72 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 :stream.t...:key."your-api-key".
6b80 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 61 20 66 75 6e 63 ..................;can.be.a.func
6ba0 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 20 20 3a 6d 6f 64 tion.that.returns.the.key...:mod
6bc0 65 6c 73 20 27 28 6c 6c 61 6d 61 2d 33 2e 31 2d 37 30 62 2d 76 65 72 73 61 74 69 6c 65 0a 20 20 els.'(llama-3.1-70b-versatile...
6be0 20 20 20 20 20 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 ..........llama-3.1-8b-instant..
6c00 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 20 ...........llama3-70b-8192......
6c20 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 20 20 20 20 20 20 20 .......llama3-8b-8192...........
6c40 20 20 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 20 20 20 20 20 ..mixtral-8x7b-32768............
6c60 20 67 65 6d 6d 61 2d 37 62 2d 69 74 29 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 59 6f 75 20 63 61 .gemma-7b-it)).#+end_src..You.ca
6c80 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
6ca0 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
6cc0 5d 5b 55 73 61 67 65 5d 5d 29 2e 20 20 4e 6f 74 65 20 74 68 61 74 20 47 72 6f 71 20 69 73 20 66 ][Usage]])...Note.that.Groq.is.f
6ce0 61 73 74 20 65 6e 6f 75 67 68 20 74 68 61 74 20 79 6f 75 20 63 6f 75 6c 64 20 65 61 73 69 6c 79 ast.enough.that.you.could.easily
6d00 20 73 65 74 20 3d 3a 73 74 72 65 61 6d 20 6e 69 6c 3d 20 61 6e 64 20 73 74 69 6c 6c 20 67 65 74 .set.=:stream.nil=.and.still.get
6d20 20 6e 65 61 72 2d 69 6e 73 74 61 6e 74 20 72 65 73 70 6f 6e 73 65 73 2e 0a 0a 2a 2a 2a 2a 2a 20 .near-instant.responses...*****.
6d40 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
6d60 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 61 6b 65 tel.backend..The.above.code.make
6d80 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 6c 65 63 s.the.backend.available.to.selec
6da0 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 64 65 66 t...If.you.want.it.to.be.the.def
6dc0 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 61 6e 20 ault.backend.for.gptel,.you.can.
6de0 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 65 6c 2d set.this.as.the.value.of.=gptel-
6e00 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 66 20 74 backend=...Use.this.instead.of.t
6e20 68 65 20 61 62 6f 76 65 2e 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 he.above..#+begin_src.emacs-lisp
6e40 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 73 65 74 71 .;;.OPTIONAL.configuration.(setq
6e60 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 20 20 20 27 6d 69 78 74 72 61 6c 2d 38 78 37 62 2d 33 32 37 .gptel-model...'mixtral-8x7b-327
6e80 36 38 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 68.......gptel-backend.......(gp
6ea0 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 20 22 47 72 6f 71 22 0a 20 20 20 20 20 20 20 20 3a tel-make-openai."Groq".........:
6ec0 68 6f 73 74 20 22 61 70 69 2e 67 72 6f 71 2e 63 6f 6d 22 0a 20 20 20 20 20 20 20 20 3a 65 6e 64 host."api.groq.com".........:end
6ee0 70 6f 69 6e 74 20 22 2f 6f 70 65 6e 61 69 2f 76 31 2f 63 68 61 74 2f 63 6f 6d 70 6c 65 74 69 6f point."/openai/v1/chat/completio
6f00 6e 73 22 0a 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 3a 6b ns".........:stream.t.........:k
6f20 65 79 20 22 79 6f 75 72 2d 61 70 69 2d 6b 65 79 22 0a 20 20 20 20 20 20 20 20 3a 6d 6f 64 65 6c ey."your-api-key".........:model
6f40 73 20 27 28 6c 6c 61 6d 61 2d 33 2e 31 2d 37 30 62 2d 76 65 72 73 61 74 69 6c 65 0a 20 20 20 20 s.'(llama-3.1-70b-versatile.....
6f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6c 61 6d 61 2d 33 2e 31 2d 38 62 2d 69 6e 73 74 61 ..............llama-3.1-8b-insta
6f80 6e 74 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 2d 37 30 62 2d nt...................llama3-70b-
6fa0 38 31 39 32 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 2d 38 62 8192...................llama3-8b
6fc0 2d 38 31 39 32 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 69 78 74 72 61 6c 2d -8192...................mixtral-
6fe0 38 78 37 62 2d 33 32 37 36 38 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 6d 8x7b-32768...................gem
7000 6d 61 2d 37 62 2d 69 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 ma-7b-it))).#+end_src..#+html:.<
7020 2f 64 65 74 61 69 6c 73 3e 0a 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
7040 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 4d 69 73 74 72 61 6c 20 4c 65 20 43 68 61 74 0a 23 2b 68 74 6d mary>.****.Mistral.Le.Chat.#+htm
7060 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
7080 64 20 77 69 74 68 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 d.with.#+begin_src.emacs-lisp.;;
70a0 20 4d 69 73 74 72 61 6c 20 6f 66 66 65 72 73 20 61 6e 20 4f 70 65 6e 41 49 20 63 6f 6d 70 61 74 .Mistral.offers.an.OpenAI.compat
70c0 69 62 6c 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 4d 69 73 ible.API.(gptel-make-openai."Mis
70e0 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 77 61 6e 74 0a tralLeChat"..;Any.name.you.want.
7100 20 20 3a 68 6f 73 74 20 22 61 70 69 2e 6d 69 73 74 72 61 6c 2e 61 69 22 0a 20 20 3a 65 6e 64 70 ..:host."api.mistral.ai"...:endp
7120 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 0a 20 20 3a 70 oint."/v1/chat/completions"...:p
7140 72 6f 74 6f 63 6f 6c 20 22 68 74 74 70 73 22 0a 20 20 3a 6b 65 79 20 22 79 6f 75 72 2d 61 70 69 rotocol."https"...:key."your-api
7160 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 65 20 61 20 66 75 -key"...............;can.be.a.fu
7180 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 20 20 3a 6d nction.that.returns.the.key...:m
71a0 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 0a 23 2b 65 6e 64 5f odels.'("mistral-small")).#+end_
71c0 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
71e0 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
7200 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 28 4f ee.[[#usage][Usage]])...*****.(O
7220 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 74 65 ptional).Set.as.the.default.gpte
7240 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 61 6b 65 73 20 l.backend..The.above.code.makes.
7260 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 6c 65 63 74 2e the.backend.available.to.select.
7280 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 64 65 66 61 75 ..If.you.want.it.to.be.the.defau
72a0 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 61 6e 20 73 65 lt.backend.for.gptel,.you.can.se
72c0 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 65 6c 2d 62 61 t.this.as.the.value.of.=gptel-ba
72e0 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 66 20 74 68 65 ckend=...Use.this.instead.of.the
7300 20 61 62 6f 76 65 2e 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.;
7320 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 20 67 ;.OPTIONAL.configuration.(setq.g
7340 70 74 65 6c 2d 6d 6f 64 65 6c 20 20 20 27 6d 69 73 74 72 61 6c 2d 73 6d 61 6c 6c 0a 20 20 20 20 ptel-model...'mistral-small.....
7360 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 65 6c 2d 6d 61 6b ..gptel-backend.......(gptel-mak
7380 65 2d 6f 70 65 6e 61 69 20 22 4d 69 73 74 72 61 6c 4c 65 43 68 61 74 22 20 20 3b 41 6e 79 20 6e e-openai."MistralLeChat"..;Any.n
73a0 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 61 70 69 2e ame.you.want.........:host."api.
73c0 6d 69 73 74 72 61 6c 2e 61 69 22 0a 20 20 20 20 20 20 20 20 3a 65 6e 64 70 6f 69 6e 74 20 22 2f mistral.ai".........:endpoint."/
73e0 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 3a 70 72 v1/chat/completions".........:pr
7400 6f 74 6f 63 6f 6c 20 22 68 74 74 70 73 22 0a 20 20 20 20 20 20 20 20 3a 6b 65 79 20 22 79 6f 75 otocol."https".........:key."you
7420 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 65 r-api-key"...............;can.be
7440 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
7460 0a 20 20 20 20 20 20 20 20 3a 6d 6f 64 65 6c 73 20 27 28 22 6d 69 73 74 72 61 6c 2d 73 6d 61 6c .........:models.'("mistral-smal
7480 6c 22 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 l"))).#+end_src..#+html:.</detai
74a0 6c 73 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 ls>..#+html:.<details><summary>.
74c0 0a 2a 2a 2a 2a 20 4f 70 65 6e 52 6f 75 74 65 72 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 .****.OpenRouter.#+html:.</summa
74e0 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 23 2b 62 ry>..Register.a.backend.with.#+b
7500 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 3b 3b 20 4f 70 65 6e 52 6f 75 74 65 egin_src.emacs-lisp.;;.OpenRoute
7520 72 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 20 41 50 r.offers.an.OpenAI.compatible.AP
7540 49 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 52 6f 75 74 65 72 I.(gptel-make-openai."OpenRouter
7560 22 20 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 "...............;Any.name.you.wa
7580 6e 74 0a 20 20 3a 68 6f 73 74 20 22 6f 70 65 6e 72 6f 75 74 65 72 2e 61 69 22 0a 20 20 3a 65 6e nt...:host."openrouter.ai"...:en
75a0 64 70 6f 69 6e 74 20 22 2f 61 70 69 2f 76 31 2f 63 68 61 74 2f 63 6f 6d 70 6c 65 74 69 6f 6e 73 dpoint."/api/v1/chat/completions
75c0 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 72 2d 61 70 69 2d 6b "...:stream.t...:key."your-api-k
75e0 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 61 20 ey"...................;can.be.a.
7600 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 20 20 function.that.returns.the.key...
7620 3a 6d 6f 64 65 6c 73 20 27 28 6f 70 65 6e 61 69 2f 67 70 74 2d 33 2e 35 2d 74 75 72 62 6f 0a 20 :models.'(openai/gpt-3.5-turbo..
7640 20 20 20 20 20 20 20 20 20 20 20 6d 69 73 74 72 61 6c 61 69 2f 6d 69 78 74 72 61 6c 2d 38 78 37 ...........mistralai/mixtral-8x7
7660 62 2d 69 6e 73 74 72 75 63 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 74 61 2d 6c 6c 61 6d b-instruct.............meta-llam
7680 61 2f 63 6f 64 65 6c 6c 61 6d 61 2d 33 34 62 2d 69 6e 73 74 72 75 63 74 0a 20 20 20 20 20 20 20 a/codellama-34b-instruct........
76a0 20 20 20 20 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 .....codellama/codellama-70b-ins
76c0 74 72 75 63 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 6f 6f 67 6c 65 2f 70 61 6c 6d 2d 32 2d truct.............google/palm-2-
76e0 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 20 67 codechat-bison-32k.............g
7700 6f 6f 67 6c 65 2f 67 65 6d 69 6e 69 2d 70 72 6f 29 29 0a 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 59 oogle/gemini-pro))..#+end_src..Y
7720 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 68 ou.can.pick.this.backend.from.th
7740 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 23 e.menu.when.using.gptel.(see.[[#
7760 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 6e 61 usage][Usage]])...*****.(Optiona
7780 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
77a0 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
77c0 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
77e0 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
7800 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
7820 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=
7840 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
7860 2e 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 ..#+begin_src.emacs-lisp.;;.OPTI
7880 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 6c 2d 6d ONAL.configuration.(setq.gptel-m
78a0 6f 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 odel...'mixtral-8x7b-32768......
78c0 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 65 6c 2d 6d 61 6b 65 .gptel-backend.......(gptel-make
78e0 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 20 20 20 20 20 -openai."OpenRouter"............
7900 20 20 20 3b 41 6e 79 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 ...;Any.name.you.want.........:h
7920 6f 73 74 20 22 6f 70 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 ost."openrouter.ai".........:end
7940 70 6f 69 6e 74 20 22 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 point."/api/v1/chat/completions"
7960 0a 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 3a 6b 65 79 20 .........:stream.t.........:key.
7980 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 20 20 "your-api-key"..................
79a0 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 6e 73 .;can.be.a.function.that.returns
79c0 20 74 68 65 20 6b 65 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 .the.key.........:models.'(opena
79e0 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 20 20 20 20 20 20 20 i/gpt-3.5-turbo.................
7a00 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 63 ..mistralai/mixtral-8x7b-instruc
7a20 74 0a 20 20 20 20 20 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 t...................meta-llama/c
7a40 6f 64 65 6c 6c 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 odellama-34b-instruct...........
7a60 20 20 20 20 20 20 20 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 ........codellama/codellama-70b-
7a80 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 20 67 6f 6f 67 6c instruct...................googl
7aa0 65 2f 70 61 6c 6d 2d 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 e/palm-2-codechat-bison-32k.....
7ac0 20 20 20 20 20 20 20 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 ..............google/gemini-pro)
7ae0 29 29 0a 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
7b00 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>.***
7b20 2a 20 50 72 69 76 61 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 *.PrivateGPT.#+html:.</summary>.
7b40 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 69 6e .Register.a.backend.with.#+begin
7b60 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 70 72 69 76 _src.emacs-lisp.(gptel-make-priv
7b80 61 74 65 67 70 74 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 ategpt."privateGPT".............
7ba0 20 20 3b 41 6e 79 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 ..;Any.name.you.want...:protocol
7bc0 20 22 68 74 74 70 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 ."http"...:host."localhost:8001"
7be0 0a 20 20 3a 73 74 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 ...:stream.t...:context.t.......
7c00 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 6e 74 65 78 .....................;Use.contex
7c20 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 3a 73 6f 75 72 t.provided.by.embeddings...:sour
7c40 63 65 73 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 20 ces.t...........................
7c60 20 3b 52 65 74 75 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 .;Return.information.about.sourc
7c80 65 20 64 6f 63 75 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 e.documents...:models.'(private-
7ca0 67 70 74 29 29 0a 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 gpt))..#+end_src..You.can.pick.t
7cc0 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 75 his.backend.from.the.menu.when.u
7ce0 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 5d sing.gptel.(see.[[#usage][Usage]
7d00 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
7d20 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
7d40 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
7d60 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
7d80 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
7da0 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
7dc0 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
7de0 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20 61 62 6f 76 65 2e 0a 23 2b 62 65 67 69 6e 5f 73 72 63 nstead.of.the.above..#+begin_src
7e00 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
7e20 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 70 72 69 76 61 ation.(setq.gptel-model...'priva
7e40 74 65 2d 67 70 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 te-gpt.......gptel-backend......
7e60 20 28 67 70 74 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 .(gptel-make-privategpt."private
7e80 47 50 54 22 20 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 GPT"...............;Any.name.you
7ea0 20 77 61 6e 74 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 .want.........:protocol."http"..
7ec0 20 20 20 20 20 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 .......:host."localhost:8001"...
7ee0 20 20 20 20 20 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 ......:stream.t.........:context
7f00 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 20 20 3b 55 .t............................;U
7f20 73 65 20 63 6f 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 se.context.provided.by.embedding
7f40 73 0a 20 20 20 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 s.........:sources.t............
7f60 20 20 20 20 20 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 ................;Return.informat
7f80 69 6f 6e 20 61 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 ion.about.source.documents......
7fa0 20 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 29 0a 0a 23 2b 65 ...:models.'(private-gpt)))..#+e
7fc0 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
7fe0 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 44 65 65 70 53 l:.<details><summary>.****.DeepS
8000 65 65 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 72 eek.#+html:.</summary>..Register
8020 20 61 20 62 61 63 6b 65 6e 64 20 77 69 74 68 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 .a.backend.with.#+begin_src.emac
8040 73 2d 6c 69 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 s-lisp.(gptel-make-deepseek."Dee
8060 70 53 65 65 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 pSeek".......;Any.name.you.want.
8080 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 20 ..:stream.t.....................
80a0 20 20 20 20 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 ......;for.streaming.responses..
80c0 20 3a 6b 65 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 .:key."your-api-key")...........
80e0 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 65 74 75 ....;can.be.a.function.that.retu
8100 72 6e 73 20 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 rns.the.key.#+end_src..You.can.p
8120 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
8140 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
8160 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
8180 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
81a0 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
81c0 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.
81e0 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
8200 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.
8220 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
8240 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 23 2b 62 65 67 69 his.instead.of.the.above..#+begi
8260 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 6e n_src.emacs-lisp.;;.OPTIONAL.con
8280 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 27 figuration.(setq.gptel-model...'
82a0 64 65 65 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 deepseek-reasoner.......gptel-ba
82c0 63 6b 65 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 ckend.(gptel-make-deepseek."Deep
82e0 53 65 65 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 Seek".......................:str
8300 65 61 6d 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 eam.t.......................:key
8320 20 22 79 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 ."your-api-key")).#+end_src..#+h
8340 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 73 tml:.</details>.#+html:.<details
8360 3e 3c 73 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 ><summary>..****.Sambanova.(Deep
8380 73 65 65 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 seek).#+html:.</summary>.Sambano
83a0 76 61 20 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 va.offers.various.LLMs.through.t
83c0 68 65 69 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 heir.Samba.Nova.Cloud.offering,.
83e0 77 69 74 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 with.Deepseek-R1.being.one.of.th
8400 65 6d 2e 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 em..The.token.speed.for.Deepseek
8420 20 52 31 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 .R1.via.Sambanova.is.about.6.tim
8440 65 73 20 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 es.faster.than.when.accessed.thr
8460 6f 75 67 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 ough.deepseek.com...Register.a.b
8480 61 63 6b 65 6e 64 20 77 69 74 68 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 ackend.with.#+begin_src.emacs-li
84a0 73 70 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 sp.(gptel-make-openai."Sambanova
84c0 22 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 "........;Any.name.you.want...:h
84e0 6f 73 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 ost."api.sambanova.ai"...:endpoi
8500 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 0a 20 20 3a 73 74 72 nt."/v1/chat/completions"...:str
8520 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 20 3b eam.t..........................;
8540 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 79 20 22 for.streaming.responses...:key."
8560 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 3b 63 61 6e your-api-key"...............;can
8580 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 20 .be.a.function.that.returns.the.
85a0 6b 65 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 key...:models.'(DeepSeek-R1)).#+
85c0 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 63 6b 65 end_src..You.can.pick.this.backe
85e0 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 65 nd.from.the.menu.when.using.gpte
8600 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 2a l.(see.[[#usage][Usage]])...****
8620 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 20 *.(Optional).Set.as.the.default.
8640 67 70 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 gptel.backend.The.code.aboves.ma
8660 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 66 6f 72 20 73 65 kes.the.backend.available.for.se
8680 6c 65 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 lection...If.you.want.it.to.be.t
86a0 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 6f he.default.backend.for.gptel,.yo
86c0 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 3d u.can.set.this.as.the.value.of.=
86e0 67 70 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 gptel-backend=...Add.these.two.l
8700 69 6e 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 23 2b 62 ines.to.your.configuration:..#+b
8720 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.
8740 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 6f 64 65 configuration...(setq.gptel-mode
8760 6c 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 l.'DeepSeek-R1)...(setq.gptel-ba
8780 63 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 ckend.(gptel-get-backend."Samban
87a0 6f 76 61 22 29 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 ova")).#+end_src.#+html:.</detai
87c0 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>..
87e0 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>
8800 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 69 ..Register.a.backend.with.#+begi
8820 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 66 n_src.emacs-lisp.;;.Cerebras.off
8840 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 65 ers.an.instant.OpenAI.compatible
8860 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 61 .API.(gptel-make-openai."Cerebra
8880 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 3a s"...:host."api.cerebras.ai"...:
88a0 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 0a endpoint."/v1/chat/completions".
88c0 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 20 ..:stream.t.....................
88e0 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 62 ........;optionally.nil.as.Cereb
8900 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 61 ras.is.instant.AI...:key."your-a
8920 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
8940 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
8960 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 20 y...:models.'(llama3.1-70b......
8980 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 0a .......llama3.1-8b)).#+end_src..
89a0 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
89c0 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.[[
89e0 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 6e #usage][Usage]])...*****.(Option
8a00 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 63 al).Set.as.the.default.gptel.bac
8a20 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 62 kend..The.above.code.makes.the.b
8a40 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 20 ackend.available.to.select...If.
8a60 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 61 you.want.it.to.be.the.default.ba
8a80 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 69 ckend.for.gptel,.you.can.set.thi
8aa0 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 64 s.as.the.value.of.=gptel-backend
8ac0 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 76 =...Use.this.instead.of.the.abov
8ae0 65 2e 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 e..#+begin_src.emacs-lisp.;;.OPT
8b00 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 6c 2d IONAL.configuration.(setq.gptel-
8b20 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 65 6c model...'llama3.1-8b.......gptel
8b40 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 6e 61 -backend.......(gptel-make-opena
8b60 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 69 2e i."Cerebras".........:host."api.
8b80 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 20 22 cerebras.ai".........:endpoint."
8ba0 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 3a 73 /v1/chat/completions".........:s
8bc0 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 70 69 tream.nil.........:key."your-api
8be0 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 2e 31 -key".........:models.'(llama3.1
8c00 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 31 2d -70b...................llama3.1-
8c20 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 61 69 8b))).#+end_src..#+html:.</detai
8c40 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>.*
8c60 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 6d 6d ***.Github.Models.#+html:.</summ
8c80 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 74 68 ary>..NOTE:..[[https://docs.gith
8ca0 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 67 69 ub.com/en/github-models/about-gi
8cc0 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 73 20 thub-models][GitHub.Models]].is.
8ce0 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 77 61 /not/.GitHub.Copilot!..If.you.wa
8d00 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 76 69 nt.to.use.GitHub.Copilot.chat.vi
8d20 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 6f 6e a.gptel,.look.at.the.instruction
8d40 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 20 69 s.for.GitHub.CopilotChat.below.i
8d60 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 74 68 nstead...Register.a.backend.with
8d80 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 47 69 74 .#+begin_src.emacs-lisp...;;.Git
8da0 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 6f 6d 70 hub.Models.offers.an.OpenAI.comp
8dc0 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 61 69 20 atible.API...(gptel-make-openai.
8de0 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 20 77 61 "Github.Models".;Any.name.you.wa
8e00 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 65 2e 61 nt.....:host."models.inference.a
8e20 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 63 68 61 i.azure.com".....:endpoint."/cha
8e40 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 34 2d 30 t/completions?api-version=2024-0
8e60 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 20 20 20 5-01-preview".....:stream.t.....
8e80 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 3a 6d 6f :key."your-github-token".....:mo
8ea0 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 75 20 77 dels.'(gpt-4o)).#+end_src..You.w
8ec0 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 5b 68 74 ill.need.to.create.a.github.[[ht
8ee0 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 73 6f 6e tps://github.com/settings/person
8f00 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 6f 72 20 al-access-tokens][token]]...For.
8f20 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 63 6b 20 all.the.available.models,.check.
8f40 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 65 74 70 the.[[https://github.com/marketp
8f60 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 59 6f 75 lace/models][marketplace]]...You
8f80 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 68 65 20 .can.pick.this.backend.from.the.
8fa0 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 5d 5b 55 menu.when.using.(see.[[#usage][U
8fc0 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
8fe0 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
9000 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
9020 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.
9040 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
9060 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.
9080 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
90a0 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 23 2b 62 65 67 69 his.instead.of.the.above..#+begi
90c0 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 41 4c 20 63 n_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 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 65 6e 64 0a ..'gpt-4o.........gptel-backend.
9120 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 47 69 74 68 ........(gptel-make-openai."Gith
9140 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 74 0a 20 20 ub.Models".;Any.name.you.want...
9160 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 6e 63 65 2e ........:host."models.inference.
9180 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 70 6f 69 6e ai.azure.com"...........:endpoin
91a0 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 73 69 6f 6e t."/chat/completions?api-version
91c0 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 20 20 20 3a =2024-05-01-preview"...........:
91e0 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 72 2d 67 69 stream.t...........:key."your-gi
9200 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 73 20 27 28 thub-token"...........:models.'(
9220 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 3c 2f 64 65 gpt-4o)).#+end_src..#+html:.</de
9240 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
9260 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 75 6d 6d 61 >.****.Novita.AI.#+html:.</summa
9280 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 23 2b 62 ry>..Register.a.backend.with.#+b
92a0 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 74 61 20 41 49 egin_src.emacs-lisp.;;.Novita.AI
92c0 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 20 41 50 49 .offers.an.OpenAI.compatible.API
92e0 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 41 49 22 20 20 .(gptel-make-openai."NovitaAI"..
9300 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
9320 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 6e 74 20 22 2f t."api.novita.ai"...:endpoint."/
9340 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 2d 6b 65 79 22 v3/openai"...:key."your-api-key"
9360 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 61 20 66 75 6e ...................;can.be.a.fun
9380 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 20 20 3a 73 74 ction.that.returns.the.key...:st
93a0 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 61 6e 79 20 6d ream.t...:models.'(;;.has.many.m
93c0 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 69 2f 6c 6c 6d ore,.check.https://novita.ai/llm
93e0 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 68 6f 6d 61 78 -api.............gryphe/mythomax
9400 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 61 6d 61 2f 6c -l2-13b.............meta-llama/l
9420 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.............
9440 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 63 meta-llama/llama-3.1-70b-instruc
9460 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 73 t)).#+end_src..You.can.pick.this
9480 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
94a0 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]]).
94c0 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
94e0 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
9500 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
9520 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.
9540 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
9560 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.
9580 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
95a0 61 64 20 6f 66 20 74 68 65 20 61 62 6f 76 65 2e 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 ad.of.the.above..#+begin_src.ema
95c0 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 6f cs-lisp.;;.OPTIONAL.configuratio
95e0 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 79 70 68 65 2f 6d n.(setq..gptel-model...'gryphe/m
9600 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 65 6e 64 0a 20 28 ythomax-l2-13b..gptel-backend..(
9620 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 49 22 20 20 20 20 gptel-make-openai."NovitaAI"....
9640 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 2e 61 69 22 0a 20 .........:host."api.novita.ai"..
9660 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 20 20 3a 6b 65 79 ..:endpoint."/v3/openai"....:key
9680 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 20 ."your-api-key".................
96a0 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 20 27 28 3b 3b 20 ......:stream.t....:models.'(;;.
96c0 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 3a 2f 2f 6e 6f 76 has.many.more,.check.https://nov
96e0 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 20 20 6d 69 73 74 ita.ai/llm-api..............mist
9700 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 2e 31 ralai/Mixtral-8x7B-Instruct-v0.1
9720 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 6c 61 6d 61 2d 33 ..............meta-llama/llama-3
9740 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 20 6d 65 74 61 2d -70b-instruct..............meta-
9760 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 63 74 29 29 29 0a llama/llama-3.1-70b-instruct))).
9780 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 0a 0a 23 #+end_src..#+html:.</details>..#
97a0 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 20 78 +html:.<details><summary>.****.x
97c0 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 73 74 65 72 20 AI.#+html:.</summary>..Register.
97e0 61 20 62 61 63 6b 65 6e 64 20 77 69 74 68 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 a.backend.with.#+begin_src.emacs
9800 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 22 20 20 20 20 20 -lisp.(gptel-make-xai."xAI".....
9820 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 6f 75 20 77 61 6e ..............;.Any.name.you.wan
9840 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 2d 61 70 69 2d 6b t...:stream.t...:key."your-api-k
9860 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 6e 20 62 65 20 61 ey")..................;.can.be.a
9880 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 23 .function.that.returns.the.key.#
98a0 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 63 6b +end_src..You.can.pick.this.back
98c0 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
98e0 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 2a 2a el.(see.[[#usage][Usage]])..****
9900 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 20 *.(Optional).Set.as.the.default.
9920 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 61 gptel.backend..The.above.code.ma
9940 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 6c kes.the.backend.available.to.sel
9960 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 64 ect...If.you.want.it.to.be.the.d
9980 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 61 efault.backend.for.gptel,.you.ca
99a0 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 65 n.set.this.as.the.value.of.=gpte
99c0 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 66 l-backend=...Use.this.instead.of
99e0 20 74 68 65 20 61 62 6f 76 65 2e 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 .the.above..#+begin_src.emacs-li
9a00 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 6b 2d 33 2d 6c 61 74 sp.(setq.gptel-model.'grok-3-lat
9a20 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 20 20 20 20 20 28 67 est.......gptel-backend.......(g
9a40 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 20 20 20 20 20 20 20 ptel-make-xai."xAI".............
9a60 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 20 20 20 20 20 3a 6b ..;.Any.name.you.want.........:k
9a80 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 65 20 61 20 66 75 6e ey."your-api-key".;.can.be.a.fun
9aa0 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 20 20 20 20 20 ction.that.returns.the.key......
9ac0 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 0a 23 2b 68 74 6d 6c ...:stream.t)).#+end_src..#+html
9ae0 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 74 61 69 6c 73 3e 3c :.</details>..#+html:.<details><
9b00 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 47 69 74 68 75 62 20 43 6f 70 69 6c 6f 74 43 68 61 74 summary>.****.Github.CopilotChat
9b20 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 72 20 61 20 .#+html:.</summary>..Register.a.
9b40 62 61 63 6b 65 6e 64 20 77 69 74 68 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c backend.with.#+begin_src.emacs-l
9b60 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
9b80 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
9ba0 6f 72 6d 65 64 20 74 6f 20 6c 6f 67 69 6e 20 69 6e 74 6f 20 3d 47 69 74 68 75 62 3d 20 61 73 20 ormed.to.login.into.=Github=.as.
9bc0 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
9be0 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
9c00 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]])...***
9c20 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
9c40 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
9c60 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
9c80 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.
9ca0 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
9cc0 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
9ce0 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
9d00 66 20 74 68 65 20 61 62 6f 76 65 2e 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c f.the.above..#+begin_src.emacs-l
9d20 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 73 isp.;;.OPTIONAL.configuration.(s
9d40 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 6e etq.gptel-model.'claude-3.7-sonn
9d60 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 61 et.......gptel-backend.(gptel-ma
9d80 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 5f ke-gh-copilot."Copilot")).#+end_
9da0 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 68 74 6d 6c 3a src..#+html:.</details>..#+html:
9dc0 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
9de0 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
9e00 72 20 61 20 62 61 63 6b 65 6e 64 20 77 69 74 68 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 r.a.backend.with.#+begin_src.ema
9e20 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 53 cs-lisp.(gptel-make-bedrock."AWS
9e40 22 0a 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 22 0a 20 20 3b "...:region."ap-northeast-1"...;
9e60 3b 20 73 75 62 73 65 74 20 6f 66 20 67 70 74 65 6c 2d 2d 62 65 64 72 6f 63 6b 2d 6d 6f 64 65 6c ;.subset.of.gptel--bedrock-model
9e80 73 0a 20 20 3a 6d 6f 64 65 6c 73 20 27 28 63 6c 61 75 64 65 2d 33 2d 35 2d 73 6f 6e 6e 65 74 2d s...:models.'(claude-3-5-sonnet-
9ea0 32 30 32 34 31 30 32 32 29 0a 20 20 3b 3b 20 6f 70 74 69 6f 6e 61 6c 20 66 6f 72 20 70 72 6f 76 20241022)...;;.optional.for.prov
9ec0 69 73 69 6f 6e 65 64 20 61 63 63 65 73 73 0a 20 20 3a 6d 6f 64 65 6c 2d 72 65 67 69 6f 6e 20 27 isioned.access...:model-region.'
9ee0 61 70 61 63 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 apac).#+end_src..The.Bedrock.bac
9f00 6b 65 6e 64 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 kend.gets.your.AWS.credentials.f
9f20 72 6f 6d 20 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 rom.the.environment.variables..I
9f40 74 20 65 78 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 t.expects.to.find.either.~AWS_AC
9f60 43 45 53 53 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 CESS_KEY_ID~,.~AWS_SECRET_ACCESS
9f80 5f 4b 45 59 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 _KEY~,.~AWS_SESSION_TOKEN~.(opti
9fa0 6f 6e 61 6c 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 onal),.or.if.present,.can.use.~A
9fc0 57 53 5f 50 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 WS_PROFILE~.to.get.these.directl
9fe0 79 20 66 72 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 y.from.the.~aws~.cli...NOTE:.The
a000 20 42 65 64 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 .Bedrock.backend.needs.curl.>=.8
a020 2e 35 20 69 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 .5.in.order.for.the.sigv4.signin
a040 67 20 74 6f 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 g.to.work.properly,.https://gith
a060 75 62 2e 63 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 ub.com/curl/curl/issues/11794..A
a080 6e 20 65 72 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 n.error.will.be.signalled.if.~gp
a0a0 74 65 6c 2d 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 tel-curl~.is.~NIL~...You.can.pic
a0c0 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
a0e0 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
a100 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.
a120 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
a140 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
a160 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
a180 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
a1a0 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
a1c0 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
a1e0 73 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20 61 62 6f 76 65 2e 0a 23 2b 62 65 67 69 6e 5f s.instead.of.the.above..#+begin_
a200 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 69 src.emacs-lisp.;;.OPTIONAL.confi
a220 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 27 63 6c guration.(setq.gptel-model...'cl
a240 61 75 64 65 2d 33 2d 35 2d 73 6f 6e 6e 65 74 2d 32 30 32 34 31 30 32 32 0a 20 20 20 20 20 20 67 aude-3-5-sonnet-20241022.......g
a260 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 62 ptel-backend.......(gptel-make-b
a280 65 64 72 6f 63 6b 20 22 41 57 53 22 0a 20 20 09 3a 72 65 67 69 6f 6e 20 22 61 70 2d 6e 6f 72 74 edrock."AWS"....:region."ap-nort
a2a0 68 65 61 73 74 2d 31 22 0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20 73 75 62 73 65 74 20 6f 66 20 heast-1"...........;;.subset.of.
a2c0 67 70 74 65 6c 2d 2d 62 65 64 72 6f 63 6b 2d 6d 6f 64 65 6c 73 0a 20 20 20 20 20 20 20 20 20 20 gptel--bedrock-models...........
a2e0 3a 6d 6f 64 65 6c 73 20 27 28 63 6c 61 75 64 65 2d 33 2d 35 2d 73 6f 6e 6e 65 74 2d 32 30 32 34 :models.'(claude-3-5-sonnet-2024
a300 31 30 32 32 29 0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20 6f 70 74 69 6f 6e 61 6c 0a 20 20 20 20 1022)...........;;.optional.....
a320 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 65 6e ......:model-region.'apac)).#+en
a340 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 2a 2a 20 55 73 d_src..#+html:.</details>..**.Us
a360 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 72 66 age..gptel.provides.a.few.powerf
a380 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 6c 65 ul,.general.purpose.and.flexible
a3a0 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 79 20 .commands...You.can.dynamically.
a3c0 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 65 64 tweak.their.behavior.to.the.need
a3e0 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 73 2f s.of.your.task.with./directives/
a400 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 2e 20 ,.redirection.options.and.more..
a420 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 75 62 .There.is.a.[[https://www.youtub
a440 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 65 6f e.com/watch?v=bsRnh_brggM][video
a460 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 66 20 .demo]].showing.various.uses.of.
a480 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 74 20 gptel.--.but.=gptel-send=.might.
a4a0 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 2d 2d be.all.you.need...|-------------
a4c0 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 ------+-------------------------
a4e0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
a500 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
a520 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 2a 20 ----------|.|.*To.send.queries*.
a540 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 20 20 |.Description...................
a560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
a580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
a5a0 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 2d 2d ....|.|-------------------+-----
a5c0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
a5e0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
a600 2d 2d 2d 2d 2d 2d 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 ------------------------------|.
a620 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 20 74 |.=gptel-send=......|.Send.all.t
a640 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 6c 65 ext.up.to.=(point)=,.or.the.sele
a660 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 72 6b ction.if.region.is.active...Work
a680 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 70 74 s.anywhere.in.Emacs.....|.|.=gpt
a6a0 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 65 64 el=...........|.Create.a.new.ded
a6c0 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 72 65 icated.chat.buffer...Not.require
a6e0 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 20 20 d.to.use.gptel..................
a700 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 65 77 ..................|.|.=gptel-rew
a720 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 20 63 rite=...|.Rewrite,.refactor.or.c
a740 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 6e 20 hange.the.selected.region...Can.
a760 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 69 6e diff/ediff.changes.before.mergin
a780 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 2d 2d g/applying..|.|-----------------
a7a0 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 --+-----------------------------
a7c0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
a7e0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
a800 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 2b ------|..|---------------------+
a820 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
a840 2d 2d 2d 2d 2d 2d 2d 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 -------------------------------|
a860 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 20 20 .|.*To.tweak.behavior*.|........
a880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
a8a0 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 2d 2d .......................|.|------
a8c0 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 ---------------+----------------
a8e0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
a900 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 6c 2d ---------------|.|.=C-u=.=gptel-
a920 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 65 66 send=..|.Transient.menu.for.pref
a940 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 69 6f erences,.input/output.redirectio
a960 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 20 7c n.etc..|.|.=gptel-menu=........|
a980 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 20 20 ./(Same)/.......................
a9a0 20 20 20 20 20 20 20 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 ...............................|
a9c0 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 2d 2d .|---------------------+--------
a9e0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
aa00 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 2d 2d -----------------------|..|-----
aa20 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 2d -------------+------------------
aa40 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
aa60 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
aa80 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 61 64 ----------------------|.|.*To.ad
aaa0 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 20 20 d.context*.|....................
aac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
aae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
ab00 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 2d 2d ....................|.|---------
ab20 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 ---------+----------------------
ab40 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
ab60 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
ab80 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 64 64 ------------------|.|.=gptel-add
aba0 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 72 20 =......|.Add/remove.a.region.or.
abc0 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 20 44 buffer.to.gptel's.context...In.D
abe0 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 20 20 ired,.add/remove.marked.files...
ac00 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 2d 66 ................|.|.=gptel-add-f
ac20 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 70 6f ile=.|.Add.a.file.(text.or.suppo
ac40 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 6e 74 rted.media.type).to.gptel's.cont
ac60 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 74 72 ext...Also.available.from.the.tr
ac80 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 2d 2d ansient.menu..|.|---------------
aca0 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 2d ---+----------------------------
acc0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
ace0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
ad00 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 2d 2d ------------|..|----------------
ad20 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 ------------+-------------------
ad40 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
ad60 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
ad80 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 20 20 ------|.|.*Org.mode.bonuses*....
ada0 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 .....|..........................
adc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
ade0 20 20 20 20 20 20 20 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 ...............................|
ae00 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 2b 2d .|----------------------------+-
ae20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
ae40 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
ae60 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 74 ------------------------|.|.=gpt
ae80 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 20 63 el-org-set-topic=......|.Limit.c
aea0 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 68 65 onversation.context.to.an.Org.he
aec0 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 61 74 ading...(For.branching.conversat
aee0 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 67 2d ions.see.below.).|.|.=gptel-org-
af00 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 63 6f set-properties=.|.Write.gptel.co
af20 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 20 66 nfiguration.as.Org.properties,.f
af40 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 69 6f or.per-heading.chat.configuratio
af60 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 2d 2d n.........|.|-------------------
af80 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 ---------+----------------------
afa0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
afc0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
afe0 2d 2d 2d 7c 0a 0a 2a 2a 2a 20 49 6e 20 61 6e 79 20 62 75 66 66 65 72 3a 0a 0a 31 2e 20 43 61 6c ---|..***.In.any.buffer:..1..Cal
b000 6c 20 3d 4d 2d 78 20 67 70 74 65 6c 2d 73 65 6e 64 3d 20 74 6f 20 73 65 6e 64 20 74 68 65 20 74 l.=M-x.gptel-send=.to.send.the.t
b020 65 78 74 20 75 70 20 74 6f 20 74 68 65 20 63 75 72 73 6f 72 2e 20 54 68 65 20 72 65 73 70 6f 6e ext.up.to.the.cursor..The.respon
b040 73 65 20 77 69 6c 6c 20 62 65 20 69 6e 73 65 72 74 65 64 20 62 65 6c 6f 77 2e 20 20 43 6f 6e 74 se.will.be.inserted.below...Cont
b060 69 6e 75 65 20 74 68 65 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 20 62 79 20 74 79 70 69 6e 67 20 inue.the.conversation.by.typing.
b080 62 65 6c 6f 77 20 74 68 65 20 72 65 73 70 6f 6e 73 65 2e 0a 0a 32 2e 20 49 66 20 61 20 72 65 67 below.the.response...2..If.a.reg
b0a0 69 6f 6e 20 69 73 20 73 65 6c 65 63 74 65 64 2c 20 74 68 65 20 63 6f 6e 76 65 72 73 61 74 69 6f ion.is.selected,.the.conversatio
b0c0 6e 20 77 69 6c 6c 20 62 65 20 6c 69 6d 69 74 65 64 20 74 6f 20 69 74 73 20 63 6f 6e 74 65 6e 74 n.will.be.limited.to.its.content
b0e0 73 2e 0a 0a 33 2e 20 43 61 6c 6c 20 3d 4d 2d 78 20 67 70 74 65 6c 2d 73 65 6e 64 3d 20 77 69 74 s...3..Call.=M-x.gptel-send=.wit
b100 68 20 61 20 70 72 65 66 69 78 20 61 72 67 75 6d 65 6e 74 20 28 7e 43 2d 75 7e 29 0a 20 20 20 2d h.a.prefix.argument.(~C-u~)....-
b120 20 74 6f 20 73 65 74 20 63 68 61 74 20 70 61 72 61 6d 65 74 65 72 73 20 28 6d 6f 64 65 6c 2c 20 .to.set.chat.parameters.(model,.
b140 62 61 63 6b 65 6e 64 2c 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 20 65 74 63 29 20 66 6f 72 backend,.system.message.etc).for
b160 20 74 68 69 73 20 62 75 66 66 65 72 2c 0a 20 20 20 2d 20 69 6e 63 6c 75 64 65 20 71 75 69 63 6b .this.buffer,....-.include.quick
b180 20 69 6e 73 74 72 75 63 74 69 6f 6e 73 20 66 6f 72 20 74 68 65 20 6e 65 78 74 20 72 65 71 75 65 .instructions.for.the.next.reque
b1a0 73 74 20 6f 6e 6c 79 2c 0a 20 20 20 2d 20 74 6f 20 61 64 64 20 61 64 64 69 74 69 6f 6e 61 6c 20 st.only,....-.to.add.additional.
b1c0 63 6f 6e 74 65 78 74 20 2d 2d 20 72 65 67 69 6f 6e 73 2c 20 62 75 66 66 65 72 73 20 6f 72 20 66 context.--.regions,.buffers.or.f
b1e0 69 6c 65 73 20 2d 2d 20 74 6f 20 67 70 74 65 6c 2c 0a 20 20 20 2d 20 74 6f 20 72 65 61 64 20 74 iles.--.to.gptel,....-.to.read.t
b200 68 65 20 70 72 6f 6d 70 74 20 66 72 6f 6d 20 6f 72 20 72 65 64 69 72 65 63 74 20 74 68 65 20 72 he.prompt.from.or.redirect.the.r
b220 65 73 70 6f 6e 73 65 20 65 6c 73 65 77 68 65 72 65 2c 0a 20 20 20 2d 20 6f 72 20 74 6f 20 72 65 esponse.elsewhere,....-.or.to.re
b240 70 6c 61 63 65 20 74 68 65 20 70 72 6f 6d 70 74 20 77 69 74 68 20 74 68 65 20 72 65 73 70 6f 6e place.the.prompt.with.the.respon
b260 73 65 2e 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 se...#+html:.<img.src="https://g
b280 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 73 73 65 74 73 2f ithub.com/karthink/gptel/assets/
b2a0 38 36 30 37 35 33 32 2f 33 35 36 32 61 36 65 32 2d 37 61 35 63 2d 34 66 37 65 2d 38 65 35 37 2d 8607532/3562a6e2-7a5c-4f7e-8e57-
b2c0 62 66 33 63 31 31 35 38 39 63 37 33 22 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 20 61 6c 74 bf3c11589c73".align="center".alt
b2e0 3d 22 49 6d 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 ="Image.showing.gptel's.menu.wit
b300 68 20 73 6f 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 h.some.of.the.available.query.op
b320 74 69 6f 6e 73 2e 22 3e 0a 0a 59 6f 75 20 63 61 6e 20 61 6c 73 6f 20 64 65 66 69 6e 65 20 61 20 tions.">..You.can.also.define.a.
b340 22 70 72 65 73 65 74 22 20 62 75 6e 64 6c 65 20 6f 66 20 6f 70 74 69 6f 6e 73 20 74 68 61 74 20 "preset".bundle.of.options.that.
b360 61 72 65 20 61 70 70 6c 69 65 64 20 74 6f 67 65 74 68 65 72 2c 20 73 65 65 20 5b 5b 23 6f 70 74 are.applied.together,.see.[[#opt
b380 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 20 62 65 ion-presets][Option.presets]].be
b3a0 6c 6f 77 2e 0a 0a 2a 2a 2a 20 49 6e 20 61 20 64 65 64 69 63 61 74 65 64 20 63 68 61 74 20 62 75 low...***.In.a.dedicated.chat.bu
b3c0 66 66 65 72 3a 0a 0a 2a 4e 6f 74 65 2a 3a 20 67 70 74 65 6c 20 77 6f 72 6b 73 20 61 6e 79 77 68 ffer:..*Note*:.gptel.works.anywh
b3e0 65 72 65 20 69 6e 20 45 6d 61 63 73 2e 20 20 54 68 65 20 64 65 64 69 63 61 74 65 64 20 63 68 61 ere.in.Emacs...The.dedicated.cha
b400 74 20 62 75 66 66 65 72 20 6f 6e 6c 79 20 61 64 64 73 20 73 6f 6d 65 20 63 6f 6e 76 65 6e 69 65 t.buffer.only.adds.some.convenie
b420 6e 63 65 73 2e 0a 0a 31 2e 20 52 75 6e 20 3d 4d 2d 78 20 67 70 74 65 6c 3d 20 74 6f 20 73 74 61 nces...1..Run.=M-x.gptel=.to.sta
b440 72 74 20 6f 72 20 73 77 69 74 63 68 20 74 6f 20 74 68 65 20 63 68 61 74 20 62 75 66 66 65 72 2e rt.or.switch.to.the.chat.buffer.
b460 20 49 74 20 77 69 6c 6c 20 61 73 6b 20 79 6f 75 20 66 6f 72 20 74 68 65 20 6b 65 79 20 69 66 20 .It.will.ask.you.for.the.key.if.
b480 79 6f 75 20 73 6b 69 70 70 65 64 20 74 68 65 20 70 72 65 76 69 6f 75 73 20 73 74 65 70 2e 20 52 you.skipped.the.previous.step..R
b4a0 75 6e 20 69 74 20 77 69 74 68 20 61 20 70 72 65 66 69 78 2d 61 72 67 20 28 3d 43 2d 75 20 4d 2d un.it.with.a.prefix-arg.(=C-u.M-
b4c0 78 20 67 70 74 65 6c 3d 29 20 74 6f 20 73 74 61 72 74 20 61 20 6e 65 77 20 73 65 73 73 69 6f 6e x.gptel=).to.start.a.new.session
b4e0 2e 0a 0a 32 2e 20 49 6e 20 74 68 65 20 67 70 74 65 6c 20 62 75 66 66 65 72 2c 20 73 65 6e 64 20 ...2..In.the.gptel.buffer,.send.
b500 79 6f 75 72 20 70 72 6f 6d 70 74 20 77 69 74 68 20 3d 4d 2d 78 20 67 70 74 65 6c 2d 73 65 6e 64 your.prompt.with.=M-x.gptel-send
b520 3d 2c 20 62 6f 75 6e 64 20 74 6f 20 3d 43 2d 63 20 52 45 54 3d 2e 0a 0a 33 2e 20 53 65 74 20 63 =,.bound.to.=C-c.RET=...3..Set.c
b540 68 61 74 20 70 61 72 61 6d 65 74 65 72 73 20 28 4c 4c 4d 20 70 72 6f 76 69 64 65 72 2c 20 6d 6f hat.parameters.(LLM.provider,.mo
b560 64 65 6c 2c 20 64 69 72 65 63 74 69 76 65 73 20 65 74 63 29 20 66 6f 72 20 74 68 65 20 73 65 73 del,.directives.etc).for.the.ses
b580 73 69 6f 6e 20 62 79 20 63 61 6c 6c 69 6e 67 20 3d 67 70 74 65 6c 2d 73 65 6e 64 3d 20 77 69 74 sion.by.calling.=gptel-send=.wit
b5a0 68 20 61 20 70 72 65 66 69 78 20 61 72 67 75 6d 65 6e 74 20 28 3d 43 2d 75 20 43 2d 63 20 52 45 h.a.prefix.argument.(=C-u.C-c.RE
b5c0 54 3d 29 3a 0a 20 20 20 0a 23 2b 68 74 6d 6c 3a 20 3c 69 6d 67 20 73 72 63 3d 22 68 74 74 70 73 T=):.....#+html:.<img.src="https
b5e0 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 73 73 ://github.com/karthink/gptel/ass
b600 65 74 73 2f 38 36 30 37 35 33 32 2f 65 62 34 38 36 37 65 35 2d 33 30 61 63 2d 34 35 35 66 2d 39 ets/8607532/eb4867e5-30ac-455f-9
b620 39 39 66 2d 65 31 37 31 32 33 61 66 62 38 31 30 22 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 99f-e17123afb810".align="center"
b640 20 61 6c 74 3d 22 49 6d 61 67 65 20 73 68 6f 77 69 6e 67 20 67 70 74 65 6c 27 73 20 6d 65 6e 75 .alt="Image.showing.gptel's.menu
b660 20 77 69 74 68 20 73 6f 6d 65 20 6f 66 20 74 68 65 20 61 76 61 69 6c 61 62 6c 65 20 71 75 65 72 .with.some.of.the.available.quer
b680 79 20 6f 70 74 69 6f 6e 73 2e 22 3e 0a 0a 54 68 61 74 27 73 20 69 74 2e 20 59 6f 75 20 63 61 6e y.options.">..That's.it..You.can
b6a0 20 67 6f 20 62 61 63 6b 20 61 6e 64 20 65 64 69 74 20 70 72 65 76 69 6f 75 73 20 70 72 6f 6d 70 .go.back.and.edit.previous.promp
b6c0 74 73 20 61 6e 64 20 72 65 73 70 6f 6e 73 65 73 20 69 66 20 79 6f 75 20 77 61 6e 74 2e 0a 0a 54 ts.and.responses.if.you.want...T
b6e0 68 65 20 64 65 66 61 75 6c 74 20 6d 6f 64 65 20 69 73 20 3d 6d 61 72 6b 64 6f 77 6e 2d 6d 6f 64 he.default.mode.is.=markdown-mod
b700 65 3d 20 69 66 20 61 76 61 69 6c 61 62 6c 65 2c 20 65 6c 73 65 20 3d 74 65 78 74 2d 6d 6f 64 65 e=.if.available,.else.=text-mode
b720 3d 2e 20 20 59 6f 75 20 63 61 6e 20 73 65 74 20 3d 67 70 74 65 6c 2d 64 65 66 61 75 6c 74 2d 6d =...You.can.set.=gptel-default-m
b740 6f 64 65 3d 20 74 6f 20 3d 6f 72 67 2d 6d 6f 64 65 3d 20 69 66 20 64 65 73 69 72 65 64 2e 0a 0a ode=.to.=org-mode=.if.desired...
b760 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 20 62 You.can.also.define.a."preset".b
b780 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 69 65 undle.of.options.that.are.applie
b7a0 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 65 74 d.together,.see.[[#option-preset
b7c0 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 23 2b 68 74 s][Option.presets]].below...#+ht
b7e0 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 49 6e 63 6c ml:.<details><summary>.****.Incl
b800 75 64 69 6e 67 20 6d 65 64 69 61 20 28 69 6d 61 67 65 73 2c 20 64 6f 63 75 6d 65 6e 74 73 20 6f uding.media.(images,.documents.o
b820 72 20 70 6c 61 69 6e 2d 74 65 78 74 20 66 69 6c 65 73 29 20 77 69 74 68 20 72 65 71 75 65 73 74 r.plain-text.files).with.request
b840 73 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a 67 70 74 65 6c 20 73 75 70 70 s.#+html:.</summary>..gptel.supp
b860 6f 72 74 73 20 73 65 6e 64 69 6e 67 20 6d 65 64 69 61 20 69 6e 20 4d 61 72 6b 64 6f 77 6e 20 61 orts.sending.media.in.Markdown.a
b880 6e 64 20 4f 72 67 20 63 68 61 74 20 62 75 66 66 65 72 73 2c 20 62 75 74 20 74 68 69 73 20 66 65 nd.Org.chat.buffers,.but.this.fe
b8a0 61 74 75 72 65 20 69 73 20 64 69 73 61 62 6c 65 64 20 62 79 20 64 65 66 61 75 6c 74 2e 0a 0a 2d ature.is.disabled.by.default...-
b8c0 20 59 6f 75 20 63 61 6e 20 65 6e 61 62 6c 65 20 69 74 20 67 6c 6f 62 61 6c 6c 79 2c 20 66 6f 72 .You.can.enable.it.globally,.for
b8e0 20 61 6c 6c 20 6d 6f 64 65 6c 73 20 74 68 61 74 20 73 75 70 70 6f 72 74 20 69 74 2c 20 62 79 20 .all.models.that.support.it,.by.
b900 73 65 74 74 69 6e 67 20 3d 67 70 74 65 6c 2d 74 72 61 63 6b 2d 6d 65 64 69 61 3d 2e 20 20 0a 2d setting.=gptel-track-media=....-
b920 20 4f 72 20 79 6f 75 20 63 61 6e 20 73 65 74 20 69 74 20 6c 6f 63 61 6c 6c 79 2c 20 6a 75 73 74 .Or.you.can.set.it.locally,.just
b940 20 66 6f 72 20 74 68 65 20 63 68 61 74 20 62 75 66 66 65 72 2c 20 76 69 61 20 74 68 65 20 68 65 .for.the.chat.buffer,.via.the.he
b960 61 64 65 72 20 6c 69 6e 65 3a 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 69 6d 67 20 73 72 63 3d 22 68 74 ader.line:..#+html:.<img.src="ht
b980 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 63 68 6d 65 6e 74 tps://github.com/user-attachment
b9a0 73 2f 61 73 73 65 74 73 2f 39 31 66 36 61 61 61 62 2d 32 65 61 34 2d 34 38 30 36 2d 39 63 63 39 s/assets/91f6aaab-2ea4-4806-9cc9
b9c0 2d 33 39 62 34 62 34 36 61 38 65 36 63 22 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 20 61 6c -39b4b46a8e6c".align="center".al
b9e0 74 3d 22 49 6d 61 67 65 20 73 68 6f 77 69 6e 67 20 61 20 67 70 74 65 6c 20 63 68 61 74 20 62 75 t="Image.showing.a.gptel.chat.bu
ba00 66 66 65 72 27 73 20 68 65 61 64 65 72 20 6c 69 6e 65 20 77 69 74 68 20 74 68 65 20 62 75 74 74 ffer's.header.line.with.the.butt
ba20 6f 6e 20 74 6f 20 74 6f 67 67 6c 65 20 6d 65 64 69 61 20 73 75 70 70 6f 72 74 22 3e 0a 0a 2d 2d on.to.toggle.media.support">..--
ba40 2d 2d 2d 0a 0a 54 68 65 72 65 20 61 72 65 20 74 77 6f 20 77 61 79 73 20 74 6f 20 69 6e 63 6c 75 ---..There.are.two.ways.to.inclu
ba60 64 65 20 6d 65 64 69 61 20 6f 72 20 70 6c 61 69 6e 2d 74 65 78 74 20 66 69 6c 65 73 20 77 69 74 de.media.or.plain-text.files.wit
ba80 68 20 72 65 71 75 65 73 74 73 3a 0a 0a 31 2e 20 41 64 64 69 6e 67 20 6d 65 64 69 61 20 66 69 6c h.requests:..1..Adding.media.fil
baa0 65 73 20 74 6f 20 74 68 65 20 63 6f 6e 74 65 78 74 20 77 69 74 68 20 3d 67 70 74 65 6c 2d 61 64 es.to.the.context.with.=gptel-ad
bac0 64 2d 66 69 6c 65 3d 2c 20 64 65 73 63 72 69 62 65 64 20 66 75 72 74 68 65 72 20 62 65 6c 6f 77 d-file=,.described.further.below
bae0 2e 0a 32 2e 20 49 6e 63 6c 75 64 69 6e 67 20 6c 69 6e 6b 73 20 74 6f 20 6d 65 64 69 61 20 69 6e ..2..Including.links.to.media.in
bb00 20 63 68 61 74 20 62 75 66 66 65 72 73 2c 20 64 65 73 63 72 69 62 65 64 20 68 65 72 65 3a 0a 0a .chat.buffers,.described.here:..
bb20 54 6f 20 69 6e 63 6c 75 64 65 20 70 6c 61 69 6e 2d 74 65 78 74 20 66 69 6c 65 73 2c 20 69 6d 61 To.include.plain-text.files,.ima
bb40 67 65 73 20 6f 72 20 6f 74 68 65 72 20 73 75 70 70 6f 72 74 65 64 20 64 6f 63 75 6d 65 6e 74 20 ges.or.other.supported.document.
bb60 74 79 70 65 73 20 77 69 74 68 20 72 65 71 75 65 73 74 73 20 69 6e 20 63 68 61 74 20 62 75 66 66 types.with.requests.in.chat.buff
bb80 65 72 73 2c 20 79 6f 75 20 63 61 6e 20 69 6e 63 6c 75 64 65 20 6c 69 6e 6b 73 20 74 6f 20 74 68 ers,.you.can.include.links.to.th
bba0 65 6d 20 69 6e 20 74 68 65 20 63 68 61 74 20 62 75 66 66 65 72 2e 20 20 53 75 63 68 20 61 20 6c em.in.the.chat.buffer...Such.a.l
bbc0 69 6e 6b 20 6d 75 73 74 20 62 65 20 22 73 74 61 6e 64 61 6c 6f 6e 65 22 2c 20 69 2e 65 2e 20 6f ink.must.be."standalone",.i.e..o
bbe0 6e 20 61 20 6c 69 6e 65 20 62 79 20 69 74 73 65 6c 66 20 73 75 72 72 6f 75 6e 64 65 64 20 62 79 n.a.line.by.itself.surrounded.by
bc00 20 77 68 69 74 65 73 70 61 63 65 2e 0a 0a 49 6e 20 4f 72 67 20 6d 6f 64 65 2c 20 66 6f 72 20 65 .whitespace...In.Org.mode,.for.e
bc20 78 61 6d 70 6c 65 2c 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 61 72 65 20 61 6c 6c 20 2a 76 xample,.the.following.are.all.*v
bc40 61 6c 69 64 2a 20 77 61 79 73 20 6f 66 20 69 6e 63 6c 75 64 69 6e 67 20 61 6e 20 69 6d 61 67 65 alid*.ways.of.including.an.image
bc60 20 77 69 74 68 20 74 68 65 20 72 65 71 75 65 73 74 3a 0a 0a 2d 20 22 53 74 61 6e 64 61 6c 6f 6e .with.the.request:..-."Standalon
bc80 65 22 20 66 69 6c 65 20 6c 69 6e 6b 73 3a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 0a 49 6e 20 74 e".file.links:.#+begin_src..In.t
bca0 68 69 73 20 79 61 6d 6c 20 66 69 6c 65 2c 20 49 20 68 61 76 65 20 73 6f 6d 65 20 6b 65 79 2d 72 his.yaml.file,.I.have.some.key-r
bcc0 65 6d 61 70 70 69 6e 67 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 3a 0a 0a 5b 5b 66 69 6c 65 3a emapping.configuration:..[[file:
bce0 2f 70 61 74 68 2f 74 6f 2f 72 65 6d 61 70 2e 79 61 6d 6c 5d 5d 0a 0a 43 6f 75 6c 64 20 79 6f 75 /path/to/remap.yaml]]..Could.you
bd00 20 65 78 70 6c 61 69 6e 20 77 68 61 74 20 69 74 20 64 6f 65 73 2c 20 61 6e 64 20 77 68 69 63 68 .explain.what.it.does,.and.which
bd20 20 70 72 6f 67 72 61 6d 20 6d 69 67 68 74 20 62 65 20 75 73 69 6e 67 20 69 74 3f 0a 23 2b 65 6e .program.might.be.using.it?.#+en
bd40 64 5f 73 72 63 0a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 0a 44 65 73 63 72 69 62 65 20 74 68 69 73 d_src..#+begin_src.Describe.this
bd60 20 70 69 63 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 .picture..[[file:/path/to/screen
bd80 73 68 6f 74 2e 70 6e 67 5d 5d 0a 0a 46 6f 63 75 73 20 73 70 65 63 69 66 69 63 61 6c 6c 79 20 6f shot.png]]..Focus.specifically.o
bda0 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 0a 2d n.the.text.content..#+end_src..-
bdc0 20 22 53 74 61 6e 64 61 6c 6f 6e 65 22 20 66 69 6c 65 20 6c 69 6e 6b 20 77 69 74 68 20 64 65 73 ."Standalone".file.link.with.des
bde0 63 72 69 70 74 69 6f 6e 3a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 0a 44 65 73 63 72 69 62 65 20 cription:.#+begin_src..Describe.
be00 74 68 69 73 20 70 69 63 74 75 72 65 0a 0a 5b 5b 66 69 6c 65 3a 2f 70 61 74 68 2f 74 6f 2f 73 63 this.picture..[[file:/path/to/sc
be20 72 65 65 6e 73 68 6f 74 2e 70 6e 67 5d 5b 73 6f 6d 65 20 70 69 63 74 75 72 65 5d 5d 0a 0a 46 6f reenshot.png][some.picture]]..Fo
be40 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 63 6f 6e cus.specifically.on.the.text.con
be60 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 6c 6f 6e 65 22 2c tent..#+end_src..-."Standalone",
be80 20 61 6e 67 6c 65 20 66 69 6c 65 20 6c 69 6e 6b 3a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 0a 44 .angle.file.link:.#+begin_src..D
bea0 65 73 63 72 69 62 65 20 74 68 69 73 20 70 69 63 74 75 72 65 0a 0a 3c 66 69 6c 65 3a 2f 70 61 74 escribe.this.picture..<file:/pat
bec0 68 2f 74 6f 2f 73 63 72 65 65 6e 73 68 6f 74 2e 70 6e 67 3e 0a 0a 46 6f 63 75 73 20 73 70 65 63 h/to/screenshot.png>..Focus.spec
bee0 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..#+
bf00 65 6e 64 5f 73 72 63 0a 0a 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 6c 69 6e 6b 73 20 61 72 65 end_src..The.following.links.are
bf20 20 2a 6e 6f 74 20 76 61 6c 69 64 2a 2c 20 61 6e 64 20 74 68 65 20 74 65 78 74 20 6f 66 20 74 68 .*not.valid*,.and.the.text.of.th
bf40 65 20 6c 69 6e 6b 20 77 69 6c 6c 20 62 65 20 73 65 6e 74 20 69 6e 73 74 65 61 64 20 6f 66 20 74 e.link.will.be.sent.instead.of.t
bf60 68 65 20 66 69 6c 65 20 63 6f 6e 74 65 6e 74 73 3a 0a 0a 2d 20 49 6e 6c 69 6e 65 20 6c 69 6e 6b he.file.contents:..-.Inline.link
bf80 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 5b 5b 66 :.#+begin_src..Describe.this.[[f
bfa0 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 5d 5b 70 69 63 ile:/path/to/screenshot.png][pic
bfc0 74 75 72 65 5d 5d 2e 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 ture]]...Focus.specifically.on.t
bfe0 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 0a 2d 20 4c 69 he.text.content..#+end_src..-.Li
c000 6e 6b 20 6e 6f 74 20 22 73 74 61 6e 64 61 6c 6f 6e 65 22 3a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 nk.not."standalone":.#+begin_src
c020 0a 44 65 73 63 72 69 62 65 20 74 68 69 73 20 70 69 63 74 75 72 65 3a 20 0a 5b 5b 66 69 6c 65 3a .Describe.this.picture:..[[file:
c040 2f 70 61 74 68 2f 74 6f 2f 73 63 72 65 65 6e 73 68 6f 74 2e 70 6e 67 5d 5d 0a 46 6f 63 75 73 20 /path/to/screenshot.png]].Focus.
c060 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 63 6f 6e 74 65 6e 74 specifically.on.the.text.content
c080 2e 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 2d 20 4e 6f 74 20 61 20 76 61 6c 69 64 20 4f 72 67 20 6c ..#+end_src..-.Not.a.valid.Org.l
c0a0 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 74 68 65 20 70 ink:.#+begin_src..Describe.the.p
c0c0 69 63 74 75 72 65 0a 0a 66 69 6c 65 3a 2f 70 61 74 68 2f 74 6f 2f 73 63 72 65 65 6e 73 68 6f 74 icture..file:/path/to/screenshot
c0e0 2e 70 6e 67 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 53 69 6d 69 6c 61 72 20 63 72 69 74 65 72 69 61 .png.#+end_src..Similar.criteria
c100 20 61 70 70 6c 79 20 74 6f 20 4d 61 72 6b 64 6f 77 6e 20 63 68 61 74 20 62 75 66 66 65 72 73 2e .apply.to.Markdown.chat.buffers.
c120 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
c140 74 61 69 6c 73 3e 3c 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 53 61 76 65 20 61 6e 64 20 72 65 tails><summary>.****.Save.and.re
c160 73 74 6f 72 65 20 79 6f 75 72 20 63 68 61 74 20 73 65 73 73 69 6f 6e 73 0a 23 2b 68 74 6d 6c 3a store.your.chat.sessions.#+html:
c180 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a 53 61 76 69 6e 67 20 74 68 65 20 66 69 6c 65 20 77 69 6c .</summary>..Saving.the.file.wil
c1a0 6c 20 73 61 76 65 20 74 68 65 20 73 74 61 74 65 20 6f 66 20 74 68 65 20 63 6f 6e 76 65 72 73 61 l.save.the.state.of.the.conversa
c1c0 74 69 6f 6e 20 61 73 20 77 65 6c 6c 2e 20 20 54 6f 20 72 65 73 75 6d 65 20 74 68 65 20 63 68 61 tion.as.well...To.resume.the.cha
c1e0 74 2c 20 6f 70 65 6e 20 74 68 65 20 66 69 6c 65 20 61 6e 64 20 74 75 72 6e 20 6f 6e 20 3d 67 70 t,.open.the.file.and.turn.on.=gp
c200 74 65 6c 2d 6d 6f 64 65 3d 20 62 65 66 6f 72 65 20 65 64 69 74 69 6e 67 20 74 68 65 20 62 75 66 tel-mode=.before.editing.the.buf
c220 66 65 72 2e 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 53 65 74 fer...#+html:.</details>.***.Set
c240 74 69 6e 67 20 6f 70 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 ting.options.(backend,.model,.re
c260 71 75 65 73 74 20 70 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 quest.parameters,.system.prompts
c280 20 61 6e 64 20 6d 6f 72 65 29 0a 0a 4d 6f 73 74 20 67 70 74 65 6c 20 6f 70 74 69 6f 6e 73 20 63 .and.more)..Most.gptel.options.c
c2a0 61 6e 20 62 65 20 73 65 74 20 66 72 6f 6d 20 67 70 74 65 6c 27 73 20 74 72 61 6e 73 69 65 6e 74 an.be.set.from.gptel's.transient
c2c0 20 6d 65 6e 75 2c 20 61 76 61 69 6c 61 62 6c 65 20 62 79 20 63 61 6c 6c 69 6e 67 20 3d 67 70 74 .menu,.available.by.calling.=gpt
c2e0 65 6c 2d 73 65 6e 64 3d 20 77 69 74 68 20 61 20 70 72 65 66 69 78 2d 61 72 67 75 6d 65 6e 74 2c el-send=.with.a.prefix-argument,
c300 20 6f 72 20 76 69 61 20 3d 67 70 74 65 6c 2d 6d 65 6e 75 3d 2e 20 20 54 6f 20 63 68 61 6e 67 65 .or.via.=gptel-menu=...To.change
c320 20 74 68 65 69 72 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 73 20 69 6e 20 79 6f 75 72 20 63 6f .their.default.values.in.your.co
c340 6e 66 69 67 75 72 61 74 69 6f 6e 2c 20 73 65 65 20 5b 5b 23 61 64 64 69 74 69 6f 6e 61 6c 2d 63 nfiguration,.see.[[#additional-c
c360 6f 6e 66 69 67 75 72 61 74 69 6f 6e 5d 5b 41 64 64 69 74 69 6f 6e 61 6c 20 43 6f 6e 66 69 67 75 onfiguration][Additional.Configu
c380 72 61 74 69 6f 6e 5d 5d 2e 20 20 43 68 61 74 20 62 75 66 66 65 72 2d 73 70 65 63 69 66 69 63 20 ration]]...Chat.buffer-specific.
c3a0 6f 70 74 69 6f 6e 73 20 61 72 65 20 61 6c 73 6f 20 61 76 61 69 6c 61 62 6c 65 20 76 69 61 20 74 options.are.also.available.via.t
c3c0 68 65 20 68 65 61 64 65 72 2d 6c 69 6e 65 20 69 6e 20 63 68 61 74 20 62 75 66 66 65 72 73 2e 0a he.header-line.in.chat.buffers..
c3e0 0a 23 20 54 4f 44 4f 20 52 65 6d 6f 76 65 20 74 68 69 73 20 77 68 65 6e 20 77 72 69 74 69 6e 67 .#.TODO.Remove.this.when.writing
c400 20 74 68 65 20 6d 61 6e 75 61 6c 2e 0a 53 65 6c 65 63 74 69 6e 67 20 61 20 6d 6f 64 65 6c 20 61 .the.manual..Selecting.a.model.a
c420 6e 64 20 62 61 63 6b 65 6e 64 20 63 61 6e 20 62 65 20 64 6f 6e 65 20 69 6e 74 65 72 61 63 74 69 nd.backend.can.be.done.interacti
c440 76 65 6c 79 20 76 69 61 20 74 68 65 20 3d 2d 6d 3d 20 63 6f 6d 6d 61 6e 64 20 6f 66 20 3d 67 70 vely.via.the.=-m=.command.of.=gp
c460 74 65 6c 2d 6d 65 6e 75 3d 2e 20 20 41 76 61 69 6c 61 62 6c 65 20 72 65 67 69 73 74 65 72 65 64 tel-menu=...Available.registered
c480 20 6d 6f 64 65 6c 73 20 61 72 65 20 70 72 65 66 69 78 65 64 20 62 79 20 74 68 65 20 6e 61 6d 65 .models.are.prefixed.by.the.name
c4a0 20 6f 66 20 74 68 65 69 72 20 62 61 63 6b 65 6e 64 20 77 69 74 68 20 61 20 73 74 72 69 6e 67 20 .of.their.backend.with.a.string.
c4c0 6c 69 6b 65 20 3d 43 68 61 74 47 50 54 3a 67 70 74 2d 34 6f 2d 6d 69 6e 69 3d 2c 20 77 68 65 72 like.=ChatGPT:gpt-4o-mini=,.wher
c4e0 65 20 3d 43 68 61 74 47 50 54 3d 20 69 73 20 74 68 65 20 62 61 63 6b 65 6e 64 20 6e 61 6d 65 20 e.=ChatGPT=.is.the.backend.name.
c500 79 6f 75 20 75 73 65 64 20 74 6f 20 72 65 67 69 73 74 65 72 20 69 74 20 61 6e 64 20 3d 67 70 74 you.used.to.register.it.and.=gpt
c520 2d 34 6f 2d 6d 69 6e 69 3d 20 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6d 6f 64 -4o-mini=.is.the.name.of.the.mod
c540 65 6c 2e 0a 0a 2a 2a 2a 20 49 6e 63 6c 75 64 65 20 6d 6f 72 65 20 63 6f 6e 74 65 78 74 20 77 69 el...***.Include.more.context.wi
c560 74 68 20 72 65 71 75 65 73 74 73 0a 0a 42 79 20 64 65 66 61 75 6c 74 2c 20 67 70 74 65 6c 20 77 th.requests..By.default,.gptel.w
c580 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 65 20 61 63 74 69 76 ill.query.the.LLM.with.the.activ
c5a0 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 6e 74 65 6e 74 73 20 e.region.or.the.buffer.contents.
c5c0 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 69 74 20 63 61 6e 20 up.to.the.cursor...Often.it.can.
c5e0 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 20 4c 4c 4d 20 77 69 be.helpful.to.provide.the.LLM.wi
c600 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 6d 20 6f 75 74 73 69 th.additional.context.from.outsi
c620 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 72 20 65 78 61 6d 70 de.the.current.buffer..For.examp
c640 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 20 62 75 66 66 65 72 le,.when.you're.in.a.chat.buffer
c660 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 73 20 61 62 6f 75 74 .but.want.to.ask.questions.about
c680 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 64 65 20 62 75 66 66 .a.(possibly.changing).code.buff
c6a0 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 66 69 6c 65 73 2e 0a er.and.auxiliary.project.files..
c6c0 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 61 6c 20 74 65 78 74 .You.can.include.additional.text
c6e0 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 77 69 74 68 20 .regions,.buffers.or.files.with.
c700 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 79 73 2e 20 20 54 68 gptel's.queries.in.two.ways...Th
c720 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 68 61 74 20 62 75 66 e.first.is.via.links.in.chat.buf
c740 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 28 73 65 65 20 22 49 fers,.as.described.above.(see."I
c760 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 73 74 73 22 29 2e 0a ncluding.media.with.requests")..
c780 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 69 61 20 64 65 64 69 .The.second.is.globally.via.dedi
c7a0 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 6f 75 20 63 61 6e 20 cated.context.commands:.you.can.
c7c0 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 66 66 65 72 20 6f 72 add.a.selected.region,.buffer.or
c7e0 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 66 72 6f 6d 20 74 68 .file.to.gptel's.context.from.th
c800 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 64 3d 2e 20 20 54 6f e.menu,.or.call.=gptel-add=...To
c820 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 64 3d 20 69 6e 20 44 .add.a.file.use.=gptel-add=.in.D
c840 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 64 20 3d 67 70 74 65 ired,.or.use.the.dedicated.=gpte
c860 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 65 63 74 6f 72 69 65 l-add-file=.command...Directorie
c880 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 64 64 65 64 20 72 65 s.will.have.their.files.added.re
c8a0 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 20 66 6f 72 20 63 6f cursively.after.prompting.for.co
c8c0 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 6e 61 6c 20 63 6f 6e nfirmation...This.additional.con
c8e0 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 73 6e 61 70 73 68 6f text.is."live".and.not.a.snapsho
c900 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 6e 73 2c 20 62 75 66 t...Once.added,.the.regions,.buf
c920 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 20 61 6e 64 20 69 6e fers.or.files.are.scanned.and.in
c940 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 68 20 71 75 65 72 79 cluded.at.the.time.of.each.query
c960 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 20 6d 6f 64 65 6c 73 ...When.using.multi-modal.models
c980 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 6e 79 20 73 75 70 70 ,.added.files.can.be.of.any.supp
c9a0 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 6d 61 67 65 73 2e 0a orted.type.--.typically.images..
c9c0 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 76 65 20 63 6f 6e 74 .You.can.examine.the.active.cont
c9e0 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 3a 20 3c 69 6d 67 20 ext.from.the.menu:.#+html:.<img.
ca00 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 72 74 68 69 6e 6b src="https://github.com/karthink
ca20 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 64 37 66 63 38 2d 36 /gptel/assets/8607532/63cd7fc8-6
ca40 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 63 22 20 61 6c 69 67 b3e-42ae-b6ca-06ff935bae9c".alig
ca60 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 6e 67 20 67 70 n="center".alt="Image.showing.gp
ca80 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 65 63 74 20 63 6f 6e tel's.menu.with.the."inspect.con
caa0 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 6e 20 62 72 6f 77 73 text".command.">..And.then.brows
cac0 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 78 74 20 66 72 6f 6d e.through.or.remove.context.from
cae0 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 6d 6c 3a 20 3c 69 6d .the.context.buffer:.#+html:.<im
cb00 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 72 74 68 69 g.src="https://github.com/karthi
cb20 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 39 61 35 66 66 65 38 nk/gptel/assets/8607532/79a5ffe8
cb40 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 66 32 61 22 20 61 6c -3d63-4bf7-9bf6-0457ab61bf2a".al
cb60 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 6e 67 20 ign="center".alt="Image.showing.
cb80 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 0a 0a 2a 2a 2a 20 48 gptel's.context.buffer.">..***.H
cba0 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 0a 0a 53 6f 6d 65 20 andle."reasoning".content..Some.
cbc0 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 70 6f 6e 73 65 20 61 LLMs.include.in.their.response.a
cbe0 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 22 20 62 6c 6f 63 6b ."thinking".or."reasoning".block
cc00 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 20 71 75 61 6c 69 74 ...This.text.improves.the.qualit
cc20 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 74 70 75 74 2c 20 62 y.of.the.LLM...s.final.output,.b
cc40 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 20 74 6f 20 79 6f 75 ut.may.not.be.interesting.to.you
cc60 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 64 65 20 68 6f 77 20 .by.itself...You.can.decide.how.
cc80 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 6f 6e 69 6e 67 22 20 you.would.like.this."reasoning".
cca0 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 67 70 74 65 6c 20 62 content.to.be.handled.by.gptel.b
ccc0 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 20 3d 67 70 74 65 6c y.setting.the.user.option.=gptel
cce0 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 20 63 61 6e 20 69 6e -include-reasoning=...You.can.in
cd00 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 6e 73 65 20 28 74 68 clude.it.in.the.LLM.response.(th
cd20 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 65 6c 79 2c 20 69 6e e.default),.omit.it.entirely,.in
cd40 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 74 20 69 67 6e 6f 72 clude.it.in.the.buffer.but.ignor
cd60 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 73 61 74 69 6f 6e 20 e.it.on.subsequent.conversation.
cd80 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 61 6e 6f 74 68 65 72 turns,.or.redirect.it.to.another
cda0 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 74 69 6f 6e 73 2c 20 .buffer...As.with.most.options,.
cdc0 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 61 69 6f 72 20 66 72 you.can.specify.this.behvaior.fr
cde0 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 20 67 6c 6f 62 61 6c om.gptel's.transient.menu.global
ce00 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 65 ly,.buffer-locally.or.for.the.ne
ce20 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 63 6c 75 64 65 64 20 xt.request.only...When.included.
ce40 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 69 6e 67 20 63 6f 6e with.the.response,.reasoning.con
ce60 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 20 4f 72 67 20 62 6c tent.will.be.delimited.by.Org.bl
ce80 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 73 2e 0a 0a 2a 2a 2a ocks.or.markdown.backticks...***
cea0 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 69 64 65 20 74 68 65 .Tool.use..gptel.can.provide.the
cec0 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 73 70 20 22 74 6f 6f .LLM.with.client-side.elisp."too
cee0 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 61 74 69 6f 6e 73 2c ls",.or.function.specifications,
cf00 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 20 49 66 20 74 68 65 .along.with.the.request...If.the
cf20 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 6f 6f 6c 2c 20 69 74 .LLM.decides.to.run.the.tool,.it
cf40 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 72 67 75 6d 65 6e 74 .supplies.the.tool.call.argument
cf60 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 6e 20 74 68 65 20 74 s,.which.gptel.uses.to.run.the.t
cf80 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 2e 20 20 54 68 65 20 ool.in.your.Emacs.session...The.
cfa0 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 72 6e 65 64 20 74 6f result.is.optionally.returned.to
cfc0 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 74 61 73 6b 2e 0a 0a .the.LLM.to.complete.the.task...
cfe0 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 20 74 6f 20 65 71 75 This.exchange.can.be.used.to.equ
d000 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 69 65 73 20 6f 72 20 ip.the.LLM.with.capabilities.or.
d020 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 61 76 61 69 6c 61 62 knowledge.beyond.what.is.availab
d040 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 69 6e 73 74 61 6e 63 le.out.of.the.box.--.for.instanc
d060 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 20 63 6f 6e 74 72 6f e,.you.can.get.the.LLM.to.contro
d080 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 65 20 6f 72 20 6d 6f l.your.Emacs.frame,.create.or.mo
d0a0 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 73 2c 20 6f 72 20 6c dify.files.and.directories,.or.l
d0c0 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 6e 74 20 74 6f 20 79 ook.up.information.relevant.to.y
d0e0 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 68 20 6f 72 20 69 6e our.request.via.web.search.or.in
d100 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 69 73 20 61 20 76 65 .a.local.database...Here.is.a.ve
d120 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 6c 3a 20 3c 70 20 61 ry.simple.example:..#+html:.<p.a
d140 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 6f lign="center">.https://github.co
d160 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 64 31 66 38 65 32 m/user-attachments/assets/d1f8e2
d180 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 63 64 34 63 33 0a 23 ac-62bb-49bc-850d-0a67aa0cd4c3.#
d1a0 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 20 69 6e 20 67 70 74 +html:.</p>..To.use.tools.in.gpt
d1c0 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 61 74 20 73 75 70 70 el,.you.need.-.a.model.that.supp
d1e0 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 20 66 6c 61 67 73 68 orts.this.usage...All.the.flagsh
d200 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 65 2c 20 61 73 20 64 ip.models.support.tool.use,.as.d
d220 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 6e 20 6d 6f 64 65 6c o.many.of.the.smaller.open.model
d240 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 74 68 61 74 20 67 70 s..-.Tool.specifications.that.gp
d260 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 6f 65 73 20 6e 6f 74 tel.understands...gptel.does.not
d280 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 6f 6c 73 20 6f 75 74 .currently.include.any.tools.out
d2a0 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 74 61 69 6c 73 3e 3c .of.the.box...#+html:.<details><
d2c0 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 74 65 6c 20 74 6f 6f summary>.****.Defining.gptel.too
d2e0 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 66 69 6e 69 6e 67 20 ls.#+html:.</summary>..Defining.
d300 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 65 6c 69 73 70 20 66 a.gptel.tool.requires.an.elisp.f
d320 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 74 61 64 61 74 61 2e unction.and.associated.metadata.
d340 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 6c 20 64 65 66 69 6e ..Here.are.two.simple.tool.defin
d360 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 74 65 6e 74 73 20 6f itions:..*To.read.the.contents.o
d380 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 67 69 6e 5f 73 72 63 f.an.Emacs.buffer*:..#+begin_src
d3a0 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 6f 6f 6c 0a 20 3a 6e .emacs-lisp.(gptel-make-tool..:n
d3c0 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 20 20 20 20 20 20 20 ame."read_buffer"...............
d3e0 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 6e 61 6b 65 5f 63 61 .....;.javascript-style.snake_ca
d400 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 61 20 28 62 75 66 66 se.name..:function.(lambda.(buff
d420 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 65 20 66 75 6e 63 74 er)..................;.the.funct
d440 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 20 20 20 20 20 20 28 ion.that.will.run..............(
d460 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 74 2d 62 75 66 66 65 unless.(buffer-live-p.(get-buffe
d480 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 20 28 65 72 72 6f 72 r.buffer))................(error
d4a0 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 20 6c 69 76 65 2e 22 ."error:.buffer.%s.is.not.live."
d4c0 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 69 74 68 2d 63 75 72 .buffer))..............(with-cur
d4e0 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 20 20 20 20 20 20 20 rent-buffer..buffer.............
d500 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
d520 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 29 29 29 29 0a 20 3a es.(point-min).(point-max))))..:
d540 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 6f 6e 74 65 6e 74 73 description."return.the.contents
d560 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 67 73 20 28 6c 69 73 .of.an.emacs.buffer"..:args.(lis
d580 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 20 20 20 20 20 20 20 t.'(:name."buffer"..............
d5a0 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 20 3b 20 3a 74 79 70 ..:type.string............;.:typ
d5c0 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 20 20 20 20 20 20 20 e.value.must.be.a.symbol........
d5e0 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 20 6e 61 6d 65 20 6f ........:description."the.name.o
d600 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 74 73 20 61 72 65 20 f.the.buffer.whose.contents.are.
d620 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 67 6f 72 79 20 22 65 to.be.retrieved"))..:category."e
d640 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 20 20 3b 20 41 6e 20 macs").....................;.An.
d660 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 69 6e 67 0a 23 2b 65 arbitrary.label.for.grouping.#+e
d680 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 69 6f 6e 20 69 74 73 nd_src..Besides.the.function.its
d6a0 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 72 20 61 6e 6f 6e 79 elf,.which.can.be.named.or.anony
d6c0 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 20 73 70 65 63 69 66 mous.(as.above),.the.tool.specif
d6e0 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 3d 2c 20 3d 3a 64 65 ication.requires.a.=:name=,.=:de
d700 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 61 72 67 75 6d 65 6e scription=.and.a.list.of.argumen
d720 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 73 3d 2e 20 20 45 61 t.specifications.in.=:args=...Ea
d740 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 20 69 73 20 61 20 70 ch.argument.specification.is.a.p
d760 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 73 20 3d 3a 6e 61 6d list.with.atleast.the.keys.=:nam
d780 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 74 69 6f 6e 3d 2e 0a e=,.=:type=.and.=:description=..
d7a0 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 0a 0a 23 2b 62 65 67 .*To.create.a.text.file*:..#+beg
d7c0 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 6f in_src.emacs-lisp.(gptel-make-to
d7e0 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 20 20 20 20 20 20 20 ol..:name."create_file".........
d800 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 20 73 ...........;.javascript-style..s
d820 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
d840 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 20 20 20 3b 20 74 68 a.(path.filename.content)...;.th
d860 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 20 20 20 20 20 20 20 e.function.that.runs............
d880 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 64 2d 66 69 6c 65 2d ..(let.((full-path.(expand-file-
d8a0 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 20 20 20 20 20 20 20 name.filename.path)))...........
d8c0 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 20 20 20 20 20 20 20 .....(with-temp-buffer..........
d8e0 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 20 20 20 20 20 20 20 ........(insert.content)........
d900 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 6c 2d 70 61 74 68 29 ..........(write-file.full-path)
d920 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 22 43 72 65 61 74 65 )................(format."Create
d940 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 20 70 61 74 68 29 29 d.file.%s.in.%s".filename.path))
d960 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 20 6e 65 77 20 66 69 )..:description."Create.a.new.fi
d980 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 74 65 6e 74 22 0a 20 le.with.the.specified.content"..
d9a0 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 22 20 20 20 20 20 20 :args.(list.'(:name."path"......
d9c0 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 6e 74 20 73 70 65 63 .......;.a.list.of.argument.spec
d9e0 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 73 74 72 69 6e 67 0a ifications.........:type.string.
da00 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 64 69 72 65 63 74 ........:description."The.direct
da20 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 69 6c 65 22 29 0a 20 ory.where.to.create.the.file")..
da40 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 6e 61 6d 65 22 0a 09 ............'(:name."filename"..
da60 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 20 20 20 3a 64 65 73 .......:type.string.........:des
da80 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 20 66 69 6c 65 20 74 cription."The.name.of.the.file.t
daa0 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 28 3a 6e 61 6d 65 20 o.create")..............'(:name.
dac0 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 74 72 69 6e 67 0a 09 "content".........:type.string..
dae0 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 63 6f 6e 74 65 6e 74 .......:description."The.content
db00 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 20 3a 63 61 74 65 67 .to.write.to.the.file"))..:categ
db20 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 20 20 20 20 20 20 20 ory."filesystem")...............
db40 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 69 .;.An.arbitrary.label.for.groupi
db60 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 72 6f 6d 70 74 69 6e ng.#+end_src..With.some.promptin
db80 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 77 72 69 74 65 20 74 g,.you.can.get.an.LLM.to.write.t
dba0 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 73 20 63 61 6e 20 61 hese.tools.for.you...Tools.can.a
dbc0 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 6f 70 74 69 6f 6e 61 lso.be.asynchronous,.use.optiona
dbe0 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 20 77 69 74 68 20 6d l.arguments.and.arguments.with.m
dc00 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 61 79 73 2c 20 6f 62 ore.structure.(enums,.arrays,.ob
dc20 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 61 6b 65 2d 74 6f 6f jects.etc)...See.=gptel-make-too
dc40 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 3c 2f 64 65 74 61 69 l=.for.details...#+html:.</detai
dc60 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>.*
dc80 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 6c 3a 20 3c 2f 73 75 ***.Selecting.tools.#+html:.</su
dca0 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 73 20 63 61 6e 20 62 mmary>.Once.defined,.tools.can.b
dcc0 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 66 65 72 2d 6c 6f 63 e.selected.(globally,.buffer-loc
dce0 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 65 73 74 20 6f 6e 6c ally.or.for.the.next.request.onl
dd00 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 20 6d 65 6e 75 3a 0a y).from.gptel's.transient.menu:.
dd20 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
dd40 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 66 64 b.com/user-attachments/assets/fd
dd60 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 35 34 36 39 30 39 64 878596-b313-4385-b675-3d6546909d
dd80 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 6d 61 67 65 20 73 68 8b".align="center".alt="Image.sh
dda0 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 69 6f 6e 20 6d 65 6e owing.gptel's.tool.selection.men
ddc0 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 6c 73 6f 20 72 65 71 u.">..From.here.you.can.also.req
dde0 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 20 74 6f 6f 6c 20 63 uire.confirmation.for.all.tool.c
de00 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 63 61 6c 6c 20 72 65 alls,.and.decide.if.tool.call.re
de20 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 69 6e 20 74 68 65 20 sults.should.be.included.in.the.
de40 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 69 74 69 6f 6e 61 6c LLM.response...See.[[#additional
de60 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 6c 20 43 6f 6e 66 69 -configuration][Additional.Confi
de80 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 65 20 74 68 69 6e 67 guration]].for.doing.these.thing
dea0 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 65 74 61 69 6c 73 3e s.via.elisp...#+html:.</details>
dec0 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>.****
dee0 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 4d 43 50 29 20 69 6e .Model.Context.Protocol.(MCP).in
df00 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 72 79 3e 0a 0a 54 68 tegration.#+html:.</summary>..Th
df20 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 72 6f 74 6f 63 6f 6c e.[[https://modelcontextprotocol
df40 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 6f 6e 74 65 78 74 20 .io/introduction][Model.Context.
df60 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 74 6f 63 6f 6c 20 66 Protocol]].(MCP).is.a.protocol.f
df80 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 64 20 74 6f 6f 6c 73 or.providing.resources.and.tools
dfa0 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 69 74 68 75 62 2e 63 .to.LLMs,.and.[[https://github.c
dfc0 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 73 65 72 76 65 72 73 om/appcypher/awesome-mcp-servers
dfe0 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 5d 20 74 68 61 74 20 ][many.MCP.servers.exist]].that.
e000 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 65 20 61 63 63 65 73 provide.LLM.tools.for.file.acces
e020 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 41 50 49 20 69 6e 74 s,.database.connections,.API.int
e040 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 2e 65 6c 5d 5d 20 70 egrations.etc...The.[[mcp.el]].p
e060 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 61 73 20 61 6e 20 4d ackage.for.Emacs.can.act.as.an.M
e080 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 65 20 74 6f 6f 6c 20 CP.client.and.manage.these.tool.
e0a0 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 4d 43 50 20 73 65 72 calls.for.gptel...To.use.MCP.ser
e0c0 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 20 6e 65 65 64 20 74 vers.with.gptel,.you.thus.need.t
e0e0 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 74 70 73 3a 2f 2f 67 hree.pieces:..1..The.[[https://g
e100 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 2e 65 6c 5d 5b 6d ithub.com/lizqwerscott/mcp.el][m
e120 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 2c 20 5b 5b 68 74 74 cp.el]].package.for.Emacs,.[[htt
e140 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 69 6c 61 62 6c 65 20 ps://melpa.org/#/mcp][available.
e160 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 73 20 63 6f 6e 66 69 on.MELPA]]..2..MCP.servers.confi
e180 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 20 6d 63 70 2e 65 6c gured.for.and.running.via.mcp.el
e1a0 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 61 6e 20 4c 4c 4d 0a ..3..gptel.and.access.to.an.LLM.
e1c0 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 74 65 67 72 61 74 69 .gptel.includes.=gptel-integrati
e1e0 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 6d 61 6b 65 20 74 68 ons=,.a.small.library.to.make.th
e200 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 20 6c 69 62 72 61 72 is.more.convenient...This.librar
e220 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 61 64 65 64 20 62 79 y.is.not.automatically.loaded.by
e240 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 69 6b 65 20 74 6f 20 .gptel,.so.if.you.would.like.to.
e260 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 65 20 69 74 3a 0a 0a use.it.you.have.to.require.it:..
e280 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 65 71 75 69 72 65 20 #+begin_src.emacs-lisp.(require.
e2a0 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 64 5f 73 72 63 0a 0a 'gptel-integrations).#+end_src..
e2c0 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 74 68 65 20 3d 67 70 Once.loaded,.you.can.run.the.=gp
e2e0 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 65 6c 2d 6d 63 70 2d tel-mcp-connect=.and.=gptel-mcp-
e300 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 65 67 69 73 74 65 72 disconnect=.commands.to.register
e320 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 64 65 64 20 74 6f 6f .and.unregister.MCP-provided.too
e340 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 61 6c 73 6f 20 73 68 ls.in.gptel...These.will.also.sh
e360 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 6e 20 67 70 74 65 6c ow.up.in.the.tools.menu.in.gptel
e380 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 2d 6d 65 6e 75 3d 20 ,.accessed.via.=M-x.gptel-menu=.
e3a0 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 68 74 6d 6c 3a 20 3c or.=M-x.gptel-tools=:..#+html:.<
e3c0 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 72 img.src="https://github.com/user
e3e0 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 38 61 30 2d 34 39 63 -attachments/assets/2cbbf8a0-49c
e400 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 20 61 6c 69 67 6e 3d 7-49a5-ba24-514ad7e08799".align=
e420 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 6e 67 20 4d 43 50 20 "center".alt="Image.showing.MCP.
e440 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 73 20 69 6e 20 67 70 tool.registration.commands.in.gp
e460 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 2e 22 3e 0a 0a 4d 43 tel's.tool.selection.menu.">..MC
e480 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 73 65 64 20 61 73 20 P-provided.tools.can.be.used.as.
e4a0 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 69 73 20 61 20 73 63 normal.with.gptel...Here.is.a.sc
e4c0 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 20 28 49 6e 20 74 68 reencast.of.the.process...(In.th
e4e0 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 43 50 20 73 65 72 76 is.example.the."github".MCP.serv
e500 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 79 20 75 73 69 6e 67 er.is.installed.separately.using
e520 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 22 63 65 6e 74 65 72 .npm.)..#+html:.<p.align="center
e540 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 72 2d 61 74 74 61 63 ">.https://github.com/user-attac
e560 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 32 32 2d 34 61 35 39 hments/assets/f3ea7ac0-a322-4a59
e580 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 3a 20 3c 2f 70 3e 0a -b5b2-b3f592554f8a.#+html:.</p>.
e5a0 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 6e 67 20 74 68 65 73 .Here's.an.example.of.using.thes
e5c0 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 6e 3d 22 63 65 6e 74 e.tools:..#+html:.<p.align="cent
e5e0 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 72 2d 61 74 74 er">.https://github.com/user-att
e600 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 61 31 33 30 2d 34 64 achments/assets/b48a6a24-a130-4d
e620 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 6d 6c 3a 20 3c 2f 70 a7-a2ee-6ea568e10c85.#+html:.</p
e640 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 2a 2a 20 52 65 77 72 >..#+html:.</details>...***.Rewr
e660 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 61 20 72 65 67 69 6f ite,.refactor.or.fill.in.a.regio
e680 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 72 65 67 69 6f 6e 20 n..In.any.buffer:.with.a.region.
e6a0 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 74 65 78 74 2c 20 72 selected,.you.can.modify.text,.r
e6c0 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 63 6f 64 65 20 77 69 ewrite.prose.or.refactor.code.wi
e6e0 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 70 6c 65 20 77 69 74 th.=gptel-rewrite=...Example.wit
e700 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 6e 3d 22 63 65 6e 74 h.prose:..#+html:.<p.align="cent
e720 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 72 2d 61 74 74 er">.https://github.com/user-att
e740 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 39 62 64 65 2d 34 63 achments/assets/e3b436b3-9bde-4c
e760 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 6d 6c 3a 20 3c 2f 70 1f-b2ce-3f7df1984933.#+html:.</p
e780 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 64 20 6f 76 65 72 20 >..The.result.is.previewed.over.
e7a0 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 66 61 75 6c 74 2c 20 the.original.text...By.default,.
e7c0 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 64 2e 0a 0a 50 72 65 the.buffer.is.not.modified...Pre
e7e0 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 6e 20 74 68 65 20 72 ssing.=RET=.or.clicking.in.the.r
e800 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 76 65 20 79 6f 75 20 ewritten.region.should.give.you.
e820 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 6e 20 2a 69 74 65 72 a.list.of.options:.you.can.*iter
e840 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 20 2a 6d 65 72 67 65 ate*.on,.*diff*,.*ediff*,.*merge
e860 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 6d 65 6e 74 2e 20 20 *.or.*accept*.the.replacement...
e880 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 6c 3a 20 3c 70 20 61 Example.with.code:..#+html:.<p.a
e8a0 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 6f lign="center">.https://github.co
e8c0 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 34 30 36 37 66 64 m/user-attachments/assets/4067fd
e8e0 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 66 36 38 66 39 0a 23 b8-85d3-4264-9b64-d727353f68f9.#
e900 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 68 65 20 4c 4c 4d 20 +html:.</p>..*Acting.on.the.LLM.
e920 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 6c 69 6b 65 20 6f 6e response*:..If.you.would.like.on
e940 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 65 6e 20 61 75 74 6f e.of.these.things.to.happen.auto
e960 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 69 7a 65 20 3d 67 70 matically,.you.can.customize.=gp
e980 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 6e 3d 2e 0a 0a 54 68 tel-rewrite-default-action=...Th
e9a0 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 6c 61 62 6c 65 20 66 ese.options.are.also.available.f
e9c0 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 74 6d 6c 3a 20 3c 69 rom.=gptel-rewrite=:..#+html:.<i
e9e0 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 72 2d mg.src="https://github.com/user-
ea00 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 62 39 2d 61 61 33 66 attachments/assets/589785b9-aa3f
ea20 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 61 6c 69 67 6e 3d 22 -414a-98dd-d26b7509de08".align="
ea40 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 61 6c 6c 20 74 68 65 center"./>..And.you.can.call.the
ea60 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 72 20 69 73 20 69 6e m.directly.when.the.cursor.is.in
ea80 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 2b 68 74 6d 6c 3a 20 .the.rewritten.region:..#+html:.
eaa0 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
eac0 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 63 61 34 37 2d 65 31 r-attachments/assets/f5b3ca47-e1
eae0 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 22 20 61 6c 69 67 6e 46-45fe-8584-f11035fa4dbc".align
eb00 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 72 67 20 6d 6f 64 65 ="center"./>..***.Extra.Org.mode
eb20 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 72 73 20 61 20 66 65 .conveniences..gptel.offers.a.fe
eb40 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 72 67 20 6d 6f 64 65 w.extra.conveniences.in.Org.mode
eb60 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 6f 6e 20 63 6f 6e 74 ...*****.Limit.conversation.cont
eb80 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 75 20 63 61 6e 20 6c ext.to.an.Org.heading..You.can.l
eba0 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 74 65 78 74 20 74 6f imit.the.conversation.context.to
ebc0 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 63 6f 6d 6d 61 6e 64 .an.Org.heading.with.the.command
ebe0 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 28 54 68 69 73 20 73 .=gptel-org-set-topic=...(This.s
ec00 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 45 4c 5f 54 4f 50 49 ets.an.Org.property.(=GPTEL_TOPI
ec20 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 6f 75 20 63 61 6e 20 C=).under.the.heading...You.can.
ec40 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 6e 75 61 6c 6c 79 20 also.add.this.property.manually.
ec60 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 61 6e 63 68 69 6e 67 instead.)....*****.Use.branching
ec80 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 65 20 6f 66 20 63 6f .context.in.Org.mode.(tree.of.co
eca0 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 65 20 62 72 61 6e 63 nversations)..You.can.have.branc
ecc0 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 20 6d 6f 64 65 2c 20 hing.conversations.in.Org.mode,.
ece0 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 75 74 6c 69 6e 65 20 where.each.hierarchical.outline.
ed00 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 20 69 73 20 61 20 73 path.through.the.document.is.a.s
ed20 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 63 68 2e 20 20 54 68 eparate.conversation.branch...Th
ed40 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 69 74 69 6e 67 20 74 is.is.also.useful.for.limiting.t
ed60 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 75 65 72 79 2e 20 20 he.context.size.of.each.query...
ed80 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 72 67 2d 62 72 61 6e See.the.variable.=gptel-org-bran
eda0 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 76 61 72 69 61 62 6c ching-context=...If.this.variabl
edc0 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 70 72 6f 62 61 62 6c e.is.non-nil,.you.should.probabl
ede0 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 69 78 2d 61 6c 69 73 y.edit.=gptel-prompt-prefix-alis
ee00 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 65 66 69 78 2d 61 6c t=.and.=gptel-response-prefix-al
ee20 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 74 72 69 6e 67 73 20 ist=.so.that.the.prefix.strings.
ee40 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 68 65 61 64 69 6e 67 for.org-mode.are.not.Org.heading
ee60 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 73 2d 6c 69 73 70 0a s,.e.g...#+begin_src.emacs-lisp.
ee80 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 6f 64 65 20 67 70 74 ..(setf.(alist-get.'org-mode.gpt
eea0 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 40 75 73 65 72 5c 6e el-prompt-prefix-alist)."@user\n
eec0 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 67 2d 6d 6f 64 65 20 ")...(setf.(alist-get.'org-mode.
eee0 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 73 74 29 20 22 40 61 gptel-response-prefix-alist)."@a
ef00 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 74 68 65 72 77 69 73 ssistant\n").#+end_src..Otherwis
ef20 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 66 69 78 20 77 69 6c e,.the.default.prompt.prefix.wil
ef40 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 20 73 69 62 6c 69 6e l.make.successive.prompts.siblin
ef60 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 20 6f 6e 20 64 69 66 g.headings,.and.therefore.on.dif
ef80 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 68 65 73 2c 20 77 68 ferent.conversation.branches,.wh
efa0 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 6f 75 20 77 61 6e 74 ich.probably.isn't.what.you.want
efc0 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 6e 20 72 65 71 75 69 ...Note:.using.this.option.requi
efe0 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 62 65 20 61 76 61 69 res.Org.9.7.or.higher.to.be.avai
f000 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 68 75 62 2e 63 6f 6d lable...The.[[https://github.com
f020 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 5d 5b 61 69 2d 6f 72 /ultronozm/ai-org-chat.el][ai-or
f040 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 65 6c 20 74 6f 20 70 g-chat]].package.uses.gptel.to.p
f060 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 76 65 72 73 61 74 69 rovide.this.branching.conversati
f080 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 73 69 6f 6e 73 20 6f on.behavior.for.older.versions.o
f0a0 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 6c 20 70 61 72 61 6d f.Org.....*****.Save.gptel.param
f0c0 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 70 72 6f 64 75 63 69 eters.to.Org.headings.(reproduci
f0e0 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 72 65 20 74 68 65 20 ble.chats)..You.can.declare.the.
f100 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 70 65 72 61 74 75 72 gptel.model,.backend,.temperatur
f120 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 65 72 20 70 61 72 61 e,.system.message.and.other.para
f140 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 68 20 74 68 meters.as.Org.properties.with.th
f160 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 70 72 6f 70 65 72 74 e.command.=gptel-org-set-propert
f180 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 72 20 74 68 65 20 63 ies=...gptel.queries.under.the.c
f1a0 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 20 61 6c 77 61 79 73 orresponding.heading.will.always
f1c0 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 77 69 6e 67 20 79 6f .use.these.settings,.allowing.yo
f1e0 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 75 63 69 62 6c 65 20 u.to.create.mostly.reproducible.
f200 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 6f 20 68 61 76 65 20 LLM.chat.notebooks,.and.to.have.
f220 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 69 66 66 65 72 65 6e simultaneous.chats.with.differen
f240 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 61 6e 64 20 64 69 72 t.models,.model.settings.and.dir
f260 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 72 67 20 68 65 61 64 ectives.under.different.Org.head
f280 69 6e 67 73 2e 0a 0a 2a 2a 20 46 41 51 0a 2a 2a 2a 20 43 68 61 74 20 62 75 66 66 65 72 20 55 49 ings...**.FAQ.***.Chat.buffer.UI
f2a0 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>.****
f2c0 20 49 20 77 61 6e 74 20 74 68 65 20 77 69 6e 64 6f 77 20 74 6f 20 73 63 72 6f 6c 6c 20 61 75 74 .I.want.the.window.to.scroll.aut
f2e0 6f 6d 61 74 69 63 61 6c 6c 79 20 61 73 20 74 68 65 20 72 65 73 70 6f 6e 73 65 20 69 73 20 69 6e omatically.as.the.response.is.in
f300 73 65 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 serted.#+html:.</summary>..To.be
f320 20 6d 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 .minimally.annoying,.gptel.does.
f340 6e 6f 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 not.move.the.cursor.by.default..
f360 20 41 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 .Add.the.following.to.your.confi
f380 67 75 72 61 74 69 6f 6e 20 74 6f 20 65 6e 61 62 6c 65 20 61 75 74 6f 2d 73 63 72 6f 6c 6c 69 6e guration.to.enable.auto-scrollin
f3a0 67 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 28 61 64 64 2d g...#+begin_src.emacs-lisp.(add-
f3c0 68 6f 6f 6b 20 27 67 70 74 65 6c 2d 70 6f 73 74 2d 73 74 72 65 61 6d 2d 68 6f 6f 6b 20 27 67 70 hook.'gptel-post-stream-hook.'gp
f3e0 74 65 6c 2d 61 75 74 6f 2d 73 63 72 6f 6c 6c 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 23 2b 68 74 tel-auto-scroll).#+end_src..#+ht
f400 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>
f420 3c 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 49 20 77 61 6e 74 20 74 68 65 20 63 75 72 73 6f 72 <summary>.****.I.want.the.cursor
f440 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 65 .to.move.to.the.next.prompt.afte
f460 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 0a 23 2b 68 74 6d r.the.response.is.inserted.#+htm
f480 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a 54 6f 20 62 65 20 6d 69 6e 69 6d 61 6c 6c 79 20 61 l:.</summary>..To.be.minimally.a
f4a0 6e 6e 6f 79 69 6e 67 2c 20 67 70 74 65 6c 20 64 6f 65 73 20 6e 6f 74 20 6d 6f 76 65 20 74 68 65 nnoying,.gptel.does.not.move.the
f4c0 20 63 75 72 73 6f 72 20 62 79 20 64 65 66 61 75 6c 74 2e 20 20 41 64 64 20 74 68 65 20 66 6f 6c .cursor.by.default...Add.the.fol
f4e0 6c 6f 77 69 6e 67 20 74 6f 20 79 6f 75 72 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 74 6f 20 lowing.to.your.configuration.to.
f500 6d 6f 76 65 20 74 68 65 20 63 75 72 73 6f 72 3a 0a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d move.the.cursor:..#+begin_src.em
f520 61 63 73 2d 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 72 acs-lisp.(add-hook.'gptel-post-r
f540 65 73 70 6f 6e 73 65 2d 66 75 6e 63 74 69 6f 6e 73 20 27 67 70 74 65 6c 2d 65 6e 64 2d 6f 66 2d esponse-functions.'gptel-end-of-
f560 72 65 73 70 6f 6e 73 65 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 59 6f 75 20 63 61 6e 20 61 6c 73 response).#+end_src..You.can.als
f580 6f 20 63 61 6c 6c 20 3d 67 70 74 65 6c 2d 65 6e 64 2d 6f 66 2d 72 65 73 70 6f 6e 73 65 3d 20 61 o.call.=gptel-end-of-response=.a
f5a0 73 20 61 20 63 6f 6d 6d 61 6e 64 20 61 74 20 61 6e 79 20 74 69 6d 65 2e 0a 0a 23 2b 68 74 6d 6c s.a.command.at.any.time...#+html
f5c0 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
f5e0 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 49 20 77 61 6e 74 20 74 6f 20 63 68 61 6e 67 65 20 74 68 ummary>.****.I.want.to.change.th
f600 65 20 66 6f 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 e.formatting.of.the.prompt.and.L
f620 4c 4d 20 72 65 73 70 6f 6e 73 65 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a LM.response.#+html:.</summary>..
f640 46 6f 72 20 64 65 64 69 63 61 74 65 64 20 63 68 61 74 20 62 75 66 66 65 72 73 3a 20 63 75 73 74 For.dedicated.chat.buffers:.cust
f660 6f 6d 69 7a 65 20 3d 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 omize.=gptel-prompt-prefix-alist
f680 3d 20 61 6e 64 20 3d 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 =.and.=gptel-response-prefix-ali
f6a0 73 74 3d 2e 20 20 59 6f 75 20 63 61 6e 20 73 65 74 20 61 20 64 69 66 66 65 72 65 6e 74 20 70 61 st=...You.can.set.a.different.pa
f6c0 69 72 20 66 6f 72 20 65 61 63 68 20 6d 61 6a 6f 72 2d 6d 6f 64 65 2e 0a 0a 41 6e 79 77 68 65 72 ir.for.each.major-mode...Anywher
f6e0 65 20 69 6e 20 45 6d 61 63 73 3a 20 55 73 65 20 3d 67 70 74 65 6c 2d 70 72 65 2d 72 65 73 70 6f e.in.Emacs:.Use.=gptel-pre-respo
f700 6e 73 65 2d 68 6f 6f 6b 3d 20 61 6e 64 20 3d 67 70 74 65 6c 2d 70 6f 73 74 2d 72 65 73 70 6f 6e nse-hook=.and.=gptel-post-respon
f720 73 65 2d 66 75 6e 63 74 69 6f 6e 73 3d 2c 20 77 68 69 63 68 20 73 65 65 2e 0a 0a 23 2b 68 74 6d se-functions=,.which.see...#+htm
f740 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 3c l:.</details>.#+html:.<details><
f760 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 48 6f 77 20 64 6f 65 73 20 67 70 74 65 6c 20 64 69 73 summary>.****.How.does.gptel.dis
f780 74 69 6e 67 75 69 73 68 20 62 65 74 77 65 65 6e 20 75 73 65 72 20 70 72 6f 6d 70 74 73 20 61 6e tinguish.between.user.prompts.an
f7a0 64 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 73 3f 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 d.LLM.responses?.#+html:.</summa
f7c0 72 79 3e 0a 0a 67 70 74 65 6c 20 75 73 65 73 20 5b 5b 68 74 74 70 73 3a 2f 2f 77 77 77 2e 67 6e ry>..gptel.uses.[[https://www.gn
f7e0 75 2e 6f 72 67 2f 73 6f 66 74 77 61 72 65 2f 65 6d 61 63 73 2f 6d 61 6e 75 61 6c 2f 68 74 6d 6c u.org/software/emacs/manual/html
f800 5f 6e 6f 64 65 2f 65 6c 69 73 70 2f 54 65 78 74 2d 50 72 6f 70 65 72 74 69 65 73 2e 68 74 6d 6c _node/elisp/Text-Properties.html
f820 5d 5b 74 65 78 74 2d 70 72 6f 70 65 72 74 69 65 73 5d 5d 20 74 6f 20 77 61 74 65 72 6d 61 72 6b ][text-properties]].to.watermark
f840 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 73 2e 20 20 54 68 75 73 20 74 68 69 73 20 74 65 78 74 20 .LLM.responses...Thus.this.text.
f860 69 73 20 69 6e 74 65 72 70 72 65 74 65 64 20 61 73 20 61 20 72 65 73 70 6f 6e 73 65 20 65 76 65 is.interpreted.as.a.response.eve
f880 6e 20 69 66 20 79 6f 75 20 63 6f 70 79 20 69 74 20 69 6e 74 6f 20 61 6e 6f 74 68 65 72 20 62 75 n.if.you.copy.it.into.another.bu
f8a0 66 66 65 72 2e 20 20 49 6e 20 72 65 67 75 6c 61 72 20 62 75 66 66 65 72 73 20 28 62 75 66 66 65 ffer...In.regular.buffers.(buffe
f8c0 72 73 20 77 69 74 68 6f 75 74 20 3d 67 70 74 65 6c 2d 6d 6f 64 65 3d 20 65 6e 61 62 6c 65 64 29 rs.without.=gptel-mode=.enabled)
f8e0 2c 20 79 6f 75 20 63 61 6e 20 74 75 72 6e 20 6f 66 66 20 74 68 69 73 20 74 72 61 63 6b 69 6e 67 ,.you.can.turn.off.this.tracking
f900 20 62 79 20 75 6e 73 65 74 74 69 6e 67 20 3d 67 70 74 65 6c 2d 74 72 61 63 6b 2d 72 65 73 70 6f .by.unsetting.=gptel-track-respo
f920 6e 73 65 3d 2e 0a 0a 57 68 65 6e 20 72 65 73 74 6f 72 69 6e 67 20 61 20 63 68 61 74 20 73 74 61 nse=...When.restoring.a.chat.sta
f940 74 65 20 66 72 6f 6d 20 61 20 66 69 6c 65 20 6f 6e 20 64 69 73 6b 2c 20 67 70 74 65 6c 20 77 69 te.from.a.file.on.disk,.gptel.wi
f960 6c 6c 20 61 70 70 6c 79 20 74 68 65 73 65 20 70 72 6f 70 65 72 74 69 65 73 20 66 72 6f 6d 20 73 ll.apply.these.properties.from.s
f980 61 76 65 64 20 6d 65 74 61 64 61 74 61 20 69 6e 20 74 68 65 20 66 69 6c 65 20 77 68 65 6e 20 79 aved.metadata.in.the.file.when.y
f9a0 6f 75 20 74 75 72 6e 20 6f 6e 20 3d 67 70 74 65 6c 2d 6d 6f 64 65 3d 2e 0a 0a 67 70 74 65 6c 20 ou.turn.on.=gptel-mode=...gptel.
f9c0 64 6f 65 73 20 2f 6e 6f 74 2f 20 75 73 65 20 61 6e 79 20 70 72 65 66 69 78 20 6f 72 20 73 65 6d does./not/.use.any.prefix.or.sem
f9e0 61 6e 74 69 63 2f 73 79 6e 74 61 78 20 65 6c 65 6d 65 6e 74 20 69 6e 20 74 68 65 20 62 75 66 66 antic/syntax.element.in.the.buff
fa00 65 72 20 28 73 75 63 68 20 61 73 20 68 65 61 64 69 6e 67 73 29 20 74 6f 20 73 65 70 61 72 61 74 er.(such.as.headings).to.separat
fa20 65 20 70 72 6f 6d 70 74 73 20 61 6e 64 20 72 65 73 70 6f 6e 73 65 73 2e 20 20 54 68 65 20 72 65 e.prompts.and.responses...The.re
fa40 61 73 6f 6e 20 66 6f 72 20 74 68 69 73 20 69 73 20 74 68 61 74 20 67 70 74 65 6c 20 61 69 6d 73 ason.for.this.is.that.gptel.aims
fa60 20 74 6f 20 69 6e 74 65 67 72 61 74 65 20 61 73 20 73 65 61 6d 6c 65 73 73 6c 79 20 61 73 20 70 .to.integrate.as.seamlessly.as.p
fa80 6f 73 73 69 62 6c 65 20 69 6e 74 6f 20 79 6f 75 72 20 72 65 67 75 6c 61 72 20 45 6d 61 63 73 20 ossible.into.your.regular.Emacs.
faa0 75 73 61 67 65 3a 20 4c 4c 4d 20 69 6e 74 65 72 61 63 74 69 6f 6e 20 69 73 20 6e 6f 74 20 74 68 usage:.LLM.interaction.is.not.th
fac0 65 20 6f 62 6a 65 63 74 69 76 65 2c 20 69 74 27 73 20 6a 75 73 74 20 61 6e 6f 74 68 65 72 20 74 e.objective,.it's.just.another.t
fae0 6f 6f 6c 20 61 74 20 79 6f 75 72 20 64 69 73 70 6f 73 61 6c 2e 20 20 53 6f 20 72 65 71 75 69 72 ool.at.your.disposal...So.requir
fb00 69 6e 67 20 61 20 62 75 6e 63 68 20 6f 66 20 22 75 73 65 72 22 20 61 6e 64 20 22 61 73 73 69 73 ing.a.bunch.of."user".and."assis
fb20 74 61 6e 74 22 20 74 61 67 73 20 69 6e 20 74 68 65 20 62 75 66 66 65 72 20 69 73 20 6e 6f 69 73 tant".tags.in.the.buffer.is.nois
fb40 79 20 61 6e 64 20 72 65 73 74 72 69 63 74 69 76 65 2e 20 49 66 20 79 6f 75 20 77 61 6e 74 20 74 y.and.restrictive..If.you.want.t
fb60 68 65 73 65 20 64 65 6d 61 72 63 61 74 69 6f 6e 73 2c 20 79 6f 75 20 63 61 6e 20 63 75 73 74 6f hese.demarcations,.you.can.custo
fb80 6d 69 7a 65 20 3d 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 3d mize.=gptel-prompt-prefix-alist=
fba0 20 61 6e 64 20 3d 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 73 .and.=gptel-response-prefix-alis
fbc0 74 3d 2e 20 20 4e 6f 74 65 20 74 68 61 74 20 74 68 65 73 65 20 70 72 65 66 69 78 65 73 20 61 72 t=...Note.that.these.prefixes.ar
fbe0 65 20 66 6f 72 20 79 6f 75 72 20 72 65 61 64 61 62 69 6c 69 74 79 20 6f 6e 6c 79 20 61 6e 64 20 e.for.your.readability.only.and.
fc00 70 75 72 65 6c 79 20 63 6f 73 6d 65 74 69 63 2e 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 purely.cosmetic...#+html:.</deta
fc20 69 6c 73 3e 0a 2a 2a 2a 20 54 72 61 6e 73 69 65 6e 74 20 6d 65 6e 75 20 62 65 68 61 76 69 6f 72 ils>.***.Transient.menu.behavior
fc40 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>.****
fc60 20 49 20 77 61 6e 74 20 74 6f 20 73 65 74 20 67 70 74 65 6c 20 6f 70 74 69 6f 6e 73 2c 20 62 75 .I.want.to.set.gptel.options,.bu
fc80 74 20 6f 6e 6c 79 20 66 6f 72 20 74 68 69 73 20 62 75 66 66 65 72 0a 3a 50 52 4f 50 45 52 54 49 t.only.for.this.buffer.:PROPERTI
fca0 45 53 3a 0a 3a 49 44 3a 20 20 20 20 20 20 20 37 34 38 63 62 63 30 30 2d 30 63 39 32 2d 34 37 30 ES:.:ID:.......748cbc00-0c92-470
fcc0 35 2d 38 38 33 39 2d 36 31 39 62 32 63 38 30 65 35 36 36 0a 3a 45 4e 44 3a 0a 23 2b 68 74 6d 6c 5-8839-619b2c80e566.:END:.#+html
fce0 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a 49 6e 20 65 76 65 72 79 20 6d 65 6e 75 20 75 73 65 64 :.</summary>..In.every.menu.used
fd00 20 74 6f 20 73 65 74 20 6f 70 74 69 6f 6e 73 2c 20 67 70 74 65 6c 20 70 72 6f 76 69 64 65 73 20 .to.set.options,.gptel.provides.
fd20 61 20 22 73 63 6f 70 65 22 20 6f 70 74 69 6f 6e 2c 20 62 6f 75 6e 64 20 74 6f 20 74 68 65 20 7e a."scope".option,.bound.to.the.~
fd40 3d 7e 20 6b 65 79 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 =~.key:..#+html:.<img.src="https
fd60 3a 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 ://github.com/user-attachments/a
fd80 73 73 65 74 73 2f 66 39 39 30 34 31 33 34 2d 32 39 30 35 2d 34 62 31 64 2d 61 64 33 37 2d 62 36 ssets/f9904134-2905-4b1d-ad37-b6
fda0 34 63 37 37 37 61 66 38 61 63 22 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 20 2f 3e 0a 0a 23 4c777af8ac".align="center"./>..#
fdc0 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.
fde0 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 63 30 39 35 com/user-attachments/assets/c095
fe00 30 30 33 35 2d 62 66 36 35 2d 34 33 61 65 2d 62 36 34 39 2d 38 65 33 62 36 35 31 63 65 33 66 31 0035-bf65-43ae-b649-8e3b651ce3f1
fe20 22 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 20 2f 3e 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 69 6d ".align="center"./>..#+html:.<im
fe40 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 72 2d 61 g.src="https://github.com/user-a
fe60 74 74 61 63 68 6d 65 6e 74 73 2f 61 73 73 65 74 73 2f 66 61 33 62 31 32 34 36 2d 65 30 30 66 2d ttachments/assets/fa3b1246-e00f-
fe80 34 63 35 65 2d 38 38 63 37 2d 34 36 35 35 37 62 33 35 30 37 65 66 22 20 61 6c 69 67 6e 3d 22 63 4c5e-88c7-46557b3507ef".align="c
fea0 65 6e 74 65 72 22 20 2f 3e 0a 0a 59 6f 75 20 63 61 6e 20 66 6c 69 70 20 74 68 69 73 20 73 77 69 enter"./>..You.can.flip.this.swi
fec0 74 63 68 20 62 65 66 6f 72 65 20 73 65 74 74 69 6e 67 20 74 68 65 20 6f 70 74 69 6f 6e 20 74 6f tch.before.setting.the.option.to
fee0 20 3d 62 75 66 66 65 72 3d 20 6f 72 20 3d 6f 6e 65 73 68 6f 74 3d 2e 20 20 59 6f 75 20 6f 6e 6c .=buffer=.or.=oneshot=...You.onl
ff00 79 20 6e 65 65 64 20 74 6f 20 66 6c 69 70 20 74 68 69 73 20 73 77 69 74 63 68 20 6f 6e 63 65 2c y.need.to.flip.this.switch.once,
ff20 20 69 74 27 73 20 61 20 70 65 72 73 69 73 74 65 6e 74 20 73 65 74 74 69 6e 67 2e 20 20 3d 62 75 .it's.a.persistent.setting...=bu
ff40 66 66 65 72 3d 20 73 65 74 73 20 74 68 65 20 6f 70 74 69 6f 6e 20 62 75 66 66 65 72 2d 6c 6f 63 ffer=.sets.the.option.buffer-loc
ff60 61 6c 6c 79 2c 20 3d 6f 6e 65 73 68 6f 74 3d 20 77 69 6c 6c 20 73 65 74 20 69 74 20 66 6f 72 20 ally,.=oneshot=.will.set.it.for.
ff80 74 68 65 20 6e 65 78 74 20 67 70 74 65 6c 20 72 65 71 75 65 73 74 20 6f 6e 6c 79 2e 20 20 54 68 the.next.gptel.request.only...Th
ffa0 65 20 64 65 66 61 75 6c 74 20 73 63 6f 70 65 20 69 73 20 67 6c 6f 62 61 6c 2e 0a 0a 23 2b 68 74 e.default.scope.is.global...#+ht
ffc0 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>
ffe0 3c 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 49 20 77 61 6e 74 20 74 68 65 20 74 72 61 6e 73 69 <summary>.****.I.want.the.transi
10000 65 6e 74 20 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 ent.menu.options.to.be.saved.so.
10020 49 20 6f 6e 6c 79 20 6e 65 65 64 20 74 6f 20 73 65 74 20 74 68 65 6d 20 6f 6e 63 65 0a 23 2b 68 I.only.need.to.set.them.once.#+h
10040 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a 41 6e 79 20 6d 6f 64 65 6c 20 6f 70 74 69 6f tml:.</summary>..Any.model.optio
10060 6e 73 20 79 6f 75 20 73 65 74 20 61 72 65 20 73 61 76 65 64 20 61 63 63 6f 72 64 69 6e 67 20 74 ns.you.set.are.saved.according.t
10080 6f 20 74 68 65 20 73 63 6f 70 65 20 28 73 65 65 20 70 72 65 76 69 6f 75 73 20 71 75 65 73 74 69 o.the.scope.(see.previous.questi
100a0 6f 6e 29 2e 20 20 42 75 74 20 74 68 65 20 72 65 64 69 72 65 63 74 69 6f 6e 20 6f 70 74 69 6f 6e on)...But.the.redirection.option
100c0 73 20 69 6e 20 74 68 65 20 6d 65 6e 75 20 61 72 65 20 73 65 74 20 66 6f 72 20 74 68 65 20 6e 65 s.in.the.menu.are.set.for.the.ne
100e0 78 74 20 71 75 65 72 79 20 6f 6e 6c 79 3a 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 69 6d 67 20 73 72 63 xt.query.only:..#+html:.<img.src
10100 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 6e 6b 2f 67 70 ="https://github.com/karthink/gp
10120 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 2d 61 61 35 32 tel/assets/8607532/2ecc6be9-aa52
10140 2d 34 32 38 37 2d 61 37 33 39 2d 62 61 30 36 65 31 33 36 39 65 63 32 22 20 61 6c 74 3d 22 68 74 -4287-a739-ba06e1369ec2".alt="ht
10160 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 65 6c 2f tps://github.com/karthink/gptel/
10180 61 73 73 65 74 73 2f 38 36 30 37 35 33 32 2f 32 65 63 63 36 62 65 39 2d 61 61 35 32 2d 34 32 38 assets/8607532/2ecc6be9-aa52-428
101a0 37 2d 61 37 33 39 2d 62 61 30 36 65 31 33 36 39 65 63 32 22 3e 0a 0a 59 6f 75 20 63 61 6e 20 6d 7-a739-ba06e1369ec2">..You.can.m
101c0 61 6b 65 20 74 68 65 6d 20 70 65 72 73 69 73 74 65 6e 74 20 61 63 72 6f 73 73 20 74 68 69 73 20 ake.them.persistent.across.this.
101e0 45 6d 61 63 73 20 73 65 73 73 69 6f 6e 20 62 79 20 70 72 65 73 73 69 6e 67 20 7e 43 2d 78 20 43 Emacs.session.by.pressing.~C-x.C
10200 2d 73 7e 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 -s~:..#+html:.<img.src="https://
10220 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 73 73 65 74 73 github.com/karthink/gptel/assets
10240 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 2d 39 33 33 36 /8607532/b8bcb6ad-c974-41e1-9336
10260 2d 66 64 62 61 30 30 39 38 61 32 66 65 22 20 61 6c 74 3d 22 68 74 74 70 73 3a 2f 2f 67 69 74 68 -fdba0098a2fe".alt="https://gith
10280 75 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 ub.com/karthink/gptel/assets/860
102a0 37 35 33 32 2f 62 38 62 63 62 36 61 64 2d 63 39 37 34 2d 34 31 65 31 2d 39 33 33 36 2d 66 64 62 7532/b8bcb6ad-c974-41e1-9336-fdb
102c0 61 30 30 39 38 61 32 66 65 22 3e 0a 0a 28 59 6f 75 20 63 61 6e 20 61 6c 73 6f 20 63 79 63 6c 65 a0098a2fe">..(You.can.also.cycle
102e0 20 74 68 72 6f 75 67 68 20 70 72 65 73 65 74 73 20 79 6f 75 27 76 65 20 73 61 76 65 64 20 77 69 .through.presets.you've.saved.wi
10300 74 68 20 7e 43 2d 78 20 70 7e 20 61 6e 64 20 7e 43 2d 78 20 6e 7e 2e 29 0a 0a 4e 6f 77 20 74 68 th.~C-x.p~.and.~C-x.n~.)..Now.th
10320 65 73 65 20 77 69 6c 6c 20 62 65 20 65 6e 61 62 6c 65 64 20 77 68 65 6e 65 76 65 72 20 79 6f 75 ese.will.be.enabled.whenever.you
10340 20 73 65 6e 64 20 61 20 71 75 65 72 79 20 66 72 6f 6d 20 74 68 65 20 74 72 61 6e 73 69 65 6e 74 .send.a.query.from.the.transient
10360 20 6d 65 6e 75 2e 20 20 49 66 20 79 6f 75 20 77 61 6e 74 20 74 6f 20 75 73 65 20 74 68 65 73 65 .menu...If.you.want.to.use.these
10380 20 73 61 76 65 64 20 6f 70 74 69 6f 6e 73 20 77 69 74 68 6f 75 74 20 69 6e 76 6f 6b 69 6e 67 20 .saved.options.without.invoking.
103a0 74 68 65 20 74 72 61 6e 73 69 65 6e 74 20 6d 65 6e 75 2c 20 79 6f 75 20 63 61 6e 20 75 73 65 20 the.transient.menu,.you.can.use.
103c0 61 20 6b 65 79 62 6f 61 72 64 20 6d 61 63 72 6f 3a 0a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 a.keyboard.macro:..#+begin_src.e
103e0 6d 61 63 73 2d 6c 69 73 70 0a 3b 3b 20 52 65 70 6c 61 63 65 20 77 69 74 68 20 79 6f 75 72 20 6b macs-lisp.;;.Replace.with.your.k
10400 65 79 20 74 6f 20 69 6e 76 6f 6b 65 20 74 68 65 20 74 72 61 6e 73 69 65 6e 74 20 6d 65 6e 75 3a ey.to.invoke.the.transient.menu:
10420 0a 28 6b 65 79 6d 61 70 2d 67 6c 6f 62 61 6c 2d 73 65 74 20 22 3c 66 36 3e 22 20 22 43 2d 75 20 .(keymap-global-set."<f6>"."C-u.
10440 43 2d 63 20 3c 72 65 74 75 72 6e 3e 20 3c 72 65 74 75 72 6e 3e 22 29 0a 23 2b 65 6e 64 5f 73 72 C-c.<return>.<return>").#+end_sr
10460 63 0a 0a 4f 72 20 73 65 65 20 74 68 69 73 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e c..Or.see.this.[[https://github.
10480 63 6f 6d 2f 6b 61 72 74 68 69 6e 6b 2f 67 70 74 65 6c 2f 77 69 6b 69 2f 43 6f 6d 6d 6f 6e 6c 79 com/karthink/gptel/wiki/Commonly
104a0 2d 72 65 71 75 65 73 74 65 64 2d 66 65 61 74 75 72 65 73 23 73 61 76 65 2d 74 72 61 6e 73 69 65 -requested-features#save-transie
104c0 6e 74 2d 66 6c 61 67 73 5d 5b 77 69 6b 69 20 65 6e 74 72 79 5d 5d 2e 0a 0a 23 2b 68 74 6d 6c 3a nt-flags][wiki.entry]]...#+html:
104e0 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
10500 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 55 73 69 6e 67 20 74 68 65 20 74 72 61 6e 73 69 65 6e 74 20 mmary>.****.Using.the.transient.
10520 6d 65 6e 75 20 6c 65 61 76 65 73 20 62 65 68 69 6e 64 20 65 78 74 72 61 20 77 69 6e 64 6f 77 73 menu.leaves.behind.extra.windows
10540 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a 49 66 20 75 73 69 6e 67 20 67 70 .#+html:.</summary>..If.using.gp
10560 74 65 6c 27 73 20 74 72 61 6e 73 69 65 6e 74 20 6d 65 6e 75 73 20 63 61 75 73 65 73 20 6e 65 77 tel's.transient.menus.causes.new
10580 2f 65 78 74 72 61 20 77 69 6e 64 6f 77 20 73 70 6c 69 74 73 20 74 6f 20 62 65 20 63 72 65 61 74 /extra.window.splits.to.be.creat
105a0 65 64 2c 20 63 68 65 63 6b 20 79 6f 75 72 20 76 61 6c 75 65 20 6f 66 20 3d 74 72 61 6e 73 69 65 ed,.check.your.value.of.=transie
105c0 6e 74 2d 64 69 73 70 6c 61 79 2d 62 75 66 66 65 72 2d 61 63 74 69 6f 6e 3d 2e 20 20 5b 5b 68 74 nt-display-buffer-action=...[[ht
105e0 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 65 6e 74 tps://github.com/magit/transient
10600 2f 64 69 73 63 75 73 73 69 6f 6e 73 2f 33 35 38 5d 5b 53 65 65 20 74 68 69 73 20 64 69 73 63 75 /discussions/358][See.this.discu
10620 73 73 69 6f 6e 5d 5d 20 66 6f 72 20 6d 6f 72 65 20 63 6f 6e 74 65 78 74 2e 0a 0a 49 66 20 79 6f ssion]].for.more.context...If.yo
10640 75 20 61 72 65 20 75 73 69 6e 67 20 48 65 6c 6d 2c 20 73 65 65 20 5b 5b 68 74 74 70 73 3a 2f 2f u.are.using.Helm,.see.[[https://
10660 67 69 74 68 75 62 2e 63 6f 6d 2f 6d 61 67 69 74 2f 74 72 61 6e 73 69 65 6e 74 2f 64 69 73 63 75 github.com/magit/transient/discu
10680 73 73 69 6f 6e 73 2f 33 36 31 5d 5b 54 72 61 6e 73 69 65 6e 74 23 33 36 31 5d 5d 2e 0a 0a 49 6e ssions/361][Transient#361]]...In
106a0 20 67 65 6e 65 72 61 6c 2c 20 64 6f 20 6e 6f 74 20 63 75 73 74 6f 6d 69 7a 65 20 74 68 69 73 20 .general,.do.not.customize.this.
106c0 54 72 61 6e 73 69 65 6e 74 20 6f 70 74 69 6f 6e 20 75 6e 6c 65 73 73 20 79 6f 75 20 6b 6e 6f 77 Transient.option.unless.you.know
106e0 20 77 68 61 74 20 79 6f 75 27 72 65 20 64 6f 69 6e 67 21 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 .what.you're.doing!..#+html:.</d
10700 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
10720 79 3e 0a 2a 2a 2a 2a 20 43 61 6e 20 49 20 63 68 61 6e 67 65 20 74 68 65 20 74 72 61 6e 73 69 65 y>.****.Can.I.change.the.transie
10740 6e 74 20 6d 65 6e 75 20 6b 65 79 20 62 69 6e 64 69 6e 67 73 3f 0a 23 2b 68 74 6d 6c 3a 20 3c 2f nt.menu.key.bindings?.#+html:.</
10760 73 75 6d 6d 61 72 79 3e 0a 0a 59 65 73 2c 20 73 65 65 20 3d 74 72 61 6e 73 69 65 6e 74 2d 73 75 summary>..Yes,.see.=transient-su
10780 66 66 69 78 2d 70 75 74 3d 2e 20 20 54 68 69 73 20 63 68 61 6e 67 65 73 20 74 68 65 20 6b 65 79 ffix-put=...This.changes.the.key
107a0 20 74 6f 20 73 65 6c 65 63 74 20 61 20 62 61 63 6b 65 6e 64 2f 6d 6f 64 65 6c 20 66 72 6f 6d 20 .to.select.a.backend/model.from.
107c0 22 2d 6d 22 20 74 6f 20 22 4d 22 20 69 6e 20 67 70 74 65 6c 27 73 20 6d 65 6e 75 3a 0a 23 2b 62 "-m".to."M".in.gptel's.menu:.#+b
107e0 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 28 74 72 61 6e 73 69 65 6e 74 2d 73 egin_src.emacs-lisp.(transient-s
10800 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 20 22 2d 6d 22 29 uffix-put.'gptel-menu.(kbd."-m")
10820 20 3a 6b 65 79 20 22 4d 22 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f .:key."M").#+end_src..#+html:.</
10840 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 6d 61 details>.#+html:.<details><summa
10860 72 79 3e 0a 2a 2a 2a 2a 20 28 44 6f 6f 6d 20 45 6d 61 63 73 29 20 53 65 6e 64 69 6e 67 20 61 20 ry>.****.(Doom.Emacs).Sending.a.
10880 71 75 65 72 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 query.from.the.gptel.menu.fails.
108a0 62 65 63 61 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 because.of.a.key.conflict.with.O
108c0 72 67 20 6d 6f 64 65 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a 44 6f 6f 6d rg.mode.#+html:.</summary>..Doom
108e0 20 62 69 6e 64 73 20 7e 52 45 54 7e 20 69 6e 20 4f 72 67 20 6d 6f 64 65 20 74 6f 20 3d 2b 6f 72 .binds.~RET~.in.Org.mode.to.=+or
10900 67 2f 64 77 69 6d 2d 61 74 2d 70 6f 69 6e 74 3d 2c 20 77 68 69 63 68 20 61 70 70 65 61 72 73 20 g/dwim-at-point=,.which.appears.
10920 74 6f 20 63 6f 6e 66 6c 69 63 74 20 77 69 74 68 20 67 70 74 65 6c 27 73 20 74 72 61 6e 73 69 65 to.conflict.with.gptel's.transie
10940 6e 74 20 6d 65 6e 75 20 62 69 6e 64 69 6e 67 73 20 66 6f 72 20 73 6f 6d 65 20 72 65 61 73 6f 6e nt.menu.bindings.for.some.reason
10960 2e 0a 0a 54 77 6f 20 73 6f 6c 75 74 69 6f 6e 73 3a 0a 2d 20 50 72 65 73 73 20 7e 43 2d 6d 7e 20 ...Two.solutions:.-.Press.~C-m~.
10980 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20 72 65 74 75 72 6e 20 6b 65 79 2e 0a 2d 20 43 68 61 instead.of.the.return.key..-.Cha
109a0 6e 67 65 20 74 68 65 20 73 65 6e 64 20 6b 65 79 20 66 72 6f 6d 20 72 65 74 75 72 6e 20 74 6f 20 nge.the.send.key.from.return.to.
109c0 61 20 6b 65 79 20 6f 66 20 79 6f 75 72 20 63 68 6f 69 63 65 3a 0a 20 20 23 2b 62 65 67 69 6e 5f a.key.of.your.choice:...#+begin_
109e0 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 20 20 28 74 72 61 6e 73 69 65 6e 74 2d 73 75 66 66 src.emacs-lisp...(transient-suff
10a00 69 78 2d 70 75 74 20 27 67 70 74 65 6c 2d 6d 65 6e 75 20 28 6b 62 64 20 22 52 45 54 22 29 20 3a ix-put.'gptel-menu.(kbd."RET").:
10a20 6b 65 79 20 22 3c 66 38 3e 22 29 0a 20 20 23 2b 65 6e 64 5f 73 72 63 0a 0a 23 2b 68 74 6d 6c 3a key."<f8>")...#+end_src..#+html:
10a40 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 2a 2a 2a 20 4d 69 73 63 65 6c 6c 61 6e 65 6f 75 73 0a 23 2b .</details>.***.Miscellaneous.#+
10a60 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 49 20 html:.<details><summary>.****.I.
10a80 77 61 6e 74 20 74 6f 20 75 73 65 20 67 70 74 65 6c 20 69 6e 20 61 20 77 61 79 20 74 68 61 74 27 want.to.use.gptel.in.a.way.that'
10aa0 73 20 6e 6f 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 20 s.not.supported.by.=gptel-send=.
10ac0 6f 72 20 74 68 65 20 6f 70 74 69 6f 6e 73 20 6d 65 6e 75 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 or.the.options.menu.#+html:.</su
10ae0 6d 6d 61 72 79 3e 0a 0a 67 70 74 65 6c 27 73 20 64 65 66 61 75 6c 74 20 75 73 61 67 65 20 70 61 mmary>..gptel's.default.usage.pa
10b00 74 74 65 72 6e 20 69 73 20 73 69 6d 70 6c 65 2c 20 61 6e 64 20 77 69 6c 6c 20 73 74 61 79 20 74 ttern.is.simple,.and.will.stay.t
10b20 68 69 73 20 77 61 79 3a 20 52 65 61 64 20 69 6e 70 75 74 20 69 6e 20 61 6e 79 20 62 75 66 66 65 his.way:.Read.input.in.any.buffe
10b40 72 20 61 6e 64 20 69 6e 73 65 72 74 20 74 68 65 20 72 65 73 70 6f 6e 73 65 20 62 65 6c 6f 77 20 r.and.insert.the.response.below.
10b60 69 74 2e 20 20 53 6f 6d 65 20 63 75 73 74 6f 6d 20 62 65 68 61 76 69 6f 72 20 69 73 20 70 6f 73 it...Some.custom.behavior.is.pos
10b80 73 69 62 6c 65 20 77 69 74 68 20 74 68 65 20 74 72 61 6e 73 69 65 6e 74 20 6d 65 6e 75 20 28 3d sible.with.the.transient.menu.(=
10ba0 43 2d 75 20 4d 2d 78 20 67 70 74 65 6c 2d 73 65 6e 64 3d 29 2e 0a 0a 46 6f 72 20 6d 6f 72 65 20 C-u.M-x.gptel-send=)...For.more.
10bc0 70 72 6f 67 72 61 6d 6d 61 62 6c 65 20 75 73 61 67 65 2c 20 67 70 74 65 6c 20 70 72 6f 76 69 64 programmable.usage,.gptel.provid
10be0 65 73 20 61 20 67 65 6e 65 72 61 6c 20 3d 67 70 74 65 6c 2d 72 65 71 75 65 73 74 3d 20 66 75 6e es.a.general.=gptel-request=.fun
10c00 63 74 69 6f 6e 20 74 68 61 74 20 61 63 63 65 70 74 73 20 61 20 63 75 73 74 6f 6d 20 70 72 6f 6d ction.that.accepts.a.custom.prom
10c20 70 74 20 61 6e 64 20 61 20 63 61 6c 6c 62 61 63 6b 20 74 6f 20 61 63 74 20 6f 6e 20 74 68 65 20 pt.and.a.callback.to.act.on.the.
10c40 72 65 73 70 6f 6e 73 65 2e 20 59 6f 75 20 63 61 6e 20 75 73 65 20 74 68 69 73 20 74 6f 20 62 75 response..You.can.use.this.to.bu
10c60 69 6c 64 20 63 75 73 74 6f 6d 20 77 6f 72 6b 66 6c 6f 77 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 ild.custom.workflows.not.support
10c80 65 64 20 62 79 20 3d 67 70 74 65 6c 2d 73 65 6e 64 3d 2e 20 20 53 65 65 20 74 68 65 20 64 6f 63 ed.by.=gptel-send=...See.the.doc
10ca0 75 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 3d 67 70 74 65 6c 2d 72 65 71 75 65 73 74 3d 2c 20 61 umentation.of.=gptel-request=,.a
10cc0 6e 64 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 6b 61 72 74 nd.the.[[https://github.com/kart
10ce0 68 69 6e 6b 2f 67 70 74 65 6c 2f 77 69 6b 69 2f 44 65 66 69 6e 69 6e 67 2d 63 75 73 74 6f 6d 2d hink/gptel/wiki/Defining-custom-
10d00 67 70 74 65 6c 2d 63 6f 6d 6d 61 6e 64 73 5d 5b 77 69 6b 69 5d 5d 20 66 6f 72 20 65 78 61 6d 70 gptel-commands][wiki]].for.examp
10d20 6c 65 73 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 les...#+html:.</details>.#+html:
10d40 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 28 43 68 61 74 47 50 .<details><summary>.****.(ChatGP
10d60 54 29 20 49 20 67 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 T).I.get.the.error."(HTTP/2.429)
10d80 20 59 6f 75 20 65 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 .You.exceeded.your.current.quota
10da0 22 0a 23 2b 68 74 6d 6c 3a 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a 23 2b 62 65 67 69 6e 5f 71 75 6f ".#+html:</summary>..#+begin_quo
10dc0 74 65 0a 28 48 54 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 te.(HTTP/2.429).You.exceeded.you
10de0 72 20 63 75 72 72 65 6e 74 20 71 75 6f 74 61 2c 20 70 6c 65 61 73 65 20 63 68 65 63 6b 20 79 6f r.current.quota,.please.check.yo
10e00 75 72 20 70 6c 61 6e 20 61 6e 64 20 62 69 6c 6c 69 6e 67 20 64 65 74 61 69 6c 73 2e 0a 23 2b 65 ur.plan.and.billing.details..#+e
10e20 6e 64 5f 71 75 6f 74 65 0a 0a 55 73 69 6e 67 20 74 68 65 20 43 68 61 74 47 50 54 20 28 6f 72 20 nd_quote..Using.the.ChatGPT.(or.
10e40 61 6e 79 20 4f 70 65 6e 41 49 29 20 41 50 49 20 72 65 71 75 69 72 65 73 20 5b 5b 68 74 74 70 73 any.OpenAI).API.requires.[[https
10e60 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 62 ://platform.openai.com/account/b
10e80 69 6c 6c 69 6e 67 2f 6f 76 65 72 76 69 65 77 5d 5b 61 64 64 69 6e 67 20 63 72 65 64 69 74 20 74 illing/overview][adding.credit.t
10ea0 6f 20 79 6f 75 72 20 61 63 63 6f 75 6e 74 5d 5d 2e 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 o.your.account]]...#+html:.</det
10ec0 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>
10ee0 0a 2a 2a 2a 2a 20 57 68 79 20 61 6e 6f 74 68 65 72 20 4c 4c 4d 20 63 6c 69 65 6e 74 3f 0a 23 2b .****.Why.another.LLM.client?.#+
10f00 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a 4f 74 68 65 72 20 45 6d 61 63 73 20 63 6c html:.</summary>..Other.Emacs.cl
10f20 69 65 6e 74 73 20 66 6f 72 20 4c 4c 4d 73 20 70 72 65 73 63 72 69 62 65 20 74 68 65 20 66 6f 72 ients.for.LLMs.prescribe.the.for
10f40 6d 61 74 20 6f 66 20 74 68 65 20 69 6e 74 65 72 61 63 74 69 6f 6e 20 28 61 20 63 6f 6d 69 6e 74 mat.of.the.interaction.(a.comint
10f60 20 73 68 65 6c 6c 2c 20 6f 72 67 2d 62 61 62 65 6c 20 62 6c 6f 63 6b 73 2c 20 65 74 63 29 2e 20 .shell,.org-babel.blocks,.etc)..
10f80 20 49 20 77 61 6e 74 65 64 3a 0a 0a 31 2e 20 53 6f 6d 65 74 68 69 6e 67 20 74 68 61 74 20 69 73 .I.wanted:..1..Something.that.is
10fa0 20 61 73 20 66 72 65 65 2d 66 6f 72 6d 20 61 73 20 70 6f 73 73 69 62 6c 65 3a 20 71 75 65 72 79 .as.free-form.as.possible:.query
10fc0 20 74 68 65 20 6d 6f 64 65 6c 20 75 73 69 6e 67 20 61 6e 79 20 74 65 78 74 20 69 6e 20 61 6e 79 .the.model.using.any.text.in.any
10fe0 20 62 75 66 66 65 72 2c 20 61 6e 64 20 72 65 64 69 72 65 63 74 20 74 68 65 20 72 65 73 70 6f 6e .buffer,.and.redirect.the.respon
11000 73 65 20 61 73 20 72 65 71 75 69 72 65 64 2e 20 20 55 73 69 6e 67 20 61 20 64 65 64 69 63 61 74 se.as.required...Using.a.dedicat
11020 65 64 20 3d 67 70 74 65 6c 3d 20 62 75 66 66 65 72 20 6a 75 73 74 20 61 64 64 73 20 73 6f 6d 65 ed.=gptel=.buffer.just.adds.some
11040 20 76 69 73 75 61 6c 20 66 6c 61 69 72 20 74 6f 20 74 68 65 20 69 6e 74 65 72 61 63 74 69 6f 6e .visual.flair.to.the.interaction
11060 2e 0a 32 2e 20 49 6e 74 65 67 72 61 74 69 6f 6e 20 77 69 74 68 20 6f 72 67 2d 6d 6f 64 65 2c 20 ..2..Integration.with.org-mode,.
11080 6e 6f 74 20 75 73 69 6e 67 20 61 20 77 61 6c 6c 65 64 2d 6f 66 66 20 6f 72 67 2d 62 61 62 65 6c not.using.a.walled-off.org-babel
110a0 20 62 6c 6f 63 6b 2c 20 62 75 74 20 61 73 20 72 65 67 75 6c 61 72 20 74 65 78 74 2e 20 20 54 68 .block,.but.as.regular.text...Th
110c0 69 73 20 77 61 79 20 74 68 65 20 6d 6f 64 65 6c 20 63 61 6e 20 67 65 6e 65 72 61 74 65 20 63 6f is.way.the.model.can.generate.co
110e0 64 65 20 62 6c 6f 63 6b 73 20 74 68 61 74 20 49 20 63 61 6e 20 72 75 6e 2e 0a 0a 23 2b 68 74 6d de.blocks.that.I.can.run...#+htm
11100 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 0a 2a 2a 20 41 64 64 69 74 69 6f 6e 61 6c 20 43 6f 6e l:.</details>..**.Additional.Con
11120 66 69 67 75 72 61 74 69 6f 6e 0a 3a 50 52 4f 50 45 52 54 49 45 53 3a 0a 3a 49 44 3a 20 20 20 20 figuration.:PROPERTIES:.:ID:....
11140 20 20 20 66 38 38 35 61 64 61 63 2d 35 38 61 33 2d 34 65 62 61 2d 61 36 62 37 2d 39 31 65 39 65 ...f885adac-58a3-4eba-a6b7-91e9e
11160 37 61 31 37 38 32 39 0a 3a 45 4e 44 3a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 7a17829.:END:.#+html:.</summary>
11180 0a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 20 3a 65 78 70 6f 72 74 ..#+begin_src.emacs-lisp.:export
111a0 73 20 6e 6f 6e 65 20 3a 72 65 73 75 6c 74 73 20 6c 69 73 74 0a 28 6c 65 74 20 28 28 61 6c 6c 29 s.none.:results.list.(let.((all)
111c0 29 0a 20 20 28 6d 61 70 61 74 6f 6d 73 20 28 6c 61 6d 62 64 61 20 28 73 79 6d 29 0a 20 20 20 20 )...(mapatoms.(lambda.(sym).....
111e0 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 61 6e 64 20 28 73 74 72 69 6e 67 2d 6d 61 74 ..........(when.(and.(string-mat
11200 63 68 2d 70 20 22 5e 67 70 74 65 6c 2d 5b 5e 2d 5d 22 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 ch-p."^gptel-[^-]".(symbol-name.
11220 73 79 6d 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 sym))..........................(
11240 67 65 74 20 73 79 6d 20 27 76 61 72 69 61 62 6c 65 2d 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 29 get.sym.'variable-documentation)
11260 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 73 79 6d 20 61 6c 6c 29 ).................(push.sym.all)
11280 29 29 29 0a 20 20 61 6c 6c 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 7c 2d 2d 2d 2d 2d 2d 2d 2d 2d )))...all).#+end_src..|---------
112a0 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 2d -------------+------------------
112c0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
112e0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 7c 0a 7c 20 2a 43 6f 6e 6e 65 63 74 69 6f ------------------|.|.*Connectio
11300 6e 20 6f 70 74 69 6f 6e 73 2a 20 7c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 n.options*.|....................
11320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
11340 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 2d 2d 2d 2d 2d 2d ................|.|-------------
11360 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 ---------+----------------------
11380 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
113a0 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 75 73 65 2d 63 75 72 --------------|.|.=gptel-use-cur
113c0 6c 3d 20 20 20 20 20 7c 20 55 73 65 20 43 75 72 6c 20 28 64 65 66 61 75 6c 74 29 2c 20 66 61 6c l=.....|.Use.Curl.(default),.fal
113e0 6c 62 61 63 6b 20 74 6f 20 45 6d 61 63 73 27 20 62 75 69 6c 74 2d 69 6e 20 3d 75 72 6c 3d 2e 20 lback.to.Emacs'.built-in.=url=..
11400 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 78 79 3d 20 20 20 ............|.|.=gptel-proxy=...
11420 20 20 20 20 20 7c 20 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 .....|.Proxy.server.for.requests
11440 2c 20 70 61 73 73 65 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 ,.passed.to.curl.via.=--proxy=..
11460 20 20 20 20 20 20 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 ..........|.|.=gptel-api-key=...
11480 20 20 20 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 ...|.Variable/function.that.retu
114a0 72 6e 73 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 rns.the.API.key.for.the.active.b
114c0 61 63 6b 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 ackend..|.|---------------------
114e0 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 -+------------------------------
11500 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
11520 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 ------|..|----------------------
11540 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 -+------------------------------
11560 2d 2d 2d 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 ---------------------------|.|.*
11580 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
115a0 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
115c0 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)/...........|.|--------------
115e0 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 ---------+----------------------
11600 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
11620 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
11640 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..............
11660 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
11680 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
116a0 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.
116c0 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=...
116e0 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
11700 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..|
11720 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
11740 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
11760 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
11780 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
117a0 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)........
117c0 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=..
117e0 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,.
11800 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.....................|.|.=
11820 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
11840 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
11860 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
11880 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
118a0 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............
118c0 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
118e0 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-
11900 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
11920 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
11940 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.......
11960 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 ...........|.|------------------
11980 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 -----+--------------------------
119a0 2d 2d 2d 2d 2d 2d 2d 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 -------------------------------|
119c0 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 ..|-----------------------------
119e0 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 --+-----------------------------
11a00 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
11a20 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*........
11a40 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 .....|..........................
11a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
11a80 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 ......|.|-----------------------
11aa0 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 --------+-----------------------
11ac0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
11ae0 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
11b00 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
11b20 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..............
11b40 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
11b60 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
11b80 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....................
11ba0 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
11bc0 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
11be0 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...............
11c00 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
11c20 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
11c40 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.
11c60 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-
11c80 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
11ca0 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
11cc0 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
11ce0 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
11d00 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?.............
11d20 20 20 20 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 ...........................|.|.=
11d40 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
11d60 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
11d80 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?......................|.
11da0 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=.......
11dc0 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
11de0 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
11e00 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
11e20 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
11e40 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.........................
11e60 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 ....|.|-------------------------
11e80 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 ------+-------------------------
11ea0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
11ec0 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 -------|..|---------------------
11ee0 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 ----------+---------------------
11f00 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
11f20 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*.....
11f40 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 ....|...........................
11f60 20 20 20 20 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 ............................|.|-
11f80 2d 2d 2d 2d 2d 2d 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 ------------------------------+-
11fa0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
11fc0 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
11fe0 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
12000 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
12020 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
12040 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
12060 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
12080 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.......|.|-------------------
120a0 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 ------------+-------------------
120c0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
120e0 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 ----|..|------------------------
12100 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 ------------+-------------------
12120 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
12140 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
12160 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*..........|..............
12180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
121a0 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 ...............|.|--------------
121c0 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 ----------------------+---------
121e0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
12200 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
12220 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
12240 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
12260 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
12280 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=.
122a0 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
122c0 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......|.
122e0 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=.....
12300 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
12320 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=.....
12340 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=
12360 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
12380 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
123a0 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
123c0 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
123e0 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
12400 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
12420 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
12440 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.......
12460 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
12480 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
124a0 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
124c0 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
124e0 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=.....|.
12500 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
12520 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.|.|.
12540 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=..
12560 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
12580 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..............
125a0 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 .|.|----------------------------
125c0 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 --------+-----------------------
125e0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
12600 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>..***
12620 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
12640 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
12660 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
12680 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
126a0 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=
126c0 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
126e0 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
12700 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
12720 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
12740 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
12760 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
12780 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
127a0 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:.
127c0 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
127e0 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
12800 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
12820 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
12840 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
12860 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
12880 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.
128a0 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
128c0 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
128e0 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.
12900 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
12920 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-
12940 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
12960 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
12980 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."
129a0 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
129c0 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
129e0 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-
12a00 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.........
12a20 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
12a40 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
12a60 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
12a80 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
12aa0 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
12ac0 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
12ae0 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
12b00 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.
12b20 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
12b40 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,.
12b60 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."
12b80 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
12ba0 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
12bc0 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
12be0 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
12c00 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.
12c20 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
12c40 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
12c60 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.=
12c80 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
12ca0 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
12cc0 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
12ce0 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
12d00 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
12d20 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_
12d40 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
12d60 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
12d80 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"...
12da0 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
12dc0 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
12de0 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"
12e00 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............
12e20 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
12e40 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).......
12e60 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
12e80 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
12ea0 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
12ec0 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
12ee0 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
12f00 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
12f20 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
12f40 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
12f60 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
12f80 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
12fa0 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.
12fc0 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
12fe0 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.
13000 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
13020 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
13040 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
13060 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
13080 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
130a0 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
130c0 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.
130e0 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
13100 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
13120 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
13140 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
13160 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
13180 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...
131a0 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
131c0 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.
131e0 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"
13200 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.
13220 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
13240 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_
13260 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
13280 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?
132a0 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,
132c0 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
132e0 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
13300 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
13320 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
13340 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
13360 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
13380 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
133a0 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
133c0 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...
133e0 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
13400 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
13420 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
13440 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
13460 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.
13480 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
134a0 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,
134c0 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
134e0 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.
13500 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
13520 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
13540 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
13560 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..-
13580 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
135a0 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.
135c0 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
135e0 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.
13600 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
13620 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..
13640 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,
13660 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
13680 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
136a0 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
136c0 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
136e0 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
13700 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
13720 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)
13740 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.
13760 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
13780 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
137a0 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
137c0 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
137e0 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
13800 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
13820 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
13840 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
13860 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
13880 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
138a0 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..-
138c0 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
138e0 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
13900 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
13920 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
13940 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
13960 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,.
13980 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
139a0 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
139c0 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.
139e0 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
13a00 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
13a20 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
13a40 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
13a60 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
13a80 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
13aa0 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]],
13ac0 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
13ae0 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
13b00 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
13b20 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..
13b40 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
13b60 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
13b80 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.
13ba0 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.
13bc0 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 2d or.specialized.functionality:..-
13be0 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 2f 67 .[[https://github.com/karthink/g
13c00 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 63 6b ptel-quick][gptel-quick]]:.Quick
13c20 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 61 74 ly.look.up.the.region.or.text.at
13c40 20 70 6f 69 6e 74 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 .point..-.[[https://github.com/d
13c60 61 65 64 73 69 64 6f 67 2f 65 76 65 64 65 6c 5d 5b 45 76 65 64 65 6c 5d 5d 3a 20 49 6e 73 74 72 aedsidog/evedel][Evedel]]:.Instr
13c80 75 63 74 65 64 20 4c 4c 4d 20 50 72 6f 67 72 61 6d 6d 65 72 2f 41 73 73 69 73 74 61 6e 74 2e 0a ucted.LLM.Programmer/Assistant..
13ca0 2d 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6c 61 6e 63 65 62 65 72 67 -.[[https://github.com/lanceberg
13cc0 65 2f 65 6c 79 73 69 75 6d 5d 5b 45 6c 79 73 69 75 6d 5d 5d 3a 20 41 75 74 6f 6d 61 74 69 63 61 e/elysium][Elysium]]:.Automatica
13ce0 6c 6c 79 20 61 70 70 6c 79 20 41 49 2d 67 65 6e 65 72 61 74 65 64 20 63 68 61 6e 67 65 73 20 61 lly.apply.AI-generated.changes.a
13d00 73 20 79 6f 75 20 63 6f 64 65 2e 0a 2d 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 s.you.code..-.[[https://github.c
13d20 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 2d 62 om/kamushadenes/ai-blog.el][ai-b
13d40 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 6e 20 log.el]]:.Streamline.generation.
13d60 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 70 73 of.blog.posts.in.Hugo..-.[[https
13d80 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 63 6f 6d 6d ://github.com/douo/magit-gptcomm
13da0 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 61 74 65 20 it][magit-gptcommit]]:.Generate.
13dc0 43 6f 6d 6d 69 74 20 4d 65 73 73 61 67 65 73 20 77 69 74 68 69 6e 20 6d 61 67 69 74 2d 73 74 61 Commit.Messages.within.magit-sta
13de0 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 68 74 74 70 tus.Buffer.using.gptel..-.[[http
13e00 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 61 72 6d 69 6e 64 61 72 76 69 73 68 2f 63 6f 6e 73 s://github.com/armindarvish/cons
13e20 75 6c 74 2d 6f 6d 6e 69 5d 5b 63 6f 6e 73 75 6c 74 2d 6f 6d 6e 69 5d 5d 3a 20 56 65 72 73 61 74 ult-omni][consult-omni]]:.Versat
13e40 69 6c 65 20 6d 75 6c 74 69 2d 73 6f 75 72 63 65 20 73 65 61 72 63 68 20 70 61 63 6b 61 67 65 2e ile.multi-source.search.package.
13e60 20 20 49 74 20 69 6e 63 6c 75 64 65 73 20 67 70 74 65 6c 20 61 73 20 6f 6e 65 20 6f 66 20 69 74 ..It.includes.gptel.as.one.of.it
13e80 73 20 6d 61 6e 79 20 73 6f 75 72 63 65 73 2e 0a 2d 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 s.many.sources..-.[[https://gith
13ea0 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 5d ub.com/ultronozm/ai-org-chat.el]
13ec0 5b 61 69 2d 6f 72 67 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 [ai-org-chat]]:.Provides.branchi
13ee0 6e 67 20 63 6f 6e 76 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 ng.conversations.in.Org.buffers.
13f00 75 73 69 6e 67 20 67 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 using.gptel...(Note.that.gptel.i
13f20 6e 63 6c 75 64 65 73 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 ncludes.this.feature.as.well.(se
13f40 65 20 3d 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 3d 29 e.=gptel-org-branching-context=)
13f60 2c 20 62 75 74 20 72 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 ,.but.requires.a.recent.version.
13f80 6f 66 20 4f 72 67 20 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 of.Org.mode.9.7.or.later.to.be.i
13fa0 6e 73 74 61 6c 6c 65 64 2e 29 0a 2d 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f nstalled.).-.[[https://github.co
13fc0 6d 2f 72 6f 62 31 33 37 2f 43 6f 72 73 61 69 72 5d 5b 43 6f 72 73 61 69 72 5d 5d 3a 20 48 65 6c m/rob137/Corsair][Corsair]]:.Hel
13fe0 70 73 20 67 61 74 68 65 72 20 74 65 78 74 20 74 6f 20 70 6f 70 75 6c 61 74 65 20 4c 4c 4d 20 70 ps.gather.text.to.populate.LLM.p
14000 72 6f 6d 70 74 73 20 66 6f 72 20 67 70 74 65 6c 2e 0a 0a 2a 2a 20 43 4f 4d 4d 45 4e 54 20 4f 6c rompts.for.gptel...**.COMMENT.Ol
14020 64 65 72 20 42 72 65 61 6b 69 6e 67 20 43 68 61 6e 67 65 73 0a 0a 2d 20 3d 67 70 74 65 6c 2d 70 der.Breaking.Changes..-.=gptel-p
14040 6f 73 74 2d 72 65 73 70 6f 6e 73 65 2d 68 6f 6f 6b 3d 20 68 61 73 20 62 65 65 6e 20 72 65 6e 61 ost-response-hook=.has.been.rena
14060 6d 65 64 20 74 6f 20 3d 67 70 74 65 6c 2d 70 6f 73 74 2d 72 65 73 70 6f 6e 73 65 2d 66 75 6e 63 med.to.=gptel-post-response-func
14080 74 69 6f 6e 73 3d 2c 20 61 6e 64 20 66 75 6e 63 74 69 6f 6e 73 20 69 6e 20 74 68 69 73 20 68 6f tions=,.and.functions.in.this.ho
140a0 6f 6b 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 67 75 6d ok.are.now.called.with.two.argum
140c0 65 6e 74 73 3a 20 74 68 65 20 73 74 61 72 74 20 61 6e 64 20 65 6e 64 20 62 75 66 66 65 72 20 70 ents:.the.start.and.end.buffer.p
140e0 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 20 20 54 68 69 73 20 ositions.of.the.response...This.
14100 73 68 6f 75 6c 64 20 6d 61 6b 65 20 69 74 20 65 61 73 79 20 74 6f 20 61 63 74 20 6f 6e 20 74 68 should.make.it.easy.to.act.on.th
14120 65 20 72 65 73 70 6f 6e 73 65 20 74 65 78 74 20 77 69 74 68 6f 75 74 20 68 61 76 69 6e 67 20 74 e.response.text.without.having.t
14140 6f 20 6c 6f 63 61 74 65 20 69 74 20 66 69 72 73 74 2e 0a 0a 2d 20 50 6f 73 73 69 62 6c 65 20 62 o.locate.it.first...-.Possible.b
14160 72 65 61 6b 61 67 65 2c 20 73 65 65 20 23 31 32 30 3a 20 49 66 20 73 74 72 65 61 6d 69 6e 67 20 reakage,.see.#120:.If.streaming.
14180 72 65 73 70 6f 6e 73 65 73 20 73 74 6f 70 20 77 6f 72 6b 69 6e 67 20 66 6f 72 20 79 6f 75 20 61 responses.stop.working.for.you.a
141a0 66 74 65 72 20 75 70 67 72 61 64 69 6e 67 20 74 6f 20 76 30 2e 35 2c 20 74 72 79 20 72 65 69 6e fter.upgrading.to.v0.5,.try.rein
141c0 73 74 61 6c 6c 69 6e 67 20 67 70 74 65 6c 20 61 6e 64 20 64 65 6c 65 74 69 6e 67 20 69 74 73 20 stalling.gptel.and.deleting.its.
141e0 6e 61 74 69 76 65 20 63 6f 6d 70 20 65 6c 6e 20 63 61 63 68 65 20 69 6e 20 3d 6e 61 74 69 76 65 native.comp.eln.cache.in.=native
14200 2d 63 6f 6d 70 2d 65 6c 6e 2d 6c 6f 61 64 2d 70 61 74 68 3d 2e 0a 0a 2d 20 54 68 65 20 75 73 65 -comp-eln-load-path=...-.The.use
14220 72 20 6f 70 74 69 6f 6e 20 3d 67 70 74 65 6c 2d 68 6f 73 74 3d 20 69 73 20 64 65 70 72 65 63 61 r.option.=gptel-host=.is.depreca
14240 74 65 64 2e 20 20 49 66 20 74 68 65 20 64 65 66 61 75 6c 74 73 20 64 6f 6e 27 74 20 77 6f 72 6b ted...If.the.defaults.don't.work
14260 20 66 6f 72 20 79 6f 75 2c 20 75 73 65 20 3d 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 .for.you,.use.=gptel-make-openai
14280 3d 20 28 77 68 69 63 68 20 73 65 65 29 20 74 6f 20 63 75 73 74 6f 6d 69 7a 65 20 73 65 72 76 65 =.(which.see).to.customize.serve
142a0 72 20 73 65 74 74 69 6e 67 73 2e 0a 0a 2d 20 3d 67 70 74 65 6c 2d 61 70 69 2d 6b 65 79 2d 66 72 r.settings...-.=gptel-api-key-fr
142c0 6f 6d 2d 61 75 74 68 2d 73 6f 75 72 63 65 3d 20 6e 6f 77 20 73 65 61 72 63 68 65 73 20 66 6f 72 om-auth-source=.now.searches.for
142e0 20 74 68 65 20 41 50 49 20 6b 65 79 20 75 73 69 6e 67 20 74 68 65 20 68 6f 73 74 20 61 64 64 72 .the.API.key.using.the.host.addr
14300 65 73 73 20 66 6f 72 20 74 68 65 20 61 63 74 69 76 65 20 4c 4c 4d 20 62 61 63 6b 65 6e 64 2c 20 ess.for.the.active.LLM.backend,.
14320 2f 69 2e 65 2e 2f 20 22 61 70 69 2e 6f 70 65 6e 61 69 2e 63 6f 6d 22 20 77 68 65 6e 20 75 73 69 /i.e./."api.openai.com".when.usi
14340 6e 67 20 43 68 61 74 47 50 54 2e 20 20 59 6f 75 20 6d 61 79 20 6e 65 65 64 20 74 6f 20 75 70 64 ng.ChatGPT...You.may.need.to.upd
14360 61 74 65 20 79 6f 75 72 20 3d 7e 2f 2e 61 75 74 68 69 6e 66 6f 3d 2e 0a 0a 2a 2a 20 41 63 6b 6e ate.your.=~/.authinfo=...**.Ackn
14380 6f 77 6c 65 64 67 6d 65 6e 74 73 0a 0a 2d 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e owledgments..-.[[https://github.
143a0 63 6f 6d 2f 66 65 6c 69 70 65 6f 63 68 6f 61 5d 5b 46 65 6c 69 70 65 20 4f 63 68 6f 61 5d 5d 20 com/felipeochoa][Felipe.Ochoa]].
143c0 61 6e 64 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 61 6b 73 73 72 69 5d and.[[https://github.com/akssri]
143e0 5b 61 6b 73 73 72 69 5d 5d 20 66 6f 72 20 61 64 64 69 6e 67 20 41 57 53 20 42 65 64 72 6f 63 6b [akssri]].for.adding.AWS.Bedrock
14400 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 2f 2f 67 .support.to.gptel..-.[[https://g
14420 69 74 68 75 62 2e 63 6f 6d 2f 6a 77 69 65 67 6c 65 79 5d 5b 4a 6f 68 6e 20 57 69 65 67 6c 65 79 ithub.com/jwiegley][John.Wiegley
14440 5d 5d 20 66 6f 72 20 74 68 65 20 64 65 73 69 67 6e 20 6f 66 20 67 70 74 65 6c 27 73 20 70 72 65 ]].for.the.design.of.gptel's.pre
14460 73 65 74 73 20 61 6e 64 20 67 70 74 65 6c 2d 72 65 71 75 65 73 74 27 73 20 61 73 79 6e 63 20 70 sets.and.gptel-request's.async.p
14480 69 70 65 6c 69 6e 65 2c 20 62 75 74 20 61 6c 73 6f 20 66 6f 72 20 6c 6f 61 64 73 20 6f 66 20 67 ipeline,.but.also.for.loads.of.g
144a0 65 6e 65 72 61 6c 20 66 65 65 64 62 61 63 6b 20 61 6e 64 20 61 64 76 69 63 65 2e 0a 2d 20 5b 5b eneral.feedback.and.advice..-.[[
144c0 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 70 61 62 6c 30 5d 5b 48 65 6e 72 69 6b https://github.com/pabl0][Henrik
144e0 20 41 68 6c 67 72 65 6e 5d 5d 20 66 6f 72 20 61 20 6b 65 65 6e 20 65 79 65 20 74 6f 20 64 65 74 .Ahlgren]].for.a.keen.eye.to.det
14500 61 69 6c 20 61 6e 64 20 70 6f 6c 69 73 68 20 61 70 70 6c 69 65 64 20 74 6f 20 67 70 74 65 6c 27 ail.and.polish.applied.to.gptel'
14520 73 20 55 49 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 70 73 69 s.UI..-.[[https://github.com/psi
14540 6f 6e 69 63 2d 6b 5d 5b 70 73 69 6f 6e 69 63 2d 6b 5d 5d 20 66 6f 72 20 65 78 74 65 6e 73 69 76 onic-k][psionic-k]].for.extensiv
14560 65 20 74 65 73 74 69 6e 67 20 6f 66 20 74 68 65 20 74 6f 6f 6c 20 75 73 65 20 66 65 61 74 75 72 e.testing.of.the.tool.use.featur
14580 65 20 61 6e 64 20 74 68 65 20 64 65 73 69 67 6e 20 6f 66 20 67 70 74 65 6c 27 73 20 69 6e 2d 62 e.and.the.design.of.gptel's.in-b
145a0 75 66 66 65 72 20 74 6f 6f 6c 20 75 73 65 20 72 65 63 6f 72 64 73 2e 0a 2d 20 5b 5b 68 74 74 70 uffer.tool.use.records..-.[[http
145c0 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6a 64 74 73 6d 69 74 68 5d 5b 4a 44 20 53 6d 69 74 s://github.com/jdtsmith][JD.Smit
145e0 68 5d 5d 20 66 6f 72 20 66 65 65 64 62 61 63 6b 20 61 6e 64 20 63 6f 64 65 20 61 73 73 69 73 74 h]].for.feedback.and.code.assist
14600 61 6e 63 65 20 77 69 74 68 20 67 70 74 65 6c 2d 6d 65 6e 75 27 73 20 72 65 64 65 73 69 67 6e 0a ance.with.gptel-menu's.redesign.
14620 2d 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6d 65 61 69 6e 5d 5b 41 62 -.[[https://github.com/meain][Ab
14640 69 6e 20 53 69 6d 6f 6e 5d 5d 20 66 6f 72 20 65 78 74 65 6e 73 69 76 65 20 66 65 65 64 62 61 63 in.Simon]].for.extensive.feedbac
14660 6b 20 6f 6e 20 69 6d 70 72 6f 76 69 6e 67 20 67 70 74 65 6c 27 73 20 64 69 72 65 63 74 69 76 65 k.on.improving.gptel's.directive
14680 73 20 61 6e 64 20 55 49 2e 0a 2d 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d s.and.UI..-.[[https://github.com
146a0 2f 61 6c 67 61 6c 5d 5b 41 6c 65 78 69 73 20 47 61 6c 6c 61 67 68 65 72 5d 5d 20 61 6e 64 20 5b /algal][Alexis.Gallagher]].and.[
146c0 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 64 31 65 67 6f 61 7a 5d 5b 44 69 65 [https://github.com/d1egoaz][Die
146e0 67 6f 20 41 6c 76 61 72 65 7a 5d 5d 20 66 6f 72 20 66 69 78 69 6e 67 20 61 20 6e 61 73 74 79 20 go.Alvarez]].for.fixing.a.nasty.
14700 6d 75 6c 74 69 2d 62 79 74 65 20 62 75 67 20 77 69 74 68 20 3d 75 72 6c 2d 72 65 74 72 69 65 76 multi-byte.bug.with.=url-retriev
14720 65 3d 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 74 61 72 73 69 e=..-.[[https://github.com/tarsi
14740 75 73 5d 5b 4a 6f 6e 61 73 20 42 65 72 6e 6f 75 6c 6c 69 5d 5d 20 66 6f 72 20 74 68 65 20 54 72 us][Jonas.Bernoulli]].for.the.Tr
14760 61 6e 73 69 65 6e 74 20 6c 69 62 72 61 72 79 2e 0a 2d 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 ansient.library..-.[[https://git
14780 68 75 62 2e 63 6f 6d 2f 64 61 65 64 73 69 64 6f 67 5d 5b 64 61 65 64 73 69 64 6f 67 5d 5d 20 66 hub.com/daedsidog][daedsidog]].f
147a0 6f 72 20 61 64 64 69 6e 67 20 63 6f 6e 74 65 78 74 20 73 75 70 70 6f 72 74 20 74 6f 20 67 70 74 or.adding.context.support.to.gpt
147c0 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 41 71 75 61 6e el..-.[[https://github.com/Aquan
147e0 31 34 31 32 5d 5b 41 71 75 61 6e 31 34 31 32 5d 5d 20 66 6f 72 20 61 64 64 69 6e 67 20 50 72 69 1412][Aquan1412]].for.adding.Pri
14800 76 61 74 65 47 50 54 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 vateGPT.support.to.gptel..-.[[ht
14820 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 72 30 6d 61 6e 5d 5b 72 30 6d 61 6e 5d 5d 20 tps://github.com/r0man][r0man]].
14840 66 6f 72 20 69 6d 70 72 6f 76 69 6e 67 20 67 70 74 65 6c 27 73 20 43 75 72 6c 20 69 6e 74 65 67 for.improving.gptel's.Curl.integ
14860 72 61 74 69 6f 6e 2e 0a 0a 23 20 4c 6f 63 61 6c 20 56 61 72 69 61 62 6c 65 73 3a 0a 23 20 74 6f ration...#.Local.Variables:.#.to
14880 63 2d 6f 72 67 2d 6d 61 78 2d 64 65 70 74 68 3a 20 34 0a 23 20 65 76 61 6c 3a 20 28 61 6e 64 20 c-org-max-depth:.4.#.eval:.(and.
148a0 28 66 62 6f 75 6e 64 70 20 27 74 6f 63 2d 6f 72 67 2d 6d 6f 64 65 29 20 28 74 6f 63 2d 6f 72 67 (fboundp.'toc-org-mode).(toc-org
148c0 2d 6d 6f 64 65 20 31 29 29 0a 23 20 45 6e 64 3a 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -mode.1)).#.End:................
148e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
149a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
149c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
149e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14a00 67 70 74 65 6c 2d 30 2e 39 2e 38 2e 35 2f 67 70 74 65 6c 2d 6b 61 67 69 2e 65 6c 00 00 00 00 00 gptel-0.9.8.5/gptel-kagi.el.....
14a20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14a60 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
14a80 30 30 31 37 33 30 30 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 34 30 31 34 00 20 30 00 00 00 0017300.00000000000.014014..0...
14aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14b00 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...................
14b20 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...................
14b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14c00 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
14c20 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
14c40 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
14c60 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..;
14c80 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
14ca0 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>.;;.
14cc0 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
14ce0 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.
14d00 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.;;
14d20 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
14d40 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
14d60 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
14d80 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
14da0 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
14dc0 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
14de0 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
14e00 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
14e20 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.
14e40 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
14e60 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
14e80 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.
14ea0 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.
14ec0 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
14ee0 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.
14f00 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
14f20 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:/
14f40 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
14f60 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
14f80 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
14fa0 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.'
14fc0 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
14fe0 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
15000 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
15020 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")..;;
15040 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
15060 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)
15080 0a 20 20 20 20 20 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
150a0 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)......................
150c0 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))
150e0 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
15100 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
15120 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
15140 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)).........
15160 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
15180 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
151a0 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.(
151c0 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
151e0 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.:
15200 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
15220 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
15240 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
15260 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
15280 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
152a0 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.............................
152c0 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
152e0 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))...................
15300 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.................
15320 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)......
15340 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."[[
15360 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)))...........
15380 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....
153a0 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
153c0 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).........................
153e0 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)))
15400 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
15420 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)...................
15440 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............
15460 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.(
15480 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))........
154a0 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))))...
154c0 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
154e0 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....................
15500 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
15520 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
15540 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)
15560 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.=.
15580 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)............
155a0 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........
155c0 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...........
155e0 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]
15600 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)...........................
15620 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).":
15640 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 ."..............................
15660 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.......
15680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 3c 2f 3f 62 3e 22 20 ........................"</?b>".
156a0 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))...................
156c0 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.............
156e0 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.........
15700 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
15720 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."\
15740 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
15760 65 6e 63 65 73 29 29 29 0a 0a 3b 3b 20 54 4f 44 4f 3a 20 41 64 64 20 6d 6f 64 65 6c 20 61 6e 64 ences)))..;;.TODO:.Add.model.and
15780 20 62 61 63 6b 65 6e 64 2d 73 70 65 63 69 66 69 63 20 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 .backend-specific.request-params
157a0 20 73 75 70 70 6f 72 74 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 2d 72 65 .support.(cl-defmethod.gptel--re
157c0 71 75 65 73 74 2d 64 61 74 61 20 28 28 5f 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 6b 61 67 69 quest-data.((_backend.gptel-kagi
157e0 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 50 54 ).prompts)..."JSON.encode.PROMPT
15800 53 20 66 6f 72 20 4b 61 67 69 2e 22 0a 20 20 28 70 63 61 73 65 2d 65 78 68 61 75 73 74 69 76 65 S.for.Kagi."...(pcase-exhaustive
15820 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 6c 29 .(gptel--model-name.gptel-model)
15840 0a 20 20 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 .....("fastgpt"......`(,@prompts
15860 20 3a 77 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 .:web_search.t.:cache.t)).....((
15880 61 6e 64 20 6d 6f 64 65 6c 20 28 67 75 61 72 64 20 28 73 74 72 69 6e 67 2d 70 72 65 66 69 78 2d and.model.(guard.(string-prefix-
158a0 70 20 22 73 75 6d 6d 61 72 69 7a 65 22 20 6d 6f 64 65 6c 29 29 29 0a 20 20 20 20 20 60 28 2c 40 p."summarize".model)))......`(,@
158c0 70 72 6f 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 prompts.:engine.,(substring.mode
158e0 6c 20 31 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 l.10)))))..(cl-defmethod.gptel--
15900 70 61 72 73 65 2d 62 75 66 66 65 72 20 28 28 5f 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 6b 61 parse-buffer.((_backend.gptel-ka
15920 67 69 29 20 26 6f 70 74 69 6f 6e 61 6c 20 5f 6d 61 78 2d 65 6e 74 72 69 65 73 29 0a 20 20 28 6c gi).&optional._max-entries)...(l
15940 65 74 20 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 et.((url.(or.(thing-at-point.'ur
15960 6c 29 0a 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 l)..................(get-text-pr
15980 6f 70 65 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 operty.(point).'shr-url)........
159a0 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 72 74 79 20 28 70 6f ..........(get-text-property.(po
159c0 69 6e 74 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 int).'image-url))).........;;.(f
159e0 69 6c 65 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 ilename.(thing-at-point.'existin
15a00 67 2d 66 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 g-filename)).;no.file.upload.sup
15a20 70 6f 72 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 port.yet.........(prop.(text-pro
15a40 70 65 72 74 79 2d 73 65 61 72 63 68 2d 62 61 63 6b 77 61 72 64 0a 20 20 20 20 20 20 20 20 20 20 perty-search-backward...........
15a60 20 20 20 20 20 27 67 70 74 65 6c 20 27 72 65 73 70 6f 6e 73 65 0a 20 20 20 20 20 20 20 20 20 20 .....'gptel.'response...........
15a80 20 20 20 20 20 28 77 68 65 6e 20 28 67 65 74 2d 63 68 61 72 2d 70 72 6f 70 65 72 74 79 20 28 6d .....(when.(get-char-property.(m
15aa0 61 78 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28 31 2d 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 ax.(point-min).(1-.(point)))....
15ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
15ae0 20 20 20 20 20 27 67 70 74 65 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 29 .....'gptel)..................t)
15b00 29 29 29 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 ))).....(if.(and.url.(string-pre
15b20 66 69 78 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 fix-p."summarize".(gptel--model-
15b40 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 28 6c 69 73 name.gptel-model))).........(lis
15b60 74 20 3a 75 72 6c 20 75 72 6c 29 0a 20 20 20 20 20 20 28 69 66 20 28 61 6e 64 20 28 6f 72 20 67 t.:url.url).......(if.(and.(or.g
15b80 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 0a ptel-mode.gptel-track-response).
15ba0 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 70 20 70 72 6f ...............(prop-match-p.pro
15bc0 70 29 0a 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 p)................(prop-match-va
15be0 6c 75 65 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 lue.prop))...........(user-error
15c00 20 22 4e 6f 20 75 73 65 72 20 70 72 6f 6d 70 74 20 66 6f 75 6e 64 21 22 29 0a 20 20 20 20 20 20 ."No.user.prompt.found!").......
15c20 20 20 28 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 ..(let.((prompts................
15c40 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
15c60 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 28 6f 72 20 esponse)....................(or.
15c80 28 67 70 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 (gptel--trim-prefixes...........
15ca0 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 2d ..............(buffer-substring-
15cc0 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 20 28 70 72 6f 70 2d 6d 61 74 63 68 2d 62 65 67 69 6e 6e no-properties.(prop-match-beginn
15ce0 69 6e 67 20 70 72 6f 70 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ing.prop).......................
15d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
15d20 20 20 28 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 ..(prop-match-end.prop))).......
15d40 20 20 20 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 ................."")............
15d60 20 20 20 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 ......(string-trim.(buffer-subst
15d80 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 2d 6d 69 6e 29 20 28 ring-no-properties.(point-min).(
15da0 70 6f 69 6e 74 2d 6d 61 78 29 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 63 61 73 65 point-max))))))...........(pcase
15dc0 2d 65 78 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 -exhaustive.(gptel--model-name.g
15de0 70 74 65 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 ptel-model).............("fastgp
15e00 74 22 20 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 t".(setq.prompts.(list.:query.(i
15e20 66 20 28 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 f.(prop-match-p.prop).prompts.""
15e40 29 29 29 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 )))).............((and.model.(gu
15e60 61 72 64 20 28 73 74 72 69 6e 67 2d 70 72 65 66 69 78 2d 70 20 22 73 75 6d 6d 61 72 69 7a 65 22 ard.(string-prefix-p."summarize"
15e80 20 6d 6f 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 .model)))..............;;.If.the
15ea0 20 65 6e 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 .entire.contents.of.the.prompt.l
15ec0 6f 6f 6b 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 ooks.like.a.url,.send.the.url...
15ee0 20 20 20 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 ...........;;.Else.send.the.text
15f00 20 6f 66 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 .of.the.region..............(set
15f20 71 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 28 69 66 q.prompts....................(if
15f40 2d 6c 65 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 -let*.(((prop-match-p.prop))....
15f60 20 20 20 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 ..........................(engin
15f80 65 20 28 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 e.(substring.model.10)))........
15fa0 20 20 20 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 ................;;.It's.a.region
15fc0 20 6f 66 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 .of.text........................
15fe0 28 6c 69 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 (list.:text.prompts)............
16000 20 20 20 20 20 20 20 20 20 20 22 22 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 70 72 6f 6d 70 ..........""))))...........promp
16020 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 77 72 ts)))))..(cl-defmethod.gptel--wr
16040 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 67 70 74 65 6c 2d ap-user-prompt.((_backend.gptel-
16060 6b 61 67 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 kagi).prompts)...(cond....((plis
16080 74 2d 67 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 t-get.prompts.:url).....(message
160a0 20 22 49 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 ."Ignoring.gptel.context.for.URL
160c0 20 73 75 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 .summary.request."))....((plist-
160e0 67 65 74 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 get.prompts.:query).....(cl-call
16100 66 20 67 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 f.gptel-context--wrap.(plist-get
16120 20 70 72 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 .prompts.:query)))....((plist-ge
16140 74 20 70 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 t.prompts.:text).....(cl-callf.g
16160 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
16180 6f 6d 70 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 ompts.:text)))))..;;;###autoload
161a0 0a 28 63 6c 2d 64 65 66 75 6e 20 67 70 74 65 6c 2d 6d 61 6b 65 2d 6b 61 67 69 0a 20 20 20 20 28 .(cl-defun.gptel-make-kagi.....(
161c0 6e 61 6d 65 20 26 6b 65 79 20 63 75 72 6c 2d 61 72 67 73 20 73 74 72 65 61 6d 20 6b 65 79 0a 20 name.&key.curl-args.stream.key..
161e0 20 20 20 20 20 20 20 20 20 28 68 6f 73 74 20 22 6b 61 67 69 2e 63 6f 6d 22 29 0a 20 20 20 20 20 .........(host."kagi.com")......
16200 20 20 20 20 20 28 68 65 61 64 65 72 20 28 6c 61 6d 62 64 61 20 28 29 20 60 28 28 22 41 75 74 68 .....(header.(lambda.().`(("Auth
16220 6f 72 69 7a 61 74 69 6f 6e 22 20 2e 20 2c 28 63 6f 6e 63 61 74 20 22 42 6f 74 20 22 20 28 67 70 orization"...,(concat."Bot.".(gp
16240 74 65 6c 2d 2d 67 65 74 2d 61 70 69 2d 6b 65 79 29 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 tel--get-api-key))))))..........
16260 20 28 6d 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 .(models.'((fastgpt.:capabilitie
16280 73 20 28 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 s.(nosystem))...................
162a0 20 20 28 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 ..(summarize:cecil.:capabilities
162c0 20 28 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 .(nosystem))....................
162e0 20 28 73 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 .(summarize:agnes.:capabilities.
16300 28 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 (nosystem)).....................
16320 28 73 75 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 (summarize:daphne.:capabilities.
16340 28 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 (nosystem)).....................
16360 28 73 75 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 (summarize:muriel.:capabilities.
16380 28 6e 6f 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 (nosystem))))...........(protoco
163a0 6c 20 22 68 74 74 70 73 22 29 0a 20 20 20 20 20 20 20 20 20 20 28 65 6e 64 70 6f 69 6e 74 20 22 l."https")...........(endpoint."
163c0 2f 61 70 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 /api/v0/"))..."Register.a.Kagi.F
163e0 61 73 74 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 astGPT.backend.for.gptel.with.NA
16400 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 2d 41 52 ME...Keyword.arguments:..CURL-AR
16420 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 64 69 74 GS.(optional).is.a.list.of.addit
16440 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 69 73 20 74 ional.Curl.arguments...HOST.is.t
16460 68 65 20 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 he.Kagi.host.(with.port),.defaul
16480 74 73 20 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 ts.to.\"kagi.com\"...MODELS.is.a
164a0 20 6c 69 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 .list.of.available.Kagi.models:.
164c0 6f 6e 6c 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 only.fastgpt.is.supported...STRE
164e0 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 6d AM.is.a.boolean.to.toggle.stream
16500 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 65 ing.responses,.defaults.to.false
16520 2e 20 20 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 ...Kagi.does.not.support.a.strea
16540 6d 69 6e 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 ming.API.yet...PROTOCOL.(optiona
16560 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 70 73 l).specifies.the.protocol,.https
16580 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 61 6c .by.default...ENDPOINT.(optional
165a0 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 6c 65 ).is.the.API.endpoint.for.comple
165c0 74 69 6f 6e 73 2c 20 64 65 66 61 75 6c 74 73 20 74 6f 0a 5c 22 2f 61 70 69 2f 76 30 2f 66 61 73 tions,.defaults.to.\"/api/v0/fas
165e0 74 67 70 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 tgpt\"...HEADER.(optional).is.fo
16600 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
16620 68 20 65 61 63 68 0a 72 65 71 75 65 73 74 2e 20 20 49 74 20 73 68 6f 75 6c 64 20 62 65 20 61 6e h.each.request...It.should.be.an
16640 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 73 .alist.or.a.function.that.retuns
16660 20 61 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 .an.alist,.like:..((\"Content-Ty
16680 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
166a0 45 59 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 61 20 76 61 72 69 61 62 6c 65 20 77 68 6f 73 EY.(optional).is.a.variable.whos
166c0 65 20 76 61 6c 75 65 20 69 73 20 74 68 65 20 41 50 49 20 6b 65 79 2c 20 6f 72 0a 66 75 6e 63 74 e.value.is.the.API.key,.or.funct
166e0 69 6f 6e 20 74 68 61 74 20 72 65 74 75 72 6e 73 20 74 68 65 20 6b 65 79 2e 0a 0a 45 78 61 6d 70 ion.that.returns.the.key...Examp
16700 6c 65 3a 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 le:.-------...(gptel-make-kagi.\
16720 22 4b 61 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 "Kagi\".:key.my-kagi-key)"...(de
16740 63 6c 61 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 clare.(indent.1))...stream......
16760 20 20 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 69 6c 65 6e ..........................;Silen
16780 63 65 20 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 ce.byte-compiler...(let.((backen
167a0 64 20 28 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 d.(gptel--make-kagi.............
167c0 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......
167e0 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.........
16800 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............
16820 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...........
16840 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................
16860 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
16880 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
168a0 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..................
168c0 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.............
168e0 20 20 20 20 20 20 3a 75 72 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 ......:url...................(la
16900 6d 62 64 61 20 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e mbda.().....................(con
16920 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
16940 0a 20 20 20 20 20 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
16960 20 28 65 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 .(equal.gptel-model.'fastgpt)...
16980 20 20 20 20 20 20 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 .............................."f
169a0 61 73 74 67 70 74 22 20 22 73 75 6d 6d 61 72 69 7a 65 22 29 29 29 29 29 29 0a 20 20 20 20 28 70 astgpt"."summarize")))))).....(p
169c0 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-
169e0 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..
16a00 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.#'
16a20 65 71 75 61 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 61 63 6b 65 6e 64 equal)...................backend
16a40 29 29 29 29 0a 0a 28 70 72 6f 76 69 64 65 20 27 67 70 74 65 6c 2d 6b 61 67 69 29 0a 3b 3b 3b 20 ))))..(provide.'gptel-kagi).;;;.
16a60 67 70 74 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 gptel-kagi.el.ends.here..;;.Loca
16a80 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 77 61 72 l.Variables:.;;.byte-compile-war
16aa0 6e 69 6e 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 nings:.(not.docstrings).;;.End:.
16ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16b00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16b20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16c00 67 70 74 65 6c 2d 30 2e 39 2e 38 2e 35 2f 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2e 65 6c 00 00 gptel-0.9.8.5/gptel-bedrock.el..
16c20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16c60 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
16c80 30 30 37 35 33 37 32 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 34 35 32 37 00 20 30 00 00 00 0075372.00000000000.014527..0...
16ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
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 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...................
16d20 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...................
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 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
16e20 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
16e40 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
16e60 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..
16e80 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..
16ea0 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
16ec0 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
16ee0 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
16f00 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.
16f20 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
16f40 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.
16f60 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
16f80 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...;;.
16fa0 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
16fc0 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,.
16fe0 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
17000 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
17020 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.
17040 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
17060 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
17080 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
170a0 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
170c0 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
170e0 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
17100 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/
17120 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
17140 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
17160 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.
17180 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
171a0 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.
171c0 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
171e0 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
17200 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
17220 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
17240 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
17260 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..
17280 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
172a0 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
172c0 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
172e0 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
17300 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
17320 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-
17340 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-
17360 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
17380 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)......................
173a0 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)...........
173c0 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
173e0 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
17400 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
17420 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
17440 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
17460 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
17480 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
174a0 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
174c0 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
174e0 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."
17500 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.
17520 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).
17540 20 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.:
17560 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
17580 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")...............
175a0 20 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
175c0 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
175e0 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.................
17600 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
17620 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
17640 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
17660 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 ")..............................
17680 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.......
176a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
176c0 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
176e0 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......
17700 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
17720 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
17740 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))...........
17760 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
17780 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.........................
177a0 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
177c0 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...........................
177e0 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
17800 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")............
17820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
17840 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
17860 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.............................
17880 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
178a0 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
178c0 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........................
178e0 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
17900 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))))))))
17920 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
17940 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
17960 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
17980 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
179a0 54 53 2e 22 0a 20 20 28 6e 63 6f 6e 63 0a 20 20 20 60 28 3a 6d 65 73 73 61 67 65 73 20 5b 2c 40 TS."...(nconc....`(:messages.[,@
179c0 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 6d 61 78 54 prompts].:inferenceConfig.(:maxT
179e0 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 35 30 30 29 okens.,(or.gptel-max-tokens.500)
17a00 29 29 0a 20 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 ))....(when.gptel--system-messag
17a20 65 20 60 28 3a 73 79 73 74 65 6d 20 5b 28 3a 74 65 78 74 20 2c 67 70 74 65 6c 2d 2d 73 79 73 74 e.`(:system.[(:text.,gptel--syst
17a40 65 6d 2d 6d 65 73 73 61 67 65 29 5d 29 29 0a 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 74 65 em-message)]))....(when.gptel-te
17a60 6d 70 65 72 61 74 75 72 65 20 60 28 3a 74 65 6d 70 65 72 61 74 75 72 65 20 2c 67 70 74 65 6c 2d mperature.`(:temperature.,gptel-
17a80 74 65 6d 70 65 72 61 74 75 72 65 29 29 0a 20 20 20 28 77 68 65 6e 20 28 61 6e 64 20 67 70 74 65 temperature))....(when.(and.gpte
17aa0 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 20 20 20 20 20 60 28 l-use-tools.gptel-tools)......`(
17ac0 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
17ae0 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
17b00 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.'())).............
17b20 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 61 72 73 65 2d 74 6f ........:tools.,(gptel--parse-to
17b40 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 29 29 29 29 0a 0a 28 ols.backend.gptel-tools))))))..(
17b60 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 74 6f 6f 6c 73 20 cl-defmethod.gptel--parse-tools.
17b80 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 74 6f 6f 6c 73 29 ((_backend.gptel-bedrock).tools)
17ba0 0a 20 20 22 50 61 72 73 65 20 54 4f 4f 4c 53 20 61 6e 64 20 72 65 74 75 72 6e 20 61 20 6c 69 73 ..."Parse.TOOLS.and.return.a.lis
17bc0 74 20 6f 66 20 54 6f 6f 6c 53 70 65 63 69 66 69 63 61 74 69 6f 6e 20 6f 62 6a 65 63 74 73 2e 0a t.of.ToolSpecification.objects..
17be0 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 6c 2d 74 6f 6f 6c 27 .TOOLS.is.a.list.of.`gptel-tool'
17c00 20 73 74 72 75 63 74 73 2c 20 77 68 69 63 68 20 73 65 65 2e 22 0a 20 20 20 3b 3b 20 68 74 74 70 .structs,.which.see."....;;.http
17c20 73 3a 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 s://docs.aws.amazon.com/bedrock/
17c40 6c 61 74 65 73 74 2f 41 50 49 52 65 66 65 72 65 6e 63 65 2f 41 50 49 5f 72 75 6e 74 69 6d 65 5f latest/APIReference/API_runtime_
17c60 54 6f 6f 6c 53 70 65 63 69 66 69 63 61 74 69 6f 6e 2e 68 74 6d 6c 0a 20 20 20 28 6c 65 74 20 28 ToolSpecification.html....(let.(
17c80 28 64 65 66 61 75 6c 74 2d 6f 75 74 70 75 74 73 20 28 63 6c 2d 63 61 6c 6c 2d 6e 65 78 74 2d 6d (default-outputs.(cl-call-next-m
17ca0 65 74 68 6f 64 29 29 29 20 3b 3b 20 75 73 65 20 6f 70 65 6e 61 69 20 74 6f 6f 6c 2d 70 61 72 73 ethod))).;;.use.openai.tool-pars
17cc0 65 0a 20 20 20 20 20 28 63 6c 2d 6d 61 70 20 27 76 65 63 74 6f 72 0a 20 20 20 20 20 20 28 6c 61 e......(cl-map.'vector.......(la
17ce0 6d 62 64 61 20 28 74 6f 6f 6c 20 73 70 65 63 29 0a 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 3a mbda.(tool.spec).........(list.:
17d00 74 6f 6f 6c 53 70 65 63 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 0a 20 20 20 toolSpec...............(list....
17d20 20 20 20 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 ............:name.(gptel-tool-na
17d40 6d 65 20 74 6f 6f 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 64 65 73 63 72 69 70 me.tool)................:descrip
17d60 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 74 6f 6f tion.(gptel-tool-description.too
17d80 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 69 6e 70 75 74 53 63 68 65 6d 61 20 28 l)................:inputSchema.(
17da0 6c 69 73 74 20 3a 6a 73 6f 6e 20 28 70 6c 69 73 74 2d 67 65 74 20 28 70 6c 69 73 74 2d 67 65 74 list.:json.(plist-get.(plist-get
17dc0 20 73 70 65 63 20 3a 66 75 6e 63 74 69 6f 6e 29 20 3a 70 61 72 61 6d 65 74 65 72 73 29 29 29 29 .spec.:function).:parameters))))
17de0 29 0a 20 20 20 20 20 20 28 65 6e 73 75 72 65 2d 6c 69 73 74 20 74 6f 6f 6c 73 29 20 64 65 66 61 ).......(ensure-list.tools).defa
17e00 75 6c 74 2d 6f 75 74 70 75 74 73 29 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 67 70 ult-outputs)))..(cl-defmethod.gp
17e20 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 20 67 tel--parse-response.((_backend.g
17e40 70 74 65 6c 2d 62 65 64 72 6f 63 6b 29 20 72 65 73 70 6f 6e 73 65 20 69 6e 66 6f 29 0a 20 20 22 ptel-bedrock).response.info)..."
17e60 50 61 72 73 65 20 61 20 42 65 64 72 6f 63 6b 20 28 6e 6f 6e 2d 73 74 72 65 61 6d 69 6e 67 29 20 Parse.a.Bedrock.(non-streaming).
17e80 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 74 65 78 RESPONSE.and.return.response.tex
17ea0 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 73 70 6f t...Mutate.state.INFO.with.respo
17ec0 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 75 74 20 69 6e 66 6f nse.metadata."...(plist-put.info
17ee0 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 6e 73 .:stop-reason.(plist-get.respons
17f00 65 20 3a 73 74 6f 70 52 65 61 73 6f 6e 29 29 0a 20 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 e.:stopReason))...(plist-put.inf
17f20 6f 20 3a 69 6e 70 75 74 2d 74 6f 6b 65 6e 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 o.:input-tokens..............(ma
17f40 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 75 73 61 67 65 20 3a p-nested-elt.response.'(:usage.:
17f60 69 6e 70 75 74 54 6f 6b 65 6e 73 29 29 29 0a 20 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f inputTokens)))...(plist-put.info
17f80 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 20 20 20 20 28 6d 61 .:output-tokens..............(ma
17fa0 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 75 73 61 67 65 20 3a p-nested-elt.response.'(:usage.:
17fc0 6f 75 74 70 75 74 54 6f 6b 65 6e 73 29 29 29 0a 0a 20 20 28 6c 65 74 2a 20 28 28 6d 65 73 73 61 outputTokens)))....(let*.((messa
17fe0 67 65 20 28 6d 61 70 2d 6e 65 73 74 65 64 2d 65 6c 74 20 72 65 73 70 6f 6e 73 65 20 27 28 3a 6f ge.(map-nested-elt.response.'(:o
18000 75 74 70 75 74 20 3a 6d 65 73 73 61 67 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 63 6f 6e 74 utput.:message)))..........(cont
18020 65 6e 74 2d 73 74 72 73 20 28 74 68 72 65 61 64 2d 6c 61 73 74 20 28 70 6c 69 73 74 2d 67 65 74 ent-strs.(thread-last.(plist-get
18040 20 6d 65 73 73 61 67 65 20 3a 63 6f 6e 74 65 6e 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 .message.:content)..............
18060 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 20 28 .......................(mapcar.(
18080 6c 61 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 lambda.(cblock).(plist-get.cbloc
180a0 6b 20 3a 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 k.:text)))......................
180c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 65 6c 71 20 6e 69 6c 29 29 29 29 0a 20 20 20 ...............(delq.nil))))....
180e0 20 28 67 70 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 .(gptel-bedrock--record-tool-use
18100 20 6d 65 73 73 61 67 65 20 69 6e 66 6f 29 0a 20 20 20 20 28 61 6e 64 20 63 6f 6e 74 65 6e 74 2d .message.info).....(and.content-
18120 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
18140 73 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 72 65 63 s))))..(defun.gptel-bedrock--rec
18160 6f 72 64 2d 74 6f 6f 6c 2d 75 73 65 20 28 6d 65 73 73 61 67 65 20 69 6e 66 6f 29 0a 20 20 22 49 ord-tool-use.(message.info)..."I
18180 66 20 4d 45 53 53 41 47 45 20 68 61 73 20 74 6f 6f 6c 20 75 73 65 20 72 65 71 75 65 73 74 73 2c f.MESSAGE.has.tool.use.requests,
181a0 20 73 61 76 65 20 74 68 6f 73 65 20 74 6f 20 49 4e 46 4f 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 .save.those.to.INFO."...(let*.((
181c0 63 6f 6e 74 65 6e 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 content.(plist-get.message.:cont
181e0 65 6e 74 29 29 0a 20 20 20 20 20 20 20 20 20 28 74 6f 6f 6c 2d 75 73 65 2d 62 6c 6f 63 6b 73 20 ent))..........(tool-use-blocks.
18200 28 63 6c 2d 72 65 6d 6f 76 65 2d 69 66 2d 6e 6f 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (cl-remove-if-not...............
18220 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 63 62 6c 6f 63 6b 29 20 28 70 .............(lambda.(cblock).(p
18240 6c 69 73 74 2d 67 65 74 20 63 62 6c 6f 63 6b 20 3a 74 6f 6f 6c 55 73 65 29 29 0a 20 20 20 20 20 list-get.cblock.:toolUse))......
18260 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 6e 74 29 29 29 ......................content)))
18280 0a 20 20 20 20 28 77 68 65 6e 20 74 6f 6f 6c 2d 75 73 65 2d 62 6c 6f 63 6b 73 0a 20 20 20 20 20 .....(when.tool-use-blocks......
182a0 20 28 63 6c 2d 63 61 6c 6c 66 20 76 63 6f 6e 63 61 74 20 28 70 6c 69 73 74 2d 67 65 74 20 28 70 .(cl-callf.vconcat.(plist-get.(p
182c0 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 64 61 74 61 29 20 3a 6d 65 73 73 61 67 65 73 29 20 list-get.info.:data).:messages).
182e0 28 6c 69 73 74 20 6d 65 73 73 61 67 65 29 29 0a 0a 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 (list.message))........(plist-pu
18300 74 20 69 6e 66 6f 20 3a 74 6f 6f 6c 2d 75 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 t.info.:tool-use................
18320 20 20 28 6d 61 70 63 61 72 20 28 6c 61 6d 62 64 61 20 28 62 6c 6f 63 6b 29 0a 20 20 20 20 20 20 ..(mapcar.(lambda.(block).......
18340 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 74 6f 6f 6c .....................(let.((tool
18360 2d 75 73 65 20 28 70 6c 69 73 74 2d 67 65 74 20 62 6c 6f 63 6b 20 3a 74 6f 6f 6c 55 73 65 29 29 -use.(plist-get.block.:toolUse))
18380 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 )..............................(
183a0 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 20 20 20 list............................
183c0 20 20 20 3a 6e 61 6d 65 20 28 70 6c 69 73 74 2d 67 65 74 20 74 6f 6f 6c 2d 75 73 65 20 3a 6e 61 ...:name.(plist-get.tool-use.:na
183e0 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 20 me).............................
18400 20 20 3a 61 72 67 73 20 28 70 6c 69 73 74 2d 67 65 74 20 74 6f 6f 6c 2d 75 73 65 20 3a 69 6e 70 ..:args.(plist-get.tool-use.:inp
18420 75 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 ut).............................
18440 20 20 3a 69 64 20 28 70 6c 69 73 74 2d 67 65 74 20 74 6f 6f 6c 2d 75 73 65 20 3a 74 6f 6f 6c 55 ..:id.(plist-get.tool-use.:toolU
18460 73 65 49 64 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 seId))))........................
18480 20 20 74 6f 6f 6c 2d 75 73 65 2d 62 6c 6f 63 6b 73 29 29 29 29 29 0a 0a 28 63 6c 2d 64 65 66 6d ..tool-use-blocks)))))..(cl-defm
184a0 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 5f 62 61 63 6b 65 ethod.gptel--parse-list.((_backe
184c0 6e 64 20 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 29 20 70 72 6f 6d 70 74 2d 73 74 72 69 6e 67 73 nd.gptel-bedrock).prompt-strings
184e0 29 0a 20 20 22 43 72 65 61 74 65 20 61 20 6c 69 73 74 20 6f 66 20 70 72 6f 6d 70 74 20 6f 62 6a )..."Create.a.list.of.prompt.obj
18500 65 63 74 73 20 66 72 6f 6d 20 50 52 4f 4d 50 54 2d 53 54 52 49 4e 47 53 2e 0a 0a 41 73 73 75 6d ects.from.PROMPT-STRINGS...Assum
18520 65 73 20 74 68 69 73 20 69 73 20 61 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 20 77 69 74 68 20 61 es.this.is.a.conversation.with.a
18540 6c 74 65 72 6e 61 74 69 6e 67 20 72 6f 6c 65 73 2e 22 0a 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f lternating.roles."...(cl-loop.fo
18560 72 20 74 65 78 74 20 69 6e 20 70 72 6f 6d 70 74 2d 73 74 72 69 6e 67 73 0a 20 20 20 20 20 20 20 r.text.in.prompt-strings........
18580 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 29 ....for.role.=.t.then.(not.role)
185a0 0a 20 20 20 20 20 20 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 ............if.text.collect.....
185c0 20 20 20 20 20 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 .......(list.:role.(if.role."use
185e0 72 22 20 22 61 73 73 69 73 74 61 6e 74 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 r"."assistant").................
18600 20 3a 63 6f 6e 74 65 6e 74 20 60 5b 28 3a 74 65 78 74 20 2c 74 65 78 74 29 5d 29 29 29 0a 0a 28 .:content.`[(:text.,text)])))..(
18620 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 65 72 2d 70 72 cl-defmethod.gptel--wrap-user-pr
18640 6f 6d 70 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 29 20 70 ompt.((_backend.gptel-bedrock).p
18660 72 6f 6d 70 74 73 20 26 6f 70 74 69 6f 6e 61 6c 20 69 6e 6a 65 63 74 2d 6d 65 64 69 61 29 0a 20 rompts.&optional.inject-media)..
18680 20 22 49 6e 6a 65 63 74 20 63 6f 6e 74 65 78 74 20 69 6e 74 6f 20 61 20 63 6f 6e 76 65 72 73 61 ."Inject.context.into.a.conversa
186a0 74 69 6f 6e 2e 0a 0a 50 52 4f 4d 50 54 53 20 69 73 20 6c 69 73 74 20 6f 66 20 70 72 6f 6d 70 74 tion...PROMPTS.is.list.of.prompt
186c0 20 6f 62 6a 65 63 74 73 2e 20 20 49 66 20 49 4e 4a 45 43 54 2d 4d 45 44 49 41 20 69 73 20 6e 6f .objects...If.INJECT-MEDIA.is.no
186e0 6e 2d 6e 69 6c 0a 69 6e 6a 65 63 74 20 74 68 65 20 6d 65 64 69 61 20 66 69 6c 65 73 20 66 72 6f n-nil.inject.the.media.files.fro
18700 6d 20 63 6f 6e 74 65 78 74 20 69 6e 74 6f 20 74 68 65 20 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20 m.context.into.the.beginning.of.
18720 74 68 65 0a 63 6f 6e 76 65 72 73 61 74 69 6f 6e 3b 20 6f 74 68 65 72 77 69 73 65 20 69 6e 6a 65 the.conversation;.otherwise.inje
18740 63 74 20 74 68 65 20 63 6f 6e 74 65 78 74 20 69 6e 74 6f 20 74 68 65 20 6c 61 73 74 20 70 72 6f ct.the.context.into.the.last.pro
18760 6d 70 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 28 mpt."...(if.inject-media.......(
18780 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 69 6e 6a 65 63 74 2d 6d 65 64 69 61 2d 63 6f 6e 74 gptel-bedrock--inject-media-cont
187a0 65 78 74 20 70 72 6f 6d 70 74 73 29 0a 20 20 20 20 28 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d ext.prompts).....(gptel-bedrock-
187c0 2d 69 6e 6a 65 63 74 2d 74 65 78 74 2d 63 6f 6e 74 65 78 74 20 70 72 6f 6d 70 74 73 29 29 29 0a -inject-text-context.prompts))).
187e0 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 69 6e 6a 65 63 74 2d 6d 65 .(defun.gptel-bedrock--inject-me
18800 64 69 61 2d 63 6f 6e 74 65 78 74 20 28 70 72 6f 6d 70 74 73 29 0a 20 20 22 49 6e 6a 65 63 74 20 dia-context.(prompts)..."Inject.
18820 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 61 20 media.files.from.context.into.a.
18840 63 6f 6e 76 65 72 73 61 74 69 6f 6e 2e 0a 4d 65 64 69 61 20 66 69 6c 65 73 20 77 69 6c 6c 20 62 conversation..Media.files.will.b
18860 65 20 61 64 64 65 64 20 61 74 20 74 68 65 20 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20 74 68 65 20 e.added.at.the.beginning.of.the.
18880 63 6f 6e 76 65 72 73 61 74 69 6f 6e 2e 0a 50 52 4f 4d 50 54 53 20 73 68 6f 75 6c 64 20 62 65 20 conversation..PROMPTS.should.be.
188a0 61 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 20 6f 62 6a 65 63 a.non-empty.list.of.prompt.objec
188c0 74 73 2e 22 0a 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 ts."...(when-let*.((media-list.(
188e0 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 29 29 29 0a gptel-context--collect-media))).
18900 20 20 20 20 28 63 6c 2d 63 61 6c 6c 66 32 20 76 63 6f 6e 63 61 74 20 28 67 70 74 65 6c 2d 62 65 ....(cl-callf2.vconcat.(gptel-be
18920 64 72 6f 63 6b 2d 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 drock--parse-multipart.media-lis
18940 74 29 0a 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 28 63 61 t)................(plist-get.(ca
18960 72 20 70 72 6f 6d 70 74 73 29 20 3a 63 6f 6e 74 65 6e 74 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 r.prompts).:content))))..(defun.
18980 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 74 65 gptel-bedrock--inject-text-conte
189a0 78 74 20 28 70 72 6f 6d 70 74 73 29 0a 20 20 22 49 6e 6a 65 63 74 20 74 65 78 74 20 63 6f 6e 74 xt.(prompts)..."Inject.text.cont
189c0 65 78 74 20 69 6e 74 6f 20 74 68 65 20 6c 61 73 74 20 70 72 6f 6d 70 74 20 6f 62 6a 65 63 74 20 ext.into.the.last.prompt.object.
189e0 66 72 6f 6d 20 61 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 2e 0a 50 52 4f 4d 50 54 53 20 73 68 6f from.a.conversation..PROMPTS.sho
18a00 75 6c 64 20 62 65 20 61 20 6e 6f 6e 2d 65 6d 70 74 79 20 6c 69 73 74 20 6f 66 20 70 72 6f 6d 70 uld.be.a.non-empty.list.of.promp
18a20 74 20 6f 62 6a 65 63 74 73 2e 22 0a 20 20 28 63 6c 2d 61 73 73 65 72 74 20 70 72 6f 6d 70 74 73 t.objects."...(cl-assert.prompts
18a40 20 6e 69 6c 20 22 45 78 70 65 63 74 65 64 20 61 20 6e 6f 6e 2d 65 6d 70 74 79 20 6c 69 73 74 20 .nil."Expected.a.non-empty.list.
18a60 6f 66 20 70 72 6f 6d 70 74 73 22 29 0a 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 77 72 61 70 of.prompts")...(when-let*.((wrap
18a80 70 65 64 20 28 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 77 72 61 70 20 6e 69 6c 29 29 29 0a ped.(gptel-context--wrap.nil))).
18aa0 20 20 20 20 28 63 6c 2d 63 61 6c 6c 66 32 20 76 63 6f 6e 63 61 74 20 60 5b 28 3a 74 65 78 74 20 ....(cl-callf2.vconcat.`[(:text.
18ac0 2c 77 72 61 70 70 65 64 29 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 ,wrapped)]................(plist
18ae0 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
18b00 6e 74 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 62 65 64 72 nt))))..(defvar-local.gptel-bedr
18b20 6f 63 6b 2d 2d 73 74 72 65 61 6d 2d 63 75 72 73 6f 72 20 6e 69 6c 0a 20 20 22 4d 61 72 6b 65 72 ock--stream-cursor.nil..."Marker
18b40 20 74 6f 20 69 6e 64 69 63 61 74 65 20 6c 61 73 74 20 70 6f 69 6e 74 20 70 61 72 73 65 64 2e 22 .to.indicate.last.point.parsed."
18b60 29 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 2d 70 61 72 )..(cl-defmethod.gptel-curl--par
18b80 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 62 65 64 72 6f se-stream.((_backend.gptel-bedro
18ba0 63 6b 29 20 69 6e 66 6f 29 0a 20 20 22 50 61 72 73 65 20 61 6e 20 41 57 53 20 42 65 64 72 6f 63 ck).info)..."Parse.an.AWS.Bedroc
18bc0 6b 20 73 74 72 65 61 6d 69 6e 67 20 72 65 73 70 6f 6e 73 65 20 66 72 6f 6d 20 74 68 65 20 43 6f k.streaming.response.from.the.Co
18be0 6e 76 65 72 73 65 53 74 72 65 61 6d 20 41 50 49 2e 0a 49 4e 46 4f 20 69 73 20 61 20 70 6c 69 73 nverseStream.API..INFO.is.a.plis
18c00 74 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 72 65 71 75 65 73 74 20 63 6f 6e 74 65 78 74 t.containing.the.request.context
18c20 2e 22 0a 20 20 28 63 6c 2d 62 6c 6f 63 6b 20 66 6e 0a 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 ."...(cl-block.fn.....(save-excu
18c40 72 73 69 6f 6e 0a 20 20 20 20 20 20 3b 3b 20 45 61 63 68 20 73 74 72 65 61 6d 69 6e 67 20 72 65 rsion.......;;.Each.streaming.re
18c60 71 75 65 73 74 20 75 73 65 73 20 61 20 66 72 65 73 68 20 62 75 66 66 65 72 2c 20 73 6f 20 74 68 quest.uses.a.fresh.buffer,.so.th
18c80 65 20 63 75 72 73 6f 72 20 73 74 61 72 74 73 20 6f 75 74 20 6e 75 6c 6c 2e 20 57 65 20 6b 65 65 e.cursor.starts.out.null..We.kee
18ca0 70 20 69 74 20 75 6e 73 65 74 0a 20 20 20 20 20 20 3b 3b 20 75 6e 74 69 6c 20 77 65 20 68 61 76 p.it.unset.......;;.until.we.hav
18cc0 65 20 72 65 63 65 69 76 65 64 20 61 6c 6c 20 74 68 65 20 68 65 61 64 65 72 73 0a 20 20 20 20 20 e.received.all.the.headers......
18ce0 20 28 77 68 65 6e 20 28 6e 75 6c 6c 20 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 73 74 72 65 .(when.(null.gptel-bedrock--stre
18d00 61 6d 2d 63 75 72 73 6f 72 29 0a 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 am-cursor).........(goto-char.(p
18d20 6f 69 6e 74 2d 6d 69 6e 29 29 0a 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 73 65 61 72 oint-min)).........(unless.(sear
18d40 63 68 2d 66 6f 72 77 61 72 64 20 22 5c 72 5c 6e 5c 72 5c 6e 22 20 6e 69 6c 20 74 29 20 28 63 6c ch-forward."\r\n\r\n".nil.t).(cl
18d60 2d 72 65 74 75 72 6e 2d 66 72 6f 6d 20 66 6e 29 29 0a 20 20 20 20 20 20 20 20 28 73 61 76 65 2d -return-from.fn)).........(save-
18d80 72 65 73 74 72 69 63 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 28 6e 61 72 72 6f 77 2d 74 6f restriction...........(narrow-to
18da0 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 29 29 20 3b 20 52 -region.(point-min).(point)).;.R
18dc0 65 71 75 69 72 65 64 20 62 79 20 6d 61 69 6c 2d 66 65 74 63 68 2d 66 69 65 6c 64 0a 20 20 20 20 equired.by.mail-fetch-field.....
18de0 20 20 20 20 20 20 28 6c 65 74 20 28 28 63 6f 6e 74 65 6e 74 2d 74 79 70 65 20 28 6d 61 69 6c 2d ......(let.((content-type.(mail-
18e00 68 65 61 64 65 72 2d 70 61 72 73 65 2d 63 6f 6e 74 65 6e 74 2d 74 79 70 65 0a 20 20 20 20 20 20 header-parse-content-type.......
18e20 20 20 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 69 6c 2d 66 .........................(mail-f
18e40 65 74 63 68 2d 66 69 65 6c 64 20 22 43 6f 6e 74 65 6e 74 2d 54 79 70 65 22 29 29 29 29 0a 20 20 etch-field."Content-Type"))))...
18e60 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 61 73 73 65 72 74 20 63 6f 6e 74 65 6e 74 2d 74 79 70 ..........(cl-assert.content-typ
18e80 65 20 6e 69 6c 20 22 4e 6f 20 43 6f 6e 74 65 6e 74 2d 54 79 70 65 20 68 65 61 64 65 72 20 66 6f e.nil."No.Content-Type.header.fo
18ea0 75 6e 64 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 61 73 73 65 72 74 20 28 73 74 und").............(cl-assert.(st
18ec0 72 69 6e 67 2d 65 71 75 61 6c 20 28 63 61 72 20 63 6f 6e 74 65 6e 74 2d 74 79 70 65 29 20 22 61 ring-equal.(car.content-type)."a
18ee0 70 70 6c 69 63 61 74 69 6f 6e 2f 76 6e 64 2e 61 6d 61 7a 6f 6e 2e 65 76 65 6e 74 73 74 72 65 61 pplication/vnd.amazon.eventstrea
18f00 6d 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 74 20 22 55 6e m")........................t."Un
18f20 65 78 70 65 63 74 65 64 20 43 6f 6e 74 65 6e 74 2d 54 79 70 65 20 25 53 2c 20 65 78 70 65 63 74 expected.Content-Type.%S,.expect
18f40 65 64 20 25 53 22 29 29 29 0a 20 20 20 20 20 20 20 20 28 73 65 74 71 20 67 70 74 65 6c 2d 62 65 ed.%S"))).........(setq.gptel-be
18f60 64 72 6f 63 6b 2d 2d 73 74 72 65 61 6d 2d 63 75 72 73 6f 72 20 28 70 6f 69 6e 74 2d 6d 61 72 6b drock--stream-cursor.(point-mark
18f80 65 72 29 29 0a 0a 20 20 20 20 20 20 20 20 3b 3b 20 3a 61 63 63 75 6d 75 6c 61 74 65 64 2d 65 76 er))..........;;.:accumulated-ev
18fa0 65 6e 74 73 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 65 76 65 6e 74 73 20 66 72 6f 6d 20 61 6e ents.contains.the.events.from.an
18fc0 20 69 6e 2d 70 72 6f 67 72 65 73 73 20 6d 65 73 73 61 67 65 2c 20 66 72 6f 6d 20 74 68 65 0a 20 .in-progress.message,.from.the..
18fe0 20 20 20 20 20 20 20 3b 3b 20 6d 65 73 73 61 67 65 53 74 61 72 74 20 6f 6e 77 61 72 64 73 2e 20 .......;;.messageStart.onwards..
19000 57 69 74 68 20 65 61 63 68 20 6d 65 73 73 61 67 65 53 74 6f 70 20 69 74 20 67 65 74 73 20 63 6c With.each.messageStop.it.gets.cl
19020 65 61 72 65 64 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 61 eared.........(plist-put.info.:a
19040 63 63 75 6d 75 6c 61 74 65 64 2d 65 76 65 6e 74 73 20 6e 69 6c 29 29 0a 0a 20 20 20 20 20 20 3b ccumulated-events.nil))........;
19060 3b 20 53 74 61 72 74 20 6f 66 20 6d 61 69 6e 20 72 6f 75 74 69 6e 65 0a 20 20 20 20 20 20 28 6c ;.Start.of.main.routine.......(l
19080 65 74 20 28 28 61 63 63 2d 63 65 6c 6c 20 28 63 64 72 20 28 70 6c 69 73 74 2d 6d 65 6d 62 65 72 et.((acc-cell.(cdr.(plist-member
190a0 20 69 6e 66 6f 20 3a 61 63 63 75 6d 75 6c 61 74 65 64 2d 65 76 65 6e 74 73 29 29 29 20 73 74 72 .info.:accumulated-events))).str
190c0 69 6e 67 73 20 70 72 6f 6d 70 74 73 29 0a 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 ings.prompts).........(goto-char
190e0 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 6f 72 29 0a 20 .gptel-bedrock--stream-cursor)..
19100 20 20 20 20 20 20 20 28 77 68 69 6c 65 2d 6c 65 74 20 28 28 65 76 65 6e 74 20 28 67 70 74 65 6c .......(while-let.((event.(gptel
19120 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 29 29 -bedrock--parse-stream-message))
19140 29 0a 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 65 76 65 6e 74 2d 74 79 70 65 20 28 61 )...........(let.((event-type.(a
19160 73 73 6f 63 2d 64 65 66 61 75 6c 74 20 22 3a 65 76 65 6e 74 2d 74 79 70 65 22 20 28 70 6c 69 73 ssoc-default.":event-type".(plis
19180 74 2d 67 65 74 20 65 76 65 6e 74 20 3a 68 65 61 64 65 72 73 29 29 29 29 0a 20 20 20 20 20 20 20 t-get.event.:headers))))........
191a0 20 20 20 20 20 28 77 68 65 6e 20 28 6d 65 6d 62 65 72 20 65 76 65 6e 74 2d 74 79 70 65 20 27 28 .....(when.(member.event-type.'(
191c0 22 6d 65 73 73 61 67 65 53 74 61 72 74 22 20 22 63 6f 6e 74 65 6e 74 42 6c 6f 63 6b 53 74 61 72 "messageStart"."contentBlockStar
191e0 74 22 20 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 t"."contentBlockDelta"..........
19200 20 20 20 20 20 20 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 63 .............................."c
19220 6f 6e 74 65 6e 74 42 6c 6f 63 6b 53 74 6f 70 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ontentBlockStop"))..............
19240 20 28 70 75 73 68 20 65 76 65 6e 74 20 28 63 61 72 20 61 63 63 2d 63 65 6c 6c 29 29 29 0a 20 20 .(push.event.(car.acc-cell)))...
19260 20 20 20 20 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 ..........(pcase.event-type.....
19280 20 20 20 20 20 20 20 20 20 20 28 22 6d 65 74 61 64 61 74 61 22 0a 20 20 20 20 20 20 20 20 20 20 ..........("metadata"...........
192a0 20 20 20 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 .....(plist-put.info.:input-toke
192c0 6e 73 20 28 6d 61 70 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 ns.(map-nested-elt.event.'(:payl
192e0 6f 61 64 20 3a 75 73 61 67 65 20 3a 69 6e 70 75 74 54 6f 6b 65 6e 73 29 29 29 0a 20 20 20 20 20 oad.:usage.:inputTokens)))......
19300 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 6f 75 74 70 75 ..........(plist-put.info.:outpu
19320 74 2d 74 6f 6b 65 6e 73 20 28 6d 61 70 2d 6e 65 73 74 65 64 2d 65 6c 74 20 65 76 65 6e 74 20 27 t-tokens.(map-nested-elt.event.'
19340 28 3a 70 61 79 6c 6f 61 64 20 3a 75 73 61 67 65 20 3a 6f 75 74 70 75 74 54 6f 6b 65 6e 73 29 29 (:payload.:usage.:outputTokens))
19360 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 22 63 6f 6e 74 65 6e 74 42 6c 6f 63 6b 44 ))...............("contentBlockD
19380 65 6c 74 61 22 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 20 28 elta"................(when-let.(
193a0 28 64 65 6c 74 61 2d 74 65 78 74 20 28 6d 61 70 2d 6e 65 73 74 65 64 2d 65 6c 74 20 65 76 65 6e (delta-text.(map-nested-elt.even
193c0 74 20 27 28 3a 70 61 79 6c 6f 61 64 20 3a 64 65 6c 74 61 20 3a 74 65 78 74 29 29 29 29 0a 20 20 t.'(:payload.:delta.:text))))...
193e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 64 65 6c 74 61 2d 74 65 78 74 20 ...............(push.delta-text.
19400 73 74 72 69 6e 67 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 22 6d 65 73 73 61 strings)))...............("messa
19420 67 65 53 74 6f 70 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 67 70 geStop"................(push.(gp
19440 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 61 73 73 65 6d 62 6c 65 2d 63 6f 6e 74 65 6e 74 2d 62 6c tel-bedrock--assemble-content-bl
19460 6f 63 6b 73 20 28 6e 72 65 76 65 72 73 65 20 28 63 61 72 20 61 63 63 2d 63 65 6c 6c 29 29 29 20 ocks.(nreverse.(car.acc-cell))).
19480 70 72 6f 6d 70 74 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 66 20 28 63 prompts)................(setf.(c
194a0 61 72 20 61 63 63 2d 63 65 6c 6c 29 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ar.acc-cell).nil)...............
194c0 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 6d .(plist-put.info.:stop-reason.(m
194e0 61 70 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 ap-nested-elt.event.'(:payload.:
19500 73 74 6f 70 52 65 61 73 6f 6e 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c stopReason)))................(pl
19520 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 6d 65 73 73 61 67 65 2d 63 6f 6d 70 6c 65 74 65 20 74 ist-put.info.:message-complete.t
19540 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 6d 6f 76 65 2d 6d 61 72 6b 65 72 20 67 70 74 65 6c ))))).........(move-marker.gptel
19560 2d 62 65 64 72 6f 63 6b 2d 2d 73 74 72 65 61 6d 2d 63 75 72 73 6f 72 20 28 70 6f 69 6e 74 29 29 -bedrock--stream-cursor.(point))
19580 0a 0a 20 20 20 20 20 20 20 20 28 64 6f 6c 69 73 74 20 28 6d 65 73 73 61 67 65 20 70 72 6f 6d 70 ..........(dolist.(message.promp
195a0 74 73 29 20 28 67 70 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 ts).(gptel-bedrock--record-tool-
195c0 75 73 65 20 6d 65 73 73 61 67 65 20 69 6e 66 6f 29 29 0a 20 20 20 20 20 20 20 20 28 61 70 70 6c use.message.info)).........(appl
195e0 79 20 23 27 63 6f 6e 63 61 74 20 28 6e 72 65 76 65 72 73 65 20 73 74 72 69 6e 67 73 29 29 29 29 y.#'concat.(nreverse.strings))))
19600 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 70 61 72 73 65 2d ))..(defun.gptel-bedrock--parse-
19620 73 74 72 65 61 6d 2d 6d 65 73 73 61 67 65 20 28 29 0a 20 20 22 50 61 72 73 65 20 41 57 53 20 42 stream-message.()..."Parse.AWS.B
19640 65 64 72 6f 63 6b 20 65 76 65 6e 74 2d 73 74 72 65 61 6d 20 6d 65 73 73 61 67 65 20 73 74 61 72 edrock.event-stream.message.star
19660 74 69 6e 67 20 61 74 20 63 75 72 72 65 6e 74 20 70 6f 73 69 74 69 6f 6e 2e 0a 50 6f 69 6e 74 20 ting.at.current.position..Point.
19680 73 68 6f 75 6c 64 20 62 65 20 61 74 20 74 68 65 20 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20 61 6e should.be.at.the.beginning.of.an
196a0 20 65 76 65 6e 74 20 69 6e 20 74 68 65 20 60 76 6e 64 2e 61 6d 61 7a 6f 6e 2e 65 76 65 6e 74 2d .event.in.the.`vnd.amazon.event-
196c0 73 74 72 65 61 6d 27 0a 66 6f 72 6d 61 74 2e 20 20 52 65 74 75 72 6e 73 20 70 6c 69 73 74 20 77 stream'.format...Returns.plist.w
196e0 69 74 68 20 3a 68 65 61 64 65 72 73 20 61 6e 64 20 3a 70 61 79 6c 6f 61 64 20 6b 65 79 73 20 69 ith.:headers.and.:payload.keys.i
19700 66 20 73 75 63 63 65 73 73 66 75 6c 2c 20 6e 69 6c 20 69 66 0a 69 6e 63 6f 6d 70 6c 65 74 65 2e f.successful,.nil.if.incomplete.
19720 22 0a 20 20 3b 3b 20 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 61 77 73 6c 61 62 "...;;.https://github.com/awslab
19740 73 2f 61 77 73 2d 63 2d 65 76 65 6e 74 2d 73 74 72 65 61 6d 20 68 61 73 20 64 6f 63 75 6d 65 6e s/aws-c-event-stream.has.documen
19760 74 61 74 69 6f 6e 20 6f 66 20 74 68 69 73 20 66 6f 72 6d 61 74 0a 20 20 3b 3b 20 54 68 65 20 66 tation.of.this.format...;;.The.f
19780 6f 72 6d 61 74 20 63 6f 6e 73 69 73 74 73 20 6f 66 20 74 68 72 65 65 20 6d 61 69 6e 20 73 65 63 ormat.consists.of.three.main.sec
197a0 74 69 6f 6e 73 3a 20 50 72 65 6c 75 64 65 2c 20 44 61 74 61 2c 20 61 6e 64 20 4d 65 73 73 61 67 tions:.Prelude,.Data,.and.Messag
197c0 65 20 43 52 43 2e 0a 20 20 3b 3b 20 31 2e 20 50 72 65 6c 75 64 65 20 28 31 32 20 62 79 74 65 73 e.CRC....;;.1..Prelude.(12.bytes
197e0 29 0a 20 20 3b 3b 20 20 20 20 61 2e 20 54 6f 74 61 6c 20 42 79 74 65 20 4c 65 6e 67 74 68 20 28 )...;;....a..Total.Byte.Length.(
19800 34 20 62 79 74 65 73 29 3a 20 53 70 65 63 69 66 69 65 73 20 74 68 65 20 74 6f 74 61 6c 20 6c 65 4.bytes):.Specifies.the.total.le
19820 6e 67 74 68 20 6f 66 20 74 68 65 20 6d 65 73 73 61 67 65 2e 0a 20 20 3b 3b 20 20 20 20 62 2e 20 ngth.of.the.message....;;....b..
19840 48 65 61 64 65 72 73 20 42 79 74 65 20 4c 65 6e 67 74 68 20 28 34 20 62 79 74 65 73 29 3a 20 49 Headers.Byte.Length.(4.bytes):.I
19860 6e 64 69 63 61 74 65 73 20 74 68 65 20 6c 65 6e 67 74 68 20 6f 66 20 74 68 65 20 68 65 61 64 65 ndicates.the.length.of.the.heade
19880 72 73 20 73 65 63 74 69 6f 6e 2e 0a 20 20 3b 3b 20 20 20 20 63 2e 20 50 72 65 6c 75 64 65 20 43 rs.section....;;....c..Prelude.C
198a0 52 43 20 28 34 20 62 79 74 65 73 29 3a 20 41 20 43 52 43 20 76 61 6c 75 65 20 66 6f 72 20 76 61 RC.(4.bytes):.A.CRC.value.for.va
198c0 6c 69 64 61 74 69 6e 67 20 74 68 65 20 69 6e 74 65 67 72 69 74 79 20 6f 66 20 74 68 65 20 70 72 lidating.the.integrity.of.the.pr
198e0 65 6c 75 64 65 2e 0a 20 20 3b 3b 20 32 2e 20 44 61 74 61 20 28 76 61 72 69 61 62 6c 65 20 6c 65 elude....;;.2..Data.(variable.le
19900 6e 67 74 68 29 0a 20 20 3b 3b 20 20 20 20 61 2e 20 48 65 61 64 65 72 73 3a 20 41 6e 20 61 72 72 ngth)...;;....a..Headers:.An.arr
19920 61 79 20 6f 66 20 70 61 63 6b 65 64 20 68 65 61 64 65 72 73 2e 20 45 61 63 68 20 68 65 61 64 65 ay.of.packed.headers..Each.heade
19940 72 20 68 61 73 20 61 20 73 70 65 63 69 66 69 63 20 66 6f 72 6d 61 74 20 64 6f 63 75 6d 65 6e 74 r.has.a.specific.format.document
19960 65 64 20 69 6e 0a 20 20 3b 3b 20 20 20 20 20 20 20 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d ed.in...;;.......gptel-bedrock--
19980 70 61 72 73 65 2d 68 65 61 64 65 72 73 0a 20 20 3b 3b 20 20 20 20 62 2e 20 50 61 79 6c 6f 61 64 parse-headers...;;....b..Payload
199a0 3a 20 54 68 65 20 6d 61 69 6e 20 6d 65 73 73 61 67 65 20 63 6f 6e 74 65 6e 74 2c 20 61 6c 73 6f :.The.main.message.content,.also
199c0 20 6f 66 20 76 61 72 69 61 62 6c 65 20 6c 65 6e 67 74 68 2e 20 4c 65 6e 67 74 68 20 63 61 6e 20 .of.variable.length..Length.can.
199e0 62 65 20 63 6f 6d 70 75 74 65 64 20 66 72 6f 6d 0a 20 20 3b 3b 20 20 20 20 20 20 20 74 68 65 20 be.computed.from...;;.......the.
19a00 70 72 65 6c 75 64 65 20 66 69 65 6c 64 73 20 62 79 20 73 75 62 74 72 61 63 74 69 6e 67 20 74 68 prelude.fields.by.subtracting.th
19a20 65 20 70 72 65 6c 75 64 65 20 6c 65 6e 67 74 68 2c 20 68 65 61 64 65 72 73 20 6c 65 6e 67 74 68 e.prelude.length,.headers.length
19a40 2c 20 61 6e 64 20 6d 65 73 73 61 67 65 20 43 52 43 0a 20 20 3b 3b 20 20 20 20 20 20 20 6c 65 6e ,.and.message.CRC...;;.......len
19a60 67 74 68 20 66 72 6f 6d 20 74 68 65 20 74 6f 74 61 6c 2e 0a 20 20 3b 3b 20 33 2e 20 4d 65 73 73 gth.from.the.total....;;.3..Mess
19a80 61 67 65 20 43 52 43 20 28 34 20 62 79 74 65 73 29 3a 20 41 20 34 2d 62 79 74 65 20 43 52 43 20 age.CRC.(4.bytes):.A.4-byte.CRC.
19aa0 74 6f 20 76 61 6c 69 64 61 74 65 20 74 68 65 20 69 6e 74 65 67 72 69 74 79 20 6f 66 20 74 68 65 to.validate.the.integrity.of.the
19ac0 20 65 6e 74 69 72 65 20 6d 65 73 73 61 67 65 2e 0a 0a 20 20 3b 3b 20 28 70 6f 69 6e 74 2d 6d 61 .entire.message.....;;.(point-ma
19ae0 78 29 20 69 73 20 74 68 65 20 70 6f 73 69 74 69 6f 6e 20 61 66 74 65 72 20 74 68 65 20 6c 61 73 x).is.the.position.after.the.las
19b00 74 20 63 68 61 72 61 63 74 65 72 2c 20 68 65 6e 63 65 20 74 68 65 20 75 73 65 20 6f 66 20 3e 3d t.character,.hence.the.use.of.>=
19b20 20 61 6e 64 20 6e 6f 74 20 3e 20 62 65 6c 6f 77 0a 20 20 28 77 68 65 6e 20 28 3e 3d 20 28 2d 20 .and.not.>.below...(when.(>=.(-.
19b40 28 70 6f 69 6e 74 2d 6d 61 78 29 20 28 70 6f 69 6e 74 29 29 20 31 32 29 0a 20 20 20 20 28 6c 65 (point-max).(point)).12).....(le
19b60 74 2a 20 28 28 70 72 65 6c 75 64 65 2d 73 74 61 72 74 20 28 70 6f 69 6e 74 29 29 0a 20 20 20 20 t*.((prelude-start.(point)).....
19b80 20 20 20 20 20 20 20 28 70 72 65 6c 75 64 65 2d 6c 65 6e 67 74 68 20 31 32 29 0a 20 20 20 20 20 .......(prelude-length.12)......
19ba0 20 20 20 20 20 20 28 70 72 65 6c 75 64 65 2d 65 6e 64 20 28 2b 20 70 72 65 6c 75 64 65 2d 73 74 ......(prelude-end.(+.prelude-st
19bc0 61 72 74 20 70 72 65 6c 75 64 65 2d 6c 65 6e 67 74 68 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 art.prelude-length))............
19be0 28 70 72 65 6c 75 64 65 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 2d 6e 6f 2d 70 72 (prelude.(buffer-substring-no-pr
19c00 6f 70 65 72 74 69 65 73 20 70 72 65 6c 75 64 65 2d 73 74 61 72 74 20 70 72 65 6c 75 64 65 2d 65 operties.prelude-start.prelude-e
19c20 6e 64 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 74 6f 74 61 6c 2d 6c 65 6e 67 74 68 20 28 67 nd))............(total-length.(g
19c40 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 73 75 ptel-bedrock--bytes-to-int32.(su
19c60 62 73 74 72 69 6e 67 20 70 72 65 6c 75 64 65 20 30 20 34 29 29 29 0a 20 20 20 20 20 20 20 20 20 bstring.prelude.0.4)))..........
19c80 20 20 28 68 65 61 64 65 72 73 2d 6c 65 6e 67 74 68 20 28 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b ..(headers-length.(gptel-bedrock
19ca0 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 70 72 65 6c --bytes-to-int32.(substring.prel
19cc0 75 64 65 20 34 20 38 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 68 65 61 64 65 72 73 2d 73 ude.4.8)))............(headers-s
19ce0 74 61 72 74 20 70 72 65 6c 75 64 65 2d 65 6e 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 68 65 tart.prelude-end)............(he
19d00 61 64 65 72 73 2d 65 6e 64 20 28 2b 20 68 65 61 64 65 72 73 2d 73 74 61 72 74 20 68 65 61 64 65 aders-end.(+.headers-start.heade
19d20 72 73 2d 6c 65 6e 67 74 68 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 68 65 61 64 65 72 73 20 70 rs-length))............headers.p
19d40 61 79 6c 6f 61 64 29 0a 20 20 20 20 20 20 3b 3b 20 57 65 20 64 6f 6e 27 74 20 76 61 6c 69 64 61 ayload).......;;.We.don't.valida
19d60 74 65 20 65 69 74 68 65 72 20 43 52 43 20 62 65 63 61 75 73 65 20 69 73 6e 27 74 20 74 68 61 74 te.either.CRC.because.isn't.that
19d80 20 77 68 61 74 20 74 68 65 20 6e 65 74 77 6f 72 6b 69 6e 67 20 73 74 61 63 6b 20 69 73 20 66 6f .what.the.networking.stack.is.fo
19da0 72 3f 0a 0a 20 20 20 20 20 20 28 77 68 65 6e 20 28 3e 3d 20 28 70 6f 69 6e 74 2d 6d 61 78 29 20 r?........(when.(>=.(point-max).
19dc0 28 2b 20 70 72 65 6c 75 64 65 2d 73 74 61 72 74 20 74 6f 74 61 6c 2d 6c 65 6e 67 74 68 29 29 0a (+.prelude-start.total-length)).
19de0 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 68 65 61 64 65 72 73 2d 73 74 61 72 74 ........(goto-char.headers-start
19e00 29 0a 20 20 20 20 20 20 20 20 28 73 65 74 71 20 68 65 61 64 65 72 73 20 28 67 70 74 65 6c 2d 62 ).........(setq.headers.(gptel-b
19e20 65 64 72 6f 63 6b 2d 2d 70 61 72 73 65 2d 68 65 61 64 65 72 73 20 28 62 75 66 66 65 72 2d 73 75 edrock--parse-headers.(buffer-su
19e40 62 73 74 72 69 6e 67 20 28 70 6f 69 6e 74 29 20 68 65 61 64 65 72 73 2d 65 6e 64 29 29 29 0a 20 bstring.(point).headers-end)))..
19e60 20 20 20 20 20 20 20 28 63 6c 2d 61 73 73 65 72 74 20 28 65 71 75 61 6c 20 28 61 73 73 6f 63 2d .......(cl-assert.(equal.(assoc-
19e80 64 65 66 61 75 6c 74 20 22 3a 6d 65 73 73 61 67 65 2d 74 79 70 65 22 20 68 65 61 64 65 72 73 29 default.":message-type".headers)
19ea0 20 22 65 76 65 6e 74 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 20 22 ."event")....................t."
19ec0 55 6e 6b 6e 6f 77 6e 20 6d 65 73 73 61 67 65 20 74 79 70 65 20 25 53 3b 20 65 78 70 65 63 74 65 Unknown.message.type.%S;.expecte
19ee0 64 20 25 53 22 29 0a 20 20 20 20 20 20 20 20 28 63 6c 2d 61 73 73 65 72 74 20 28 65 71 75 61 6c d.%S").........(cl-assert.(equal
19f00 20 28 61 73 73 6f 63 2d 64 65 66 61 75 6c 74 20 22 3a 63 6f 6e 74 65 6e 74 2d 74 79 70 65 22 20 .(assoc-default.":content-type".
19f20 68 65 61 64 65 72 73 29 20 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 6a 73 6f 6e 22 29 0a 20 20 20 headers)."application/json")....
19f40 20 20 20 20 20 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 63 6f ................t."Unexpected.co
19f60 6e 74 65 6e 74 2d 74 79 70 65 20 25 53 20 69 73 20 6e 6f 74 20 25 53 22 29 0a 0a 20 20 20 20 20 ntent-type.%S.is.not.%S").......
19f80 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 68 65 61 64 65 72 73 2d 65 6e 64 29 0a 20 20 20 20 20 ...(goto-char.headers-end)......
19fa0 20 20 20 28 73 65 74 71 20 70 61 79 6c 6f 61 64 20 28 67 70 74 65 6c 2d 2d 6a 73 6f 6e 2d 72 65 ...(setq.payload.(gptel--json-re
19fc0 61 64 29 29 0a 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 6d 65 73 73 61 67 65 2d 63 72 63 ad)).........(let*.((message-crc
19fe0 20 34 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 61 79 6c 6f 61 64 2d 6c 65 6e 67 .4)................(payload-leng
1a000 74 68 20 28 2d 20 74 6f 74 61 6c 2d 6c 65 6e 67 74 68 20 68 65 61 64 65 72 73 2d 6c 65 6e 67 74 th.(-.total-length.headers-lengt
1a020 68 20 70 72 65 6c 75 64 65 2d 6c 65 6e 67 74 68 20 6d 65 73 73 61 67 65 2d 63 72 63 29 29 29 0a h.prelude-length.message-crc))).
1a040 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 61 73 73 65 72 74 20 28 3d 20 28 2d 20 28 70 6f 69 6e ..........(cl-assert.(=.(-.(poin
1a060 74 29 20 68 65 61 64 65 72 73 2d 65 6e 64 29 20 70 61 79 6c 6f 61 64 2d 6c 65 6e 67 74 68 29 0a t).headers-end).payload-length).
1a080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 20 22 55 6e 65 78 70 65 63 74 .....................t."Unexpect
1a0a0 65 64 20 70 61 79 6c 6f 61 64 20 6c 65 6e 67 74 68 20 25 64 3b 20 65 78 70 65 63 74 65 64 20 25 ed.payload.length.%d;.expected.%
1a0c0 64 2e 22 29 29 0a 0a 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 2b 20 70 72 65 d."))..........(goto-char.(+.pre
1a0e0 6c 75 64 65 2d 73 74 61 72 74 20 74 6f 74 61 6c 2d 6c 65 6e 67 74 68 29 29 0a 20 20 20 20 20 20 lude-start.total-length)).......
1a100 20 20 60 28 3a 68 65 61 64 65 72 73 20 2c 68 65 61 64 65 72 73 20 3a 70 61 79 6c 6f 61 64 20 2c ..`(:headers.,headers.:payload.,
1a120 70 61 79 6c 6f 61 64 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 62 65 64 72 6f payload)))))..(defun.gptel-bedro
1a140 63 6b 2d 2d 70 61 72 73 65 2d 68 65 61 64 65 72 73 20 28 68 65 61 64 65 72 73 2d 64 61 74 61 29 ck--parse-headers.(headers-data)
1a160 0a 20 20 22 50 61 72 73 65 20 48 45 41 44 45 52 53 2d 44 41 54 41 20 69 6e 74 6f 20 61 6c 69 73 ..."Parse.HEADERS-DATA.into.alis
1a180 74 20 6f 66 20 28 4e 41 4d 45 20 2e 20 56 41 4c 55 45 29 2e 0a 4b 65 79 73 20 61 72 65 20 73 74 t.of.(NAME...VALUE)..Keys.are.st
1a1a0 72 69 6e 67 2d 76 61 6c 75 65 64 2c 20 6c 6f 77 65 72 2d 63 61 73 65 64 20 6e 61 6d 65 73 2e 22 ring-valued,.lower-cased.names."
1a1c0 0a 20 20 3b 3b 20 48 65 61 64 65 72 20 77 69 72 65 20 66 6f 72 6d 61 74 3a 0a 20 20 3b 3b 20 20 ...;;.Header.wire.format:...;;..
1a1e0 20 31 2e 20 48 65 61 64 65 72 20 4e 61 6d 65 20 42 79 74 65 20 4c 65 6e 67 74 68 20 28 31 20 62 .1..Header.Name.Byte.Length.(1.b
1a200 79 74 65 29 3a 20 53 70 65 63 69 66 69 65 73 20 74 68 65 20 6c 65 6e 67 74 68 20 6f 66 20 74 68 yte):.Specifies.the.length.of.th
1a220 65 20 68 65 61 64 65 72 20 6e 61 6d 65 2e 0a 20 20 3b 3b 20 20 20 32 2e 20 48 65 61 64 65 72 20 e.header.name....;;...2..Header.
1a240 4e 61 6d 65 20 28 53 74 72 69 6e 67 29 20 28 56 61 72 69 61 62 6c 65 20 6c 65 6e 67 74 68 29 3a Name.(String).(Variable.length):
1a260 20 43 6f 6e 74 61 69 6e 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 68 65 61 64 65 72 .Contains.the.name.of.the.header
1a280 2e 0a 20 20 3b 3b 20 20 20 33 2e 20 48 65 61 64 65 72 20 56 61 6c 75 65 20 54 79 70 65 20 28 31 ....;;...3..Header.Value.Type.(1
1a2a0 20 62 79 74 65 29 3a 20 49 64 65 6e 74 69 66 69 65 73 20 74 68 65 20 74 79 70 65 20 6f 66 20 74 .byte):.Identifies.the.type.of.t
1a2c0 68 65 20 68 65 61 64 65 72 20 76 61 6c 75 65 2e 0a 20 20 3b 3b 20 20 20 34 2e 20 56 61 6c 75 65 he.header.value....;;...4..Value
1a2e0 20 53 74 72 69 6e 67 20 42 79 74 65 20 4c 65 6e 67 74 68 20 28 32 20 62 79 74 65 73 29 3a 20 49 .String.Byte.Length.(2.bytes):.I
1a300 6e 64 69 63 61 74 65 73 20 74 68 65 20 6c 65 6e 67 74 68 20 6f 66 20 74 68 65 20 76 61 6c 75 65 ndicates.the.length.of.the.value
1a320 20 73 74 72 69 6e 67 2e 0a 20 20 3b 3b 20 20 20 35 2e 20 56 61 6c 75 65 20 28 56 61 72 69 61 62 .string....;;...5..Value.(Variab
1a340 6c 65 20 6c 65 6e 67 74 68 29 3a 20 48 6f 6c 64 73 20 74 68 65 20 61 63 74 75 61 6c 20 76 61 6c le.length):.Holds.the.actual.val
1a360 75 65 20 62 79 74 65 73 0a 20 20 28 6c 65 74 20 28 28 70 6f 73 20 30 29 20 28 6d 61 78 20 28 6c ue.bytes...(let.((pos.0).(max.(l
1a380 65 6e 67 74 68 20 68 65 61 64 65 72 73 2d 64 61 74 61 29 29 20 68 65 61 64 65 72 73 29 0a 20 20 ength.headers-data)).headers)...
1a3a0 20 20 28 63 6c 2d 66 6c 65 74 20 28 28 70 6f 73 2b 2b 20 28 29 20 28 70 72 6f 67 31 20 70 6f 73 ..(cl-flet.((pos++.().(prog1.pos
1a3c0 20 28 63 6c 2d 69 6e 63 66 20 70 6f 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 .(cl-incf.pos)))...............(
1a3e0 2b 2b 70 6f 73 20 28 6e 29 20 28 63 6c 2d 69 6e 63 66 20 70 6f 73 20 6e 29 29 0a 20 20 20 20 20 ++pos.(n).(cl-incf.pos.n))......
1a400 20 20 20 20 20 20 20 20 20 28 75 74 66 38 20 28 75 6e 69 62 79 74 65 2d 73 74 72 69 6e 67 29 20 .........(utf8.(unibyte-string).
1a420 28 64 65 63 6f 64 65 2d 63 6f 64 69 6e 67 2d 73 74 72 69 6e 67 20 75 6e 69 62 79 74 65 2d 73 74 (decode-coding-string.unibyte-st
1a440 72 69 6e 67 20 27 75 74 66 2d 38 20 74 29 29 29 0a 20 20 20 20 20 20 28 77 68 69 6c 65 20 28 3c ring.'utf-8.t))).......(while.(<
1a460 20 70 6f 73 20 6d 61 78 29 0a 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 6e 61 6d 65 2d 6c .pos.max).........(let*.((name-l
1a480 65 6e 20 28 61 72 65 66 20 68 65 61 64 65 72 73 2d 64 61 74 61 20 28 70 6f 73 2b 2b 29 29 29 0a en.(aref.headers-data.(pos++))).
1a4a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 61 6d 65 20 28 73 75 62 73 74 72 69 6e 67 20 ...............(name.(substring.
1a4c0 68 65 61 64 65 72 73 2d 64 61 74 61 20 70 6f 73 20 28 2b 2b 70 6f 73 20 6e 61 6d 65 2d 6c 65 6e headers-data.pos.(++pos.name-len
1a4e0 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 79 70 65 20 28 61 72 65 66 20 68 )))................(type.(aref.h
1a500 65 61 64 65 72 73 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 eaders-data.(pos++)))...........
1a520 20 20 20 20 20 28 76 61 6c 75 65 2d 6c 65 6e 20 28 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d .....(value-len.(gptel-bedrock--
1a540 62 79 74 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 bytes-to-int16.(substring.header
1a560 73 2d 64 61 74 61 20 70 6f 73 20 28 2b 2b 70 6f 73 20 32 29 29 29 29 0a 20 20 20 20 20 20 20 20 s-data.pos.(++pos.2)))).........
1a580 20 20 20 20 20 20 20 28 76 61 6c 75 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 .......(value.................(p
1a5a0 63 61 73 65 20 74 79 70 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 48 case.type...................;;.H
1a5c0 65 61 64 65 72 20 74 79 70 65 73 20 66 72 6f 6d 20 68 74 74 70 73 3a 2f 2f 61 77 73 6c 61 62 73 eader.types.from.https://awslabs
1a5e0 2e 67 69 74 68 75 62 2e 69 6f 2f 61 77 73 2d 63 72 74 2d 70 79 74 68 6f 6e 2f 61 70 69 2f 65 76 .github.io/aws-crt-python/api/ev
1a600 65 6e 74 73 74 72 65 61 6d 2e 68 74 6d 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 entstream.html..................
1a620 20 28 30 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 31 20 3a 6a 73 6f .(0.t)...................(1.:jso
1a640 6e 2d 66 61 6c 73 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 32 20 28 6c n-false)...................(2.(l
1a660 65 74 20 28 28 72 65 73 20 28 61 72 65 66 20 68 65 61 64 65 72 73 2d 64 61 74 61 20 28 70 6f 73 et.((res.(aref.headers-data.(pos
1a680 2b 2b 29 29 29 29 20 3b 20 69 6e 74 38 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ++)))).;.int8...................
1a6a0 20 20 20 20 20 28 69 66 20 28 3e 20 72 65 73 20 31 32 37 29 20 28 2d 20 72 65 73 20 32 35 36 29 .....(if.(>.res.127).(-.res.256)
1a6c0 20 72 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 33 20 28 67 70 .res)))...................(3.(gp
1a6e0 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 73 75 62 tel-bedrock--bytes-to-int16.(sub
1a700 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 32 string.headers-data.pos.(++pos.2
1a720 29 29 29 29 20 3b 20 69 6e 74 31 36 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 )))).;.int16...................(
1a740 34 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 4.(gptel-bedrock--bytes-to-int32
1a760 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 20 28 2b 2b .(substring.headers-data.pos.(++
1a780 70 6f 73 20 34 29 29 29 29 20 3b 20 69 6e 74 33 32 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 pos.4)))).;.int32...............
1a7a0 20 20 20 20 28 35 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 ....(5.(gptel-bedrock--bytes-to-
1a7c0 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 6f int64.(substring.headers-data.po
1a7e0 73 20 28 2b 2b 70 6f 73 20 38 29 29 29 29 20 3b 20 69 6e 74 36 34 0a 20 20 20 20 20 20 20 20 20 s.(++pos.8)))).;.int64..........
1a800 20 20 20 20 20 20 20 20 20 28 36 20 28 73 75 62 73 74 72 69 6e 67 20 68 65 61 64 65 72 73 2d 64 .........(6.(substring.headers-d
1a820 61 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 20 20 20 20 20 ata.pos.(++pos.value-len))).....
1a840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 72 61 77 20 62 79 74 65 73 0a ....................;.raw.bytes.
1a860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 37 20 28 75 74 66 38 20 28 73 75 62 73 ..................(7.(utf8.(subs
1a880 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 61 tring.headers-data.pos.(++pos.va
1a8a0 6c 75 65 2d 6c 65 6e 29 29 29 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 75 lue-len))))..................;.u
1a8c0 74 66 38 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 20 28 38 20 tf8.string...................(8.
1a8e0 28 64 65 63 6f 64 65 2d 74 69 6d 65 20 20 20 20 20 20 20 3b 20 36 34 20 62 69 74 20 69 6e 74 20 (decode-time.......;.64.bit.int.
1a900 77 69 74 68 20 73 65 63 6f 6e 64 73 20 73 69 6e 63 65 20 74 68 65 20 55 6e 69 78 20 65 70 6f 63 with.seconds.since.the.Unix.epoc
1a920 68 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 2d 62 h.......................(gptel-b
1a940 65 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 edrock--bytes-to-int64.(substrin
1a960 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 38 29 29 29 20 74 g.headers-data.pos.(++pos.8))).t
1a980 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 39 20 28 67 70 74 65 6c 2d 62 ))...................(9.(gptel-b
1a9a0 65 64 72 6f 63 6b 2d 2d 62 79 74 65 73 2d 74 6f 2d 75 75 69 64 20 3b 20 31 36 20 62 79 74 65 20 edrock--bytes-to-uuid.;.16.byte.
1a9c0 55 55 49 44 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 75 62 73 UUID.......................(subs
1a9e0 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 31 36 tring.headers-data.pos.(++pos.16
1aa00 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 5f 20 28 65 72 72 6f 72 ))))...................(_.(error
1aa20 20 22 55 6e 6b 6e 6f 77 6e 20 68 65 61 64 65 72 20 74 79 70 65 3a 20 25 64 22 20 74 79 70 65 29 ."Unknown.header.type:.%d".type)
1aa40 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 63 6f 6e 73 20 28 64 6f 77 6e ))))...........(push.(cons.(down
1aa60 63 61 73 65 20 28 75 74 66 38 20 6e 61 6d 65 29 29 20 76 61 6c 75 65 29 20 68 65 61 64 65 72 73 case.(utf8.name)).value).headers
1aa80 29 29 29 0a 20 20 20 20 20 20 28 63 6c 2d 61 73 73 65 72 74 20 28 3d 20 70 6f 73 20 6d 61 78 29 ))).......(cl-assert.(=.pos.max)
1aaa0 20 74 20 22 48 65 61 64 65 72 73 20 64 69 64 20 6e 6f 74 20 70 61 72 73 65 20 63 6c 65 61 6e 6c .t."Headers.did.not.parse.cleanl
1aac0 79 2e 20 70 6f 73 3d 25 64 20 20 68 65 61 64 65 72 2d 6c 65 6e 3d 25 64 22 29 0a 20 20 20 20 20 y..pos=%d..header-len=%d")......
1aae0 20 68 65 61 64 65 72 73 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 62 65 64 72 6f 63 .headers)))..(defun.gptel-bedroc
1ab00 6b 2d 2d 62 79 74 65 73 2d 74 6f 2d 69 6e 74 31 36 20 28 62 79 74 65 73 29 0a 20 20 22 43 6f 6e k--bytes-to-int16.(bytes)..."Con
1ab20 76 65 72 74 20 32 2d 62 79 74 65 20 73 74 72 69 6e 67 20 42 59 54 45 53 20 74 6f 20 62 69 67 2d vert.2-byte.string.BYTES.to.big-
1ab40 65 6e 64 69 61 6e 20 73 69 67 6e 65 64 20 69 6e 74 65 67 65 72 2e 22 0a 20 20 28 6c 65 74 20 28 endian.signed.integer."...(let.(
1ab60 28 62 30 20 28 6c 6f 67 61 6e 64 20 28 61 72 65 66 20 62 79 74 65 73 20 30 29 20 32 35 35 29 29 (b0.(logand.(aref.bytes.0).255))
1ab80 0a 20 20 20 20 20 20 20 20 28 62 31 20 28 6c 6f 67 61 6e 64 20 28 61 72 65 66 20 62 79 74 65 73 .........(b1.(logand.(aref.bytes
1aba0 20 31 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 .1).255))).....(let.((result.(+.
1abc0 28 61 73 68 20 62 30 20 38 29 20 62 31 29 29 29 0a 20 20 20 20 20 20 28 69 66 20 28 3e 3d 20 62 (ash.b0.8).b1))).......(if.(>=.b
1abe0 30 20 23 78 38 30 29 20 28 2d 20 72 65 73 75 6c 74 20 28 61 73 68 20 31 20 31 36 29 29 20 72 65 0.#x80).(-.result.(ash.1.16)).re
1ac00 73 75 6c 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 sult))))..(defun.gptel-bedrock--
1ac20 62 79 74 65 73 2d 74 6f 2d 69 6e 74 33 32 20 28 62 79 74 65 73 29 0a 20 20 22 43 6f 6e 76 65 72 bytes-to-int32.(bytes)..."Conver
1ac40 74 20 34 2d 62 79 74 65 20 73 74 72 69 6e 67 20 42 59 54 45 53 20 74 6f 20 62 69 67 2d 65 6e 64 t.4-byte.string.BYTES.to.big-end
1ac60 69 61 6e 20 73 69 67 6e 65 64 20 69 6e 74 65 67 65 72 2e 22 0a 20 20 28 6c 65 74 20 28 28 62 30 ian.signed.integer."...(let.((b0
1ac80 20 28 6c 6f 67 61 6e 64 20 28 61 72 65 66 20 62 79 74 65 73 20 30 29 20 32 35 35 29 29 0a 20 20 .(logand.(aref.bytes.0).255))...
1aca0 20 20 20 20 20 20 28 62 31 20 28 6c 6f 67 61 6e 64 20 28 61 72 65 66 20 62 79 74 65 73 20 31 29 ......(b1.(logand.(aref.bytes.1)
1acc0 20 32 35 35 29 29 0a 20 20 20 20 20 20 20 20 28 62 32 20 28 6c 6f 67 61 6e 64 20 28 61 72 65 66 .255)).........(b2.(logand.(aref
1ace0 20 62 79 74 65 73 20 32 29 20 32 35 35 29 29 0a 20 20 20 20 20 20 20 20 28 62 33 20 28 6c 6f 67 .bytes.2).255)).........(b3.(log
1ad00 61 6e 64 20 28 61 72 65 66 20 62 79 74 65 73 20 33 29 20 32 35 35 29 29 29 0a 20 20 20 20 28 6c and.(aref.bytes.3).255))).....(l
1ad20 65 74 20 28 28 72 65 73 75 6c 74 20 28 2b 20 28 61 73 68 20 62 30 20 32 34 29 20 28 61 73 68 20 et.((result.(+.(ash.b0.24).(ash.
1ad40 62 31 20 31 36 29 20 28 61 73 68 20 62 32 20 38 29 20 62 33 29 29 29 0a 20 20 20 20 20 20 28 69 b1.16).(ash.b2.8).b3))).......(i
1ad60 66 20 28 3e 3d 20 62 30 20 23 78 38 30 29 20 28 2d 20 72 65 73 75 6c 74 20 28 61 73 68 20 31 20 f.(>=.b0.#x80).(-.result.(ash.1.
1ad80 33 32 29 29 20 72 65 73 75 6c 74 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 62 65 32)).result))))..(defun.gptel-be
1ada0 64 72 6f 63 6b 2d 2d 62 79 74 65 73 2d 74 6f 2d 69 6e 74 36 34 20 28 62 79 74 65 73 29 0a 20 20 drock--bytes-to-int64.(bytes)...
1adc0 22 43 6f 6e 76 65 72 74 20 38 2d 62 79 74 65 20 73 74 72 69 6e 67 20 42 59 54 45 53 20 74 6f 20 "Convert.8-byte.string.BYTES.to.
1ade0 62 69 67 2d 65 6e 64 69 61 6e 20 73 69 67 6e 65 64 20 69 6e 74 65 67 65 72 2e 22 0a 20 20 28 6c big-endian.signed.integer."...(l
1ae00 65 74 20 28 28 62 30 20 28 6c 6f 67 61 6e 64 20 28 61 72 65 66 20 62 79 74 65 73 20 30 29 20 32 et.((b0.(logand.(aref.bytes.0).2
1ae20 35 35 29 29 0a 20 20 20 20 20 20 20 20 28 62 31 20 28 6c 6f 67 61 6e 64 20 28 61 72 65 66 20 62 55)).........(b1.(logand.(aref.b
1ae40 79 74 65 73 20 31 29 20 32 35 35 29 29 0a 20 20 20 20 20 20 20 20 28 62 32 20 28 6c 6f 67 61 6e ytes.1).255)).........(b2.(logan
1ae60 64 20 28 61 72 65 66 20 62 79 74 65 73 20 32 29 20 32 35 35 29 29 0a 20 20 20 20 20 20 20 20 28 d.(aref.bytes.2).255)).........(
1ae80 62 33 20 28 6c 6f 67 61 6e 64 20 28 61 72 65 66 20 62 79 74 65 73 20 33 29 20 32 35 35 29 29 0a b3.(logand.(aref.bytes.3).255)).
1aea0 20 20 20 20 20 20 20 20 28 62 34 20 28 6c 6f 67 61 6e 64 20 28 61 72 65 66 20 62 79 74 65 73 20 ........(b4.(logand.(aref.bytes.
1aec0 34 29 20 32 35 35 29 29 0a 20 20 20 20 20 20 20 20 28 62 35 20 28 6c 6f 67 61 6e 64 20 28 61 72 4).255)).........(b5.(logand.(ar
1aee0 65 66 20 62 79 74 65 73 20 35 29 20 32 35 35 29 29 0a 20 20 20 20 20 20 20 20 28 62 36 20 28 6c ef.bytes.5).255)).........(b6.(l
1af00 6f 67 61 6e 64 20 28 61 72 65 66 20 62 79 74 65 73 20 36 29 20 32 35 35 29 29 0a 20 20 20 20 20 ogand.(aref.bytes.6).255))......
1af20 20 20 20 28 62 37 20 28 6c 6f 67 61 6e 64 20 28 61 72 65 66 20 62 79 74 65 73 20 37 29 20 32 35 ...(b7.(logand.(aref.bytes.7).25
1af40 35 29 29 29 0a 20 20 20 20 28 6c 65 74 20 28 28 72 65 73 75 6c 74 2d 75 36 33 20 28 2b 20 28 61 5))).....(let.((result-u63.(+.(a
1af60 73 68 20 28 6c 6f 67 61 6e 64 20 62 30 20 23 78 37 66 29 20 35 36 29 20 28 61 73 68 20 62 31 20 sh.(logand.b0.#x7f).56).(ash.b1.
1af80 34 38 29 0a 20 20 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 73 48)..........................(as
1afa0 68 20 62 32 20 34 30 29 20 28 61 73 68 20 62 33 20 33 32 29 20 28 61 73 68 20 62 34 20 32 34 29 h.b2.40).(ash.b3.32).(ash.b4.24)
1afc0 20 28 61 73 68 20 62 35 20 31 36 29 20 28 61 73 68 20 62 36 20 38 29 20 62 37 29 29 29 0a 20 20 .(ash.b5.16).(ash.b6.8).b7)))...
1afe0 20 20 20 20 28 69 66 20 28 3e 3d 20 62 30 20 23 78 38 30 29 0a 20 20 20 20 20 20 20 20 20 20 28 ....(if.(>=.b0.#x80)...........(
1b000 2d 20 72 65 73 75 6c 74 2d 75 36 33 20 28 61 73 68 20 31 20 36 33 29 29 0a 20 20 20 20 20 20 20 -.result-u63.(ash.1.63))........
1b020 20 72 65 73 75 6c 74 2d 75 36 33 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 62 65 .result-u63))))..(defun.gptel-be
1b040 64 72 6f 63 6b 2d 2d 62 79 74 65 73 2d 74 6f 2d 75 75 69 64 20 28 62 79 74 65 73 29 0a 20 20 22 drock--bytes-to-uuid.(bytes)..."
1b060 43 6f 6e 76 65 72 74 20 61 20 31 36 2d 62 79 74 65 20 75 6e 69 62 79 74 65 20 42 59 54 45 53 20 Convert.a.16-byte.unibyte.BYTES.
1b080 74 6f 20 61 20 33 36 20 63 68 61 72 61 63 74 65 72 20 55 55 49 44 20 73 74 72 69 6e 67 2e 22 0a to.a.36.character.UUID.string.".
1b0a0 20 20 28 75 6e 6c 65 73 73 20 28 61 6e 64 20 28 73 74 72 69 6e 67 70 20 62 79 74 65 73 29 20 28 ..(unless.(and.(stringp.bytes).(
1b0c0 3d 20 28 6c 65 6e 67 74 68 20 62 79 74 65 73 29 20 31 36 29 29 0a 20 20 20 20 28 65 72 72 6f 72 =.(length.bytes).16)).....(error
1b0e0 20 22 49 6e 70 75 74 20 6d 75 73 74 20 62 65 20 61 20 31 36 2d 62 79 74 65 20 75 6e 69 62 79 74 ."Input.must.be.a.16-byte.unibyt
1b100 65 20 73 74 72 69 6e 67 22 29 29 0a 20 20 28 6c 65 74 20 28 28 68 65 78 20 28 6d 61 70 63 6f 6e e.string"))...(let.((hex.(mapcon
1b120 63 61 74 20 28 6c 61 6d 62 64 61 20 28 69 29 20 28 66 6f 72 6d 61 74 20 22 25 30 32 78 22 20 28 cat.(lambda.(i).(format."%02x".(
1b140 61 72 65 66 20 62 79 74 65 73 20 69 29 29 29 20 28 6e 75 6d 62 65 72 2d 73 65 71 75 65 6e 63 65 aref.bytes.i))).(number-sequence
1b160 20 30 20 31 35 29 20 22 22 29 29 29 0a 20 20 20 20 28 66 6f 72 6d 61 74 20 22 25 73 2d 25 73 2d .0.15).""))).....(format."%s-%s-
1b180 25 73 2d 25 73 2d 25 73 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 73 75 62 73 74 72 69 6e 67 %s-%s-%s".............(substring
1b1a0 20 68 65 78 20 30 20 38 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 73 75 62 73 74 72 69 6e 67 .hex.0.8).............(substring
1b1c0 20 68 65 78 20 38 20 31 32 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 73 75 62 73 74 72 69 6e .hex.8.12).............(substrin
1b1e0 67 20 68 65 78 20 31 32 20 31 36 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 73 75 62 73 74 72 g.hex.12.16).............(substr
1b200 69 6e 67 20 68 65 78 20 31 36 20 32 30 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 73 75 62 73 ing.hex.16.20).............(subs
1b220 74 72 69 6e 67 20 68 65 78 20 32 30 20 33 32 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 tring.hex.20.32))))..(defun.gpte
1b240 6c 2d 62 65 64 72 6f 63 6b 2d 2d 61 73 73 65 6d 62 6c 65 2d 63 6f 6e 74 65 6e 74 2d 62 6c 6f 63 l-bedrock--assemble-content-bloc
1b260 6b 73 20 28 65 76 65 6e 74 73 29 0a 20 20 22 42 75 69 6c 64 20 61 20 63 6f 6d 70 6c 65 74 65 64 ks.(events)..."Build.a.completed
1b280 20 70 72 6f 6d 70 74 20 6f 62 6a 65 63 74 20 63 6f 6e 74 61 69 6e 65 64 20 66 72 6f 6d 20 45 56 .prompt.object.contained.from.EV
1b2a0 45 4e 54 53 2e 0a 45 56 45 4e 54 53 20 73 68 6f 75 6c 64 20 62 65 20 61 20 6c 69 73 74 20 6f 66 ENTS..EVENTS.should.be.a.list.of
1b2c0 20 6d 65 73 73 61 67 65 53 74 61 72 74 2c 20 63 6f 6e 74 65 6e 74 42 6c 6f 63 6b 53 74 61 72 74 .messageStart,.contentBlockStart
1b2e0 2c 0a 63 6f 6e 74 65 6e 74 42 6c 6f 63 6b 44 65 6c 74 61 2c 20 61 6e 64 20 63 6f 6e 74 65 6e 74 ,.contentBlockDelta,.and.content
1b300 42 6c 6f 63 6b 53 74 6f 70 20 73 74 72 65 61 6d 20 6d 65 73 73 61 67 65 73 20 61 73 0a 72 65 74 BlockStop.stream.messages.as.ret
1b320 75 72 6e 65 64 20 62 79 20 60 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 70 61 72 73 65 2d 73 urned.by.`gptel-bedrock--parse-s
1b340 74 72 65 61 6d 2d 6d 65 73 73 61 67 65 27 2c 20 69 6e 20 74 68 65 20 6f 72 64 65 72 0a 72 65 63 tream-message',.in.the.order.rec
1b360 65 69 76 65 64 2e 22 0a 20 20 28 6c 65 74 20 28 28 62 6c 6f 63 6b 73 20 28 6d 61 6b 65 2d 68 61 eived."...(let.((blocks.(make-ha
1b380 73 68 2d 74 61 62 6c 65 20 3a 74 65 73 74 20 23 27 65 71 6c 29 29 0a 20 20 20 20 20 20 20 20 72 sh-table.:test.#'eql)).........r
1b3a0 6f 6c 65 20 63 6f 6e 74 65 6e 74 73 29 0a 20 20 20 20 28 64 6f 6c 69 73 74 20 28 65 76 65 6e 74 ole.contents).....(dolist.(event
1b3c0 20 65 76 65 6e 74 73 29 0a 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 68 65 61 64 65 72 73 20 28 .events).......(let*.((headers.(
1b3e0 70 6c 69 73 74 2d 67 65 74 20 65 76 65 6e 74 20 3a 68 65 61 64 65 72 73 29 29 0a 20 20 20 20 20 plist-get.event.:headers))......
1b400 20 20 20 20 20 20 20 20 28 70 61 79 6c 6f 61 64 20 28 70 6c 69 73 74 2d 67 65 74 20 65 76 65 6e ........(payload.(plist-get.even
1b420 74 20 3a 70 61 79 6c 6f 61 64 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 76 65 6e 74 t.:payload))..............(event
1b440 2d 74 79 70 65 20 28 61 73 73 6f 63 2d 64 65 66 61 75 6c 74 20 22 3a 65 76 65 6e 74 2d 74 79 70 -type.(assoc-default.":event-typ
1b460 65 22 20 68 65 61 64 65 72 73 29 29 29 0a 20 20 20 20 20 20 20 20 28 70 63 61 73 65 20 65 76 65 e".headers))).........(pcase.eve
1b480 6e 74 2d 74 79 70 65 0a 20 20 20 20 20 20 20 20 20 20 28 22 6d 65 73 73 61 67 65 53 74 61 72 74 nt-type...........("messageStart
1b4a0 22 20 28 73 65 74 71 20 72 6f 6c 65 20 28 70 6c 69 73 74 2d 67 65 74 20 70 61 79 6c 6f 61 64 20 ".(setq.role.(plist-get.payload.
1b4c0 3a 72 6f 6c 65 29 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 :role)))...........("contentBloc
1b4e0 6b 53 74 61 72 74 22 0a 20 20 20 20 20 20 20 20 20 20 20 28 70 75 74 68 61 73 68 20 28 70 6c 69 kStart"............(puthash.(pli
1b500 73 74 2d 67 65 74 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 st-get.payload.:contentBlockInde
1b520 78 29 20 28 6c 69 73 74 20 65 76 65 6e 74 29 20 62 6c 6f 63 6b 73 29 29 0a 20 20 20 20 20 20 20 x).(list.event).blocks))........
1b540 20 20 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 ...("contentBlockDelta".........
1b560 20 20 20 28 70 75 73 68 20 65 76 65 6e 74 20 28 67 65 74 68 61 73 68 20 28 70 6c 69 73 74 2d 67 ...(push.event.(gethash.(plist-g
1b580 65 74 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 20 62 et.payload.:contentBlockIndex).b
1b5a0 6c 6f 63 6b 73 29 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 locks)))...........("contentBloc
1b5c0 6b 53 74 6f 70 22 0a 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 62 6c 6f 63 6b 2d kStop"............(let*.((block-
1b5e0 69 6e 64 65 78 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 65 6e index.(plist-get.payload.:conten
1b600 74 42 6c 6f 63 6b 49 6e 64 65 78 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 tBlockIndex))...................
1b620 28 62 6c 6f 63 6b 2d 65 76 65 6e 74 73 20 28 6e 72 65 76 65 72 73 65 20 28 67 65 74 68 61 73 68 (block-events.(nreverse.(gethash
1b640 20 62 6c 6f 63 6b 2d 69 6e 64 65 78 20 62 6c 6f 63 6b 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 .block-index.blocks)))..........
1b660 20 20 20 20 20 20 20 20 20 28 73 74 61 72 74 20 28 63 61 72 20 62 6c 6f 63 6b 2d 65 76 65 6e 74 .........(start.(car.block-event
1b680 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 65 6c 74 61 73 20 28 63 s))...................(deltas.(c
1b6a0 64 72 20 62 6c 6f 63 6b 2d 65 76 65 6e 74 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 dr.block-events)))..............
1b6c0 28 77 68 65 6e 2d 6c 65 74 20 28 28 74 6f 6f 6c 2d 75 73 65 20 28 6d 61 70 2d 6e 65 73 74 65 64 (when-let.((tool-use.(map-nested
1b6e0 2d 65 6c 74 20 73 74 61 72 74 20 27 28 3a 70 61 79 6c 6f 61 64 20 3a 73 74 61 72 74 20 3a 74 6f -elt.start.'(:payload.:start.:to
1b700 6f 6c 55 73 65 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 olUse))))................(let.((
1b720 69 64 20 28 70 6c 69 73 74 2d 67 65 74 20 74 6f 6f 6c 2d 75 73 65 20 3a 74 6f 6f 6c 55 73 65 49 id.(plist-get.tool-use.:toolUseI
1b740 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 28 6e 61 6d 65 20 28 d))......................(name.(
1b760 70 6c 69 73 74 2d 67 65 74 20 74 6f 6f 6c 2d 75 73 65 20 3a 6e 61 6d 65 29 29 0a 20 20 20 20 20 plist-get.tool-use.:name))......
1b780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 70 75 74 20 28 67 70 74 65 6c 2d 2d 6a ................(input.(gptel--j
1b7a0 73 6f 6e 2d 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 20 20 son-read-string.................
1b7c0 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.........
1b7e0 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 64 ......................(lambda.(d
1b800 65 6c 74 61 29 20 28 6d 61 70 2d 6e 65 73 74 65 64 2d 65 6c 74 20 64 65 6c 74 61 20 27 28 3a 70 elta).(map-nested-elt.delta.'(:p
1b820 61 79 6c 6f 61 64 20 3a 64 65 6c 74 61 20 3a 74 6f 6f 6c 55 73 65 20 3a 69 6e 70 75 74 29 29 29 ayload.:delta.:toolUse.:input)))
1b840 0a 20 20 20 20 20 20 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 ...............................d
1b860 65 6c 74 61 73 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 eltas))))..................(push
1b880 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 3a 74 6f 6f 6c 55 73 ...................(list.:toolUs
1b8a0 65 20 28 6c 69 73 74 20 3a 69 6e 70 75 74 20 69 6e 70 75 74 20 3a 6e 61 6d 65 20 6e 61 6d 65 20 e.(list.:input.input.:name.name.
1b8c0 3a 74 6f 6f 6c 55 73 65 49 64 20 69 64 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :toolUseId.id)).................
1b8e0 20 20 63 6f 6e 74 65 6e 74 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e ..contents)))..............(when
1b900 2d 6c 65 74 20 28 28 74 65 78 74 73 20 28 64 65 6c 71 20 6e 69 6c 20 28 6d 61 70 63 61 72 20 28 -let.((texts.(delq.nil.(mapcar.(
1b920 6c 61 6d 62 64 61 20 28 64 29 20 28 6d 61 70 2d 6e 65 73 74 65 64 2d 65 6c 74 20 64 20 27 28 3a lambda.(d).(map-nested-elt.d.'(:
1b940 70 61 79 6c 6f 61 64 20 3a 64 65 6c 74 61 20 3a 74 65 78 74 29 29 29 20 64 65 6c 74 61 73 29 29 payload.:delta.:text))).deltas))
1b960 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 74 ))................(push.(list.:t
1b980 65 78 74 20 28 61 70 70 6c 79 20 23 27 63 6f 6e 63 61 74 20 74 65 78 74 73 29 29 20 63 6f 6e 74 ext.(apply.#'concat.texts)).cont
1b9a0 65 6e 74 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 43 75 72 72 65 6e 74 6c 79 ents))..............;;.Currently
1b9c0 20 77 65 20 64 69 73 63 61 72 64 20 61 6e 79 20 72 65 61 73 6f 6e 69 6e 67 20 63 6f 6e 74 65 6e .we.discard.any.reasoning.conten
1b9e0 74 20 62 75 74 20 74 68 69 73 20 77 6f 75 6c 64 20 62 65 20 74 68 65 20 73 70 6f 74 20 74 6f 20 t.but.this.would.be.the.spot.to.
1ba00 68 61 6e 64 6c 65 20 69 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 29 29 0a 20 20 20 20 20 20 handle.it..............)).......
1ba20 20 20 20 20 28 5f 20 28 65 72 72 6f 72 20 22 55 6e 65 78 70 65 63 74 65 64 20 65 76 65 6e 74 2d ....(_.(error."Unexpected.event-
1ba40 74 79 70 65 20 25 53 22 20 65 76 65 6e 74 2d 74 79 70 65 29 29 29 29 29 0a 20 20 20 20 28 6c 69 type.%S".event-type))))).....(li
1ba60 73 74 20 3a 72 6f 6c 65 20 72 6f 6c 65 20 3a 63 6f 6e 74 65 6e 74 20 28 76 63 6f 6e 63 61 74 20 st.:role.role.:content.(vconcat.
1ba80 28 6e 72 65 76 65 72 73 65 20 63 6f 6e 74 65 6e 74 73 29 29 29 29 29 0a 0a 28 63 6c 2d 64 65 66 (nreverse.contents)))))..(cl-def
1baa0 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 5f 62 61 method.gptel--parse-buffer.((_ba
1bac0 63 6b 65 6e 64 20 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 29 20 26 6f 70 74 69 6f 6e 61 6c 20 6d ckend.gptel-bedrock).&optional.m
1bae0 61 78 2d 65 6e 74 72 69 65 73 29 0a 20 20 22 50 61 72 73 65 20 63 75 72 72 65 6e 74 20 62 75 66 ax-entries)..."Parse.current.buf
1bb00 66 65 72 20 61 6e 64 20 72 65 74 75 72 6e 20 61 20 6c 69 73 74 20 6f 66 20 70 72 6f 6d 70 74 20 fer.and.return.a.list.of.prompt.
1bb20 6f 62 6a 65 63 74 73 20 66 6f 72 20 42 65 64 72 6f 63 6b 2e 0a 0a 4d 41 58 2d 45 4e 54 52 49 45 objects.for.Bedrock...MAX-ENTRIE
1bb40 53 20 69 73 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20 70 72 6f 6d 70 S.is.the.maximum.number.of.promp
1bb60 74 73 20 74 6f 20 69 6e 63 6c 75 64 65 2e 22 0a 20 20 28 75 6e 6c 65 73 73 20 6d 61 78 2d 65 6e ts.to.include."...(unless.max-en
1bb80 74 72 69 65 73 20 28 73 65 74 71 20 6d 61 78 2d 65 6e 74 72 69 65 73 20 6d 6f 73 74 2d 70 6f 73 tries.(setq.max-entries.most-pos
1bba0 69 74 69 76 65 2d 66 69 78 6e 75 6d 29 29 0a 20 20 28 6c 65 74 20 28 28 70 72 6f 6d 70 74 73 20 itive-fixnum))...(let.((prompts.
1bbc0 6e 69 6c 29 20 28 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 28 nil).(prev-pt.(point)).........(
1bbe0 69 6e 63 6c 75 64 65 2d 6d 65 64 69 61 20 28 61 6e 64 20 67 70 74 65 6c 2d 74 72 61 63 6b 2d 6d include-media.(and.gptel-track-m
1bc00 65 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 edia.(gptel--model-capable-p.'me
1bc20 64 69 61 29 29 29 29 0a 20 20 20 20 28 63 6c 2d 66 6c 65 74 20 28 28 63 61 70 74 75 72 65 2d 70 dia)))).....(cl-flet.((capture-p
1bc40 72 6f 6d 70 74 20 28 72 6f 6c 65 20 62 65 67 20 65 6e 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 rompt.(role.beg.end)............
1bc60 20 20 20 20 20 28 6c 65 74 2a 20 28 28 63 6f 6e 74 65 6e 74 20 28 69 66 20 69 6e 63 6c 75 64 65 .....(let*.((content.(if.include
1bc80 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 20 -media..........................
1bca0 20 20 20 20 20 20 20 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 ........(gptel-bedrock--parse-mu
1bcc0 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 20 20 20 ltipart.........................
1bce0 20 20 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 ..........(gptel--parse-media-li
1bd00 6e 6b 73 20 6d 61 6a 6f 72 2d 6d 6f 64 65 20 62 65 67 20 65 6e 64 29 29 0a 20 20 20 20 20 20 20 nks.major-mode.beg.end))........
1bd20 20 20 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 5b 28 3a 74 65 ..........................`[(:te
1bd40 78 74 20 2c 28 67 70 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 xt.,(gptel--trim-prefixes.......
1bd60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
1bd80 20 20 20 20 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72 .....(buffer-substring-no-proper
1bda0 74 69 65 73 20 62 65 67 20 65 6e 64 29 29 29 5d 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ties.beg.end)))]))..............
1bdc0 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 6d 70 74 20 28 6c 69 73 74 20 3a 72 6f 6c 65 20 72 6f ..........(prompt.(list.:role.ro
1bde0 6c 65 20 3a 63 6f 6e 74 65 6e 74 20 63 6f 6e 74 65 6e 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 le.:content.content)))..........
1be00 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 70 72 6f 6d 70 74 20 70 72 6f 6d 70 74 73 29 29 29 .........(push.prompt.prompts)))
1be20 29 0a 0a 20 20 20 20 20 20 28 69 66 20 28 6f 72 20 67 70 74 65 6c 2d 6d 6f 64 65 20 67 70 74 65 )........(if.(or.gptel-mode.gpte
1be40 6c 2d 74 72 61 63 6b 2d 72 65 73 70 6f 6e 73 65 29 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 69 l-track-response)...........(whi
1be60 6c 65 20 28 61 6e 64 20 28 3e 20 6d 61 78 2d 65 6e 74 72 69 65 73 20 30 29 0a 20 20 20 20 20 20 le.(and.(>.max-entries.0).......
1be80 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 70 6f 69 ................(/=.prev-pt.(poi
1bea0 6e 74 2d 6d 69 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 nt-min)).......................(
1bec0 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 65 goto-char.(previous-single-prope
1bee0 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 20 rty-change......................
1bf00 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 6e 69 6c 20 .............(point).'gptel.nil.
1bf20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 63 61 70 74 (point-min)))).............(capt
1bf40 75 72 65 2d 70 72 6f 6d 70 74 20 28 70 63 61 73 65 20 28 67 65 74 2d 63 68 61 72 2d 70 72 6f 70 ure-prompt.(pcase.(get-char-prop
1bf60 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 20 20 erty.(point).'gptel)............
1bf80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 27 72 65 73 70 6f 6e 73 65 20 22 61 ...................('response."a
1bfa0 73 73 69 73 74 61 6e 74 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ssistant")......................
1bfc0 20 20 20 20 20 20 20 20 20 28 27 6e 69 6c 20 22 75 73 65 72 22 29 29 0a 20 20 20 20 20 20 20 20 .........('nil."user")).........
1bfe0 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 20 70 72 65 76 ....................(point).prev
1c000 2d 70 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 70 72 65 76 2d 70 74 20 28 -pt).............(setq.prev-pt.(
1c020 70 6f 69 6e 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 64 65 63 66 20 6d 61 78 point)).............(cl-decf.max
1c040 2d 65 6e 74 72 69 65 73 29 29 0a 20 20 20 20 20 20 20 20 28 63 61 70 74 75 72 65 2d 70 72 6f 6d -entries)).........(capture-prom
1c060 70 74 20 22 75 73 65 72 22 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28 70 6f 69 6e 74 2d 6d 61 78 pt."user".(point-min).(point-max
1c080 29 29 29 0a 20 20 20 20 20 20 70 72 6f 6d 70 74 73 29 29 29 0a 0a 28 64 65 66 63 6f 6e 73 74 20 ))).......prompts)))..(defconst.
1c0a0 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 69 6d 61 67 65 2d 66 6f 72 6d 61 74 73 0a 20 20 27 gptel-bedrock--image-formats...'
1c0c0 28 28 22 69 6d 61 67 65 2f 6a 70 67 22 20 2e 20 22 6a 70 65 67 22 29 0a 20 20 20 20 28 22 69 6d (("image/jpg"..."jpeg").....("im
1c0e0 61 67 65 2f 6a 70 65 67 22 20 2e 20 22 6a 70 65 67 22 29 0a 20 20 20 20 28 22 69 6d 61 67 65 2f age/jpeg"..."jpeg").....("image/
1c100 70 6e 67 22 20 2e 20 22 70 6e 67 22 29 0a 20 20 20 20 28 22 69 6d 61 67 65 2f 67 69 66 22 20 2e png"..."png").....("image/gif"..
1c120 20 22 67 69 66 22 29 0a 20 20 20 20 28 22 69 6d 61 67 65 2f 77 65 62 70 22 20 2e 20 22 77 65 62 ."gif").....("image/webp"..."web
1c140 70 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 69 6d 61 67 p"))..."Map.of.mime.type.to.imag
1c160 65 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 49 6d 61 67 65 e.formats.as.used.in.AWS's.Image
1c180 42 6c 6f 63 6b 2e 22 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 Block.")..(defconst.gptel-bedroc
1c1a0 6b 2d 2d 64 6f 63 2d 66 6f 72 6d 61 74 73 0a 20 20 27 28 28 22 61 70 70 6c 69 63 61 74 69 6f 6e k--doc-formats...'(("application
1c1c0 2f 70 64 66 22 20 2e 20 22 70 64 66 22 29 0a 20 20 20 20 28 22 74 65 78 74 2f 63 73 76 22 20 2e /pdf"..."pdf").....("text/csv"..
1c1e0 20 22 63 73 76 22 29 0a 20 20 20 20 28 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 6d 73 77 6f 72 64 ."csv").....("application/msword
1c200 22 20 2e 20 22 64 6f 63 22 29 0a 20 20 20 20 28 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 76 6e 64 "..."doc").....("application/vnd
1c220 2e 6f 70 65 6e 78 6d 6c 66 6f 72 6d 61 74 73 2d 6f 66 66 69 63 65 64 6f 63 75 6d 65 6e 74 2e 77 .openxmlformats-officedocument.w
1c240 6f 72 64 70 72 6f 63 65 73 73 69 6e 67 6d 6c 2e 64 6f 63 75 6d 65 6e 74 22 20 2e 20 22 64 6f 63 ordprocessingml.document"..."doc
1c260 78 22 29 0a 20 20 20 20 28 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 76 6e 64 2e 6d 73 2d 65 78 63 x").....("application/vnd.ms-exc
1c280 65 6c 22 20 2e 20 22 78 6c 73 22 29 0a 20 20 20 20 28 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 76 el"..."xls").....("application/v
1c2a0 6e 64 2e 6f 70 65 6e 78 6d 6c 66 6f 72 6d 61 74 73 2d 6f 66 66 69 63 65 64 6f 63 75 6d 65 6e 74 nd.openxmlformats-officedocument
1c2c0 2e 73 70 72 65 61 64 73 68 65 65 74 6d 6c 2e 73 68 65 65 74 22 20 2e 20 22 78 6c 73 78 22 29 0a .spreadsheetml.sheet"..."xlsx").
1c2e0 20 20 20 20 28 22 74 65 78 74 2f 68 74 6d 6c 22 20 2e 20 22 68 74 6d 6c 22 29 0a 20 20 20 20 28 ....("text/html"..."html").....(
1c300 22 74 65 78 74 2f 70 6c 61 69 6e 22 20 2e 20 22 74 78 74 22 29 0a 20 20 20 20 28 22 74 65 78 74 "text/plain"..."txt").....("text
1c320 2f 6d 61 72 6b 64 6f 77 6e 22 20 2e 20 22 6d 64 22 29 29 0a 20 20 22 4d 61 70 20 6f 66 20 6d 69 /markdown"..."md"))..."Map.of.mi
1c340 6d 65 20 74 79 70 65 20 74 6f 20 64 6f 63 75 6d 65 6e 74 20 66 6f 72 6d 61 74 73 20 61 73 20 75 me.type.to.document.formats.as.u
1c360 73 65 64 20 69 6e 20 41 57 53 27 73 20 44 6f 63 75 6d 65 6e 74 42 6c 6f 63 6b 2e 22 29 0a 0a 28 sed.in.AWS's.DocumentBlock.")..(
1c380 64 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 6d 75 6c 74 69 defun.gptel-bedrock--parse-multi
1c3a0 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 75 6c 74 69 70 part.(parts)..."Convert.a.multip
1c3c0 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 57 53 20 42 65 64 72 art.prompt.PARTS.to.the.AWS.Bedr
1c3e0 6f 63 6b 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 20 61 20 ock.API.format...The.input.is.a.
1c400 6c 69 73 74 20 6f 66 20 74 65 78 74 20 61 6e 64 20 6d 65 64 69 61 20 70 6c 69 73 74 73 20 6f 66 list.of.text.and.media.plists.of
1c420 20 74 68 65 20 66 6f 72 6d 3a 0a 20 28 28 3a 74 65 78 74 20 5c 22 73 6f 6d 65 20 74 65 78 74 5c .the.form:..((:text.\"some.text\
1c440 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 6e ")...(:media.\"/path/to/media.pn
1c460 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 78 g\".:mime.\"image/png\")...(:tex
1c480 74 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 t.\"More.text\"))...The.output.i
1c4a0 73 20 61 20 76 65 63 74 6f 72 20 6f 66 20 65 6e 74 72 69 65 73 20 69 6e 20 42 65 64 72 6f 63 6b s.a.vector.of.entries.in.Bedrock
1c4c0 20 41 50 49 20 66 6f 72 6d 61 74 2e 22 0a 20 20 28 74 68 72 65 61 64 2d 6c 61 73 74 20 70 61 72 .API.format."...(thread-last.par
1c4e0 74 73 0a 20 20 20 20 28 63 6c 2d 6d 61 70 6c 69 73 74 0a 20 20 20 20 20 28 6c 61 6d 62 64 61 20 ts.....(cl-maplist......(lambda.
1c500 28 74 61 69 6c 29 0a 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 70 61 72 74 20 28 63 61 72 20 (tail)........(let*.((part.(car.
1c520 74 61 69 6c 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 65 78 74 20 28 70 6c 69 73 tail))...............(text.(plis
1c540 74 2d 67 65 74 20 70 61 72 74 20 3a 74 65 78 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 t-get.part.:text))..............
1c560 20 28 6d 69 6d 65 20 28 70 6c 69 73 74 2d 67 65 74 20 70 61 72 74 20 3a 6d 69 6d 65 29 29 0a 20 .(mime.(plist-get.part.:mime))..
1c580 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 65 64 69 61 20 28 70 6c 69 73 74 2d 67 65 74 20 70 .............(media.(plist-get.p
1c5a0 61 72 74 20 3a 6d 65 64 69 61 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 65 78 74 art.:media))...............(text
1c5c0 66 69 6c 65 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 29 file.(plist-get.part.:textfile))
1c5e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 6d 61 74 29 0a 20 20 20 20 20 20 20 20 20 ...............format)..........
1c600 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 20 28 74 65 78 74 20 28 77 68 65 6e 20 28 6f 72 20 (cond...........(text.(when.(or.
1c620 28 65 71 20 70 61 72 74 20 28 63 61 72 20 70 61 72 74 73 29 29 20 28 6e 75 6c 6c 20 28 63 64 72 (eq.part.(car.parts)).(null.(cdr
1c640 20 74 61 69 6c 29 29 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 .tail)))...................(setq
1c660 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 74 65 78 74 .text.(gptel--trim-prefixes.text
1c680 29 29 29 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 73 74 72 ))).................(unless.(str
1c6a0 69 6e 67 2d 65 6d 70 74 79 2d 70 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ing-empty-p.text)...............
1c6c0 20 20 20 20 60 28 3a 74 65 78 74 20 2c 74 65 78 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 ....`(:text.,text)))...........(
1c6e0 6d 65 64 69 61 0a 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 media............(cond..........
1c700 20 20 20 28 28 73 65 74 71 20 66 6f 72 6d 61 74 20 28 61 73 73 6f 63 20 6d 69 6d 65 20 67 70 74 ...((setq.format.(assoc.mime.gpt
1c720 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 69 6d 61 67 65 2d 66 6f 72 6d 61 74 73 29 29 0a 20 20 20 20 el-bedrock--image-formats)).....
1c740 20 20 20 20 20 20 20 20 20 60 28 3a 69 6d 61 67 65 20 28 3a 66 6f 72 6d 61 74 20 2c 28 63 64 72 .........`(:image.(:format.,(cdr
1c760 20 66 6f 72 6d 61 74 29 20 3a 73 6f 75 72 63 65 20 28 3a 62 79 74 65 73 20 2c 28 67 70 74 65 6c .format).:source.(:bytes.,(gptel
1c780 2d 2d 62 61 73 65 36 34 2d 65 6e 63 6f 64 65 20 6d 65 64 69 61 29 29 29 29 29 0a 20 20 20 20 20 --base64-encode.media)))))......
1c7a0 20 20 20 20 20 20 20 28 28 73 65 74 71 20 66 6f 72 6d 61 74 20 28 61 73 73 6f 63 20 6d 69 6d 65 .......((setq.format.(assoc.mime
1c7c0 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 29 29 0a 20 20 .gptel-bedrock--doc-formats))...
1c7e0 20 20 20 20 20 20 20 20 20 20 20 60 28 3a 64 6f 63 75 6d 65 6e 74 20 28 3a 66 6f 72 6d 61 74 20 ...........`(:document.(:format.
1c800 2c 28 63 64 72 20 66 6f 72 6d 61 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ,(cdr.format)...................
1c820 20 20 20 20 20 20 20 20 3a 6e 61 6d 65 20 2c 28 66 69 6c 65 2d 6e 61 6d 65 2d 6e 6f 6e 64 69 72 ........:name.,(file-name-nondir
1c840 65 63 74 6f 72 79 20 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 ectory.media)...................
1c860 20 20 20 20 20 20 20 20 3a 73 6f 75 72 63 65 20 28 3a 62 79 74 65 73 20 2c 28 67 70 74 65 6c 2d ........:source.(:bytes.,(gptel-
1c880 2d 62 61 73 65 36 34 2d 65 6e 63 6f 64 65 20 6d 65 64 69 61 29 29 29 29 29 0a 20 20 20 20 20 20 -base64-encode.media))))).......
1c8a0 20 20 20 20 20 20 28 74 20 28 65 72 72 6f 72 20 22 55 6e 73 75 70 70 6f 72 74 65 64 20 4d 49 4d ......(t.(error."Unsupported.MIM
1c8c0 45 20 74 79 70 65 20 25 73 20 66 6f 72 20 41 57 53 20 42 65 64 72 6f 63 6b 22 20 6d 69 6d 65 29 E.type.%s.for.AWS.Bedrock".mime)
1c8e0 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 74 65 78 74 66 69 6c 65 20 60 28 3a 74 65 78 74 20 )))...........(textfile.`(:text.
1c900 2c 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 20 ,(with-temp-buffer..............
1c920 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 6e 73 65 72 74 ..................(gptel--insert
1c940 2d 66 69 6c 65 2d 73 74 72 69 6e 67 20 74 65 78 74 66 69 6c 65 29 0a 20 20 20 20 20 20 20 20 20 -file-string.textfile)..........
1c960 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 74 ......................(buffer-st
1c980 72 69 6e 67 29 29 29 29 29 29 29 29 0a 20 20 20 20 28 64 65 6c 71 20 6e 69 6c 29 0a 20 20 20 20 ring)))))))).....(delq.nil).....
1c9a0 28 76 63 6f 6e 63 61 74 29 29 29 0a 0a 3b 3b 20 67 70 74 65 6c 2d 2d 69 6e 6a 65 63 74 2d 70 72 (vconcat)))..;;.gptel--inject-pr
1c9c0 6f 6d 70 74 20 6e 6f 74 20 6e 65 65 64 65 64 20 73 69 6e 63 65 20 74 68 65 20 64 65 66 61 75 6c ompt.not.needed.since.the.defaul
1c9e0 74 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 77 6f 72 6b 73 20 68 65 72 65 0a 0a 28 63 6c t.implementation.works.here..(cl
1ca00 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 73 -defmethod.gptel--parse-tool-res
1ca20 75 6c 74 73 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 74 ults.((_backend.gptel-bedrock).t
1ca40 6f 6f 6c 2d 75 73 65 2d 72 65 71 75 65 73 74 73 29 0a 20 20 22 52 65 74 75 72 6e 20 61 20 62 61 ool-use-requests)..."Return.a.ba
1ca60 63 6b 65 6e 64 2d 61 70 70 72 6f 70 72 69 61 74 65 20 70 72 6f 6d 70 74 20 63 6f 6e 74 61 69 6e ckend-appropriate.prompt.contain
1ca80 69 6e 67 20 74 6f 6f 6c 20 63 61 6c 6c 20 72 65 73 75 6c 74 73 2e 0a 0a 54 4f 4f 4c 2d 55 53 45 ing.tool.call.results...TOOL-USE
1caa0 2d 52 45 51 55 45 53 54 53 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 72 65 71 75 65 73 74 20 70 -REQUESTS.is.a.list.of.request.p
1cac0 6c 69 73 74 73 20 74 68 61 74 20 68 61 76 65 20 62 65 65 6e 0a 63 6f 6d 70 6c 65 74 65 64 2e 20 lists.that.have.been.completed..
1cae0 20 52 65 74 75 72 6e 73 20 61 20 73 69 6e 67 6c 65 20 70 72 6f 6d 70 74 20 6f 62 6a 65 63 74 20 .Returns.a.single.prompt.object.
1cb00 74 6f 20 69 6e 6a 65 63 74 20 69 6e 74 6f 20 74 68 65 0a 63 6f 6e 76 65 72 73 61 74 69 6f 6e 2e to.inject.into.the.conversation.
1cb20 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 20 20 3a 63 6f "...(list....:role."user"....:co
1cb40 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 61 72 0a 20 20 ntent....(vconcat.....(mapcar...
1cb60 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 20 60 28 ...(lambda.(tool-call)........`(
1cb80 3a 74 6f 6f 6c 52 65 73 75 6c 74 20 28 3a 74 6f 6f 6c 55 73 65 49 64 20 2c 28 70 6c 69 73 74 2d :toolResult.(:toolUseId.,(plist-
1cba0 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 20 20 20 20 20 20 20 get.tool-call.:id)..............
1cbc0 20 20 20 20 20 20 20 20 20 3a 73 74 61 74 75 73 20 22 73 75 63 63 65 73 73 22 0a 20 20 20 20 20 .........:status."success"......
1cbe0 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 5b 28 3a 74 65 78 .................:content.[(:tex
1cc00 74 20 2c 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 6c 74 29 t.,(plist-get.tool-call.:result)
1cc20 29 5d 29 29 29 0a 20 20 20 20 20 74 6f 6f 6c 2d 75 73 65 2d 72 65 71 75 65 73 74 73 29 29 29 29 )])))......tool-use-requests))))
1cc40 0a 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 61 77 73 2d 70 72 6f ..(defvar.gptel-bedrock--aws-pro
1cc60 66 69 6c 65 2d 63 61 63 68 65 20 6e 69 6c 0a 20 20 22 43 61 63 68 65 20 66 6f 72 20 41 57 53 20 file-cache.nil..."Cache.for.AWS.
1cc80 70 72 6f 66 69 6c 65 20 63 72 65 64 65 6e 74 69 61 6c 73 20 69 6e 20 74 68 65 20 66 6f 72 6d 20 profile.credentials.in.the.form.
1cca0 6f 66 20 28 50 52 4f 46 49 4c 45 20 2e 20 43 52 45 44 53 29 2e 22 29 0a 0a 28 64 65 66 75 6e 20 of.(PROFILE...CREDS).")..(defun.
1ccc0 67 70 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 gptel-bedrock--fetch-aws-profile
1cce0 2d 63 72 65 64 65 6e 74 69 61 6c 73 20 28 70 72 6f 66 69 6c 65 20 26 6f 70 74 69 6f 6e 61 6c 20 -credentials.(profile.&optional.
1cd00 63 6c 65 61 72 2d 63 61 63 68 65 29 0a 20 20 22 46 65 74 63 68 20 26 20 63 61 63 68 65 20 41 57 clear-cache)..."Fetch.&.cache.AW
1cd20 53 20 63 72 65 64 65 6e 74 69 61 6c 73 20 66 6f 72 20 50 52 4f 46 49 4c 45 20 75 73 69 6e 67 20 S.credentials.for.PROFILE.using.
1cd40 61 77 73 2d 63 6c 69 2e 0a 0a 4e 6f 6e 2d 6e 69 6c 20 43 4c 45 41 52 2d 43 41 43 48 45 20 77 69 aws-cli...Non-nil.CLEAR-CACHE.wi
1cd60 6c 6c 20 72 65 66 72 65 73 68 20 63 72 65 64 65 6e 74 69 61 6c 73 2e 22 0a 20 20 28 6c 65 74 2a ll.refresh.credentials."...(let*
1cd80 20 28 28 63 72 65 64 73 2d 6a 73 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 .((creds-json............(let.((
1cda0 63 65 6c 6c 20 28 6f 72 20 28 61 73 73 6f 63 20 70 72 6f 66 69 6c 65 20 67 70 74 65 6c 2d 62 65 cell.(or.(assoc.profile.gptel-be
1cdc0 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 23 27 73 74 72 69 6e drock--aws-profile-cache.#'strin
1cde0 67 3d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 g=)............................(
1ce00 63 61 72 20 28 70 75 73 68 20 28 63 6f 6e 73 20 70 72 6f 66 69 6c 65 20 6e 69 6c 29 20 67 70 74 car.(push.(cons.profile.nil).gpt
1ce20 65 6c 2d 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 29 29 29 el-bedrock--aws-profile-cache)))
1ce40 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 20 28 61 6e 64 20 28 6e 6f 74 20 63 6c ))..............(or.(and.(not.cl
1ce60 65 61 72 2d 63 61 63 68 65 29 20 28 63 64 72 20 63 65 6c 6c 29 29 0a 20 20 20 20 20 20 20 20 20 ear-cache).(cdr.cell))..........
1ce80 20 20 20 20 20 20 20 20 28 73 65 74 66 20 28 63 64 72 20 63 65 6c 6c 29 0a 20 20 20 20 20 20 20 ........(setf.(cdr.cell)........
1cea0 20 20 20 20 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 ................(with-temp-buffe
1cec0 72 0a 09 09 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 7a 65 72 6f 70 20 28 63 r..............(unless.(zerop.(c
1cee0 61 6c 6c 2d 70 72 6f 63 65 73 73 20 22 61 77 73 22 20 6e 69 6c 20 74 20 6e 69 6c 20 22 63 6f 6e all-process."aws".nil.t.nil."con
1cf00 66 69 67 75 72 65 22 20 22 65 78 70 6f 72 74 2d 63 72 65 64 65 6e 74 69 61 6c 73 22 0a 09 09 09 figure"."export-credentials"....
1cf20 09 09 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 2d 2d 70 72 6f ..................(format."--pro
1cf40 66 69 6c 65 3d 25 73 22 20 70 72 6f 66 69 6c 65 29 29 29 0a 09 09 20 20 20 20 20 20 20 20 20 20 file=%s".profile))).............
1cf60 20 20 20 28 75 73 65 72 2d 65 72 72 6f 72 20 22 46 61 69 6c 65 64 20 74 6f 20 67 65 74 20 41 57 ...(user-error."Failed.to.get.AW
1cf80 53 20 63 72 65 64 65 6e 74 69 61 6c 73 20 66 72 6f 6d 20 70 72 6f 66 69 6c 65 22 29 29 0a 09 09 S.credentials.from.profile"))...
1cfa0 20 20 20 20 20 20 20 20 20 28 6a 73 6f 6e 2d 70 61 72 73 65 2d 73 74 72 69 6e 67 20 28 62 75 66 .........(json-parse-string.(buf
1cfc0 66 65 72 2d 73 74 72 69 6e 67 29 29 29 29 29 29 29 0a 09 20 28 65 78 70 69 72 61 74 69 6f 6e 20 fer-string)))))))...(expiration.
1cfe0 28 69 66 2d 6c 65 74 20 28 65 78 70 20 28 67 65 74 68 61 73 68 20 22 45 78 70 69 72 61 74 69 6f (if-let.(exp.(gethash."Expiratio
1d000 6e 22 20 63 72 65 64 73 2d 6a 73 6f 6e 29 29 0a 09 09 09 20 20 20 20 20 28 64 61 74 65 2d 74 6f n".creds-json)).........(date-to
1d020 2d 74 69 6d 65 20 65 78 70 29 29 29 29 0a 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 28 28 -time.exp)))).....(cond.......((
1d040 74 69 6d 65 2d 6c 65 73 73 2d 70 20 28 63 75 72 72 65 6e 74 2d 74 69 6d 65 29 20 65 78 70 69 72 time-less-p.(current-time).expir
1d060 61 74 69 6f 6e 29 0a 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 61 63 63 65 73 73 2d 6b 65 79 20 ation)........(let.((access-key.
1d080 28 67 65 74 68 61 73 68 20 22 41 63 63 65 73 73 4b 65 79 49 64 22 20 63 72 65 64 73 2d 6a 73 6f (gethash."AccessKeyId".creds-jso
1d0a0 6e 29 29 0a 09 20 20 20 20 20 28 73 65 63 72 65 74 2d 6b 65 79 20 28 67 65 74 68 61 73 68 20 22 n)).......(secret-key.(gethash."
1d0c0 53 65 63 72 65 74 41 63 63 65 73 73 4b 65 79 22 20 63 72 65 64 73 2d 6a 73 6f 6e 29 29 0a 09 20 SecretAccessKey".creds-json))...
1d0e0 20 20 20 20 28 73 65 73 73 69 6f 6e 2d 74 6f 6b 65 6e 20 28 67 65 74 68 61 73 68 20 22 53 65 73 ....(session-token.(gethash."Ses
1d100 73 69 6f 6e 54 6f 6b 65 6e 22 20 63 72 65 64 73 2d 6a 73 6f 6e 29 29 29 0a 09 20 28 63 6c 2d 76 sionToken".creds-json)))...(cl-v
1d120 61 6c 75 65 73 20 61 63 63 65 73 73 2d 6b 65 79 20 73 65 63 72 65 74 2d 6b 65 79 20 73 65 73 73 alues.access-key.secret-key.sess
1d140 69 6f 6e 2d 74 6f 6b 65 6e 29 29 29 0a 20 20 20 20 20 20 28 28 6e 6f 74 20 63 6c 65 61 72 2d 63 ion-token))).......((not.clear-c
1d160 61 63 68 65 29 0a 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 66 65 74 ache)........(gptel-bedrock--fet
1d180 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 70 72 6f 66 69 ch-aws-profile-credentials.profi
1d1a0 6c 65 20 74 29 29 0a 20 20 20 20 20 20 28 74 20 28 75 73 65 72 2d 65 72 72 6f 72 20 22 41 57 53 le.t)).......(t.(user-error."AWS
1d1c0 20 63 72 65 64 65 6e 74 69 61 6c 73 20 65 78 70 69 72 65 64 20 66 6f 72 20 70 72 6f 66 69 6c 65 .credentials.expired.for.profile
1d1e0 3a 20 25 73 22 20 70 72 6f 66 69 6c 65 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c :.%s".profile)))))..(defun.gptel
1d200 2d 62 65 64 72 6f 63 6b 2d 2d 67 65 74 2d 63 72 65 64 65 6e 74 69 61 6c 73 20 28 29 0a 20 20 22 -bedrock--get-credentials.()..."
1d220 52 65 74 75 72 6e 20 74 68 65 20 41 57 53 20 63 72 65 64 65 6e 74 69 61 6c 73 20 74 6f 20 75 73 Return.the.AWS.credentials.to.us
1d240 65 20 66 6f 72 20 74 68 65 20 72 65 71 75 65 73 74 2e 0a 0a 52 65 74 75 72 6e 73 20 61 20 6c 69 e.for.the.request...Returns.a.li
1d260 73 74 20 6f 66 20 32 2d 33 20 65 6c 65 6d 65 6e 74 73 2c 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e st.of.2-3.elements,.depending.on
1d280 20 77 68 65 74 68 65 72 20 61 20 73 65 73 73 69 6f 6e 0a 74 6f 6b 65 6e 20 69 73 20 6e 65 65 64 .whether.a.session.token.is.need
1d2a0 65 64 2c 20 77 69 74 68 20 74 68 69 73 20 66 6f 72 6d 3a 20 28 41 57 53 5f 41 43 43 45 53 53 5f ed,.with.this.form:.(AWS_ACCESS_
1d2c0 4b 45 59 5f 49 44 20 41 57 53 5f 53 45 43 52 45 54 5f 41 43 43 45 53 53 5f 4b 45 59 0a 41 57 53 KEY_ID.AWS_SECRET_ACCESS_KEY.AWS
1d2e0 5f 53 45 53 53 49 4f 4e 5f 54 4f 4b 45 4e 29 2e 0a 0a 43 6f 6e 76 65 6e 69 65 6e 74 20 74 6f 20 _SESSION_TOKEN)...Convenient.to.
1d300 75 73 65 20 77 69 74 68 20 60 63 6c 2d 6d 75 6c 74 69 70 6c 65 2d 76 61 6c 75 65 2d 62 69 6e 64 use.with.`cl-multiple-value-bind
1d320 27 22 0a 20 20 28 6c 65 74 20 28 28 6b 65 79 2d 69 64 20 28 67 65 74 65 6e 76 20 22 41 57 53 5f '"...(let.((key-id.(getenv."AWS_
1d340 41 43 43 45 53 53 5f 4b 45 59 5f 49 44 22 29 29 0a 20 20 20 20 20 20 20 20 28 73 65 63 72 65 74 ACCESS_KEY_ID")).........(secret
1d360 2d 6b 65 79 20 28 67 65 74 65 6e 76 20 22 41 57 53 5f 53 45 43 52 45 54 5f 41 43 43 45 53 53 5f -key.(getenv."AWS_SECRET_ACCESS_
1d380 4b 45 59 22 29 29 0a 20 20 20 20 20 20 20 20 28 74 6f 6b 65 6e 20 28 67 65 74 65 6e 76 20 22 41 KEY")).........(token.(getenv."A
1d3a0 57 53 5f 53 45 53 53 49 4f 4e 5f 54 4f 4b 45 4e 22 29 29 0a 09 28 70 72 6f 66 69 6c 65 20 28 67 WS_SESSION_TOKEN"))..(profile.(g
1d3c0 65 74 65 6e 76 20 22 41 57 53 5f 50 52 4f 46 49 4c 45 22 29 29 29 0a 20 20 20 20 28 63 6f 6e 64 etenv."AWS_PROFILE"))).....(cond
1d3e0 0a 20 20 20 20 20 20 28 28 61 6e 64 20 6b 65 79 2d 69 64 20 73 65 63 72 65 74 2d 6b 65 79 29 20 .......((and.key-id.secret-key).
1d400 28 63 6c 2d 76 61 6c 75 65 73 20 6b 65 79 2d 69 64 20 73 65 63 72 65 74 2d 6b 65 79 20 74 6f 6b (cl-values.key-id.secret-key.tok
1d420 65 6e 29 29 0a 20 20 20 20 20 20 28 28 61 6e 64 20 70 72 6f 66 69 6c 65 29 20 28 67 70 74 65 6c en)).......((and.profile).(gptel
1d440 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 72 65 64 -bedrock--fetch-aws-profile-cred
1d460 65 6e 74 69 61 6c 73 20 70 72 6f 66 69 6c 65 29 29 0a 20 20 20 20 20 20 28 74 20 28 75 73 65 72 entials.profile)).......(t.(user
1d480 2d 65 72 72 6f 72 20 22 4d 69 73 73 69 6e 67 20 41 57 53 20 63 72 65 64 65 6e 74 69 61 6c 73 3b -error."Missing.AWS.credentials;
1d4a0 20 63 75 72 72 65 6e 74 6c 79 20 6f 6e 6c 79 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 .currently.only.environment.vari
1d4c0 61 62 6c 65 73 20 61 72 65 20 73 75 70 70 6f 72 74 65 64 22 29 29 29 29 29 0a 0a 28 64 65 66 76 ables.are.supported")))))..(defv
1d4e0 61 72 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 0a 20 20 3b 3b ar.gptel-bedrock--model-ids...;;
1d500 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 6f 6d 2f 62 65 64 .https://docs.aws.amazon.com/bed
1d520 72 6f 63 6b 2f 6c 61 74 65 73 74 2f 75 73 65 72 67 75 69 64 65 2f 6d 6f 64 65 6c 73 2d 73 75 70 rock/latest/userguide/models-sup
1d540 70 6f 72 74 65 64 2e 68 74 6d 6c 0a 20 20 27 28 28 63 6c 61 75 64 65 2d 73 6f 6e 6e 65 74 2d 34 ported.html...'((claude-sonnet-4
1d560 2d 32 30 32 35 30 35 31 34 20 20 20 20 2e 20 22 61 6e 74 68 72 6f 70 69 63 2e 63 6c 61 75 64 65 -20250514......"anthropic.claude
1d580 2d 73 6f 6e 6e 65 74 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 -sonnet-4-20250514-v1:0").....(c
1d5a0 6c 61 75 64 65 2d 6f 70 75 73 2d 34 2d 32 30 32 35 30 35 31 34 20 20 20 20 20 20 2e 20 22 61 6e laude-opus-4-20250514........"an
1d5c0 74 68 72 6f 70 69 63 2e 63 6c 61 75 64 65 2d 6f 70 75 73 2d 34 2d 32 30 32 35 30 35 31 34 2d 76 thropic.claude-opus-4-20250514-v
1d5e0 31 3a 30 22 29 0a 20 20 20 20 28 63 6c 61 75 64 65 2d 33 2d 37 2d 73 6f 6e 6e 65 74 2d 32 30 32 1:0").....(claude-3-7-sonnet-202
1d600 35 30 32 31 39 20 20 2e 20 22 61 6e 74 68 72 6f 70 69 63 2e 63 6c 61 75 64 65 2d 33 2d 37 2d 73 50219...."anthropic.claude-3-7-s
1d620 6f 6e 6e 65 74 2d 32 30 32 35 30 32 31 39 2d 76 31 3a 30 22 29 0a 20 20 20 20 28 63 6c 61 75 64 onnet-20250219-v1:0").....(claud
1d640 65 2d 33 2d 35 2d 73 6f 6e 6e 65 74 2d 32 30 32 34 31 30 32 32 20 20 2e 20 22 61 6e 74 68 72 6f e-3-5-sonnet-20241022...."anthro
1d660 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 31 30 32 32 2d 76 pic.claude-3-5-sonnet-20241022-v
1d680 32 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 2:0").....(claude-3-5-sonnet-202
1d6a0 34 30 36 32 30 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 40620...."anthropic.claude-3-5-s
1d6c0 6f 6e 6e 65 74 2d 32 30 32 34 30 36 32 30 2d 76 31 3a 30 22 29 0a 20 20 20 20 28 63 6c 61 75 64 onnet-20240620-v1:0").....(claud
1d6e0 65 2d 33 2d 35 2d 68 61 69 6b 75 2d 32 30 32 34 31 30 32 32 20 20 20 2e 20 22 61 6e 74 68 72 6f e-3-5-haiku-20241022....."anthro
1d700 70 69 63 2e 63 6c 61 75 64 65 2d 33 2d 35 2d 68 61 69 6b 75 2d 32 30 32 34 31 30 32 32 2d 76 31 pic.claude-3-5-haiku-20241022-v1
1d720 3a 30 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 :0").....(claude-3-opus-20240229
1d740 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 33 2d 6f 70 75 73 ........"anthropic.claude-3-opus
1d760 2d 32 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 73 -20240229-v1:0").....(claude-3-s
1d780 6f 6e 6e 65 74 2d 32 30 32 34 30 32 32 39 20 20 20 20 2e 20 22 61 6e 74 68 72 6f 70 69 63 2e 63 onnet-20240229......"anthropic.c
1d7a0 6c 61 75 64 65 2d 33 2d 73 6f 6e 6e 65 74 2d 32 30 32 34 30 32 32 39 2d 76 31 3a 30 22 29 0a 20 laude-3-sonnet-20240229-v1:0")..
1d7c0 20 20 20 28 63 6c 61 75 64 65 2d 33 2d 68 61 69 6b 75 2d 32 30 32 34 30 33 30 37 20 20 20 20 20 ...(claude-3-haiku-20240307.....
1d7e0 2e 20 22 61 6e 74 68 72 6f 70 69 63 2e 63 6c 61 75 64 65 2d 33 2d 68 61 69 6b 75 2d 32 30 32 34 .."anthropic.claude-3-haiku-2024
1d800 30 33 30 37 2d 76 31 3a 30 22 29 0a 20 20 20 20 28 6d 69 73 74 72 61 6c 2d 37 62 20 20 20 20 20 0307-v1:0").....(mistral-7b.....
1d820 20 20 20 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 ..............."mistral.mistral-
1d840 37 62 2d 69 6e 73 74 72 75 63 74 2d 76 30 3a 32 22 29 0a 20 20 20 20 28 6d 69 73 74 72 61 6c 2d 7b-instruct-v0:2").....(mistral-
1d860 38 78 37 62 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 20 22 6d 69 73 74 72 61 6c 2e 6d 8x7b.................."mistral.m
1d880 69 78 74 72 61 6c 2d 38 78 37 62 2d 69 6e 73 74 72 75 63 74 2d 76 30 3a 31 22 29 0a 20 20 20 20 ixtral-8x7b-instruct-v0:1").....
1d8a0 28 6d 69 73 74 72 61 6c 2d 6c 61 72 67 65 2d 32 34 30 32 20 20 20 20 20 20 20 20 20 20 2e 20 22 (mistral-large-2402............"
1d8c0 6d 69 73 74 72 61 6c 2e 6d 69 73 74 72 61 6c 2d 6c 61 72 67 65 2d 32 34 30 32 2d 76 31 3a 30 22 mistral.mistral-large-2402-v1:0"
1d8e0 29 0a 20 20 20 20 28 6d 69 73 74 72 61 6c 2d 6c 61 72 67 65 2d 32 34 30 37 20 20 20 20 20 20 20 ).....(mistral-large-2407.......
1d900 20 20 20 2e 20 22 6d 69 73 74 72 61 6c 2e 6d 69 73 74 72 61 6c 2d 6c 61 72 67 65 2d 32 34 30 37 ....."mistral.mistral-large-2407
1d920 2d 76 31 3a 30 22 29 0a 20 20 20 20 28 6d 69 73 74 72 61 6c 2d 73 6d 61 6c 6c 2d 32 34 30 32 20 -v1:0").....(mistral-small-2402.
1d940 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 73 6d 61 6c ..........."mistral.mistral-smal
1d960 6c 2d 32 34 30 32 2d 76 31 3a 30 22 29 0a 20 20 20 20 28 6c 6c 61 6d 61 2d 33 2d 38 62 20 20 20 l-2402-v1:0").....(llama-3-8b...
1d980 20 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 38 62 ................."meta.llama3-8b
1d9a0 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 61 2d 33 2d 37 30 -instruct-v1:0").....(llama-3-70
1d9c0 62 20 20 20 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 b..................."meta.llama3
1d9e0 2d 37 30 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 61 2d -70b-instruct-v1:0").....(llama-
1da00 33 2d 31 2d 38 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 6c 6c 3-1-8b.................."meta.ll
1da20 61 6d 61 33 2d 31 2d 38 62 2d 69 6e 73 74 72 75 63 74 2d 76 31 3a 30 22 29 0a 20 20 20 20 28 6c ama3-1-8b-instruct-v1:0").....(l
1da40 6c 61 6d 61 2d 33 2d 31 2d 37 30 62 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 20 22 6d 65 lama-3-1-70b................."me
1da60 74 61 2e 6c 6c 61 6d 61 33 2d 31 2d 37 30 62 2d 69 6e 73 74 72 75 63 74 2d 76 31 3a 30 22 29 0a ta.llama3-1-70b-instruct-v1:0").
1da80 20 20 20 20 28 6c 6c 61 6d 61 2d 33 2d 31 2d 34 30 35 62 20 20 20 20 20 20 20 20 20 20 20 20 20 ....(llama-3-1-405b.............
1daa0 20 2e 20 22 6d 65 74 61 2e 6c 6c 61 6d 61 33 2d 31 2d 34 30 35 62 2d 69 6e 73 74 72 75 63 74 2d ..."meta.llama3-1-405b-instruct-
1dac0 76 31 3a 30 22 29 0a 20 20 20 20 28 6c 6c 61 6d 61 2d 33 2d 32 2d 31 62 20 20 20 20 20 20 20 20 v1:0").....(llama-3-2-1b........
1dae0 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 31 62 2d 69 6e 73 74 .........."meta.llama3-2-1b-inst
1db00 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 32 2d 33 62 20 20 20 ruct-v1:0").....(llama-3-2-3b...
1db20 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 32 2d 33 62 ..............."meta.llama3-2-3b
1db40 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 61 2d 33 2d 32 2d -instruct-v1:0").....(llama-3-2-
1db60 31 31 62 20 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 11b................."meta.llama3
1db80 2d 32 2d 31 31 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 -2-11b-instruct-v1:0").....(llam
1dba0 61 2d 33 2d 32 2d 39 30 62 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-90b................."meta.
1dbc0 6c 6c 61 6d 61 33 2d 32 2d 39 30 62 2d 69 6e 73 74 72 75 63 74 2d 76 31 3a 30 22 29 0a 20 20 20 llama3-2-90b-instruct-v1:0")....
1dbe0 20 28 6c 6c 61 6d 61 2d 33 2d 33 2d 37 30 62 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 20 .(llama-3-3-70b.................
1dc00 22 6d 65 74 61 2e 6c 6c 61 6d 61 33 2d 33 2d 37 30 62 2d 69 6e 73 74 72 75 63 74 2d 76 31 3a 30 "meta.llama3-3-70b-instruct-v1:0
1dc20 22 29 29 0a 20 20 22 4d 61 70 20 6f 66 20 6d 6f 64 65 6c 20 6e 61 6d 65 20 74 6f 20 62 65 64 72 "))..."Map.of.model.name.to.bedr
1dc40 6f 63 6b 20 69 64 2e 0a 0a 49 44 73 20 63 61 6e 20 62 65 20 61 64 64 65 64 20 6f 72 20 72 65 70 ock.id...IDs.can.be.added.or.rep
1dc60 6c 61 63 65 64 20 62 79 20 63 61 6c 6c 69 6e 67 0a 5c 28 70 75 73 68 20 28 6d 6f 64 65 6c 2d 6e laced.by.calling.\(push.(model-n
1dc80 61 6d 65 20 2e 20 5c 22 6d 6f 64 65 6c 2d 69 64 5c 22 29 20 67 70 74 65 6c 2d 62 65 64 72 6f 63 ame...\"model-id\").gptel-bedroc
1dca0 6b 2d 2d 6d 6f 64 65 6c 2d 69 64 73 29 2e 22 29 0a 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d k--model-ids).")..(defvar.gptel-
1dcc0 2d 62 65 64 72 6f 63 6b 2d 6d 6f 64 65 6c 73 0a 20 20 28 6d 61 70 63 61 72 20 23 27 63 61 72 20 -bedrock-models...(mapcar.#'car.
1dce0 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 0a 20 20 22 4c 69 73 gptel-bedrock--model-ids)..."Lis
1dd00 74 20 6f 66 20 61 76 61 69 6c 61 62 6c 65 20 41 57 53 20 42 65 64 72 6f 63 6b 20 6d 6f 64 65 6c t.of.available.AWS.Bedrock.model
1dd20 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 22 29 0a 0a s.and.associated.properties.")..
1dd40 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 6d 6f 64 65 6c 2d (defun.gptel-bedrock--get-model-
1dd60 69 64 20 28 6d 6f 64 65 6c 20 26 6f 70 74 69 6f 6e 61 6c 20 72 65 67 69 6f 6e 29 0a 20 20 22 52 id.(model.&optional.region)..."R
1dd80 65 74 75 72 6e 20 74 68 65 20 42 65 64 72 6f 63 6b 20 6d 6f 64 65 6c 20 49 44 20 66 6f 72 20 4d eturn.the.Bedrock.model.ID.for.M
1dda0 4f 44 45 4c 2e 0a 0a 52 45 47 49 4f 4e 20 69 73 20 6f 6e 65 20 6f 66 20 61 70 61 63 2c 20 65 75 ODEL...REGION.is.one.of.apac,.eu
1ddc0 20 6f 72 20 75 73 2e 22 0a 20 20 28 63 6f 6e 63 61 74 0a 20 20 20 28 77 68 65 6e 20 72 65 67 69 .or.us."...(concat....(when.regi
1dde0 6f 6e 0a 20 20 20 20 20 28 6f 72 20 28 6d 65 6d 62 65 72 20 72 65 67 69 6f 6e 20 27 28 61 70 61 on......(or.(member.region.'(apa
1de00 63 20 65 75 20 75 73 29 29 0a 09 20 28 65 72 72 6f 72 20 22 55 6e 6b 6e 6f 77 6e 20 42 65 64 72 c.eu.us))...(error."Unknown.Bedr
1de20 6f 63 6b 20 72 65 67 69 6f 6e 20 25 73 22 20 72 65 67 69 6f 6e 29 29 0a 20 20 20 20 20 28 63 6f ock.region.%s".region))......(co
1de40 6e 63 61 74 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 72 65 67 69 6f 6e 29 20 22 2e 22 29 29 0a ncat.(symbol-name.region).".")).
1de60 20 20 20 28 6f 72 20 28 61 6c 69 73 74 2d 67 65 74 20 6d 6f 64 65 6c 20 67 70 74 65 6c 2d 62 65 ...(or.(alist-get.model.gptel-be
1de80 64 72 6f 63 6b 2d 2d 6d 6f 64 65 6c 2d 69 64 73 20 6e 69 6c 20 6e 69 6c 20 23 27 65 71 29 0a 20 drock--model-ids.nil.nil.#'eq)..
1dea0 20 20 20 20 20 20 28 65 72 72 6f 72 20 22 55 6e 6b 6e 6f 77 6e 20 42 65 64 72 6f 63 6b 20 6d 6f ......(error."Unknown.Bedrock.mo
1dec0 64 65 6c 3a 20 25 73 22 20 6d 6f 64 65 6c 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c del:.%s".model))))..(defun.gptel
1dee0 2d 62 65 64 72 6f 63 6b 2d 2d 63 75 72 6c 2d 61 72 67 73 20 28 72 65 67 69 6f 6e 29 0a 20 20 22 -bedrock--curl-args.(region)..."
1df00 47 65 6e 65 72 61 74 65 20 74 68 65 20 63 75 72 6c 20 61 72 67 75 6d 65 6e 74 73 20 74 6f 20 67 Generate.the.curl.arguments.to.g
1df20 65 74 20 61 20 62 65 64 72 6f 63 6b 20 72 65 71 75 65 73 74 20 73 69 67 6e 65 64 20 66 6f 72 20 et.a.bedrock.request.signed.for.
1df40 75 73 65 20 69 6e 20 52 45 47 49 4f 4e 2e 22 0a 20 20 3b 3b 20 68 74 74 70 73 3a 2f 2f 63 75 72 use.in.REGION."...;;.https://cur
1df60 6c 2e 73 65 2f 64 6f 63 73 2f 6d 61 6e 70 61 67 65 2e 68 74 6d 6c 23 2d 2d 61 77 73 2d 73 69 67 l.se/docs/manpage.html#--aws-sig
1df80 76 34 0a 20 20 28 63 6c 2d 6d 75 6c 74 69 70 6c 65 2d 76 61 6c 75 65 2d 62 69 6e 64 20 28 6b 65 v4...(cl-multiple-value-bind.(ke
1dfa0 79 2d 69 64 20 73 65 63 72 65 74 20 74 6f 6b 65 6e 29 20 28 67 70 74 65 6c 2d 62 65 64 72 6f 63 y-id.secret.token).(gptel-bedroc
1dfc0 6b 2d 2d 67 65 74 2d 63 72 65 64 65 6e 74 69 61 6c 73 29 0a 20 20 20 20 28 6e 63 6f 6e 63 0a 20 k--get-credentials).....(nconc..
1dfe0 20 20 20 20 28 6c 69 73 74 0a 20 20 20 20 20 20 22 2d 2d 75 73 65 72 22 20 28 66 6f 72 6d 61 74 ....(list......."--user".(format
1e000 20 22 25 73 3a 25 73 22 20 6b 65 79 2d 69 64 20 73 65 63 72 65 74 29 0a 20 20 20 20 20 20 22 2d ."%s:%s".key-id.secret)......."-
1e020 2d 61 77 73 2d 73 69 67 76 34 22 20 28 66 6f 72 6d 61 74 20 22 61 77 73 3a 61 6d 7a 3a 25 73 3a -aws-sigv4".(format."aws:amz:%s:
1e040 62 65 64 72 6f 63 6b 22 20 72 65 67 69 6f 6e 29 29 0a 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 bedrock".region))......(unless.(
1e060 6d 65 6d 71 20 73 79 73 74 65 6d 2d 74 79 70 65 20 27 28 77 69 6e 64 6f 77 73 2d 6e 74 20 6d 73 memq.system-type.'(windows-nt.ms
1e080 2d 64 6f 73 29 29 0a 20 20 20 20 20 20 20 3b 3b 20 57 69 74 68 6f 75 74 20 74 68 69 73 20 63 75 -dos))........;;.Without.this.cu
1e0a0 72 6c 20 73 77 61 6c 6c 6f 77 73 20 74 68 65 20 6f 75 74 70 75 74 0a 20 20 20 20 20 20 20 28 6c rl.swallows.the.output........(l
1e0c0 69 73 74 20 22 2d 2d 6f 75 74 70 75 74 22 20 22 2f 64 65 76 2f 73 74 64 6f 75 74 22 29 29 0a 20 ist."--output"."/dev/stdout"))..
1e0e0 20 20 20 20 28 77 68 65 6e 20 74 6f 6b 65 6e 0a 20 20 20 20 20 20 20 28 6c 69 73 74 20 28 66 6f ....(when.token........(list.(fo
1e100 72 6d 61 74 20 22 2d 48 78 2d 61 6d 7a 2d 73 65 63 75 72 69 74 79 2d 74 6f 6b 65 6e 3a 20 25 73 rmat."-Hx-amz-security-token:.%s
1e120 22 20 74 6f 6b 65 6e 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 62 65 64 72 ".token))))))..(defun.gptel-bedr
1e140 6f 63 6b 2d 2d 63 75 72 6c 2d 76 65 72 73 69 6f 6e 20 28 29 0a 20 20 22 43 68 65 63 6b 20 43 75 ock--curl-version.()..."Check.Cu
1e160 72 6c 20 76 65 72 73 69 6f 6e 20 72 65 71 75 69 72 65 64 20 66 6f 72 20 67 70 74 65 6c 2d 62 65 rl.version.required.for.gptel-be
1e180 64 72 6f 63 6b 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 6f 75 74 70 75 74 20 28 73 68 65 6c 6c 2d drock."...(let*.((output.(shell-
1e1a0 63 6f 6d 6d 61 6e 64 2d 74 6f 2d 73 74 72 69 6e 67 20 22 63 75 72 6c 20 2d 2d 76 65 72 73 69 6f command-to-string."curl.--versio
1e1c0 6e 22 29 29 0a 20 20 20 20 20 20 20 20 20 28 76 65 72 73 69 6f 6e 20 28 61 6e 64 20 28 73 74 72 n"))..........(version.(and.(str
1e1e0 69 6e 67 2d 6d 61 74 63 68 20 22 5e 63 75 72 6c 20 5c 5c 28 5b 30 2d 39 2e 5d 2b 5c 5c 29 22 20 ing-match."^curl.\\([0-9.]+\\)".
1e200 6f 75 74 70 75 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 output)........................(
1e220 6d 61 74 63 68 2d 73 74 72 69 6e 67 20 31 20 6f 75 74 70 75 74 29 29 29 29 0a 20 20 20 20 76 65 match-string.1.output)))).....ve
1e240 72 73 69 6f 6e 29 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 rsion))..;;;###autoload.(cl-defu
1e260 6e 20 67 70 74 65 6c 2d 6d 61 6b 65 2d 62 65 64 72 6f 63 6b 0a 20 20 20 20 28 6e 61 6d 65 20 26 n.gptel-make-bedrock.....(name.&
1e280 6b 65 79 0a 20 20 20 20 20 20 20 20 20 20 72 65 67 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 28 key...........region...........(
1e2a0 6d 6f 64 65 6c 73 20 67 70 74 65 6c 2d 2d 62 65 64 72 6f 63 6b 2d 6d 6f 64 65 6c 73 29 0a 09 20 models.gptel--bedrock-models)...
1e2c0 20 28 6d 6f 64 65 6c 2d 72 65 67 69 6f 6e 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 .(model-region.nil)...........(s
1e2e0 74 72 65 61 6d 20 6e 69 6c 29 0a 09 20 20 63 75 72 6c 2d 61 72 67 73 0a 20 20 20 20 20 20 20 20 tream.nil)....curl-args.........
1e300 20 20 28 70 72 6f 74 6f 63 6f 6c 20 22 68 74 74 70 73 22 29 29 0a 20 20 22 52 65 67 69 73 74 65 ..(protocol."https"))..."Registe
1e320 72 20 61 6e 20 41 57 53 20 42 65 64 72 6f 63 6b 20 62 61 63 6b 65 6e 64 20 66 6f 72 20 67 70 74 r.an.AWS.Bedrock.backend.for.gpt
1e340 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
1e360 3a 0a 0a 52 45 47 49 4f 4e 20 2d 20 41 57 53 20 72 65 67 69 6f 6e 20 6e 61 6d 65 20 28 65 2e 67 :..REGION.-.AWS.region.name.(e.g
1e380 2e 20 5c 22 75 73 2d 65 61 73 74 2d 31 5c 22 29 0a 4d 4f 44 45 4c 53 20 2d 20 54 68 65 20 6c 69 ..\"us-east-1\").MODELS.-.The.li
1e3a0 73 74 20 6f 66 20 6d 6f 64 65 6c 73 20 73 75 70 70 6f 72 74 65 64 20 62 79 20 74 68 69 73 20 62 st.of.models.supported.by.this.b
1e3c0 61 63 6b 65 6e 64 0a 4d 4f 44 45 4c 2d 52 45 47 49 4f 4e 20 2d 20 6f 6e 65 20 6f 66 20 61 70 61 ackend.MODEL-REGION.-.one.of.apa
1e3e0 63 2c 20 65 75 2c 20 75 73 20 6f 72 20 6e 69 6c 0a 43 55 52 4c 2d 41 52 47 53 20 2d 20 61 64 64 c,.eu,.us.or.nil.CURL-ARGS.-.add
1e400 69 74 69 6f 6e 61 6c 20 63 75 72 6c 20 61 72 67 73 0a 53 54 52 45 41 4d 20 2d 20 57 68 65 74 68 itional.curl.args.STREAM.-.Wheth
1e420 65 72 20 74 6f 20 75 73 65 20 73 74 72 65 61 6d 69 6e 67 20 72 65 73 70 6f 6e 73 65 73 20 6f 72 er.to.use.streaming.responses.or
1e440 20 6e 6f 74 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 69 6e 64 65 6e 74 20 31 29 29 0a 20 20 .not."...(declare.(indent.1))...
1e460 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 6c 20 28 76 65 72 (unless.(and.gptel-use-curl.(ver
1e480 73 69 6f 6e 3c 3d 20 22 38 2e 35 22 20 28 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 63 75 72 sion<=."8.5".(gptel-bedrock--cur
1e4a0 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 65 64 72 6f 63 6b l-version))).....(error."Bedrock
1e4c0 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 38 2e 35 2c 20 62 -backend.requires.curl.>=.8.5,.b
1e4e0 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 75 72 6c 2d 76 65 ut.gptel-use-curl.:=.%s,.curl-ve
1e500 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 74 65 6c 2d 75 73 rsion.:=.%s"............gptel-us
1e520 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 6c 2d 76 65 72 73 e-curl.(gptel-bedrock--curl-vers
1e540 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 61 74 20 22 62 65 ion)))...(let.((host.(format."be
1e560 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 2e 63 6f 6d 22 20 drock-runtime.%s.amazonaws.com".
1e580 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 2d 67 65 74 20 6e region))).....(setf.(alist-get.n
1e5a0 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 6e 69 6c 20 6e 69 ame.gptel--known-backends.nil.ni
1e5c0 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 6c 2d 2d 6d 61 6b l.#'equal)...........(gptel--mak
1e5e0 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 20 6e 61 6d 65 0a e-bedrock............:name.name.
1e600 20 20 20 20 20 20 20 20 20 20 20 3a 68 6f 73 74 20 68 6f 73 74 0a 20 20 20 20 20 20 20 20 20 20 ...........:host.host...........
1e620 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 2d 61 6d 7a 2d 73 .:header.nil...........;.x-amz-s
1e640 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 72 6c 2d 61 72 67 ecurity-token.is.set.in.curl-arg
1e660 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 64 65 6c 73 20 28 s.if.needed............:models.(
1e680 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 09 20 gptel--process-models.models)...
1e6a0 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 6f 6e 0a 20 20 20 ..:model-region.model-region....
1e6c0 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 20 ........:protocol.protocol......
1e6e0 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 73 20 64 79 6e 61 ......:endpoint."".;.Url.is.dyna
1e700 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 6f 6e 20 6f 74 68 mically.constructed.based.on.oth
1e720 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 20 73 74 72 65 61 er.args............:stream.strea
1e740 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 6d 20 28 61 6e 64 m............:coding-system.(and
1e760 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 20 20 3a 63 75 72 .stream.'binary)............:cur
1e780 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 63 75 72 6c 2d 61 l-args.(lambda.().(append.curl-a
1e7a0 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 72 67 73 20 72 65 rgs.(gptel-bedrock--curl-args.re
1e7c0 67 69 6f 6e 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 3a 75 72 6c 0a 20 20 20 20 20 20 20 20 gion)))............:url.........
1e7e0 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 28 63 6f 6e 63 ...(lambda.()..............(conc
1e800 61 74 20 70 72 6f 74 6f 63 6f 6c 20 22 3a 2f 2f 22 20 68 6f 73 74 0a 20 20 20 20 20 20 20 20 20 at.protocol."://".host..........
1e820 20 20 20 20 20 20 20 20 20 20 20 20 22 2f 6d 6f 64 65 6c 2f 22 20 28 67 70 74 65 6c 2d 62 65 64 ............"/model/".(gptel-bed
1e840 72 6f 63 6b 2d 2d 67 65 74 2d 6d 6f 64 65 6c 2d 69 64 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 20 6d rock--get-model-id.gptel-model.m
1e860 6f 64 65 6c 2d 72 65 67 69 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 odel-region)....................
1e880 20 20 22 2f 22 20 28 69 66 20 73 74 72 65 61 6d 20 22 63 6f 6e 76 65 72 73 65 2d 73 74 72 65 61 .."/".(if.stream."converse-strea
1e8a0 6d 22 20 22 63 6f 6e 76 65 72 73 65 22 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 29 29 29 29 m"."converse")))............))))
1e8c0 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 3b 3b 20 67 ..(provide.'gptel-bedrock).;;;.g
1e8e0 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 00 00 00 00 ptel-bedrock.el.ends.here.......
1e900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1e920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1e940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1e960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1e980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1e9a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1e9c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1e9e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ea00 67 70 74 65 6c 2d 30 2e 39 2e 38 2e 35 2f 67 70 74 65 6c 2d 6f 6c 6c 61 6d 61 2e 65 6c 00 00 00 gptel-0.9.8.5/gptel-ollama.el...
1ea20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ea40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ea60 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
1ea80 30 30 33 33 37 30 32 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 34 33 35 32 00 20 30 00 00 00 0033702.00000000000.014352..0...
1eaa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1eac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1eae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1eb00 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...................
1eb20 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...................
1eb40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1eb60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1eb80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1eba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ebc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ebe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ec00 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
1ec20 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
1ec40 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.(
1ec60 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
1ec80 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
1eca0 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>
1ecc0 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
1ece0 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.
1ed00 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
1ed20 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
1ed40 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
1ed60 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
1ed80 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
1eda0 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
1edc0 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
1ede0 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
1ee00 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
1ee20 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
1ee40 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
1ee60 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.
1ee80 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.;;.
1eea0 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
1eec0 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
1eee0 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
1ef00 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
1ef20 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
1ef40 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/>...;;
1ef60 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
1ef80 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.
1efa0 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
1efc0 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
1efe0 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".(
1f000 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
1f020 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
1f040 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
1f060 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
1f080 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.
1f0a0 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
1f0c0 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)...
1f0e0 20 20 20 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
1f100 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).........................
1f120 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)))..
1f140 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
1f160 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
1f180 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.
1f1a0 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
1f1c0 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
1f1e0 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
1f200 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
1f220 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
1f240 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
1f260 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
1f280 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."..
1f2a0 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
1f2c0 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-
1f2e0 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)
1f300 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
1f320 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.
1f340 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)
1f360 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))...
1f380 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
1f3a0 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
1f3c0 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.'
1f3e0 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))))..........
1f400 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.
1f420 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)))...............
1f440 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))...
1f460 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
1f480 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
1f4a0 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
1f4c0 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
1f4e0 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..........
1f500 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.
1f520 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)..
1f540 20 20 20 20 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.(
1f560 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))
1f580 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
1f5a0 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
1f5c0 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
1f5e0 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
1f600 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.((
1f620 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.
1f640 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
1f660 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
1f680 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
1f6a0 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
1f6c0 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
1f6e0 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.
1f700 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
1f720 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*.((
1f740 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
1f760 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-
1f780 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 69 66 20 get.message.:content))).....(if.
1f7a0 28 61 6e 64 20 63 6f 6e 74 65 6e 74 20 28 6e 6f 74 20 28 6f 72 20 28 65 71 20 63 6f 6e 74 65 6e (and.content.(not.(or.(eq.conten
1f7c0 74 20 3a 6e 75 6c 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 t.:null).(string-empty-p.content
1f7e0 29 29 29 29 0a 20 20 20 20 20 20 20 20 63 6f 6e 74 65 6e 74 0a 20 20 20 20 20 20 28 70 72 6f 67 )))).........content.......(prog
1f800 31 20 6e 69 6c 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 20 4c 1.nil........................;.L
1f820 6f 6f 6b 20 66 6f 72 20 74 6f 6f 6c 20 63 61 6c 6c 73 20 6f 6e 6c 79 20 69 66 20 6e 6f 20 63 6f ook.for.tool.calls.only.if.no.co
1f840 6e 74 65 6e 74 0a 20 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 ntent.........(when-let*.((tool-
1f860 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 6f 6f 6c 5f 63 calls.(plist-get.message.:tool_c
1f880 61 6c 6c 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20 46 69 72 73 74 20 61 64 64 20 74 alls)))...........;;.First.add.t
1f8a0 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 69 73 74 he.tool.call.to.the.prompts.list
1f8c0 0a 20 20 20 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 ...........(let*.((data.(plist-g
1f8e0 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 20 20 20 20 20 20 et.info.:data)).................
1f900 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 73 61 .(prompts.(plist-get.data.:messa
1f920 67 65 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 64 61 ges))).............(plist-put.da
1f940 74 61 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 ta.:messages.(vconcat.prompts.`(
1f960 2c 6d 65 73 73 61 67 65 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20 54 68 65 6e 20 63 ,message))))...........;;.Then.c
1f980 61 70 74 75 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 apture.the.tool.call.data.for.ru
1f9a0 6e 6e 69 6e 67 20 74 68 65 20 74 6f 6f 6c 0a 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 6c 6f 6f nning.the.tool...........(cl-loo
1f9c0 70 0a 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 74 6f 6f 6c 2d 63 61 6c 6c 20 61 63 72 6f 73 p............for.tool-call.acros
1f9e0 73 20 74 6f 6f 6c 2d 63 61 6c 6c 73 20 3b 72 65 70 6c 61 63 65 20 22 3a 61 72 67 75 6d 65 6e 74 s.tool-calls.;replace.":argument
1fa00 73 22 20 77 69 74 68 20 22 3a 61 72 67 73 22 0a 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 63 s".with.":args"............for.c
1fa20 61 6c 6c 2d 73 70 65 63 20 3d 20 28 63 6f 70 79 2d 73 65 71 75 65 6e 63 65 20 28 70 6c 69 73 74 all-spec.=.(copy-sequence.(plist
1fa40 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 29 0a 20 20 20 20 20 -get.tool-call.:function))......
1fa60 20 20 20 20 20 20 64 6f 20 28 70 6c 69 73 74 2d 70 75 74 20 63 61 6c 6c 2d 73 70 65 63 20 3a 61 ......do.(plist-put.call-spec.:a
1fa80 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 28 70 6c rgs..........................(pl
1faa0 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 6e 74 73 29 29 0a 20 ist-get.call-spec.:arguments))..
1fac0 20 20 20 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 63 20 3a ..........(plist-put.call-spec.:
1fae0 61 72 67 75 6d 65 6e 74 73 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 63 6f 6c 6c 65 63 arguments.nil)............collec
1fb00 74 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 t.call-spec.into.tool-use.......
1fb20 20 20 20 20 20 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 .....finally.(plist-put.info.:to
1fb40 6f 6c 2d 75 73 65 20 74 6f 6f 6c 2d 75 73 65 29 29 29 29 29 29 29 0a 0a 28 63 6c 2d 64 65 66 6d ol-use.tool-use)))))))..(cl-defm
1fb60 65 74 68 6f 64 20 67 70 74 65 6c 2d 2d 72 65 71 75 65 73 74 2d 64 61 74 61 20 28 28 62 61 63 6b ethod.gptel--request-data.((back
1fb80 65 6e 64 20 67 70 74 65 6c 2d 6f 6c 6c 61 6d 61 29 20 70 72 6f 6d 70 74 73 29 0a 20 20 22 4a 53 end.gptel-ollama).prompts)..."JS
1fba0 4f 4e 20 65 6e 63 6f 64 65 20 50 52 4f 4d 50 54 53 20 66 6f 72 20 73 65 6e 64 69 6e 67 20 74 6f ON.encode.PROMPTS.for.sending.to
1fbc0 20 4f 6c 6c 61 6d 61 2e 22 0a 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d .Ollama."...(when.gptel--system-
1fbe0 6d 65 73 73 61 67 65 0a 20 20 20 20 28 70 75 73 68 20 28 6c 69 73 74 20 3a 72 6f 6c 65 20 22 73 message.....(push.(list.:role."s
1fc00 79 73 74 65 6d 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 6f 6e 74 65 6e 74 20 ystem".................:content.
1fc20 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 20 gptel--system-message)..........
1fc40 20 70 72 6f 6d 70 74 73 29 29 0a 20 20 28 6c 65 74 2a 20 28 28 70 72 6f 6d 70 74 73 2d 70 6c 69 .prompts))...(let*.((prompts-pli
1fc60 73 74 0a 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 6d 65 72 67 65 2d 70 6c 69 73 74 st...........(gptel--merge-plist
1fc80 73 0a 20 20 20 20 20 20 20 20 20 20 20 60 28 3a 6d 6f 64 65 6c 20 2c 28 67 70 74 65 6c 2d 2d 6d s............`(:model.,(gptel--m
1fca0 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 20 20 20 20 odel-name.gptel-model)..........
1fcc0 20 20 20 20 3a 6d 65 73 73 61 67 65 73 20 5b 2c 40 70 72 6f 6d 70 74 73 5d 0a 20 20 20 20 20 20 ....:messages.[,@prompts].......
1fce0 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 6d .......:stream.,(or.gptel-stream
1fd00 20 3a 6a 73 6f 6e 2d 66 61 6c 73 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c .:json-false))............(gptel
1fd20 2d 62 61 63 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 -backend-request-params.gptel-ba
1fd40 63 6b 65 6e 64 29 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 ckend)............(gptel--model-
1fd60 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 0a 20 request-params..gptel-model)))..
1fd80 20 20 20 20 20 20 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 ........;;.the.initial.options.(
1fda0 69 66 20 61 6e 79 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 if.any).from.request.params.....
1fdc0 20 20 20 20 20 28 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 .....(options-plist.(plist-get.p
1fde0 72 6f 6d 70 74 73 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 rompts-plist.:options)))......(w
1fe00 68 65 6e 20 28 61 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 hen.(and.gptel-use-tools.gptel-t
1fe20 6f 6f 6c 73 29 0a 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 ools).......;;.TODO(tool):.Find.
1fe40 6f 75 74 20 68 6f 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 out.how.to.force.tool.use.for.Ol
1fe60 6c 61 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 70 6c lama.......(plist-put.prompts-pl
1fe80 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 67 70 74 ist.:tools..................(gpt
1fea0 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 6f el--parse-tools.backend.gptel-to
1fec0 6f 6c 73 29 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 2d 70 ols)).......(plist-put.prompts-p
1fee0 6c 69 73 74 20 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 3b list.:stream.:json-false)).....;
1ff00 3b 20 69 66 20 74 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 ;.if.the.temperature.and.max-tok
1ff20 65 6e 73 20 61 72 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 ens.aren't.set.as.....;;.backend
1ff40 2f 6d 6f 64 65 6c 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 /model-specific,.use.the.global.
1ff60 73 65 74 74 69 6e 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 settings.....(when.(and.gptel-te
1ff80 6d 70 65 72 61 74 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 mperature.(not.(plist-get.option
1ffa0 73 2d 70 6c 69 73 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 s-plist.:temperature))).......(s
1ffc0 65 74 71 20 6f 70 74 69 6f 6e 73 2d 70 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 etq.options-plist.............(p
1ffe0 6c 69 73 74 2d 70 75 74 20 6f 70 74 69 6f 6e 73 2d 70 6c 69 73 74 20 3a 74 65 6d 70 65 72 61 74 list-put.options-plist.:temperat
20000 75 72 65 20 67 70 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 ure.gptel-temperature))).....(wh
20020 65 6e 20 28 61 6e 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 en.(and.gptel-max-tokens.(not.(p
20040 6c 69 73 74 2d 67 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 list-get.options-plist.:num_pred
20060 69 63 74 29 29 29 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 ict))).......(setq.options-plist
20080 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 6f 70 74 69 6f 6e 73 2d .............(plist-put.options-
200a0 70 6c 69 73 74 20 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 plist.:num_predict.gptel-max-tok
200c0 65 6e 73 29 29 29 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 ens))).....(plist-put.prompts-pl
200e0 69 73 74 20 3a 6f 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 ist.:options.options-plist)))..;
20100 3b 20 4e 4f 54 45 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 ;.NOTE:.No.`gptel--parse-tools'.
20120 6d 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 method.required.for.gptel-ollama
20140 2c 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 ,.since.this.is.;;.handled.by.it
20160 73 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 s.defgeneric.implementation..(cl
20180 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 73 -defmethod.gptel--parse-tool-res
201a0 75 6c 74 73 20 28 28 5f 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 6f 6c 6c 61 6d 61 29 20 74 6f ults.((_backend.gptel-ollama).to
201c0 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 61 ol-use)..."Return.a.prompt.conta
201e0 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 2d ining.tool.call.results.in.TOOL-
20200 55 53 45 2e 22 0a 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 USE."...(mapcar.(lambda.(tool-ca
20220 6c 6c 29 0a 20 20 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 ll).............(list.:role."too
20240 6c 22 20 3a 63 6f 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 l".:content.(plist-get.tool-call
20260 20 3a 72 65 73 75 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 .:result)))...........tool-use))
20280 0a 0a 3b 3b 20 4e 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 ..;;.NOTE:.No.`gptel--inject-pro
202a0 6d 70 74 27 20 6d 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 mpt'.method.required.for.gptel-o
202c0 6c 6c 61 6d 61 2c 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 llama,.since.this.is.;;.handled.
202e0 62 79 20 69 74 73 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 by.its.defgeneric.implementation
20300 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
20320 74 20 28 28 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 6f 6c 6c 61 6d 61 29 20 70 72 6f 6d 70 74 t.((backend.gptel-ollama).prompt
20340 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-
20360 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)
20380 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
203a0 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.
203c0 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
203e0 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
20400 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
20420 74 20 3a 72 6f 6c 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 t.:role."user".:content.(or.(car
20440 2d 73 61 66 65 20 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 -safe.msg).msg))................
20460 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 20 28 60 ....full-prompt)).............(`
20480 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 20 20 28 (response...,msg)..............(
204a0 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 6f push.(list.:role."assistant".:co
204c0 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 29 0a 20 ntent.(or.(car-safe.msg).msg))..
204e0 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 29 0a ..................full-prompt)).
20500 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 20 20 ............(`(tool...,call)....
20520 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 61 73 73 ..........(push.(list.:role."ass
20540 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 20 20 20 20 istant".........................
20560 20 3a 63 6f 6e 74 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 .:content.""....................
20580 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 20 28 ......:tool_calls.`[(:function.(
205a0 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)...
205c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
205e0 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 28 70 6c .................:arguments.,(pl
20600 69 73 74 2d 67 65 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 ist-get.call.:args)))]).........
20620 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 20 20 ...........full-prompt).........
20640 20 20 20 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 .....(push.(car.(gptel--parse-to
20660 6f 6c 2d 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 ol-results.backend.(list.(cdr.en
20680 74 72 79 29 29 29 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 try))))....................full-
206a0 70 72 6f 6d 70 74 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 prompt)))).........(nreverse.ful
206c0 6c 2d 70 72 6f 6d 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 l-prompt)).....(cl-loop.for.text
206e0 20 69 6e 20 70 72 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 .in.prompt-list....;.Simple.form
20700 61 74 2c 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 at,.list.of.strings.............
20720 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 29 0a 20 20 .for.role.=.t.then.(not.role)...
20740 20 20 20 20 20 20 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 ...........if.text.collect......
20760 20 20 20 20 20 20 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 ........(list.:role.(if.role."us
20780 65 72 22 20 22 61 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 er"."assistant").:content.text))
207a0 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 62 ))..(cl-defmethod.gptel--parse-b
207c0 75 66 66 65 72 20 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 uffer.((backend.gptel-ollama).&o
207e0 70 74 69 6f 6e 61 6c 20 6d 61 78 2d 65 6e 74 72 69 65 73 29 0a 20 20 28 6c 65 74 20 28 28 70 72 ptional.max-entries)...(let.((pr
20800 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 28 69 ompts).(prev-pt.(point))).....(i
20820 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 65 73 f.(or.gptel-mode.gptel-track-res
20840 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 20 28 ponse).........(while.(and.(or.(
20860 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 65 73 not.max-entries).(>=.max-entries
20880 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 2d 63 .0)).....................(goto-c
208a0 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
208c0 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............................
208e0 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
20900 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 20 28 in))).....................(not.(
20920 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 20 28 =.(point).prev-pt)))...........(
20940 70 63 61 73 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 pcase.(get-char-property.(point)
20960 20 27 67 70 74 65 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 .'gptel).............('response.
20980 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
209a0 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 20 20 20 20 20 20 t.(gptel--trim-prefixes.........
209c0 20 20 20 20 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
209e0 65 72 2d 73 75 62 73 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 20 28 70 6f 69 6e er-substring-no-properties.(poin
20a00 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 20 20 20 28 70 t).prev-pt))))................(p
20a20 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 6f 6e ush.(list.:role."assistant".:con
20a40 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 20 20 20 20 tent.content).prompts)))........
20a60 20 20 20 20 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 .....(`(tool...,_id)............
20a80 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...............
20aa0 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 20 .(condition-case.nil............
20ac0 20 20 20 20 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 ........(let*.((tool-call.(read.
20ae0 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 20 20 20 20 20 (current-buffer)))..............
20b00 20 20 20 20 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 .............(name.(plist-get.to
20b20 6f 6c 2d 63 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 ol-call.:name)).................
20b40 20 20 20 20 20 20 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 ..........(arguments.(plist-get.
20b60 74 6f 6f 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 tool-call.:args)))..............
20b80 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 3a 72 65 ........(plist-put.tool-call.:re
20ba0 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 20 20 20 20 sult............................
20bc0 20 20 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 .....(string-trim.(buffer-substr
20be0 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...............
20c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
20c20 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 20 20 20 20 (point).prev-pt)))..............
20c40 20 20 20 20 20 20 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 ........(push.(car.(gptel--parse
20c60 2d 74 6f 6f 6c 2d 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 -tool-results.backend.(list.tool
20c80 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 20 20 20 20 20 20 -call)))........................
20ca0 20 20 20 20 70 72 6f 6d 70 74 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ....prompts)....................
20cc0 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 22 0a ..(push.(list.:role."assistant".
20ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
20d00 20 3a 63 6f 6e 74 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 .:content.""....................
20d20 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 20 60 5b 28 3a 66 75 ..............:tool_calls.`[(:fu
20d40 6e 63 74 69 6f 6e 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 nction.(:name.,name.:arguments.,
20d60 61 72 67 75 6d 65 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 arguments))])...................
20d80 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 20 20 20 .........prompts))..............
20da0 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 73 ....((end-of-file.invalid-read-s
20dc0 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 73 73 61 67 yntax)...................(messag
20de0 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 6f 6c 2d e.(format."Could.not.parse.tool-
20e00 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 20 20 20 20 call.on.line.%s"................
20e20 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 6d 62 65 72 ....................(line-number
20e40 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 20 20 20 20 -at-pos.(point))))))))..........
20e60 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 69 6c 0a 20 ...('ignore).............('nil..
20e80 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 6d 65 64 69 ............(if.gptel-track-medi
20ea0 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 2a 20 28 28 a..................(when-let*.((
20ec0 63 6f 6e 74 65 6e 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 content.(gptel--ollama-parse-mul
20ee0 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 20 20 20 20 tipart..........................
20f00 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 6d 65 64 69 ..............(gptel--parse-medi
20f20 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 72 65 76 2d a-links.major-mode.(point).prev-
20f40 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 68 65 6e 20 pt))))....................(when.
20f60 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 20 20 20 20 (>.(length.content).0)..........
20f80 20 20 20 20 20 20 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 ............(push.(append.'(:rol
20fa0 65 20 22 75 73 65 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 e."user").content).prompts)))...
20fc0 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
20fe0 74 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 t.(gptel--trim-prefixes.(buffer-
21000 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 20 20 20 20 substring-no-properties.........
21020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
21040 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 20 70 72 65 76 2d ...................(point).prev-
21060 70 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 pt))))..................(push.(l
21080 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 74 65 6e ist.:role."user".:content.conten
210a0 74 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 t).prompts)))))...........(setq.
210c0 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.
210e0 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
21100 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
21120 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
21140 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...........................
21160 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)
21180 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."
211a0 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 74 73 29 user".:content.content).prompts)
211c0 29 29 0a 20 20 20 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 )).....prompts))..(defun.gptel--
211e0 6f 6c 6c 61 6d 61 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 ollama-parse-multipart.(parts)..
21200 20 22 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 ."Convert.a.multipart.prompt.PAR
21220 54 53 20 74 6f 20 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 TS.to.the.Ollama.API.format...Th
21240 65 20 69 6e 70 75 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 e.input.is.an.alist.of.the.form.
21260 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
21280 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.\
212a0 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
212c0 78 74 5c 22 29 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 xt\"))...The.output.is.a.vector.
212e0 6f 66 20 65 6e 74 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 of.entries.in.a.backend-appropri
21300 61 74 65 0a 66 6f 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 ate.format."...(cl-loop....for.p
21320 61 72 74 20 69 6e 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 art.in.parts....for.n.upfrom.1..
21340 20 20 77 69 74 68 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 ..with.last.=.(length.parts)....
21360 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 65 78 74 for.text.=.(plist-get.part.:text
21380 29 0a 20 20 20 66 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 )....for.media.=.(plist-get.part
213a0 20 3a 6d 65 64 69 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 .:media)....if.text.do....(and.(
213c0 6f 72 20 28 3d 20 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 or.(=.n.1).(=.n.last)).(setq.tex
213e0 74 20 28 67 70 74 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 t.(gptel--trim-prefixes.text))).
21400 61 6e 64 0a 20 20 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 and....if.text....collect.text.i
21420 6e 74 6f 20 74 65 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 nto.text-array.end....else.if.me
21440 64 69 61 0a 20 20 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 dia....collect.(gptel--base64-en
21460 63 6f 64 65 20 6d 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 code.media).into.media-array....
21480 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 78 74 66 69 6c else.if.(plist-get.part.:textfil
214a0 65 29 0a 20 20 20 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 e)....collect....(with-temp-buff
214c0 65 72 0a 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 er......(gptel--insert-file-stri
214e0 6e 67 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 29 0a 20 ng.(plist-get.part.:textfile))..
21500 20 20 20 20 28 62 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 ....(buffer-string))....into.tex
21520 74 2d 61 72 72 61 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 t-array....finally.return....`(,
21540 40 28 61 6e 64 20 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 @(and.text-array..(list.:content
21560 20 28 6d 61 70 63 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 .(mapconcat.#'identity.text-arra
21580 79 20 22 20 22 29 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 y.".")))......,@(and.media-array
215a0 20 28 6c 69 73 74 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 .(list.:images..(vconcat.media-a
215c0 72 72 61 79 29 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 rray))))))..(cl-defmethod.gptel-
215e0 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 67 70 74 -wrap-user-prompt.((_backend.gpt
21600 65 6c 2d 6f 6c 6c 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 el-ollama).prompts..............
21620 20 20 20 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 ..........................&optio
21640 6e 61 6c 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 nal.inject-media)..."Wrap.the.la
21660 73 74 20 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 st.user.prompt.in.PROMPTS.with.t
21680 68 65 20 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 he.context.string...If.INJECT-ME
216a0 44 49 41 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 DIA.is.non-nil.wrap.it.with.base
216c0 36 34 2d 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 64-encoded.media.files.in.the.co
216e0 6e 74 65 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 ntext."...(if.inject-media......
21700 20 3b 3b 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 .;;.Wrap.the.first.user.prompt.w
21720 69 74 68 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 ith.included.media.files/context
21740 73 0a 20 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 s.......(when-let*.((media-list.
21760 28 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 29 29 0a (gptel-context--collect-media)).
21780 20 20 20 20 20 20 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 ..................(media-process
217a0 65 64 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 ed.(gptel--ollama-parse-multipar
217c0 74 20 6d 65 64 69 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 t.media-list))).........(cl-call
217e0 66 20 28 6c 61 6d 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 f.(lambda.(images)..............
21800 20 20 20 20 20 20 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 .......(vconcat.(plist-get.media
21820 2d 70 72 6f 63 65 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 -processed.:images).............
21840 20 20 20 20 20 20 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 .................images)).......
21860 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 3a ......(plist-get.(car.prompts).:
21880 69 6d 61 67 65 73 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 images))).....;;.Wrap.the.last.u
218a0 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 63 6f ser.prompt.with.included.text.co
218c0 6e 74 65 78 74 73 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 ntexts.....(cl-callf.gptel-conte
218e0 78 74 2d 2d 77 72 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 xt--wrap.(plist-get.(car.(last.p
21900 72 6f 6d 70 74 73 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 rompts)).:content))))..;;;###aut
21920 6f 6c 6f 61 64 0a 28 63 6c 2d 64 65 66 75 6e 20 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 6c 6c 61 6d oload.(cl-defun.gptel-make-ollam
21940 61 0a 20 20 20 20 28 6e 61 6d 65 20 26 6b 65 79 20 63 75 72 6c 2d 61 72 67 73 20 68 65 61 64 65 a.....(name.&key.curl-args.heade
21960 72 20 6b 65 79 20 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 r.key.models.stream.request-para
21980 6d 73 0a 20 20 20 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 ms...........(host."localhost:11
219a0 34 33 34 22 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 74 6f 63 6f 6c 20 22 68 74 74 70 22 434")...........(protocol."http"
219c0 29 0a 20 20 20 20 20 20 20 20 20 20 28 65 6e 64 70 6f 69 6e 74 20 22 2f 61 70 69 2f 63 68 61 74 )...........(endpoint."/api/chat
219e0 22 29 29 0a 20 20 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 "))..."Register.an.Ollama.backen
21a00 64 20 66 6f 72 20 67 70 74 65 6c 20 77 69 74 68 20 4e 41 4d 45 2e 0a 0a 4b 65 79 77 6f 72 64 20 d.for.gptel.with.NAME...Keyword.
21a20 61 72 67 75 6d 65 6e 74 73 3a 0a 0a 43 55 52 4c 2d 41 52 47 53 20 28 6f 70 74 69 6f 6e 61 6c 29 arguments:..CURL-ARGS.(optional)
21a40 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 61 64 64 69 74 69 6f 6e 61 6c 20 43 75 72 6c 20 61 72 .is.a.list.of.additional.Curl.ar
21a60 67 75 6d 65 6e 74 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 guments...HOST.is.where.Ollama.r
21a80 75 6e 73 20 28 77 69 74 68 20 70 6f 72 74 29 2c 20 64 65 66 61 75 6c 74 73 20 74 6f 20 6c 6f 63 uns.(with.port),.defaults.to.loc
21aa0 61 6c 68 6f 73 74 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 alhost:11434..MODELS.is.a.list.o
21ac0 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 73 79 6d 62 f.available.model.names,.as.symb
21ae0 6f 6c 73 2e 0a 41 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 ols..Additionally,.you.can.speci
21b00 66 79 20 73 75 70 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 fy.supported.LLM.capabilities.li
21b20 6b 65 0a 76 69 73 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 ke.vision.or.tool-use.by.appendi
21b40 6e 67 20 61 20 70 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 ng.a.plist.to.the.model.with.mor
21b60 65 0a 69 6e 66 6f 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 e.information,.in.the.form...(mo
21b80 64 65 6c 2d 6e 61 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 del-name...plist)..Currently.rec
21ba0 6f 67 6e 69 7a 65 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 ognized.plist.keys.are.:descript
21bc0 69 6f 6e 2c 20 3a 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 ion,.:capabilities.and.:mime-typ
21be0 65 73 2e 20 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 69 es...An.example.of.a.model.speci
21c00 66 69 63 61 74 69 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 fication.including.both.kinds.of
21c20 20 73 70 65 63 73 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 .specs:..:models.\\='(mistral:la
21c40 74 65 73 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 3b 53 69 6d test........................;Sim
21c60 70 6c 65 20 73 70 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 ple.specs...openhermes:latest...
21c80 28 6c 6c 61 76 61 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 (llava:13b......................
21ca0 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
21cc0 0a 20 20 20 5c 22 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 ....\"Llava.1.6:.Large.Lanuage.a
21ce0 6e 64 20 56 69 73 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 nd.Vision.Assistant\"....:capabi
21d00 6c 69 74 69 65 73 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 lities.(media)....:mime-types.(\
21d20 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 29 29 29 0a 0a "image/jpeg\".\"image/png\")))..
21d40 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 20 73 .STREAM.is.a.boolean.to.toggle.s
21d60 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 6f 0a treaming.responses,.defaults.to.
21d80 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 65 63 false...PROTOCOL.(optional).spec
21da0 69 66 69 65 73 20 74 68 65 20 70 72 6f 74 6f 63 6f 6c 2c 20 68 74 74 70 20 62 79 20 64 65 66 61 ifies.the.protocol,.http.by.defa
21dc0 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 74 68 65 ult...ENDPOINT.(optional).is.the
21de0 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 2c 20 64 .API.endpoint.for.completions,.d
21e00 65 66 61 75 6c 74 73 20 74 6f 0a 5c 22 2f 61 70 69 2f 67 65 6e 65 72 61 74 65 5c 22 2e 0a 0a 48 efaults.to.\"/api/generate\"...H
21e20 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
21e40 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
21e60 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.
21e80 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,
21ea0 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
21ec0 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
21ee0 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
21f00 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
21f20 65 74 75 72 6e 73 20 74 68 65 20 6b 65 79 2e 20 20 54 68 69 73 20 69 73 20 74 79 70 69 63 61 6c eturns.the.key...This.is.typical
21f40 6c 79 20 6e 6f 74 20 72 65 71 75 69 72 65 64 0a 66 6f 72 20 6c 6f 63 61 6c 20 6d 6f 64 65 6c 73 ly.not.required.for.local.models
21f60 20 6c 69 6b 65 20 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 .like.Ollama...REQUEST-PARAMS.(o
21f80 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 6e 61 ptional).is.a.plist.of.additiona
21fa0 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 6c l.HTTP.request.parameters.(as.pl
21fc0 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 62 ist.keys).and.values.supported.b
21fe0 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 61 72 y.the.API...Use.these.to.set.par
22000 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 6f 76 ameters.that.gptel.does.not.prov
22020 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 3a 0a ide.user.options.for...Example:.
22040 2d 2d 2d 2d 2d 2d 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 -------...(gptel-make-ollama....
22060 5c 22 4f 6c 6c 61 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 \"Ollama\"....:host.\"localhost:
22080 31 31 34 33 34 5c 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 11434\"....:models.\\='(mistral:
220a0 6c 61 74 65 73 74 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 latest)....:stream.t)"...(declar
220c0 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 28 e.(indent.1))...(let.((backend.(
220e0 67 70 74 65 6c 2d 2d 6d 61 6b 65 2d 6f 6c 6c 61 6d 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 gptel--make-ollama..............
22100 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 20 .....:curl-args.curl-args.......
22120 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 20 ............:name.name..........
22140 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 20 .........:host.host.............
22160 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 20 ......:header.header............
22180 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 20 .......:key.key.................
221a0 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 73 ..:models.(gptel--process-models
221c0 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 74 .models)...................:prot
221e0 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...................
22200 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..............
22220 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.............
22240 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
22260 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.
22280 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........................
222a0 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.
222c0 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).......................
222e0 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)))))...
22300 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
22320 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
22340 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
22360 6c 20 23 27 65 71 75 61 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 61 63 l.#'equal)...................bac
22380 6b 65 6e 64 29 29 29 29 0a 0a 28 70 72 6f 76 69 64 65 20 27 67 70 74 65 6c 2d 6f 6c 6c 61 6d 61 kend))))..(provide.'gptel-ollama
223a0 29 0a 3b 3b 3b 20 67 70 74 65 6c 2d 6f 6c 6c 61 6d 61 2e 65 6c 20 65 6e 64 73 20 68 65 72 65 0a ).;;;.gptel-ollama.el.ends.here.
223c0 0a 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 00 ................................
223e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
22400 67 70 74 65 6c 2d 30 2e 39 2e 38 2e 35 2f 67 70 74 65 6c 2d 63 75 72 6c 2e 65 6c 00 00 00 00 00 gptel-0.9.8.5/gptel-curl.el.....
22420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
22440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
22460 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
22480 30 30 35 33 33 36 31 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 34 30 35 35 00 20 30 00 00 00 0053361.00000000000.014055..0...
224a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
224c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
224e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
22500 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...................
22520 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...................
22540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
22560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
22580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
225a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
225c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
225e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
22600 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
22620 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
22640 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.(
22660 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
22680 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
226a0 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
226c0 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..;;.
226e0 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
22700 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
22720 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
22740 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
22760 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
22780 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
227a0 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
227c0 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.
227e0 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
22800 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
22820 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.
22840 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
22860 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
22880 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.
228a0 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
228c0 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
228e0 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...;
22900 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
22920 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
22940 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..
22960 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
22980 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:..
229a0 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
229c0 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
229e0 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.
22a00 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.'
22a20 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
22a40 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".()).
22a60 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
22a80 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
22aa0 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")..(
22ac0 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.
22ae0 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
22b00 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
22b20 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,.
22b40 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
22b60 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
22b80 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.
22ba0 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
22bc0 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
22be0 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
22c00 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
22c20 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
22c40 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
22c60 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'
22c80 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
22ca0 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
22cc0 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
22ce0 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))...
22d00 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"."
22d20 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
22d40 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
22d60 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
22d80 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
22da0 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
22dc0 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
22de0 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-
22e00 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
22e20 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.
22e40 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
22e60 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
22e80 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
22ea0 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
22ec0 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
22ee0 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.......
22f00 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
22f20 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........
22f40 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
22f60 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
22f80 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))....
22fa0 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
22fc0 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))
22fe0 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
23000 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)...................
23020 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
23040 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).................
23060 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))....
23080 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)))...
230a0 20 20 20 20 20 20 20 28 64 61 74 61 2d 6a 73 6f 6e 20 28 65 6e 63 6f 64 65 2d 63 6f 64 69 6e 67 .......(data-json.(encode-coding
230c0 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
230e0 29 20 27 75 74 66 2d 38 29 29 0a 20 20 20 20 20 20 20 20 20 28 68 65 61 64 65 72 73 0a 20 20 20 ).'utf-8))..........(headers....
23100 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 65 22 .......(append.'(("Content-Type"
23120 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 20 20 ..."application/json")).........
23140 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 28 67 ..........(when-let*.((header.(g
23160 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 65 6e ptel-backend-header.gptel-backen
23180 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 66 75 d))).....................(if.(fu
231a0 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 20 20 nctionp.header).................
231c0 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 72 29 ........(funcall.header).header)
231e0 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 0a 20 )))).....(when.gptel-log-level..
23200 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 27 .....(when.(eq.gptel-log-level.'
23220 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 65 debug).........(gptel--log.(gpte
23240 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 20 20 l--json-encode..................
23260 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 6e 73 ....(mapcar.(lambda.(pair).(cons
23280 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 29 29 .(intern.(car.pair)).(cdr.pair))
232a0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 )..............................h
232c0 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 72 65 eaders))....................."re
232e0 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 2d 6c quest.headers")).......(gptel--l
23300 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 20 20 og.data-json."request.body"))...
23320 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 6d 6f ..(append......gptel-curl--commo
23340 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 72 67 n-args......gptel-curl-extra-arg
23360 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 67 70 s......(and-let*.((curl-args.(gp
23380 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 63 75 72 6c 2d 61 72 67 73 20 67 70 74 65 6c 2d 62 61 63 6b tel-backend-curl-args.gptel-back
233a0 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 75 72 end)))........(if.(functionp.cur
233c0 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 72 6c l-args).(funcall.curl-args).curl
233e0 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 28 25 -args))......(list.(format."-w(%
23400 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 20 20 s...%%{size_header})".token))...
23420 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 6c 2d ...(if.(length<.data-json.gptel-
23440 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 20 20 curl-file-size-threshold).......
23460 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 73 6f ...(list.(format."-d%s".data-jso
23480 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 28 28 n))........(letrec............((
234a0 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 22 67 temp-filename.(make-temp-file."g
234c0 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 74 61 ptel-curl-data".nil.".json".data
234e0 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 6e 20 -json)).............(cleanup-fn.
23500 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 20 20 (lambda.(&rest._)...............
23520 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 2d 70 ............(when.(file-exists-p
23540 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 20 20 .temp-filename).................
23560 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 66 69 ............(delete-file.temp-fi
23580 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 20 20 lename).........................
235a0 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 73 ....(remove-hook.'gptel-post-res
235c0 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 29 0a ponse-functions.cleanup-fn))))).
235e0 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 2d 72 .........(add-hook.'gptel-post-r
23600 65 73 70 6f 6e 73 65 2d 66 75 6e 63 74 69 6f 6e 73 20 63 6c 65 61 6e 75 70 2d 66 6e 29 0a 20 20 esponse-functions.cleanup-fn)...
23620 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 20 20 .......(list."--data-binary"....
23640 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 2d 66 ............(format."@%s".temp-f
23660 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 74 72 ilename))))......(when.(not.(str
23680 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 20 20 ing-empty-p.gptel-proxy)).......
236a0 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 20 20 .(list."--proxy".gptel-proxy....
236c0 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 20 20 .........."--proxy-negotiate"...
236e0 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 29 0a ..........."--proxy-user".":")).
23700 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 69 6e .....(cl-loop.for.(key...val).in
23720 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 20 28 .headers...............collect.(
23740 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 20 20 format."-H%s:.%s".key.val)).....
23760 20 28 6c 69 73 74 20 75 72 6c 29 29 29 29 0a 0a 3b 3b 54 4f 44 4f 3a 20 54 68 65 20 3a 74 72 61 .(list.url))))..;;TODO:.The.:tra
23780 6e 73 66 6f 72 6d 65 72 20 61 72 67 75 6d 65 6e 74 20 68 65 72 65 20 69 73 20 61 6e 20 61 6c 74 nsformer.argument.here.is.an.alt
237a0 65 72 6e 61 74 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 0a 3b 3b 60 67 70 74 65 ernate.implementation.of.;;`gpte
237c0 6c 2d 72 65 73 70 6f 6e 73 65 2d 66 69 6c 74 65 72 2d 66 75 6e 63 74 69 6f 6e 73 27 2e 20 54 68 l-response-filter-functions'..Th
237e0 65 20 74 77 6f 20 6e 65 65 64 20 74 6f 20 62 65 20 75 6e 69 66 69 65 64 2e 0a 3b 3b 3b 23 23 23 e.two.need.to.be.unified..;;;###
23800 61 75 74 6f 6c 6f 61 64 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 63 75 72 6c 2d 67 65 74 2d 72 autoload.(defun.gptel-curl-get-r
23820 65 73 70 6f 6e 73 65 20 28 66 73 6d 29 0a 20 20 22 46 65 74 63 68 20 72 65 73 70 6f 6e 73 65 20 esponse.(fsm)..."Fetch.response.
23840 74 6f 20 70 72 6f 6d 70 74 20 69 6e 20 73 74 61 74 65 20 46 53 4d 20 66 72 6f 6d 20 74 68 65 20 to.prompt.in.state.FSM.from.the.
23860 4c 4c 4d 20 75 73 69 6e 67 20 43 75 72 6c 2e 0a 0a 46 53 4d 20 69 73 20 74 68 65 20 73 74 61 74 LLM.using.Curl...FSM.is.the.stat
23880 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 73 74 2e 0a e.machine.driving.this.request..
238a0 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
238c0 67 20 74 68 69 73 20 72 65 71 75 65 73 74 2e 20 20 49 74 73 20 49 4e 46 4f 20 73 6c 6f 74 0a 63 g.this.request...Its.INFO.slot.c
238e0 6f 6e 74 61 69 6e 73 20 74 68 65 20 64 61 74 61 20 72 65 71 75 69 72 65 64 20 66 6f 72 20 73 65 ontains.the.data.required.for.se
23900 74 74 69 6e 67 20 75 70 20 74 68 65 20 72 65 71 75 65 73 74 2e 20 20 49 4e 46 4f 20 69 73 20 61 tting.up.the.request...INFO.is.a
23920 0a 70 6c 69 73 74 20 77 69 74 68 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 6b 65 79 73 2c 20 .plist.with.the.following.keys,.
23940 61 6d 6f 6e 67 20 6f 74 68 65 72 73 3a 0a 2d 20 3a 64 61 74 61 20 20 20 20 20 28 74 68 65 20 64 among.others:.-.:data.....(the.d
23960 61 74 61 20 62 65 69 6e 67 20 73 65 6e 74 29 0a 2d 20 3a 62 75 66 66 65 72 20 20 20 28 74 68 65 ata.being.sent).-.:buffer...(the
23980 20 67 70 74 65 6c 20 62 75 66 66 65 72 29 0a 2d 20 3a 70 6f 73 69 74 69 6f 6e 20 28 6d 61 72 6b .gptel.buffer).-.:position.(mark
239a0 65 72 20 61 74 20 77 68 69 63 68 20 74 6f 20 69 6e 73 65 72 74 20 74 68 65 20 72 65 73 70 6f 6e er.at.which.to.insert.the.respon
239c0 73 65 29 2e 0a 2d 20 3a 63 61 6c 6c 62 61 63 6b 20 28 6f 70 74 69 6f 6e 61 6c 2c 20 74 68 65 20 se)..-.:callback.(optional,.the.
239e0 72 65 71 75 65 73 74 20 63 61 6c 6c 62 61 63 6b 29 0a 0a 43 61 6c 6c 20 43 41 4c 4c 42 41 43 4b request.callback)..Call.CALLBACK
23a00 20 77 69 74 68 20 74 68 65 20 72 65 73 70 6f 6e 73 65 20 61 6e 64 20 49 4e 46 4f 20 61 66 74 65 .with.the.response.and.INFO.afte
23a20 72 77 61 72 64 73 2e 20 20 49 66 20 6f 6d 69 74 74 65 64 0a 74 68 65 20 72 65 73 70 6f 6e 73 65 rwards...If.omitted.the.response
23a40 20 69 73 20 69 6e 73 65 72 74 65 64 20 69 6e 74 6f 20 74 68 65 20 63 75 72 72 65 6e 74 20 62 75 .is.inserted.into.the.current.bu
23a60 66 66 65 72 20 61 66 74 65 72 20 70 6f 69 6e 74 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 74 6f 6b ffer.after.point."...(let*.((tok
23a80 65 6e 20 28 6d 64 35 20 28 66 6f 72 6d 61 74 20 22 25 73 25 73 25 73 25 73 22 0a 20 20 20 20 20 en.(md5.(format."%s%s%s%s"......
23aa0 20 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 61 6e 64 6f 6d 29 ........................(random)
23ac0 20 28 65 6d 61 63 73 2d 70 69 64 29 20 28 75 73 65 72 2d 66 75 6c 6c 2d 6e 61 6d 65 29 0a 20 20 .(emacs-pid).(user-full-name)...
23ae0 20 20 20 20 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 63 65 ...........................(rece
23b00 6e 74 2d 6b 65 79 73 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 69 6e 66 6f 20 28 67 70 74 65 nt-keys))))..........(info.(gpte
23b20 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 28 62 61 63 6b 65 l-fsm-info.fsm))..........(backe
23b40 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 6e 64 29 29 0a 20 20 nd.(plist-get.info.:backend))...
23b60 20 20 20 20 20 20 20 28 61 72 67 73 20 28 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 67 65 74 2d 61 72 .......(args.(gptel-curl--get-ar
23b80 67 73 20 69 6e 66 6f 20 74 6f 6b 65 6e 29 29 0a 20 20 20 20 20 20 20 20 20 28 73 74 72 65 61 6d gs.info.token))..........(stream
23ba0 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 20 20 .(plist-get.info.:stream))......
23bc0 20 20 20 20 28 70 72 6f 63 65 73 73 20 28 61 70 70 6c 79 20 23 27 73 74 61 72 74 2d 70 72 6f 63 ....(process.(apply.#'start-proc
23be0 65 73 73 20 22 67 70 74 65 6c 2d 63 75 72 6c 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ess."gptel-curl"................
23c00 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 74 65 6d 70 2d 62 75 66 66 65 72 20 22 20 ..........(gptel--temp-buffer.".
23c20 2a 67 70 74 65 6c 2d 63 75 72 6c 2a 22 29 20 28 67 70 74 65 6c 2d 2d 63 75 72 6c 2d 70 61 74 68 *gptel-curl*").(gptel--curl-path
23c40 29 20 61 72 67 73 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 28 65 71 20 67 70 74 65 6c 2d 6c 6f ).args))).....(when.(eq.gptel-lo
23c60 67 2d 6c 65 76 65 6c 20 27 64 65 62 75 67 29 0a 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 6c 6f g-level.'debug).......(gptel--lo
23c80 67 20 28 6d 61 70 63 6f 6e 63 61 74 20 23 27 73 68 65 6c 6c 2d 71 75 6f 74 65 2d 61 72 67 75 6d g.(mapconcat.#'shell-quote-argum
23ca0 65 6e 74 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 ent.(cons.(gptel--curl-path).arg
23cc0 73 29 20 22 20 5c 5c 5c 6e 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 72 s).".\\\n")..................."r
23ce0 65 71 75 65 73 74 20 43 75 72 6c 20 63 6f 6d 6d 61 6e 64 22 20 27 6e 6f 2d 6a 73 6f 6e 29 29 0a equest.Curl.command".'no-json)).
23d00 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 72 6f 63 65 73 ....(with-current-buffer.(proces
23d20 73 2d 62 75 66 66 65 72 20 70 72 6f 63 65 73 73 29 0a 20 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 s-buffer.process).......(cond...
23d40 20 20 20 20 20 28 28 65 71 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 63 6f 64 69 6e 67 2d .....((eq.(gptel-backend-coding-
23d60 73 79 73 74 65 6d 20 62 61 63 6b 65 6e 64 29 20 27 62 69 6e 61 72 79 29 0a 20 20 20 20 20 20 20 system.backend).'binary)........
23d80 20 3b 3b 20 73 65 74 2d 62 75 66 66 65 72 2d 66 69 6c 65 2d 63 6f 64 69 6e 67 2d 73 79 73 74 65 .;;.set-buffer-file-coding-syste
23da0 6d 20 69 73 20 6e 6f 74 20 6e 65 65 64 65 64 20 73 69 6e 63 65 20 77 65 20 64 6f 6e 27 74 20 73 m.is.not.needed.since.we.don't.s
23dc0 61 76 65 20 74 68 69 73 20 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 28 73 65 74 2d 62 75 66 ave.this.buffer.........(set-buf
23de0 66 65 72 2d 6d 75 6c 74 69 62 79 74 65 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 28 73 65 74 2d fer-multibyte.nil).........(set-
23e00 70 72 6f 63 65 73 73 2d 63 6f 64 69 6e 67 2d 73 79 73 74 65 6d 20 70 72 6f 63 65 73 73 20 27 62 process-coding-system.process.'b
23e20 69 6e 61 72 79 20 27 62 69 6e 61 72 79 29 29 0a 20 20 20 20 20 20 20 28 74 0a 09 3b 3b 20 44 6f inary.'binary))........(t..;;.Do
23e40 6e 27 74 20 74 72 79 20 74 6f 20 63 6f 6e 76 65 72 74 20 63 72 2d 6c 66 20 74 6f 20 63 72 20 6f n't.try.to.convert.cr-lf.to.cr.o
23e60 6e 20 57 69 6e 64 6f 77 73 20 73 6f 20 74 68 61 74 20 63 75 72 6c 27 73 20 22 68 65 61 64 65 72 n.Windows.so.that.curl's."header
23e80 20 73 69 7a 65 0a 09 3b 3b 20 69 6e 20 62 79 74 65 73 22 20 73 74 61 79 73 20 63 6f 72 72 65 63 .size..;;.in.bytes".stays.correc
23ea0 74 2e 20 45 78 70 6c 69 63 69 74 6c 79 20 73 65 74 20 75 74 66 2d 38 20 66 6f 72 20 6e 6f 6e 2d t..Explicitly.set.utf-8.for.non-
23ec0 77 69 6e 20 73 79 73 74 65 6d 73 20 74 6f 6f 2c 0a 09 3b 3b 20 66 6f 72 20 63 61 73 65 73 20 77 win.systems.too,..;;.for.cases.w
23ee0 68 65 6e 20 62 75 66 66 65 72 20 63 6f 64 69 6e 67 20 73 79 73 74 65 6d 20 69 73 20 6e 6f 74 20 hen.buffer.coding.system.is.not.
23f00 73 65 74 20 74 6f 20 75 74 66 2d 38 2e 0a 09 28 73 65 74 2d 70 72 6f 63 65 73 73 2d 63 6f 64 69 set.to.utf-8...(set-process-codi
23f20 6e 67 2d 73 79 73 74 65 6d 20 70 72 6f 63 65 73 73 20 27 75 74 66 2d 38 2d 75 6e 69 78 20 27 75 ng-system.process.'utf-8-unix.'u
23f40 74 66 2d 38 2d 75 6e 69 78 29 29 29 0a 20 20 20 20 20 20 28 73 65 74 2d 70 72 6f 63 65 73 73 2d tf-8-unix))).......(set-process-
23f60 71 75 65 72 79 2d 6f 6e 2d 65 78 69 74 2d 66 6c 61 67 20 70 72 6f 63 65 73 73 20 6e 69 6c 29 0a query-on-exit-flag.process.nil).
23f80 20 20 20 20 20 20 28 69 66 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 74 6f 6b 65 6e ......(if.(plist-get.info.:token
23fa0 29 20 20 20 20 20 20 20 3b 6e 6f 74 20 74 68 65 20 66 69 72 73 74 20 72 75 6e 2c 20 73 65 74 20 ).......;not.the.first.run,.set.
23fc0 6f 6e 6c 79 20 74 68 65 20 74 6f 6b 65 6e 0a 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d only.the.token...........(plist-
23fe0 70 75 74 20 69 6e 66 6f 20 3a 74 6f 6b 65 6e 20 74 6f 6b 65 6e 29 0a 20 20 20 20 20 20 20 20 28 put.info.:token.token).........(
24000 73 65 74 66 20 28 67 70 74 65 6c 2d 66 73 6d 2d 69 6e 66 6f 20 66 73 6d 29 20 20 20 20 20 20 3b setf.(gptel-fsm-info.fsm)......;
24020 66 69 73 74 20 72 75 6e 2c 20 73 65 74 20 61 6c 6c 20 70 72 6f 63 65 73 73 20 70 61 72 61 6d 65 fist.run,.set.all.process.parame
24040 74 65 72 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 63 6f 6e 63 20 28 6c 69 73 74 20 ters...............(nconc.(list.
24060 3a 74 6f 6b 65 6e 20 74 6f 6b 65 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :token.token....................
24080 20 20 20 20 20 20 20 20 3a 74 72 61 6e 73 66 6f 72 6d 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 ........:transformer............
240a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 77 69 74 68 2d 63 75 72 72 ................(when.(with-curr
240c0 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
240e0 65 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 er).............................
24100 20 20 20 20 20 20 20 28 61 6e 64 20 28 64 65 72 69 76 65 64 2d 6d 6f 64 65 2d 70 20 27 6f 72 67 .......(and.(derived-mode-p.'org
24120 2d 6d 6f 64 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -mode)..........................
24140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 6f 72 67 2d 63 6f 6e 76 65 72 74 ...............gptel-org-convert
24160 2d 72 65 73 70 6f 6e 73 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -response)).....................
24180 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 73 74 72 65 61 6d 2d 63 6f 6e 76 65 72 74 2d .........(gptel--stream-convert-
241a0 6d 61 72 6b 64 6f 77 6e 2d 3e 6f 72 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 markdown->org...................
241c0 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 20 3a 70 6f 73 ............(plist-get.info.:pos
241e0 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 20 20 20 20 20 28 ition))))......................(
24200 75 6e 6c 65 73 73 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 unless.(plist-get.info.:callback
24220 29 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 73 74 20 3a )........................(list.:
24240 63 61 6c 6c 62 61 63 6b 20 28 69 66 20 73 74 72 65 61 6d 0a 20 20 20 20 20 20 20 20 20 20 20 20 callback.(if.stream.............
24260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 ...............................#
24280 27 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 73 74 72 65 61 6d 2d 69 6e 73 65 72 74 2d 72 65 73 70 6f 'gptel-curl--stream-insert-respo
242a0 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 20 20 20 20 20 20 nse.............................
242c0 20 20 20 20 20 20 20 20 20 20 20 20 20 23 27 67 70 74 65 6c 2d 2d 69 6e 73 65 72 74 2d 72 65 73 .............#'gptel--insert-res
242e0 70 6f 6e 73 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 69 6e ponse)))......................in
24300 66 6f 29 29 29 0a 20 20 20 20 20 20 28 69 66 20 73 74 72 65 61 6d 0a 20 20 20 20 20 20 20 20 20 fo))).......(if.stream..........
24320 20 28 70 72 6f 67 6e 20 28 73 65 74 2d 70 72 6f 63 65 73 73 2d 73 65 6e 74 69 6e 65 6c 20 70 72 .(progn.(set-process-sentinel.pr
24340 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 63 6c 65 61 6e ocess.#'gptel-curl--stream-clean
24360 75 70 29 0a 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 up)..................(set-proces
24380 73 2d 66 69 6c 74 65 72 20 70 72 6f 63 65 73 73 20 23 27 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 73 s-filter.process.#'gptel-curl--s
243a0 74 72 65 61 6d 2d 66 69 6c 74 65 72 29 29 0a 20 20 20 20 20 20 20 20 28 73 65 74 2d 70 72 6f 63 tream-filter)).........(set-proc
243c0 65 73 73 2d 73 65 6e 74 69 6e 65 6c 20 70 72 6f 63 65 73 73 20 23 27 67 70 74 65 6c 2d 63 75 72 ess-sentinel.process.#'gptel-cur
243e0 6c 2d 2d 73 65 6e 74 69 6e 65 6c 29 29 0a 20 20 20 20 20 20 28 73 65 74 66 20 28 61 6c 69 73 74 l--sentinel)).......(setf.(alist
24400 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 73 -get.process.gptel--request-alis
24420 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 20 66 73 6d 0a 20 20 20 20 20 20 20 t).............(cons.fsm........
24440 20 20 20 20 20 20 20 20 20 20 20 23 27 28 6c 61 6d 62 64 61 20 28 29 0a 20 20 20 20 20 20 20 20 ...........#'(lambda.().........
24460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 43 6c 65 61 6e 20 75 70 20 43 75 72 6c 20 70 ..............;;.Clean.up.Curl.p
24480 72 6f 63 65 73 73 0a 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 rocess.......................(se
244a0 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 69 67 6e t-process-sentinel.process.#'ign
244c0 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 28 64 65 6c 65 ore).......................(dele
244e0 74 65 2d 70 72 6f 63 65 73 73 20 70 72 6f 63 65 73 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 te-process.process).............
24500 20 20 20 20 20 20 20 20 20 20 28 6b 69 6c 6c 2d 62 75 66 66 65 72 20 28 70 72 6f 63 65 73 73 2d ..........(kill-buffer.(process-
24520 62 75 66 66 65 72 20 70 72 6f 63 65 73 73 29 29 29 29 29 29 29 29 0a 0a 3b 3b 20 3b 3b 20 41 68 buffer.process))))))))..;;.;;.Ah
24540 65 61 64 2d 4f 66 2d 54 69 6d 65 20 64 69 73 70 61 74 63 68 20 63 6f 64 65 20 66 6f 72 20 74 68 ead-Of-Time.dispatch.code.for.th
24560 65 20 70 61 72 73 65 72 73 0a 3b 3b 20 3a 70 61 72 73 65 72 20 3b 20 46 49 58 4d 45 20 60 63 6c e.parsers.;;.:parser.;.FIXME.`cl
24580 2d 2d 67 65 6e 65 72 69 63 2d 2a 27 20 61 72 65 20 69 6e 74 65 72 6e 61 6c 20 66 75 6e 63 74 69 --generic-*'.are.internal.functi
245a0 6f 6e 73 0a 3b 3b 20 28 63 6c 2d 2d 67 65 6e 65 72 69 63 2d 6d 65 74 68 6f 64 2d 66 75 6e 63 74 ons.;;.(cl--generic-method-funct
245c0 69 6f 6e 0a 3b 3b 20 20 28 69 66 20 73 74 72 65 61 6d 0a 3b 3b 20 20 20 20 20 20 28 63 6c 2d 6c ion.;;..(if.stream.;;......(cl-l
245e0 6f 6f 70 0a 3b 3b 20 20 20 20 20 20 20 66 6f 72 20 74 79 70 65 20 69 6e 0a 3b 3b 20 20 20 20 20 oop.;;.......for.type.in.;;.....
24600 20 20 28 63 6c 2d 2d 63 6c 61 73 73 2d 61 6c 6c 70 61 72 65 6e 74 73 20 28 67 65 74 20 28 74 79 ..(cl--class-allparents.(get.(ty
24620 70 65 2d 6f 66 20 62 61 63 6b 65 6e 64 29 20 27 63 6c 2d 2d 63 6c 61 73 73 29 29 0a 3b 3b 20 20 pe-of.backend).'cl--class)).;;..
24640 20 20 20 20 20 77 69 74 68 20 6d 65 74 68 6f 64 73 20 3d 20 28 63 6c 2d 2d 67 65 6e 65 72 69 63 .....with.methods.=.(cl--generic
24660 2d 6d 65 74 68 6f 64 2d 74 61 62 6c 65 0a 3b 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -method-table.;;................
24680 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 2d 63 75 72 6c 2d .......(cl--generic.'gptel-curl-
246a0 2d 70 61 72 73 65 2d 73 74 72 65 61 6d 29 29 0a 3b 3b 20 20 20 20 20 20 20 77 68 65 6e 20 28 63 -parse-stream)).;;.......when.(c
246c0 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 65 l--generic-member-method.`(,type
246e0 20 74 29 20 6e 69 6c 20 6d 65 74 68 6f 64 73 29 0a 3b 3b 20 20 20 20 20 20 20 72 65 74 75 72 6e .t).nil.methods).;;.......return
24700 20 28 63 61 72 20 69 74 29 29 0a 3b 3b 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 0a 3b 3b 20 20 20 20 .(car.it)).;;....(cl-loop.;;....
24720 20 66 6f 72 20 74 79 70 65 20 69 6e 0a 3b 3b 20 20 20 20 20 28 63 6c 2d 2d 63 6c 61 73 73 2d 61 .for.type.in.;;.....(cl--class-a
24740 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 63 6b 65 6e 64 29 llparents.(get.(type-of.backend)
24760 20 27 63 6c 2d 2d 63 6c 61 73 73 29 29 0a 3b 3b 20 20 20 20 20 77 69 74 68 20 6d 65 74 68 6f 64 .'cl--class)).;;.....with.method
24780 73 20 3d 20 28 63 6c 2d 2d 67 65 6e 65 72 69 63 2d 6d 65 74 68 6f 64 2d 74 61 62 6c 65 0a 3b 3b s.=.(cl--generic-method-table.;;
247a0 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 2d 67 65 6e 65 72 69 .....................(cl--generi
247c0 63 20 27 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 72 65 73 70 6f 6e 73 65 29 29 0a 3b 3b 20 20 20 c.'gptel--parse-response)).;;...
247e0 20 20 77 68 65 6e 20 28 63 6c 2d 2d 67 65 6e 65 72 69 63 2d 6d 65 6d 62 65 72 2d 6d 65 74 68 6f ..when.(cl--generic-member-metho
24800 64 20 60 28 2c 74 79 70 65 20 74 20 74 29 20 6e 69 6c 20 6d 65 74 68 6f 64 73 29 0a 3b 3b 20 20 d.`(,type.t.t).nil.methods).;;..
24820 20 20 20 72 65 74 75 72 6e 20 28 63 61 72 20 69 74 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 ...return.(car.it))))..(defun.gp
24840 74 65 6c 2d 63 75 72 6c 2d 2d 6c 6f 67 2d 72 65 73 70 6f 6e 73 65 20 28 70 72 6f 63 2d 62 75 66 tel-curl--log-response.(proc-buf
24860 20 70 72 6f 63 2d 69 6e 66 6f 29 0a 20 20 22 50 61 72 73 65 20 72 65 73 70 6f 6e 73 65 20 62 75 .proc-info)..."Parse.response.bu
24880 66 66 65 72 20 50 52 4f 43 2d 42 55 46 20 61 6e 64 20 6c 6f 67 20 72 65 73 70 6f 6e 73 65 2e 0a ffer.PROC-BUF.and.log.response..
248a0 0a 50 52 4f 43 2d 49 4e 46 4f 20 69 73 20 74 68 65 20 70 6c 69 73 74 20 63 6f 6e 74 61 69 6e 69 .PROC-INFO.is.the.plist.containi
248c0 6e 67 20 70 72 6f 63 65 73 73 20 6d 65 74 61 64 61 74 61 2e 22 0a 20 20 28 77 69 74 68 2d 63 75 ng.process.metadata."...(with-cu
248e0 72 72 65 6e 74 2d 62 75 66 66 65 72 20 70 72 6f 63 2d 62 75 66 0a 20 20 20 20 28 73 61 76 65 2d rrent-buffer.proc-buf.....(save-
24900 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e excursion.......(goto-char.(poin
24920 74 2d 6d 69 6e 29 29 0a 20 20 20 20 20 20 28 77 68 65 6e 20 28 72 65 2d 73 65 61 72 63 68 2d 66 t-min)).......(when.(re-search-f
24940 6f 72 77 61 72 64 20 22 0d 3f 5c 6e 0d 3f 5c 6e 22 20 6e 69 6c 20 74 29 0a 20 20 20 20 20 20 20 orward.".?\n.?\n".nil.t)........
24960 20 28 77 68 65 6e 20 28 65 71 20 67 70 74 65 6c 2d 6c 6f 67 2d 6c 65 76 65 6c 20 27 64 65 62 75 .(when.(eq.gptel-log-level.'debu
24980 67 29 0a 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 6c 6f 67 20 28 67 70 74 65 6c 2d g)...........(gptel--log.(gptel-
249a0 2d 6a 73 6f 6e 2d 65 6e 63 6f 64 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -json-encode....................
249c0 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
249e0 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 28 70 6f 69 ies.........................(poi
24a00 6e 74 2d 6d 69 6e 29 20 28 31 2d 20 28 70 6f 69 6e 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 nt-min).(1-.(point))))..........
24a20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 72 65 73 70 6f 6e 73 65 20 68 65 61 64 65 72 73 22 29 ............."response.headers")
24a40 29 0a 20 20 20 20 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 ).........(let.((p.(point)))....
24a60 20 20 20 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 20 28 70 6c .......(when.(search-forward.(pl
24a80 69 73 74 2d 67 65 74 20 70 72 6f 63 2d 69 6e 66 6f 20 3a 74 6f 6b 65 6e 29 20 6e 69 6c 20 74 29 ist-get.proc-info.:token).nil.t)
24aa0 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 31 2d 20 28 6d 61 74 .............(goto-char.(1-.(mat
24ac0 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 28 67 ch-beginning.0))).............(g
24ae0 70 74 65 6c 2d 2d 6c 6f 67 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 2d 6e 6f 2d 70 ptel--log.(buffer-substring-no-p
24b00 72 6f 70 65 72 74 69 65 73 20 70 20 28 70 6f 69 6e 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 roperties.p.(point))............
24b20 20 20 20 20 20 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 29 ............."response.body"))))
24b40 29 29 29 0a 0a 3b 3b 20 54 4f 44 4f 3a 20 53 65 70 61 72 61 74 65 20 75 73 65 72 2d 6d 65 73 73 )))..;;.TODO:.Separate.user-mess
24b60 61 67 69 6e 67 20 66 72 6f 6d 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 0a 28 64 65 66 75 6e 20 aging.from.this.function.(defun.
24b80 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 20 28 70 72 6f 63 gptel-curl--stream-cleanup.(proc
24ba0 65 73 73 20 5f 73 74 61 74 75 73 29 0a 20 20 22 50 72 6f 63 65 73 73 20 73 65 6e 74 69 6e 65 6c ess._status)..."Process.sentinel
24bc0 20 66 6f 72 20 67 70 74 65 6c 20 63 75 72 6c 20 72 65 71 75 65 73 74 73 2e 0a 0a 50 52 4f 43 45 .for.gptel.curl.requests...PROCE
24be0 53 53 20 61 6e 64 20 5f 53 54 41 54 55 53 20 61 72 65 20 70 72 6f 63 65 73 73 20 70 61 72 61 6d SS.and._STATUS.are.process.param
24c00 65 74 65 72 73 2e 22 0a 20 20 28 6c 65 74 20 28 28 70 72 6f 63 2d 62 75 66 20 28 70 72 6f 63 65 eters."...(let.((proc-buf.(proce
24c20 73 73 2d 62 75 66 66 65 72 20 70 72 6f 63 65 73 73 29 29 29 0a 20 20 20 20 28 6c 65 74 2a 20 28 ss-buffer.process))).....(let*.(
24c40 28 66 73 6d 20 28 63 61 72 20 28 61 6c 69 73 74 2d 67 65 74 20 70 72 6f 63 65 73 73 20 67 70 74 (fsm.(car.(alist-get.process.gpt
24c60 65 6c 2d 2d 72 65 71 75 65 73 74 2d 61 6c 69 73 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 el--request-alist)))............
24c80 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 20 20 20 20 (info.(gptel-fsm-info.fsm)).....
24ca0 20 20 20 20 20 20 20 28 68 74 74 70 2d 73 74 61 74 75 73 20 28 70 6c 69 73 74 2d 67 65 74 20 69 .......(http-status.(plist-get.i
24cc0 6e 66 6f 20 3a 68 74 74 70 2d 73 74 61 74 75 73 29 29 29 0a 20 20 20 20 20 20 28 77 68 65 6e 20 nfo.:http-status))).......(when.
24ce0 67 70 74 65 6c 2d 6c 6f 67 2d 6c 65 76 65 6c 20 28 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 6c 6f 67 gptel-log-level.(gptel-curl--log
24d00 2d 72 65 73 70 6f 6e 73 65 20 70 72 6f 63 2d 62 75 66 20 69 6e 66 6f 29 29 20 3b 6c 6f 67 67 69 -response.proc-buf.info)).;loggi
24d20 6e 67 0a 20 20 20 20 20 20 28 69 66 20 28 6d 65 6d 62 65 72 20 68 74 74 70 2d 73 74 61 74 75 73 ng.......(if.(member.http-status
24d40 20 27 28 22 32 30 30 22 20 22 31 30 30 22 29 29 20 3b 46 69 6e 69 73 68 20 68 61 6e 64 6c 69 6e .'("200"."100")).;Finish.handlin
24d60 67 20 72 65 73 70 6f 6e 73 65 0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20 52 75 6e 20 74 68 65 20 g.response...........;;.Run.the.
24d80 63 61 6c 6c 62 61 63 6b 20 6f 6e 65 20 6c 61 73 74 20 74 69 6d 65 20 74 6f 20 73 69 67 6e 61 6c callback.one.last.time.to.signal
24da0 20 74 68 61 74 20 74 68 65 20 70 72 6f 63 65 73 73 20 68 61 73 20 65 6e 64 65 64 0a 20 20 20 20 .that.the.process.has.ended.....
24dc0 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 67 70 74 65 ......(with-demoted-errors."gpte
24de0 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 20 20 20 20 l.callback.error:.%S"...........
24e00 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 6f 20 3a 63 61 6c 6c ..(funcall.(plist-get.info.:call
24e20 62 61 63 6b 29 20 74 20 69 6e 66 6f 29 29 0a 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 63 75 72 back).t.info)).........(with-cur
24e40 72 65 6e 74 2d 62 75 66 66 65 72 20 70 72 6f 63 2d 62 75 66 20 20 20 3b 20 4f 72 20 43 61 70 74 rent-buffer.proc-buf...;.Or.Capt
24e60 75 72 65 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 0a 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 ure.error.message...........(got
24e80 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 28 73 o-char.(point-max))...........(s
24ea0 65 61 72 63 68 2d 62 61 63 6b 77 61 72 64 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a earch-backward.(plist-get.info.:
24ec0 74 6f 6b 65 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 62 61 63 6b 77 61 72 64 2d 63 68 61 72 token))...........(backward-char
24ee0 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 63 61 73 65 2d 6c 65 74 2a 20 28 28 60 28 2c 5f 20 2e )...........(pcase-let*.((`(,_..
24f00 20 2c 68 65 61 64 65 72 2d 73 69 7a 65 29 20 28 72 65 61 64 20 28 63 75 72 72 65 6e 74 2d 62 75 .,header-size).(read.(current-bu
24f20 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 20 20 28 ffer)))........................(
24f40 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 65 response.(progn.(goto-char.heade
24f60 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 20 r-size).........................
24f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20 ................(condition-case.
24fa0 6e 69 6c 20 28 67 70 74 65 6c 2d 2d 6a 73 6f 6e 2d 72 65 61 64 29 0a 20 20 20 20 20 20 20 20 20 nil.(gptel--json-read)..........
24fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
24fe0 20 28 65 72 72 6f 72 20 27 6a 73 6f 6e 2d 72 65 61 64 2d 65 72 72 6f 72 29 29 29 29 0a 20 20 20 .(error.'json-read-error))))....
25000 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 2d 64 61 74 61 20 ....................(error-data.
25020 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 29 0a 20 20 (plist-get.response.:error)))...
25040 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 28 65 72 ..........(cond..............(er
25060 72 6f 72 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 70 75 ror-data...............(plist-pu
25080 74 20 69 6e 66 6f 20 3a 65 72 72 6f 72 20 65 72 72 6f 72 2d 64 61 74 61 29 29 0a 20 20 20 20 20 t.info.:error.error-data))......
250a0 20 20 20 20 20 20 20 20 28 28 65 71 20 72 65 73 70 6f 6e 73 65 20 27 6a 73 6f 6e 2d 72 65 61 64 ........((eq.response.'json-read
250c0 2d 65 72 72 6f 72 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 -error)...............(plist-put
250e0 20 69 6e 66 6f 20 3a 65 72 72 6f 72 20 22 4d 61 6c 66 6f 72 6d 65 64 20 4a 53 4f 4e 20 69 6e 20 .info.:error."Malformed.JSON.in.
25100 72 65 73 70 6f 6e 73 65 2e 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 20 28 70 6c response."))..............(t.(pl
25120 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 65 72 72 6f 72 20 22 43 6f 75 6c 64 20 6e 6f 74 20 70 ist-put.info.:error."Could.not.p
25140 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 20 20 20 20 20 20 arse.HTTP.response."))))).......
25160 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 20 63 61 ..(with-demoted-errors."gptel.ca
25180 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 28 66 75 6e llback.error:.%S"...........(fun
251a0 63 61 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 call.(plist-get.info.:callback).
251c0 6e 69 6c 20 69 6e 66 6f 29 29 29 0a 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 66 73 6d 2d 74 72 nil.info))).......(gptel--fsm-tr
251e0 61 6e 73 69 74 69 6f 6e 20 66 73 6d 29 29 20 20 20 20 20 20 3b 20 4d 6f 76 65 20 74 6f 20 6e 65 ansition.fsm))......;.Move.to.ne
25200 78 74 20 73 74 61 74 65 0a 20 20 20 20 28 73 65 74 66 20 28 61 6c 69 73 74 2d 67 65 74 20 70 72 xt.state.....(setf.(alist-get.pr
25220 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 20 6e 69 6c 20 27 ocess.gptel--request-alist.nil.'
25240 72 65 6d 6f 76 65 29 20 6e 69 6c 29 0a 20 20 20 20 28 6b 69 6c 6c 2d 62 75 66 66 65 72 20 70 72 remove).nil).....(kill-buffer.pr
25260 6f 63 2d 62 75 66 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 73 74 oc-buf)))..(defun.gptel-curl--st
25280 72 65 61 6d 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 ream-insert-response.(response.i
252a0 6e 66 6f 20 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 73 74 72 nfo.&optional.raw)..."Insert.str
252c0 65 61 6d 69 6e 67 20 52 45 53 50 4f 4e 53 45 20 66 72 6f 6d 20 61 6e 20 4c 4c 4d 20 69 6e 74 6f eaming.RESPONSE.from.an.LLM.into
252e0 20 74 68 65 20 67 70 74 65 6c 20 62 75 66 66 65 72 2e 0a 0a 49 4e 46 4f 20 69 73 20 61 20 6d 75 .the.gptel.buffer...INFO.is.a.mu
25300 74 61 62 6c 65 20 70 6c 69 73 74 20 63 6f 6e 74 61 69 6e 69 6e 67 20 69 6e 66 6f 72 6d 61 74 69 table.plist.containing.informati
25320 6f 6e 20 72 65 6c 65 76 61 6e 74 20 74 6f 20 74 68 69 73 20 62 75 66 66 65 72 2e 0a 53 65 65 20 on.relevant.to.this.buffer..See.
25340 60 67 70 74 65 6c 2d 2d 75 72 6c 2d 67 65 74 2d 72 65 73 70 6f 6e 73 65 27 20 66 6f 72 20 64 65 `gptel--url-get-response'.for.de
25360 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 6c 65 73 20 74 65 tails...Optional.RAW.disables.te
25380 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 6d 61 74 69 6f 6e xt.properties.and.transformation
253a0 2e 22 0a 20 20 28 70 63 61 73 65 20 72 65 73 70 6f 6e 73 65 0a 20 20 20 20 28 28 70 72 65 64 20 ."...(pcase.response.....((pred.
253c0 73 74 72 69 6e 67 70 29 0a 20 20 20 20 20 28 6c 65 74 20 28 28 73 74 61 72 74 2d 6d 61 72 6b 65 stringp)......(let.((start-marke
253e0 72 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 70 6f 73 69 74 69 6f 6e 29 29 0a 20 20 r.(plist-get.info.:position))...
25400 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 6c 69 73 74 .........(tracking-marker.(plist
25420 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 0a 20 20 20 -get.info.:tracking-marker))....
25440 20 20 20 20 20 20 20 20 28 74 72 61 6e 73 66 6f 72 6d 65 72 20 28 70 6c 69 73 74 2d 67 65 74 20 ........(transformer.(plist-get.
25460 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 28 77 69 74 info.:transformer)))........(wit
25480 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 6d 61 72 6b 65 72 2d 62 75 66 66 65 72 20 h-current-buffer.(marker-buffer.
254a0 73 74 61 72 74 2d 6d 61 72 6b 65 72 29 0a 20 20 20 20 20 20 20 20 20 28 73 61 76 65 2d 65 78 63 start-marker)..........(save-exc
254c0 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 74 72 61 63 6b 69 ursion............(unless.tracki
254e0 6e 67 2d 6d 61 72 6b 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 ng-marker..............(goto-cha
25500 72 20 73 74 61 72 74 2d 6d 61 72 6b 65 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e r.start-marker)..............(un
25520 6c 65 73 73 20 28 6f 72 20 28 62 6f 62 70 29 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 less.(or.(bobp).(plist-get.info.
25540 3a 69 6e 2d 70 6c 61 63 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 :in-place))................(inse
25560 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 29 0a 20 20 20 rt.gptel-response-separator)....
25580 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 6d 6f 64 65 0a 20 20 20 ............(when.gptel-mode....
255a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 50 75 74 20 70 72 65 66 69 78 20 62 65 66 6f ..............;;.Put.prefix.befo
255c0 72 65 20 41 49 20 72 65 73 70 6f 6e 73 65 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 re.AI.response..................
255e0 20 28 69 6e 73 65 72 74 20 28 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 70 72 65 66 69 78 2d .(insert.(gptel-response-prefix-
25600 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 6d 6f 76 65 2d 6d string)))................(move-m
25620 61 72 6b 65 72 20 73 74 61 72 74 2d 6d 61 72 6b 65 72 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 arker.start-marker.(point)))....
25640 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 20 ..........(setq.tracking-marker.
25660 28 73 65 74 2d 6d 61 72 6b 65 72 20 28 6d 61 6b 65 2d 6d 61 72 6b 65 72 29 20 28 70 6f 69 6e 74 (set-marker.(make-marker).(point
25680 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 2d 6d 61 72 6b 65 72 2d 69 6e 73 )))..............(set-marker-ins
256a0 65 72 74 69 6f 6e 2d 74 79 70 65 20 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 20 74 29 0a 20 ertion-type.tracking-marker.t)..
256c0 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 74 72 61 ............(plist-put.info.:tra
256e0 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 20 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 29 29 0a 20 cking-marker.tracking-marker))..
25700 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 74 72 61 63 6b 69 6e 67 2d 6d 61 ..........(goto-char.tracking-ma
25720 72 6b 65 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 72 61 77 0a 20 20 20 rker)............(unless.raw....
25740 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 74 72 61 6e 73 66 6f 72 6d 65 72 0a 20 20 20 20 ..........(when.transformer.....
25760 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 66 75 6e 63 61 ...........(setq.response.(funca
25780 6c 6c 20 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 ll.transformer.response)))......
257a0 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 0a 20 20 20 ........(add-text-properties....
257c0 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 27 ...........0.(length.response).'
257e0 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 70 (gptel.response.front-sticky.(gp
25800 74 65 6c 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 70 6f 6e 73 65 29 29 0a 20 tel))...............response))..
25820 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 70 ..........;;.(run-hooks.'gptel-p
25840 72 65 2d 73 74 72 65 61 6d 2d 68 6f 6f 6b 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 re-stream-hook)............(inse
25860 72 74 20 72 65 73 70 6f 6e 73 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 72 75 6e 2d 68 6f 6f rt.response)............(run-hoo
25880 6b 73 20 27 67 70 74 65 6c 2d 70 6f 73 74 2d 73 74 72 65 61 6d 2d 68 6f 6f 6b 29 29 29 29 29 0a ks.'gptel-post-stream-hook))))).
258a0 20 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 28 ....(`(reasoning...,text)......(
258c0 67 70 74 65 6c 2d 2d 64 69 73 70 6c 61 79 2d 72 65 61 73 6f 6e 69 6e 67 2d 73 74 72 65 61 6d 20 gptel--display-reasoning-stream.
258e0 74 65 78 74 20 69 6e 66 6f 29 29 0a 20 20 20 20 28 60 28 74 6f 6f 6c 2d 63 61 6c 6c 20 2e 20 2c text.info)).....(`(tool-call...,
25900 74 6f 6f 6c 2d 63 61 6c 6c 73 29 0a 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 64 69 73 70 6c 61 79 tool-calls)......(gptel--display
25920 2d 74 6f 6f 6c 2d 63 61 6c 6c 73 20 74 6f 6f 6c 2d 63 61 6c 6c 73 20 69 6e 66 6f 29 29 0a 20 20 -tool-calls.tool-calls.info))...
25940 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 75 6c 74 73 ..(`(tool-result...,tool-results
25960 29 0a 20 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 72 65 73 75 )......(gptel--display-tool-resu
25980 6c 74 73 20 74 6f 6f 6c 2d 72 65 73 75 6c 74 73 20 69 6e 66 6f 29 29 29 29 0a 0a 28 64 65 66 75 lts.tool-results.info))))..(defu
259a0 6e 20 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 73 74 72 65 61 6d 2d 66 69 6c 74 65 72 20 28 70 72 6f n.gptel-curl--stream-filter.(pro
259c0 63 65 73 73 20 6f 75 74 70 75 74 29 0a 20 20 28 6c 65 74 2a 20 28 28 66 73 6d 20 28 63 61 72 20 cess.output)...(let*.((fsm.(car.
259e0 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 73 (alist-get.process.gptel--reques
25a00 74 2d 61 6c 69 73 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 70 72 6f 63 2d 69 6e 66 6f 20 28 t-alist)))..........(proc-info.(
25a20 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 28 63 gptel-fsm-info.fsm))..........(c
25a40 61 6c 6c 62 61 63 6b 20 28 6f 72 20 28 70 6c 69 73 74 2d 67 65 74 20 70 72 6f 63 2d 69 6e 66 6f allback.(or.(plist-get.proc-info
25a60 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 20 .:callback).....................
25a80 20 20 20 23 27 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 ...#'gptel-curl--stream-insert-r
25aa0 65 73 70 6f 6e 73 65 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 esponse))).....(with-current-buf
25ac0 66 65 72 20 28 70 72 6f 63 65 73 73 2d 62 75 66 66 65 72 20 70 72 6f 63 65 73 73 29 0a 20 20 20 fer.(process-buffer.process)....
25ae0 20 20 20 3b 3b 20 49 6e 73 65 72 74 20 6f 75 74 70 75 74 0a 20 20 20 20 20 20 28 73 61 76 65 2d ...;;.Insert.output.......(save-
25b00 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 72 excursion.........(goto-char.(pr
25b20 6f 63 65 73 73 2d 6d 61 72 6b 20 70 72 6f 63 65 73 73 29 29 0a 20 20 20 20 20 20 20 20 28 69 6e ocess-mark.process)).........(in
25b40 73 65 72 74 20 6f 75 74 70 75 74 29 0a 20 20 20 20 20 20 20 20 28 73 65 74 2d 6d 61 72 6b 65 72 sert.output).........(set-marker
25b60 20 28 70 72 6f 63 65 73 73 2d 6d 61 72 6b 20 70 72 6f 63 65 73 73 29 20 28 70 6f 69 6e 74 29 29 .(process-mark.process).(point))
25b80 29 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3b 3b 20 46 69 6e 64 20 48 54 54 50 20 73 74 61 74 )..............;;.Find.HTTP.stat
25ba0 75 73 0a 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 70 6c 69 73 74 2d 67 65 74 20 70 72 6f 63 us.......(unless.(plist-get.proc
25bc0 2d 69 6e 66 6f 20 3a 68 74 74 70 2d 73 74 61 74 75 73 29 0a 20 20 20 20 20 20 20 20 28 73 61 76 -info.:http-status).........(sav
25be0 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 e-excursion...........(goto-char
25c00 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 .(point-min))...........(when-le
25c20 74 2a 20 28 28 28 6e 6f 74 20 28 3d 20 28 6c 69 6e 65 2d 65 6e 64 2d 70 6f 73 69 74 69 6f 6e 29 t*.(((not.(=.(line-end-position)
25c40 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 20 20 .(point-max)))).................
25c60 20 20 20 20 20 20 28 68 74 74 70 2d 6d 73 67 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e ......(http-msg.(buffer-substrin
25c80 67 20 28 6c 69 6e 65 2d 62 65 67 69 6e 6e 69 6e 67 2d 70 6f 73 69 74 69 6f 6e 29 0a 20 20 20 20 g.(line-beginning-position).....
25ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
25cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 6e 65 2d 65 6e 64 2d 70 6f 73 69 74 69 6f 6e ..............(line-end-position
25ce0 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 68 74 74 70 2d ))).......................(http-
25d00 73 74 61 74 75 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 status........................(s
25d20 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 20 20 20 20 20 ave-match-data..................
25d40 20 20 20 20 20 20 20 20 28 61 6e 64 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 20 22 48 54 54 50 ........(and.(string-match."HTTP
25d60 2f 5b 2e 30 2d 39 5d 2b 20 2b 5c 5c 28 5b 30 2d 39 5d 2b 5c 5c 29 22 20 68 74 74 70 2d 6d 73 67 /[.0-9]+.+\\([0-9]+\\)".http-msg
25d80 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 )...............................
25da0 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 20 31 20 68 74 74 70 2d 6d 73 67 29 29 29 29 29 0a 20 20 (match-string.1.http-msg)))))...
25dc0 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 3a ..........(plist-put.proc-info.:
25de0 68 74 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 http-status.http-status)........
25e00 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 73 74 61 74 75 .....(plist-put.proc-info.:statu
25e20 73 20 28 73 74 72 69 6e 67 2d 74 72 69 6d 20 68 74 74 70 2d 6d 73 67 29 29 0a 20 20 20 20 20 20 s.(string-trim.http-msg)).......
25e40 20 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 ......(gptel--fsm-transition.fsm
25e60 29 29 29 29 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 68 ))))..............(when-let*.((h
25e80 74 74 70 2d 6d 73 67 20 28 70 6c 69 73 74 2d 67 65 74 20 70 72 6f 63 2d 69 6e 66 6f 20 3a 73 74 ttp-msg.(plist-get.proc-info.:st
25ea0 61 74 75 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 68 74 74 70 2d 73 atus))...................(http-s
25ec0 74 61 74 75 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 tatus.(plist-get.proc-info.:http
25ee0 2d 73 74 61 74 75 73 29 29 29 0a 20 20 20 20 20 20 20 20 3b 3b 20 46 69 6e 64 20 64 61 74 61 20 -status))).........;;.Find.data.
25f00 63 68 75 6e 6b 28 73 29 20 61 6e 64 20 72 75 6e 20 63 61 6c 6c 62 61 63 6b 0a 20 20 20 20 20 20 chunk(s).and.run.callback.......
25f20 20 20 3b 3b 20 46 49 58 4d 45 20 48 61 6e 64 6c 65 20 74 68 65 20 63 61 73 65 20 77 68 65 72 65 ..;;.FIXME.Handle.the.case.where
25f40 20 48 54 54 50 20 31 30 30 20 69 73 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 48 54 54 50 20 28 6e .HTTP.100.is.followed.by.HTTP.(n
25f60 6f 74 20 32 30 30 29 20 42 55 47 20 23 31 39 34 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 ot.200).BUG.#194.........(when.(
25f80 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 30 22 member.http-status.'("200"."100"
25fa0 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 72 65 73 70 6f 6e 73 65 20 28 67 70 ))...........(let.((response.(gp
25fc0 74 65 6c 2d 63 75 72 6c 2d 2d 70 61 72 73 65 2d 73 74 72 65 61 6d 0a 20 20 20 20 20 20 20 20 20 tel-curl--parse-stream..........
25fe0 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 70 72 6f ..................(plist-get.pro
26000 63 2d 69 6e 66 6f 20 3a 62 61 63 6b 65 6e 64 29 20 70 72 6f 63 2d 69 6e 66 6f 29 29 0a 20 20 20 c-info.:backend).proc-info))....
26020 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 61 73 6f 6e 69 6e 67 2d 62 6c 6f 63 6b 20 28 70 .............(reasoning-block.(p
26040 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 2d 62 6c list-get.proc-info.:reasoning-bl
26060 6f 63 6b 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 44 65 70 65 6e 64 69 6e 67 20 ock))).............;;.Depending.
26080 6f 6e 20 74 68 65 20 41 50 49 2c 20 74 68 65 72 65 20 61 72 65 20 74 77 6f 20 6d 6f 64 65 73 20 on.the.API,.there.are.two.modes.
260a0 74 68 61 74 20 72 65 61 73 6f 6e 69 6e 67 20 6f 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b that.reasoning.or.............;;
260c0 20 63 68 61 69 6e 2d 6f 66 2d 74 68 6f 75 67 68 74 20 63 6f 6e 74 65 6e 74 20 61 70 70 65 61 72 .chain-of-thought.content.appear
260e0 73 3a 20 61 73 20 70 61 72 74 20 6f 66 20 74 68 65 20 6d 61 69 6e 20 72 65 73 70 6f 6e 73 65 0a s:.as.part.of.the.main.response.
26100 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 62 75 74 20 73 75 72 72 6f 75 6e 64 65 64 20 62 79 ............;;.but.surrounded.by
26120 20 3c 74 68 69 6e 6b 3e 2e 2e 2e 3c 2f 74 68 69 6e 6b 3e 20 74 61 67 73 2c 20 6f 72 20 61 73 20 .<think>...</think>.tags,.or.as.
26140 61 20 73 65 70 61 72 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 a.separate.............;;.JSON.f
26160 69 65 6c 64 20 69 6e 20 74 68 65 20 72 65 73 70 6f 6e 73 65 20 73 74 72 65 61 6d 2e 0a 20 20 20 ield.in.the.response.stream.....
26180 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 54 68 65 73 65 .........;;.............;;.These
261a0 20 63 61 73 65 73 20 61 72 65 20 68 61 6e 64 6c 65 64 20 75 73 69 6e 67 20 74 77 6f 20 50 52 4f .cases.are.handled.using.two.PRO
261c0 43 2d 49 4e 46 4f 20 6b 65 79 73 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 0a 20 20 20 20 C-INFO.keys:.............;;.....
261e0 20 20 20 20 20 20 20 20 3b 3b 20 3a 72 65 61 73 6f 6e 69 6e 67 2d 62 6c 6f 63 6b 20 69 73 20 6e ........;;.:reasoning-block.is.n
26200 69 6c 20 62 65 66 6f 72 65 20 63 68 65 63 6b 69 6e 67 20 66 6f 72 20 72 65 61 73 6f 6e 69 6e 67 il.before.checking.for.reasoning
26220 2c 20 27 69 6e 20 77 68 65 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 69 6e 20 61 20 72 ,.'in.when.............;;.in.a.r
26240 65 61 73 6f 6e 69 6e 67 20 62 6c 6f 63 6b 2c 20 74 20 77 68 65 6e 20 77 65 20 72 65 61 63 68 20 easoning.block,.t.when.we.reach.
26260 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20 62 6c 6f 63 6b 2c 20 61 6e 64 0a 20 20 20 20 20 20 the.end.of.the.block,.and.......
26280 20 20 20 20 20 20 3b 3b 20 27 64 6f 6e 65 20 61 66 74 65 72 77 61 72 64 73 20 6f 72 20 69 66 20 ......;;.'done.afterwards.or.if.
262a0 6e 6f 20 72 65 61 73 6f 6e 69 6e 67 20 62 6c 6f 63 6b 20 69 73 20 66 6f 75 6e 64 2e 20 20 54 68 no.reasoning.block.is.found...Th
262c0 69 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 61 70 70 6c 69 65 73 20 74 6f 20 62 6f 74 is.............;;.applies.to.bot
262e0 68 20 74 68 65 20 6d 6f 64 65 73 20 61 62 6f 76 65 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b h.the.modes.above..............;
26300 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 3a 72 65 61 73 6f 6e 69 6e 67 20 63 6f 6e 74 ;.............;;.:reasoning.cont
26320 61 69 6e 73 20 74 68 65 20 72 65 61 73 6f 6e 69 6e 67 20 74 65 78 74 20 70 61 72 73 65 64 20 66 ains.the.reasoning.text.parsed.f
26340 72 6f 6d 20 74 68 65 20 73 65 70 61 72 61 74 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 rom.the.separate.............;;.
26360 4a 53 4f 4e 20 66 69 65 6c 64 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 0a 20 20 20 20 20 JSON.field..............;;......
26380 20 20 20 20 20 20 20 3b 3b 20 4e 4f 54 45 3a 20 57 65 20 61 73 73 75 6d 65 20 68 65 72 65 20 74 .......;;.NOTE:.We.assume.here.t
263a0 68 61 74 20 74 68 65 20 72 65 61 73 6f 6e 69 6e 67 20 62 6c 6f 63 6b 20 61 6c 77 61 79 73 0a 20 hat.the.reasoning.block.always..
263c0 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 70 72 65 63 65 64 65 73 20 74 68 65 20 6d 61 69 6e 20 ...........;;.precedes.the.main.
263e0 72 65 73 70 6f 6e 73 65 20 62 6c 6f 63 6b 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c response.block..............(unl
26400 65 73 73 20 28 65 71 20 72 65 61 73 6f 6e 69 6e 67 2d 62 6c 6f 63 6b 20 27 64 6f 6e 65 29 0a 20 ess.(eq.reasoning-block.'done)..
26420 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 72 65 61 73 6f 6e 69 6e 67 20 28 70 .............(let.((reasoning.(p
26440 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 29 29 29 list-get.proc-info.:reasoning)))
26460 0a 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 20 20 20 20 20 .................(cond..........
26480 20 20 20 20 20 20 20 20 28 28 73 74 72 69 6e 67 70 20 72 65 61 73 6f 6e 69 6e 67 29 0a 20 20 20 ........((stringp.reasoning)....
264a0 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 20 66 72 6f 6d 20 ...............;;.Obtained.from.
264c0 73 65 70 61 72 61 74 65 20 4a 53 4f 4e 20 66 69 65 6c 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 0a separate.JSON.field.in.response.
264e0 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 63 61 6c 6c 62 ..................(funcall.callb
26500 61 63 6b 20 28 63 6f 6e 73 20 27 72 65 61 73 6f 6e 69 6e 67 20 72 65 61 73 6f 6e 69 6e 67 29 20 ack.(cons.'reasoning.reasoning).
26520 70 72 6f 63 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 28 75 6e proc-info)...................(un
26540 6c 65 73 73 20 72 65 61 73 6f 6e 69 6e 67 2d 62 6c 6f 63 6b 20 3b 52 65 63 6f 72 64 20 74 68 61 less.reasoning-block.;Record.tha
26560 74 20 77 65 27 72 65 20 69 6e 20 61 20 72 65 61 73 6f 6e 69 6e 67 20 62 6c 6f 63 6b 20 28 23 37 t.we're.in.a.reasoning.block.(#7
26580 30 39 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 74 2d 70 09).....................(plist-p
265a0 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 69 ut.proc-info.:reasoning-block.'i
265c0 6e 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 70 75 74 n))...................(plist-put
265e0 20 70 72 6f 63 2d 69 6e 66 6f 20 3a 72 65 61 73 6f 6e 69 6e 67 20 6e 69 6c 29 29 20 3b 52 65 73 .proc-info.:reasoning.nil)).;Res
26600 65 74 20 66 6f 72 20 6e 65 78 74 20 70 61 72 73 69 6e 67 20 72 6f 75 6e 64 0a 20 20 20 20 20 20 et.for.next.parsing.round.......
26620 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 6f 6e 69 6e 67 ...........((and.(null.reasoning
26640 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 29 29 0a 20 20 -block).(length>.response.0))...
26660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 ................(if.(string-matc
26680 68 2d 70 20 22 5e 20 2a 3c 74 68 69 6e 6b 3e 22 20 72 65 73 70 6f 6e 73 65 29 0a 20 20 20 20 20 h-p."^.*<think>".response)......
266a0 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 20 66 72 6f .................;;.Obtained.fro
266c0 6d 20 6d 61 69 6e 20 72 65 73 70 6f 6e 73 65 20 73 74 72 65 61 6d 0a 20 20 20 20 20 20 20 20 20 m.main.response.stream..........
266e0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 67 6e 20 28 73 65 74 71 20 72 65 73 70 6f 6e .............(progn.(setq.respon
26700 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 29 29 0a 20 se.(cons.'reasoning.response))..
26720 20 20 20 20 20 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
26740 73 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 st-put.proc-info.:reasoning-bloc
26760 6b 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 k.'in)).....................(pli
26780 73 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 st-put.proc-info.:reasoning-bloc
267a0 6b 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 6c 65 k.'done)))..................((le
267c0 6e 67 74 68 3e 20 72 65 73 70 6f 6e 73 65 20 30 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ngth>.response.0)...............
267e0 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 63 68 ....(if-let*.((idx.(string-match
26800 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 20 20 -p."</think>".response))).......
26820 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..........
26840 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 63 6b ...............(funcall.callback
26860 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
26880 20 20 28 63 6f 6e 73 20 27 72 65 61 73 6f 6e 69 6e 67 20 3b 6c 61 73 74 20 72 65 61 73 6f 6e 69 ..(cons.'reasoning.;last.reasoni
268a0 6e 67 20 63 68 75 6e 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 ng.chunk........................
268c0 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 2d 6c 65 66 ................(string-trim-lef
268e0 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...............................
26900 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
26920 6c 20 28 2b 20 69 64 78 20 38 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 l.(+.idx.8))))..................
26940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 2d 69 6e 66 6f 29 0a 20 20 20 20 20 ................proc-info)......
26960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 53 69 67 6e 61 6c 20 65 6e 64 ...................;;.Signal.end
26980 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 20 .of.reasoning.stream............
269a0 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 63 6b 20 27 .............(funcall.callback.'
269c0 28 72 65 61 73 6f 6e 69 6e 67 20 2e 20 74 29 20 70 72 6f 63 2d 69 6e 66 6f 29 0a 20 20 20 20 20 (reasoning...t).proc-info)......
269e0 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
26a00 65 20 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 e.(substring.response.(+.idx.8))
26a20 29 0a 20 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
26a40 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 20 -put.proc-info.:reasoning-block.
26a60 27 64 6f 6e 65 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 65 74 'done)).....................(set
26a80 71 20 72 65 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 q.response.(cons.'reasoning.resp
26aa0 6f 6e 73 65 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 onse))))).................(when.
26ac0 28 65 71 20 72 65 61 73 6f 6e 69 6e 67 2d 62 6c 6f 63 6b 20 74 29 20 3b 45 6e 64 20 6f 66 20 72 (eq.reasoning-block.t).;End.of.r
26ae0 65 61 73 6f 6e 69 6e 67 20 62 6c 6f 63 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 easoning.block..................
26b00 20 28 66 75 6e 63 61 6c 6c 20 63 61 6c 6c 62 61 63 6b 20 27 28 72 65 61 73 6f 6e 69 6e 67 20 2e .(funcall.callback.'(reasoning..
26b20 20 74 29 20 70 72 6f 63 2d 69 6e 66 6f 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .t).proc-info)..................
26b40 20 28 70 6c 69 73 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 .(plist-put.proc-info.:reasoning
26b60 2d 62 6c 6f 63 6b 20 27 64 6f 6e 65 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e -block.'done)))).............(un
26b80 6c 65 73 73 20 28 65 71 75 61 6c 20 72 65 73 70 6f 6e 73 65 20 22 22 29 20 3b 52 65 73 70 6f 6e less.(equal.response."").;Respon
26ba0 73 65 20 63 61 6c 6c 62 61 63 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 se.callback...............(funca
26bc0 6c 6c 20 63 61 6c 6c 62 61 63 6b 20 72 65 73 70 6f 6e 73 65 20 70 72 6f 63 2d 69 6e 66 6f 29 29 ll.callback.response.proc-info))
26be0 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 65 6c 2d 63 75 72 ))))))..(cl-defgeneric.gptel-cur
26c00 6c 2d 2d 70 61 72 73 65 2d 73 74 72 65 61 6d 20 28 62 61 63 6b 65 6e 64 20 70 72 6f 63 2d 69 6e l--parse-stream.(backend.proc-in
26c20 66 6f 29 0a 20 20 22 53 74 72 65 61 6d 20 70 61 72 73 65 72 20 66 6f 72 20 67 70 74 65 6c 2d 63 fo)..."Stream.parser.for.gptel-c
26c40 75 72 6c 2e 0a 0a 49 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 6f 66 20 74 68 69 73 20 66 75 url...Implementations.of.this.fu
26c60 6e 63 74 69 6f 6e 20 72 75 6e 20 61 73 20 70 61 72 74 20 6f 66 20 74 68 65 20 70 72 6f 63 65 73 nction.run.as.part.of.the.proces
26c80 73 0a 66 69 6c 74 65 72 20 66 6f 72 20 74 68 65 20 61 63 74 69 76 65 20 71 75 65 72 79 2c 20 61 s.filter.for.the.active.query,.a
26ca0 6e 64 20 72 65 74 75 72 6e 20 70 61 72 74 69 61 6c 20 72 65 73 70 6f 6e 73 65 73 20 66 72 6f 6d nd.return.partial.responses.from
26cc0 0a 74 68 65 20 4c 4c 4d 2e 0a 0a 42 41 43 4b 45 4e 44 20 69 73 20 74 68 65 20 4c 4c 4d 20 62 61 .the.LLM...BACKEND.is.the.LLM.ba
26ce0 63 6b 65 6e 64 20 69 6e 20 75 73 65 2e 0a 0a 50 52 4f 43 2d 49 4e 46 4f 20 69 73 20 61 20 70 6c ckend.in.use...PROC-INFO.is.a.pl
26d00 69 73 74 20 77 69 74 68 20 70 72 6f 63 65 73 73 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 6e 64 ist.with.process.information.and
26d20 20 6f 74 68 65 72 20 63 6f 6e 74 65 78 74 2e 0a 53 65 65 20 60 67 70 74 65 6c 2d 63 75 72 6c 2d .other.context..See.`gptel-curl-
26d40 2d 67 65 74 2d 72 65 73 70 6f 6e 73 65 27 20 66 6f 72 20 69 74 73 20 63 6f 6e 74 65 6e 74 73 2e -get-response'.for.its.contents.
26d60 22 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 73 65 6e 74 69 6e 65 6c 20 ")..(defun.gptel-curl--sentinel.
26d80 28 70 72 6f 63 65 73 73 20 5f 73 74 61 74 75 73 29 0a 20 20 22 50 72 6f 63 65 73 73 20 73 65 6e (process._status)..."Process.sen
26da0 74 69 6e 65 6c 20 66 6f 72 20 67 70 74 65 6c 20 63 75 72 6c 20 72 65 71 75 65 73 74 73 2e 0a 0a tinel.for.gptel.curl.requests...
26dc0 50 52 4f 43 45 53 53 20 61 6e 64 20 5f 53 54 41 54 55 53 20 61 72 65 20 70 72 6f 63 65 73 73 20 PROCESS.and._STATUS.are.process.
26de0 70 61 72 61 6d 65 74 65 72 73 2e 22 0a 20 20 28 6c 65 74 20 28 28 70 72 6f 63 2d 62 75 66 20 28 parameters."...(let.((proc-buf.(
26e00 70 72 6f 63 65 73 73 2d 62 75 66 66 65 72 20 70 72 6f 63 65 73 73 29 29 29 0a 20 20 20 20 28 77 process-buffer.process))).....(w
26e20 68 65 6e 2d 6c 65 74 2a 20 28 28 28 65 71 20 28 70 72 6f 63 65 73 73 2d 73 74 61 74 75 73 20 70 hen-let*.(((eq.(process-status.p
26e40 72 6f 63 65 73 73 29 20 27 65 78 69 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rocess).'exit)).................
26e60 28 66 73 6d 20 28 63 61 72 20 28 61 6c 69 73 74 2d 67 65 74 20 70 72 6f 63 65 73 73 20 67 70 74 (fsm.(car.(alist-get.process.gpt
26e80 65 6c 2d 2d 72 65 71 75 65 73 74 2d 61 6c 69 73 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 el--request-alist)))............
26ea0 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 6f 20 .....(proc-info.(gptel-fsm-info.
26ec0 66 73 6d 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 63 2d 63 61 6c 6c fsm)).................(proc-call
26ee0 62 61 63 6b 20 28 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 back.(plist-get.proc-info.:callb
26f00 61 63 6b 29 29 29 0a 20 20 20 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 6c 6f 67 2d 6c 65 76 ack))).......(when.gptel-log-lev
26f20 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 65 20 70 72 6f el.(gptel-curl--log-response.pro
26f40 63 2d 62 75 66 20 70 72 6f 63 2d 69 6e 66 6f 29 29 20 3b 6c 6f 67 67 69 6e 67 0a 20 20 20 20 20 c-buf.proc-info)).;logging......
26f60 20 28 70 63 61 73 65 2d 6c 65 74 20 28 28 60 28 2c 72 65 73 70 6f 6e 73 65 20 2c 68 74 74 70 2d .(pcase-let.((`(,response.,http-
26f80 73 74 61 74 75 73 20 2c 68 74 74 70 2d 6d 73 67 20 2c 65 72 72 6f 72 29 0a 20 20 20 20 20 20 20 status.,http-msg.,error)........
26fa0 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
26fc0 20 70 72 6f 63 2d 62 75 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 .proc-buf......................(
26fe0 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 70 61 72 73 65 2d 72 65 73 70 6f 6e 73 65 20 70 72 6f 63 2d gptel-curl--parse-response.proc-
27000 69 6e 66 6f 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 70 72 6f 63 info)))).........(plist-put.proc
27020 2d 69 6e 66 6f 20 3a 68 74 74 70 2d 73 74 61 74 75 73 20 68 74 74 70 2d 73 74 61 74 75 73 29 0a -info.:http-status.http-status).
27040 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 73 74 ........(plist-put.proc-info.:st
27060 61 74 75 73 20 68 74 74 70 2d 6d 73 67 29 0a 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 66 atus.http-msg).........(gptel--f
27080 73 6d 2d 74 72 61 6e 73 69 74 69 6f 6e 20 66 73 6d 29 20 20 20 20 20 3b 57 41 49 54 20 2d 3e 20 sm-transition.fsm).....;WAIT.->.
270a0 54 59 50 45 0a 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 TYPE.........(when.error.(plist-
270c0 70 75 74 20 70 72 6f 63 2d 69 6e 66 6f 20 3a 65 72 72 6f 72 20 65 72 72 6f 72 29 29 0a 20 20 20 put.proc-info.:error.error))....
270e0 20 20 20 20 20 28 77 68 65 6e 20 72 65 73 70 6f 6e 73 65 20 20 20 20 20 20 20 20 20 20 20 20 20 .....(when.response.............
27100 20 20 20 20 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 .....;Look.for.a.reasoning.block
27120 0a 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 2d 70 20 22 ...........(if.(string-match-p."
27140 5e 20 2a 3c 74 68 69 6e 6b 3e 5c 6e 22 20 72 65 73 70 6f 6e 73 65 29 0a 20 20 20 20 20 20 20 20 ^.*<think>\n".response).........
27160 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 69 64 78 20 28 73 74 72 69 6e 67 2d 73 ......(when-let*.((idx.(string-s
27180 65 61 72 63 68 20 22 3c 2f 74 68 69 6e 6b 3e 5c 6e 22 20 72 65 73 70 6f 6e 73 65 29 29 29 0a 20 earch."</think>\n".response)))..
271a0 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
271c0 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"..
271e0 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 70 72 6f 63 2d 63 .................(funcall.proc-c
27200 61 6c 6c 62 61 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 allback.........................
27220 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 72 ...(cons.'reasoning.(substring.r
27240 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 20 esponse.nil.(+.idx.8))).........
27260 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 6e 66 6f 29 29 0a 20 ...................proc-info))..
27280 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 0a 20 20 ...............(setq.response...
272a0 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
272c0 2d 6c 65 66 74 20 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 -left.(substring.response.(+.idx
272e0 20 38 29 29 29 29 29 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 .8))))).............(when-let*.(
27300 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 2d 69 6e 66 6f 20 (reasoning.(plist-get.proc-info.
27320 3a 72 65 61 73 6f 6e 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 :reasoning))....................
27340 20 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 .....((stringp.reasoning))).....
27360 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 61 63 6b ..........(funcall.proc-callback
27380 20 28 63 6f 6e 73 20 27 72 65 61 73 6f 6e 69 6e 67 20 72 65 61 73 6f 6e 69 6e 67 29 20 70 72 6f .(cons.'reasoning.reasoning).pro
273a0 63 2d 69 6e 66 6f 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 6f 72 20 72 65 73 c-info)))).........(when.(or.res
273c0 70 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 ponse.(not.(member.http-status.'
273e0 28 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 28 77 69 74 68 ("200"."100"))))...........(with
27400 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 63 6b 20 -demoted-errors."gptel.callback.
27420 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 6c 6c 20 error:.%S".............(funcall.
27440 70 72 6f 63 2d 63 61 6c 6c 62 61 63 6b 20 72 65 73 70 6f 6e 73 65 20 70 72 6f 63 2d 69 6e 66 6f proc-callback.response.proc-info
27460 29 29 29 29 0a 20 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 )))).......(gptel--fsm-transitio
27480 6e 20 66 73 6d 29 29 20 20 20 20 20 20 3b 54 59 50 45 20 2d 3e 20 6e 65 78 74 0a 20 20 20 20 28 n.fsm))......;TYPE.->.next.....(
274a0 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 72 setf.(alist-get.process.gptel--r
274c0 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 20 equest-alist.nil.'remove).nil)..
274e0 20 20 20 28 6b 69 6c 6c 2d 62 75 66 66 65 72 20 70 72 6f 63 2d 62 75 66 29 29 29 0a 0a 28 64 65 ...(kill-buffer.proc-buf)))..(de
27500 66 75 6e 20 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 70 61 72 73 65 2d 72 65 73 70 6f 6e 73 65 20 28 fun.gptel-curl--parse-response.(
27520 70 72 6f 63 2d 69 6e 66 6f 29 0a 20 20 22 50 61 72 73 65 20 74 68 65 20 62 75 66 66 65 72 20 42 proc-info)..."Parse.the.buffer.B
27540 55 46 20 77 69 74 68 20 63 75 72 6c 27 73 20 72 65 73 70 6f 6e 73 65 2e 0a 0a 50 52 4f 43 2d 49 UF.with.curl's.response...PROC-I
27560 4e 46 4f 20 69 73 20 61 20 70 6c 69 73 74 20 77 69 74 68 20 63 6f 6e 74 65 78 74 75 61 6c 20 69 NFO.is.a.plist.with.contextual.i
27580 6e 66 6f 72 6d 61 74 69 6f 6e 2e 22 0a 20 20 28 6c 65 74 20 28 28 74 6f 6b 65 6e 20 28 70 6c 69 nformation."...(let.((token.(pli
275a0 73 74 2d 67 65 74 20 70 72 6f 63 2d 69 6e 66 6f 20 3a 74 6f 6b 65 6e 29 29 29 0a 20 20 20 20 28 st-get.proc-info.:token))).....(
275c0 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 0a 20 20 20 20 28 73 65 61 72 goto-char.(point-max)).....(sear
275e0 63 68 2d 62 61 63 6b 77 61 72 64 20 74 6f 6b 65 6e 29 0a 20 20 20 20 28 62 61 63 6b 77 61 72 64 ch-backward.token).....(backward
27600 2d 63 68 61 72 29 0a 20 20 20 20 28 70 63 61 73 65 2d 6c 65 74 2a 20 28 28 60 28 2c 5f 20 2e 20 -char).....(pcase-let*.((`(,_...
27620 2c 68 65 61 64 65 72 2d 73 69 7a 65 29 20 28 72 65 61 64 20 28 63 75 72 72 65 6e 74 2d 62 75 66 ,header-size).(read.(current-buf
27640 66 65 72 29 29 29 29 0a 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d fer)))).......(goto-char.(point-
27660 6d 69 6e 29 29 0a 0a 20 20 20 20 20 20 28 69 66 2d 6c 65 74 2a 20 28 28 68 74 74 70 2d 6d 73 67 min))........(if-let*.((http-msg
27680 20 28 73 74 72 69 6e 67 2d 74 72 69 6d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .(string-trim...................
276a0 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 20 28 6c 69 6e 65 .........(buffer-substring.(line
276c0 2d 62 65 67 69 6e 6e 69 6e 67 2d 70 6f 73 69 74 69 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 -beginning-position)............
276e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
27700 20 20 28 6c 69 6e 65 2d 65 6e 64 2d 70 6f 73 69 74 69 6f 6e 29 29 29 29 0a 20 20 20 20 20 20 20 ..(line-end-position))))........
27720 20 20 20 20 20 20 20 20 20 28 68 74 74 70 2d 73 74 61 74 75 73 0a 20 20 20 20 20 20 20 20 20 20 .........(http-status...........
27740 20 20 20 20 20 20 20 28 73 61 76 65 2d 6d 61 74 63 68 2d 64 61 74 61 0a 20 20 20 20 20 20 20 20 .......(save-match-data.........
27760 20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 20 22 48 ...........(and.(string-match."H
27780 54 54 50 2f 5b 2e 30 2d 39 5d 2b 20 2b 5c 5c 28 5b 30 2d 39 5d 2b 5c 5c 29 22 20 68 74 74 70 2d TTP/[.0-9]+.+\\([0-9]+\\)".http-
277a0 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 28 6d 61 msg).........................(ma
277c0 74 63 68 2d 73 74 72 69 6e 67 20 31 20 68 74 74 70 2d 6d 73 67 29 29 29 29 0a 20 20 20 20 20 20 tch-string.1.http-msg)))).......
277e0 20 20 20 20 20 20 20 20 20 20 28 72 65 73 70 6f 6e 73 65 20 28 70 72 6f 67 6e 20 28 67 6f 74 6f ..........(response.(progn.(goto
27800 2d 63 68 61 72 20 68 65 61 64 65 72 2d 73 69 7a 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 -char.header-size)..............
27820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 ....................(condition-c
27840 61 73 65 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ase.nil.........................
27860 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 6a 73 6f 6e 2d 72 65 61 64 29 0a .............(gptel--json-read).
27880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
278a0 20 20 20 28 65 72 72 6f 72 20 27 6a 73 6f 6e 2d 72 65 61 64 2d 65 72 72 6f 72 29 29 29 29 29 0a ...(error.'json-read-error))))).
278c0 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 46 49 ..........(cond............;;.FI
278e0 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 31 XME.Handle.the.case.where.HTTP.1
27900 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 29 00.is.followed.by.HTTP.(not.200)
27920 20 42 55 47 20 23 31 39 34 0a 20 20 20 20 20 20 20 20 20 20 20 28 28 6d 65 6d 62 65 72 20 68 74 .BUG.#194............((member.ht
27940 74 70 2d 73 74 61 74 75 73 20 27 28 22 32 30 30 22 20 22 31 30 30 22 29 29 0a 20 20 20 20 20 20 tp-status.'("200"."100")).......
27960 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
27980 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 20 20 tel--parse-response.............
279a0 20 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
279c0 65 74 20 70 72 6f 63 2d 69 6e 66 6f 20 3a 62 61 63 6b 65 6e 64 29 20 72 65 73 70 6f 6e 73 65 20 et.proc-info.:backend).response.
279e0 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 20 20 20 20 proc-info)).....................
27a00 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 72 .........((not.(string-blank-p.r
27a20 65 73 70 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 74 72 esp)))).....................(str
27a40 69 6e 67 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 20 20 ing-trim.resp)).................
27a60 20 20 68 74 74 70 2d 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 ..http-status.http-msg))........
27a80 20 20 20 20 28 28 70 6c 69 73 74 2d 67 65 74 20 72 65 73 70 6f 6e 73 65 20 3a 65 72 72 6f 72 29 ....((plist-get.response.:error)
27aa0 0a 20 20 20 20 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 .............(list.nil.http-stat
27ac0 75 73 20 68 74 74 70 2d 6d 73 67 20 28 70 6c 69 73 74 2d 67 65 74 20 72 65 73 70 6f 6e 73 65 20 us.http-msg.(plist-get.response.
27ae0 3a 65 72 72 6f 72 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 :error)))............((eq.respon
27b00 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 20 20 20 20 20 20 se.'json-read-error)............
27b20 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 74 20 22 .(list.nil.http-status.(concat."
27b40 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 20 69 6e (".http-msg.").Malformed.JSON.in
27b60 20 72 65 73 70 6f 6e 73 65 2e 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 .response.")..................."
27b80 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 22 29 29 0a 20 20 Malformed.JSON.in.response"))...
27ba0 20 20 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 74 75 .........(t.(list.nil.http-statu
27bc0 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 64 20 s.(concat."(".http-msg.").Could.
27be0 6e 6f 74 20 70 61 72 73 65 20 48 54 54 50 20 72 65 73 70 6f 6e 73 65 2e 22 29 0a 20 20 20 20 20 not.parse.HTTP.response.")......
27c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 43 6f 75 6c 64 20 6e 6f 74 20 70 61 72 73 65 20 ..............."Could.not.parse.
27c20 48 54 54 50 20 72 65 73 70 6f 6e 73 65 2e 22 29 29 29 0a 20 20 20 20 20 20 20 20 28 6c 69 73 74 HTTP.response."))).........(list
27c40 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 74 74 .nil.http-status.(concat."(".htt
27c60 70 2d 6d 73 67 20 22 29 20 43 6f 75 6c 64 20 6e 6f 74 20 70 61 72 73 65 20 48 54 54 50 20 72 65 p-msg.").Could.not.parse.HTTP.re
27c80 73 70 6f 6e 73 65 2e 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 43 6f 75 6c 64 20 6e sponse.")..............."Could.n
27ca0 6f 74 20 70 61 72 73 65 20 48 54 54 50 20 72 65 73 70 6f 6e 73 65 2e 22 29 29 29 29 29 0a 0a 28 ot.parse.HTTP.response.")))))..(
27cc0 70 72 6f 76 69 64 65 20 27 67 70 74 65 6c 2d 63 75 72 6c 29 0a 3b 3b 3b 20 67 70 74 65 6c 2d 63 provide.'gptel-curl).;;;.gptel-c
27ce0 75 72 6c 2e 65 6c 20 65 6e 64 73 20 68 65 72 65 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 url.el.ends.here................
27d00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
27d20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
27d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
27d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
27d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
27da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
27dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
27de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
27e00 67 70 74 65 6c 2d 30 2e 39 2e 38 2e 35 2f 67 70 74 65 6c 2d 67 68 2e 65 6c 00 00 00 00 00 00 00 gptel-0.9.8.5/gptel-gh.el.......
27e20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
27e40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
27e60 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
27e80 30 30 33 33 30 32 33 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 33 34 37 37 00 20 30 00 00 00 0033023.00000000000.013477..0...
27ea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
27ec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
27ee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
27f00 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...................
27f20 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...................
27f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
27f60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
27f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
27fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
27fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
27fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
28000 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
28020 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
28040 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.
28060 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
28080 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.
280a0 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
280c0 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
280e0 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
28100 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
28120 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)
28140 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
28160 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.
28180 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
281a0 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
281c0 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
281e0 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
28200 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
28220 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
28240 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
28260 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
28280 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
282a0 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
282c0 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/>...;;;.
282e0 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
28300 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
28320 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
28340 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
28360 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
28380 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
283a0 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.
283c0 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...
283e0 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
28400 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-
28420 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
28440 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
28460 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"."
28480 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
284a0 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.
284c0 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."
284e0 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...
28500 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
28520 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
28540 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
28560 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
28580 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...
285a0 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").....(
285c0 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
285e0 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"....
28600 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.
28620 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
28640 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"
28660 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
28680 64 6f 77 20 31 30 32 34 0a 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 32 2e 30 0a 20 20 dow.1024......:input-cost.2.0...
286a0 20 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 ...:output-cost.8.0......:cutoff
286c0 2d 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 34 2e 35 2d 70 72 -date."2024-05").....(gpt-4.5-pr
286e0 65 76 69 65 77 0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 4c 61 72 67 65 73 74 eview......:description."Largest
28700 20 61 6e 64 20 6d 6f 73 74 20 63 61 70 61 62 6c 65 20 47 50 54 20 6d 6f 64 65 6c 20 74 6f 20 64 .and.most.capable.GPT.model.to.d
28720 61 74 65 22 0a 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 75 72 6c 29 0a 20 20 ate"......:capabilities.(url)...
28740 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 6e 70 ...:context-window.128......:inp
28760 75 74 2d 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 ut-cost.75......:output-cost.150
28780 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 30 22 29 0a 20 20 ......:cutoff-date."2023-10")...
287a0 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 73 6f 6e 69 ..(o1......:description."Reasoni
287c0 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 61 72 64 20 ng.model.designed.to.solve.hard.
287e0 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 20 20 3a 63 problems.across.domains"......:c
28800 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 65 29 apabilities.(reasoning.tool-use)
28820 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 3a ......:context-window.200......:
28840 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 20 input-cost.15......:output-cost.
28860 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 2d 31 30 22 0a 20 60......:cutoff-date."2023-10"..
28880 20 20 20 20 3a 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 20 28 3a 73 74 72 65 61 6d 20 3a 6a 73 ....:request-params.(:stream.:js
288a0 6f 6e 2d 66 61 6c 73 65 29 29 0a 20 20 20 20 28 6f 33 0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 on-false)).....(o3......:descrip
288c0 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 77 65 72 66 75 6c 20 tion."Well-rounded.and.powerful.
288e0 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 20 20 3a 63 61 70 61 model.across.domains"......:capa
28900 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 6f 6c 2d 75 bilities.(reasoning.media.tool-u
28920 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 73 20 28 22 se.json.url)......:mime-types.("
28940 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 65 2f 67 image/jpeg"."image/png"."image/g
28960 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 65 78 74 2d if"."image/webp")......:context-
28980 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 30 0a 20 window.200......:input-cost.10..
289a0 20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 34 30 0a 20 20 20 20 20 3a 63 75 74 6f 66 66 ....:output-cost.40......:cutoff
289c0 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 6e 69 0a 20 20 -date."2024-05").....(o3-mini...
289e0 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 6c 69 67 65 6e ...:description."High.intelligen
28a00 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 65 6e 63 79 20 ce.at.the.same.cost.and.latency.
28a20 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 61 70 61 62 69 targets.of.o1-mini"......:capabi
28a40 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 65 29 0a 20 20 20 20 lities.(reasoning.tool-use).....
28a60 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
28a80 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 20 31 32 0a 20 20 20 -cost.3......:output-cost.12....
28aa0 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 6f ..:cutoff-date."2023-10").....(o
28ac0 34 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 46 61 73 74 2c 20 4-mini......:description."Fast,.
28ae0 65 66 66 65 63 74 69 76 65 20 72 65 61 73 6f 6e 69 6e 67 20 77 69 74 68 20 65 66 66 69 63 69 65 effective.reasoning.with.efficie
28b00 6e 74 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 69 6e 20 63 6f 64 69 6e 67 20 61 6e 64 20 76 69 73 nt.performance.in.coding.and.vis
28b20 75 61 6c 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 72 ual.tasks"......:capabilities.(r
28b40 65 61 73 6f 6e 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 easoning.media.tool-use.json.url
28b60 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"
28b80 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/
28ba0 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.
28bc0 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 31 2e 31 30 0a 20 20 20 20 20 3a 6f 75 74 70 .....:input-cost.1.10......:outp
28be0 75 74 2d 63 6f 73 74 20 34 2e 34 30 0a 20 20 20 20 20 3a 63 75 74 6f 66 66 2d 64 61 74 65 20 22 ut-cost.4.40......:cutoff-date."
28c00 32 30 32 34 2d 30 35 22 29 0a 20 20 20 20 28 63 6c 61 75 64 65 2d 33 2e 35 2d 73 6f 6e 6e 65 74 2024-05").....(claude-3.5-sonnet
28c20 0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 48 69 67 68 65 73 74 20 6c 65 76 65 ......:description."Highest.leve
28c40 6c 20 6f 66 20 69 6e 74 65 6c 6c 69 67 65 6e 63 65 20 61 6e 64 20 63 61 70 61 62 69 6c 69 74 79 l.of.intelligence.and.capability
28c60 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
28c80 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
28ca0 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
28cc0 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
28ce0 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.....
28d00 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
28d20 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 34 2d 30 34 22 29 .15......:cutoff-date."2024-04")
28d40 0a 20 20 20 20 28 63 6c 61 75 64 65 2d 33 2e 37 2d 73 6f 6e 6e 65 74 0a 20 20 20 20 20 3a 64 65 .....(claude-3.7-sonnet......:de
28d60 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 62 6c 65 20 scription."Hybrid.model.capable.
28d80 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 65 6e 64 65 of.standard.thinking.and.extende
28da0 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 62 69 6c 69 d.thinking.modes"......:capabili
28dc0 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).....
28de0 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
28e00 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".
28e20 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
28e40 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..
28e60 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
28e80 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 2d 33 2e 37 -date."2025-02").....(claude-3.7
28ea0 2d 73 6f 6e 6e 65 74 2d 74 68 6f 75 67 68 74 0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f -sonnet-thought......:descriptio
28ec0 6e 20 22 43 6c 61 75 64 65 20 33 2e 37 20 53 6f 6e 6e 65 74 20 54 68 69 6e 6b 69 6e 67 22 0a 20 n."Claude.3.7.Sonnet.Thinking"..
28ee0 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 63 61 63 68 65 29 0a ....:capabilities.(media.cache).
28f00 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"."
28f20 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
28f40 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
28f60 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
28f80 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
28fa0 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
28fc0 2d 73 6f 6e 6e 65 74 2d 34 0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 48 69 67 -sonnet-4......:description."Hig
28fe0 68 2d 70 65 72 66 6f 72 6d 61 6e 63 65 20 6d 6f 64 65 6c 20 77 69 74 68 20 65 78 63 65 70 74 69 h-performance.model.with.excepti
29000 6f 6e 61 6c 20 72 65 61 73 6f 6e 69 6e 67 20 61 6e 64 20 65 66 66 69 63 69 65 6e 63 79 22 0a 20 onal.reasoning.and.efficiency"..
29020 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 2d 75 73 ....:capabilities.(media.tool-us
29040 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 6d 61 67 e.cache)......:mime-types.("imag
29060 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".
29080 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 22 29 0a "image/webp"."application/pdf").
290a0 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
290c0 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 20 31 35 nput-cost.3......:output-cost.15
290e0 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 33 22 29 0a 20 20 ......:cutoff-date."2025-03")...
29100 20 20 28 63 6c 61 75 64 65 2d 6f 70 75 73 2d 34 0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 ..(claude-opus-4......:descripti
29120 6f 6e 20 22 4d 6f 73 74 20 63 61 70 61 62 6c 65 20 6d 6f 64 65 6c 20 66 6f 72 20 63 6f 6d 70 6c on."Most.capable.model.for.compl
29140 65 78 20 72 65 61 73 6f 6e 69 6e 67 20 61 6e 64 20 61 64 76 61 6e 63 65 64 20 63 6f 64 69 6e 67 ex.reasoning.and.advanced.coding
29160 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
29180 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
291a0 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
291c0 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
291e0 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.....
29200 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 2d 63 6f 73 .:input-cost.15......:output-cos
29220 74 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 35 2d 30 33 22 t.75......:cutoff-date."2025-03"
29240 29 0a 20 20 20 20 28 67 65 6d 69 6e 69 2d 32 2e 30 2d 66 6c 61 73 68 2d 30 30 31 0a 20 20 20 20 ).....(gemini-2.0-flash-001.....
29260 20 3a 64 65 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 .:description."Next.gen,.high.sp
29280 65 65 64 2c 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 eed,.multimodal.for.a.diverse.va
292a0 72 69 65 74 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 riety.of.tasks"......:capabiliti
292c0 65 73 20 28 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 es.(json.media)......:mime-types
292e0 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
29300 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
29320 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
29340 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
29360 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.
29380 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 20 20 20 20 20 1000......:input-cost.0.10......
293a0 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 66 2d 64 :output-cost.0.40......:cutoff-d
293c0 61 74 65 20 22 32 30 32 34 2d 30 38 22 29 0a 20 20 20 20 28 67 65 6d 69 6e 69 2d 32 2e 35 2d 70 ate."2024-08").....(gemini-2.5-p
293e0 72 6f 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 65 6e 2c 20 ro......:description."Next.gen,.
29400 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 20 64 69 76 high.speed,.multimodal.for.a.div
29420 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 3a 63 61 70 erse.variety.of.tasks"......:cap
29440 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 29 0a abilities.(tool-use.json.media).
29460 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 22 69 .....:mime-types.("image/png"."i
29480 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 2f 68 mage/jpeg"."image/webp"."image/h
294a0 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 20 20 eic"."image/heif"...............
294c0 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 61 69 ...."application/pdf"."text/plai
294e0 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 20 20 n"."text/csv"."text/html")......
29500 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 69 6e 70 75 74 :context-window.1000......:input
29520 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 74 20 30 2e 34 -cost.0.10......:output-cost.0.4
29540 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 38 22 29 29 29 0......:cutoff-date."2024-08")))
29560 0a 0a 28 63 6c 2d 64 65 66 73 74 72 75 63 74 20 28 67 70 74 65 6c 2d 2d 67 68 20 28 3a 69 6e 63 ..(cl-defstruct.(gptel--gh.(:inc
29580 6c 75 64 65 20 67 70 74 65 6c 2d 6f 70 65 6e 61 69 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 lude.gptel-openai)..............
295a0 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).......
295c0 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 75 63 74 6f 72 ...................(:constructor
295e0 20 67 70 74 65 6c 2d 2d 6d 61 6b 65 2d 67 68 29 29 0a 20 20 74 6f 6b 65 6e 20 67 69 74 68 75 62 .gptel--make-gh))...token.github
29600 2d 74 6f 6b 65 6e 20 73 65 73 73 69 6f 6e 69 64 20 6d 61 63 68 69 6e 65 69 64 29 0a 0a 28 64 65 -token.sessionid.machineid)..(de
29620 66 63 75 73 74 6f 6d 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 fcustom.gptel-gh-github-token-fi
29640 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 2f 63 6f 70 le.(expand-file-name.".cache/cop
29660 69 6c 6f 74 2d 63 68 61 74 2f 67 69 74 68 75 62 2d 74 6f 6b 65 6e 22 0a 20 20 20 20 20 20 20 20 ilot-chat/github-token".........
29680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
296a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 73 65 72 2d 65 6d 61 63 73 2d 64 69 72 65 63 ................user-emacs-direc
296c0 74 6f 72 79 29 0a 20 20 22 46 69 6c 65 20 77 68 65 72 65 20 74 68 65 20 47 69 74 48 75 62 20 74 tory)..."File.where.the.GitHub.t
296e0 6f 6b 65 6e 20 69 73 20 73 74 6f 72 65 64 2e 22 0a 20 20 3a 74 79 70 65 20 27 73 74 72 69 6e 67 oken.is.stored."...:type.'string
29700 0a 20 20 3a 67 72 6f 75 70 20 27 67 70 74 65 6c 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 ...:group.'gptel)..(defcustom.gp
29720 74 65 6c 2d 67 68 2d 74 6f 6b 65 6e 2d 66 69 6c 65 20 28 65 78 70 61 6e 64 2d 66 69 6c 65 2d 6e tel-gh-token-file.(expand-file-n
29740 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 74 6f 6b 65 6e 22 0a ame.".cache/copilot-chat/token".
29760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
29780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 73 65 72 2d 65 6d 61 63 73 2d 64 69 72 65 .................user-emacs-dire
297a0 63 74 6f 72 79 29 0a 20 20 22 46 69 6c 65 20 77 68 65 72 65 20 74 68 65 20 63 68 61 74 20 74 6f ctory)..."File.where.the.chat.to
297c0 6b 65 6e 20 69 73 20 63 61 63 68 65 64 2e 22 0a 20 20 3a 74 79 70 65 20 27 73 74 72 69 6e 67 0a ken.is.cached."...:type.'string.
297e0 20 20 3a 67 72 6f 75 70 20 27 67 70 74 65 6c 29 0a 0a 28 64 65 66 63 6f 6e 73 74 20 67 70 74 65 ..:group.'gptel)..(defconst.gpte
29800 6c 2d 2d 67 68 2d 61 75 74 68 2d 63 6f 6d 6d 6f 6e 2d 68 65 61 64 65 72 73 0a 20 20 60 28 28 22 l--gh-auth-common-headers...`(("
29820 65 64 69 74 6f 72 2d 70 6c 75 67 69 6e 2d 76 65 72 73 69 6f 6e 22 20 2e 20 22 67 70 74 65 6c 2f editor-plugin-version"..."gptel/
29840 2a 22 29 0a 20 20 20 20 28 22 65 64 69 74 6f 72 2d 76 65 72 73 69 6f 6e 22 20 2e 20 2c 28 63 6f *").....("editor-version"...,(co
29860 6e 63 61 74 20 22 65 6d 61 63 73 2f 22 20 65 6d 61 63 73 2d 76 65 72 73 69 6f 6e 29 29 29 29 0a ncat."emacs/".emacs-version)))).
29880 0a 28 64 65 66 63 6f 6e 73 74 20 67 70 74 65 6c 2d 2d 67 68 2d 63 6c 69 65 6e 74 2d 69 64 20 22 .(defconst.gptel--gh-client-id."
298a0 49 76 31 2e 62 35 30 37 61 30 38 63 38 37 65 63 66 65 39 38 22 29 0a 0a 3b 3b 20 68 74 74 70 73 Iv1.b507a08c87ecfe98")..;;.https
298c0 3a 2f 2f 65 6e 2e 77 69 6b 69 70 65 64 69 61 2e 6f 72 67 2f 77 69 6b 69 2f 55 6e 69 76 65 72 73 ://en.wikipedia.org/wiki/Univers
298e0 61 6c 6c 79 5f 75 6e 69 71 75 65 5f 69 64 65 6e 74 69 66 69 65 72 23 56 65 72 73 69 6f 6e 5f 34 ally_unique_identifier#Version_4
29900 5f 28 72 61 6e 64 6f 6d 29 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 67 68 2d 75 75 69 64 20 _(random).(defun.gptel--gh-uuid.
29920 28 29 0a 20 20 22 47 65 6e 65 72 61 74 65 20 61 20 55 55 49 44 20 76 34 2d 31 2e 22 0a 20 20 28 ()..."Generate.a.UUID.v4-1."...(
29940 66 6f 72 6d 61 74 20 22 25 30 34 78 25 30 34 78 2d 25 30 34 78 2d 34 25 30 33 78 2d 38 25 30 33 format."%04x%04x-%04x-4%03x-8%03
29960 78 2d 25 30 34 78 25 30 34 78 25 30 34 78 22 0a 20 20 20 20 20 20 20 20 20 20 28 72 61 6e 64 6f x-%04x%04x%04x"...........(rando
29980 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 0a 20 20 20 20 m.#x10000).(random.#x10000).....
299a0 20 20 20 20 20 20 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 ......(random.#x10000)..........
299c0 20 28 72 61 6e 64 6f 6d 20 23 78 31 30 30 30 29 0a 20 20 20 20 20 20 20 20 20 20 28 72 61 6e 64 .(random.#x1000)...........(rand
299e0 6f 6d 20 23 78 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 om.#x1000)...........(random.#x1
29a00 30 30 30 30 29 20 28 72 61 6e 64 6f 6d 20 23 78 31 30 30 30 30 29 20 28 72 61 6e 64 6f 6d 20 23 0000).(random.#x10000).(random.#
29a20 78 31 30 30 30 30 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 67 68 2d 6d 61 63 68 x10000)))..(defun.gptel--gh-mach
29a40 69 6e 65 2d 69 64 20 28 29 0a 20 20 22 47 65 6e 65 72 61 74 65 20 61 20 6d 61 63 68 69 6e 65 20 ine-id.()..."Generate.a.machine.
29a60 49 44 2e 22 0a 20 20 28 6c 65 74 20 28 28 68 65 78 2d 63 68 61 72 73 20 22 30 31 32 33 34 35 36 ID."...(let.((hex-chars."0123456
29a80 37 38 39 61 62 63 64 65 66 22 29 0a 20 20 20 20 20 20 20 20 28 6c 65 6e 67 74 68 20 36 35 29 0a 789abcdef").........(length.65).
29aa0 20 20 20 20 20 20 20 20 68 65 78 29 0a 20 20 20 20 28 64 6f 74 69 6d 65 73 20 28 5f 20 6c 65 6e ........hex).....(dotimes.(_.len
29ac0 67 74 68 29 0a 20 20 20 20 20 20 28 73 65 74 71 20 68 65 78 20 28 6e 63 6f 6e 63 20 68 65 78 20 gth).......(setq.hex.(nconc.hex.
29ae0 28 6c 69 73 74 20 28 61 72 65 66 20 68 65 78 2d 63 68 61 72 73 20 28 72 61 6e 64 6f 6d 20 31 36 (list.(aref.hex-chars.(random.16
29b00 29 29 29 29 29 29 0a 20 20 20 20 28 61 70 70 6c 79 20 23 27 73 74 72 69 6e 67 20 68 65 78 29 29 )))))).....(apply.#'string.hex))
29b20 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 67 68 2d 72 65 73 74 6f 72 65 20 28 66 69 6c )..(defun.gptel--gh-restore.(fil
29b40 65 29 0a 20 20 22 52 65 73 74 6f 72 65 20 73 61 76 65 64 20 6f 62 6a 65 63 74 20 66 72 6f 6d 20 e)..."Restore.saved.object.from.
29b60 46 49 4c 45 2e 22 0a 20 20 28 77 68 65 6e 20 28 66 69 6c 65 2d 65 78 69 73 74 73 2d 70 20 66 69 FILE."...(when.(file-exists-p.fi
29b80 6c 65 29 0a 20 20 20 20 3b 3b 20 57 65 20 73 65 74 20 74 68 65 20 63 6f 64 69 6e 67 20 73 79 73 le).....;;.We.set.the.coding.sys
29ba0 74 65 6d 20 74 6f 20 60 75 74 66 2d 38 2d 61 75 74 6f 2d 64 6f 73 27 20 77 68 65 6e 20 72 65 61 tem.to.`utf-8-auto-dos'.when.rea
29bc0 64 69 6e 67 20 73 6f 20 74 68 61 74 0a 20 20 20 20 3b 3b 20 66 69 6c 65 73 20 77 69 74 68 20 43 ding.so.that.....;;.files.with.C
29be0 52 20 45 4f 4c 20 63 61 6e 20 73 74 69 6c 6c 20 62 65 20 72 65 61 64 20 70 72 6f 70 65 72 6c 79 R.EOL.can.still.be.read.properly
29c00 0a 20 20 20 20 28 6c 65 74 20 28 28 63 6f 64 69 6e 67 2d 73 79 73 74 65 6d 2d 66 6f 72 2d 72 65 .....(let.((coding-system-for-re
29c20 61 64 20 27 75 74 66 2d 38 2d 61 75 74 6f 2d 64 6f 73 29 29 0a 20 20 20 20 20 20 28 77 69 74 68 ad.'utf-8-auto-dos)).......(with
29c40 2d 74 65 6d 70 2d 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 -temp-buffer.........(set-buffer
29c60 2d 6d 75 6c 74 69 62 79 74 65 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 2d -multibyte.nil).........(insert-
29c80 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 29 0a 20 20 file-contents-literally.file)...
29ca0 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))...
29cc0 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 29 29 29 29 ......(read.(current-buffer)))))
29ce0 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 67 68 2d 73 61 76 65 20 28 66 69 6c 65 20 6f )..(defun.gptel--gh-save.(file.o
29d00 62 6a 29 0a 20 20 22 53 61 76 65 20 4f 42 4a 20 74 6f 20 46 49 4c 45 2e 22 0a 20 20 28 6c 65 74 bj)..."Save.OBJ.to.FILE."...(let
29d20 20 28 28 70 72 69 6e 74 2d 6c 65 6e 67 74 68 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 28 70 72 .((print-length.nil).........(pr
29d40 69 6e 74 2d 6c 65 76 65 6c 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 28 63 6f 64 69 6e 67 2d 73 int-level.nil).........(coding-s
29d60 79 73 74 65 6d 2d 66 6f 72 2d 77 72 69 74 65 20 27 75 74 66 2d 38 2d 75 6e 69 78 29 29 0a 20 20 ystem-for-write.'utf-8-unix))...
29d80 20 20 28 6d 61 6b 65 2d 64 69 72 65 63 74 6f 72 79 20 28 66 69 6c 65 2d 6e 61 6d 65 2d 64 69 72 ..(make-directory.(file-name-dir
29da0 65 63 74 6f 72 79 20 66 69 6c 65 29 20 74 29 0a 20 20 20 20 28 77 72 69 74 65 2d 72 65 67 69 6f ectory.file).t).....(write-regio
29dc0 6e 20 28 70 72 69 6e 31 2d 74 6f 2d 73 74 72 69 6e 67 20 6f 62 6a 29 20 6e 69 6c 20 66 69 6c 65 n.(prin1-to-string.obj).nil.file
29de0 20 6e 69 6c 20 3a 73 69 6c 65 6e 74 29 0a 20 20 20 20 6f 62 6a 29 29 0a 0a 28 64 65 66 75 6e 20 .nil.:silent).....obj))..(defun.
29e00 67 70 74 65 6c 2d 2d 67 68 2d 6c 6f 67 69 6e 28 29 0a 20 20 22 4d 61 6e 61 67 65 20 67 69 74 68 gptel--gh-login()..."Manage.gith
29e20 75 62 20 6c 6f 67 69 6e 2e 22 0a 20 20 28 70 63 61 73 65 2d 6c 65 74 20 28 28 28 6d 61 70 20 3a ub.login."...(pcase-let.(((map.:
29e40 64 65 76 69 63 65 5f 63 6f 64 65 20 3a 75 73 65 72 5f 63 6f 64 65 20 3a 76 65 72 69 66 69 63 61 device_code.:user_code.:verifica
29e60 74 69 6f 6e 5f 75 72 69 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d tion_uri)................(gptel-
29e80 2d 75 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 20 20 20 22 68 -url-retrieve................."h
29ea0 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6c 6f 67 69 6e 2f 64 65 76 69 63 65 2f 63 ttps://github.com/login/device/c
29ec0 6f 64 65 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6d 65 74 68 6f 64 20 27 70 6f ode".................:method.'po
29ee0 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 68 65 61 64 65 72 73 20 67 70 74 65 st.................:headers.gpte
29f00 6c 2d 2d 67 68 2d 61 75 74 68 2d 63 6f 6d 6d 6f 6e 2d 68 65 61 64 65 72 73 0a 20 20 20 20 20 20 l--gh-auth-common-headers.......
29f20 20 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 20 2c 67 ..........:data.`(.:client_id.,g
29f40 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 20 20 20 ptel--gh-client-id..............
29f60 20 20 20 20 20 20 20 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 ............:scope."read:user"))
29f80 29 29 0a 20 20 20 20 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 )).....(gui-set-selection.'CLIPB
29fa0 4f 41 52 44 20 75 73 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 OARD.user_code).....(read-from-m
29fc0 69 6e 69 62 75 66 66 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 inibuffer......(format."Your.one
29fe0 2d 74 69 6d 65 20 63 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 -time.code.%s.is.copied..\.Press
2a000 20 45 4e 54 45 52 20 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 .ENTER.to.open.GitHub.in.your.br
2a020 6f 77 73 65 72 2e 20 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 owser..\.If.your.browser.does.no
2a040 74 20 6f 70 65 6e 20 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 t.open.automatically,.browse.to.
2a060 25 73 2e 22 0a 20 20 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 %s."..............user_code.veri
2a080 66 69 63 61 74 69 6f 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 fication_uri)).....(browse-url.v
2a0a0 65 72 69 66 69 63 61 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 erification_uri).....(read-from-
2a0c0 6d 69 6e 69 62 75 66 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 minibuffer."Press.ENTER.after.au
2a0e0 74 68 6f 72 69 7a 69 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 thorizing.").....(thread-last...
2a100 20 20 20 20 28 70 6c 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 ....(plist-get........(gptel--ur
2a120 6c 2d 72 65 74 72 69 65 76 65 0a 20 20 20 20 20 20 20 20 22 68 74 74 70 73 3a 2f 2f 67 69 74 68 l-retrieve........."https://gith
2a140 75 62 2e 63 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 ub.com/login/oauth/access_token"
2a160 0a 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 20 3a .........:method.'post.........:
2a180 68 65 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 headers.gptel--gh-auth-common-he
2a1a0 61 64 65 72 73 0a 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 aders.........:data.`(.:client_i
2a1c0 64 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 d.,gptel--gh-client-id..........
2a1e0 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
2a200 65 0a 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 22 e..................:grant_type."
2a220 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 65 urn:ietf:params:oauth:grant-type
2a240 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 74 :device_code"))........:access_t
2a260 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 65 oken).......(gptel--gh-save.gpte
2a280 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 73 l-gh-github-token-file).......(s
2a2a0 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 65 etf.(gptel--gh-github-token.gpte
2a2c0 6c 2d 62 61 63 6b 65 6e 64 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 67 68 l-backend)))))..(defun.gptel--gh
2a2e0 2d 72 65 6e 65 77 2d 74 6f 6b 65 6e 20 28 29 0a 20 20 22 52 65 6e 65 77 20 73 65 73 73 69 6f 6e -renew-token.()..."Renew.session
2a300 20 74 6f 6b 65 6e 2e 22 0a 20 20 28 6c 65 74 20 28 28 74 6f 6b 65 6e 0a 20 20 20 20 20 20 20 20 .token."...(let.((token.........
2a320 20 28 67 70 74 65 6c 2d 2d 75 72 6c 2d 72 65 74 72 69 65 76 65 0a 20 20 20 20 20 20 20 20 20 20 .(gptel--url-retrieve...........
2a340 20 20 20 22 68 74 74 70 73 3a 2f 2f 61 70 69 2e 67 69 74 68 75 62 2e 63 6f 6d 2f 63 6f 70 69 6c ..."https://api.github.com/copil
2a360 6f 74 5f 69 6e 74 65 72 6e 61 6c 2f 76 32 2f 74 6f 6b 65 6e 22 0a 20 20 20 20 20 20 20 20 20 20 ot_internal/v2/token"...........
2a380 20 3a 6d 65 74 68 6f 64 20 27 67 65 74 0a 20 20 20 20 20 20 20 20 20 20 20 3a 68 65 61 64 65 72 .:method.'get............:header
2a3a0 73 20 60 28 28 22 61 75 74 68 6f 72 69 7a 61 74 69 6f 6e 22 0a 20 20 20 20 20 20 20 20 20 20 20 s.`(("authorization"............
2a3c0 20 20 20 20 20 20 20 20 20 20 20 20 2e 20 2c 28 66 6f 72 6d 61 74 20 22 74 6f 6b 65 6e 20 25 73 ..............,(format."token.%s
2a3e0 22 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 ".(gptel--gh-github-token.gptel-
2a400 62 61 63 6b 65 6e 64 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 backend)))......................
2a420 20 2c 40 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 65 72 73 .,@gptel--gh-auth-common-headers
2a440 29 29 29 29 0a 20 20 20 20 28 69 66 20 28 6e 6f 74 20 28 70 6c 69 73 74 2d 67 65 74 20 74 6f 6b )))).....(if.(not.(plist-get.tok
2a460 65 6e 20 3a 74 6f 6b 65 6e 29 29 0a 20 20 20 20 20 20 20 20 28 70 72 6f 67 6e 0a 20 20 20 20 20 en.:token)).........(progn......
2a480 20 20 20 20 20 28 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 .....(setf.(gptel--gh-github-tok
2a4a0 65 6e 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 en.gptel-backend).nil)..........
2a4c0 20 28 75 73 65 72 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 .(user-error."Error:.You.might.n
2a4e0 6f 74 20 68 61 76 65 20 61 63 63 65 73 73 20 74 6f 20 47 69 74 68 75 62 20 43 6f 70 69 6c 6f 74 ot.have.access.to.Github.Copilot
2a500 20 43 68 61 74 21 22 29 29 0a 20 20 20 20 20 20 28 74 68 72 65 61 64 2d 6c 61 73 74 0a 20 20 20 .Chat!")).......(thread-last....
2a520 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 67 68 2d 73 61 76 65 20 67 70 74 65 6c 2d 67 68 2d 74 6f .....(gptel--gh-save.gptel-gh-to
2a540 6b 65 6e 2d 66 69 6c 65 20 74 6f 6b 65 6e 29 0a 20 20 20 20 20 20 20 20 28 73 65 74 66 20 28 67 ken-file.token).........(setf.(g
2a560 70 74 65 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 29 29 ptel--gh-token.gptel-backend))))
2a580 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 67 68 2d 61 75 74 68 20 28 29 0a 20 20 22 ))..(defun.gptel--gh-auth.()..."
2a5a0 41 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
2a5c0 20 41 50 49 2e 0a 0a 57 65 20 66 69 72 73 74 20 6e 65 65 64 20 67 69 74 68 75 62 20 61 75 74 68 .API...We.first.need.github.auth
2a5e0 6f 72 69 7a 61 74 69 6f 6e 20 28 67 69 74 68 75 62 20 74 6f 6b 65 6e 29 2e 0a 54 68 65 6e 20 77 orization.(github.token)..Then.w
2a600 65 20 6e 65 65 64 20 61 20 73 65 73 73 69 6f 6e 20 74 6f 6b 65 6e 2e 22 0a 20 20 28 75 6e 6c 65 e.need.a.session.token."...(unle
2a620 73 73 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 ss.(gptel--gh-github-token.gptel
2a640 2d 62 61 63 6b 65 6e 64 29 0a 20 20 20 20 28 6c 65 74 20 28 28 74 6f 6b 65 6e 20 28 67 70 74 65 -backend).....(let.((token.(gpte
2a660 6c 2d 2d 67 68 2d 72 65 73 74 6f 72 65 20 67 70 74 65 6c 2d 67 68 2d 67 69 74 68 75 62 2d 74 6f l--gh-restore.gptel-gh-github-to
2a680 6b 65 6e 2d 66 69 6c 65 29 29 29 0a 20 20 20 20 20 20 28 69 66 20 74 6f 6b 65 6e 0a 20 20 20 20 ken-file))).......(if.token.....
2a6a0 20 20 20 20 20 20 28 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 ......(setf.(gptel--gh-github-to
2a6c0 6b 65 6e 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 20 74 6f 6b 65 6e 29 0a 20 20 20 20 20 20 ken.gptel-backend).token).......
2a6e0 20 20 28 67 70 74 65 6c 2d 2d 67 68 2d 6c 6f 67 69 6e 29 29 29 29 0a 0a 20 20 28 77 68 65 6e 20 ..(gptel--gh-login))))....(when.
2a700 28 6e 75 6c 6c 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 (null.(gptel--gh-token.gptel-bac
2a720 6b 65 6e 64 29 29 0a 20 20 20 20 3b 3b 20 74 72 79 20 74 6f 20 6c 6f 61 64 20 74 6f 6b 65 6e 20 kend)).....;;.try.to.load.token.
2a740 66 72 6f 6d 20 60 67 70 74 65 6c 2d 67 68 2d 74 6f 6b 65 6e 2d 66 69 6c 65 27 0a 20 20 20 20 28 from.`gptel-gh-token-file'.....(
2a760 73 65 74 66 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 6b setf.(gptel--gh-token.gptel-back
2a780 65 6e 64 29 0a 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 67 68 2d 72 65 73 74 6f 72 end)...........(gptel--gh-restor
2a7a0 65 20 67 70 74 65 6c 2d 67 68 2d 74 6f 6b 65 6e 2d 66 69 6c 65 29 29 29 0a 0a 20 20 28 70 63 61 e.gptel-gh-token-file)))....(pca
2a7c0 73 65 2d 6c 65 74 20 28 28 28 6d 61 70 20 3a 74 6f 6b 65 6e 20 3a 65 78 70 69 72 65 73 5f 61 74 se-let.(((map.:token.:expires_at
2a7e0 29 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 68 2d 74 6f 6b 65 )................(gptel--gh-toke
2a800 6e 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 28 6f 72 n.gptel-backend))).....(when.(or
2a820 20 28 6e 75 6c 6c 20 74 6f 6b 65 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 .(null.token)...............(and
2a840 20 65 78 70 69 72 65 73 5f 61 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 .expires_at....................(
2a860 3e 20 28 72 6f 75 6e 64 20 28 66 6c 6f 61 74 2d 74 69 6d 65 20 28 63 75 72 72 65 6e 74 2d 74 69 >.(round.(float-time.(current-ti
2a880 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 20 20 20 65 78 70 69 me))).......................expi
2a8a0 72 65 73 5f 61 74 29 29 29 0a 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 67 68 2d 72 65 6e 65 77 res_at))).......(gptel--gh-renew
2a8c0 2d 74 6f 6b 65 6e 29 29 29 29 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a 28 63 6c 2d 64 -token))))..;;;###autoload.(cl-d
2a8e0 65 66 75 6e 20 67 70 74 65 6c 2d 6d 61 6b 65 2d 67 68 2d 63 6f 70 69 6c 6f 74 0a 20 20 20 20 28 efun.gptel-make-gh-copilot.....(
2a900 6e 61 6d 65 20 26 6b 65 79 20 63 75 72 6c 2d 61 72 67 73 20 72 65 71 75 65 73 74 2d 70 61 72 61 name.&key.curl-args.request-para
2a920 6d 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 0a ms...........(header.(lambda.().
2a940 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 67 68 2d 61 ....................(gptel--gh-a
2a960 75 74 68 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 60 28 28 22 6f 70 65 uth).....................`(("ope
2a980 6e 61 69 2d 69 6e 74 65 6e 74 22 20 2e 20 22 63 6f 6e 76 65 72 73 61 74 69 6f 6e 2d 70 61 6e 65 nai-intent"..."conversation-pane
2a9a0 6c 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 28 22 61 75 74 68 l").......................("auth
2a9c0 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 72 65 72 20 22 0a orization"...,(concat."Bearer.".
2a9e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
2aa00 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 67 65 74 20 28 67 70 74 65 6c 2d 2d 67 68 ...........(plist-get.(gptel--gh
2aa20 2d 74 6f 6b 65 6e 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 20 3a 74 6f 6b 65 6e 29 29 29 0a -token.gptel-backend).:token))).
2aa40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 22 78 2d 72 65 71 75 65 73 ......................("x-reques
2aa60 74 2d 69 64 22 20 2e 20 2c 28 67 70 74 65 6c 2d 2d 67 68 2d 75 75 69 64 29 29 0a 20 20 20 20 20 t-id"...,(gptel--gh-uuid))......
2aa80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 22 76 73 63 6f 64 65 2d 73 65 73 73 69 6f .................("vscode-sessio
2aaa0 6e 69 64 22 20 2e 20 2c 28 6f 72 20 28 67 70 74 65 6c 2d 2d 67 68 2d 73 65 73 73 69 6f 6e 69 64 nid"...,(or.(gptel--gh-sessionid
2aac0 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 20 22 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 .gptel-backend).""))............
2aae0 20 20 20 20 20 20 20 20 20 20 20 28 22 76 73 63 6f 64 65 2d 6d 61 63 68 69 6e 65 69 64 22 20 2e ...........("vscode-machineid"..
2ab00 20 2c 28 6f 72 20 28 67 70 74 65 6c 2d 2d 67 68 2d 6d 61 63 68 69 6e 65 69 64 20 67 70 74 65 6c .,(or.(gptel--gh-machineid.gptel
2ab20 2d 62 61 63 6b 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 -backend).""))..................
2ab40 20 20 20 20 20 2c 40 28 77 68 65 6e 20 28 61 6e 64 20 67 70 74 65 6c 2d 74 72 61 63 6b 2d 6d 65 .....,@(when.(and.gptel-track-me
2ab60 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 20 20 20 20 dia.............................
2ab80 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 20 27 .......(gptel--model-capable-p.'
2aba0 6d 65 64 69 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 20 media)).........................
2abc0 20 20 60 28 28 22 63 6f 70 69 6c 6f 74 2d 76 69 73 69 6f 6e 2d 72 65 71 75 65 73 74 22 20 2e 20 ..`(("copilot-vision-request"...
2abe0 22 74 72 75 65 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 "true"))).......................
2ac00 28 22 63 6f 70 69 6c 6f 74 2d 69 6e 74 65 67 72 61 74 69 6f 6e 2d 69 64 22 20 2e 20 22 76 73 63 ("copilot-integration-id"..."vsc
2ac20 6f 64 65 2d 63 68 61 74 22 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 68 6f 73 74 20 22 61 ode-chat"))))...........(host."a
2ac40 70 69 2e 67 69 74 68 75 62 63 6f 70 69 6c 6f 74 2e 63 6f 6d 22 29 0a 20 20 20 20 20 20 20 20 20 pi.githubcopilot.com")..........
2ac60 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
2ac80 6e 64 70 6f 69 6e 74 20 22 2f 63 68 61 74 2f 63 6f 6d 70 6c 65 74 69 6f 6e 73 22 29 0a 20 20 20 ndpoint."/chat/completions")....
2aca0 20 20 20 20 20 20 20 28 73 74 72 65 61 6d 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 .......(stream.t)...........(mod
2acc0 65 6c 73 20 67 70 74 65 6c 2d 2d 67 68 2d 6d 6f 64 65 6c 73 29 29 0a 20 20 22 52 65 67 69 73 74 els.gptel--gh-models))..."Regist
2ace0 65 72 20 61 20 47 69 74 68 75 62 20 43 6f 70 69 6c 6f 74 20 63 68 61 74 20 62 61 63 6b 65 6e 64 er.a.Github.Copilot.chat.backend
2ad00 20 66 6f 72 20 67 70 74 65 6c 20 77 69 74 68 20 4e 41 4d 45 2e 0a 0a 4b 65 79 77 6f 72 64 20 61 .for.gptel.with.NAME...Keyword.a
2ad20 72 67 75 6d 65 6e 74 73 3a 0a 0a 43 55 52 4c 2d 41 52 47 53 20 28 6f 70 74 69 6f 6e 61 6c 29 20 rguments:..CURL-ARGS.(optional).
2ad40 69 73 20 61 20 6c 69 73 74 20 6f 66 20 61 64 64 69 74 69 6f 6e 61 6c 20 43 75 72 6c 20 61 72 67 is.a.list.of.additional.Curl.arg
2ad60 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 74 68 65 20 uments...HOST.(optional).is.the.
2ad80 41 50 49 20 68 6f 73 74 2c 20 74 79 70 69 63 61 6c 6c 79 20 5c 22 61 70 69 2e 67 69 74 68 75 62 API.host,.typically.\"api.github
2ada0 63 6f 70 69 6c 6f 74 2e 63 6f 6d 5c 22 2e 0a 0a 4d 4f 44 45 4c 53 20 69 73 20 61 20 6c 69 73 74 copilot.com\"...MODELS.is.a.list
2adc0 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 73 79 .of.available.model.names,.as.sy
2ade0 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 61 6e 20 73 70 65 mbols..Additionally,.you.can.spe
2ae00 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 69 74 69 65 73 20 cify.supported.LLM.capabilities.
2ae20 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 20 61 70 70 65 6e like.vision.or.tool-use.by.appen
2ae40 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 77 69 74 68 20 6d ding.a.plist.to.the.model.with.m
2ae60 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 72 6d 0a 0a 20 28 ore.information,.in.the.form...(
2ae80 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 20 6c 69 73 74 20 model-name...plist)..For.a.list.
2aea0 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 69 73 74 20 6b 65 of.currently.recognized.plist.ke
2aec0 79 73 2c 20 73 65 65 0a 60 67 70 74 65 6c 2d 2d 6f 70 65 6e 61 69 2d 6d 6f 64 65 6c 73 27 2e 20 ys,.see.`gptel--openai-models'..
2aee0 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 69 66 69 63 61 .An.example.of.a.model.specifica
2af00 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 66 20 73 70 65 tion.including.both.kinds.of.spe
2af20 63 73 3a 0a 0a 3a 6d 6f 64 65 6c 73 0a 5c 5c 3d 27 28 67 70 74 2d 33 2e 35 2d 74 75 72 62 6f 20 cs:..:models.\\='(gpt-3.5-turbo.
2af40 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 69 6d 70 6c 65 20 ........................;Simple.
2af60 73 70 65 63 73 0a 20 20 67 70 74 2d 34 2d 74 75 72 62 6f 0a 20 20 28 67 70 74 2d 34 6f 2d 6d 69 specs...gpt-4-turbo...(gpt-4o-mi
2af80 6e 69 20 20 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 46 75 6c ni..........................;Ful
2afa0 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 41 66 66 6f l.spec....:description....\"Affo
2afc0 72 64 61 62 6c 65 20 61 6e 64 20 69 6e 74 65 6c 6c 69 67 65 6e 74 20 73 6d 61 6c 6c 20 6d 6f 64 rdable.and.intelligent.small.mod
2afe0 65 6c 20 66 6f 72 20 6c 69 67 68 74 77 65 69 67 68 74 20 74 61 73 6b 73 5c 22 0a 20 20 20 3a 63 el.for.lightweight.tasks\"....:c
2b000 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 6f 6e 20 75 72 6c apabilities.(media.tool.json.url
2b020 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 70 65 )....:mime-types....(\"image/jpe
2b040 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 22 20 g\".\"image/png\".\"image/gif\".
2b060 5c 22 69 6d 61 67 65 2f 77 65 62 70 5c 22 29 29 29 0a 0a 44 65 66 61 75 6c 74 73 20 74 6f 20 61 \"image/webp\")))..Defaults.to.a
2b080 20 6c 69 73 74 20 6f 66 20 6d 6f 64 65 6c 73 20 73 75 70 70 6f 72 74 65 64 20 62 79 20 47 69 74 .list.of.models.supported.by.Git
2b0a0 48 75 62 20 43 6f 70 69 6c 6f 74 2e 0a 0a 53 54 52 45 41 4d 20 69 73 20 61 20 62 6f 6f 6c 65 61 Hub.Copilot...STREAM.is.a.boolea
2b0c0 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 2c n.to.toggle.streaming.responses,
2b0e0 20 64 65 66 61 75 6c 74 73 20 74 6f 0a 66 61 6c 73 65 2e 0a 0a 50 52 4f 54 4f 43 4f 4c 20 28 6f .defaults.to.false...PROTOCOL.(o
2b100 70 74 69 6f 6e 61 6c 29 20 73 70 65 63 69 66 69 65 73 20 74 68 65 20 70 72 6f 74 6f 63 6f 6c 2c ptional).specifies.the.protocol,
2b120 20 68 74 74 70 73 20 62 79 20 64 65 66 61 75 6c 74 2e 0a 0a 45 4e 44 50 4f 49 4e 54 20 28 6f 70 .https.by.default...ENDPOINT.(op
2b140 74 69 6f 6e 61 6c 29 20 69 73 20 74 68 65 20 41 50 49 20 65 6e 64 70 6f 69 6e 74 20 66 6f 72 20 tional).is.the.API.endpoint.for.
2b160 63 6f 6d 70 6c 65 74 69 6f 6e 73 2c 20 64 65 66 61 75 6c 74 73 20 74 6f 0a 5c 22 2f 63 68 61 74 completions,.defaults.to.\"/chat
2b180 2f 63 6f 6d 70 6c 65 74 69 6f 6e 73 5c 22 2e 0a 0a 48 45 41 44 45 52 20 28 6f 70 74 69 6f 6e 61 /completions\"...HEADER.(optiona
2b1a0 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 6f 20 l).is.for.additional.headers.to.
2b1c0 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 6f 75 send.with.each.request...It.shou
2b1e0 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 68 61 ld.be.an.alist.or.a.function.tha
2b200 74 20 72 65 74 75 72 6e 73 20 61 6e 0a 61 6c 69 73 74 2c 20 6c 69 6b 65 3a 0a 20 28 28 5c 22 43 t.returns.an.alist,.like:..((\"C
2b220 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 73 ontent-Type\"...\"application/js
2b240 6f 6e 5c 22 29 29 0a 0a 44 65 66 61 75 6c 74 73 20 74 6f 20 68 65 61 64 65 72 73 20 72 65 71 75 on\"))..Defaults.to.headers.requ
2b260 69 72 65 64 20 62 79 20 47 69 74 48 75 62 20 43 6f 70 69 6c 6f 74 2e 0a 0a 52 45 51 55 45 53 54 ired.by.GitHub.Copilot...REQUEST
2b280 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 66 -PARAMS.(optional).is.a.plist.of
2b2a0 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 74 .additional.HTTP.request.paramet
2b2c0 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 73 ers.(as.plist.keys).and.values.s
2b2e0 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 20 upported.by.the.API...Use.these.
2b300 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 65 to.set.parameters.that.gptel.doe
2b320 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 22 s.not.provide.user.options.for."
2b340 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 28 ...(declare.(indent.1))...(let.(
2b360 28 62 61 63 6b 65 6e 64 20 28 67 70 74 65 6c 2d 2d 6d 61 6b 65 2d 67 68 0a 20 20 20 20 20 20 20 (backend.(gptel--make-gh........
2b380 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 20 20 ...........:name.name...........
2b3a0 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 20 20 ........:host.host..............
2b3c0 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 20 20 .....:header.header.............
2b3e0 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 2d 6d 6f ......:models.(gptel--process-mo
2b400 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 20 20 3a dels.models)...................:
2b420 70 72 6f 74 6f 63 6f 6c 20 70 72 6f 74 6f 63 6f 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 protocol.protocol...............
2b440 20 20 20 20 3a 65 6e 64 70 6f 69 6e 74 20 65 6e 64 70 6f 69 6e 74 0a 20 20 20 20 20 20 20 20 20 ....:endpoint.endpoint..........
2b460 20 20 20 20 20 20 20 20 20 3a 73 74 72 65 61 6d 20 73 74 72 65 61 6d 0a 20 20 20 20 20 20 20 20 .........:stream.stream.........
2b480 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 75 65 73 ..........:request-params.reques
2b4a0 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 63 75 72 6c t-params...................:curl
2b4c0 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 20 20 -args.curl-args.................
2b4e0 20 20 3a 75 72 6c 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 ..:url.(concat.protocol."://".ho
2b500 73 74 20 65 6e 64 70 6f 69 6e 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a st.endpoint)...................:
2b520 6d 61 63 68 69 6e 65 69 64 20 28 67 70 74 65 6c 2d 2d 67 68 2d 6d 61 63 68 69 6e 65 2d 69 64 29 machineid.(gptel--gh-machine-id)
2b540 29 29 29 0a 20 20 20 20 28 73 65 74 66 20 28 61 6c 69 73 74 2d 67 65 74 20 6e 61 6d 65 20 67 70 ))).....(setf.(alist-get.name.gp
2b560 74 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 tel--known-backends.nil.nil.#'eq
2b580 75 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 28 70 72 ual).backend).....backend))..(pr
2b5a0 6f 76 69 64 65 20 27 67 70 74 65 6c 2d 67 68 29 0a 3b 3b 3b 20 67 70 74 65 6c 2d 67 68 2e 65 6c ovide.'gptel-gh).;;;.gptel-gh.el
2b5c0 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 65 73 3a 0a .ends.here..;;.Local.Variables:.
2b5e0 3b 3b 20 62 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 ;;.byte-compile-warnings:.(not.d
2b600 6f 63 73 74 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 ocstrings).;;.End:..............
2b620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b6a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b6c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b6e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b7a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b7c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b7e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b800 67 70 74 65 6c 2d 30 2e 39 2e 38 2e 35 2f 67 70 74 65 6c 2d 69 6e 74 65 67 72 61 74 69 6f 6e 73 gptel-0.9.8.5/gptel-integrations
2b820 2e 65 6c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .el.............................
2b840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b860 00 00 00 00 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
2b880 30 30 33 31 31 30 34 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 35 36 30 35 00 20 30 00 00 00 0031104.00000000000.015605..0...
2b8a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b8c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b8e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b900 00 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...................
2b920 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...................
2b940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b9a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b9c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b9e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ba00 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
2ba20 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
2ba40 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)
2ba60 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
2ba80 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
2baa0 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
2bac0 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
2bae0 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
2bb00 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
2bb20 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/
2bb40 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.
2bb60 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
2bb80 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
2bba0 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
2bbc0 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
2bbe0 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...;
2bc00 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
2bc20 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
2bc40 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
2bc60 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
2bc80 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
2bca0 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
2bcc0 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
2bce0 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
2bd00 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.
2bd20 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
2bd40 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,.
2bd60 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
2bd80 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
2bda0 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
2bdc0 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.;;.;;
2bde0 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).;
2be00 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
2be20 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
2be40 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.;;
2be60 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.`
2be80 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
2bea0 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:.
2bec0 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
2bee0 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.'
2bf00 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
2bf20 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
2bf40 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
2bf60 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
2bf80 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").
2bfa0 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-
2bfc0 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
2bfe0 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").(
2c000 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
2c020 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
2c040 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
2c060 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
2c080 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
2c0a0 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
2c0c0 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)..(
2c0e0 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
2c100 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
2c120 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.
2c140 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
2c160 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
2c180 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
2c1a0 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
2c1c0 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.
2c1e0 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.
2c200 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
2c220 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
2c240 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
2c260 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
2c280 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.
2c2a0 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
2c2c0 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
2c2e0 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
2c300 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).........(
2c320 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-
2c340 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
2c360 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
2c380 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
2c3a0 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
2c3c0 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
2c3e0 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.
2c400 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
2c420 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'")....
2c440 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
2c460 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
2c480 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)
2c4a0 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
2c4c0 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
2c4e0 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
2c500 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
2c520 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.
2c540 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...............
2c560 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.=...
2c580 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.(
2c5a0 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
2c5c0 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.............................
2c5e0 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)
2c600 0a 20 20 20 20 20 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
2c620 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))........
2c640 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
2c660 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)......
2c680 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)))
2c6a0 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.
2c6c0 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.......
2c6e0 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.....
2c700 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..
2c720 20 20 20 20 20 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
2c740 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...........
2c760 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
2c780 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.\
2c7a0 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 ",\"):."........................
2c7c0 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
2c7e0 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)))............
2c800 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
2c820 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)...........................
2c840 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..........
2c860 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
2c880 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)).
2c8a0 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
2c8c0 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)).............
2c8e0 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...........
2c900 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 73 65 72 76 65 72 29 20 28 67 65 74 68 61 73 ........(lambda.(server).(gethas
2c920 68 20 28 63 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 h.(car.server).mcp-server-connec
2c940 74 69 6f 6e 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 61 63 74 tions)))..................(inact
2c960 69 76 65 2d 73 65 72 76 65 72 73 20 28 63 6c 2d 72 65 6d 6f 76 65 2d 69 66 20 73 65 72 76 65 72 ive-servers.(cl-remove-if.server
2c980 2d 61 63 74 69 76 65 2d 70 20 73 65 72 76 65 72 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 -active-p.servers)).............
2c9a0 20 20 20 20 20 28 61 64 64 2d 61 6c 6c 2d 74 6f 6f 6c 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 .....(add-all-tools.............
2c9c0 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 26 6f 70 74 69 6f 6e 61 6c 20 73 65 72 76 65 72 2d ......(lambda.(&optional.server-
2c9e0 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 22 52 65 67 69 names)....................."Regi
2ca00 73 74 65 72 20 61 6e 64 20 61 64 64 20 74 6f 6f 6c 73 20 66 72 6f 6d 20 73 65 72 76 65 72 73 2e ster.and.add.tools.from.servers.
2ca20 20 20 52 65 70 6f 72 74 20 66 61 69 6c 75 72 65 73 2e 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 ..Report.failures.".............
2ca40 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 74 6f 6f 6c 73 20 28 67 70 74 65 6c 2d 6d 63 70 2d ........(let.((tools.(gptel-mcp-
2ca60 2d 67 65 74 2d 74 6f 6f 6c 73 20 73 65 72 76 65 72 2d 6e 61 6d 65 73 29 29 0a 20 20 20 20 20 20 -get-tools.server-names)).......
2ca80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 6f 77 2d 61 63 74 69 76 65 20 ....................(now-active.
2caa0 28 63 6c 2d 72 65 6d 6f 76 65 2d 69 66 2d 6e 6f 74 20 73 65 72 76 65 72 2d 61 63 74 69 76 65 2d (cl-remove-if-not.server-active-
2cac0 70 20 6d 63 70 2d 68 75 62 2d 73 65 72 76 65 72 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 p.mcp-hub-servers)))............
2cae0 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 70 63 20 28 6c 61 6d 62 64 61 20 28 74 6f 6f 6c 29 20 ...........(mapc.(lambda.(tool).
2cb00 28 61 70 70 6c 79 20 23 27 67 70 74 65 6c 2d 6d 61 6b 65 2d 74 6f 6f 6c 20 74 6f 6f 6c 29 29 20 (apply.#'gptel-make-tool.tool)).
2cb20 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 67 70 tools).......................(gp
2cb40 74 65 6c 2d 6d 63 70 2d 2d 61 63 74 69 76 61 74 65 2d 74 6f 6f 6c 73 20 74 6f 6f 6c 73 29 0a 20 tel-mcp--activate-tools.tools)..
2cb60 20 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 2a 20 28 28 .....................(if-let*.((
2cb80 66 61 69 6c 65 64 20 28 63 6c 2d 73 65 74 2d 64 69 66 66 65 72 65 6e 63 65 20 69 6e 61 63 74 69 failed.(cl-set-difference.inacti
2cba0 76 65 2d 73 65 72 76 65 72 73 20 6e 6f 77 2d 61 63 74 69 76 65 0a 20 20 20 20 20 20 20 20 20 20 ve-servers.now-active...........
2cbc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
2cbe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 74 65 73 74 20 23 27 65 71 75 61 6c 29 29 .................:test.#'equal))
2cc00 29 0a 20 20 20 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 )...........................(pro
2cc20 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 20 20 20 20 20 20 28 gn.............................(
2cc40 6d 65 73 73 61 67 65 20 22 49 6e 61 63 74 69 76 65 2d 62 65 66 6f 72 65 3a 20 25 53 2c 20 4e 6f message."Inactive-before:.%S,.No
2cc60 77 2d 41 63 74 69 76 65 3a 20 25 53 22 20 69 6e 61 63 74 69 76 65 2d 73 65 72 76 65 72 73 20 6e w-Active:.%S".inactive-servers.n
2cc80 6f 77 2d 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 ow-active)......................
2cca0 20 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 28 73 75 62 73 74 69 74 75 74 65 2d 63 6f 6d 6d .......(message.(substitute-comm
2ccc0 61 6e 64 2d 6b 65 79 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 and-keys........................
2cce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 25 64 2f 25 64 20 73 65 72 76 65 72 25 73 20 66 ..............."%d/%d.server%s.f
2cd00 61 69 6c 65 64 20 74 6f 20 73 74 61 72 74 3a 20 25 73 2e 20 20 52 75 6e 20 5c 5c 5b 6d 63 70 2d ailed.to.start:.%s...Run.\\[mcp-
2cd20 68 75 62 5d 20 74 6f 20 69 6e 76 65 73 74 69 67 61 74 65 2e 22 29 0a 20 20 20 20 20 20 20 20 20 hub].to.investigate.")..........
2cd40 20 20 20 20 20 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 6e ............................(len
2cd60 67 74 68 20 66 61 69 6c 65 64 29 20 28 6c 65 6e 67 74 68 20 69 6e 61 63 74 69 76 65 2d 73 65 72 gth.failed).(length.inactive-ser
2cd80 76 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 20 20 vers)...........................
2cda0 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 3d 20 28 6c 65 6e 67 74 68 20 66 61 69 6c 65 64 ...........(if.(=.(length.failed
2cdc0 29 20 31 29 20 22 22 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 ).1).""."s")....................
2cde0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 70 63 6f 6e 63 61 74 20 23 27 63 ..................(mapconcat.#'c
2ce00 61 72 20 66 61 69 6c 65 64 20 22 2c 20 22 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ar.failed.",.")))...............
2ce20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 61 64 64 65 64 20 28 6f 72 20 73 65 72 76 65 ..........(let.((added.(or.serve
2ce40 72 2d 6e 61 6d 65 73 20 28 6d 61 70 63 61 72 20 23 27 63 61 72 20 6e 6f 77 2d 61 63 74 69 76 65 r-names.(mapcar.#'car.now-active
2ce60 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 28 ))))...........................(
2ce80 6d 65 73 73 61 67 65 20 22 41 64 64 65 64 20 25 64 20 74 6f 6f 6c 73 20 66 72 6f 6d 20 25 64 20 message."Added.%d.tools.from.%d.
2cea0 4d 43 50 20 73 65 72 76 65 72 25 73 3a 20 25 73 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 MCP.server%s:.%s"...............
2cec0 20 20 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 74 6f 6f .....................(length.too
2cee0 6c 73 29 20 28 6c 65 6e 67 74 68 20 61 64 64 65 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ls).(length.added)..............
2cf00 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 3d 20 28 6c 65 ......................(if.(=.(le
2cf20 6e 67 74 68 20 61 64 64 65 64 29 20 31 29 20 22 22 20 22 73 22 29 0a 20 20 20 20 20 20 20 20 20 ngth.added).1).""."s")..........
2cf40 20 20 20 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 6f ..........................(mapco
2cf60 6e 63 61 74 20 23 27 69 64 65 6e 74 69 74 79 20 61 64 64 65 64 20 22 2c 20 22 29 29 29 29 0a 20 ncat.#'identity.added.",."))))..
2cf80 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 66 75 6e 63 .....................(when.(func
2cfa0 74 69 6f 6e 70 20 73 65 72 76 65 72 2d 63 61 6c 6c 62 61 63 6b 29 20 28 66 75 6e 63 61 6c 6c 20 tionp.server-callback).(funcall.
2cfc0 73 65 72 76 65 72 2d 63 61 6c 6c 62 61 63 6b 29 29 29 29 29 29 0a 0a 20 20 20 20 20 20 20 20 20 server-callback))))))...........
2cfe0 20 20 20 28 69 66 20 69 6e 61 63 74 69 76 65 2d 73 65 72 76 65 72 73 20 20 20 20 20 20 20 20 3b ...(if.inactive-servers........;
2d000 73 74 61 72 74 20 73 65 72 76 65 72 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d start.servers.................(m
2d020 63 70 2d 68 75 62 2d 73 74 61 72 74 2d 61 6c 6c 2d 73 65 72 76 65 72 0a 20 20 20 20 20 20 20 20 cp-hub-start-all-server.........
2d040 20 20 20 20 20 20 20 20 20 61 64 64 2d 61 6c 6c 2d 74 6f 6f 6c 73 20 28 6d 61 70 63 61 72 20 23 .........add-all-tools.(mapcar.#
2d060 27 63 61 72 20 69 6e 61 63 74 69 76 65 2d 73 65 72 76 65 72 73 29 29 0a 20 20 20 20 20 20 20 20 'car.inactive-servers)).........
2d080 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 61 64 64 2d 61 6c 6c 2d 74 6f 6f 6c 73 20 28 6d 61 ......(funcall.add-all-tools.(ma
2d0a0 70 63 61 72 20 23 27 63 61 72 20 73 65 72 76 65 72 73 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 pcar.#'car.servers)))).........(
2d0c0 6d 65 73 73 61 67 65 20 22 41 6c 6c 20 4d 43 50 20 74 6f 6f 6c 73 20 61 72 65 20 61 6c 72 65 61 message."All.MCP.tools.are.alrea
2d0e0 64 79 20 61 76 61 69 6c 61 62 6c 65 20 74 6f 20 67 70 74 65 6c 21 22 29 0a 20 20 20 20 20 20 20 dy.available.to.gptel!")........
2d100 20 28 77 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 .(when.(functionp.server-callbac
2d120 6b 29 20 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 k).(funcall.server-callback)))))
2d140 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 6d 63 70 2d 64 69 73 63 6f 6e 6e 65 63 74 20 28 )..(defun.gptel-mcp-disconnect.(
2d160 26 6f 70 74 69 6f 6e 61 6c 20 73 65 72 76 65 72 73 20 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 &optional.servers.interactive)..
2d180 20 22 55 6e 72 65 67 69 73 74 65 72 20 67 70 74 65 6c 20 74 6f 6f 6c 73 20 70 72 6f 76 69 64 65 ."Unregister.gptel.tools.provide
2d1a0 64 20 62 79 20 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 d.by.MCP.servers.using.the.mcp.p
2d1c0 61 63 6b 61 67 65 2e 0a 0a 53 45 52 56 45 52 53 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 73 65 ackage...SERVERS.is.a.list.of.se
2d1e0 72 76 65 72 20 6e 61 6d 65 73 20 28 73 74 72 69 6e 67 73 29 20 74 6f 20 64 69 73 63 6f 6e 6e 65 rver.names.(strings).to.disconne
2d200 63 74 20 66 72 6f 6d 2e 0a 0a 49 66 20 49 4e 54 45 52 41 43 54 49 56 45 20 69 73 20 6e 6f 6e 2d ct.from...If.INTERACTIVE.is.non-
2d220 6e 69 6c 2c 20 71 75 65 72 79 20 74 68 65 20 75 73 65 72 20 61 62 6f 75 74 20 77 68 69 63 68 20 nil,.query.the.user.about.which.
2d240 74 6f 6f 6c 73 20 74 6f 20 72 65 6d 6f 76 65 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 tools.to.remove."...(interactive
2d260 20 28 6c 69 73 74 20 6e 69 6c 20 74 29 29 0a 20 20 28 69 66 2d 6c 65 74 2a 20 28 28 6e 61 6d 65 .(list.nil.t))...(if-let*.((name
2d280 73 2d 61 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 0a 20 20 s-alist..............(cl-loop...
2d2a0 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 63 61 74 65 67 6f 72 79 20 2e 20 5f 74 6f 6f ............for.(category..._too
2d2c0 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 20 20 ls).in.gptel--known-tools.......
2d2e0 20 20 20 20 20 20 20 20 69 66 20 28 61 6e 64 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 20 22 5e ........if.(and.(string-match."^
2d300 6d 63 70 2d 5c 5c 28 2e 2a 5c 5c 29 22 20 63 61 74 65 67 6f 72 79 29 0a 20 20 20 20 20 20 20 20 mcp-\\(.*\\)".category).........
2d320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 20 28 6e 75 6c 6c 20 73 65 72 76 65 72 73 29 ..............(or.(null.servers)
2d340 20 3b 43 6f 6e 73 69 64 65 72 20 61 6c 6c 20 69 66 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 20 .;Consider.all.if.nil...........
2d360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 65 6d 62 65 72 20 28 6d 61 74 63 68 2d 73 ................(member.(match-s
2d380 74 72 69 6e 67 20 31 20 63 61 74 65 67 6f 72 79 29 20 73 65 72 76 65 72 73 29 29 29 0a 20 20 20 tring.1.category).servers)))....
2d3a0 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 28 6d 61 74 63 68 2d ...........collect.(cons.(match-
2d3c0 73 74 72 69 6e 67 20 31 20 63 61 74 65 67 6f 72 79 29 20 63 61 74 65 67 6f 72 79 29 29 29 29 0a string.1.category).category)))).
2d3e0 20 20 20 20 20 20 28 6c 65 74 20 28 28 72 65 6d 6f 76 65 2d 66 6e 20 28 6c 61 6d 62 64 61 20 28 ......(let.((remove-fn.(lambda.(
2d400 63 61 74 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 cat-names)......................
2d420 20 20 20 20 28 73 65 74 71 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 20 3b 52 65 6d 6f 76 65 20 66 72 ....(setq.gptel-tools.;Remove.fr
2d440 6f 6d 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 om.gptel-tools..................
2d460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 64 65 6c 65 74 65 2d 69 66 20 28 6c 61 6d ..............(cl-delete-if.(lam
2d480 62 64 61 20 28 74 6f 6f 6c 29 20 28 6d 65 6d 62 65 72 20 28 67 70 74 65 6c 2d 74 6f 6f 6c 2d 63 bda.(tool).(member.(gptel-tool-c
2d4a0 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 20 20 20 20 20 20 ategory.tool)...................
2d4c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
2d4e0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 2d 6e 61 6d 65 73 29 29 0a 20 20 20 20 20 20 20 .............cat-names))........
2d500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
2d520 20 20 20 20 20 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 20 20 ......gptel-tools)).............
2d540 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 61 20 28 63 61 74 65 .............(mapc.(lambda.(cate
2d560 67 6f 72 79 29 20 3b 52 65 6d 6f 76 65 20 66 72 6f 6d 20 72 65 67 69 73 74 72 79 0a 20 20 20 20 gory).;Remove.from.registry.....
2d580 20 20 20 20 20 20 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
2d5a0 74 66 20 28 61 6c 69 73 74 2d 67 65 74 20 63 61 74 65 67 6f 72 79 20 67 70 74 65 6c 2d 2d 6b 6e tf.(alist-get.category.gptel--kn
2d5c0 6f 77 6e 2d 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 own-tools.......................
2d5e0 20 20 20 20 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 20 ............................nil.
2d600 74 20 23 27 65 71 75 61 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 t.#'equal)......................
2d620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 69 6c 29 29 0a 20 20 20 20 20 20 20 20 ..................nil)).........
2d640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 2d 6e 61 6d 65 73 .......................cat-names
2d660 29 29 29 29 0a 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 )))).........(if.interactive....
2d680 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 2d 6e 61 6d .........(when-let*.((server-nam
2d6a0 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 28 63 6f 6d es..........................(com
2d6c0 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...........
2d6e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 52 65 6d 6f 76 65 20 4d 43 50 20 73 65 72 76 ................"Remove.MCP.serv
2d700 65 72 20 74 6f 6f 6c 73 20 66 6f 72 20 28 73 65 70 61 72 61 74 65 20 77 69 74 68 20 5c 22 2c 5c er.tools.for.(separate.with.\",\
2d720 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 20 20 20 "):."...........................
2d740 28 63 6f 6e 73 20 27 28 22 41 4c 4c 22 20 2e 20 6e 69 6c 29 20 6e 61 6d 65 73 2d 61 6c 69 73 74 (cons.'("ALL"...nil).names-alist
2d760 29 0a 20 20 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 20 )...........................nil.
2d780 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 6d 65 6d 62 65 72 t)))...............(when.(member
2d7a0 20 22 41 4c 4c 22 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 ."ALL".server-names)............
2d7c0 20 20 20 20 20 28 73 65 74 71 20 73 65 72 76 65 72 2d 6e 61 6d 65 73 20 28 6d 61 70 63 61 72 20 .....(setq.server-names.(mapcar.
2d7e0 23 27 63 61 72 20 6e 61 6d 65 73 2d 61 6c 69 73 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 #'car.names-alist)))............
2d800 20 20 20 28 66 75 6e 63 61 6c 6c 20 72 65 6d 6f 76 65 2d 66 6e 20 20 20 20 20 20 20 20 3b 72 65 ...(funcall.remove-fn........;re
2d820 6d 6f 76 65 20 73 65 6c 65 63 74 65 64 20 74 6f 6f 6c 20 63 61 74 65 67 6f 72 69 65 73 0a 20 20 move.selected.tool.categories...
2d840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 70 63 61 72 20 28 6c 61 .....................(mapcar.(la
2d860 6d 62 64 61 20 28 73 29 20 28 63 64 72 20 28 61 73 73 6f 63 20 73 20 6e 61 6d 65 73 2d 61 6c 69 mbda.(s).(cdr.(assoc.s.names-ali
2d880 73 74 29 29 29 20 73 65 72 76 65 72 2d 6e 61 6d 65 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 st))).server-names))............
2d8a0 20 20 20 28 69 66 20 28 79 2d 6f 72 2d 6e 2d 70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ...(if.(y-or-n-p................
2d8c0 20 20 20 20 28 66 6f 72 6d 61 74 20 22 52 65 6d 6f 76 65 64 20 4d 43 50 20 74 6f 6f 6c 73 20 66 ....(format."Removed.MCP.tools.f
2d8e0 72 6f 6d 20 25 64 20 73 65 72 76 65 72 25 73 2e 20 20 41 6c 73 6f 20 73 68 75 74 20 64 6f 77 6e rom.%d.server%s...Also.shut.down
2d900 20 4d 43 50 20 73 65 72 76 65 72 73 3f 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .MCP.servers?"..................
2d920 20 20 20 20 20 20 20 20 20 20 28 6c 65 6e 67 74 68 20 73 65 72 76 65 72 2d 6e 61 6d 65 73 29 0a ..........(length.server-names).
2d940 20 20 20 20 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 ...........................(if.(
2d960 3d 20 28 6c 65 6e 67 74 68 20 73 65 72 76 65 72 2d 6e 61 6d 65 73 29 20 31 29 20 22 22 20 22 73 =.(length.server-names).1).""."s
2d980 22 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 67 6e 20 28 6d ")))...................(progn.(m
2d9a0 61 70 63 20 23 27 6d 63 70 2d 73 74 6f 70 2d 73 65 72 76 65 72 20 73 65 72 76 65 72 2d 6e 61 6d apc.#'mcp-stop-server.server-nam
2d9c0 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 28 6d 65 es)..........................(me
2d9e0 73 73 61 67 65 20 22 53 68 75 74 20 64 6f 77 6e 20 4d 43 50 20 73 65 72 76 65 72 73 3a 20 25 53 ssage."Shut.down.MCP.servers:.%S
2da00 22 20 73 65 72 76 65 72 2d 6e 61 6d 65 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ".server-names))................
2da20 20 28 6d 65 73 73 61 67 65 20 22 52 65 6d 6f 76 65 64 20 4d 43 50 20 74 6f 6f 6c 73 20 66 6f 72 .(message."Removed.MCP.tools.for
2da40 3a 20 25 53 22 20 73 65 72 76 65 72 2d 6e 61 6d 65 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 :.%S".server-names)))...........
2da60 28 66 75 6e 63 61 6c 6c 20 72 65 6d 6f 76 65 2d 66 6e 20 28 6d 61 70 63 61 72 20 23 27 63 64 72 (funcall.remove-fn.(mapcar.#'cdr
2da80 20 6e 61 6d 65 73 2d 61 6c 69 73 74 29 29 29 29 0a 20 20 20 20 3b 3b 20 4e 6f 20 4d 43 50 20 74 .names-alist)))).....;;.No.MCP.t
2daa0 6f 6f 6c 73 2c 20 61 73 6b 20 74 6f 20 73 68 75 74 20 64 6f 77 6e 20 73 65 72 76 65 72 73 0a 20 ools,.ask.to.shut.down.servers..
2dac0 20 20 20 28 69 66 20 28 63 6c 2d 6c 6f 6f 70 0a 20 20 20 20 20 20 20 20 20 66 6f 72 20 76 20 62 ...(if.(cl-loop..........for.v.b
2dae0 65 69 6e 67 20 74 68 65 20 68 61 73 68 2d 76 61 6c 75 65 73 20 6f 66 20 6d 63 70 2d 73 65 72 76 eing.the.hash-values.of.mcp-serv
2db00 65 72 2d 63 6f 6e 6e 65 63 74 69 6f 6e 73 0a 20 20 20 20 20 20 20 20 20 6e 65 76 65 72 20 76 29 er-connections..........never.v)
2db20 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 69 6e 74 65 72 61 63 74 69 76 65 20 28 6d 65 73 73 .........(when.interactive.(mess
2db40 61 67 65 20 22 4e 6f 20 4d 43 50 20 73 65 72 76 65 72 73 20 61 63 74 69 76 65 21 22 29 29 0a 20 age."No.MCP.servers.active!"))..
2db60 20 20 20 20 20 28 77 68 65 6e 20 28 6f 72 20 28 6e 6f 74 20 69 6e 74 65 72 61 63 74 69 76 65 29 .....(when.(or.(not.interactive)
2db80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 79 2d 6f 72 2d 6e 2d 70 20 22 4e 6f 20 4d .................(y-or-n-p."No.M
2dba0 43 50 20 74 6f 6f 6c 73 20 69 6e 20 67 70 74 65 6c 21 20 20 53 68 75 74 20 64 6f 77 6e 20 61 6c CP.tools.in.gptel!..Shut.down.al
2dbc0 6c 20 4d 43 50 20 73 65 72 76 65 72 73 3f 20 22 29 29 0a 20 20 20 20 20 20 20 20 28 64 6f 6c 69 l.MCP.servers?.")).........(doli
2dbe0 73 74 20 28 73 65 72 76 65 72 20 6d 63 70 2d 68 75 62 2d 73 65 72 76 65 72 73 29 0a 20 20 20 20 st.(server.mcp-hub-servers).....
2dc00 20 20 20 20 20 20 28 77 68 65 6e 20 28 67 65 74 68 61 73 68 20 28 63 61 72 20 73 65 72 76 65 72 ......(when.(gethash.(car.server
2dc20 29 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 20 20 20 20 20 20 ).mcp-server-connections).......
2dc40 20 20 20 20 20 20 28 6d 63 70 2d 73 74 6f 70 2d 73 65 72 76 65 72 20 28 63 61 72 20 73 65 72 76 ......(mcp-stop-server.(car.serv
2dc60 65 72 29 29 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 2d 67 65 er))))))))..(defun.gptel-mcp--ge
2dc80 74 2d 74 6f 6f 6c 73 20 28 26 6f 70 74 69 6f 6e 61 6c 20 73 65 72 76 65 72 2d 6e 61 6d 65 73 29 t-tools.(&optional.server-names)
2dca0 0a 20 20 22 52 65 74 75 72 6e 20 74 6f 6f 6c 73 20 66 72 6f 6d 20 72 75 6e 6e 69 6e 67 20 4d 43 ..."Return.tools.from.running.MC
2dcc0 50 20 73 65 72 76 65 72 73 2e 0a 0a 53 45 52 56 45 52 2d 4e 41 4d 45 53 20 69 73 20 61 20 6c 69 P.servers...SERVER-NAMES.is.a.li
2dce0 73 74 20 6f 66 20 73 65 72 76 65 72 20 6e 61 6d 65 73 20 74 6f 20 61 64 64 20 74 6f 6f 6c 73 20 st.of.server.names.to.add.tools.
2dd00 66 72 6f 6d 2e 20 20 41 64 64 20 74 6f 6f 6c 73 0a 66 72 6f 6d 20 61 6c 6c 20 63 6f 6e 6e 65 63 from...Add.tools.from.all.connec
2dd20 74 65 64 20 73 65 72 76 65 72 73 20 69 66 20 69 74 20 69 73 20 6e 69 6c 2e 22 0a 20 20 28 75 6e ted.servers.if.it.is.nil."...(un
2dd40 6c 65 73 73 20 73 65 72 76 65 72 2d 6e 61 6d 65 73 0a 20 20 20 20 28 73 65 74 71 20 73 65 72 76 less.server-names.....(setq.serv
2dd60 65 72 2d 6e 61 6d 65 73 20 28 68 61 73 68 2d 74 61 62 6c 65 2d 6b 65 79 73 20 6d 63 70 2d 73 65 er-names.(hash-table-keys.mcp-se
2dd80 72 76 65 72 2d 63 6f 6e 6e 65 63 74 69 6f 6e 73 29 29 29 0a 20 20 28 6c 65 74 20 28 28 73 65 72 rver-connections)))...(let.((ser
2dda0 76 65 72 73 20 28 6d 61 70 63 61 72 20 28 6c 61 6d 62 64 61 20 28 6e 29 20 28 67 65 74 68 61 73 vers.(mapcar.(lambda.(n).(gethas
2ddc0 68 20 6e 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 0a 20 20 20 h.n.mcp-server-connections))....
2dde0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 72 76 65 72 2d 6e 61 6d ......................server-nam
2de00 65 73 29 29 29 0a 20 20 20 20 28 63 6c 2d 6d 61 70 63 61 6e 0a 20 20 20 20 20 28 6c 61 6d 62 64 es))).....(cl-mapcan......(lambd
2de20 61 20 28 6e 61 6d 65 20 73 65 72 76 65 72 29 0a 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 61 6e a.(name.server)........(when.(an
2de40 64 20 73 65 72 76 65 72 20 28 65 71 75 61 6c 20 28 6d 63 70 2d 2d 73 74 61 74 75 73 20 73 65 72 d.server.(equal.(mcp--status.ser
2de60 76 65 72 29 20 27 63 6f 6e 6e 65 63 74 65 64 29 29 0a 20 20 20 20 20 20 20 20 20 28 77 68 65 6e ver).'connected))..........(when
2de80 2d 6c 65 74 2a 20 28 28 74 6f 6f 6c 73 20 28 6d 63 70 2d 2d 74 6f 6f 6c 73 20 73 65 72 76 65 72 -let*.((tools.(mcp--tools.server
2dea0 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 74 6f 6f 6c 2d 6e 61 ))......................(tool-na
2dec0 6d 65 73 20 28 6d 61 70 63 61 72 20 23 27 28 6c 61 6d 62 64 61 20 28 74 6f 6f 6c 29 20 28 70 6c mes.(mapcar.#'(lambda.(tool).(pl
2dee0 69 73 74 2d 67 65 74 20 74 6f 6f 6c 20 3a 6e 61 6d 65 29 29 20 74 6f 6f 6c 73 29 29 29 0a 20 20 ist-get.tool.:name)).tools)))...
2df00 20 20 20 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 6e .........(mapcar.(lambda.(tool-n
2df20 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 28 70 6c 69 73 74 ame)......................(plist
2df40 2d 70 75 74 20 28 6d 63 70 2d 6d 61 6b 65 2d 74 65 78 74 2d 74 6f 6f 6c 20 6e 61 6d 65 20 74 6f -put.(mcp-make-text-tool.name.to
2df60 6f 6c 2d 6e 61 6d 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 20 ol-name.t)......................
2df80 20 20 20 20 20 20 20 20 20 20 20 3a 63 61 74 65 67 6f 72 79 20 28 66 6f 72 6d 61 74 20 22 6d 63 ...........:category.(format."mc
2dfa0 70 2d 25 73 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 p-%s".name)))...................
2dfc0 20 74 6f 6f 6c 2d 6e 61 6d 65 73 29 29 29 29 0a 20 20 20 20 20 73 65 72 76 65 72 2d 6e 61 6d 65 .tool-names))))......server-name
2dfe0 73 20 73 65 72 76 65 72 73 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 6d 63 70 2d 2d s.servers)))..(defun.gptel-mcp--
2e000 61 63 74 69 76 61 74 65 2d 74 6f 6f 6c 73 20 28 26 6f 70 74 69 6f 6e 61 6c 20 74 6f 6f 6c 73 29 activate-tools.(&optional.tools)
2e020 0a 20 20 22 41 63 74 69 76 61 74 65 20 54 4f 4f 4c 53 20 6f 72 20 61 6c 6c 20 4d 43 50 20 74 6f ..."Activate.TOOLS.or.all.MCP.to
2e040 6f 6c 73 20 69 6e 20 63 75 72 72 65 6e 74 20 67 70 74 65 6c 20 73 65 73 73 69 6f 6e 2e 22 0a 20 ols.in.current.gptel.session."..
2e060 20 28 75 6e 6c 65 73 73 20 74 6f 6f 6c 73 20 28 73 65 74 71 20 74 6f 6f 6c 73 20 28 67 70 74 65 .(unless.tools.(setq.tools.(gpte
2e080 6c 2d 6d 63 70 2d 2d 67 65 74 2d 74 6f 6f 6c 73 29 29 29 0a 20 20 28 64 6f 6c 69 73 74 20 28 74 l-mcp--get-tools)))...(dolist.(t
2e0a0 6f 6f 6c 20 74 6f 6f 6c 73 29 0a 20 20 20 20 28 63 6c 2d 70 75 73 68 6e 65 77 20 28 67 70 74 65 ool.tools).....(cl-pushnew.(gpte
2e0c0 6c 2d 67 65 74 2d 74 6f 6f 6c 20 28 6c 69 73 74 20 28 70 6c 69 73 74 2d 67 65 74 20 74 6f 6f 6c l-get-tool.(list.(plist-get.tool
2e0e0 20 3a 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 20 .:category).....................
2e100 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 74 6f 6f ..................(plist-get.too
2e120 6c 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 67 70 74 65 6c l.:name))).................gptel
2e140 2d 74 6f 6f 6c 73 29 29 29 0a 0a 28 77 69 74 68 2d 65 76 61 6c 2d 61 66 74 65 72 2d 6c 6f 61 64 -tools)))..(with-eval-after-load
2e160 20 27 67 70 74 65 6c 2d 74 72 61 6e 73 69 65 6e 74 0a 20 20 28 74 72 61 6e 73 69 65 6e 74 2d 64 .'gptel-transient...(transient-d
2e180 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 6d 63 70 2d 63 efine-suffix.gptel--suffix-mcp-c
2e1a0 6f 6e 6e 65 63 74 20 28 29 0a 20 20 20 20 22 52 65 67 69 73 74 65 72 20 74 6f 6f 6c 73 20 70 72 onnect.()....."Register.tools.pr
2e1c0 6f 76 69 64 65 64 20 62 79 20 4d 43 50 20 73 65 72 76 65 72 73 2e 22 0a 20 20 20 20 3a 6b 65 79 ovided.by.MCP.servers.".....:key
2e1e0 20 22 4d 2b 22 0a 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 41 64 64 20 4d 43 50 20 ."M+".....:description."Add.MCP.
2e200 73 65 72 76 65 72 20 74 6f 6f 6c 73 22 0a 20 20 20 20 3a 74 72 61 6e 73 69 65 6e 74 20 74 0a 20 server.tools".....:transient.t..
2e220 20 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 20 20 3b 3b 20 67 70 74 65 6c 2d 74 6f ...(interactive).....;;.gptel-to
2e240 6f 6c 73 20 73 74 6f 72 65 73 20 69 74 73 20 73 74 61 74 65 20 69 6e 20 69 74 73 20 73 63 6f 70 ols.stores.its.state.in.its.scop
2e260 65 20 73 6c 6f 74 2e 20 20 52 65 74 61 69 6e 20 74 68 65 20 73 63 6f 70 65 20 62 75 74 0a 20 20 e.slot...Retain.the.scope.but...
2e280 20 20 3b 3b 20 75 70 64 61 74 65 20 69 74 20 77 69 74 68 20 74 68 65 20 6e 65 77 6c 79 20 73 65 ..;;.update.it.with.the.newly.se
2e2a0 6c 65 63 74 65 64 20 74 6f 6f 6c 73 2e 20 20 54 68 65 6e 20 73 65 74 20 75 70 20 67 70 74 65 6c lected.tools...Then.set.up.gptel
2e2c0 2d 74 6f 6f 6c 73 2e 0a 20 20 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20 65 72 72 0a -tools......(condition-case.err.
2e2e0 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 6d 63 70 2d 63 6f 6e 6e 65 63 74 0a 20 20 20 20 20 ........(gptel-mcp-connect......
2e300 20 20 20 20 6e 69 6c 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 ....nil.(lambda.().(when-let*.((
2e320 74 72 61 6e 73 69 65 6e 74 2d 2d 70 72 65 66 69 78 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 transient--prefix)..............
2e340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 65 71 20 28 6f 72 65 66 20 74 72 61 ..................((eq.(oref.tra
2e360 6e 73 69 65 6e 74 2d 2d 70 72 65 66 69 78 20 63 6f 6d 6d 61 6e 64 29 0a 20 20 20 20 20 20 20 20 nsient--prefix.command).........
2e380 20 20 20 20 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 ............................'gpt
2e3a0 65 6c 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 el-tools))).....................
2e3c0 20 28 6c 65 74 20 28 28 73 74 61 74 65 20 28 74 72 61 6e 73 69 65 6e 74 2d 73 63 6f 70 65 20 27 .(let.((state.(transient-scope.'
2e3e0 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 20 20 20 20 20 20 gptel-tools)))..................
2e400 20 20 20 20 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 ......(plist-put.state.:tools...
2e420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
2e440 28 64 65 6c 65 74 65 2d 64 75 70 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (delete-dups....................
2e460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 63 6f 6e 63 20 28 6d 61 70 63 61 72 20 28 ................(nconc.(mapcar.(
2e480 6c 61 6d 62 64 61 20 28 74 6f 6f 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 lambda.(tool)...................
2e4a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
2e4c0 20 20 28 6c 69 73 74 20 28 67 70 74 65 6c 2d 74 6f 6f 6c 2d 63 61 74 65 67 6f 72 79 20 74 6f 6f ..(list.(gptel-tool-category.too
2e4e0 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)..............................
2e500 20 20 20 20 20 20 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
2e520 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 20 20 20 20 20 20 tel-tool-name.tool)))...........
2e540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
2e560 20 20 20 20 20 20 20 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 ........gptel-tools)............
2e580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 ...............................(
2e5a0 70 6c 69 73 74 2d 67 65 74 20 73 74 61 74 65 20 3a 74 6f 6f 6c 73 29 29 29 29 0a 20 20 20 20 20 plist-get.state.:tools))))......
2e5c0 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 73 65 74 ..................(transient-set
2e5e0 75 70 20 27 67 70 74 65 6c 2d 74 6f 6f 6c 73 20 6e 69 6c 20 6e 69 6c 20 3a 73 63 6f 70 65 20 73 up.'gptel-tools.nil.nil.:scope.s
2e600 74 61 74 65 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 74 29 0a 20 20 20 20 20 20 28 75 73 65 72 tate))))..........t).......(user
2e620 2d 65 72 72 6f 72 20 28 6d 65 73 73 61 67 65 20 22 25 73 22 20 28 63 61 64 72 20 65 72 72 29 29 -error.(message."%s".(cadr.err))
2e640 29 29 29 0a 0a 20 20 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 )))....(transient-define-suffix.
2e660 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 20 28 29 0a gptel--suffix-mcp-disconnect.().
2e680 20 20 20 20 22 52 65 6d 6f 76 65 20 74 6f 6f 6c 73 20 70 72 6f 76 69 64 65 64 20 62 79 20 4d 43 ...."Remove.tools.provided.by.MC
2e6a0 50 20 73 65 72 76 65 72 73 20 66 72 6f 6d 20 67 70 74 65 6c 2e 22 0a 20 20 20 20 3a 6b 65 79 20 P.servers.from.gptel.".....:key.
2e6c0 22 4d 2d 22 0a 20 20 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 "M-".....:description.(lambda.()
2e6e0 20 28 69 66 20 28 63 6c 2d 73 6f 6d 65 20 28 6c 61 6d 62 64 61 20 28 63 61 74 29 20 28 73 74 72 .(if.(cl-some.(lambda.(cat).(str
2e700 69 6e 67 2d 6d 61 74 63 68 2d 70 20 22 5e 6d 63 70 2d 22 20 63 61 74 29 29 0a 20 20 20 20 20 20 ing-match-p."^mcp-".cat)).......
2e720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d ..............................(m
2e740 61 70 2d 6b 65 79 73 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 74 6f 6f 6c 73 29 29 0a 20 20 20 ap-keys.gptel--known-tools))....
2e760 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 20 ........................"Remove.
2e780 4d 43 50 20 73 65 72 76 65 72 20 74 6f 6f 6c 73 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 MCP.server.tools"...............
2e7a0 20 20 20 20 20 20 20 20 20 20 20 22 53 68 75 74 20 64 6f 77 6e 20 4d 43 50 20 73 65 72 76 65 72 ..........."Shut.down.MCP.server
2e7c0 73 22 29 29 0a 20 20 20 20 3a 74 72 61 6e 73 69 65 6e 74 20 74 0a 20 20 20 20 3a 69 6e 61 70 74 s")).....:transient.t.....:inapt
2e7e0 2d 69 66 0a 20 20 20 20 28 6c 61 6d 62 64 61 20 28 29 20 28 6f 72 20 28 6e 6f 74 20 28 62 6f 75 -if.....(lambda.().(or.(not.(bou
2e800 6e 64 70 20 27 6d 63 70 2d 68 75 62 2d 73 65 72 76 65 72 73 29 29 0a 20 20 20 20 20 20 20 20 20 ndp.'mcp-hub-servers))..........
2e820 20 20 20 20 20 28 6e 75 6c 6c 20 6d 63 70 2d 68 75 62 2d 73 65 72 76 65 72 73 29 0a 20 20 20 20 .....(null.mcp-hub-servers).....
2e840 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..............
2e860 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
2e880 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.........
2e8a0 20 20 20 20 20 20 20 6e 65 76 65 72 20 76 29 29 29 0a 20 20 20 20 28 69 6e 74 65 72 61 63 74 69 .......never.v))).....(interacti
2e8c0 76 65 29 0a 20 20 20 20 28 63 61 6c 6c 2d 69 6e 74 65 72 61 63 74 69 76 65 6c 79 20 23 27 67 70 ve).....(call-interactively.#'gp
2e8e0 74 65 6c 2d 6d 63 70 2d 64 69 73 63 6f 6e 6e 65 63 74 29 0a 20 20 20 20 3b 3b 20 67 70 74 65 6c tel-mcp-disconnect).....;;.gptel
2e900 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 20 69 74 73 20 73 -tools.stores.its.state.in.its.s
2e920 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 70 65 20 62 75 74 cope.slot...Retain.the.scope.but
2e940 0a 20 20 20 20 3b 3b 20 72 65 6d 6f 76 65 20 74 6f 6f 6c 73 20 66 72 6f 6d 20 69 74 20 74 68 61 .....;;.remove.tools.from.it.tha
2e960 74 20 6e 6f 20 6c 6f 6e 67 65 72 20 65 78 69 73 74 2c 20 74 68 65 6e 20 73 65 74 20 75 70 20 67 t.no.longer.exist,.then.set.up.g
2e980 70 74 65 6c 2d 74 6f 6f 6c 73 0a 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 20 77 69 74 68 20 73 74 61 ptel-tools.....(cl-loop.with.sta
2e9a0 74 65 20 3d 20 28 74 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 te.=.(transient-scope.'gptel-too
2e9c0 6c 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 77 69 74 68 20 74 6f 6f 6c 73 20 3d 20 28 70 ls)..............with.tools.=.(p
2e9e0 6c 69 73 74 2d 67 65 74 20 73 74 61 74 65 20 3a 74 6f 6f 6c 73 29 0a 20 20 20 20 20 20 20 20 20 list-get.state.:tools)..........
2ea00 20 20 20 20 66 6f 72 20 74 6f 6f 6c 2d 73 70 65 63 20 69 6e 20 74 6f 6f 6c 73 0a 20 20 20 20 20 ....for.tool-spec.in.tools......
2ea20 20 20 20 20 20 20 20 20 69 66 20 28 6d 61 70 2d 6e 65 73 74 65 64 2d 65 6c 74 20 67 70 74 65 6c ........if.(map-nested-elt.gptel
2ea40 2d 2d 6b 6e 6f 77 6e 2d 74 6f 6f 6c 73 20 74 6f 6f 6c 2d 73 70 65 63 29 0a 20 20 20 20 20 20 20 --known-tools.tool-spec)........
2ea60 20 20 20 20 20 20 63 6f 6c 6c 65 63 74 20 74 6f 6f 6c 2d 73 70 65 63 20 69 6e 74 6f 20 76 61 6c ......collect.tool-spec.into.val
2ea80 69 64 2d 74 6f 6f 6c 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 20 64 6f id-tools..............finally.do
2eaa0 20 28 70 6c 69 73 74 2d 70 75 74 20 73 74 61 74 65 20 3a 74 6f 6f 6c 73 20 76 61 6c 69 64 2d 74 .(plist-put.state.:tools.valid-t
2eac0 6f 6f 6c 73 29 0a 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 ools)..............(transient-se
2eae0 74 75 70 20 27 67 70 74 65 6c 2d 74 6f 6f 6c 73 20 6e 69 6c 20 6e 69 6c 20 3a 73 63 6f 70 65 20 tup.'gptel-tools.nil.nil.:scope.
2eb00 73 74 61 74 65 29 29 29 0a 0a 20 20 28 74 72 61 6e 73 69 65 6e 74 2d 72 65 6d 6f 76 65 2d 73 75 state)))....(transient-remove-su
2eb20 66 66 69 78 20 27 67 70 74 65 6c 2d 74 6f 6f 6c 73 20 27 28 30 20 32 29 29 0a 20 20 28 74 72 61 ffix.'gptel-tools.'(0.2))...(tra
2eb40 6e 73 69 65 6e 74 2d 61 70 70 65 6e 64 2d 73 75 66 66 69 78 20 27 67 70 74 65 6c 2d 74 6f 6f 6c nsient-append-suffix.'gptel-tool
2eb60 73 20 27 28 30 20 2d 31 29 0a 20 20 20 20 5b 22 22 0a 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 73 s.'(0.-1).....[""......(gptel--s
2eb80 75 66 66 69 78 2d 6d 63 70 2d 63 6f 6e 6e 65 63 74 29 0a 20 20 20 20 20 28 67 70 74 65 6c 2d 2d uffix-mcp-connect)......(gptel--
2eba0 73 75 66 66 69 78 2d 6d 63 70 2d 64 69 73 63 6f 6e 6e 65 63 74 29 5d 29 29 0a 0a 28 70 72 6f 76 suffix-mcp-disconnect)]))..(prov
2ebc0 69 64 65 20 27 67 70 74 65 6c 2d 69 6e 74 65 67 72 61 74 69 6f 6e 73 29 0a 3b 3b 3b 20 67 70 74 ide.'gptel-integrations).;;;.gpt
2ebe0 65 6c 2d 69 6e 74 65 67 72 61 74 69 6f 6e 73 2e 65 6c 20 65 6e 64 73 20 68 65 72 65 0a 0a 3b 3b el-integrations.el.ends.here..;;
2ec00 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 70 69 6c .Local.Variables:.;;.byte-compil
2ec20 65 2d 77 61 72 6e 69 6e 67 73 3a 20 28 6e 6f 74 20 6e 6f 72 75 6e 74 69 6d 65 29 0a 3b 3b 20 45 e-warnings:.(not.noruntime).;;.E
2ec40 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 00 00 00 00 nd:.............................
2ec60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ec80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2eca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ecc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ece0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ed00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ed20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ed40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ed60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ed80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2eda0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2edc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ede0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ee00 67 70 74 65 6c 2d 30 2e 39 2e 38 2e 35 2f 67 70 74 65 6c 2e 65 6c 00 00 00 00 00 00 00 00 00 00 gptel-0.9.8.5/gptel.el..........
2ee20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ee40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ee60 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
2ee80 30 35 30 30 37 33 31 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 33 31 31 30 00 20 30 00 00 00 0500731.00000000000.013110..0...
2eea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2eec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2eee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ef00 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...................
2ef20 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...................
2ef40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ef60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ef80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2efa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2efc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2efe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f000 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
2f020 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
2f040 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
2f060 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
2f080 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
2f0a0 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
2f0c0 2e 63 6f 6d 3e 0a 3b 3b 20 56 65 72 73 69 6f 6e 3a 20 30 2e 39 2e 38 2e 35 0a 3b 3b 20 50 61 63 .com>.;;.Version:.0.9.8.5.;;.Pac
2f0e0 6b 61 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 kage-Requires:.((emacs."27.1").(
2f100 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 32 39 2e 31 transient."0.7.4").(compat."29.1
2f120 2e 34 2e 31 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 .4.1")).;;.Keywords:.convenience
2f140 2c 20 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 ,.tools.;;.URL:.https://github.c
2f160 6f 6d 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 om/karthink/gptel..;;.SPDX-Licen
2f180 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 0a se-Identifier:.GPL-3.0-or-later.
2f1a0 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
2f1c0 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
2f1e0 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
2f200 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
2f220 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
2f240 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
2f260 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
2f280 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...;;
2f2a0 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.
2f2c0 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,
2f2e0 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
2f300 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.
2f320 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
2f340 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.
2f360 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
2f380 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
2f3a0 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
2f3c0 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
2f3e0 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
2f400 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
2f420 2f 3e 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 />...;;.This.file.is.NOT.part.of
2f440 20 47 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 .GNU.Emacs...;;;.Commentary:..;;
2f460 20 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 67 .gptel.is.a.simple.Large.Languag
2f480 65 20 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 e.Model.chat.client,.with.suppor
2f4a0 74 20 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 t.for.multiple.;;.models.and.bac
2f4c0 6b 65 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 kends..;;.;;.It.works.in.the.spi
2f4e0 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 79 20 74 rit.of.Emacs,.available.at.any.t
2f500 69 6d 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 ime.and.in.any.buffer..;;.;;.gpt
2f520 65 6c 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 el.supports:.;;.;;.-.The.service
2f540 73 20 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 s.ChatGPT,.Azure,.Gemini,.Anthro
2f560 70 69 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 pic.AI,.Together.ai,.Perplexity,
2f580 0a 3b 3b 20 20 20 41 6e 79 73 63 61 6c 65 2c 20 4f 70 65 6e 52 6f 75 74 65 72 2c 20 47 72 6f 71 .;;...Anyscale,.OpenRouter,.Groq
2f5a0 2c 20 50 72 69 76 61 74 65 47 50 54 2c 20 44 65 65 70 53 65 65 6b 2c 20 43 65 72 65 62 72 61 73 ,.PrivateGPT,.DeepSeek,.Cerebras
2f5c0 2c 20 47 69 74 68 75 62 20 4d 6f 64 65 6c 73 2c 0a 3b 3b 20 20 20 47 69 74 48 75 62 20 43 6f 70 ,.Github.Models,.;;...GitHub.Cop
2f5e0 69 6c 6f 74 20 63 68 61 74 2c 20 41 57 53 20 42 65 64 72 6f 63 6b 2c 20 4e 6f 76 69 74 61 20 41 ilot.chat,.AWS.Bedrock,.Novita.A
2f600 49 2c 20 78 41 49 2c 20 53 61 6d 62 61 6e 6f 76 61 2c 20 4d 69 73 74 72 61 6c 20 4c 65 0a 3b 3b I,.xAI,.Sambanova,.Mistral.Le.;;
2f620 20 20 20 43 68 61 74 20 61 6e 64 20 4b 61 67 69 20 28 46 61 73 74 47 50 54 20 26 20 53 75 6d 6d ...Chat.and.Kagi.(FastGPT.&.Summ
2f640 61 72 69 7a 65 72 29 2e 0a 3b 3b 20 2d 20 4c 6f 63 61 6c 20 6d 6f 64 65 6c 73 20 76 69 61 20 4f arizer)..;;.-.Local.models.via.O
2f660 6c 6c 61 6d 61 2c 20 4c 6c 61 6d 61 2e 63 70 70 2c 20 4c 6c 61 6d 61 66 69 6c 65 73 20 6f 72 20 llama,.Llama.cpp,.Llamafiles.or.
2f680 47 50 54 34 41 6c 6c 0a 3b 3b 0a 3b 3b 20 41 64 64 69 74 69 6f 6e 61 6c 6c 79 2c 20 61 6e 79 20 GPT4All.;;.;;.Additionally,.any.
2f6a0 4c 4c 4d 20 73 65 72 76 69 63 65 20 28 6c 6f 63 61 6c 20 6f 72 20 72 65 6d 6f 74 65 29 20 74 68 LLM.service.(local.or.remote).th
2f6c0 61 74 20 70 72 6f 76 69 64 65 73 20 61 6e 0a 3b 3b 20 4f 70 65 6e 41 49 2d 63 6f 6d 70 61 74 69 at.provides.an.;;.OpenAI-compati
2f6e0 62 6c 65 20 41 50 49 20 69 73 20 73 75 70 70 6f 72 74 65 64 2e 0a 3b 3b 0a 3b 3b 20 46 65 61 74 ble.API.is.supported..;;.;;.Feat
2f700 75 72 65 73 3a 0a 3b 3b 0a 3b 3b 20 2d 20 49 74 e2 80 99 73 20 61 73 79 6e 63 20 61 6e 64 20 66 ures:.;;.;;.-.It...s.async.and.f
2f720 61 73 74 2c 20 73 74 72 65 61 6d 73 20 72 65 73 70 6f 6e 73 65 73 2e 0a 3b 3b 20 2d 20 49 6e 74 ast,.streams.responses..;;.-.Int
2f740 65 72 61 63 74 20 77 69 74 68 20 4c 4c 4d 73 20 66 72 6f 6d 20 61 6e 79 77 68 65 72 65 20 69 6e eract.with.LLMs.from.anywhere.in
2f760 20 45 6d 61 63 73 20 28 61 6e 79 20 62 75 66 66 65 72 2c 20 73 68 65 6c 6c 2c 20 6d 69 6e 69 62 .Emacs.(any.buffer,.shell,.minib
2f780 75 66 66 65 72 2c 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 uffer,.;;...wherever)..;;.-.LLM.
2f7a0 72 65 73 70 6f 6e 73 65 73 20 61 72 65 20 69 6e 20 4d 61 72 6b 64 6f 77 6e 20 6f 72 20 4f 72 67 responses.are.in.Markdown.or.Org
2f7c0 20 6d 61 72 6b 75 70 2e 0a 3b 3b 20 2d 20 53 75 70 70 6f 72 74 73 20 63 6f 6e 76 65 72 73 61 74 .markup..;;.-.Supports.conversat
2f7e0 69 6f 6e 73 20 61 6e 64 20 6d 75 6c 74 69 70 6c 65 20 69 6e 64 65 70 65 6e 64 65 6e 74 20 73 65 ions.and.multiple.independent.se
2f800 73 73 69 6f 6e 73 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 ssions..;;.-.Supports.tool-use.t
2f820 6f 20 65 71 75 69 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 o.equip.LLMs.with.agentic.capabi
2f840 6c 69 74 69 65 73 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 lities..;;.-.Supports.Model.Cont
2f860 65 78 74 20 50 72 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 ext.Protocol.(MCP).integration.u
2f880 73 69 6e 67 20 74 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 sing.the.mcp.el.package..;;.-.Su
2f8a0 70 70 6f 72 74 73 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 pports.multi-modal.models.(send.
2f8c0 69 6d 61 67 65 73 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 images,.documents)..;;.-.Support
2f8e0 73 20 22 72 65 61 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 s."reasoning".content.in.LLM.res
2f900 70 6f 6e 73 65 73 2e 0a 3b 3b 20 2d 20 53 61 76 65 20 63 68 61 74 73 20 61 73 20 72 65 67 75 6c ponses..;;.-.Save.chats.as.regul
2f920 61 72 20 4d 61 72 6b 64 6f 77 6e 2f 4f 72 67 2f 54 65 78 74 20 66 69 6c 65 73 20 61 6e 64 20 72 ar.Markdown/Org/Text.files.and.r
2f940 65 73 75 6d 65 20 74 68 65 6d 20 6c 61 74 65 72 2e 0a 3b 3b 20 2d 20 59 6f 75 20 63 61 6e 20 67 esume.them.later..;;.-.You.can.g
2f960 6f 20 62 61 63 6b 20 61 6e 64 20 65 64 69 74 20 79 6f 75 72 20 70 72 65 76 69 6f 75 73 20 70 72 o.back.and.edit.your.previous.pr
2f980 6f 6d 70 74 73 20 6f 72 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 73 20 77 68 65 6e 0a 3b 3b 20 20 ompts.or.LLM.responses.when.;;..
2f9a0 20 63 6f 6e 74 69 6e 75 69 6e 67 20 61 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 2e 20 20 54 68 65 .continuing.a.conversation...The
2f9c0 73 65 20 77 69 6c 6c 20 62 65 20 66 65 64 20 62 61 63 6b 20 74 6f 20 74 68 65 20 6d 6f 64 65 6c se.will.be.fed.back.to.the.model
2f9e0 2e 0a 3b 3b 20 2d 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 ..;;.-.Redirect.prompts.and.resp
2fa00 6f 6e 73 65 73 20 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 onses.easily.;;.-.Rewrite,.refac
2fa20 74 6f 72 20 6f 72 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 tor.or.fill.in.regions.in.buffer
2fa40 73 2e 0a 3b 3b 20 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 s..;;.-.Write.your.own.commands.
2fa60 66 6f 72 20 63 75 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 for.custom.tasks.with.a.simple.A
2fa80 50 49 2e 0a 3b 3b 0a 3b 3b 20 52 65 71 75 69 72 65 6d 65 6e 74 73 20 66 6f 72 20 43 68 61 74 47 PI..;;.;;.Requirements.for.ChatG
2faa0 50 54 2c 20 41 7a 75 72 65 2c 20 47 65 6d 69 6e 69 20 6f 72 20 4b 61 67 69 3a 0a 3b 3b 0a 3b 3b PT,.Azure,.Gemini.or.Kagi:.;;.;;
2fac0 20 2d 20 59 6f 75 20 6e 65 65 64 20 61 6e 20 61 70 70 72 6f 70 72 69 61 74 65 20 41 50 49 20 6b .-.You.need.an.appropriate.API.k
2fae0 65 79 2e 20 20 53 65 74 20 74 68 65 20 76 61 72 69 61 62 6c 65 20 60 67 70 74 65 6c 2d 61 70 69 ey...Set.the.variable.`gptel-api
2fb00 2d 6b 65 79 27 20 74 6f 20 74 68 65 0a 3b 3b 20 20 20 6b 65 79 20 6f 72 20 74 6f 20 61 20 66 75 -key'.to.the.;;...key.or.to.a.fu
2fb20 6e 63 74 69 6f 6e 20 6f 66 20 6e 6f 20 61 72 67 75 6d 65 6e 74 73 20 74 68 61 74 20 72 65 74 75 nction.of.no.arguments.that.retu
2fb40 72 6e 73 20 74 68 65 20 6b 65 79 2e 20 20 28 49 74 20 74 72 69 65 73 20 74 6f 0a 3b 3b 20 20 20 rns.the.key...(It.tries.to.;;...
2fb60 75 73 65 20 60 61 75 74 68 2d 73 6f 75 72 63 65 27 20 62 79 20 64 65 66 61 75 6c 74 29 0a 3b 3b use.`auth-source'.by.default).;;
2fb80 0a 3b 3b 20 43 68 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 .;;.ChatGPT.is.configured.out.of
2fba0 20 74 68 65 20 62 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 .the.box...For.the.other.sources
2fbc0 3a 0a 3b 3b 0a 3b 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 :.;;.;;.-.For.Azure:.define.a.gp
2fbe0 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 2d 61 7a 75 tel-backend.with.`gptel-make-azu
2fc00 72 65 27 2c 20 77 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 re',.which.see..;;.-.For.Gemini:
2fc20 20 64 65 66 69 6e 65 20 61 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 77 69 74 68 20 60 67 70 .define.a.gptel-backend.with.`gp
2fc40 74 65 6c 2d 6d 61 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 tel-make-gemini',.which.see..;;.
2fc60 2d 20 46 6f 72 20 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 -.For.Anthropic.(Claude):.define
2fc80 20 61 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 77 69 74 68 20 60 67 70 74 65 6c 2d 6d 61 6b .a.gptel-backend.with.`gptel-mak
2fca0 65 2d 61 6e 74 68 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 e-anthropic',.;;...which.see..;;
2fcc0 20 2d 20 46 6f 72 20 54 6f 67 65 74 68 65 72 2e 61 69 2c 20 41 6e 79 73 63 61 6c 65 2c 20 47 72 .-.For.Together.ai,.Anyscale,.Gr
2fce0 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 65 72 65 62 72 oq,.OpenRouter,.DeepSeek,.Cerebr
2fd00 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 65 66 69 6e 65 as.or.;;...Github.Models:.define
2fd20 20 61 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 77 69 74 68 20 60 67 70 74 65 6c 2d 6d 61 6b .a.gptel-backend.with.`gptel-mak
2fd40 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 46 6f 72 20 50 e-openai',.which.see..;;.-.For.P
2fd60 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 20 77 69 74 68 rivateGPT:.define.a.backend.with
2fd80 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 68 69 63 68 20 .`gptel-make-privategpt',.which.
2fda0 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 65 66 69 6e 65 see..;;.-.For.Perplexity:.define
2fdc0 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 2d 70 65 72 70 .a.backend.with.`gptel-make-perp
2fde0 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 72 20 44 65 65 lexity',.which.see..;;.-.For.Dee
2fe00 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 68 20 60 67 70 pseek:.define.a.backend.with.`gp
2fe20 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 65 65 2e 0a 3b tel-make-deepseek',.which.see..;
2fe40 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 6c 2d 62 61 63 ;.-.For.Kagi:.define.a.gptel-bac
2fe60 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 2c 20 77 68 69 kend.with.`gptel-make-kagi',.whi
2fe80 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 65 6c 73 20 75 ch.see..;;.;;.For.local.models.u
2fea0 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 50 54 34 41 6c sing.Ollama,.Llama.cpp.or.GPT4Al
2fec0 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 20 62 65 20 72 l:.;;.;;.-.The.model.has.to.be.r
2fee0 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 72 65 73 73 20 unning.on.an.accessible.address.
2ff00 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 61 20 67 70 74 (or.localhost).;;.-.Define.a.gpt
2ff20 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 6f 6c 6c 61 el-backend.with.`gptel-make-olla
2ff40 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 2c 0a 3b 3b 20 ma'.or.`gptel-make-gpt4all',.;;.
2ff60 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 20 6f 72 20 4c ..which.see..;;.-.Llama.cpp.or.L
2ff80 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 61 63 6b 65 6e lamafiles:.Define.a.gptel-backen
2ffa0 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 0a 3b 3b 0a 3b d.with.`gptel-make-openai'..;;.;
2ffc0 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 45 20 66 6f 72 ;.Consult.the.package.README.for
2ffe0 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 68 20 63 6f 6e .examples.and.more.help.with.con
30000 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 20 55 73 61 67 figuring.;;.backends..;;.;;.Usag
30020 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 69 6e 20 61 6e e:.;;.;;.gptel.can.be.used.in.an
30040 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 63 68 61 74 20 y.buffer.or.in.a.dedicated.chat.
30060 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 20 6d 6f 64 65 buffer...The.;;.interaction.mode
30080 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 79 20 61 6e 64 l.is.simple:.Type.in.a.query.and
300a0 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 73 65 72 74 65 .the.response.will.be.;;.inserte
300c0 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 74 68 65 20 63 d.below...You.can.continue.the.c
300e0 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 65 0a onversation.by.typing.below.the.
30100 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 68 69 73 20 69 ;;.response..;;.;;.To.use.this.i
30120 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 60 67 70 74 65 n.any.buffer:.;;.;;.-.Call.`gpte
30140 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 73 20 74 65 78 l-send'.to.send.the.buffer's.tex
30160 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 20 61 0a 3b 3b t.up.to.the.cursor...Select.a.;;
30180 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 72 65 67 69 6f ...region.to.send.only.the.regio
301a0 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 72 65 76 69 6f n..;;.;;.-.You.can.select.previo
301c0 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 20 63 6f 6e 74 us.prompts.and.responses.to.cont
301e0 69 6e 75 65 20 74 68 65 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 2e 0a 3b 3b 0a 3b 3b 20 2d 20 43 inue.the.conversation..;;.;;.-.C
30200 61 6c 6c 20 60 67 70 74 65 6c 2d 73 65 6e 64 27 20 77 69 74 68 20 61 20 70 72 65 66 69 78 20 61 all.`gptel-send'.with.a.prefix.a
30220 72 67 75 6d 65 6e 74 20 74 6f 20 61 63 63 65 73 73 20 61 20 6d 65 6e 75 20 77 68 65 72 65 20 79 rgument.to.access.a.menu.where.y
30240 6f 75 20 63 61 6e 20 73 65 74 0a 3b 3b 20 20 20 79 6f 75 72 20 62 61 63 6b 65 6e 64 2c 20 6d 6f ou.can.set.;;...your.backend,.mo
30260 64 65 6c 20 61 6e 64 20 6f 74 68 65 72 20 70 61 72 61 6d 65 74 65 72 73 2c 20 6f 72 20 74 6f 20 del.and.other.parameters,.or.to.
30280 72 65 64 69 72 65 63 74 20 74 68 65 0a 3b 3b 20 20 20 70 72 6f 6d 70 74 2f 72 65 73 70 6f 6e 73 redirect.the.;;...prompt/respons
302a0 65 2e 0a 3b 3b 0a 3b 3b 20 54 6f 20 75 73 65 20 74 68 69 73 20 69 6e 20 61 20 64 65 64 69 63 61 e..;;.;;.To.use.this.in.a.dedica
302c0 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 74 65 6c 3a 20 ted.buffer:.;;..;;.-.M-x.gptel:.
302e0 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 20 2d 20 49 6e Start.a.chat.session..;;.;;.-.In
30300 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 2d 63 20 52 45 .the.chat.session:.Press.`C-c.RE
30320 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 6f 75 72 20 70 T'.(`gptel-send').to.send.your.p
30340 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 67 75 6d 65 6e rompt..;;...Use.a.prefix.argumen
30360 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 20 61 20 6d 65 t.(`C-u.C-c.RET').to.access.a.me
30380 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 63 61 6e 20 73 nu...In.this.menu.you.;;...can.s
303a0 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 20 73 79 73 74 et.chat.parameters.like.the.syst
303c0 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 6e 64 20 6f 72 em.directives,.active.backend.or
303e0 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 65 64 69 72 65 .;;...model,.or.choose.to.redire
30400 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 77 68 65 72 65 ct.the.input.or.output.elsewhere
30420 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 72 69 6e 67 20 .(such.as.to.the.;;...kill.ring.
30440 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 59 6f 75 20 63 or.the.echo.area)..;;.;;.-.You.c
30460 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 6c 65 2e 20 20 an.save.this.buffer.to.a.file...
30480 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 6e 20 6f 6e 0a When.opening.this.file,.turn.on.
304a0 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 69 74 69 6e 67 ;;...`gptel-mode'.before.editing
304c0 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 74 69 6f 6e 20 .it.to.restore.the.conversation.
304e0 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 74 74 69 6e 67 state.and.;;...continue.chatting
30500 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 66 69 6c 65 73 ..;;.;;.-.To.include.media.files
30520 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 20 61 64 64 20 .with.your.request,.you.can.add.
30540 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 65 73 63 72 69 them.to.the.context.;;...(descri
30560 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 61 73 20 6c 69 bed.next),.or.include.them.as.li
30580 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 20 63 68 61 74 nks.in.Org.or.Markdown.mode.chat
305a0 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 69 61 20 69 73 .;;...buffers...Sending.media.is
305c0 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 61 6e 20 74 75 .disabled.by.default,.you.can.tu
305e0 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 60 67 70 74 65 rn.it.on.globally.;;...via.`gpte
30600 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 69 6e 20 61 20 l-track-media',.or.locally.in.a.
30620 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 6c 69 6e 65 2e chat.buffer.via.the.header.line.
30640 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 74 20 77 69 74 .;;..;;.Include.more.context.wit
30660 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 6e 74 20 74 6f h.requests:.;;.;;.If.you.want.to
30680 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 63 6f 6e 74 65 .provide.the.LLM.with.more.conte
306a0 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 3b 20 72 65 67 xt,.you.can.add.arbitrary.;;.reg
306c0 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 65 63 74 6f 72 ions,.buffers,.files.or.director
306e0 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 6c 2d 61 64 64 ies.to.the.query.with.`gptel-add
30700 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 20 66 69 6c 65 '...To.add.;;.text.or.media.file
30720 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 64 20 6f 72 20 s,.call.`gptel-add'.in.Dired.or.
30740 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 2d 61 64 64 2d use.the.dedicated.;;.`gptel-add-
30760 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 64 64 20 63 6f file'..;;.;;.You.can.also.add.co
30780 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 74 65 61 64 20 ntext.from.gptel's.menu.instead.
307a0 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 66 69 78 20 61 (`gptel-send'.with.a.;;.prefix.a
307c0 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 6d 6f 64 69 66 rg),.as.well.as.examine.or.modif
307e0 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 78 74 20 69 73 y.context..;;.;;.When.context.is
30800 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 75 64 65 20 69 .available,.gptel.will.include.i
30820 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 3b 20 4c 4c 4d t.with.each.LLM.query..;;.;;.LLM
30840 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 6f 72 74 73 20 .Tool.use:.;;.;;.gptel.supports.
30860 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 65 72 65 20 4c "tool.calling".behavior,.where.L
30880 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 69 74 68 0a 3b LMs.can.specify.arguments.with.;
308a0 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 6f 6f 6c 73 22 ;.which.to.call.provided."tools"
308c0 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 73 75 6c 74 73 .(elisp.functions)...The.results
308e0 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 65 20 66 65 64 .of.running.the.;;.tools.are.fed
30900 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 20 63 61 70 61 .back.to.the.LLM,.giving.it.capa
30920 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 6e 64 0a 3b 3b bilities.and.knowledge.beyond.;;
30940 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 68 65 20 62 6f .what.is.available.out.of.the.bo
30960 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 70 65 72 66 6f x...For.example,.tools.can.perfo
30980 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 6f 6f 6b 75 70 rm.web.;;.searches.or.API.lookup
309a0 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 72 69 65 73 2c s,.modify.files.and.directories,
309c0 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 20 62 65 20 73 .and.so.on..;;.;;.Tools.can.be.s
309e0 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 6f 6c 27 2c 20 pecified.via.`gptel-make-tool',.
30a00 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 65 70 6f 73 69 or.obtained.from.other.;;.reposi
30a20 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 78 74 20 50 72 tories,.or.from.Model.Context.Pr
30a40 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 74 68 65 20 6d otocol.(MCP).servers.using.the.m
30a60 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 52 45 41 44 4d cp.el.;;.package...See.the.READM
30a80 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 63 61 6e 20 62 E.for.details..;;.;;.Tools.can.b
30aa0 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 20 75 73 69 6e e.included.with.LLM.queries.usin
30ac0 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 60 67 70 74 65 g.gptel's.menu,.or.from.;;.`gpte
30ae0 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 65 72 66 61 63 l-tools'..;;.;;.Rewrite.interfac
30b00 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 20 61 20 72 65 e.;;.;;.In.any.buffer:.with.a.re
30b20 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 69 74 65 20 70 gion.selected,.you.can.rewrite.p
30b40 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 69 6c 6c 20 69 rose,.refactor.code.;;.or.fill.i
30b60 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 73 73 69 62 6c n.the.region...This.is.accessibl
30b80 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 61 6c 73 6f 20 e.via.`gptel-rewrite',.and.also.
30ba0 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 6e 75 2e 0a 3b from.;;.the.`gptel-send'.menu..;
30bc0 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 20 62 75 6e 64 ;.;;.Presets.;;.;;.Define.a.bund
30be0 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 20 62 61 63 6b le.of.configuration.(model,.back
30c00 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 65 74 63 29 0a end,.system.message,.tools.etc).
30c20 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 65 20 61 70 70 ;;.as.a."preset".that.can.be.app
30c40 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 73 79 20 74 6f lied.together,.making.it.easy.to
30c60 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 20 67 70 74 65 .switch.between.;;.tasks.in.gpte
30c80 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 64 20 61 70 70 l...Presets.can.be.saved.and.app
30ca0 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 0a 3b 3b 20 6d lied.from.gptel's.transient.;;.m
30cc0 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 61 20 63 6f 6f enu...You.can.also.include.a.coo
30ce0 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 6d 65 22 20 69 kie.of.the.form."@preset-name".i
30d00 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 65 71 75 65 73 n.the.prompt.;;.to.send.a.reques
30d20 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 68 69 73 20 66 t.with.a.preset.applied...This.f
30d40 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 74 0a 3b 3b 20 eature.works.everywhere,.but.;;.
30d60 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 74 69 66 69 65 preset.cookies.are.also.fontifie
30d80 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 74 65 6c 20 69 d.in.chat.buffers..;;.;;.gptel.i
30da0 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 65 72 73 20 61 n.Org.mode:.;;.;;.gptel.offers.a
30dc0 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 72 67 20 6d .few.extra.conveniences.in.Org.m
30de0 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 74 68 65 20 63 ode:.;;.;;.-.You.can.limit.the.c
30e00 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 68 65 onversation.context.to.an.Org.he
30e20 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 73 65 74 2d 74 ading.with.;;...`gptel-org-set-t
30e40 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 61 76 65 20 62 opic'..;;....;;.-.You.can.have.b
30e60 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 20 6d 6f ranching.conversations.in.Org.mo
30e80 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 0a 3b 3b 20 20 de,.where.each.hierarchical.;;..
30ea0 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 6f 63 75 6d 65 .outline.path.through.the.docume
30ec0 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 6f 6e 20 62 72 nt.is.a.separate.conversation.br
30ee0 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 20 60 67 70 74 anch..;;...See.the.variable.`gpt
30f00 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 3b 3b 20 20 20 el-org-branching-context'..;;...
30f20 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 70 74 65 6c 20 .;;.-.You.can.declare.the.gptel.
30f40 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 2c 20 73 79 73 model,.backend,.temperature,.sys
30f60 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 70 61 72 61 6d tem.message.and.;;...other.param
30f80 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 68 20 74 68 65 eters.as.Org.properties.with.the
30fa0 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 74 2d 70 72 6f .command.;;...`gptel-org-set-pro
30fc0 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 64 65 72 20 74 perties'...gptel.queries.under.t
30fe0 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 20 20 20 77 69 he.corresponding.heading.;;...wi
31000 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 73 2c 20 61 6c ll.always.use.these.settings,.al
31020 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 20 72 65 70 72 lowing.you.to.create.mostly.repr
31040 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 62 6f 6f 6b 73 oducible.;;...LLM.chat.notebooks
31060 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 72 73 20 61 20 ..;;.;;.Finally,.gptel.offers.a.
31080 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 74 69 6e 67 20 general.purpose.API.for.writing.
310a0 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 74 20 79 6f 75 LLM.ineractions.that.;;.suit.you
310c0 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 75 65 73 74 27 r.workflow...See.`gptel-request'
310e0 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 61 64 76 61 6e ,.and.`gptel-fsm'.for.more.advan
31100 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 65 63 6c 61 72 ced.;;.usage...;;;.Code:.(declar
31120 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 61 72 6b 64 6f e-function.markdown-mode."markdo
31140 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 67 70 74 65 wn-mode").(declare-function.gpte
31160 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 63 75 72 6c 22 l-curl-get-response."gptel-curl"
31180 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 65 6e 75 20 22 ).(declare-function.gptel-menu."
311a0 67 70 74 65 6c 2d 74 72 61 6e 73 69 65 6e 74 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 gptel-transient").(declare-funct
311c0 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 74 65 6c 2d 74 ion.gptel-system-prompt."gptel-t
311e0 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 20 67 70 74 ransient").(declare-function.gpt
31200 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 0a 28 64 65 63 el-tools."gptel-transient").(dec
31220 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 72 79 2d 68 69 lare-function.pulse-momentary-hi
31240 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 65 63 6c 61 72 ghlight-region."pulse")..(declar
31260 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 64 2d 62 75 66 e-function.ediff-make-cloned-buf
31280 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 66 75 6e 63 74 fer."ediff-util").(declare-funct
312a0 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 22 65 64 69 66 ion.ediff-regions-internal."edif
312c0 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 6e 65 2d 68 69 f").(declare-function.hl-line-hi
312e0 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 65 2d 66 75 6e ghlight."hl-line")..(declare-fun
31300 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 72 69 6e 67 20 ction.org-escape-code-in-string.
31320 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 6e 20 67 70 74 "org-src").(declare-function.gpt
31340 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 20 22 67 70 el-org--create-prompt-buffer."gp
31360 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 20 67 70 74 65 tel-org").(declare-function.gpte
31380 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 29 0a 28 64 65 l-org-set-topic."gptel-org").(de
313a0 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 61 76 65 2d 73 clare-function.gptel-org--save-s
313c0 74 61 74 65 20 22 67 70 74 65 6c 2d 6f 72 67 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 tate."gptel-org").(declare-funct
313e0 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 65 20 22 67 70 ion.gptel-org--restore-state."gp
31400 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 20 67 70 74 65 tel-org").(declare-function.gpte
31420 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 6f 72 67 20 l--stream-convert-markdown->org.
31440 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 20 67 "gptel-org").(declare-function.g
31460 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 22 67 70 74 ptel--convert-markdown->org."gpt
31480 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 75 6e 63 74 69 el-org").(define-obsolete-functi
314a0 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 20 27 67 70 74 on-alias...'gptel-set-topic.'gpt
314c0 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 28 65 76 61 6c el-org-set-topic."0.7.5")..(eval
314e0 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 75 62 72 2d 78 -when-compile...(require.'subr-x
31500 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 72 65 20 27 63 )).(require.'cl-lib).(require.'c
31520 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 0a 28 72 65 71 ompat.nil.t).(require.'url).(req
31540 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 72 6f 70 65 72 uire.'map).(require.'text-proper
31560 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 65 72 69 63 29 ty-search).(require.'cl-generic)
31580 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 0a 3b 3b 3b 20 .(require.'gptel-openai)....;;;.
315a0 55 73 65 72 20 6f 70 74 69 6f 6e 73 0a 0a 28 64 65 66 67 72 6f 75 70 20 67 70 74 65 6c 20 6e 69 User.options..(defgroup.gptel.ni
315c0 6c 0a 20 20 22 49 6e 74 65 72 61 63 74 20 77 69 74 68 20 4c 4c 4d 73 20 66 72 6f 6d 20 61 6e 79 l..."Interact.with.LLMs.from.any
315e0 77 68 65 72 65 20 69 6e 20 45 6d 61 63 73 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 68 79 70 65 72 where.in.Emacs."...:group.'hyper
31600 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 6f 78 79 20 22 media)..(defcustom.gptel-proxy."
31620 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 20 66 6f 72 20 "..."Path.to.a.proxy.to.use.for.
31640 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 74 6f 20 63 75 gptel.interactions..Passed.to.cu
31660 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 6d 70 6c 65 20 rl.via.--proxy.arg,.for.example.
31680 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 61 76 65 20 69 \"proxy.yourorg.com:80\".Leave.i
316a0 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 70 72 6f 78 79 t.empty.if.you.don't.use.a.proxy
316c0 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 74 6f 6d 20 ."...:type.'string)..(defcustom.
316e0 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 65 79 2d 66 72 gptel-api-key.#'gptel-api-key-fr
31700 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 79 20 28 73 74 om-auth-source..."An.API.key.(st
31720 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 61 63 6b 65 6e ring).for.the.default.LLM.backen
31740 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 20 61 6c 73 6f d...OpenAI.by.default...Can.also
31760 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 6e 74 73 20 74 .be.a.function.of.no.arguments.t
31780 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 65 20 73 65 63 hat.returns.an.API.key.(more.sec
317a0 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 2e 22 0a 20 20 ure).for.the.active.backend."...
317c0 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 74 72 69 6e 67 :type.'(choice...........(string
317e0 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 28 66 75 6e 63 .:tag."API.key")...........(func
31800 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 74 75 72 6e 73 tion.:tag."Function.that.returns
31820 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 6d 20 67 70 74 .the.API.key")))..(defcustom.gpt
31840 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 6e 73 65 73 20 el-stream.t..."Stream.responses.
31860 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 63 65 69 76 65 from.the.LLM.as.they.are.receive
31880 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 75 6e 6c 65 73 d...This.option.is.ignored.unles
318a0 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 73 20 73 74 72 s.-.the.LLM.backend.supports.str
318c0 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 65 20 28 73 65 eaming,.and.-.Curl.is.in.use.(se
318e0 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 65 74 20 74 6f e.`gptel-use-curl')..When.set.to
31900 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 75 6c 6c 20 72 .nil,.Emacs.waits.for.the.full.r
31920 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 61 74 20 6f 6e esponse.and.inserts.it.all.at.on
31940 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 6f 75 73 2e 0a ce...This.wait.is.asynchronous..
31960 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 70 65 20 27 62 .\='tis.a.bit.silly."...:type.'b
31980 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 73 65 2d 63 75 oolean)..(defcustom.gptel-use-cu
319a0 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 75 72 6c 22 29 rl.(and.(executable-find."curl")
319c0 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 20 70 72 65 66 .t)..."Whether.gptel.should.pref
319e0 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 6e 20 62 65 20 er.Curl.when.available...Can.be.
31a00 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 70 61 74 68 20 set.to.t,.nil,.or.a.string.path.
31a20 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 3a 74 79 70 65 to.the.curl.executable."...:type
31a40 20 27 28 63 68 6f 69 63 65 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 20 .'(choice...........(const.:tag.
31a60 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 20 20 20 20 20 "Do.not.use.Curl".nil)..........
31a80 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 20 20 20 20 20 .(const.:tag."Use.Curl".t)......
31aa0 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 70 61 74 68 20 .....(string.:tag."Specify.path.
31ac0 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 0a 28 64 65 66 to.the.Curl.executable")))..(def
31ae0 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 73 70 6f 6e 73 custom.gptel-org-convert-respons
31b00 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 20 63 6f 6e 76 e.t..."Whether.gptel.should.conv
31b20 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 72 67 20 6d 61 ert.Markdown.responses.to.Org.ma
31b40 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 71 75 65 73 74 rkup...This.only.affects.request
31b60 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 20 62 75 66 66 s.originating.from.Org.mode.buff
31b80 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 65 66 63 75 73 ers."...:type.'boolean)..(defcus
31ba0 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 72 65 73 68 6f tom.gptel-curl-file-size-thresho
31bc0 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 27 28 77 69 6e ld...(if.(memq.system-type.'(win
31be0 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 30 30 30 29 0a dows-nt.ms-dos)).#x6ffe.130000).
31c00 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 20 66 69 6c 65 .."Size.threshold.for.using.file
31c20 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 73 20 74 68 65 .input.with.Curl...Specifies.the
31c40 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 20 75 73 65 20 .size.threshold.for.when.to.use.
31c60 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 74 61 20 74 6f a.temporary.file.to.pass.data.to
31c80 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 20 74 68 65 20 .Curl.in.gptel.queries...If.the.
31ca0 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 20 65 78 63 65 size.of.the.data.to.be.sent.exce
31cc0 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 61 20 69 73 20 eds.this.threshold,.the.data.is.
31ce0 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 20 61 6e 64 20 written.to.a.temporary.file.and.
31d00 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 2d 64 61 74 61 passed.to.Curl.using.the.`--data
31d20 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 20 72 65 66 65 -binary'.option.with.a.file.refe
31d40 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 20 69 73 20 70 rence...Otherwise,.the.data.is.p
31d60 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 2d 6c 69 6e 65 assed.directly.as.a.command-line
31d80 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 20 69 6e 74 65 .argument...The.value.is.an.inte
31da0 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 20 6f 66 20 62 ger.representing.the.number.of.b
31dc0 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 20 6d 61 79 20 ytes...Adjusting.this.value.may.
31de0 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 68 65 20 65 6e be.necessary.depending.on.the.en
31e00 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 69 7a 65 20 6f vironment.and.the.typical.size.o
31e20 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 74 65 6c 20 71 f.the.data.being.sent.in.gptel.q
31e40 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 69 6d 70 72 6f ueries..A.larger.value.may.impro
31e60 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 74 68 65 20 6f ve.performance.by.avoiding.the.o
31e80 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 72 79 20 66 69 verhead.of.creating.temporary.fi
31ea0 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 2c 20 77 68 69 les.for.small.data.payloads,.whi
31ec0 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 65 65 64 65 64 le.a.smaller.value.may.be.needed
31ee0 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 6e 74 20 73 69 .if.the.command-line.argument.si
31f00 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 69 6e 67 20 73 ze.is.limited.by.the.operating.s
31f20 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 30 30 20 66 6f ystem...The.default.of.#x8000.fo
31f40 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 6f 66 74 20 64 r.windows.comes.from.Microsoft.d
31f60 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 68 74 74 70 73 ocumentation.located.here:.https
31f80 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 73 2f 77 69 6e ://learn.microsoft.com/en-us/win
31fa0 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 64 73 61 70 69 dows/win32/api/processthreadsapi
31fc0 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 65 70 72 6f 63 /nf-processthreadsapi-createproc
31fe0 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 2d 20 23 78 31 essa..It.is.set.to.(#x8000.-.#x1
32000 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 65 72 20 28 6e 000.-.2).to.account.for.other.(n
32020 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 61 72 67 75 6d on-data).Curl.command.line.argum
32040 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 65 66 69 6e 65 ents."...:type.'natnum)..(define
32060 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 70 74 65 6c 2d -obsolete-variable-alias.'gptel-
32080 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 2d 70 72 6f 6d prompt-filter-hook...'gptel-prom
320a0 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 2e 39 22 29 0a pt-transform-functions."0.9.9").
320c0 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 61 6e 73 66 6f .(defcustom.gptel-prompt-transfo
320e0 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 6e 73 66 6f 72 rm-functions...'(gptel--transfor
32100 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 66 6f 72 6d 2d m-apply-preset.gptel--transform-
32120 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 20 61 75 67 6d add-context)..."Handlers.to.augm
32140 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 66 6f 72 65 20 ent.or.transform.a.query.before.
32160 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 61 6c 6c 65 64 sending.it...This.hook.is.called
32180 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 61 69 6e 69 6e .in.a.temporary.buffer.containin
321a0 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 20 74 68 65 20 g.the.text.to.be.sent,.with.the.
321c0 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 6f 6d 70 74 2e cursor.at.the.end.of.the.prompt.
321e0 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 74 68 65 20 62 ..You.can.use.it.to.modify.the.b
32200 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 62 6c 65 73 20 uffer.or.buffer-local.variables.
32220 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 75 6e 63 74 69 as.required...Since.these.functi
32240 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 72 75 63 74 69 ons.modify.the.prompt.constructi
32260 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 63 68 20 74 68 on.buffer,.the.order.in.which.th
32280 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 70 61 72 74 69 ey.run.is.significant!..In.parti
322a0 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 79 6f 75 72 20 cular,.you.may.want.to.add.your.
322c0 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 74 29 20 6f 72 function.before.(the.default).or
322e0 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 64 2d 63 6f 6e .after.`gptel--transform-add-con
32300 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 6f 6e 74 65 78 text',.which.adds.gptel's.contex
32320 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 29 20 74 6f 20 t.(other.buffers,.files.etc).to.
32340 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 70 69 63 61 6c this.buffer...Example:.A.typical
32360 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 68 20 66 6f 72 .use.case.might.be.to.search.for
32380 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 72 65 70 6c 61 .occurrences.of.$(cmd).and.repla
323a0 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 65 20 73 68 65 ce.it.with.the.output.of.the.she
323c0 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 61 73 79 0a 74 ll.command.cmd,.making.it.easy.t
323e0 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 63 6f 6d 6d 61 o.send.the.output.of.shell.comma
32400 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 66 75 6e 63 74 nds.to.the.LLM...Transform.funct
32420 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 61 73 79 6e 63 ions.can.be.synchronous.or.async
32440 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 66 75 6e 63 74 hronous...Synchronous.hook.funct
32460 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 65 20 61 72 67 ions.must.accept.zero.or.one.arg
32480 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 68 65 20 63 75 ument:.the.INFO.plist.for.the.cu
324a0 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 73 20 68 6f 6f rrent.request...Asynchronous.hoo
324c0 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 20 61 72 67 75 k.functions.must.accept.two.argu
324e0 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 66 74 65 72 20 ments:.a.callback.to.call.after.
32500 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 65 74 65 2c 20 the.transformation.is.complete,.
32520 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 63 75 72 72 65 and.the.INFO.plist.for.the.curre
32540 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 65 20 74 68 69 nt.request...Note.that.while.thi
32560 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 69 6e 6c 79 20 s.set.of.handlers.can.certainly.
32580 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 74 6f 20 62 65 be.set.with.a.global.value.to.be
325a0 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 61 6c 6c 20 62 .applied.to.all.queries.in.all.b
325c0 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 6c 6f 63 61 6c uffers,.it.meant.to.be.set.local
325e0 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 72 20 63 68 61 ly.for.a.specific.buffer,.or.cha
32600 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 74 20 6f 66 20 t.topic,.or.only.the.context.of.
32620 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 6f 6f 6b 29 0a a.certain.task."...:type.'hook).
32640 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 65 73 74 2d 68 .(defcustom.gptel-post-request-h
32660 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 65 6e 64 69 6e ook.nil..."Hook.run.after.sendin
32680 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 6e 73 20 28 70 g.a.gptel.request...This.runs.(p
326a0 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 65 20 69 73 20 ossibly).before.any.response.is.
326c0 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 3b 3b 20 54 4f received."...:type.'hook)..;;.TO
326e0 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 76 61 72 20 67 DO(v1.0):.Remove.this..(defvar.g
32700 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 6e 73 20 6e ptel-response-filter-functions.n
32720 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 0a 20 27 67 70 il).(make-obsolete-variable..'gp
32740 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 6e 73 0a 20 22 tel-response-filter-functions.."
32760 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 6e 67 65 72 20 Response.filtering.is.no.longer.
32780 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 67 6c 65 0a 6d supported.in.gptel...To.toggle.m
327a0 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 73 65 65 20 60 arkdown.to.Org.conversion,.see.`
327c0 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 2e 20 20 54 6f gptel-org-convert-response'...To
327e0 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 65 69 74 68 65 .filter.LLM.response.text,.eithe
32800 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 61 0a 63 75 73 r.use.`gptel-request'.with.a.cus
32820 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 2d 70 6f 73 74 tom.callback,.or.use.`gptel-post
32840 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 39 2e 37 22 29 -response-functions'.".."0.9.7")
32860 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 70 72 65 2d 72 65 73 70 6f 6e 73 65 2d ..(defcustom.gptel-pre-response-
32880 68 6f 6f 6b 20 6e 69 6c 0a 20 20 22 48 6f 6f 6b 20 72 75 6e 20 62 65 66 6f 72 65 20 69 6e 73 65 hook.nil..."Hook.run.before.inse
328a0 72 74 69 6e 67 20 74 68 65 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 20 69 6e 74 6f 20 74 68 65 20 rting.the.LLM.response.into.the.
328c0 63 75 72 72 65 6e 74 20 62 75 66 66 65 72 2e 0a 0a 54 68 69 73 20 68 6f 6f 6b 20 69 73 20 63 61 current.buffer...This.hook.is.ca
328e0 6c 6c 65 64 20 69 6e 20 74 68 65 20 62 75 66 66 65 72 20 77 68 65 72 65 20 74 68 65 20 4c 4c 4d lled.in.the.buffer.where.the.LLM
32900 20 72 65 73 70 6f 6e 73 65 20 77 69 6c 6c 20 62 65 0a 69 6e 73 65 72 74 65 64 2e 0a 0a 4e 6f 74 .response.will.be.inserted...Not
32920 65 3a 20 74 68 69 73 20 68 6f 6f 6b 20 6f 6e 6c 79 20 72 75 6e 73 20 69 66 20 74 68 65 20 72 65 e:.this.hook.only.runs.if.the.re
32940 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 6f 6f 6b 29 0a quest.succeeds."...:type.'hook).
32960 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 61 6c 69 61 73 .(define-obsolete-variable-alias
32980 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 6b 20 27 67 70 ...'gptel-post-response-hook.'gp
329a0 74 65 6c 2d 70 6f 73 74 2d 72 65 73 70 6f 6e 73 65 2d 66 75 6e 63 74 69 6f 6e 73 0a 20 20 22 30 tel-post-response-functions..."0
329c0 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 74 69 6f 6e 73 .6.0"..."Post-response.functions
329e0 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 67 75 6d 65 6e .are.now.called.with.two.argumen
32a00 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 72 20 70 6f 73 ts:.the.start.and.end.buffer.pos
32a20 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 28 64 65 66 63 itions.of.the.response.")..(defc
32a40 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 75 6e 63 74 69 ustom.gptel-post-response-functi
32a60 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 6e 20 61 66 74 ons.nil..."Abnormal.hook.run.aft
32a80 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 73 65 20 69 6e er.inserting.the.LLM.response.in
32aa0 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 73 20 68 6f 6f to.the.current.buffer...This.hoo
32ac0 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 6f 20 77 68 69 k.is.called.in.the.buffer.to.whi
32ae0 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 2c 20 61 6e 64 ch.the.LLM.response.is.sent,.and
32b00 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 73 20 62 65 65 .after.the.full.response.has.bee
32b20 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 69 73 20 63 61 n.inserted...Each.function.is.ca
32b40 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 65 20 72 65 73 lled.with.two.arguments:.the.res
32b60 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 69 74 69 6f 6e ponse.beginning.and.end.position
32b80 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 65 6e 20 69 66 s...Note:.this.hook.runs.even.if
32ba0 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 73 20 63 61 73 .the.request.fails...In.this.cas
32bc0 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 64 20 65 6e 64 e.the.response.beginning.and.end
32be0 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 73 6f 72 20 70 .positions.are.both.the.cursor.p
32c00 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 72 65 71 75 65 osition.at.the.time.of.the.reque
32c20 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 66 63 75 73 74 st."...:type.'hook)..;;.(defcust
32c40 6f 6d 20 67 70 74 65 6c 2d 70 72 65 2d 73 74 72 65 61 6d 2d 69 6e 73 65 72 74 2d 68 6f 6f 6b 20 om.gptel-pre-stream-insert-hook.
32c60 6e 69 6c 0a 3b 3b 20 20 20 22 48 6f 6f 6b 20 72 75 6e 20 62 65 66 6f 72 65 20 65 61 63 68 20 69 nil.;;..."Hook.run.before.each.i
32c80 6e 73 65 72 74 69 6f 6e 20 6f 66 20 74 68 65 20 4c 4c 4d 27 73 20 73 74 72 65 61 6d 69 6e 67 20 nsertion.of.the.LLM's.streaming.
32ca0 72 65 73 70 6f 6e 73 65 2e 0a 0a 3b 3b 20 54 68 69 73 20 68 6f 6f 6b 20 69 73 20 63 61 6c 6c 65 response...;;.This.hook.is.calle
32cc0 64 20 69 6e 20 74 68 65 20 62 75 66 66 65 72 20 66 72 6f 6d 20 77 68 69 63 68 20 74 68 65 20 70 d.in.the.buffer.from.which.the.p
32ce0 72 6f 6d 70 74 20 77 61 73 20 73 65 6e 74 0a 3b 3b 20 74 6f 20 74 68 65 20 4c 4c 4d 2c 20 69 6d rompt.was.sent.;;.to.the.LLM,.im
32d00 6d 65 64 69 61 74 65 6c 79 20 62 65 66 6f 72 65 20 74 65 78 74 20 69 6e 73 65 72 74 69 6f 6e 2e mediately.before.text.insertion.
32d20 22 0a 3b 3b 20 20 20 3a 67 72 6f 75 70 20 27 67 70 74 65 6c 0a 3b 3b 20 20 20 3a 74 79 70 65 20 ".;;...:group.'gptel.;;...:type.
32d40 27 68 6f 6f 6b 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 70 6f 73 74 2d 73 74 'hook)..(defcustom.gptel-post-st
32d60 72 65 61 6d 2d 68 6f 6f 6b 20 6e 69 6c 0a 20 20 22 48 6f 6f 6b 20 72 75 6e 20 61 66 74 65 72 20 ream-hook.nil..."Hook.run.after.
32d80 65 61 63 68 20 69 6e 73 65 72 74 69 6f 6e 20 6f 66 20 74 68 65 20 4c 4c 4d 27 73 20 73 74 72 65 each.insertion.of.the.LLM's.stre
32da0 61 6d 69 6e 67 20 72 65 73 70 6f 6e 73 65 2e 0a 0a 54 68 69 73 20 68 6f 6f 6b 20 69 73 20 63 61 aming.response...This.hook.is.ca
32dc0 6c 6c 65 64 20 69 6e 20 74 68 65 20 62 75 66 66 65 72 20 66 72 6f 6d 20 77 68 69 63 68 20 74 68 lled.in.the.buffer.from.which.th
32de0 65 20 70 72 6f 6d 70 74 20 77 61 73 20 73 65 6e 74 0a 74 6f 20 74 68 65 20 4c 4c 4d 2c 20 61 6e e.prompt.was.sent.to.the.LLM,.an
32e00 64 20 61 66 74 65 72 20 61 20 74 65 78 74 20 69 6e 73 65 72 74 69 6f 6e 2e 22 0a 20 20 3a 74 79 d.after.a.text.insertion."...:ty
32e20 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 73 61 76 65 pe.'hook)..(defcustom.gptel-save
32e40 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 20 62 65 66 6f -state-hook.nil..."Hook.run.befo
32e60 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 74 65 72 73 20 re.gptel.saves.model.parameters.
32e80 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 73 20 68 6f 6f to.a.file...You.can.use.this.hoo
32ea0 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 72 73 61 74 69 k.to.store.additional.conversati
32ec0 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 73 20 74 6f 20 on.state.or.model.parameters.to.
32ee0 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 66 79 20 74 68 the.chat.buffer,.or.to.modify.th
32f00 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 22 0a 20 20 3a e.buffer.in.some.other.way."...:
32f20 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 64 65 type.'hook)..(defcustom.gptel-de
32f40 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 72 6b 64 6f 77 fault-mode.(if.(fboundp.'markdow
32f60 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 65 0a 09 09 09 n-mode).......'markdown-mode....
32f80 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 20 6d 61 6a 6f .'text-mode)..."The.default.majo
32fa0 72 20 6d 6f 64 65 20 66 6f 72 20 64 65 64 69 63 61 74 65 64 20 63 68 61 74 20 62 75 66 66 65 72 r.mode.for.dedicated.chat.buffer
32fc0 73 2e 0a 0a 49 66 20 60 6d 61 72 6b 64 6f 77 6e 2d 6d 6f 64 65 27 20 69 73 20 61 76 61 69 6c 61 s...If.`markdown-mode'.is.availa
32fe0 62 6c 65 2c 20 69 74 20 69 73 20 75 73 65 64 2e 20 20 4f 74 68 65 72 77 69 73 65 20 67 70 74 65 ble,.it.is.used...Otherwise.gpte
33000 6c 0a 64 65 66 61 75 6c 74 73 20 74 6f 20 60 74 65 78 74 2d 6d 6f 64 65 27 2e 22 0a 20 20 3a 74 l.defaults.to.`text-mode'."...:t
33020 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 6e 64 6c 65 20 ype.'function)..;;.TODO:.Handle.
33040 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 65 6e 74 2d 73 `prog-mode'.using.the.`comment-s
33060 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 70 74 65 6c 2d tart'.variable.(defcustom.gptel-
33080 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 72 6b 64 6f 77 prompt-prefix-alist...'((markdow
330a0 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 6f 64 65 20 2e n-mode..."###.").....(org-mode..
330c0 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 23 23 23 20 22 ."***.").....(text-mode..."###."
330e0 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 69 78 20 74 6f ))..."String.used.as.a.prefix.to
33100 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 65 20 4c 4c 4d .the.query.being.sent.to.the.LLM
33120 2e 0a 0a 54 68 69 73 20 69 73 20 6d 65 61 6e 74 20 66 6f 72 20 74 68 65 20 75 73 65 72 20 74 6f ...This.is.meant.for.the.user.to
33140 20 64 69 73 74 69 6e 67 75 69 73 68 20 62 65 74 77 65 65 6e 20 71 75 65 72 69 65 73 20 61 6e 64 .distinguish.between.queries.and
33160 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 66 72 6f 6d 20 .responses,.and.is.removed.from.
33180 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 2e 0a 0a 54 68 the.query.before.it.is.sent...Th
331a0 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 72 20 6d 6f 64 is.is.an.alist.mapping.major.mod
331c0 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 54 68 69 73 0a es.to.the.prefix.strings...This.
331e0 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 65 64 20 67 70 is.only.inserted.in.dedicated.gp
33200 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 73 74 20 3a 6b tel.buffers."...:type.'(alist.:k
33220 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 72 69 6e ey-type.symbol.:value-type.strin
33240 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 6e 73 65 2d 70 g))..(defcustom.gptel-response-p
33260 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 6f 64 65 20 2e refix-alist...'((markdown-mode..
33280 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 20 20 28 74 65 ."").....(org-mode..."").....(te
332a0 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 73 65 72 74 65 xt-mode...""))..."String.inserte
332c0 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 74 68 65 20 4c d.before.the.response.from.the.L
332e0 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 65 72 20 LM...This.is.meant.for.the.user.
33300 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 73 20 61 to.distinguish.between.queries.a
33320 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 6c 69 73 74 20 nd.responses...This.is.an.alist.
33340 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 72 65 70 6c 79 mapping.major.modes.to.the.reply
33360 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 6e 6c 79 20 69 .prefix.strings...This.is.only.i
33380 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 62 75 66 66 65 nserted.in.dedicated.gptel.buffe
333a0 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 2e 22 0a 20 20 rs.before.the.AI's.response."...
333c0 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 62 6f 6c 20 3a :type.'(alist.:key-type.symbol.:
333e0 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 73 74 6f 6d 20 value-type.string))..(defcustom.
33400 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 6e 5c 6e 22 0a gptel-response-separator."\n\n".
33420 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 65 73 70 6f 6e .."String.inserted.before.respon
33440 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 61 6e 64 20 61 ses...Also.inserted.before.and.a
33460 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 61 6c 6c 73 2e fter.non-consecutive.tool.calls.
33480 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 74 6f 6d 20 67 "...:type.'string)..(defcustom.g
334a0 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 68 65 74 68 65 ptel-use-header-line.t..."Whethe
334c0 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 65 61 64 65 72 r.`gptel-mode'.should.use.header
334e0 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 6e 2e 0a 0a 57 -line.for.status.information...W
33500 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 65 20 6c 69 6e hen.set.to.nil,.use.the.mode.lin
33520 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 72 6d 61 74 69 e.for.(minimal).status.informati
33540 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 73 73 61 67 65 on.and.the.echo.area.for.message
33560 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 65 74 20 6d 69 s."...:type.'boolean)..;;.Set.mi
33580 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 66 66 65 72 20 nimally.to.avoid.display-buffer.
335a0 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 33 29 0a 28 64 action.alist.conflicts.(#533).(d
335c0 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 65 72 2d 61 63 efcustom.gptel-display-buffer-ac
335e0 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 20 2c 23 27 73 tion.`(nil.(body-function...,#'s
33600 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 6e 20 75 73 65 elect-window))..."The.action.use
33620 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 66 65 72 73 2e d.to.display.gptel.chat.buffers.
33640 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 61 79 65 64 20 ..The.gptel.buffer.is.displayed.
33660 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 61 79 2d 62 75 in.a.window.using....(display-bu
33680 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 75 66 66 65 72 ffer.BUFFER.gptel-display-buffer
336a0 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 20 6f 70 74 69 -action)..The.value.of.this.opti
336c0 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 20 41 4c 49 53 on.has.the.form.(FUNCTION...ALIS
336e0 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 63 74 69 6f 6e T),.where.FUNCTION.is.a.function
33700 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 61 63 68 20 73 .or.a.list.of.functions...Each.s
33720 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 74 77 6f 20 61 uch.function.should.accept.two.a
33740 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 61 79 20 61 6e rguments:.a.buffer.to.display.an
33760 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 20 61 73 20 41 d.an.alist.of.the.same.form.as.A
33780 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 70 29 43 68 6f LIST...See.info.node.`(elisp)Cho
337a0 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 0a 20 20 3a 74 osing.Window'.for.details."...:t
337c0 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 63 75 73 74 6f ype.display-buffer--action-custo
337e0 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 72 6f 77 64 73 m-type)..(defcustom.gptel-crowds
33800 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 28 28 63 61 63 ourced-prompts-file...(let.((cac
33820 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 6c 65 0a 09 09 he-dir.(or.(eval-when-compile...
33840 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 61 63 68 65 2d ..(require.'xdg).....(xdg-cache-
33860 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 20 20 20 75 73 home))........................us
33880 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 65 78 70 61 6e er-emacs-directory))).....(expan
338a0 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 72 63 65 64 2d d-file-name."gptel-crowdsourced-
338c0 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 22 46 69 6c 65 prompts.csv".cache-dir))..."File
338e0 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 20 73 79 73 74 .used.to.store.crowdsourced.syst
33900 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 70 74 73 20 63 em.prompts...These.are.prompts.c
33920 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 20 28 73 65 65 ached.from.an.online.source.(see
33940 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 74 73 2d 75 72 .`gptel--crowdsourced-prompts-ur
33960 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 65 0a 74 72 61 l'),.and.can.be.set.from.the.tra
33980 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 64 65 64 20 62 nsient.menu.interface.provided.b
339a0 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 69 6c 65 29 0a y.`gptel-menu'."...:type.'file).
339c0 0a 3b 3b 20 4d 6f 64 65 6c 20 61 6e 64 20 69 6e 74 65 72 61 63 74 69 6f 6e 20 70 61 72 61 6d 65 .;;.Model.and.interaction.parame
339e0 74 65 72 73 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 64 69 72 65 63 74 69 76 65 73 ters.(defcustom.gptel-directives
33a00 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 65 20 61 20 6c ...'((default......."You.are.a.l
33a20 61 72 67 65 20 6c 61 6e 67 75 61 67 65 20 6d 6f 64 65 6c 20 6c 69 76 69 6e 67 20 69 6e 20 45 6d arge.language.model.living.in.Em
33a40 61 63 73 20 61 6e 64 20 61 20 68 65 6c 70 66 75 6c 20 61 73 73 69 73 74 61 6e 74 2e 20 52 65 73 acs.and.a.helpful.assistant..Res
33a60 70 6f 6e 64 20 63 6f 6e 63 69 73 65 6c 79 2e 22 29 0a 20 20 20 20 28 70 72 6f 67 72 61 6d 6d 69 pond.concisely.").....(programmi
33a80 6e 67 20 2e 20 22 59 6f 75 20 61 72 65 20 61 20 6c 61 72 67 65 20 6c 61 6e 67 75 61 67 65 20 6d ng..."You.are.a.large.language.m
33aa0 6f 64 65 6c 20 61 6e 64 20 61 20 63 61 72 65 66 75 6c 20 70 72 6f 67 72 61 6d 6d 65 72 2e 20 50 odel.and.a.careful.programmer..P
33ac0 72 6f 76 69 64 65 20 63 6f 64 65 20 61 6e 64 20 6f 6e 6c 79 20 63 6f 64 65 20 61 73 20 6f 75 74 rovide.code.and.only.code.as.out
33ae0 70 75 74 20 77 69 74 68 6f 75 74 20 61 6e 79 20 61 64 64 69 74 69 6f 6e 61 6c 20 74 65 78 74 2c put.without.any.additional.text,
33b00 20 70 72 6f 6d 70 74 20 6f 72 20 6e 6f 74 65 2e 22 29 0a 20 20 20 20 28 77 72 69 74 69 6e 67 20 .prompt.or.note.").....(writing.
33b20 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 75 61 67 65 20 ......"You.are.a.large.language.
33b40 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 6e 74 2e 20 52 model.and.a.writing.assistant..R
33b60 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 61 74 20 20 20 espond.concisely.").....(chat...
33b80 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 75 61 67 65 ......."You.are.a.large.language
33ba0 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 61 72 74 6e 65 .model.and.a.conversation.partne
33bc0 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 22 53 79 73 74 r..Respond.concisely."))..."Syst
33be0 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 72 20 74 68 65 em.prompts.or.directives.for.the
33c00 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 6c 69 73 74 20 .LLM...Each.entry.in.this.alist.
33c20 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 72 65 63 74 69 maps.a.symbol.naming.the.directi
33c40 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 20 20 42 79 20 ve.to.the.directive.itself...By.
33c60 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 69 76 default,.gptel.uses.the.directiv
33c80 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 2e 0a 0a 54 6f e.with.the.key.\\+`default'...To
33ca0 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 61 74 20 73 65 .set.the.directive.for.a.chat.se
33cc0 73 73 69 6f 6e 20 69 6e 74 65 72 61 63 74 69 76 65 6c 79 20 63 61 6c 6c 0a 60 67 70 74 65 6c 2d ssion.interactively.call.`gptel-
33ce0 73 65 6e 64 27 20 77 69 74 68 20 61 20 70 72 65 66 69 78 20 61 72 67 75 6d 65 6e 74 2c 20 6f 72 send'.with.a.prefix.argument,.or
33d00 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 72 65 63 74 69 .call.`gptel-menu'...A.\"directi
33d20 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 6d 20 6d 65 73 ve\".is.typically.the.system.mes
33d40 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 6f 6d 70 74 20 sage.(also.called.system.prompt.
33d60 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 20 61 74 20 74 or.system.instruction).sent.at.t
33d80 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 74 20 74 6f 20 he.beginning.of.each.request.to.
33da0 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 20 67 65 6e 65 the.LLM...It.is.used.to.set.gene
33dc0 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 6f 6e 73 20 61 ral.instructions,.expectations.a
33de0 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 27 73 20 69 64 nd.the.overall.tone...gptel's.id
33e00 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 20 67 65 6e 65 ea.of.the.directive.is.more.gene
33e20 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 2d 64 69 72 65 ral...A.directive.in.`gptel-dire
33e40 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 20 69 6e 74 65 ctives'.can.be..-.A.string,.inte
33e60 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 67 65 2e 0a 0a rpreted.as.the.system.message...
33e80 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 66 69 72 73 74 -.A.list.of.strings,.whose.first
33ea0 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 20 20 69 6e 74 .(possibly.nil).element.is...int
33ec0 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 67 65 2c 20 erpreted.as.the.system.message,.
33ee0 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 20 20 61 73 20 and.the.remaining.elements...as.
33f00 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 75 73 65 72 20 (possibly.nil).alternating.user.
33f20 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 20 20 54 68 69 prompts.and.LLM.responses....Thi
33f40 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 68 65 20 69 6e s.can.be.used.to.template.the.in
33f60 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 6e 2e 0a 0a 2d itial.part.of.a.conversation...-
33f80 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 73 74 72 69 6e .A.function.that.returns.a.strin
33fa0 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 6e 74 65 72 70 g.or.a.list.of.strings,...interp
33fc0 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 61 6e 20 62 65 reted.as.the.above...This.can.be
33fe0 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 72 61 74 65 20 .used.to.dynamically...generate.
34000 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 76 65 72 73 61 a.system.message.and/or.conversa
34020 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 65 20 63 75 72 tion.template.based.on...the.cur
34040 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 6e 69 74 69 6f rent.context...See.the.definitio
34060 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 63 74 69 76 65 n.of...`gptel--rewrite-directive
34080 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 20 20 3a 73 61 -default'.for.an.example."...:sa
340a0 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 20 3a 6b 65 79 fe.#'always...:type.'(alist.:key
340c0 2d 74 79 70 65 20 73 79 6d 62 6f 6c 20 3a 76 61 6c 75 65 2d 74 79 70 65 20 73 74 72 69 6e 67 29 -type.symbol.:value-type.string)
340e0 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 6d 61 78 2d 74 6f 6b 65 6e 73 20 6e )..(defcustom.gptel-max-tokens.n
34100 69 6c 0a 20 20 22 4d 61 78 20 74 6f 6b 65 6e 73 20 70 65 72 20 72 65 73 70 6f 6e 73 65 2e 0a 0a il..."Max.tokens.per.response...
34120 54 68 69 73 20 69 73 20 72 6f 75 67 68 6c 79 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 77 6f This.is.roughly.the.number.of.wo
34140 72 64 73 20 69 6e 20 74 68 65 20 72 65 73 70 6f 6e 73 65 2e 20 20 31 30 30 2d 33 30 30 20 69 73 rds.in.the.response...100-300.is
34160 20 61 0a 72 65 61 73 6f 6e 61 62 6c 65 20 72 61 6e 67 65 20 66 6f 72 20 73 68 6f 72 74 20 61 6e .a.reasonable.range.for.short.an
34180 73 77 65 72 73 2c 20 34 30 30 20 6f 72 20 6d 6f 72 65 20 66 6f 72 20 6c 6f 6e 67 65 72 0a 72 65 swers,.400.or.more.for.longer.re
341a0 73 70 6f 6e 73 65 73 2e 0a 0a 54 6f 20 73 65 74 20 74 68 65 20 74 61 72 67 65 74 20 74 6f 6b 65 sponses...To.set.the.target.toke
341c0 6e 20 63 6f 75 6e 74 20 66 6f 72 20 61 20 63 68 61 74 20 73 65 73 73 69 6f 6e 20 69 6e 74 65 72 n.count.for.a.chat.session.inter
341e0 61 63 74 69 76 65 6c 79 0a 63 61 6c 6c 20 60 67 70 74 65 6c 2d 73 65 6e 64 27 20 77 69 74 68 20 actively.call.`gptel-send'.with.
34200 61 20 70 72 65 66 69 78 20 61 72 67 75 6d 65 6e 74 2e 22 0a 20 20 3a 73 61 66 65 20 23 27 61 6c a.prefix.argument."...:safe.#'al
34220 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 75 6d 20 3a 74 ways...:type.'(choice.(natnum.:t
34240 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 20 20 20 20 20 ag."Specify.Token.count").......
34260 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 61 75 6c 74 22 ...........(const.:tag."Default"
34280 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 65 6d 70 65 72 .nil)))..(defcustom.gptel-temper
342a0 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 22 20 6f 66 20 ature.1.0..."\"Temperature\".of.
342c0 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 61 20 6e 75 6d the.LLM.response...This.is.a.num
342e0 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 74 20 63 6f 6e ber.between.0.0.and.2.0.that.con
34300 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 20 72 65 73 70 trols.the.randomness.of.the.resp
34320 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 73 74 20 72 61 onse,.with.2.0.being.the.most.ra
34340 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 72 65 20 66 6f ndom...To.set.the.temperature.fo
34360 72 20 61 20 63 68 61 74 20 73 65 73 73 69 6f 6e 20 69 6e 74 65 72 61 63 74 69 76 65 6c 79 20 63 r.a.chat.session.interactively.c
34380 61 6c 6c 0a 60 67 70 74 65 6c 2d 73 65 6e 64 27 20 77 69 74 68 20 61 20 70 72 65 66 69 78 20 61 all.`gptel-send'.with.a.prefix.a
343a0 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 76 29 20 28 6f rgument."...:safe.(lambda.(v).(o
343c0 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 3a 74 79 70 65 r.(null.v).(numberp.v)))...:type
343e0 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 70 65 72 61 74 .'(choice.(number.:tag."Temperat
34400 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 20 20 28 63 6f ure.value")..................(co
34420 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 29 29 0a 0a 28 nst.:tag."Use.default".nil)))..(
34440 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 20 22 57 68 65 defcustom.gptel-cache.nil..."Whe
34460 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 65 71 75 65 73 ther.the.LLM.should.cache.reques
34480 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 64 73 20 63 61 t.content...Some.LLM.backends.ca
344a0 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 62 79 20 67 70 n.cache.content.sent.to.it.by.gp
344c0 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 20 69 6e 63 6c tel,.so.that.only.the.newly.incl
344e0 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 20 74 6f 20 62 uded.part.of.the.text.needs.to.b
34500 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 6f 6e 76 65 72 e.processed.on.subsequent.conver
34520 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 20 69 6e 20 66 sation.turns...This.results.in.f
34540 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 61 70 65 72 20 aster.and.significantly.cheaper.
34560 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 72 20 63 6c 69 processing...NOTE:.Manual.or.cli
34580 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 20 63 75 72 72 ent-configurable.caching.is.curr
345a0 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 20 41 6e 74 68 ently.supported.only.by.the.Anth
345c0 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 65 6c 2d 61 6e ropic.API.and.thus.the.`gptel-an
345e0 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 69 61 62 6c 65 thropic'.backend...This.variable
34600 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 69 6f 72 20 6f .has.no.effect.on.the.behavior.o
34620 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 69 61 62 6c 65 f.other.backends...This.variable
34640 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 65 20 71 75 65 .controls.which.parts.of.the.que
34660 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 62 65 20 74 68 ry.will.be.cached,.and.can.be.th
34680 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 20 65 76 65 72 e.symbols.t.or.nil.to.cache.ever
346a0 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 65 6c 79 2e 20 ything.or.nothing.respectively..
346c0 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 6d 62 6f 6c 73 It.can.also.be.a.list.of.symbols
346e0 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 61 74 69 6f 6e :..-.message:.Cache.conversation
34700 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 68 65 20 73 79 .messages.-.system:.Cache.the.sy
34720 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 74 6f 6f 6c 20 stem.message.-.tool:.Cache.tool.
34740 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 74 69 6e 67 20 definitions..Examples:..Setting.
34760 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 20 63 61 63 68 it.to.(message.system).will.cach
34780 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 65 20 63 6f 6e e.the.system.message.and.the.con
347a0 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 20 74 6f 20 28 versation.text...Setting.it.to.(
347c0 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 61 63 68 65 20 message.system.tool).will.cache.
347e0 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 61 73 20 74 2e everything.and.is.the.same.as.t.
34800 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
34820 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 20 74 29 0a 20 nst.:tag."Cache.everything".t)..
34840 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 74 20 63 61 63 .........(const.:tag."Do.not.cac
34860 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 73 79 6d 62 6f he".nil)...........(repeat.symbo
34880 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 61 72 20 67 70 l))...:group.'gptel)..(defvar.gp
348a0 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 6f 6e 73 74 20 tel--known-backends)..(defconst.
348c0 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 70 74 2d 34 6f gptel--openai-models...'((gpt-4o
348e0 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 64 20 6d 6f 64 ......:description."Advanced.mod
34900 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 65 72 20 26 20 el.for.complex.tasks;.cheaper.&.
34920 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 20 3a 63 61 70 faster.than.GPT-Turbo"......:cap
34940 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
34960 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
34980 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
349a0 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 32 e/webp")......:context-window.12
349c0 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 20 20 3a 6f 75 8......:input-cost.2.50......:ou
349e0 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 61 74 65 20 22 tput-cost.10......:cutoff-date."
34a00 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 20 20 20 20 20 2023-10").....(gpt-4o-mini......
34a20 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 20 66 61 :description."Cheap.model.for.fa
34a40 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 62 6c 65 st.tasks;.cheaper.&.more.capable
34a60 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 61 70 61 62 .than.GPT-3.5.Turbo"......:capab
34a80 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 6c ilities.(media.tool-use.json.url
34aa0 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"
34ac0 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/
34ae0 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 0a webp")......:context-window.128.
34b00 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 70 .....:input-cost.0.15......:outp
34b20 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 61 74 65 20 22 ut-cost.0.60......:cutoff-date."
34b40 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 20 3a 64 65 73 2023-10").....(gpt-4.1......:des
34b60 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 20 63 6f 6d cription."Flagship.model.for.com
34b80 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 69 65 73 20 28 plex.tasks"......:capabilities.(
34ba0 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 6d media.tool-use.json.url)......:m
34bc0 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
34be0 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 20 ng"."image/gif"."image/webp")...
34c00 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 69 6e ...:context-window.1024......:in
34c20 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 6f 73 74 20 38 put-cost.2.0......:output-cost.8
34c40 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 30 35 22 29 0a .0......:cutoff-date."2024-05").
34c60 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 64 65 73 63 72 ....(gpt-4.5-preview......:descr
34c80 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 2d 34 2e 31 20 iption."DEPRECATED:.Use.gpt-4.1.
34ca0 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 20 28 6d 65 64 instead"......:capabilities.(med
34cc0 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 2d 74 79 70 65 ia.tool-use.url)......:mime-type
34ce0 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
34d00 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
34d20 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 74 20 ext-window.128......:input-cost.
34d40 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 20 20 20 3a 63 75......:output-cost.150......:c
34d60 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 67 70 74 2d 34 utoff-date."2023-10").....(gpt-4
34d80 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 42 61 6c 61 6e .1-mini......:description."Balan
34da0 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 65 65 64 20 61 ce.between.intelligence,.speed.a
34dc0 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 20 28 6d 65 64 nd.cost"......:capabilities.(med
34de0 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 6d 69 6d 65 ia.tool-use.json.url)......:mime
34e00 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"
34e20 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")......
34e40 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 69 6e 70 75 74 :context-window.1024......:input
34e60 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 20 31 2e 36 29 -cost.0.4......:output-cost.1.6)
34e80 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 73 63 72 69 70 .....(gpt-4.1-nano......:descrip
34ea0 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 66 65 63 74 69 tion."Fastest,.most.cost-effecti
34ec0 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 61 62 69 6c 69 ve.GPT-4.1.model"......:capabili
34ee0 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)..
34f00 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
34f20 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
34f40 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 32 34 0a 20 20 p")......:context-window.1024...
34f60 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 75 74 70 75 74 ...:input-cost.0.10......:output
34f80 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 65 20 22 32 30 -cost.0.40......:cutoff-date."20
34fa0 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 20 20 20 3a 64 24-05").....(gpt-4-turbo......:d
34fc0 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 6e 74 65 6c 6c escription."Previous.high-intell
34fe0 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 69 74 69 65 73 igence.model"......:capabilities
35000 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
35020 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"
35040 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")......
35060 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-
35080 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 30 0a 20 20 20 cost.10......:output-cost.30....
350a0 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 20 20 20 28 67 ..:cutoff-date."2023-11").....(g
350c0 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 2d 34 20 73 6e pt-4......:description."GPT-4.sn
350e0 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 69 6d 70 72 6f apshot.from.June.2023.with.impro
35100 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 74 22 0a 20 20 ved.function.calling.support"...
35120 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
35140 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
35160 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 61 20 75 72 6c ")......:capabilities.(media.url
35180 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 32 0a 20 20 20 )......:context-window.8.192....
351a0 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 75 74 2d 63 6f ..:input-cost.30......:output-co
351c0 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 2d 31 31 st.60......:cutoff-date."2023-11
351e0 22 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 ").....(o1......:description."Re
35200 61 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 asoning.model.designed.to.solve.
35220 68 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 hard.problems.across.domains"...
35240 20 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 ...:capabilities.(media.reasonin
35260 67 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 g)......:mime-types.("image/jpeg
35280 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
352a0 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 32 30 30 /webp")......:context-window.200
352c0 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 74 70 75 ......:input-cost.15......:outpu
352e0 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 32 t-cost.60......:cutoff-date."202
35300 33 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 3-10").....(o1-mini......:descri
35320 70 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 ption."Faster.and.cheaper.reason
35340 69 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 ing.model.good.at.coding,.math,.
35360 61 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 and.science"......:context-windo
35380 77 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 w.128......:input-cost.3......:o
353a0 75 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 utput-cost.12......:cutoff-date.
353c0 22 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 "2023-10"......:capabilities.(no
353e0 73 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 system.reasoning)).....(o3......
35400 3a 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 :description."Well-rounded.and.p
35420 6f 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 owerful.model.across.domains"...
35440 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 67 20 6d 65 64 69 ...:capabilities.(reasoning.medi
35460 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 6d 69 6d 65 2d a.tool-use.json.url)......:mime-
35480 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".
354a0 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 3a "image/gif"."image/webp")......:
354c0 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 2d 63 context-window.200......:input-c
354e0 6f 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 ost.2......:output-cost.8......:
35500 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 6f 33 2d 6d cutoff-date."2024-05").....(o3-m
35520 69 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 ini......:description."High.inte
35540 6c 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 lligence.at.the.same.cost.and.la
35560 74 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 tency.targets.of.o1-mini"......:
35580 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 2d 63 context-window.200......:input-c
355a0 6f 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 ost.1.10......:output-cost.4.40.
355c0 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 30 22 0a 20 20 20 20 .....:cutoff-date."2023-10".....
355e0 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 74 6f 6f 6c 2d 75 .:capabilities.(reasoning.tool-u
35600 73 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 se.json)).....(o4-mini......:des
35620 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
35640 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
35660 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"......
35680 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
356a0 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
356c0 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
356e0 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
35700 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
35720 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....
35740 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 67 ..:cutoff-date."2024-05").....(g
35760 70 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 pt-3.5-turbo......:description."
35780 4d 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 More.expensive.&.less.capable.th
357a0 61 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 an.GPT-4o-mini;.use.that.instead
357c0 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 73 65 29 0a "......:capabilities.(tool-use).
357e0 20 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 .....:context-window.16.358.....
35800 20 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 .:input-cost.0.50......:output-c
35820 6f 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 ost.1.50......:cutoff-date."2021
35840 2d 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 -09").....(gpt-3.5-turbo-16k....
35860 20 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 ..:description."More.expensive.&
35880 20 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 .less.capable.than.GPT-4o-mini;.
358a0 75 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 use.that.instead"......:capabili
358c0 74 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 ties.(tool-use)......:context-wi
358e0 6e 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 ndow.16.385......:input-cost.3..
35900 20 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 ....:output-cost.4......:cutoff-
35920 64 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 date."2021-09"))..."List.of.avai
35940 6c 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 lable.OpenAI.models.and.associat
35960 65 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 ed.properties..Keys:..-.`:descri
35980 70 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 ption':.a.brief.description.of.t
359a0 68 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 he.model...-.`:capabilities':.a.
359c0 6c 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 list.of.capabilities.supported.b
359e0 79 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 y.the.model...-.`:mime-types':.a
35a00 20 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 .list.of.supported.MIME.types.fo
35a20 72 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 r.media.files...-.`:context-wind
35a40 6f 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 ow':.the.context.window.size,.in
35a60 20 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 .thousands.of.tokens...-.`:input
35a80 2d 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 -cost':.the.input.cost,.in.US.do
35aa0 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 2d 20 60 3a 6f llars.per.million.tokens...-.`:o
35ac0 75 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 utput-cost':.the.output.cost,.in
35ae0 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 73 2e 0a .US.dollars.per.million.tokens..
35b00 0a 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 .-.`:cutoff-date':.the.knowledge
35b20 20 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 .cutoff.date...-.`:request-param
35b40 73 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 s':.a.plist.of.additional.reques
35b60 74 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 t.parameters.to...include.when.u
35b80 73 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 sing.this.model...Information.ab
35ba0 6f 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 out.the.OpenAI.models.was.obtain
35bc0 65 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 ed.from.the.following.sources:..
35be0 2d 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 -.<https://platform.openai.com/d
35c00 6f 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 ocs/pricing>.-.<https://platform
35c20 2e 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 .openai.com/docs/models>")..(def
35c40 63 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 custom.gptel-model.'gpt-4o-mini.
35c60 20 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 ..(concat...."Model.for.chat...T
35c80 68 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 he.name.of.the.model,.as.a.symbo
35ca0 6c 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 l...This.is.the.name.as.expected
35cc0 0a 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 .by.the.LLM.provider's.API...To.
35ce0 73 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 set.the.model.for.a.chat.session
35d00 20 69 6e 74 65 72 61 63 74 69 76 65 6c 79 20 63 61 6c 6c 0a 60 67 70 74 65 6c 2d 73 65 6e 64 27 .interactively.call.`gptel-send'
35d20 20 77 69 74 68 20 61 20 70 72 65 66 69 78 20 61 72 67 75 6d 65 6e 74 2e 22 29 0a 20 20 3a 73 61 .with.a.prefix.argument.")...:sa
35d40 66 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 fe.#'always...:type.`(choice....
35d60 28 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 (symbol.:tag."Specify.model.name
35d80 22 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 ")....,@(mapcar.(lambda.(model).
35da0 09 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 ........(list.'const.:tag.(symbo
35dc0 6c 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 l-name.(car.model))........(car.
35de0 6d 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 model))).......gptel--openai-mod
35e00 65 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 els)))..(defvar.gptel--openai...
35e20 28 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 (gptel-make-openai......."ChatGP
35e40 54 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 T".....:key.'gptel-api-key.....:
35e60 73 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 stream.t.....:models.gptel--open
35e80 61 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 ai-models))..(defcustom.gptel-ba
35ea0 63 6b 65 6e 64 20 67 70 74 65 6c 2d 2d 6f 70 65 6e 61 69 0a 20 20 22 4c 4c 4d 20 62 61 63 6b 65 ckend.gptel--openai..."LLM.backe
35ec0 6e 64 20 74 6f 20 75 73 65 2e 0a 0a 54 68 69 73 20 69 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 nd.to.use...This.is.the.default.
35ee0 5c 22 62 61 63 6b 65 6e 64 5c 22 2c 20 61 6e 20 6f 62 6a 65 63 74 20 6f 66 20 74 79 70 65 0a 60 \"backend\",.an.object.of.type.`
35f00 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 27 20 63 6f 6e 74 61 69 6e 69 6e 67 20 63 6f 6e 6e 65 63 gptel-backend'.containing.connec
35f20 74 69 6f 6e 2c 20 61 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 20 61 6e 64 20 6d 6f 64 65 6c 0a 69 tion,.authentication.and.model.i
35f40 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a 0a 41 20 62 61 63 6b 65 6e 64 20 66 6f 72 20 43 68 61 74 47 nformation...A.backend.for.ChatG
35f60 50 54 20 69 73 20 70 72 65 2d 64 65 66 69 6e 65 64 20 62 79 20 67 70 74 65 6c 2e 20 20 42 61 63 PT.is.pre-defined.by.gptel...Bac
35f80 6b 65 6e 64 73 20 66 6f 72 0a 6f 74 68 65 72 20 4c 4c 4d 20 70 72 6f 76 69 64 65 72 73 20 28 6c kends.for.other.LLM.providers.(l
35fa0 6f 63 61 6c 20 6f 72 20 72 65 6d 6f 74 65 29 20 6d 61 79 20 62 65 20 63 6f 6e 73 74 72 75 63 74 ocal.or.remote).may.be.construct
35fc0 65 64 20 75 73 69 6e 67 0a 6f 6e 65 20 6f 66 20 74 68 65 20 61 76 61 69 6c 61 62 6c 65 20 62 61 ed.using.one.of.the.available.ba
35fe0 63 6b 65 6e 64 20 63 72 65 61 74 69 6f 6e 20 66 75 6e 63 74 69 6f 6e 73 3a 0a 2d 20 60 67 70 74 ckend.creation.functions:.-.`gpt
36000 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 27 0a 2d 20 60 67 70 74 65 6c 2d 6d 61 6b 65 2d 61 7a el-make-openai'.-.`gptel-make-az
36020 75 72 65 27 0a 2d 20 60 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 6c 6c 61 6d 61 27 0a 2d 20 60 67 70 ure'.-.`gptel-make-ollama'.-.`gp
36040 74 65 6c 2d 6d 61 6b 65 2d 67 70 74 34 61 6c 6c 27 0a 2d 20 60 67 70 74 65 6c 2d 6d 61 6b 65 2d tel-make-gpt4all'.-.`gptel-make-
36060 67 65 6d 69 6e 69 27 0a 53 65 65 20 74 68 65 69 72 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 gemini'.See.their.documentation.
36080 66 6f 72 20 6d 6f 72 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 6e 64 20 74 68 65 20 70 61 63 for.more.information.and.the.pac
360a0 6b 61 67 65 0a 52 45 41 44 4d 45 20 66 6f 72 20 65 78 61 6d 70 6c 65 73 2e 22 0a 20 20 3a 73 61 kage.README.for.examples."...:sa
360c0 66 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 fe.#'always...:type.`(choice....
360e0 20 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 .......(const.:tag."ChatGPT".,gp
36100 74 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 tel--openai)...........(restrict
36120 65 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 ed-sexp.:match-alternatives.(gpt
36140 65 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 el-backend-p.'nil).......:tag."O
36160 74 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 ther.backend")))..(defvar.gptel-
36180 65 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 expert-commands.nil..."Whether.e
361a0 78 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 xperimental.gptel.options.should
361c0 20 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 .be.enabled...This.opens.up.adva
361e0 6e 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 nced.options.in.`gptel-menu'.").
36200 0a 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 .(defvar-local.gptel--bounds.nil
36220 29 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 ).(put.'gptel--bounds.'safe-loca
36240 6c 2d 76 61 72 69 61 62 6c 65 20 23 27 61 6c 77 61 79 73 29 0a 0a 28 64 65 66 76 61 72 20 67 70 l-variable.#'always)..(defvar.gp
36260 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 69 6c 29 0a 28 tel--num-messages-to-send.nil).(
36280 70 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 put.'gptel--num-messages-to-send
362a0 20 27 73 61 66 65 2d 6c 6f 63 61 6c 2d 76 61 72 69 61 62 6c 65 20 23 27 61 6c 77 61 79 73 29 0a .'safe-local-variable.#'always).
362c0 0a 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 .(defcustom.gptel-log-level.nil.
362e0 20 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 .."Logging.level.for.gptel...Thi
36300 73 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 s.is.one.of.nil.or.the.symbols.i
36320 6e 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 nfo.and.debug:..nil:.Don't.log.r
36340 65 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 esponses.info:.Log.request.and.r
36360 65 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 esponse.bodies.debug:.Log.reques
36380 74 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 t/response.bodies,.headers.and.a
363a0 6c 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 ll.other........connection.setti
363c0 6e 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 ngs...When.non-nil,.information.
363e0 69 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 is.logged.to.`gptel--log-buffer-
36400 6e 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 name',.which.see."...:type.'(cho
36420 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 4e 6f 20 6c 6f ice...........(const.:tag."No.lo
36440 67 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 gging".nil)...........(const.:ta
36460 67 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 g."Limited".info)...........(con
36480 73 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 st.:tag."Full".debug)))..(defcus
364a0 74 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 tom.gptel-track-response.t..."Di
364c0 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 73 73 61 67 65 73 20 stinguish.between.user.messages.
364e0 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 63 72 65 61 74 69 6e and.LLM.responses...When.creatin
36500 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 20 4c 4c 4d 2c 20 67 g.a.prompt.to.send.to.the.LLM,.g
36520 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 6e 20 74 65 78 74 20 ptel.distinguishes.between.text.
36540 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 61 73 74 20 4c 4c 4d entered.by.the.user.and.past.LLM
36560 20 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 .responses...This.distinction.is
36580 20 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 .necessary.for.back-and-forth.co
365a0 6e 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 nversation.with.an.LLM...In.regu
365c0 6c 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 lar.Emacs.buffers.you.can.turn.t
365e0 68 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 his.behavior.off.by.setting.`gpt
36600 65 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 el-track-response'.to.nil...All.
36620 74 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 text,.including.past.LLM.respons
36640 65 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 es,.is.then.treated.as.user.inpu
36660 74 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 t.when.sending.queries...This.va
36680 72 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 riable.has.no.effect.in.dedicate
366a0 64 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 d.chat.buffers.(buffers.with.`gp
366c0 74 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 tel-mode'.enabled),.where.user.p
366e0 72 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 rompts.and.responses.are.always.
36700 68 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 handled.separately."...:type.'bo
36720 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 74 72 61 63 6b 2d 6d olean)..(defcustom.gptel-track-m
36740 65 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 edia.nil..."Whether.supported.me
36760 64 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 dia.in.chat.buffers.should.be.se
36780 6e 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 nt...When.the.active.`gptel-mode
367a0 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
367c0 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.
367e0 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 20 20 54 6f 20 in.chat.buffers.to.the.LLM...To.
36800 75 73 65 0a 74 68 69 73 2c 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 73 74 65 70 73 20 61 72 use.this,.the.following.steps.ar
36820 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 6b 2d 6d 65 64 e.required...1..`gptel-track-med
36840 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 62 65 20 6e 6f ia'.(this.variable).should.be.no
36860 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 6f 76 69 64 65 n-nil..2..The.LLM.should.provide
36880 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 2e 20 20 43 75 .vision.or.document.support...Cu
368a0 72 72 65 6e 74 6c 79 2c 0a 6f 6e 6c 79 20 74 68 65 20 4f 70 65 6e 41 49 2c 20 41 6e 74 68 72 6f rrently,.only.the.OpenAI,.Anthro
368c0 70 69 63 20 61 6e 64 20 4f 6c 6c 61 6d 61 20 41 50 49 73 20 61 72 65 20 73 75 70 70 6f 72 74 65 pic.and.Ollama.APIs.are.supporte
368e0 64 2e 20 20 53 65 65 0a 74 68 65 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 60 67 70 d...See.the.documentation.of.`gp
36900 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 27 2c 20 60 67 70 74 65 6c 2d 6d 61 6b 65 2d 61 6e tel-make-openai',.`gptel-make-an
36920 74 68 72 6f 70 69 63 27 0a 61 6e 64 20 60 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 6c 6c 61 6d 61 27 thropic'.and.`gptel-make-ollama'
36940 20 72 65 73 70 2e 20 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 .resp..for.details.on.how.to.spe
36960 63 69 66 79 20 6d 65 64 69 61 0a 73 75 70 70 6f 72 74 20 66 6f 72 20 6d 6f 64 65 6c 73 2e 0a 0a cify.media.support.for.models...
36980 33 2e 20 4f 6e 6c 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 3..Only.\"standalone\".links.in.
369a0 63 68 61 74 20 62 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 chat.buffers.are.considered..The
369c0 73 65 20 61 72 65 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 se.are.links.on.their.own.line.w
369e0 69 74 68 20 6e 6f 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 ith.no.surrounding.text..Further
36a00 3a 0a 0a 2d 20 49 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 :..-.In.Org.mode,.only.files.or.
36a20 55 52 4c 73 20 6f 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 URLs.of.the.form...[[/path/to/me
36a40 64 69 61 5d 5b 62 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 dia][bracket.links]].and.<angle/
36a60 6c 69 6e 6b 2f 70 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 link/path>...are.sent...-.In.Mar
36a80 6b 64 6f 77 6e 20 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 kdown.mode,.only.files.or.URLS.o
36aa0 66 20 74 68 65 20 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 f.the.form...[bracket.link](/pat
36ac0 68 2f 74 6f 2f 6d 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 h/to/media).and.<angle/link/path
36ae0 3e 0a 20 20 61 72 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 >...are.sent...This.option.has.n
36b00 6f 20 65 66 66 65 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 o.effect.in.non-chat.buffers...T
36b20 6f 20 69 6e 63 6c 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 o.include.media.(including.image
36b40 73 29 20 6d 6f 72 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 s).more.generally,.use.`gptel-ad
36b60 64 27 2e 22 0a 20 20 3a 74 79 70 65 20 27 62 6f 6f 6c 65 61 6e 29 0a 0a 28 64 65 66 63 75 73 74 d'."...:type.'boolean)..(defcust
36b80 6f 6d 20 67 70 74 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 om.gptel-use-context.'system..."
36ba0 57 68 65 72 65 20 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 Where.in.the.request.to.inject.g
36bc0 70 74 65 6c 27 73 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 ptel's.additional.context...gpte
36be0 6c 20 61 6c 77 61 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 l.always.includes.the.active.reg
36c00 69 6f 6e 20 6f 72 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 ion.or.the.buffer.up.to.the.curs
36c20 6f 72 20 69 6e 20 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 or.in.the.request.to.the.LLM...A
36c40 64 64 69 74 69 6f 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 dditionally,.you.can.add.other.b
36c60 75 66 66 65 72 73 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 uffers.or.their.regions.to.the.c
36c80 6f 6e 74 65 78 74 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 ontext.with.`gptel-add-context',
36ca0 20 6f 72 20 66 72 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 .or.from.gptel's.menu...This.dat
36cc0 61 20 77 69 6c 6c 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 a.will.be.sent.with.every.reques
36ce0 74 2e 0a 0a 54 68 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 t...This.option.controls.whether
36d00 20 61 6e 64 20 77 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 .and.where.this.additional.conte
36d20 78 74 20 69 73 0a 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 xt.is.included.in.the.request...
36d40 43 75 72 72 65 6e 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 Currently.supported.options.are:
36d60 0a 0a 20 20 20 20 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 ......nil.....-.Do.not.use.the.c
36d80 6f 6e 74 65 78 74 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 ontext......system..-.Include.th
36da0 65 20 63 6f 6e 74 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 e.context.with.the.system.messag
36dc0 65 2e 0a 20 20 20 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 e......user....-.Include.the.con
36de0 74 65 78 74 20 77 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 text.with.the.user.prompt."...:g
36e00 72 6f 75 70 20 27 67 70 74 65 6c 0a 20 20 3a 74 79 70 65 20 27 28 63 68 6f 69 63 65 0a 20 20 20 roup.'gptel...:type.'(choice....
36e20 20 20 20 20 20 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 .......(const.:tag."Don't.includ
36e40 65 20 63 6f 6e 74 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 e.context".nil)...........(const
36e60 20 3a 74 61 67 20 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 .:tag."With.system.message".syst
36e80 65 6d 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 57 69 74 68 20 em)...........(const.:tag."With.
36ea0 75 73 65 72 20 70 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 user.prompt".user)))..(defcustom
36ec0 20 67 70 74 65 6c 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 .gptel-include-reasoning.t..."Ho
36ee0 77 20 74 6f 20 68 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 w.to.handle.LLM.reasoning.or.\"t
36f00 68 69 6e 6b 69 6e 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 hinking\".text.blocks...Some.LLM
36f20 73 20 69 6e 63 6c 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 s.include.in.their.response.a.\"
36f40 74 68 69 6e 6b 69 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 thinking\".section...This.text.i
36f60 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 20 4c 4c 4d 27 73 mproves.the.quality.of.the.LLM's
36f80 20 66 69 6e 61 6c 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 .final.output,.but.may.not.be.in
36fa0 74 65 72 65 73 74 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 teresting.to.you.by.itself...Sup
36fc0 70 6f 72 74 65 64 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 ported.options.are.the.symbols..
36fe0 20 20 20 20 74 20 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 ....t.......-.Include.with.the.r
37000 65 73 70 6f 6e 73 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 esponse,.the.default.....nil....
37020 20 2d 20 44 6f 20 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 .-.Do.not.include.....ignore..-.
37040 49 6e 63 6c 75 64 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 Include.with.the.response.but.ig
37060 6e 6f 72 65 20 6f 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 nore.on.subsequent..............
37080 20 63 6f 6e 76 65 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 .conversation.turns..It.can.also
370a0 20 62 65 20 61 20 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 .be.a.string.naming.a.buffer,.in
370c0 20 77 68 69 63 68 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 .which.case.the.reasoning.text.w
370e0 69 6c 6c 20 62 65 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 ill.be.inserted.at.the.end.of.th
37100 61 74 20 62 75 66 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 at.buffer."...:group.'gptel...:t
37120 79 70 65 20 27 28 63 68 6f 69 63 65 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 ype.'(choice...........(const.:t
37140 61 67 20 22 49 6e 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 ag."Include.with.response".t)...
37160 20 20 20 20 20 20 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 ........(const.:tag."Don't.inclu
37180 64 65 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 22 de".nil)...........(const.:tag."
371a0 49 6e 63 6c 75 64 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 Include.but.ignore".ignore).....
371c0 20 20 20 20 20 20 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 ......(string.:tag."Include.in.b
371e0 75 66 66 65 72 22 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 uffer")))..(defvar-local.gptel--
37200 6f 6c 64 2d 68 65 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 old-header-line.nil)..(defvar.gp
37220 74 65 6c 2d 63 6f 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 tel-context--alist.nil..."List.o
37240 66 20 67 70 74 65 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 f.gptel's.context.sources...Each
37260 20 65 6e 74 72 79 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 .entry.is.of.the.form..(buffer..
37280 20 28 6f 76 65 72 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 .(overlay1.overlay2....)).or..(\
372a0 22 70 61 74 68 2f 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 "path/to/file\").")..(defvar.gpt
372c0 65 6c 2d 2d 72 65 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 el--request-alist.nil..."Alist.o
372e0 66 20 61 63 74 69 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 f.active.gptel.requests..Each.en
37300 74 72 79 20 68 61 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 try.has.the.form.(PROCESS...(FSM
37320 20 41 42 4f 52 54 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 .ABORT-CLOSURE)).If.the.ABORT-CL
37340 4f 53 55 52 45 20 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 OSURE.is.called,.it.must.abort.t
37360 68 65 20 50 52 4f 43 45 53 53 2e 22 29 0a 0a 0c 0a 3b 3b 3b 20 55 74 69 6c 69 74 79 20 66 75 6e he.PROCESS.")....;;;.Utility.fun
37380 63 74 69 6f 6e 73 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 61 70 69 2d 6b 65 79 2d 66 72 6f ctions..(defun.gptel-api-key-fro
373a0 6d 2d 61 75 74 68 2d 73 6f 75 72 63 65 20 28 26 6f 70 74 69 6f 6e 61 6c 20 68 6f 73 74 20 75 73 m-auth-source.(&optional.host.us
373c0 65 72 29 0a 20 20 22 4c 6f 6f 6b 75 70 20 61 70 69 20 6b 65 79 20 69 6e 20 74 68 65 20 61 75 74 er)..."Lookup.api.key.in.the.aut
373e0 68 20 73 6f 75 72 63 65 2e 0a 42 79 20 64 65 66 61 75 6c 74 2c 20 74 68 65 20 4c 4c 4d 20 68 6f h.source..By.default,.the.LLM.ho
37400 73 74 20 66 6f 72 20 74 68 65 20 61 63 74 69 76 65 20 62 61 63 6b 65 6e 64 20 69 73 20 75 73 65 st.for.the.active.backend.is.use
37420 64 20 61 73 20 48 4f 53 54 2c 0a 61 6e 64 20 5c 22 61 70 69 6b 65 79 5c 22 20 61 73 20 55 53 45 d.as.HOST,.and.\"apikey\".as.USE
37440 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 20 20 20 R."...(if-let*.((secret.........
37460 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 20 28 63 .....(plist-get...............(c
37480 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 20 20 20 ar.(auth-source-search..........
374a0 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 74 65 6c ...........:host.(or.host.(gptel
374c0 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 0a 20 20 -backend-host.gptel-backend))...
374e0 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 73 65 72 ..................:user.(or.user
37500 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 20 20 3a ."apikey").....................:
37520 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 20 20 20 require.'(:secret)))............
37540 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 74 69 6f ...:secret))).......(if.(functio
37560 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 63 6f 64 np.secret)...........(encode-cod
37580 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 75 74 66 ing-string.(funcall.secret).'utf
375a0 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 2d 65 72 -8).........secret).....(user-er
375c0 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 20 69 6e ror."No.`gptel-api-key'.found.in
375e0 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 45 20 53 .the.auth.source")))..;;.FIXME.S
37600 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 2d 6b 65 hould.we.utf-8.encode.the.api-ke
37620 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 2d 6b 65 y.here?.(defun.gptel--get-api-ke
37640 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 6b 65 79 y.(&optional.key)..."Get.api.key
37660 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 2d 6b 65 .from.KEY,.or.from.`gptel-api-ke
37680 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 6f 72 20 y'."...(when-let*.((key-sym.(or.
376a0 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 62 61 63 key.(gptel-backend-key.gptel-bac
376c0 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 2d 73 79 kend)))).....(cl-typecase.key-sy
376e0 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 6d 2d 72 m.......(function.(string-trim-r
37700 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 5d 2b 22 ight.(funcall.key-sym)."[\n\r]+"
37720 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 2d 72 69 )).......(string.(string-trim-ri
37740 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 20 28 73 ght.key-sym."[\n\r]+")).......(s
37760 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 76 61 6c ymbol.(if-let*.((val.(symbol-val
37780 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 20 20 20 ue.key-sym)))...................
377a0 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 20 20 20 (gptel--get-api-key.val)........
377c0 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 65 79 27 .........(error."`gptel-api-key'
377e0 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 72 72 6f .is.not.valid"))).......(t.(erro
37800 72 20 22 60 67 70 74 65 6c 2d 61 70 69 2d 6b 65 79 27 20 69 73 20 6e 6f 74 20 76 61 6c 69 64 22 r."`gptel-api-key'.is.not.valid"
37820 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 6d 62 65 )))))..(defsubst.gptel--to-numbe
37840 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 6d 62 65 r.(val)..."Ensure.VAL.is.a.numbe
37860 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 20 76 61 r."...(cond....((numberp.val).va
37880 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 74 6f 2d l)....((stringp.val).(string-to-
378a0 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 61 6e 6e number.val))....((error."%S.cann
378c0 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 76 61 6c ot.be.converted.to.a.number".val
378e0 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 69 6e 67 ))))..(defsubst.gptel--to-string
37900 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 2c 20 69 .(s)..."Convert.S.to.a.string,.i
37920 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 0a 20 20 f.possible."...(cl-typecase.s...
37940 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 20 20 28 ..(symbol.(symbol-name.s)).....(
37960 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 6e 31 2d string.s).....(otherwise.(prin1-
37980 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 74 65 6c to-string.s))))..(defsubst.gptel
379a0 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 70 6f 73 --intern.(s)..."Intern.S,.if.pos
379c0 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 20 28 73 sible."...(cl-etypecase.s.....(s
379e0 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 73 29 29 ymbol.s).....(string.(intern.s))
37a00 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 73 20 28 ))..(defun.gptel--merge-plists.(
37a20 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 2c 20 61 &rest.plists)..."Merge.PLISTS,.a
37a40 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 20 70 6c ltering.the.first.one...Later.pl
37a60 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 63 65 64 ists.in.the.sequence.take.preced
37a80 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 65 74 20 ence.over.earlier.ones."...(let.
37aa0 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 70 6c 69 (;;.(rtn.(copy-sequence.(pop.pli
37ac0 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 74 73 29 sts))).........(rtn.(pop.plists)
37ae0 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 70 6c 69 ).........p.v.ls).....(while.pli
37b00 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 73 29 29 sts.......(setq.ls.(pop.plists))
37b20 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 71 20 70 .......(while.ls.........(setq.p
37b40 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 20 28 73 .(pop.ls).v.(pop.ls)).........(s
37b60 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 29 0a 20 etq.rtn.(plist-put.rtn.p.v))))..
37b80 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 62 69 6e ...rtn))..(defun.gptel--file-bin
37ba0 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 20 61 74 ary-p.(path)..."Check.if.file.at
37bc0 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 22 0a 20 .PATH.is.readable.and.binary."..
37be0 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 69 74 68 .(condition-case.nil.......(with
37c00 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 66 69 6c -temp-buffer.........(insert-fil
37c20 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 70 6c 61 e-contents.path.nil.1.512.'repla
37c40 63 65 29 0a 20 20 20 20 20 20 20 20 28 65 71 20 62 75 66 66 65 72 2d 66 69 6c 65 2d 63 6f 64 69 ce).........(eq.buffer-file-codi
37c60 6e 67 2d 73 79 73 74 65 6d 20 27 6e 6f 2d 63 6f 6e 76 65 72 73 69 6f 6e 29 29 0a 20 20 20 20 28 ng-system.'no-conversion)).....(
37c80 66 69 6c 65 2d 6d 69 73 73 69 6e 67 20 28 6d 65 73 73 61 67 65 20 22 46 69 6c 65 20 5c 22 25 73 file-missing.(message."File.\"%s
37ca0 5c 22 20 69 73 20 6e 6f 74 20 72 65 61 64 61 62 6c 65 2e 22 20 70 61 74 68 29 0a 20 20 20 20 20 \".is.not.readable.".path)......
37cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 69 6c 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 .............nil)))..(defun.gpte
37ce0 6c 2d 2d 69 6e 73 65 72 74 2d 66 69 6c 65 2d 73 74 72 69 6e 67 20 28 70 61 74 68 29 0a 20 20 22 l--insert-file-string.(path)..."
37d00 49 6e 73 65 72 74 20 61 74 20 70 6f 69 6e 74 20 74 68 65 20 63 6f 6e 74 65 6e 74 73 20 6f 66 20 Insert.at.point.the.contents.of.
37d20 74 68 65 20 66 69 6c 65 20 61 74 20 50 41 54 48 20 61 73 20 63 6f 6e 74 65 78 74 2e 22 0a 20 20 the.file.at.PATH.as.context."...
37d40 28 69 6e 73 65 72 74 20 28 66 6f 72 6d 61 74 20 22 49 6e 20 66 69 6c 65 20 60 25 73 60 3a 22 20 (insert.(format."In.file.`%s`:".
37d60 28 66 69 6c 65 2d 6e 61 6d 65 2d 6e 6f 6e 64 69 72 65 63 74 6f 72 79 20 70 61 74 68 29 29 0a 20 (file-name-nondirectory.path))..
37d80 20 20 20 20 20 20 20 20 20 22 5c 6e 5c 6e 60 60 60 5c 6e 22 29 0a 20 20 28 6c 65 74 20 28 28 70 ........."\n\n```\n")...(let.((p
37da0 6d 20 28 70 6f 69 6e 74 2d 6d 61 72 6b 65 72 29 29 29 0a 20 20 20 20 28 73 65 74 2d 6d 61 72 6b m.(point-marker))).....(set-mark
37dc0 65 72 2d 69 6e 73 65 72 74 69 6f 6e 2d 74 79 70 65 20 70 6d 20 74 29 0a 20 20 20 20 28 69 6e 73 er-insertion-type.pm.t).....(ins
37de0 65 72 74 2d 66 69 6c 65 2d 63 6f 6e 74 65 6e 74 73 20 70 61 74 68 29 0a 20 20 20 20 28 67 6f 74 ert-file-contents.path).....(got
37e00 6f 2d 63 68 61 72 20 70 6d 29 29 0a 20 20 28 69 6e 73 65 72 74 20 22 5c 6e 60 60 60 5c 6e 22 29 o-char.pm))...(insert."\n```\n")
37e20 29 0a 0a 28 64 65 66 76 61 72 20 75 72 6c 2d 68 74 74 70 2d 65 6e 64 2d 6f 66 2d 68 65 61 64 65 )..(defvar.url-http-end-of-heade
37e40 72 73 29 0a 28 64 65 66 76 61 72 20 75 72 6c 2d 68 74 74 70 2d 72 65 73 70 6f 6e 73 65 2d 73 74 rs).(defvar.url-http-response-st
37e60 61 74 75 73 29 0a 28 63 6c 2d 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 75 72 6c 2d 72 65 74 72 69 atus).(cl-defun.gptel--url-retri
37e80 65 76 65 20 28 75 72 6c 20 26 6b 65 79 20 6d 65 74 68 6f 64 20 64 61 74 61 20 68 65 61 64 65 72 eve.(url.&key.method.data.header
37ea0 73 29 0a 20 20 22 52 65 74 72 69 65 76 65 20 55 52 4c 20 73 79 6e 63 68 72 6f 6e 6f 75 73 6c 79 s)..."Retrieve.URL.synchronously
37ec0 20 77 69 74 68 20 4d 45 54 48 4f 44 2c 20 44 41 54 41 20 61 6e 64 20 48 45 41 44 45 52 53 2e 22 .with.METHOD,.DATA.and.HEADERS."
37ee0 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 28 ...(declare.(indent.1))...(let.(
37f00 28 75 72 6c 2d 72 65 71 75 65 73 74 2d 6d 65 74 68 6f 64 20 28 69 66 20 28 65 71 20 6d 65 74 68 (url-request-method.(if.(eq.meth
37f20 6f 64 27 70 6f 73 74 29 20 22 50 4f 53 54 22 20 22 47 45 54 22 29 29 0a 20 20 20 20 20 20 20 20 od'post)."POST"."GET")).........
37f40 28 75 72 6c 2d 72 65 71 75 65 73 74 2d 64 61 74 61 20 28 65 6e 63 6f 64 65 2d 63 6f 64 69 6e 67 (url-request-data.(encode-coding
37f60 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
37f80 29 20 27 75 74 66 2d 38 29 29 0a 20 20 20 20 20 20 20 20 28 75 72 6c 2d 6d 69 6d 65 2d 61 63 63 ).'utf-8)).........(url-mime-acc
37fa0 65 70 74 2d 73 74 72 69 6e 67 20 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 6a 73 6f 6e 22 29 0a 20 ept-string."application/json")..
37fc0 20 20 20 20 20 20 20 28 75 72 6c 2d 72 65 71 75 65 73 74 2d 65 78 74 72 61 2d 68 65 61 64 65 72 .......(url-request-extra-header
37fe0 73 0a 20 20 20 20 20 20 20 20 20 60 28 28 22 63 6f 6e 74 65 6e 74 2d 74 79 70 65 22 20 2e 20 22 s..........`(("content-type"..."
38000 61 70 70 6c 69 63 61 74 69 6f 6e 2f 6a 73 6f 6e 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 2c 40 application/json")............,@
38020 68 65 61 64 65 72 73 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 headers))).....(with-current-buf
38040 66 65 72 20 28 75 72 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 fer.(url-retrieve-synchronously.
38060 75 72 6c 20 27 73 69 6c 65 6e 74 29 0a 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 75 72 url.'silent).......(goto-char.ur
38080 6c 2d 68 74 74 70 2d 65 6e 64 2d 6f 66 2d 68 65 61 64 65 72 73 29 0a 20 20 20 20 20 20 28 67 70 l-http-end-of-headers).......(gp
380a0 74 65 6c 2d 2d 6a 73 6f 6e 2d 72 65 61 64 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c tel--json-read))))..(defun.gptel
380c0 2d 61 75 74 6f 2d 73 63 72 6f 6c 6c 20 28 29 0a 20 20 22 53 63 72 6f 6c 6c 20 77 69 6e 64 6f 77 -auto-scroll.()..."Scroll.window
380e0 20 69 66 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 20 63 6f 6e 74 69 6e 75 65 73 20 62 65 6c 6f 77 .if.LLM.response.continues.below
38100 20 76 69 65 77 70 6f 72 74 2e 0a 0a 4e 6f 74 65 3a 20 54 68 69 73 20 77 69 6c 6c 20 6d 6f 76 65 .viewport...Note:.This.will.move
38120 20 74 68 65 20 63 75 72 73 6f 72 2e 22 0a 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 77 69 6e .the.cursor."...(when-let*.((win
38140 20 28 67 65 74 2d 62 75 66 66 65 72 2d 77 69 6e 64 6f 77 20 28 63 75 72 72 65 6e 74 2d 62 75 66 .(get-buffer-window.(current-buf
38160 66 65 72 29 20 27 76 69 73 69 62 6c 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 fer).'visible))...............((
38180 6e 6f 74 20 28 70 6f 73 2d 76 69 73 69 62 6c 65 2d 69 6e 2d 77 69 6e 64 6f 77 2d 70 20 28 70 6f not.(pos-visible-in-window-p.(po
381a0 69 6e 74 29 20 77 69 6e 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 63 72 6f 6c int).win)))...............(scrol
381c0 6c 2d 65 72 72 6f 72 2d 74 6f 70 2d 62 6f 74 74 6f 6d 20 74 29 29 0a 20 20 20 20 28 63 6f 6e 64 l-error-top-bottom.t)).....(cond
381e0 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 69 74 68 2d 73 65 6c ition-case.nil.........(with-sel
38200 65 63 74 65 64 2d 77 69 6e 64 6f 77 20 77 69 6e 0a 20 20 20 20 20 20 20 20 20 20 28 73 63 72 6f ected-window.win...........(scro
38220 6c 6c 2d 75 70 2d 63 6f 6d 6d 61 6e 64 29 29 0a 20 20 20 20 20 20 28 65 72 72 6f 72 20 6e 69 6c ll-up-command)).......(error.nil
38240 29 29 29 29 0a 0a 28 64 65 66 73 75 62 73 74 20 67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 70 72 65 ))))..(defsubst.gptel-prompt-pre
38260 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 65 20 75 fix-string.()..."Prefix.before.u
38280 73 65 72 20 70 72 6f 6d 70 74 73 20 69 6e 20 60 67 70 74 65 6c 2d 6d 6f 64 65 27 2e 22 0a 20 20 ser.prompts.in.`gptel-mode'."...
382a0 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 29 29 0a 20 (declare.(side-effect-free.t))..
382c0 20 28 6f 72 20 28 61 6c 69 73 74 2d 67 65 74 20 6d 61 6a 6f 72 2d 6d 6f 64 65 20 67 70 74 65 6c .(or.(alist-get.major-mode.gptel
382e0 2d 70 72 6f 6d 70 74 2d 70 72 65 66 69 78 2d 61 6c 69 73 74 29 20 22 22 29 29 0a 0a 28 64 65 66 -prompt-prefix-alist).""))..(def
38300 73 75 62 73 74 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 subst.gptel-response-prefix-stri
38320 6e 67 20 28 29 0a 20 20 22 50 72 65 66 69 78 20 62 65 66 6f 72 65 20 4c 4c 4d 20 72 65 73 70 6f ng.()..."Prefix.before.LLM.respo
38340 6e 73 65 73 20 69 6e 20 60 67 70 74 65 6c 2d 6d 6f 64 65 27 2e 22 0a 20 20 28 64 65 63 6c 61 72 nses.in.`gptel-mode'."...(declar
38360 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 28 6f 72 20 28 61 e.(side-effect-free.t))...(or.(a
38380 6c 69 73 74 2d 67 65 74 20 6d 61 6a 6f 72 2d 6d 6f 64 65 20 67 70 74 65 6c 2d 72 65 73 70 6f 6e list-get.major-mode.gptel-respon
383a0 73 65 2d 70 72 65 66 69 78 2d 61 6c 69 73 74 29 20 22 22 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 se-prefix-alist).""))..(defun.gp
383c0 74 65 6c 2d 62 65 67 69 6e 6e 69 6e 67 2d 6f 66 2d 72 65 73 70 6f 6e 73 65 20 28 26 6f 70 74 69 tel-beginning-of-response.(&opti
383e0 6f 6e 61 6c 20 5f 20 5f 20 61 72 67 29 0a 20 20 22 4d 6f 76 65 20 70 6f 69 6e 74 20 74 6f 20 74 onal._._.arg)..."Move.point.to.t
38400 68 65 20 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20 74 68 65 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 he.beginning.of.the.LLM.response
38420 20 41 52 47 20 74 69 6d 65 73 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 20 28 6c 69 73 .ARG.times."...(interactive.(lis
38440 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 20 20 20 20 20 28 t.nil.nil......................(
38460 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 6e 74 2d 70 72 65 prefix-numeric-value.current-pre
38480 66 69 78 2d 61 72 67 29 29 29 0a 20 20 28 67 70 74 65 6c 2d 65 6e 64 2d 6f 66 2d 72 65 73 70 6f fix-arg)))...(gptel-end-of-respo
384a0 6e 73 65 20 6e 69 6c 20 6e 69 6c 20 28 2d 20 28 6f 72 20 61 72 67 20 31 29 29 29 29 0a 0a 28 64 nse.nil.nil.(-.(or.arg.1))))..(d
384c0 65 66 75 6e 20 67 70 74 65 6c 2d 65 6e 64 2d 6f 66 2d 72 65 73 70 6f 6e 73 65 20 28 26 6f 70 74 efun.gptel-end-of-response.(&opt
384e0 69 6f 6e 61 6c 20 5f 20 5f 20 61 72 67 29 0a 20 20 22 4d 6f 76 65 20 70 6f 69 6e 74 20 74 6f 20 ional._._.arg)..."Move.point.to.
38500 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 20 41 52 47 20 the.end.of.the.LLM.response.ARG.
38520 74 69 6d 65 73 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 20 28 6c 69 73 74 20 6e 69 6c times."...(interactive.(list.nil
38540 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 28 70 72 65 66 69 .nil......................(prefi
38560 78 2d 6e 75 6d 65 72 69 63 2d 76 61 6c 75 65 20 63 75 72 72 65 6e 74 2d 70 72 65 66 69 78 2d 61 x-numeric-value.current-prefix-a
38580 72 67 29 29 29 0a 20 20 28 75 6e 6c 65 73 73 20 61 72 67 20 28 73 65 74 71 20 61 72 67 20 31 29 rg)))...(unless.arg.(setq.arg.1)
385a0 29 0a 20 20 28 6c 65 74 20 28 28 73 65 61 72 63 68 20 28 69 66 20 28 3e 20 61 72 67 20 30 29 0a )...(let.((search.(if.(>.arg.0).
385c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 27 74 65 78 74 2d 70 72 6f 70 65 ....................#'text-prope
385e0 72 74 79 2d 73 65 61 72 63 68 2d 66 6f 72 77 61 72 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 rty-search-forward..............
38600 20 20 20 20 20 23 27 74 65 78 74 2d 70 72 6f 70 65 72 74 79 2d 73 65 61 72 63 68 2d 62 61 63 6b .....#'text-property-search-back
38620 77 61 72 64 29 29 29 0a 20 20 20 20 28 64 6f 74 69 6d 65 73 20 28 5f 20 28 61 62 73 20 61 72 67 ward))).....(dotimes.(_.(abs.arg
38640 29 29 0a 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 73 65 61 72 63 68 20 27 67 70 74 65 6c 20 )).......(funcall.search.'gptel.
38660 27 72 65 73 70 6f 6e 73 65 20 74 29 0a 20 20 20 20 20 20 28 69 66 20 28 3e 20 61 72 67 20 30 29 'response.t).......(if.(>.arg.0)
38680 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 65 66 69 78 20 28 ...........(when-let*.((prefix.(
386a0 67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 70 72 65 66 69 78 2d 73 74 72 69 6e 67 29 29 0a 20 20 20 gptel-prompt-prefix-string))....
386c0 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 72 69 6e 67 ...................((not.(string
386e0 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 20 20 20 20 -empty-p.prefix)))..............
38700 20 20 20 20 20 20 20 20 20 28 28 6c 6f 6f 6b 69 6e 67 2d 61 74 20 28 63 6f 6e 63 61 74 20 22 5c .........((looking-at.(concat."\
38720 6e 5c 5c 7b 31 2c 32 5c 5c 7d 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 n\\{1,2\\}".....................
38740 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 71 .......................(regexp-q
38760 75 6f 74 65 20 70 72 65 66 69 78 29 20 22 3f 22 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 uote.prefix)."?"))))............
38780 20 28 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 .(goto-char.(match-end.0))).....
387a0 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 70 72 65 66 69 78 20 28 67 70 74 65 6c 2d 72 ....(when-let*.((prefix.(gptel-r
387c0 65 73 70 6f 6e 73 65 2d 70 72 65 66 69 78 2d 73 74 72 69 6e 67 29 29 0a 20 20 20 20 20 20 20 20 esponse-prefix-string)).........
387e0 20 20 20 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 ............((not.(string-empty-
38800 70 20 70 72 65 66 69 78 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 p.prefix))).....................
38820 28 28 6c 6f 6f 6b 69 6e 67 2d 62 61 63 6b 20 28 63 6f 6e 63 61 74 20 28 72 65 67 65 78 70 2d 71 ((looking-back.(concat.(regexp-q
38840 75 6f 74 65 20 70 72 65 66 69 78 29 20 22 3f 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 uote.prefix)."?")...............
38860 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 6e 29 .....................(point-min)
38880 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 6d 61 74 63 68 2d )))...........(goto-char.(match-
388a0 62 65 67 69 6e 6e 69 6e 67 20 30 29 29 29 29 29 29 29 0a 0a 28 64 65 66 6d 61 63 72 6f 20 67 70 beginning.0)))))))..(defmacro.gp
388c0 74 65 6c 2d 2d 61 74 2d 77 6f 72 64 2d 65 6e 64 20 28 26 72 65 73 74 20 62 6f 64 79 29 0a 20 20 tel--at-word-end.(&rest.body)...
388e0 22 45 78 65 63 75 74 65 20 42 4f 44 59 20 61 74 20 65 6e 64 20 6f 66 20 74 68 65 20 63 75 72 72 "Execute.BODY.at.end.of.the.curr
38900 65 6e 74 20 77 6f 72 64 20 6f 72 20 70 75 6e 63 74 75 61 74 69 6f 6e 2e 22 0a 20 20 60 28 73 61 ent.word.or.punctuation."...`(sa
38920 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 28 73 6b 69 70 2d 73 79 6e 74 61 78 2d 66 ve-excursion......(skip-syntax-f
38940 6f 72 77 61 72 64 20 22 77 2e 22 29 0a 20 20 20 20 20 2c 28 6d 61 63 72 6f 65 78 70 2d 70 72 6f orward."w.")......,(macroexp-pro
38960 67 6e 20 62 6f 64 79 29 29 29 0a 0a 28 64 65 66 6d 61 63 72 6f 20 67 70 74 65 6c 2d 2d 74 65 6d gn.body)))..(defmacro.gptel--tem
38980 70 2d 62 75 66 66 65 72 20 28 62 75 66 29 0a 20 20 22 47 65 6e 65 72 61 74 65 20 61 20 74 65 6d p-buffer.(buf)..."Generate.a.tem
389a0 70 20 62 75 66 66 65 72 20 42 55 46 2e 0a 0a 43 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 6d 61 63 p.buffer.BUF...Compatibility.mac
389c0 72 6f 20 66 6f 72 20 45 6d 61 63 73 20 32 37 2e 31 2e 22 0a 20 20 28 69 66 20 28 3c 20 65 6d 61 ro.for.Emacs.27.1."...(if.(<.ema
389e0 63 73 2d 6d 61 6a 6f 72 2d 76 65 72 73 69 6f 6e 20 32 38 29 0a 20 20 20 20 20 20 60 28 67 65 6e cs-major-version.28).......`(gen
38a00 65 72 61 74 65 2d 6e 65 77 2d 62 75 66 66 65 72 20 2c 62 75 66 29 0a 20 20 20 20 60 28 67 65 6e erate-new-buffer.,buf).....`(gen
38a20 65 72 61 74 65 2d 6e 65 77 2d 62 75 66 66 65 72 20 2c 62 75 66 20 74 29 29 29 0a 0a 28 64 65 66 erate-new-buffer.,buf.t)))..(def
38a40 6d 61 63 72 6f 20 67 70 74 65 6c 2d 2d 77 69 74 68 2d 62 75 66 66 65 72 2d 63 6f 70 79 20 28 62 macro.gptel--with-buffer-copy.(b
38a60 75 66 20 73 74 61 72 74 20 65 6e 64 20 26 72 65 73 74 20 62 6f 64 79 29 0a 20 20 22 43 6f 70 79 uf.start.end.&rest.body)..."Copy
38a80 20 67 70 74 65 6c 27 73 20 6c 6f 63 61 6c 20 76 61 72 69 61 62 6c 65 73 20 66 72 6f 6d 20 42 55 .gptel's.local.variables.from.BU
38aa0 46 20 74 6f 20 61 20 74 65 6d 70 20 62 75 66 66 65 72 20 61 6e 64 20 72 75 6e 20 42 4f 44 59 2e F.to.a.temp.buffer.and.run.BODY.
38ac0 0a 0a 49 66 20 70 6f 73 69 74 69 6f 6e 73 20 53 54 41 52 54 20 61 6e 64 20 45 4e 44 20 61 72 65 ..If.positions.START.and.END.are
38ae0 20 70 72 6f 76 69 64 65 64 2c 20 69 6e 73 65 72 74 20 74 68 61 74 20 70 61 72 74 20 6f 66 20 42 .provided,.insert.that.part.of.B
38b00 55 46 20 66 69 72 73 74 2e 22 0a 20 20 60 28 67 70 74 65 6c 2d 2d 77 69 74 68 2d 62 75 66 66 65 UF.first."...`(gptel--with-buffe
38b20 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 6e 64 r-copy-internal.,buf.,start.,end
38b40 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 67 70 .(lambda.().,@body)))..(defun.gp
38b60 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 20 28 tel--with-buffer-copy-internal.(
38b80 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 72 65 buf.start.end.body-thunk)..."Pre
38ba0 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 20 72 pare.a.temp.buffer.for.a.gptel.r
38bc0 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 6e 64 equest...For.BUF,.START,.END.and
38be0 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 75 66 .BODY-THUNK.see.`gptel--with-buf
38c00 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 65 72 fer-copy'."...(let.((temp-buffer
38c20 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 70 72 .(gptel--temp-buffer.".*gptel-pr
38c40 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 66 66 ompt*"))).....(with-current-buff
38c60 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 73 79 er.temp-buffer.......(dolist.(sy
38c80 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 65 6d m.'(.gptel-backend.gptel--system
38ca0 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 20 20 -message.gptel-model............
38cc0 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 61 63 ...........gptel-mode.gptel-trac
38ce0 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 20 20 k-response.gptel-track-media....
38d00 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 6f 6f ...................gptel-use-too
38d20 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 0a 20 20 ls.gptel-tools.gptel-use-curl...
38d40 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 63 6f ....................gptel-use-co
38d60 6e 74 65 78 74 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 ntext.gptel--num-messages-to-sen
38d80 64 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 73 74 d.......................gptel-st
38da0 72 65 61 6d 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 ream.gptel-include-reasoning....
38dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 74 65 6d 70 65 72 61 ...................gptel-tempera
38de0 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 6c 2d 63 61 63 68 ture.gptel-max-tokens.gptel-cach
38e00 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 61 6c 2d 76 61 72 e)).........(set.(make-local-var
38e20 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 61 6c 75 65 20 73 iable.sym).(buffer-local-value.s
38e40 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 20 73 74 61 72 74 ym.buf))).......(when.(and.start
38e60 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 72 69 6e 67 20 62 .end).(insert-buffer-substring.b
38e80 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 20 6d 61 6a 6f 72 uf.start.end)).......(setq.major
38ea0 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 27 6d 61 6a 6f 72 -mode.(buffer-local-value.'major
38ec0 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 20 62 6f 64 79 2d -mode.buf)).......(funcall.body-
38ee0 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 2d 2d 74 72 69 6d thunk))))..(defsubst.gptel--trim
38f00 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 6f 6d 70 74 2f 72 -prefixes.(s)..."Remove.prompt/r
38f20 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 6e 67 20 53 2e 0a esponse.prefixes.from.string.S..
38f40 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 61 70 73 65 73 20 .Return.nil.if.string.collapses.
38f60 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 28 28 74 72 69 6d to.empty.string."...(let*.((trim
38f80 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 20 20 20 20 20 20 med.(string-trim-left...........
38fa0 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 6e 20 5d 2a 5c 5c .........s.(format."[\t\r\n.]*\\
38fc0 28 3f 3a 25 73 5c 5c 29 3f 5b 5c 74 5c 72 5c 6e 20 5d 2a 22 0a 20 20 20 20 20 20 20 20 20 20 20 (?:%s\\)?[\t\r\n.]*"............
38fe0 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.
39000 20 20 20 20 20 20 20 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
39020 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 70 72 65 66 69 78 2d 73 74 72 69 6e 67 29 29 29 29 29 0a 20 ptel-prompt-prefix-string)))))..
39040 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 72 69 6d 2d 72 69 ........(trimmed.(string-trim-ri
39060 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 6d 6d 65 64 20 28 ght....................trimmed.(
39080 66 6f 72 6d 61 74 20 22 5b 5c 74 5c 72 5c 6e 20 5d 2a 5c 5c 28 3f 3a 25 73 5c 5c 29 3f 5b 5c 74 format."[\t\r\n.]*\\(?:%s\\)?[\t
390a0 5c 72 5c 6e 20 5d 2a 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 \r\n.]*"........................
390c0 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 20 20 20 20 20 20 ............(regexp-quote.......
390e0 20 20 20 20 20 20 20 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
39100 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 70 72 65 66 69 78 2d 73 74 72 69 6e 67 29 29 29 29 29 ptel-response-prefix-string)))))
39120 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 79 2d 70 20 74 72 ).....(unless.(string-empty-p.tr
39140 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 64 65 66 73 75 62 immed).......trimmed)))..(defsub
39160 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 70 20 28 62 65 67 st.gptel--link-standalone-p.(beg
39180 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 20 70 6f 73 69 74 .end)..."Return.non-nil.if.posit
391a0 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 74 65 64 2e 0a 0a ions.BEG.and.END.are.isolated...
391c0 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 20 42 45 47 20 74 This.means.the.extent.from.BEG.t
391e0 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 65 73 70 61 63 65 o.END.is.the.only.non-whitespace
39200 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 28 73 61 76 65 2d .content.on.this.line."...(save-
39220 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 28 70 72 6f 67 6e excursion.....(and.(=.beg.(progn
39240 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 67 2d 6f 66 2d 6c .(goto-char.beg).(beginning-of-l
39260 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 28 73 6b 69 ine)........................(ski
39280 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 20 20 20 20 20 20 p-chars-forward."\t.")..........
392a0 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 20 20 20 ..............(point))).........
392c0 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 65 6e 64 29 20 28 .(=.end.(progn.(goto-char.end).(
392e0 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 20 20 20 20 20 20 end-of-line)....................
39300 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 5c 74 20 22 29 0a ....(skip-chars-backward."\t.").
39320 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 29 29 29 .......................(point)))
39340 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 62 61 63 6b 65 6e )))..(defvar-local.gptel--backen
39360 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 73 69 73 74 20 62 d-name.nil..."Store.to.persist.b
39380 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 65 73 73 69 6f 6e ackend.name.across.Emacs.session
393a0 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 72 69 61 62 6c 65 s...Note:.Changing.this.variable
393c0 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 73 20 62 65 68 61 .does.not.affect.gptel\\='s.beha
393e0 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 70 74 65 6c 2d 2d vior.in.any.way.").(put.'gptel--
39400 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 61 72 69 61 62 6c backend-name.'safe-local-variabl
39420 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 65 6c 2d 2d 63 75 e.#'always)..(defsubst.gptel--cu
39440 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 62 6c 65 20 74 6f rl-path.()..."Curl.executable.to
39460 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 6c 2d 75 73 65 2d .use."...(if.(stringp.gptel-use-
39480 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 22 29 29 0a 0a 28 curl).gptel-use-curl."curl"))..(
394a0 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 2d 63 6f 6e 74 65 defun.gptel--transform-add-conte
394c0 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 6e 64 20 67 70 74 xt.(callback.fsm)...(if.(and.gpt
394e0 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 78 74 2d 2d 61 6c el-use-context.gptel-context--al
39500 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 2d 77 72 61 70 20 ist).......(gptel-context--wrap.
39520 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 2d 66 73 6d 2d 69 callback.(plist-get.(gptel-fsm-i
39540 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 61 6c 6c 20 63 61 nfo.fsm).:data)).....(funcall.ca
39560 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 72 66 61 63 65 0a llback)))..;;;;.Model.interface.
39580 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 75 6c 64 20 62 65 ;;.NOTE:.This.interface.would.be
395a0 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 20 64 65 66 73 74 .simpler.to.implement.as.a.defst
395c0 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 61 6e 6e 6f 74 20 ruct...But.then.;;.users.cannot.
395e0 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 62 6f 6c 2f 73 74 set.`gptel-model'.to.a.symbol/st
39600 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 64 0a 3b 3b 20 61 ring.directly,.or.we'd.need.;;.a
39620 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 6f 6c 73 20 74 6f nother.map.from.these.symbols.to
39640 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 0a 0a 28 64 65 66 .the.actual.model.structs...(def
39660 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 6f 64 65 6c 29 0a subst.gptel--model-name.(model).
39680 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 2e 22 0a 20 20 28 .."Get.name.of.gptel.MODEL."...(
396a0 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 28 64 65 66 73 75 gptel--to-string.model))..(defsu
396c0 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 69 65 73 20 28 6d bst.gptel--model-capabilities.(m
396e0 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 69 74 69 65 73 2e odel)..."Get.MODEL.capabilities.
39700 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 65 73 29 29 0a 0a "...(get.model.:capabilities))..
39720 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 73 20 28 6d 6f (defsubst.gptel--model-mimes.(mo
39740 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 2d 74 79 70 65 73 del)..."Get.supported.mime-types
39760 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 3a 6d 69 6d 65 2d .for.MODEL."...(get.model.:mime-
39780 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 6d 6f 64 65 6c 2d types))..(defsubst.gptel--model-
397a0 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 6f 64 65 6c 29 0a capable-p.(cap.&optional.model).
397c0 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 20 73 75 70 70 6f .."Return.non-nil.if.MODEL.suppo
397e0 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 6d 71 20 63 61 70 rts.capability.CAP."...(memq.cap
39800 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 73 0a 20 20 20 20 .(gptel--model-capabilities.....
39820 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 6f 64 65 6c 29 29 .........(or.model.gptel-model))
39840 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 69 6d 65 20 73 70 ))..;;.TODO.Handle.model.mime.sp
39860 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 22 0a 28 64 65 66 ecifications.like."image/*".(def
39880 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 70 61 62 6c 65 2d subst.gptel--model-mime-capable-
398a0 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 20 22 52 65 74 75 p.(mime.&optional.model)..."Retu
398c0 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 64 65 72 73 74 61 rn.non.nil.if.MODEL.can.understa
398e0 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 20 28 6d 65 6d 62 nd.MIME.type."...(car-safe.(memb
39900 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 73 0a 20 20 20 20 er.mime.(gptel--model-mimes.....
39920 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 64 65 6c 20 67 70 ....................(or.model.gp
39940 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 67 70 74 65 6c 2d tel-model)))))..(defsubst.gptel-
39960 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 65 6c 29 0a 20 20 -model-request-params.(model)...
39980 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 74 20 70 61 72 61 "Get.model-specific.request.para
399a0 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 6d 6f 64 65 6c 20 meters.for.MODEL."...(get.model.
399c0 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 6c 65 20 68 61 6e :request-params))..;;;;.File.han
399e0 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 2d 65 6e 63 6f 64 dling.(defun.gptel--base64-encod
39a00 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 20 61 20 62 61 73 e.(file)..."Encode.FILE.as.a.bas
39a20 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 65 64 20 74 6f 20 e64.string...FILE.is.assumed.to.
39a40 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 65 2e 22 0a 20 20 exist.and.be.a.regular.file."...
39a60 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 74 2d 66 69 (with-temp-buffer.....(insert-fi
39a80 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 29 0a 20 20 20 20 le-contents-literally.file).....
39aa0 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 6e 74 2d 6d 69 6e (base64-encode-region.(point-min
39ac0 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 20 20 20 20 20 20 ).(point-max)...................
39ae0 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 20 20 28 62 75 66 ........:no-line-break).....(buf
39b00 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 73 65 20 74 65 78 fer-string)))..;;;;.Response.tex
39b20 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 6c 2d 2d 67 65 74 t.recognition..(defun.gptel--get
39b40 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 6e 20 74 68 65 20 -buffer-bounds.()..."Return.the.
39b60 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 69 6e 20 74 68 65 gptel.response.boundaries.in.the
39b80 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 61 76 65 2d 65 78 .buffer.as.an.alist."...(save-ex
39ba0 63 75 72 73 69 6f 6e 0a 20 20 20 20 28 73 61 76 65 2d 72 65 73 74 72 69 63 74 69 6f 6e 0a 20 20 cursion.....(save-restriction...
39bc0 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 61 72 20 28 70 6f ....(widen).......(goto-char.(po
39be0 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 6e 64 73 29 20 28 int-max)).......(let.((bounds).(
39c00 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 28 77 68 69 6c 65 prev-pt.(point))).........(while
39c20 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 69 6e 29 29 0a 20 .(and.(/=.prev-pt.(point-min))..
39c40 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
39c60 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..
39c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 ...............................(
39ca0 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 29 point).'gptel.nil.(point-min))))
39cc0 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 6f 70 20 28 67 65 ...........(when-let*.((prop.(ge
39ce0 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 29 29 t-char-property.(point).'gptel))
39d00 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 2d 6e 61 6d 65 20 ).............(let*.((prop-name.
39d20 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 61 72 20 70 72 6f (if.(symbolp.prop).prop.(car.pro
39d40 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 61 6c 20 28 77 68 p)))....................(val.(wh
39d60 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 29 29 0a 20 20 20 en.(consp.prop).(cdr.prop)))....
39d80 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 20 76 61 6c 0a 20 ................(bound.(if.val..
39da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 .............................(li
39dc0 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 20 20 20 20 20 20 st.(point).prev-pt.val).........
39de0 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 70 6f 69 6e 74 ....................(list.(point
39e00 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 20 20 28 70 75 73 ).prev-pt))))...............(pus
39e20 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 6d 65 20 62 6f 75 h.bound.(alist-get.prop-name.bou
39e40 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 65 76 2d 70 74 20 nds))))...........(setq.prev-pt.
39e60 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 29 29 0a 0a 28 64 (point))).........bounds))))..(d
39e80 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 69 61 73 0a 20 20 efine-obsolete-function-alias...
39ea0 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 2d 67 65 74 2d 72 'gptel--get-bounds.'gptel--get-r
39ec0 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 64 65 66 75 6e 20 esponse-bounds."0.9.8")..(defun.
39ee0 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 20 28 29 0a 20 20 gptel--get-response-bounds.()...
39f00 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 20 62 6f 75 6e 64 "Return.the.gptel.response.bound
39f20 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 74 20 28 70 72 6f aries.around.point."...(let.(pro
39f40 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 20 20 20 28 77 68 p).....(save-excursion.......(wh
39f60 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 61 63 6b 77 61 72 en.(text-property-search-backwar
39f80 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 70 6f 6e 73 65 20 d..............'gptel.'response.
39fa0 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 70 20 28 74 65 78 t).........(when.(setq.prop.(tex
39fc0 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 20 20 20 20 t-property-search-forward.......
39fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 67 70 74 65 6c 20 27 72 65 73 70 ....................'gptel.'resp
3a000 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 70 72 6f 70 2d 6d onse.t))...........(cons.(prop-m
3a020 61 74 63 68 2d 62 65 67 69 6e 6e 69 6e 67 20 70 72 6f 70 29 0a 20 20 20 20 20 20 20 20 20 20 20 atch-beginning.prop)............
3a040 20 20 20 20 20 28 70 72 6f 70 2d 6d 61 74 63 68 2d 65 6e 64 20 70 72 6f 70 29 29 29 29 29 29 29 .....(prop-match-end.prop)))))))
3a060 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 65 2d 70 20 28 26 ..(defun.gptel--in-response-p.(&
3a080 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 6f 73 69 74 69 6f optional.pt)..."Check.if.positio
3a0a0 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 70 6f 6e 73 65 2e n.PT.is.inside.a.gptel.response.
3a0c0 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 20 28 6f 72 20 70 "...(eq.(get-char-property.(or.p
3a0e0 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 73 65 29 29 0a 0a t.(point)).'gptel).'response))..
3a100 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 68 69 73 74 6f 72 (defun.gptel--at-response-histor
3a120 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 6b 20 69 66 20 67 y-p.(&optional.pt)..."Check.if.g
3a140 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 50 54 20 68 61 73 ptel.response.at.position.PT.has
3a160 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 6f 70 65 72 74 79 .variants."...(get-char-property
3a180 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 73 74 6f 72 79 29 .(or.pt.(point)).'gptel-history)
3a1a0 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 63 72 69 70 74 69 )..(defvar.gptel--mode-descripti
3a1c0 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 20 20 2e 20 22 4a on-alist...'((js2-mode........"J
3a1e0 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 20 20 20 20 20 2e avascript").....(sh-mode........
3a200 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 64 65 20 2e 20 22 ."Shell").....(enh-ruby-mode..."
3a220 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 2e 20 22 59 61 6d Ruby").....(yaml-mode......."Yam
3a240 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 59 61 6d 6c 22 29 l").....(yaml-ts-mode...."Yaml")
3a260 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 74 22 29 0a 20 20 .....(rustic-mode....."Rust")...
3a280 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 29 29 0a 20 20 22 ..(tuareg-mode....."OCaml"))..."
3a2a0 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 6c 6c 79 20 6e 61 Mapping.from.unconventionally.na
3a2c0 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 65 73 2e 0a 0a 54 med.major.modes.to.languages...T
3a2e0 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 67 20 73 79 73 74 his.is.used.when.generating.syst
3a300 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 6e 64 0a 77 68 65 em.prompts.for.rewriting.and.whe
3a320 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 68 65 73 65 20 6d n.including.context.from.these.m
3a340 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 6c 2d 2d 73 74 72 ajor.modes.")..(defun.gptel--str
3a360 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 20 20 22 52 65 6d ip-mode-suffix.(mode-sym)..."Rem
3a380 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 4d 4f 44 45 2d 53 ove.the.-mode.suffix.from.MODE-S
3a3a0 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 20 61 20 6d 61 6a YM...MODE-SYM.is.typically.a.maj
3a3c0 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 69 73 74 2d 67 65 or-mode.symbol."...(or.(alist-ge
3a3e0 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 63 72 69 70 74 69 t.mode-sym.gptel--mode-descripti
3a400 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 65 2d 6e 61 6d 65 on-alist).......(let.((mode-name
3a420 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 20 20 20 20 20 20 .(thread-last...................
3a440 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 79 6d 29 0a 20 20 .......(symbol-name.mode-sym)...
3a460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 2d 72 .......................(string-r
3a480 65 6d 6f 76 65 2d 73 75 66 66 69 78 20 22 2d 6d 6f 64 65 22 29 0a 20 20 20 20 20 20 20 20 20 20 emove-suffix."-mode")...........
3a4a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 2d 72 65 6d 6f 76 65 2d 73 75 ...............(string-remove-su
3a4c0 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 4e 4f 54 45 3a 20 ffix."-ts")))).........;;.NOTE:.
3a4e0 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 76 65 6e 74 69 6f The.advertised.calling.conventio
3a500 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 2d 70 0a 20 20 20 n.of.provided-mode-derived-p....
3a520 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 63 73 20 33 30 2c .....;;.has.changed.in.Emacs.30,
3a540 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 65 76 65 6e 74 75 .this.needs.to.be.updated.eventu
3a560 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 2d 6d 6f 64 65 2d ally.........(if.(provided-mode-
3a580 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 65 2d 73 79 6d 20 derived-p..............mode-sym.
3a5a0 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 2d 6d 6f 64 65 29 'prog-mode.'text-mode.'tex-mode)
3a5c0 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 29 29 29 0a 0a 3b .............mode-name.""))))..;
3a5e0 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 64 65 66 76 61 72 ;;;.Directive.handling...(defvar
3a600 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 6f 72 20 28 61 6c .gptel--system-message...(or.(al
3a620 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 65 63 74 69 76 65 ist-get.'default.gptel-directive
3a640 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 6c 61 6e 67 75 61 s)......."You.are.a.large.langua
3a660 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 6e 64 20 61 20 68 ge.model.living.in.Emacs.and.a.h
3a680 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 63 6f 6e 63 69 73 elpful.assistant..Respond.concis
3a6a0 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 67 65 20 75 73 65 ely.")..."The.system.message.use
3a6c0 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 2d 73 79 73 74 65 d.by.gptel.").(put.'gptel--syste
3a6e0 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 61 62 6c 65 20 23 m-message.'safe-local-variable.#
3a700 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 73 63 72 69 62 65 'always)..(defun.gptel--describe
3a720 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 68 20 26 6f 70 74 -directive.(directive.width.&opt
3a740 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 20 64 65 73 63 72 ional.replacement)..."Find.descr
3a760 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 63 61 74 65 64 20 iption.for.DIRECTIVE,.truncated.
3a780 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 20 67 70 74 65 6c .to.WIDTH...DIRECTIVE.is.a.gptel
3a7a0 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 74 72 69 6e 67 2c .directive,.and.can.be.a.string,
3a7c0 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 74 72 69 6e 67 73 .a.function.or.a.list.of.strings
3a7e0 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 0a 0a 54 68 65 20 ...See.`gptel-directives'...The.
3a800 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 64 20 66 6f 72 20 result.is.a.string.intended.for.
3a820 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 6c 61 63 65 64 20 display...Newlines.are.replaced.
3a840 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 79 70 65 63 61 73 with.REPLACEMENT."...(cl-typecas
3a860 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 20 20 20 28 63 6f e.directive.....(string......(co
3a880 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 20 22 5c 6e 22 20 ncat.......(string-replace."\n".
3a8a0 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 20 20 20 20 20 20 (or.replacement.".")............
3a8c0 20 20 20 20 20 20 20 20 20 20 20 28 74 72 75 6e 63 61 74 65 2d 73 74 72 69 6e 67 2d 74 6f 2d 77 ...........(truncate-string-to-w
3a8e0 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 20 20 64 69 72 65 idth........................dire
3a900 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 20 20 20 20 28 66 ctive.width.nil.nil.t)))).....(f
3a920 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 20 22 ce bb 3a 20 unction......(concat......."..:.
3a940 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 20 20 20 20 20 22 ".......(string-replace........"
3a960 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 20 20 \n".(or.replacement.".")........
3a980 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 20 20 20 (truncate-string-to-width.......
3a9a0 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 75 6d 65 6e 74 61 ..(or.(and-let*.((doc.(documenta
3a9c0 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 20 20 20 20 20 20 tion.directive)))...............
3a9e0 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 2d 6d 61 74 63 68 (substring.doc.nil.(string-match
3aa00 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 20 22 5b 44 79 6e -p."\n".doc)))............."[Dyn
3aa20 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 76 69 65 77 20 61 amically.generated;.no.preview.a
3aa40 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 6e 69 6c 20 6e 69 vailable]").........width.nil.ni
3aa60 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 2a 20 28 28 66 72 l.t)))).....(list.(and-let*.((fr
3aa80 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 29 29 29 0a 20 20 om-template.(car.directive)))...
3aaa0 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 2d 64 69 72 65 63 ..........(gptel--describe-direc
3aac0 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 70 6c 61 74 65 20 tive..............from-template.
3aae0 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 66 75 6e 20 67 70 width))).....(t."")))..(defun.gp
3ab00 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 63 74 69 76 65 20 tel--parse-directive.(directive.
3ab20 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 52 45 43 54 49 56 &optional.raw)..."Parse.DIRECTIV
3ab40 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 74 65 20 66 6f 72 E.into.a.backend-appropriate.for
3ab60 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 69 72 65 63 74 69 m...DIRECTIVE.is.a.gptel.directi
3ab80 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 6c 69 73 74 20 6f ve:.it.can.be.a.string,.a.list.o
3aba0 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 65 69 74 68 65 72 r.a.function.that.returns.either
3abc0 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 0a 52 65 74 75 72 ,.see.`gptel-directives'...Retur
3abe0 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 66 20 74 68 65 20 n.a.cons.cell.consisting.of.the.
3ac00 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 61 6e 64 20 61 20 system.message.(a.string).and.a.
3ac20 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 65 72 6e 61 74 69 template.consisting.of.alternati
3ac40 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 74 20 6f 66 20 73 ng.user/LLM.records.(a.list.of.s
3ac60 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 20 6e 6f 6e 2d 6e trings.or.nil)...If.RAW.is.non-n
3ac80 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 72 65 20 6e 6f 74 il,.the.user/LLM.records.are.not
3aca0 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 64 20 61 73 20 61 .processed.and.are.returned.as.a
3acc0 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 64 69 72 65 63 74 .list.of.strings."...(and.direct
3ace0 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 69 72 65 63 74 69 ive........(cl-etypecase.directi
3ad00 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 74 20 64 69 72 65 ve..........(string...(list.dire
3ad20 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 20 28 67 70 74 65 ctive))..........(function.(gpte
3ad40 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 6c 20 64 69 72 65 l--parse-directive.(funcall.dire
3ad60 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 73 20 20 20 20 20 ctive).raw))..........(cons.....
3ad80 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 20 20 20 20 20 20 (if.raw.directive...............
3ada0 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 65 29 0a 20 20 20 .......(cons.(car.directive)....
3adc0 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 46 49 58 4d 45 ........................;;.FIXME
3ade0 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 65 0a 20 20 20 20 (augment).do.this.elsewhere.....
3ae00 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 70 .......................(gptel--p
3ae20 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 20 20 20 20 20 20 arse-list.......................
3ae40 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 69 72 65 63 74 69 ......gptel-backend.(cdr.directi
3ae60 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 0a 0a 28 64 65 66 ve)))))))).....;;;.Logging..(def
3ae80 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 6d 65 20 22 2a 67 const.gptel--log-buffer-name."*g
3aea0 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 6f 72 20 67 70 74 ptel-log*"..."Log.buffer.for.gpt
3aec0 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 73 6f 6e 2d 70 72 el.")..(declare-function.json-pr
3aee0 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 20 67 70 74 65 6c etty-print."json")..(defun.gptel
3af00 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 20 6e 6f 2d 6a 73 --log.(data.&optional.type.no-js
3af20 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 2d 6c 6f 67 2d 62 on)..."Log.DATA.to.`gptel--log-b
3af40 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 62 65 6c 20 66 6f uffer-name'...TYPE.is.a.label.fo
3af60 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 20 69 73 20 61 73 r.data.being.logged...DATA.is.as
3af80 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 65 73 73 20 4e 4f sumed.to.be.Valid.JSON.unless.NO
3afa0 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 6e 74 2d 62 75 66 -JSON.is.t."...(with-current-buf
3afc0 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 65 6c 2d 2d 6c 6f fer.(get-buffer-create.gptel--lo
3afe0 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 70 20 28 67 6f 74 g-buffer-name).....(let.((p.(got
3b000 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 20 20 28 75 6e 6c o-char.(point-max)))).......(unl
3b020 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 20 20 20 20 20 20 ess.(bobp).(insert."\n")).......
3b040 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 22 3a 20 5c 22 25 (insert.(format."{\"gptel\":.\"%
3b060 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 20 20 20 20 20 20 s\",.".(or.type."none"))........
3b080 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 20 22 5c 22 74 69 .......(format-time-string."\"ti
3b0a0 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 4d 3a 25 53 5c 22 mestamp\":.\"%Y-%m-%d.%H:%M:%S\"
3b0c0 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 20 20 20 20 20 20 }\n")...............data).......
3b0e0 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 72 6f 72 73 20 28 (unless.no-json.(ignore-errors.(
3b100 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 29 29 29 29 29 29 json-pretty-print.p.(point))))))
3b120 29 0a 0a 0c 0a 3b 3b 3b 20 53 61 76 69 6e 67 20 61 6e 64 20 72 65 73 74 6f 72 69 6e 67 20 73 74 )....;;;.Saving.and.restoring.st
3b140 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 2d 70 72 6f 70 73 ate..(defun.gptel--restore-props
3b160 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 20 74 65 78 74 20 .(bounds-alist)..."Restore.text.
3b180 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 53 54 2e 0a 42 4f properties.from.BOUNDS-ALIST..BO
3b1a0 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 44 53 29 2e 20 20 UNDS-ALIST.is.(PROP...BOUNDS)...
3b1c0 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 20 20 45 61 63 68 BOUNDS.is.a.list.of.BOUND...Each
3b1e0 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 56 41 4c 29 20 6f .BOUND.is.either.(BEG.END.VAL).o
3b200 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 20 56 41 4c 29 20 r.(BEG.END)...For.(BEG.END.VAL).
3b220 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 20 74 68 65 20 67 forms,.even.if.VAL.is.nil,.the.g
3b240 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 74 6f 20 28 50 52 ptel.property.will.be.set.to.(PR
3b260 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 66 6f 72 6d 73 2c OP...VAL)...For.(BEG.END).forms,
3b280 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 6e 73 65 2c 0a 74 .except.when.PROP.is.response,.t
3b2a0 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 6f 20 6a 75 73 74 he.gptel.property.is.set.to.just
3b2c0 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 72 65 2c 20 61 20 .PROP...The.legacy.structure,.a.
3b2e0 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 6f 20 73 75 70 70 list.of.(BEG...END).is.also.supp
3b300 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 62 65 66 6f 72 65 orted.and.will.be.applied.before
3b320 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 20 6e 65 77 20 73 .being.re-persisted.in.the.new.s
3b340 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 65 64 20 28 62 75 tructure."...(let.((modified.(bu
3b360 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 20 28 73 79 6d 62 ffer-modified-p))).....(if.(symb
3b380 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 20 20 20 20 20 20 olp.(caar.bounds-alist))........
3b3a0 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 6f 75 6e 64 73 29 .(mapc..........(lambda.(bounds)
3b3c0 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 70 6f 70 20 62 6f ............(let*.((prop.(pop.bo
3b3e0 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 0a 20 20 20 20 20 unds)))..............(mapc......
3b400 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 20 20 20 20 20 20 .........(lambda.(bound)........
3b420 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 61 6c 20 28 3e 20 .........(let.((prop-has-val.(>.
3b440 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 20 20 20 20 20 20 (length.bound).2))).............
3b460 20 20 20 20 20 20 28 61 64 64 2d 74 65 78 74 2d 70 72 6f 70 65 72 74 69 65 73 0a 20 20 20 20 20 ......(add-text-properties......
3b480 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 28 70 6f 70 20 62 ..............(pop.bound).(pop.b
3b4a0 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 69 66 20 28 65 71 ound)....................(if.(eq
3b4c0 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 20 20 20 20 20 20 .prop.'response)................
3b4e0 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 72 6f 6e 74 2d 73 ........'(gptel.response.front-s
3b500 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 20 20 20 20 20 20 ticky.(gptel))..................
3b520 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 20 20 20 20 20 20 ....(list.'gptel................
3b540 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 61 6c 0a 20 20 20 ............(if.prop-has-val....
3b560 20 20 20 20 20 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
3b580 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 20 20 20 20 20 20 s.prop.(pop.bound)).............
3b5a0 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 29 0a 20 20 20 20 .................prop)))))).....
3b5c0 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 20 20 20 62 6f 75 ..........bounds)))..........bou
3b5e0 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 6d 62 64 61 20 28 nds-alist).......(mapc.(lambda.(
3b600 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 74 65 78 74 2d 70 bound)...............(add-text-p
3b620 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 63 61 72 20 62 6f roperties................(car.bo
3b640 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 65 73 70 6f 6e 73 und).(cdr.bound).'(gptel.respons
3b660 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 20 20 20 20 20 20 e.front-sticky.(gptel)))).......
3b680 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 73 65 74 2d 62 75 ......bounds-alist)).....(set-bu
3b6a0 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 29 0a 0a 28 64 65 ffer-modified-p.modified)))..(de
3b6c0 66 75 6e 20 67 70 74 65 6c 2d 2d 72 65 73 74 6f 72 65 2d 73 74 61 74 65 20 28 29 0a 20 20 22 52 fun.gptel--restore-state.()..."R
3b6e0 65 73 74 6f 72 65 20 67 70 74 65 6c 20 73 74 61 74 65 20 77 68 65 6e 20 74 75 72 6e 69 6e 67 20 estore.gptel.state.when.turning.
3b700 6f 6e 20 60 67 70 74 65 6c 2d 6d 6f 64 65 27 2e 22 0a 20 20 28 77 68 65 6e 20 28 62 75 66 66 65 on.`gptel-mode'."...(when.(buffe
3b720 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 76 65 64 2d 6d 6f r-file-name).....(if.(derived-mo
3b740 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 72 6f 67 6e 0a 20 de-p.'org-mode).........(progn..
3b760 20 20 20 20 20 20 20 20 20 28 72 65 71 75 69 72 65 20 27 67 70 74 65 6c 2d 6f 72 67 29 0a 20 20 .........(require.'gptel-org)...
3b780 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 65 2d 73 74 61 74 ........(gptel-org--restore-stat
3b7a0 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 6e 64 73 0a 20 20 e)).......(when.gptel--bounds...
3b7c0 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 73 20 67 70 74 65 ......(gptel--restore-props.gpte
3b7e0 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 65 20 22 67 70 74 l--bounds).........(message."gpt
3b800 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 28 77 68 65 6e el.chat.restored.")).......(when
3b820 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 20 20 20 28 69 66 .gptel--backend-name.........(if
3b840 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 0a 20 20 20 20 20 -let*.((backend.(alist-get......
3b860 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 62 61 .......................gptel--ba
3b880 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 63 6b 65 6e 64 73 ckend-name.gptel--known-backends
3b8a0 0a 20 20 20 20 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 .............................nil
3b8c0 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 20 20 28 73 65 74 .nil.#'equal))).............(set
3b8e0 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 20 q-local.gptel-backend.backend)..
3b900 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 20 20 20 28 73 75 .........(message............(su
3b920 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 20 20 20 20 20 20 bstitute-command-keys...........
3b940 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 75 6c 64 20 6e 6f ..(concat.............."Could.no
3b960 74 20 61 63 74 69 76 61 74 65 20 67 70 74 65 6c 20 62 61 63 6b 65 6e 64 20 5c 22 25 73 5c 22 21 t.activate.gptel.backend.\"%s\"!
3b980 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 61 63 6b 65 6e 64 ..".............."Switch.backend
3b9a0 73 20 77 69 74 68 20 5c 5c 5b 75 6e 69 76 65 72 73 61 6c 2d 61 72 67 75 6d 65 6e 74 5d 20 5c 5c s.with.\\[universal-argument].\\
3b9c0 5b 67 70 74 65 6c 2d 73 65 6e 64 5d 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 22 20 62 65 66 [gptel-send]"..............".bef
3b9e0 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 20 20 20 20 67 ore.using.gptel."))............g
3ba00 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 28 64 65 66 75 6e ptel--backend-name))))))..(defun
3ba20 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 72 69 74 65 20 74 .gptel--save-state.()..."Write.t
3ba40 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 65 72 2e 0a 0a 54 he.gptel.state.to.the.buffer...T
3ba60 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 65 6e 20 77 72 69 his.saves.chat.metadata.when.wri
3ba80 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 54 6f 0a 72 65 73 ting.the.buffer.to.disk...To.res
3baa0 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 6f 6e 20 60 67 70 tore.a.chat.session,.turn.on.`gp
3bac0 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 65 0a 66 69 6c 65 tel-mode'.after.opening.the.file
3bae0 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 65 2d 73 74 61 74 ."...(run-hooks.'gptel-save-stat
3bb00 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 65 2d 70 20 27 6f e-hook)...(if.(derived-mode-p.'o
3bb20 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 20 20 20 20 28 72 rg-mode).......(progn.........(r
3bb40 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 20 28 67 70 74 65 equire.'gptel-org).........(gpte
3bb60 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 65 74 20 28 28 70 l-org--save-state)).....(let.((p
3bb80 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 20 20 20 20 20 28 rint-escape-newlines.t)).......(
3bba0 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 76 65 2d 72 65 73 save-excursion.........(save-res
3bbc0 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 6c 65 2d 6c 6f 63 triction...........(add-file-loc
3bbe0 61 6c 2d 76 61 72 69 61 62 6c 65 20 27 67 70 74 65 6c 2d 6d 6f 64 65 6c 20 67 70 74 65 6c 2d 6d al-variable.'gptel-model.gptel-m
3bc00 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 6c 6f 63 61 6c 2d odel)...........(add-file-local-
3bc20 76 61 72 69 61 62 6c 65 20 27 67 70 74 65 6c 2d 2d 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 0a 20 20 variable.'gptel--backend-name...
3bc40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
3bc60 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
3bc80 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 75 61 6c 20 28 64 nd))...........(unless.(equal.(d
3bca0 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 75 72 65 29 efault-value.'gptel-temperature)
3bcc0 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 20 20 20 20 20 20 .gptel-temperature).............
3bce0 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 67 70 74 65 6c 2d (add-file-local-variable.'gptel-
3bd00 74 65 6d 70 65 72 61 74 75 72 65 20 67 70 74 65 6c 2d 74 65 6d 70 65 72 61 74 75 72 65 29 29 0a temperature.gptel-temperature)).
3bd20 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 64 65 66 61 75 6c ..........(unless.(equal.(defaul
3bd40 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 73 61 67 65 29 0a t-value.'gptel--system-message).
3bd60 20 20 20 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
3bd80 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 61 --system-message).............(a
3bda0 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 20 20 20 20 20 20 dd-file-local-variable..........
3bdc0 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 0a 20 20 20 20 20 ....'gptel--system-message......
3bde0 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 70 61 72 73 65 2d ........(car-safe.(gptel--parse-
3be00 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 65 29 directive.gptel--system-message)
3be20 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 6d 61 78 2d 74 6f )))...........(when.gptel-max-to
3be40 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 2d 6c 6f 63 61 6c kens.............(add-file-local
3be60 2d 76 61 72 69 61 62 6c 65 20 27 67 70 74 65 6c 2d 6d 61 78 2d 74 6f 6b 65 6e 73 20 67 70 74 65 -variable.'gptel-max-tokens.gpte
3be80 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 77 68 65 6e 20 28 l-max-tokens))...........(when.(
3bea0 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 2d 74 6f 2d 73 natnump.gptel--num-messages-to-s
3bec0 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 2d 6c 6f 63 61 6c end).............(add-file-local
3bee0 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 61 67 65 73 2d 74 -variable.'gptel--num-messages-t
3bf00 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 20 o-send..........................
3bf20 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 73 61 67 65 73 2d ............gptel--num-messages-
3bf40 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 69 6c 65 2d 6c 6f to-send))...........(add-file-lo
3bf60 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 73 20 28 67 70 74 cal-variable.'gptel--bounds.(gpt
3bf80 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 29 29 0a 0a 0c 0a el--get-buffer-bounds)))))))....
3bfa0 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 4e 4f 54 45 3a 20 ;;;.Minor.mode.and.UI..;;.NOTE:.
3bfc0 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 73 20 74 68 65 20 It's.not.clear.that.this.is.the.
3bfe0 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 74 20 27 74 65 78 best.strategy:.(add-to-list.'tex
3c000 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 6b 79 20 27 28 67 t-property-default-nonsticky.'(g
3c020 70 74 65 6c 20 2e 20 74 29 29 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a 28 64 65 66 69 ptel...t))..;;;###autoload.(defi
3c040 6e 65 2d 6d 69 6e 6f 72 2d 6d 6f 64 65 20 67 70 74 65 6c 2d 6d 6f 64 65 0a 20 20 22 4d 69 6e 6f ne-minor-mode.gptel-mode..."Mino
3c060 72 20 6d 6f 64 65 20 66 6f 72 20 69 6e 74 65 72 61 63 74 69 6e 67 20 77 69 74 68 20 4c 4c 4d 73 r.mode.for.interacting.with.LLMs
3c080 2e 22 0a 20 20 3a 6c 69 67 68 74 65 72 20 22 20 47 50 54 22 0a 20 20 3a 6b 65 79 6d 61 70 0a 20 ."...:lighter.".GPT"...:keymap..
3c0a0 20 28 6c 65 74 20 28 28 6d 61 70 20 28 6d 61 6b 65 2d 73 70 61 72 73 65 2d 6b 65 79 6d 61 70 29 .(let.((map.(make-sparse-keymap)
3c0c0 29 29 0a 20 20 20 20 28 64 65 66 69 6e 65 2d 6b 65 79 20 6d 61 70 20 28 6b 62 64 20 22 43 2d 63 )).....(define-key.map.(kbd."C-c
3c0e0 20 52 45 54 22 29 20 23 27 67 70 74 65 6c 2d 73 65 6e 64 29 0a 20 20 20 20 6d 61 70 29 0a 20 20 .RET").#'gptel-send).....map)...
3c100 28 69 66 20 67 70 74 65 6c 2d 6d 6f 64 65 0a 20 20 20 20 20 20 28 70 72 6f 67 6e 0a 20 20 20 20 (if.gptel-mode.......(progn.....
3c120 20 20 20 20 28 75 6e 6c 65 73 73 20 28 64 65 72 69 76 65 64 2d 6d 6f 64 65 2d 70 20 27 6f 72 67 ....(unless.(derived-mode-p.'org
3c140 2d 6d 6f 64 65 20 27 6d 61 72 6b 64 6f 77 6e 2d 6d 6f 64 65 20 27 74 65 78 74 2d 6d 6f 64 65 29 -mode.'markdown-mode.'text-mode)
3c160 0a 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 6d 6f 64 65 20 2d 31 29 0a 20 20 20 20 20 ...........(gptel-mode.-1)......
3c180 20 20 20 20 20 28 75 73 65 72 2d 65 72 72 6f 72 20 28 66 6f 72 6d 61 74 20 22 60 67 70 74 65 6c .....(user-error.(format."`gptel
3c1a0 2d 6d 6f 64 65 27 20 69 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 65 64 20 69 6e 20 60 25 73 27 2e -mode'.is.not.supported.in.`%s'.
3c1c0 22 20 6d 61 6a 6f 72 2d 6d 6f 64 65 29 29 29 0a 20 20 20 20 20 20 20 20 28 61 64 64 2d 68 6f 6f ".major-mode))).........(add-hoo
3c1e0 6b 20 27 62 65 66 6f 72 65 2d 73 61 76 65 2d 68 6f 6f 6b 20 23 27 67 70 74 65 6c 2d 2d 73 61 76 k.'before-save-hook.#'gptel--sav
3c200 65 2d 73 74 61 74 65 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 e-state.nil.t).........(gptel--p
3c220 72 65 74 74 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 rettify-preset).........(when.(d
3c240 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 20 20 20 20 20 20 erived-mode-p.'org-mode)........
3c260 20 20 20 3b 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 ...;;.Work.around.bug.in.`org-fo
3c280 6e 74 69 66 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 ntify-extend-region'............
3c2a0 28 61 64 64 2d 68 6f 6f 6b 20 27 67 70 74 65 6c 2d 70 6f 73 74 2d 72 65 73 70 6f 6e 73 65 2d 66 (add-hook.'gptel-post-response-f
3c2c0 75 6e 63 74 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 unctions.#'font-lock-flush.nil.t
3c2e0 29 29 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 73 74 61 74 65 )).........(gptel--restore-state
3c300 29 0a 20 20 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 ).........(if.gptel-use-header-l
3c320 69 6e 65 0a 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 ine...........(setq.gptel--old-h
3c340 65 61 64 65 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 eader-line.header-line-format...
3c360 20 20 20 20 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 ..............header-line-format
3c380 0a 20 20 20 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 .................(list.'(:eval.(
3c3a0 63 6f 6e 63 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 concat.(propertize.".".'display.
3c3c0 27 28 73 70 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 '(space.:align-to.0))...........
3c3e0 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 25 73 .....................(format."%s
3c400 22 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 20 67 70 74 65 6c 2d 62 61 63 6b ".(gptel-backend-name.gptel-back
3c420 65 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 20 20 20 20 28 70 end)))).......................(p
3c440 72 6f 70 65 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 ropertize.".Ready".'face.'succes
3c460 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 27 28 3a 65 76 61 6c s).......................'(:eval
3c480 0a 20 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 .........................(let*.(
3c4a0 28 6d 6f 64 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 (model.(gptel--model-name.gptel-
3c4c0 6d 6f 64 65 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 model)).........................
3c4e0 20 20 20 20 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 ......(system...................
3c500 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 20 .............(propertize........
3c520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 74 74 6f 6e .........................(button
3c540 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 20 20 20 ize.............................
3c560 20 20 20 20 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 .....(format."[Prompt:.%s]".....
3c580 20 20 20 20 20 20 20 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 ..............................(o
3c5a0 72 20 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 r.(car-safe.(rassoc.gptel--syste
3c5c0 6d 2d 6d 65 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 m-message.gptel-directives))....
3c5e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
3c600 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 20 67 70 74 65 6c (gptel--describe-directive.gptel
3c620 2d 2d 73 79 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 --system-message.15)))..........
3c640 20 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.
3c660 28 26 72 65 73 74 20 5f 29 20 28 67 70 74 65 6c 2d 73 79 73 74 65 6d 2d 70 72 6f 6d 70 74 29 29 (&rest._).(gptel-system-prompt))
3c680 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 )...............................
3c6a0 20 20 27 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 ..'mouse-face.'highlight........
3c6c0 20 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 65 .........................'help-e
3c6e0 63 68 6f 20 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 cho."System.message.for.session"
3c700 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 ))..............................
3c720 20 28 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 20 .(context.......................
3c740 20 20 20 20 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 .........(and.gptel-context--ali
3c760 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 20 20 20 20 20 st..............................
3c780 20 20 20 28 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 ...(cl-loop.for.entry.in.gptel-c
3c7a0 6f 6e 74 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 20 ontext--alist...................
3c7c0 20 20 20 20 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 ...............if.(bufferp.(car.
3c7e0 65 6e 74 72 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 entry)).count.it.into.bufs......
3c800 20 20 20 20 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 ............................else
3c820 20 63 6f 75 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 .count.(stringp.(car.entry)).int
3c840 6f 20 66 69 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 o.files.........................
3c860 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.........
3c880 20 20 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 .........................(proper
3c8a0 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 20 20 20 20 20 tize............................
3c8c0 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 20 20 20 .......(buttonize...............
3c8e0 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 5b 43 .....................(concat."[C
3c900 6f 6e 74 65 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 ontext:.".......................
3c920 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 66 ..............(and.(>.bufs.0).(f
3c940 6f 72 6d 61 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 ormat."%d.buf".bufs))...........
3c960 20 20 20 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 28 ..........................(and.(
3c980 3e 20 62 75 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 >.bufs.1)."s")..................
3c9a0 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 66 73 20 ...................(and.(>.bufs.
3c9c0 30 29 20 28 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 0).(>.files.0).",.")............
3c9e0 20 20 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 28 3e .........................(and.(>
3ca00 20 66 69 6c 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 .files.0).(format."%d.file".file
3ca20 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)).............................
3ca40 20 20 20 20 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 ........(and.(>.files.1)."s")...
3ca60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
3ca80 20 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 .."]")..........................
3caa0 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 20 20 20 ..........(lambda.(&rest._).....
3cac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
3cae0 20 28 72 65 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 .(require.'gptel-context).......
3cb00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 ...............................(
3cb20 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 29 0a 20 gptel-context--buffer-setup)))..
3cb40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
3cb60 20 27 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 .'mouse-face.'highlight.........
3cb80 20 20 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-
3cba0 65 63 68 6f 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 echo."Active.gptel.context")))).
3cbc0 20 20 20 20 20 20 20 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
3cbe0 6f 67 67 6c 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 oggle-track-media...............
3cc00 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 73 74 20 .................(lambda.(&rest.
3cc20 5f 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 _)..............................
3cc40 20 20 20 20 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 ....(setq-local.gptel-track-medi
3cc60 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 20 20 20 20 20 a...............................
3cc80 20 20 20 20 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 ....(not.gptel-track-media))....
3cca0 20 20 20 20 20 20 20 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 ..............................(i
3ccc0 66 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 20 20 20 20 20 f.gptel-track-media.............
3cce0 20 20 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 73 73 61 67 .........................(messag
3cd00 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...............................
3cd20 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 20 20 20 ........(concat.................
3cd40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 53 65 6e 64 69 6e 67 20 ......................."Sending.
3cd60 6d 65 64 69 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 media.from.included.links...To.i
3cd80 6e 63 6c 75 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 nclude.media,.create."..........
3cda0 20 20 20 20 20 20 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 .............................."a
3cdc0 20 5c 22 73 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 .\"standalone\".link.in.a.paragr
3cde0 61 70 68 20 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 aph.by.itself,.separated.from.su
3ce00 72 72 6f 75 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 rrounding.text."))..............
3ce20 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 73 73 61 67 65 20 22 ......................(message."
3ce40 49 67 6e 6f 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 Ignoring.image.links...Only.link
3ce60 20 74 65 78 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 .text.will.be.sent."))..........
3ce80 20 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 ........................(run-at-
3cea0 74 69 6d 65 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 time.0.nil.#'force-mode-line-upd
3cec0 61 74 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 ate)))..........................
3cee0 20 20 20 20 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 .....(track-media...............
3cf00 20 20 20 20 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 .................(and.(gptel--mo
3cf20 64 65 6c 2d 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 del-capable-p.'media)...........
3cf40 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 74 65 6c 2d ......................(if.gptel-
3cf60 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 20 20 track-media.....................
3cf80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 0a 20 20 20 20 ................(propertize.....
3cfa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
3cfc0 20 28 62 75 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 .(buttonize."[Sending.media]".to
3cfe0 67 67 6c 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 ggle-track-media)...............
3d000 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 73 65 2d 66 61 .......................'mouse-fa
3d020 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 20 20 20 20 20 ce.'highlight...................
3d040 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 0a 20 20 ...................'help-echo...
3d060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
3d080 20 20 20 22 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 ..."Sending.media.from.standalon
3d0a0 65 20 6c 69 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 e.links/urls.when.supported.\nCl
3d0c0 69 63 6b 20 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 ick.to.toggle").................
3d0e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 0a 20 20 ..................(propertize...
3d100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
3d120 20 28 62 75 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 .(buttonize."[Ignoring.media]".t
3d140 6f 67 67 6c 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 oggle-track-media)..............
3d160 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 73 65 2d 66 61 63 ......................'mouse-fac
3d180 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 20 20 20 20 20 20 e.'highlight....................
3d1a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 68 65 6c 70 2d 65 63 68 6f 0a 20 20 20 20 20 ................'help-echo......
3d1c0 20 20 20 20 20 20 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 .............................."I
3d1e0 67 6e 6f 72 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 gnoring.images.from.standalone.l
3d200 69 6e 6b 73 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 inks/urls.\nClick.to.toggle"))))
3d220 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 ...............................(
3d240 74 6f 67 67 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 toggle-tools.(lambda.(&rest._).(
3d260 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 20 interactive)....................
3d280 20 20 20 20 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 ...........................(run-
3d2a0 61 74 2d 74 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 at-time.0.nil...................
3d2c0 20 20 20 20 20 20 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 .............................(la
3d2e0 6d 62 64 61 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 mbda.().(call-interactively.#'gp
3d300 74 65 6c 2d 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 tel-tools)))))..................
3d320 20 20 20 20 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 .............(tools.(when.(and.g
3d340 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 20 20 20 20 ptel-use-tools.gptel-tools).....
3d360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
3d380 20 20 28 70 72 6f 70 65 72 74 69 7a 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..(propertize...................
3d3a0 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 20 .....................(buttonize.
3d3c0 28 70 63 61 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 (pcase.(length.gptel-tools).....
3d3e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
3d400 20 20 20 20 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 ...............(0."[No.tools]").
3d420 28 31 20 22 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 (1."[1.tool]")..................
3d440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
3d460 20 20 28 6c 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 ..(len.(format."[%d.tools]".len)
3d480 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 ))..............................
3d4a0 20 20 20 20 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 ...........toggle-tools)........
3d4c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
3d4e0 27 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 'mouse-face.'highlight..........
3d500 20 20 20 20 20 20 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 ..............................'h
3d520 65 6c 70 2d 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 elp-echo."Select.tools")))).....
3d540 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 0a 20 20 20 .....................(concat....
3d560 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
3d580 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 20 20 22 20 ze............................".
3d5a0 22 20 27 64 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 ".'display......................
3d5c0 20 20 20 20 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 ......`(space.:align-to.(-.right
3d5e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
3d600 20 20 20 20 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 ...............,(+.5.(length.mod
3d620 65 6c 29 20 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 el).(length.system).............
3d640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
3d660 20 20 20 20 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 ....(length.track-media).(length
3d680 20 63 6f 6e 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 .context).(length.tools)))))....
3d6a0 20 20 20 20 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 .......................tools.(an
3d6c0 64 20 74 72 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 d.track-media.".").track-media.(
3d6e0 61 6e 64 20 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 and.context.".").context.".".sys
3d700 74 65 6d 20 22 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 tem.".".........................
3d720 20 20 28 70 72 6f 70 65 72 74 69 7a 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..(propertize...................
3d740 20 20 20 20 20 20 20 20 20 28 62 75 74 74 6f 6e 69 7a 65 20 28 63 6f 6e 63 61 74 20 22 5b 22 20 .........(buttonize.(concat."[".
3d760 6d 6f 64 65 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 model."]")......................
3d780 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 26 72 65 73 74 20 5f 29 20 28 67 70 74 65 6c 2d .......(lambda.(&rest._).(gptel-
3d7a0 6d 65 6e 75 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 menu))).........................
3d7c0 20 20 20 27 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 ...'mouse-face.'highlight.......
3d7e0 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.
3d800 22 4d 6f 64 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 "Model.in.use"))))))...........(
3d820 73 65 74 71 20 6d 6f 64 65 2d 6c 69 6e 65 2d 70 72 6f 63 65 73 73 0a 20 20 20 20 20 20 20 20 20 setq.mode-line-process..........
3d840 20 20 20 20 20 20 20 27 28 3a 65 76 61 6c 20 28 63 6f 6e 63 61 74 20 22 20 22 0a 20 20 20 20 20 .......'(:eval.(concat."."......
3d860 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 20 28 ....................(buttonize.(
3d880 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 20 gptel--model-name.gptel-model)..
3d8a0 20 20 20 20 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 ...........................(lamb
3d8c0 64 61 20 28 26 72 65 73 74 20 5f 29 20 28 67 70 74 65 6c 2d 6d 65 6e 75 29 29 29 29 29 29 29 29 da.(&rest._).(gptel-menu))))))))
3d8e0 0a 20 20 20 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 .....(remove-hook.'before-save-h
3d900 6f 6f 6b 20 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 ook.#'gptel--save-state.t).....(
3d920 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 69 66 20 gptel--prettify-preset).....(if.
3d940 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 20 28 73 gptel-use-header-line.........(s
3d960 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 2d 6f 6c etq.header-line-format.gptel--ol
3d980 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 70 74 65 d-header-line...............gpte
3d9a0 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 20 28 73 l--old-header-line.nil).......(s
3d9c0 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 0a 0a 28 etq.mode-line-process.nil))))..(
3d9e0 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 20 20 20 defvar.gptel--fsm-last).........
3da00 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 0a 28 64 .......;Defined.further.below.(d
3da20 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 70 74 69 efun.gptel--update-status.(&opti
3da40 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 75 73 20 onal.msg.face)..."Update.status.
3da60 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 6f 64 65 MSG.in.FACE."...(when.gptel-mode
3da80 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 65 0a 20 .....(if.gptel-use-header-line..
3daa0 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 65 2d 66 .......(and.(consp.header-line-f
3dac0 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 68 20 31 ormat)..............(setf.(nth.1
3dae0 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 20 20 20 .header-line-format)............
3db00 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 20 20 20 ........(thread-first...........
3db20 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 20 20 20 ...........msg..................
3db40 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 70 74 65 ....(buttonize.(lambda.(_).(gpte
3db60 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 20 20 20 l--inspect-fsm)))...............
3db80 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 20 27 6d .......(propertize.'face.face.'m
3dba0 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 20 20 28 ouse-face.'highlight)))).......(
3dbc0 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 20 22 20 if.(member.msg.'(".Typing...".".
3dbe0 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 20 6d 6f Waiting..."))...........(setq.mo
3dc00 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 73 67 20 de-line-process.(propertize.msg.
3dc20 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 64 65 2d 'face.face)).........(setq.mode-
3dc40 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 3a 65 76 line-process...............'(:ev
3dc60 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 20 20 20 al.(concat."."..................
3dc80 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 6c 2d 6e ......(buttonize.(gptel--model-n
3dca0 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 20 20 20 ame.gptel-model)................
3dcc0 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 20 28 .............(lambda.(&rest._).(
3dce0 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 73 61 67 gptel-menu)))))).........(messag
3dd00 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 29 29 29 e.(propertize.msg.'face.face))))
3dd20 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 29 29 0a .....(force-mode-line-update))).
3dd40 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 78 74 .(declare-function.gptel-context
3dd60 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 3b 20 54 --wrap."gptel-context")....;;;.T
3dd80 6f 6f 6c 20 75 73 65 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 75 73 65 2d 74 6f ool.use..(defcustom.gptel-use-to
3dda0 6f 6c 73 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 20 75 73 ols.t..."Whether.gptel.should.us
3ddc0 65 20 74 6f 6f 6c 73 2e 0a 0a 54 6f 6f 6c 73 20 61 72 65 20 63 61 70 61 62 69 6c 69 74 69 65 73 e.tools...Tools.are.capabilities
3dde0 20 70 72 6f 76 69 64 65 64 20 62 79 20 79 6f 75 20 74 6f 20 74 68 65 20 4c 4c 4d 20 61 73 20 66 .provided.by.you.to.the.LLM.as.f
3de00 75 6e 63 74 69 6f 6e 73 20 61 6e 0a 4c 4c 4d 20 63 61 6e 20 63 68 6f 6f 73 65 20 74 6f 20 63 61 unctions.an.LLM.can.choose.to.ca
3de20 6c 6c 2e 20 20 67 70 74 65 6c 20 72 75 6e 73 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c ll...gptel.runs.the.function.cal
3de40 6c 20 6f 6e 20 79 6f 75 72 0a 6d 61 63 68 69 6e 65 2e 0a 0a 49 66 20 73 65 74 20 74 6f 20 74 2c l.on.your.machine...If.set.to.t,
3de60 20 61 6e 79 20 74 6f 6f 6c 73 20 73 65 6c 65 63 74 65 64 20 69 6e 20 60 67 70 74 65 6c 2d 74 6f .any.tools.selected.in.`gptel-to
3de80 6f 6c 73 27 20 77 69 6c 6c 20 62 65 20 6d 61 64 65 0a 61 76 61 69 6c 61 62 6c 65 20 74 6f 20 74 ols'.will.be.made.available.to.t
3dea0 68 65 20 4c 4c 4d 2e 20 20 54 68 69 73 20 69 73 20 74 68 65 20 64 65 66 61 75 6c 74 2e 20 20 49 he.LLM...This.is.the.default...I
3dec0 74 20 68 61 73 20 6e 6f 20 65 66 66 65 63 74 20 69 66 0a 6e 6f 20 74 6f 6f 6c 73 20 61 72 65 20 t.has.no.effect.if.no.tools.are.
3dee0 73 65 6c 65 63 74 65 64 2e 0a 0a 49 66 20 73 65 74 20 74 6f 20 66 6f 72 63 65 2c 20 67 70 74 65 selected...If.set.to.force,.gpte
3df00 6c 20 77 69 6c 6c 20 74 72 79 20 74 6f 20 66 6f 72 63 65 20 74 68 65 20 4c 4c 4d 20 74 6f 20 63 l.will.try.to.force.the.LLM.to.c
3df20 61 6c 6c 20 6f 6e 65 20 6f 72 0a 6d 6f 72 65 20 6f 66 20 74 68 65 20 70 72 6f 76 69 64 65 64 20 all.one.or.more.of.the.provided.
3df40 74 6f 6f 6c 73 2e 20 20 53 75 70 70 6f 72 74 20 66 6f 72 20 74 68 69 73 20 66 65 61 74 75 72 65 tools...Support.for.this.feature
3df60 20 64 65 70 65 6e 64 73 20 6f 6e 0a 74 68 65 20 62 61 63 6b 65 6e 64 2f 41 50 49 2c 20 61 6e 64 .depends.on.the.backend/API,.and
3df80 20 67 70 74 65 6c 20 77 69 6c 6c 20 66 61 6c 6c 20 62 61 63 6b 20 74 6f 20 74 68 65 20 64 65 66 .gptel.will.fall.back.to.the.def
3dfa0 61 75 6c 74 20 62 65 68 61 76 69 6f 72 0a 77 68 65 6e 20 66 6f 72 63 69 6e 67 20 74 6f 6f 6c 20 ault.behavior.when.forcing.tool.
3dfc0 75 73 65 20 69 73 20 75 6e 73 75 70 70 6f 72 74 65 64 2e 0a 0a 49 66 20 6e 69 6c 2c 20 74 6f 6f use.is.unsupported...If.nil,.too
3dfe0 6c 20 75 73 65 20 69 73 20 74 75 72 6e 65 64 20 6f 66 66 2e 22 0a 20 20 3a 74 79 70 65 20 27 28 l.use.is.turned.off."...:type.'(
3e000 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 45 6e choice...........(const.:tag."En
3e020 61 62 6c 65 22 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 able".t)...........(const.:tag."
3e040 46 6f 72 63 65 20 74 6f 6f 6c 20 75 73 65 22 20 66 6f 72 63 65 29 0a 20 20 20 20 20 20 20 20 20 Force.tool.use".force)..........
3e060 20 28 63 6f 6e 73 74 20 3a 74 61 67 20 22 54 75 72 6e 20 4f 66 66 22 20 6e 69 6c 29 29 29 0a 0a .(const.:tag."Turn.Off".nil)))..
3e080 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 63 6f 6e 66 69 72 6d 2d 74 6f 6f 6c 2d 63 61 (defcustom.gptel-confirm-tool-ca
3e0a0 6c 6c 73 20 27 61 75 74 6f 0a 20 20 22 57 68 65 74 68 65 72 20 74 6f 6f 6c 20 63 61 6c 6c 73 20 lls.'auto..."Whether.tool.calls.
3e0c0 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 20 72 75 6e 20 should.wait.for.the.user.to.run.
3e0e0 74 68 65 6d 2e 0a 0a 49 66 20 73 65 74 20 74 6f 20 74 20 6f 72 20 6e 69 6c 2c 20 74 6f 6f 6c 20 them...If.set.to.t.or.nil,.tool.
3e100 63 61 6c 6c 73 20 61 6c 77 61 79 73 20 6f 72 20 6e 65 76 65 72 20 73 65 65 6b 20 63 6f 6e 66 69 calls.always.or.never.seek.confi
3e120 72 6d 61 74 69 6f 6e 0a 66 72 6f 6d 20 74 68 65 20 75 73 65 72 20 62 65 66 6f 72 65 20 72 75 6e rmation.from.the.user.before.run
3e140 6e 69 6e 67 2e 0a 0a 49 66 20 73 65 74 20 74 6f 20 74 68 65 20 73 79 6d 62 6f 6c 20 61 75 74 6f ning...If.set.to.the.symbol.auto
3e160 20 28 74 68 65 20 64 65 66 61 75 6c 74 29 2c 20 61 20 74 6f 6f 6c 20 63 61 6c 6c 20 77 69 6c 6c .(the.default),.a.tool.call.will
3e180 20 73 65 65 6b 0a 63 6f 6e 66 69 72 6d 61 74 69 6f 6e 20 6f 6e 6c 79 20 77 68 65 6e 20 74 68 65 .seek.confirmation.only.when.the
3e1a0 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f 6f 6c 20 73 70 65 63 20 68 61 73 20 61 20 6e .corresponding.tool.spec.has.a.n
3e1c0 6f 6e 2d 6e 69 6c 0a 3a 63 6f 6e 66 69 72 6d 20 73 6c 6f 74 2e 20 20 53 65 65 20 60 67 70 74 65 on-nil.:confirm.slot...See.`gpte
3e1e0 6c 2d 6d 61 6b 65 2d 74 6f 6f 6c 27 2e 22 0a 20 20 3a 74 79 70 65 20 27 28 63 68 6f 69 63 65 0a l-make-tool'."...:type.'(choice.
3e200 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 20 22 54 6f 6f 6c 20 64 65 63 69 ..........(const.:tag."Tool.deci
3e220 64 65 73 22 20 61 75 74 6f 29 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 des".auto)...........(const.:tag
3e240 20 22 41 6c 77 61 79 73 22 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 ."Always".t)...........(const.:t
3e260 61 67 20 22 4e 65 76 65 72 22 20 6e 69 6c 29 29 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 ag."Never".nil)))..(defcustom.gp
3e280 74 65 6c 2d 69 6e 63 6c 75 64 65 2d 74 6f 6f 6c 2d 72 65 73 75 6c 74 73 20 27 61 75 74 6f 0a 20 tel-include-tool-results.'auto..
3e2a0 20 22 57 68 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 ."Whether.tool.call.results.shou
3e2c0 6c 64 20 62 65 20 69 6e 63 6c 75 64 65 64 20 69 6e 20 74 68 65 20 62 75 66 66 65 72 2e 0a 0a 49 ld.be.included.in.the.buffer...I
3e2e0 66 20 73 65 74 20 74 6f 20 74 20 6f 72 20 6e 69 6c 2c 20 72 65 73 75 6c 74 73 20 6f 66 20 74 6f f.set.to.t.or.nil,.results.of.to
3e300 6f 6c 20 63 61 6c 6c 73 20 61 72 65 20 61 6c 77 61 79 73 20 6f 72 20 6e 65 76 65 72 0a 69 6e 63 ol.calls.are.always.or.never.inc
3e320 6c 75 64 65 64 20 69 6e 20 74 68 65 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 2c 20 72 65 73 70 65 luded.in.the.LLM.response,.respe
3e340 63 74 69 76 65 6c 79 2e 0a 0a 49 66 20 73 65 74 20 74 6f 20 74 68 65 20 73 79 6d 62 6f 6c 20 61 ctively...If.set.to.the.symbol.a
3e360 75 74 6f 20 28 74 68 65 20 64 65 66 61 75 6c 74 29 2c 20 61 20 74 6f 6f 6c 20 63 61 6c 6c 20 72 uto.(the.default),.a.tool.call.r
3e380 65 73 75 6c 74 20 69 73 0a 69 6e 63 6c 75 64 65 64 20 6f 6e 6c 79 20 77 68 65 6e 20 74 68 65 20 esult.is.included.only.when.the.
3e3a0 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f 6f 6c 20 73 70 65 63 20 68 61 73 20 61 20 6e 6f corresponding.tool.spec.has.a.no
3e3c0 6e 2d 6e 69 6c 0a 3a 69 6e 63 6c 75 64 65 20 73 6c 6f 74 2e 20 20 53 65 65 20 60 67 70 74 65 6c n-nil.:include.slot...See.`gptel
3e3e0 2d 6d 61 6b 65 2d 74 6f 6f 6c 27 2e 22 0a 20 20 3a 74 79 70 65 20 27 28 63 68 6f 69 63 65 0a 20 -make-tool'."...:type.'(choice..
3e400 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 20 22 54 6f 6f 6c 20 64 65 63 69 64 .........(const.:tag."Tool.decid
3e420 65 73 22 20 61 75 74 6f 29 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 20 es".auto)...........(const.:tag.
3e440 22 41 6c 77 61 79 73 22 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61 "Always".t)...........(const.:ta
3e460 67 20 22 4e 65 76 65 72 22 20 6e 69 6c 29 29 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 g."Never".nil)))..(defcustom.gpt
3e480 65 6c 2d 74 6f 6f 6c 73 20 6e 69 6c 0a 20 20 22 41 20 6c 69 73 74 20 6f 66 20 74 6f 6f 6c 73 20 el-tools.nil..."A.list.of.tools.
3e4a0 74 6f 20 69 6e 63 6c 75 64 65 20 77 69 74 68 20 67 70 74 65 6c 20 72 65 71 75 65 73 74 73 2e 0a to.include.with.gptel.requests..
3e4c0 0a 45 61 63 68 20 74 6f 6f 6c 20 73 68 6f 75 6c 64 20 62 65 20 61 20 60 67 70 74 65 6c 2d 74 6f .Each.tool.should.be.a.`gptel-to
3e4e0 6f 6c 27 20 73 74 72 75 63 74 2c 20 77 68 69 63 68 20 73 65 65 2e 20 20 54 6f 20 73 70 65 63 69 ol'.struct,.which.see...To.speci
3e500 66 79 0a 61 20 74 6f 6f 6c 2c 20 75 73 65 20 60 67 70 74 65 6c 2d 6d 61 6b 65 2d 74 6f 6f 6c 27 fy.a.tool,.use.`gptel-make-tool'
3e520 2c 20 77 68 69 63 68 20 73 65 65 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 67 70 74 65 6c 0a 20 20 ,.which.see."...:group.'gptel...
3e540 3a 74 79 70 65 20 27 28 72 65 70 65 61 74 20 67 70 74 65 6c 2d 74 6f 6f 6c 29 29 0a 0a 28 63 6c :type.'(repeat.gptel-tool))..(cl
3e560 2d 64 65 66 73 74 72 75 63 74 20 28 67 70 74 65 6c 2d 74 6f 6f 6c 20 28 3a 63 6f 6e 73 74 72 75 -defstruct.(gptel-tool.(:constru
3e580 63 74 6f 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 ctor.nil).......................
3e5a0 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 65 2d 74 6f ....(:constructor.gptel--make-to
3e5c0 6f 6c 2d 69 6e 74 65 72 6e 61 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ol-internal.....................
3e5e0 20 20 20 20 20 20 20 28 26 6b 65 79 20 66 75 6e 63 74 69 6f 6e 20 6e 61 6d 65 20 64 65 73 63 72 .......(&key.function.name.descr
3e600 69 70 74 69 6f 6e 20 61 72 67 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 iption.args.....................
3e620 20 20 20 20 20 20 20 20 20 20 20 20 20 61 73 79 6e 63 20 63 61 74 65 67 6f 72 79 20 63 6f 6e 66 .............async.category.conf
3e640 69 72 6d 20 69 6e 63 6c 75 64 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 irm.include.....................
3e660 20 20 20 20 20 20 20 20 20 20 20 20 20 26 61 6c 6c 6f 77 2d 6f 74 68 65 72 2d 6b 65 79 73 29 29 .............&allow-other-keys))
3e680 0a 20 20 20 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 ...........................(:cop
3e6a0 69 65 72 20 67 70 74 65 6c 2d 2d 63 6f 70 79 2d 74 6f 6f 6c 29 29 0a 20 20 22 53 74 72 75 63 74 ier.gptel--copy-tool))..."Struct
3e6c0 20 74 6f 20 73 70 65 63 69 66 79 20 74 6f 6f 6c 73 20 66 6f 72 20 4c 4c 4d 73 20 74 6f 20 72 75 .to.specify.tools.for.LLMs.to.ru
3e6e0 6e 2e 0a 0a 41 20 74 6f 6f 6c 20 69 73 20 61 20 66 75 6e 63 74 69 6f 6e 20 73 70 65 63 69 66 69 n...A.tool.is.a.function.specifi
3e700 63 61 74 69 6f 6e 20 73 65 6e 74 20 74 6f 20 74 68 65 20 4c 4c 4d 20 61 6c 6f 6e 67 20 77 69 74 cation.sent.to.the.LLM.along.wit
3e720 68 0a 61 20 28 70 6c 61 69 6e 20 6c 61 6e 67 75 61 67 65 29 20 74 61 73 6b 2e 20 20 49 66 20 74 h.a.(plain.language).task...If.t
3e740 68 65 20 4c 4c 4d 20 64 65 63 69 64 65 73 20 74 6f 20 75 73 65 20 74 68 65 20 74 6f 6f 6c 20 74 he.LLM.decides.to.use.the.tool.t
3e760 6f 0a 61 63 63 6f 6d 70 6c 69 73 68 20 74 68 65 20 74 61 73 6b 2c 20 67 70 74 65 6c 20 77 69 6c o.accomplish.the.task,.gptel.wil
3e780 6c 20 72 75 6e 20 74 68 65 20 74 6f 6f 6c 20 61 6e 64 20 28 6f 70 74 69 6f 6e 61 6c 6c 79 29 0a l.run.the.tool.and.(optionally).
3e7a0 66 65 65 64 20 74 68 65 20 4c 4c 4d 20 74 68 65 20 72 65 73 75 6c 74 73 2e 20 20 59 6f 75 20 63 feed.the.LLM.the.results...You.c
3e7c0 61 6e 20 61 64 64 20 74 6f 6f 6c 73 20 76 69 61 0a 60 67 70 74 65 6c 2d 6d 61 6b 65 2d 74 6f 6f an.add.tools.via.`gptel-make-too
3e7e0 6c 27 2c 20 77 68 69 63 68 20 73 65 65 2e 22 0a 20 20 28 66 75 6e 63 74 69 6f 6e 20 6e 69 6c 20 l',.which.see."...(function.nil.
3e800 3a 74 79 70 65 20 66 75 6e 63 74 69 6f 6e 20 3a 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 22 46 :type.function.:documentation."F
3e820 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 72 75 6e 73 20 74 68 65 20 74 6f 6f 6c 22 29 0a 20 20 28 unction.that.runs.the.tool")...(
3e840 6e 61 6d 65 20 6e 69 6c 20 3a 74 79 70 65 20 73 74 72 69 6e 67 20 3a 64 6f 63 75 6d 65 6e 74 61 name.nil.:type.string.:documenta
3e860 74 69 6f 6e 20 22 54 6f 6f 6c 20 6e 61 6d 65 2c 20 73 6e 61 6b 65 5f 63 61 73 65 20 72 65 63 6f tion."Tool.name,.snake_case.reco
3e880 6d 6d 65 6e 64 65 64 22 29 0a 20 20 28 64 65 73 63 72 69 70 74 69 6f 6e 20 6e 69 6c 20 3a 74 79 mmended")...(description.nil.:ty
3e8a0 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 57 68 61 74 20 74 pe.string.:documentation."What.t
3e8c0 68 65 20 74 6f 6f 6c 20 64 6f 65 73 2c 20 69 6e 74 65 6e 64 65 64 20 66 6f 72 20 74 68 65 20 4c he.tool.does,.intended.for.the.L
3e8e0 4c 4d 22 29 0a 20 20 28 61 72 67 73 20 6e 69 6c 20 3a 74 79 70 65 20 6c 69 73 74 20 3a 64 6f 63 LM")...(args.nil.:type.list.:doc
3e900 75 6d 65 6e 74 61 74 69 6f 6e 20 22 4c 69 73 74 20 6f 66 20 70 6c 69 73 74 73 20 73 70 65 63 69 umentation."List.of.plists.speci
3e920 66 79 69 6e 67 20 66 75 6e 63 74 69 6f 6e 20 61 72 67 75 6d 65 6e 74 73 22 29 0a 20 20 28 61 73 fying.function.arguments")...(as
3e940 79 6e 63 20 6e 69 6c 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 ync.nil.:type.boolean.:documenta
3e960 74 69 6f 6e 20 22 57 68 65 74 68 65 72 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 72 75 6e 73 20 tion."Whether.the.function.runs.
3e980 61 73 79 6e 63 68 72 6f 6e 6f 75 73 6c 79 22 29 0a 20 20 28 63 61 74 65 67 6f 72 79 20 6e 69 6c asynchronously")...(category.nil
3e9a0 20 3a 74 79 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 55 73 .:type.string.:documentation."Us
3e9c0 65 20 74 6f 20 67 72 6f 75 70 20 74 6f 6f 6c 73 20 62 79 20 70 75 72 70 6f 73 65 22 29 0a 20 20 e.to.group.tools.by.purpose")...
3e9e0 28 63 6f 6e 66 69 72 6d 20 6e 69 6c 20 3a 74 79 70 65 20 62 6f 6f 6c 65 61 6e 20 3a 64 6f 63 75 (confirm.nil.:type.boolean.:docu
3ea00 6d 65 6e 74 61 74 69 6f 6e 20 22 53 65 65 6b 20 63 6f 6e 66 69 72 6d 61 74 69 6f 6e 20 62 65 66 mentation."Seek.confirmation.bef
3ea20 6f 72 65 20 72 75 6e 6e 69 6e 67 20 74 6f 6f 6c 3f 22 29 0a 20 20 28 69 6e 63 6c 75 64 65 20 6e ore.running.tool?")...(include.n
3ea40 69 6c 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 il.:type.boolean.:documentation.
3ea60 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 62 75 66 66 65 72 3f "Include.tool.results.in.buffer?
3ea80 22 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 74 6f "))..(defun.gptel--preprocess-to
3eaa0 6f 6c 2d 61 72 67 73 20 28 73 70 65 63 29 0a 20 20 22 43 6f 6e 76 65 72 74 20 73 79 6d 62 6f 6c ol-args.(spec)..."Convert.symbol
3eac0 20 3a 74 79 70 65 20 76 61 6c 75 65 73 20 69 6e 20 74 6f 6f 6c 20 53 50 45 43 20 74 6f 20 73 74 .:type.values.in.tool.SPEC.to.st
3eae0 72 69 6e 67 73 20 64 65 73 74 72 75 63 74 69 76 65 6c 79 2e 22 0a 20 20 3b 3b 20 4e 4f 54 45 3a rings.destructively."...;;.NOTE:
3eb00 20 44 6f 20 6e 6f 74 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 .Do.not.use.`sequencep'.here,.as
3eb20 20 74 68 61 74 20 63 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 .that.covers.strings.too.and.bre
3eb40 61 6b 73 0a 20 20 3b 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 aks...;;.things....(when.(or.(li
3eb60 73 74 70 20 73 70 65 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 stp.spec).(vectorp.spec)).....(c
3eb80 6f 6e 64 0a 20 20 20 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 ond......((vectorp.spec).......(
3eba0 63 6c 2d 6c 6f 6f 70 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 cl-loop.for.element.across.spec.
3ebc0 20 20 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 30 0a ...............for.idx.upfrom.0.
3ebe0 20 20 20 20 20 20 20 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 ...............do.(aset.spec.idx
3ec00 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 6c .(gptel--preprocess-tool-args.el
3ec20 65 6d 65 6e 74 29 29 29 29 0a 20 20 20 20 20 28 28 6b 65 79 77 6f 72 64 70 20 28 63 61 72 20 73 ement))))......((keywordp.(car.s
3ec40 70 65 63 29 29 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 74 61 69 6c 20 73 70 65 63 29 29 0a 20 pec)).......(let.((tail.spec))..
3ec60 20 20 20 20 20 20 20 28 77 68 69 6c 65 20 74 61 69 6c 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 .......(while.tail...........(wh
3ec80 65 6e 20 28 61 6e 64 20 28 65 71 20 28 63 61 72 20 74 61 69 6c 29 20 3a 74 79 70 65 29 20 28 73 en.(and.(eq.(car.tail).:type).(s
3eca0 79 6d 62 6f 6c 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 20 20 ymbolp.(cadr.tail)))............
3ecc0 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 6e 61 6d 65 .(setcar.(cdr.tail).(symbol-name
3ece0 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 3b 3b 20 54 4f 44 .(cadr.tail))))...........;;.TOD
3ed00 4f 3a 20 48 61 6e 64 6c 65 20 3a 65 6e 75 6d 20 28 22 70 72 6f 76 69 64 65 64 22 20 22 61 73 22 O:.Handle.:enum.("provided"."as"
3ed20 20 22 6c 69 73 74 22 29 20 68 65 72 65 2c 20 63 6f 6e 76 65 72 74 20 74 6f 0a 20 20 20 20 20 20 ."list").here,.convert.to.......
3ed40 20 20 20 20 3b 3b 20 3a 65 6e 75 6d 20 5b 22 70 72 6f 76 69 64 65 64 22 20 22 61 73 22 20 22 61 ....;;.:enum.["provided"."as"."a
3ed60 72 72 61 79 22 5d 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 6f 72 20 28 6c 69 73 74 rray"]...........(when.(or.(list
3ed80 70 20 28 63 61 64 72 20 74 61 69 6c 29 29 20 28 76 65 63 74 6f 72 70 20 28 63 61 64 72 20 74 61 p.(cadr.tail)).(vectorp.(cadr.ta
3eda0 69 6c 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 70 72 65 70 72 6f il))).............(gptel--prepro
3edc0 63 65 73 73 2d 74 6f 6f 6c 2d 61 72 67 73 20 28 63 61 64 72 20 74 61 69 6c 29 29 29 0a 20 20 20 cess-tool-args.(cadr.tail)))....
3ede0 20 20 20 20 20 20 20 28 73 65 74 71 20 74 61 69 6c 20 28 63 64 64 72 20 74 61 69 6c 29 29 29 29 .......(setq.tail.(cddr.tail))))
3ee00 29 0a 20 20 20 20 20 28 28 6c 69 73 74 70 20 73 70 65 63 29 20 28 64 6f 6c 69 73 74 20 28 65 6c )......((listp.spec).(dolist.(el
3ee20 65 6d 65 6e 74 20 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 ement.spec).....................
3ee40 20 28 77 68 65 6e 20 28 6c 69 73 74 70 20 65 6c 65 6d 65 6e 74 29 0a 20 20 20 20 20 20 20 20 20 .(when.(listp.element)..........
3ee60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 70 72 65 70 72 6f 63 65 73 73 ..............(gptel--preprocess
3ee80 2d 74 6f 6f 6c 2d 61 72 67 73 20 65 6c 65 6d 65 6e 74 29 29 29 29 29 29 0a 20 20 73 70 65 63 29 -tool-args.element))))))...spec)
3eea0 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 6d 61 6b 65 2d 74 6f 6f 6c 20 28 26 72 65 73 74 ..(defun.gptel--make-tool.(&rest
3eec0 20 73 70 65 63 29 0a 20 20 22 43 6f 6e 73 74 72 75 63 74 20 61 20 67 70 74 65 6c 2d 74 6f 6f 6c .spec)..."Construct.a.gptel-tool
3eee0 20 61 63 63 6f 72 64 69 6e 67 20 74 6f 20 53 50 45 43 2e 22 0a 20 20 28 67 70 74 65 6c 2d 2d 70 .according.to.SPEC."...(gptel--p
3ef00 72 65 70 72 6f 63 65 73 73 2d 74 6f 6f 6c 2d 61 72 67 73 20 28 70 6c 69 73 74 2d 67 65 74 20 73 reprocess-tool-args.(plist-get.s
3ef20 70 65 63 20 3a 61 72 67 73 29 29 0a 20 20 28 61 70 70 6c 79 20 23 27 67 70 74 65 6c 2d 2d 6d 61 pec.:args))...(apply.#'gptel--ma
3ef40 6b 65 2d 74 6f 6f 6c 2d 69 6e 74 65 72 6e 61 6c 20 73 70 65 63 29 29 0a 0a 28 64 65 66 76 61 72 ke-tool-internal.spec))..(defvar
3ef60 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 74 6f 6f 6c 73 20 6e 69 6c 0a 20 20 22 41 6c 69 73 74 .gptel--known-tools.nil..."Alist
3ef80 20 6f 66 20 67 70 74 65 6c 20 74 6f 6f 6c 73 20 61 72 72 61 6e 67 65 64 20 62 79 20 63 61 74 65 .of.gptel.tools.arranged.by.cate
3efa0 67 6f 72 79 2e 0a 0a 41 20 5c 22 74 6f 6f 6c 5c 22 20 69 73 20 61 20 66 75 6e 63 74 69 6f 6e 20 gory...A.\"tool\".is.a.function.
3efc0 73 70 65 63 20 28 64 65 66 69 6e 69 74 69 6f 6e 20 61 6e 64 20 64 65 73 63 72 69 70 74 69 6f 6e spec.(definition.and.description
3efe0 29 0a 70 72 6f 76 69 64 65 64 20 62 79 20 67 70 74 65 6c 20 74 6f 20 61 6e 20 4c 4c 4d 2e 20 20 ).provided.by.gptel.to.an.LLM...
3f000 53 65 65 20 60 67 70 74 65 6c 2d 74 6f 6f 6c 27 2e 20 20 45 61 63 68 20 74 6f 6f 6c 20 69 73 0a See.`gptel-tool'...Each.tool.is.
3f020 61 73 73 69 67 6e 65 64 20 61 20 63 61 74 65 67 6f 72 79 20 77 68 65 6e 20 69 74 20 69 73 20 63 assigned.a.category.when.it.is.c
3f040 72 65 61 74 65 64 2c 20 77 69 74 68 20 61 20 63 61 74 65 67 6f 72 79 20 6f 66 0a 5c 22 6d 69 73 reated,.with.a.category.of.\"mis
3f060 63 5c 22 20 69 66 20 6e 6f 6e 65 20 69 73 20 73 70 65 63 69 66 69 65 64 2e 0a 0a 54 68 69 73 20 c\".if.none.is.specified...This.
3f080 69 73 20 61 20 74 77 6f 2d 6c 65 76 65 6c 20 61 6c 69 73 74 20 6d 61 70 70 69 6e 67 20 63 61 74 is.a.two-level.alist.mapping.cat
3f0a0 65 67 6f 72 69 65 73 20 61 6e 64 20 74 6f 6f 6c 20 6e 61 6d 65 73 20 74 6f 0a 74 68 65 20 74 6f egories.and.tool.names.to.the.to
3f0c0 6f 6c 20 69 74 73 65 6c 66 2e 20 20 49 74 20 69 73 20 75 73 65 64 20 61 73 20 61 20 67 6c 6f 62 ol.itself...It.is.used.as.a.glob
3f0e0 61 6c 20 72 65 67 69 73 74 65 72 20 6f 66 20 61 76 61 69 6c 61 62 6c 65 0a 74 6f 6f 6c 73 20 61 al.register.of.available.tools.a
3f100 6e 64 20 69 6e 20 67 70 74 65 6c 27 73 20 55 49 2c 20 73 65 65 20 60 67 70 74 65 6c 2d 74 6f 6f nd.in.gptel's.UI,.see.`gptel-too
3f120 6c 73 27 2e 0a 0a 49 6e 20 74 68 69 73 20 65 78 61 6d 70 6c 65 20 73 74 72 75 63 74 75 72 65 2c ls'...In.this.example.structure,
3f140 20 63 61 74 2d 74 6f 6f 6c 20 61 6e 64 20 74 68 65 20 72 65 73 74 20 61 72 65 20 63 6c 2d 73 74 .cat-tool.and.the.rest.are.cl-st
3f160 72 75 63 74 73 0a 6f 66 20 74 79 70 65 20 60 67 70 74 65 6c 2d 74 6f 6f 6c 27 3a 0a 0a 20 20 20 ructs.of.type.`gptel-tool':.....
3f180 43 41 54 45 47 4f 52 59 20 20 20 20 20 20 20 20 20 54 4f 4f 4c 20 4e 41 4d 45 20 20 20 20 20 20 CATEGORY.........TOOL.NAME......
3f1a0 20 20 20 20 54 4f 4f 4c 0a 20 28 28 5c 22 66 69 6c 65 73 79 73 74 65 6d 5c 22 20 2e 20 28 28 5c ....TOOL..((\"filesystem\"...((\
3f1c0 22 72 65 61 64 5f 66 69 6c 65 5c 22 20 20 20 20 20 20 2e 20 63 61 74 2d 74 6f 6f 6c 29 0a 20 20 "read_file\"........cat-tool)...
3f1e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 5c 22 6c 69 73 74 5f 64 69 72 65 63 74 6f .................(\"list_directo
3f200 72 79 5c 22 20 2e 20 6c 73 2d 74 6f 6f 6c 29 29 29 0a 20 20 28 5c 22 65 6d 61 63 73 5c 22 20 20 ry\"...ls-tool)))...(\"emacs\"..
3f220 20 20 20 20 2e 20 28 28 5c 22 72 65 61 64 5f 62 75 66 66 65 72 5c 22 20 20 20 20 2e 20 62 75 66 ......((\"read_buffer\"......buf
3f240 66 65 72 2d 73 75 62 73 74 72 69 6e 67 2d 74 6f 6f 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 fer-substring-tool).............
3f260 20 20 20 20 20 20 20 28 5c 22 73 65 6e 64 5f 6d 65 73 73 61 67 65 5c 22 20 20 20 2e 20 6d 65 73 .......(\"send_message\".....mes
3f280 73 61 67 65 2d 74 6f 6f 6c 29 29 29 29 0a 0a 54 68 69 73 20 76 61 72 69 61 62 6c 65 20 69 73 20 sage-tool))))..This.variable.is.
3f2a0 66 6f 72 20 69 6e 74 65 72 6e 61 6c 20 75 73 65 20 6f 6e 6c 79 2c 20 74 6f 20 64 65 66 69 6e 65 for.internal.use.only,.to.define
3f2c0 20 61 20 74 6f 6f 6c 20 75 73 65 0a 60 67 70 74 65 6c 2d 6d 61 6b 65 2d 74 6f 6f 6c 27 2e 22 29 .a.tool.use.`gptel-make-tool'.")
3f2e0 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 67 65 74 2d 74 6f 6f 6c 20 28 70 61 74 68 29 0a 20 ..(defun.gptel-get-tool.(path)..
3f300 20 22 46 69 6e 64 20 74 6f 6f 6c 20 69 6e 20 67 70 74 65 6c 27 73 20 74 6f 6f 6c 20 72 65 67 69 ."Find.tool.in.gptel's.tool.regi
3f320 73 74 72 79 20 61 74 20 50 41 54 48 2e 0a 0a 50 41 54 48 20 63 61 6e 20 62 65 20 73 70 65 63 69 stry.at.PATH...PATH.can.be.speci
3f340 66 69 65 64 0a 2d 20 61 73 20 61 20 73 74 72 69 6e 67 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20 fied.-.as.a.string.representing.
3f360 74 68 65 20 74 6f 6f 6c 20 6e 61 6d 65 2c 20 6c 69 6b 65 20 5c 22 73 65 61 72 63 68 5f 64 62 5c the.tool.name,.like.\"search_db\
3f380 22 2c 0a 2d 20 6f 72 20 61 73 20 61 20 6c 69 73 74 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20 61 ",.-.or.as.a.list.representing.a
3f3a0 20 63 61 74 65 67 6f 72 79 20 61 6e 64 20 74 6f 6f 6c 20 6e 61 6d 65 2c 0a 20 20 6c 69 6b 65 20 .category.and.tool.name,...like.
3f3c0 5c 5c 3d 27 28 5c 22 65 6d 61 63 73 5c 22 20 5c 22 72 65 61 64 5f 62 75 66 66 65 72 5c 22 29 2e \\='(\"emacs\".\"read_buffer\").
3f3e0 0a 49 6e 20 62 6f 74 68 20 63 61 73 65 73 2c 20 74 68 65 20 66 69 72 73 74 20 6d 61 74 63 68 69 .In.both.cases,.the.first.matchi
3f400 6e 67 20 67 70 74 65 6c 2d 74 6f 6f 6c 20 69 73 20 72 65 74 75 72 6e 65 64 2e 0a 0a 2d 20 61 73 ng.gptel-tool.is.returned...-.as
3f420 20 61 20 73 74 72 69 6e 67 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20 61 20 63 61 74 65 67 6f 72 .a.string.representing.a.categor
3f440 79 2c 20 6c 69 6b 65 20 5c 22 66 69 6c 65 73 79 73 74 65 6d 5c 22 2e 0a 49 6e 20 74 68 69 73 20 y,.like.\"filesystem\"..In.this.
3f460 63 61 73 65 20 61 20 6c 69 73 74 20 6f 66 20 61 6c 6c 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 20 77 case.a.list.of.all.gptel-tools.w
3f480 69 74 68 20 74 68 69 73 20 63 61 74 65 67 6f 72 79 20 69 73 0a 72 65 74 75 72 6e 65 64 2e 22 0a ith.this.category.is.returned.".
3f4a0 20 20 28 6f 72 20 28 63 6c 2d 65 74 79 70 65 63 61 73 65 20 70 61 74 68 0a 20 20 20 20 20 20 20 ..(or.(cl-etypecase.path........
3f4c0 20 28 63 6f 6e 73 20 28 6c 65 74 20 28 28 74 63 20 28 6d 61 70 2d 6e 65 73 74 65 64 2d 65 6c 74 .(cons.(let.((tc.(map-nested-elt
3f4e0 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 74 6f 6f 6c 73 20 70 61 74 68 29 29 29 0a 20 20 20 20 .gptel--known-tools.path))).....
3f500 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 63 6f 6e 73 70 20 74 63 29 20 28 6d 61 70 2d ............(if.(consp.tc).(map-
3f520 76 61 6c 75 65 73 20 74 63 29 20 74 63 29 29 29 0a 20 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 values.tc).tc))).........(string
3f540 20 28 69 66 2d 6c 65 74 2a 20 28 28 63 61 74 65 67 6f 72 79 20 28 61 73 73 6f 63 20 70 61 74 68 .(if-let*.((category.(assoc.path
3f560 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 74 6f 6f 6c 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 .gptel--known-tools)))..........
3f580 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 70 2d 76 61 6c 75 65 73 20 28 63 64 72 20 63 61 74 65 ...........(map-values.(cdr.cate
3f5a0 67 6f 72 79 29 29 0a 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 gory))...................(cl-loo
3f5c0 70 20 66 6f 72 20 28 5f 20 2e 20 74 6f 6f 6c 73 29 20 69 6e 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 p.for.(_...tools).in.gptel--know
3f5e0 6e 2d 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 n-tools.........................
3f600 20 20 20 69 66 20 28 61 73 73 6f 63 20 70 61 74 68 20 74 6f 6f 6c 73 29 0a 20 20 20 20 20 20 20 ...if.(assoc.path.tools)........
3f620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 63 64 72 20 ....................return.(cdr.
3f640 69 74 29 29 29 29 29 0a 20 20 20 20 20 20 28 65 72 72 6f 72 20 22 4e 6f 20 74 6f 6f 6c 20 6d 61 it))))).......(error."No.tool.ma
3f660 74 63 68 65 73 20 66 6f 72 20 25 53 22 20 70 61 74 68 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 tches.for.%S".path)))..(defun.gp
3f680 74 65 6c 2d 6d 61 6b 65 2d 74 6f 6f 6c 20 28 26 72 65 73 74 20 73 6c 6f 74 73 29 0a 20 20 22 4d tel-make-tool.(&rest.slots)..."M
3f6a0 61 6b 65 20 61 20 67 70 74 65 6c 20 74 6f 6f 6c 20 66 6f 72 20 4c 4c 4d 20 75 73 65 2e 0a 0a 54 ake.a.gptel.tool.for.LLM.use...T
3f6c0 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 6b 65 79 77 6f 72 64 20 61 72 67 75 6d 65 6e 74 73 20 61 he.following.keyword.arguments.a
3f6e0 72 65 20 61 76 61 69 6c 61 62 6c 65 2c 20 6f 66 20 77 68 69 63 68 20 74 68 65 20 66 69 72 73 74 re.available,.of.which.the.first
3f700 0a 66 6f 75 72 20 61 72 65 20 72 65 71 75 69 72 65 64 2e 0a 0a 4e 41 4d 45 3a 20 54 68 65 20 6e .four.are.required...NAME:.The.n
3f720 61 6d 65 20 6f 66 20 74 68 65 20 74 6f 6f 6c 2c 20 72 65 63 6f 6d 6d 65 6e 64 65 64 20 74 6f 20 ame.of.the.tool,.recommended.to.
3f740 62 65 20 69 6e 20 4a 61 76 61 73 63 72 69 70 74 20 73 74 79 6c 65 20 73 6e 61 6b 65 5f 63 61 73 be.in.Javascript.style.snake_cas
3f760 65 2e 0a 0a 46 55 4e 43 54 49 4f 4e 3a 20 54 68 65 20 66 75 6e 63 74 69 6f 6e 20 69 74 73 65 6c e...FUNCTION:.The.function.itsel
3f780 66 20 28 6c 61 6d 62 64 61 20 6f 72 20 73 79 6d 62 6f 6c 29 20 74 68 61 74 20 72 75 6e 73 20 74 f.(lambda.or.symbol).that.runs.t
3f7a0 68 65 20 74 6f 6f 6c 2e 0a 0a 44 45 53 43 52 49 50 54 49 4f 4e 3a 20 41 20 76 65 72 62 6f 73 65 he.tool...DESCRIPTION:.A.verbose
3f7c0 20 64 65 73 63 72 69 70 74 69 6f 6e 20 6f 66 20 77 68 61 74 20 74 68 65 20 74 6f 6f 6c 20 64 6f .description.of.what.the.tool.do
3f7e0 65 73 2c 20 68 6f 77 20 74 6f 0a 63 61 6c 6c 20 69 74 20 61 6e 64 20 77 68 61 74 20 69 74 20 72 es,.how.to.call.it.and.what.it.r
3f800 65 74 75 72 6e 73 2e 0a 0a 41 52 47 53 3a 20 41 20 6c 69 73 74 20 6f 66 20 70 6c 69 73 74 73 20 eturns...ARGS:.A.list.of.plists.
3f820 73 70 65 63 69 66 79 69 6e 67 20 74 68 65 20 61 72 67 75 6d 65 6e 74 73 2c 20 6f 72 20 6e 69 6c specifying.the.arguments,.or.nil
3f840 20 66 6f 72 20 61 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 0a 74 61 6b 65 73 20 6e 6f 20 61 72 .for.a.function.that.takes.no.ar
3f860 67 75 6d 65 6e 74 73 2e 20 20 45 61 63 68 20 70 6c 69 73 74 20 69 6e 20 41 52 47 53 20 72 65 71 guments...Each.plist.in.ARGS.req
3f880 75 69 72 65 73 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 6b 65 79 73 3a 0a 2d 20 61 72 67 75 uires.the.following.keys:.-.argu
3f8a0 6d 65 6e 74 20 3a 6e 61 6d 65 20 61 6e 64 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 2c 20 61 73 20 ment.:name.and.:description,.as.
3f8c0 73 74 72 69 6e 67 73 2e 0a 2d 20 61 72 67 75 6d 65 6e 74 20 3a 74 79 70 65 2c 20 61 73 20 61 20 strings..-.argument.:type,.as.a.
3f8e0 73 79 6d 62 6f 6c 2e 20 20 41 6c 6c 6f 77 65 64 20 74 79 70 65 73 20 61 72 65 20 74 68 6f 73 65 symbol...Allowed.types.are.those
3f900 20 75 6e 64 65 72 73 74 6f 6f 64 20 62 79 20 74 68 65 20 4a 53 4f 4e 0a 20 20 73 63 68 65 6d 61 .understood.by.the.JSON...schema
3f920 3a 20 73 74 72 69 6e 67 2c 20 6e 75 6d 62 65 72 2c 20 69 6e 74 65 67 65 72 2c 20 62 6f 6f 6c 65 :.string,.number,.integer,.boole
3f940 61 6e 2c 20 61 72 72 61 79 2c 20 6f 62 6a 65 63 74 20 6f 72 20 6e 75 6c 6c 0a 0a 54 68 65 20 66 an,.array,.object.or.null..The.f
3f960 6f 6c 6c 6f 77 69 6e 67 20 70 6c 69 73 74 20 6b 65 79 73 20 61 72 65 20 63 6f 6e 64 69 74 69 6f ollowing.plist.keys.are.conditio
3f980 6e 61 6c 2f 6f 70 74 69 6f 6e 61 6c 3a 0a 2d 20 3a 6f 70 74 69 6f 6e 61 6c 2c 20 62 6f 6f 6c 65 nal/optional:.-.:optional,.boole
3f9a0 61 6e 20 69 6e 64 69 63 61 74 69 6e 67 20 69 66 20 61 72 67 75 6d 65 6e 74 20 69 73 20 6f 70 74 an.indicating.if.argument.is.opt
3f9c0 69 6f 6e 61 6c 0a 2d 20 3a 65 6e 75 6d 20 66 6f 72 20 65 6e 75 6d 65 72 61 74 65 64 20 74 79 70 ional.-.:enum.for.enumerated.typ
3f9e0 65 73 2c 20 77 68 6f 73 65 20 76 61 6c 75 65 20 69 73 20 61 20 76 65 63 74 6f 72 20 6f 66 20 73 es,.whose.value.is.a.vector.of.s
3fa00 74 72 69 6e 67 73 20 72 65 70 72 65 73 65 6e 74 69 6e 67 0a 20 20 61 6c 6c 6f 77 65 64 20 76 61 trings.representing...allowed.va
3fa20 6c 75 65 73 2e 20 20 4e 6f 74 65 20 74 68 61 74 20 3a 74 79 70 65 20 69 73 20 73 74 69 6c 6c 20 lues...Note.that.:type.is.still.
3fa40 72 65 71 75 69 72 65 64 20 66 6f 72 20 65 6e 75 6d 73 2e 0a 2d 20 3a 69 74 65 6d 73 2c 20 69 66 required.for.enums..-.:items,.if
3fa60 20 74 68 65 20 3a 74 79 70 65 20 69 73 20 61 72 72 61 79 2e 20 20 49 74 73 20 76 61 6c 75 65 20 .the.:type.is.array...Its.value.
3fa80 6d 75 73 74 20 62 65 20 61 20 70 6c 69 73 74 20 69 6e 63 6c 75 64 69 6e 67 20 61 74 20 6c 65 61 must.be.a.plist.including.at.lea
3faa0 73 74 0a 20 20 74 68 65 20 69 74 65 6d 27 73 20 3a 74 79 70 65 2e 0a 2d 20 3a 70 72 6f 70 65 72 st...the.item's.:type..-.:proper
3fac0 74 69 65 73 2c 20 69 66 20 74 68 65 20 74 79 70 65 20 69 73 20 6f 62 6a 65 63 74 2e 20 20 49 74 ties,.if.the.type.is.object...It
3fae0 73 20 76 61 6c 75 65 20 6d 75 73 74 20 62 65 20 61 20 70 6c 69 73 74 20 74 68 61 74 20 63 61 6e s.value.must.be.a.plist.that.can
3fb00 20 62 65 0a 20 20 73 65 72 69 61 6c 69 7a 65 64 20 69 6e 74 6f 20 61 20 4a 53 4f 4e 20 6f 62 6a .be...serialized.into.a.JSON.obj
3fb20 65 63 74 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e 20 62 79 20 60 6a 73 6f 6e 2d 73 65 72 69 61 ect.specification.by.`json-seria
3fb40 6c 69 7a 65 27 2e 0a 0a 41 53 59 4e 43 3a 20 62 6f 6f 6c 65 61 6e 20 69 6e 64 69 63 61 74 69 6e lize'...ASYNC:.boolean.indicatin
3fb60 67 20 69 66 20 74 68 65 20 65 6c 69 73 70 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 61 73 79 6e 63 g.if.the.elisp.function.is.async
3fb80 68 72 6f 6e 6f 75 73 2e 0a 49 66 20 41 53 59 4e 43 20 69 73 20 74 2c 20 74 68 65 20 66 75 6e 63 hronous..If.ASYNC.is.t,.the.func
3fba0 74 69 6f 6e 20 73 68 6f 75 6c 64 20 74 61 6b 65 20 61 20 63 61 6c 6c 62 61 63 6b 20 61 73 20 69 tion.should.take.a.callback.as.i
3fbc0 74 73 20 66 69 72 73 74 0a 61 72 67 75 6d 65 6e 74 2c 20 61 6c 6f 6e 67 20 77 69 74 68 20 74 68 ts.first.argument,.along.with.th
3fbe0 65 20 61 72 67 75 6d 65 6e 74 73 20 73 70 65 63 69 66 69 65 64 20 69 6e 20 41 52 47 53 2c 20 61 e.arguments.specified.in.ARGS,.a
3fc00 6e 64 20 72 75 6e 20 74 68 65 0a 63 61 6c 6c 62 61 63 6b 20 77 69 74 68 20 74 68 65 20 74 6f 6f nd.run.the.callback.with.the.too
3fc20 6c 20 63 61 6c 6c 20 72 65 73 75 6c 74 20 77 68 65 6e 20 69 74 27 73 20 72 65 61 64 79 2e 20 20 l.call.result.when.it's.ready...
3fc40 54 68 65 20 63 61 6c 6c 62 61 63 6b 0a 69 74 73 65 6c 66 20 69 73 20 61 6e 20 69 6d 70 6c 65 6d The.callback.itself.is.an.implem
3fc60 65 6e 74 61 74 69 6f 6e 20 64 65 74 61 69 6c 20 61 6e 64 20 6d 75 73 74 20 6e 6f 74 20 62 65 20 entation.detail.and.must.not.be.
3fc80 69 6e 63 6c 75 64 65 64 20 69 6e 0a 41 52 47 53 2e 0a 0a 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 included.in.ARGS...The.following
3fca0 20 6b 65 79 73 20 61 72 65 20 6f 70 74 69 6f 6e 61 6c 0a 0a 43 41 54 45 47 4f 52 59 3a 20 41 20 .keys.are.optional..CATEGORY:.A.
3fcc0 73 74 72 69 6e 67 20 69 6e 64 69 63 61 74 69 6e 67 20 61 20 63 61 74 65 67 6f 72 79 20 66 6f 72 string.indicating.a.category.for
3fce0 20 74 68 65 20 74 6f 6f 6c 2e 20 20 54 68 69 73 20 69 73 0a 75 73 65 64 20 6f 6e 6c 79 20 66 6f .the.tool...This.is.used.only.fo
3fd00 72 20 67 72 6f 75 70 69 6e 67 20 69 6e 20 67 70 74 65 6c 27 73 20 55 49 2e 20 20 44 65 66 61 75 r.grouping.in.gptel's.UI...Defau
3fd20 6c 74 73 20 74 6f 20 5c 22 6d 69 73 63 5c 22 2e 0a 0a 43 4f 4e 46 49 52 4d 3a 20 57 68 65 74 68 lts.to.\"misc\"...CONFIRM:.Wheth
3fd40 65 72 20 74 68 65 20 74 6f 6f 6c 20 63 61 6c 6c 20 73 68 6f 75 6c 64 20 77 61 69 74 20 66 6f 72 er.the.tool.call.should.wait.for
3fd60 20 74 68 65 20 75 73 65 72 20 74 6f 20 72 75 6e 0a 69 74 2e 20 20 49 66 20 74 72 75 65 2c 20 74 .the.user.to.run.it...If.true,.t
3fd80 68 65 20 75 73 65 72 20 77 69 6c 6c 20 62 65 20 70 72 6f 6d 70 74 65 64 20 77 69 74 68 20 74 68 he.user.will.be.prompted.with.th
3fda0 65 20 70 72 6f 70 6f 73 65 64 20 74 6f 6f 6c 0a 63 61 6c 6c 2c 20 77 68 69 63 68 20 63 61 6e 20 e.proposed.tool.call,.which.can.
3fdc0 62 65 20 65 78 61 6d 69 6e 65 64 2c 20 61 63 63 65 70 74 65 64 2c 20 64 65 66 65 72 72 65 64 20 be.examined,.accepted,.deferred.
3fde0 6f 72 20 63 61 6e 63 65 6c 65 64 2e 0a 0a 49 4e 43 4c 55 44 45 3a 20 57 68 65 74 68 65 72 20 74 or.canceled...INCLUDE:.Whether.t
3fe00 68 65 20 74 6f 6f 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 he.tool.results.should.be.includ
3fe20 65 64 20 61 73 20 70 61 72 74 20 6f 66 0a 74 68 65 20 4c 4c 4d 20 6f 75 74 70 75 74 2e 20 20 54 ed.as.part.of.the.LLM.output...T
3fe40 68 69 73 20 69 73 20 75 73 65 66 75 6c 20 66 6f 72 20 6c 6f 67 67 69 6e 67 20 61 6e 64 20 61 73 his.is.useful.for.logging.and.as
3fe60 20 63 6f 6e 74 65 78 74 20 66 6f 72 0a 73 75 62 73 65 71 75 65 6e 74 20 72 65 71 75 65 73 74 73 .context.for.subsequent.requests
3fe80 20 69 6e 20 74 68 65 20 73 61 6d 65 20 62 75 66 66 65 72 2e 20 20 54 68 69 73 20 69 73 20 70 72 .in.the.same.buffer...This.is.pr
3fea0 69 6d 61 72 69 6c 79 20 75 73 65 66 75 6c 0a 69 6e 20 63 68 61 74 20 62 75 66 66 65 72 73 2e 0a imarily.useful.in.chat.buffers..
3fec0 0a 48 65 72 65 20 69 73 20 61 6e 20 65 78 61 6d 70 6c 65 20 64 65 66 69 6e 69 74 69 6f 6e 3a 0a .Here.is.an.example.definition:.
3fee0 0a 20 20 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 74 6f 6f 6c 0a 20 20 20 3a 66 75 6e 63 74 69 6f 6e ...(gptel-make-tool....:function
3ff00 20 28 6c 61 6d 62 64 61 20 28 6c 6f 63 61 74 69 6f 6e 20 75 6e 69 74 29 0a 20 20 20 20 20 20 20 .(lambda.(location.unit)........
3ff20 20 20 20 20 20 20 20 20 20 28 75 72 6c 2d 72 65 74 72 69 65 76 65 2d 73 79 6e 63 68 72 6f 6e 6f .........(url-retrieve-synchrono
3ff40 75 73 6c 79 20 5c 22 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 usly.\"api.weather.com/...\"....
3ff60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
3ff80 20 20 20 20 20 20 20 20 20 6c 6f 63 61 74 69 6f 6e 20 75 6e 69 74 29 29 0a 20 20 20 3a 6e 61 6d .........location.unit))....:nam
3ffa0 65 20 5c 22 67 65 74 5f 77 65 61 74 68 65 72 5c 22 0a 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f e.\"get_weather\"....:descriptio
3ffc0 6e 20 5c 22 47 65 74 20 74 68 65 20 63 75 72 72 65 6e 74 20 77 65 61 74 68 65 72 20 69 6e 20 61 n.\"Get.the.current.weather.in.a
3ffe0 20 67 69 76 65 6e 20 6c 6f 63 61 74 69 6f 6e 5c 22 0a 20 20 20 3a 61 72 67 73 20 28 6c 69 73 74 .given.location\"....:args.(list
40000 20 5c 5c 3d 27 28 3a 6e 61 6d 65 20 5c 22 6c 6f 63 61 74 69 6f 6e 5c 22 0a 20 20 20 20 20 20 20 .\\='(:name.\"location\"........
40020 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 20 20 20 ..........:type.string..........
40040 20 20 20 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 5c 22 54 68 65 20 63 69 74 79 20 ........:description.\"The.city.
40060 61 6e 64 20 73 74 61 74 65 2c 20 65 2e 67 2e 20 53 61 6e 20 46 72 61 6e 63 69 73 63 6f 2c 20 43 and.state,.e.g..San.Francisco,.C
40080 41 5c 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5c 5c 3d 27 28 3a 6e 61 6d 65 20 5c A\")................\\='(:name.\
400a0 22 75 6e 69 74 5c 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 74 79 70 65 20 73 "unit\"..................:type.s
400c0 74 72 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 65 6e 75 6d 20 5b 5c 22 tring..................:enum.[\"
400e0 63 65 6c 73 69 75 73 5c 22 20 5c 22 66 61 72 65 6e 68 65 69 74 5c 22 5d 0a 20 20 20 20 20 20 20 celsius\".\"farenheit\"]........
40100 20 20 20 20 20 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 ..........:description..........
40120 20 20 20 20 20 20 20 20 5c 22 54 68 65 20 75 6e 69 74 20 6f 66 20 74 65 6d 70 65 72 61 74 75 72 ........\"The.unit.of.temperatur
40140 65 2c 20 65 69 74 68 65 72 20 5c 5c 3d 27 63 65 6c 73 69 75 73 5c 5c 3d 27 20 6f 72 20 5c 5c 3d e,.either.\\='celsius\\='.or.\\=
40160 27 66 61 68 72 65 6e 68 65 69 74 5c 5c 3d 27 5c 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 'fahrenheit\\='\"...............
40180 20 20 20 3a 6f 70 74 69 6f 6e 61 6c 20 74 29 29 29 0a 0a 49 66 20 74 68 65 20 74 6f 6f 6c 20 69 ...:optional.t)))..If.the.tool.i
401a0 73 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 2c 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 s.asynchronous,.the.function.is.
401c0 6d 6f 64 69 66 69 65 64 20 74 6f 20 74 61 6b 65 20 61 0a 63 61 6c 6c 62 61 63 6b 20 61 73 20 69 modified.to.take.a.callback.as.i
401e0 74 73 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74 2c 20 77 68 69 63 68 20 69 74 20 72 75 6e 73 ts.first.argument,.which.it.runs
40200 20 77 69 74 68 20 74 68 65 20 72 65 73 75 6c 74 3a 0a 0a 20 20 20 28 6c 61 6d 62 64 61 20 28 63 .with.the.result:.....(lambda.(c
40220 61 6c 6c 62 61 63 6b 20 6c 6f 63 61 74 69 6f 6e 20 75 6e 69 74 29 0a 20 20 20 20 20 28 75 72 6c allback.location.unit)......(url
40240 2d 72 65 74 72 69 65 76 65 20 5c 22 61 70 69 2e 77 65 61 74 68 65 72 2e 63 6f 6d 2f 2e 2e 2e 5c -retrieve.\"api.weather.com/...\
40260 22 0a 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 29 "....................(lambda.(_)
40280 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 28 72 65 73 ......................(let.((res
402a0 75 6c 74 20 28 70 61 72 73 65 2d 74 68 69 73 2d 62 75 66 66 65 72 29 29 29 0a 20 20 20 20 20 20 ult.(parse-this-buffer))).......
402c0 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
402e0 63 6b 20 72 65 73 75 6c 74 29 29 29 29 29 22 0a 20 20 28 6c 65 74 2a 20 28 28 74 6f 6f 6c 20 28 ck.result)))))"...(let*.((tool.(
40300 61 70 70 6c 79 20 23 27 67 70 74 65 6c 2d 2d 6d 61 6b 65 2d 74 6f 6f 6c 20 73 6c 6f 74 73 29 29 apply.#'gptel--make-tool.slots))
40320 0a 20 20 20 20 20 20 20 20 20 28 63 61 74 65 67 6f 72 79 20 28 6f 72 20 28 67 70 74 65 6c 2d 74 ..........(category.(or.(gptel-t
40340 6f 6f 6c 2d 63 61 74 65 67 6f 72 79 20 74 6f 6f 6c 29 20 22 6d 69 73 63 22 29 29 29 0a 20 20 20 ool-category.tool)."misc")))....
40360 20 28 73 65 74 66 20 28 61 6c 69 73 74 2d 67 65 74 0a 20 20 20 20 20 20 20 20 20 20 20 28 67 70 .(setf.(alist-get............(gp
40380 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 28 tel-tool-name.tool)............(
403a0 61 6c 69 73 74 2d 67 65 74 20 63 61 74 65 67 6f 72 79 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d alist-get.category.gptel--known-
403c0 74 6f 6f 6c 73 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 tools.nil.nil.#'equal)..........
403e0 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 20 20 20 74 6f 6f ..nil.nil.#'equal)...........too
40400 6c 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 73 l)))..(cl-defgeneric.gptel--pars
40420 65 2d 74 6f 6f 6c 73 20 28 5f 62 61 63 6b 65 6e 64 20 74 6f 6f 6c 73 29 0a 20 20 22 50 61 72 73 e-tools.(_backend.tools)..."Pars
40440 65 20 54 4f 4f 4c 53 20 61 6e 64 20 72 65 74 75 72 6e 20 61 20 6c 69 73 74 20 6f 66 20 70 72 6f e.TOOLS.and.return.a.list.of.pro
40460 6d 70 74 73 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 6c mpts...TOOLS.is.a.list.of.`gptel
40480 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 0a 0a 5f 42 41 43 -tool'.structs,.which.see..._BAC
404a0 4b 45 4e 44 20 69 73 20 74 68 65 20 4c 4c 4d 20 62 61 63 6b 65 6e 64 20 69 6e 20 75 73 65 2e 20 KEND.is.the.LLM.backend.in.use..
404c0 20 54 68 69 73 20 69 73 20 74 68 65 20 64 65 66 61 75 6c 74 0a 69 6d 70 6c 65 6d 65 6e 74 61 74 .This.is.the.default.implementat
404e0 69 6f 6e 2c 20 75 73 65 64 20 62 79 20 4f 70 65 6e 41 49 2d 63 6f 6d 70 61 74 69 62 6c 65 20 41 ion,.used.by.OpenAI-compatible.A
40500 50 49 73 20 61 6e 64 20 4f 6c 6c 61 6d 61 2e 22 0a 20 20 28 76 63 6f 6e 63 61 74 0a 20 20 20 28 PIs.and.Ollama."...(vconcat....(
40520 6d 61 70 63 61 72 0a 20 20 20 20 28 6c 61 6d 62 64 61 20 28 74 6f 6f 6c 29 0a 20 20 20 20 20 20 mapcar.....(lambda.(tool).......
40540 28 6c 69 73 74 0a 20 20 20 20 20 20 20 3a 74 79 70 65 20 22 66 75 6e 63 74 69 6f 6e 22 0a 20 20 (list........:type."function"...
40560 20 20 20 20 20 3a 66 75 6e 63 74 69 6f 6e 0a 20 20 20 20 20 20 20 28 61 70 70 65 6e 64 0a 20 20 .....:function........(append...
40580 20 20 20 20 20 20 28 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 3a 6e 61 6d 65 20 28 67 70 74 65 ......(list..........:name.(gpte
405a0 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 3a 64 65 73 63 l-tool-name.tool)..........:desc
405c0 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.
405e0 74 6f 6f 6c 29 29 0a 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 tool)).........(if.(gptel-tool-a
40600 72 67 73 20 74 6f 6f 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 0a 20 20 20 rgs.tool)..............(list....
40620 20 20 20 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 65 74 65 72 73 0a 20 20 20 20 20 20 20 20 20 ...........:parameters..........
40640 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 20 .....(list.:type."object".......
40660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 67 70 74 65 6c 27 73 20 74 6f 6f 6c 20 61 72 ..............;;.gptel's.tool.ar
40680 67 73 20 73 70 65 63 20 69 73 20 63 6c 6f 73 65 20 74 6f 20 74 68 65 20 4a 53 4f 4e 20 73 63 68 gs.spec.is.close.to.the.JSON.sch
406a0 65 6d 61 2c 20 65 78 63 65 70 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ema,.except.....................
406c0 3b 3b 20 74 68 61 74 20 77 65 20 75 73 65 20 28 3a 6e 61 6d 65 20 22 61 72 67 6e 61 6d 65 22 20 ;;.that.we.use.(:name."argname".
406e0 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 3b 3b 20 69 6e 73 74 ...).....................;;.inst
40700 65 61 64 20 6f 66 20 20 28 3a 61 72 67 6e 61 6d 65 20 28 2e 2e 2e 29 29 2c 20 61 6e 64 0a 20 20 ead.of..(:argname.(...)),.and...
40720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 28 3a 6f 70 74 69 6f 6e 61 6c 20 ..................;;.(:optional.
40740 74 29 20 66 6f 72 20 65 61 63 68 20 61 72 67 20 69 6e 73 74 65 61 64 20 6f 66 20 28 3a 72 65 71 t).for.each.arg.instead.of.(:req
40760 75 69 72 65 64 20 5b 2e 2e 2e 5d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 uired.[...])....................
40780 20 3b 3b 20 66 6f 72 20 61 6c 6c 20 61 72 67 73 20 61 74 20 6f 6e 63 65 2e 20 20 48 61 6e 64 6c .;;.for.all.args.at.once...Handl
407a0 65 20 74 68 69 73 20 64 69 66 66 65 72 65 6e 63 65 20 62 79 0a 20 20 20 20 20 20 20 20 20 20 20 e.this.difference.by............
407c0 20 20 20 20 20 20 20 20 20 3b 3b 20 6d 6f 64 69 66 79 69 6e 67 20 61 20 63 6f 70 79 20 6f 66 20 .........;;.modifying.a.copy.of.
407e0 74 68 65 20 67 70 74 65 6c 20 74 6f 6f 6c 20 61 72 67 20 73 70 65 63 2e 0a 20 20 20 20 20 20 20 the.gptel.tool.arg.spec.........
40800 20 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 20 20 20 20 20 .............:properties........
40820 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...........
40840 20 20 20 20 20 20 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 ...........for.arg.in.(gptel-too
40860 6c 2d 61 72 67 73 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 l-args.tool)....................
40880 20 20 66 6f 72 20 61 72 67 73 70 65 63 20 3d 20 28 63 6f 70 79 2d 73 65 71 75 65 6e 63 65 20 61 ..for.argspec.=.(copy-sequence.a
408a0 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 66 6f 72 20 6e 61 6d rg)......................for.nam
408c0 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 68 61 6e 64 6c e.=.(plist-get.arg.:name).;handl
408e0 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 20 20 20 20 20 ed.differently..................
40900 20 20 20 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 ....for.newname.=.(or.(and.(keyw
40920 6f 72 64 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 ordp.name).name)................
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 28 6d 61 6b 65 2d 73 79 ........................(make-sy
40960 6d 62 6f 6c 20 28 63 6f 6e 63 61 74 20 22 3a 22 20 6e 61 6d 65 29 29 29 0a 20 20 20 20 20 20 20 mbol.(concat.":".name)))........
40980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..............do................
409a0 3b 41 52 47 53 50 45 43 20 69 73 20 41 52 47 20 77 69 74 68 6f 75 74 20 75 6e 72 65 63 6f 67 6e ;ARGSPEC.is.ARG.without.unrecogn
409c0 69 7a 65 64 20 6b 65 79 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 ized.keys......................(
409e0 63 6c 2d 72 65 6d 66 20 61 72 67 73 70 65 63 20 3a 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 20 cl-remf.argspec.:name)..........
40a00 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 6f 70 ............(cl-remf.argspec.:op
40a20 74 69 6f 6e 61 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 tional)......................if.
40a40 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 6f 62 (equal.(plist-get.arg.:type)."ob
40a60 6a 65 63 74 22 29 0a 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 ject")......................do.(
40a80 75 6e 6c 65 73 73 20 28 70 6c 69 73 74 2d 6d 65 6d 62 65 72 20 61 72 67 73 70 65 63 20 3a 72 65 unless.(plist-member.argspec.:re
40aa0 71 75 69 72 65 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 quired).........................
40ac0 20 20 28 70 6c 69 73 74 2d 70 75 74 20 61 72 67 73 70 65 63 20 3a 72 65 71 75 69 72 65 64 20 5b ..(plist-put.argspec.:required.[
40ae0 5d 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 6c 69 73 74 2d ]))......................(plist-
40b00 70 75 74 20 61 72 67 73 70 65 63 20 3a 61 64 64 69 74 69 6f 6e 61 6c 50 72 6f 70 65 72 74 69 65 put.argspec.:additionalPropertie
40b20 73 20 3a 6a 73 6f 6e 2d 66 61 6c 73 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 s.:json-false)..................
40b40 20 20 20 20 61 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 ....append.(list.newname.argspec
40b60 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 72 65 71 75 69 72 65 64 )).....................:required
40b80 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 20 .....................(vconcat...
40ba0 20 20 20 20 20 20 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 61 ...................(delq.nil.(ma
40bc0 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 20 20 20 pcar............................
40be0 20 20 20 20 20 28 6c 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 .....(lambda.(arg).(and.(not.(pl
40c00 69 73 74 2d 67 65 74 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 ist-get.arg.:optional)).........
40c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
40c40 20 20 20 20 20 20 28 70 6c 69 73 74 2d 67 65 74 20 61 72 67 20 3a 6e 61 6d 65 29 29 29 0a 20 20 ......(plist-get.arg.:name)))...
40c60 20 20 20 20 20 20 20 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
40c80 70 74 65 6c 2d 74 6f 6f 6c 2d 61 72 67 73 20 74 6f 6f 6c 29 29 29 29 0a 20 20 20 20 20 20 20 20 ptel-tool-args.tool)))).........
40ca0 20 20 20 20 20 20 20 20 20 20 20 20 3a 61 64 64 69 74 69 6f 6e 61 6c 50 72 6f 70 65 72 74 69 65 ............:additionalPropertie
40cc0 73 20 3a 6a 73 6f 6e 2d 66 61 6c 73 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 s.:json-false))...........(list.
40ce0 3a 70 61 72 61 6d 65 74 65 72 73 20 3a 6e 75 6c 6c 29 29 29 29 29 0a 20 20 20 20 28 65 6e 73 75 :parameters.:null))))).....(ensu
40d00 72 65 2d 6c 69 73 74 20 74 6f 6f 6c 73 29 29 29 29 0a 0a 28 63 6c 2d 64 65 66 67 65 6e 65 72 69 re-list.tools))))..(cl-defgeneri
40d20 63 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 62 61 63 c.gptel--parse-tool-results.(bac
40d40 6b 65 6e 64 20 72 65 73 75 6c 74 73 29 0a 20 20 22 52 65 74 75 72 6e 20 61 20 42 41 43 4b 45 4e kend.results)..."Return.a.BACKEN
40d60 44 2d 61 70 70 72 6f 70 72 69 61 74 65 20 70 72 6f 6d 70 74 20 63 6f 6e 74 61 69 6e 69 6e 67 20 D-appropriate.prompt.containing.
40d80 74 6f 6f 6c 20 63 61 6c 6c 20 52 45 53 55 4c 54 53 2e 0a 0a 54 68 69 73 20 77 69 6c 6c 20 62 65 tool.call.RESULTS...This.will.be
40da0 20 69 6e 6a 65 63 74 65 64 20 69 6e 74 6f 20 74 68 65 20 6d 65 73 73 61 67 65 73 20 6c 69 73 74 .injected.into.the.messages.list
40dc0 20 69 6e 20 74 68 65 20 70 72 6f 6d 70 74 20 74 6f 0a 73 65 6e 64 20 74 6f 20 74 68 65 20 4c 4c .in.the.prompt.to.send.to.the.LL
40de0 4d 2e 22 29 0a 0a 3b 3b 20 46 49 58 4d 45 28 66 73 6d 29 20 75 6e 69 66 79 20 74 68 69 73 20 77 M.")..;;.FIXME(fsm).unify.this.w
40e00 69 74 68 20 60 67 70 74 65 6c 2d 2d 77 72 61 70 2d 75 73 65 72 2d 70 72 6f 6d 70 74 27 2c 20 77 ith.`gptel--wrap-user-prompt',.w
40e20 68 69 63 68 20 69 73 20 61 20 6d 65 73 73 0a 28 63 6c 2d 64 65 66 67 65 6e 65 72 69 63 20 67 70 hich.is.a.mess.(cl-defgeneric.gp
40e40 74 65 6c 2d 2d 69 6e 6a 65 63 74 2d 70 72 6f 6d 70 74 0a 20 20 28 5f 62 61 63 6b 65 6e 64 20 64 tel--inject-prompt...(_backend.d
40e60 61 74 61 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 ata.new-prompt.&optional._positi
40e80 6f 6e 29 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 on)..."Append.NEW-PROMPT.to.exis
40ea0 74 69 6e 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 4e 45 57 ting.prompts.in.query.DATA...NEW
40ec0 2d 50 52 4f 4d 50 54 20 63 61 6e 20 62 65 20 61 20 73 69 6e 67 6c 65 20 6d 65 73 73 61 67 65 20 -PROMPT.can.be.a.single.message.
40ee0 6f 72 20 61 20 6c 69 73 74 20 6f 66 20 6d 65 73 73 61 67 65 73 2e 0a 0a 4e 6f 74 20 69 6d 70 6c or.a.list.of.messages...Not.impl
40f00 65 6d 65 6e 74 65 64 3a 20 69 66 20 50 4f 53 49 54 49 4f 4e 20 69 73 0a 2d 20 61 20 6e 6f 6e 2d emented:.if.POSITION.is.-.a.non-
40f20 6e 65 67 61 74 69 76 65 20 6e 75 6d 62 65 72 2c 20 69 6e 73 65 72 74 20 69 74 20 61 74 20 74 68 negative.number,.insert.it.at.th
40f40 61 74 20 70 6f 73 69 74 69 6f 6e 20 69 6e 20 50 52 4f 4d 50 54 53 2e 0a 2d 20 61 20 6e 65 67 61 at.position.in.PROMPTS..-.a.nega
40f60 74 69 76 65 20 6e 75 6d 62 65 72 2c 20 69 6e 73 65 72 74 20 69 74 20 74 68 65 72 65 20 63 6f 75 tive.number,.insert.it.there.cou
40f80 6e 74 69 6e 67 20 66 72 6f 6d 20 74 68 65 20 65 6e 64 2e 0a 0a 54 68 69 73 20 67 65 6e 65 72 69 nting.from.the.end...This.generi
40fa0 63 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 68 61 6e 64 6c 65 73 20 74 68 65 20 41 6e 74 c.implementation.handles.the.Ant
40fc0 68 72 6f 70 69 63 2c 0a 4f 70 65 6e 41 49 2d 63 6f 6d 70 61 74 69 62 6c 65 20 61 6e 64 20 4f 6c hropic,.OpenAI-compatible.and.Ol
40fe0 6c 61 6d 61 20 6d 65 73 73 61 67 65 20 66 6f 72 6d 61 74 73 2e 22 0a 20 20 3b 3b 20 3b 54 4f 44 lama.message.formats."...;;.;TOD
41000 4f 28 66 73 6d 29 3a 20 69 6d 70 6c 65 6d 65 6e 74 20 5f 50 4f 53 49 54 49 4f 4e 0a 20 20 28 77 O(fsm):.implement._POSITION...(w
41020 68 65 6e 20 28 6b 65 79 77 6f 72 64 70 20 28 63 61 72 2d 73 61 66 65 20 6e 65 77 2d 70 72 6f 6d hen.(keywordp.(car-safe.new-prom
41040 70 74 29 29 20 3b 49 73 20 6e 65 77 2d 70 72 6f 6d 70 74 20 6f 6e 65 20 6f 72 20 6d 61 6e 79 3f pt)).;Is.new-prompt.one.or.many?
41060 0a 20 20 20 20 28 73 65 74 71 20 6e 65 77 2d 70 72 6f 6d 70 74 20 28 6c 69 73 74 20 6e 65 77 2d .....(setq.new-prompt.(list.new-
41080 70 72 6f 6d 70 74 29 29 29 0a 20 20 28 6c 65 74 20 28 28 70 72 6f 6d 70 74 73 20 28 70 6c 69 73 prompt)))...(let.((prompts.(plis
410a0 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 20 20 28 70 6c 69 t-get.data.:messages))).....(pli
410c0 73 74 2d 70 75 74 20 64 61 74 61 20 3a 6d 65 73 73 61 67 65 73 20 28 76 63 6f 6e 63 61 74 20 70 st-put.data.:messages.(vconcat.p
410e0 72 6f 6d 70 74 73 20 6e 65 77 2d 70 72 6f 6d 70 74 29 29 29 29 0a 0a 0c 0a 3b 3b 3b 20 53 74 61 rompts.new-prompt))))....;;;.Sta
41100 74 65 20 6d 61 63 68 69 6e 65 20 66 6f 72 20 64 72 69 76 69 6e 67 20 72 65 71 75 65 73 74 73 0a te.machine.for.driving.requests.
41120 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d 72 65 71 75 65 73 74 2d 2d 74 72 61 6e 73 69 74 69 .(defvar.gptel-request--transiti
41140 6f 6e 73 0a 20 20 60 28 28 49 4e 49 54 20 2e 20 28 28 74 20 20 20 20 20 20 20 20 20 20 20 20 20 ons...`((INIT...((t.............
41160 20 20 20 20 20 20 20 20 20 20 2e 20 57 41 49 54 29 29 29 0a 20 20 20 20 28 57 41 49 54 20 2e 20 ............WAIT))).....(WAIT...
41180 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 54 59 50 45 ((t.........................TYPE
411a0 29 29 29 0a 20 20 20 20 28 54 59 50 45 20 2e 20 28 28 2c 23 27 67 70 74 65 6c 2d 2d 65 72 72 6f ))).....(TYPE...((,#'gptel--erro
411c0 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)..............(
411e0 2c 23 27 67 70 74 65 6c 2d 2d 74 6f 6f 6c 2d 75 73 65 2d 70 20 20 20 20 2e 20 54 4f 4f 4c 29 0a ,#'gptel--tool-use-p......TOOL).
41200 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.................
41220 20 20 20 20 20 20 2e 20 44 4f 4e 45 29 29 29 0a 20 20 20 20 28 54 4f 4f 4c 20 2e 20 28 28 2c 23 ........DONE))).....(TOOL...((,#
41240 27 67 70 74 65 6c 2d 2d 65 72 72 6f 72 2d 70 20 20 20 20 20 20 20 2e 20 45 52 52 53 29 0a 20 20 'gptel--error-p.........ERRS)...
41260 20 20 20 20 20 20 20 20 20 20 20 28 2c 23 27 67 70 74 65 6c 2d 2d 74 6f 6f 6c 2d 72 65 73 75 6c ...........(,#'gptel--tool-resul
41280 74 2d 70 20 2e 20 57 41 49 54 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 20 20 20 20 20 t-p...WAIT)..............(t.....
412a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 20 44 4f 4e 45 29 29 29 29 0a 20 20 22 ....................DONE))))..."
412c0 41 6c 69 73 74 20 73 70 65 63 69 66 79 69 6e 67 20 67 70 74 65 6c 27 73 20 64 65 66 61 75 6c 74 Alist.specifying.gptel's.default
412e0 20 73 74 61 74 65 20 74 72 61 6e 73 69 74 69 6f 6e 20 74 61 62 6c 65 20 66 6f 72 20 72 65 71 75 .state.transition.table.for.requ
41300 65 73 74 73 2e 0a 0a 45 61 63 68 20 65 6e 74 72 79 20 69 73 20 61 20 6c 69 73 74 20 77 68 6f 73 ests...Each.entry.is.a.list.whos
41320 65 20 63 61 72 20 69 73 20 61 20 72 65 71 75 65 73 74 20 73 74 61 74 65 20 28 61 6e 79 20 73 79 e.car.is.a.request.state.(any.sy
41340 6d 62 6f 6c 29 0a 61 6e 64 20 77 68 6f 73 65 20 63 64 72 20 69 73 20 61 6e 20 61 6c 69 73 74 20 mbol).and.whose.cdr.is.an.alist.
41360 6c 69 73 74 69 6e 67 20 70 6f 73 73 69 62 6c 65 20 6e 65 78 74 20 73 74 61 74 65 73 2e 20 20 45 listing.possible.next.states...E
41380 61 63 68 20 6b 65 79 0a 69 73 20 65 69 74 68 65 72 20 61 20 70 72 65 64 69 63 61 74 65 20 66 75 ach.key.is.either.a.predicate.fu
413a0 6e 63 74 69 6f 6e 20 6f 72 20 60 74 27 2e 20 20 57 68 65 6e 20 60 67 70 74 65 6c 2d 2d 66 73 6d nction.or.`t'...When.`gptel--fsm
413c0 2d 6e 65 78 74 27 20 69 73 0a 63 61 6c 6c 65 64 2c 20 74 68 65 20 70 72 65 64 69 63 61 74 65 73 -next'.is.called,.the.predicates
413e0 20 61 72 65 20 63 61 6c 6c 65 64 20 69 6e 20 74 68 65 20 6f 72 64 65 72 20 74 68 65 79 20 61 70 .are.called.in.the.order.they.ap
41400 70 65 61 72 20 68 65 72 65 0a 74 6f 20 66 69 6e 64 20 74 68 65 20 6e 65 78 74 20 73 74 61 74 65 pear.here.to.find.the.next.state
41420 2e 20 20 45 61 63 68 20 70 72 65 64 69 63 61 74 65 20 69 73 20 63 61 6c 6c 65 64 20 77 69 74 68 ...Each.predicate.is.called.with
41440 20 74 68 65 20 73 74 61 74 65 0a 6d 61 63 68 69 6e 65 27 73 20 49 4e 46 4f 2c 20 73 65 65 20 60 .the.state.machine's.INFO,.see.`
41460 67 70 74 65 6c 2d 66 73 6d 27 2e 20 20 41 20 70 72 65 64 69 63 61 74 65 20 6f 66 20 60 74 27 20 gptel-fsm'...A.predicate.of.`t'.
41480 69 73 0a 63 6f 6e 73 69 64 65 72 65 64 20 61 20 73 75 63 63 65 73 73 20 61 6e 64 20 61 63 74 73 is.considered.a.success.and.acts
414a0 20 61 73 20 61 20 64 65 66 61 75 6c 74 2e 22 29 0a 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d .as.a.default.")..(defvar.gptel-
414c0 72 65 71 75 65 73 74 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 request--handlers...`((WAIT.,#'g
414e0 70 74 65 6c 2d 2d 68 61 6e 64 6c 65 2d 77 61 69 74 29 0a 20 20 20 20 28 54 4f 4f 4c 20 2c 23 27 ptel--handle-wait).....(TOOL.,#'
41500 67 70 74 65 6c 2d 2d 68 61 6e 64 6c 65 2d 74 6f 6f 6c 2d 75 73 65 29 29 0a 20 20 22 41 6c 69 73 gptel--handle-tool-use))..."Alis
41520 74 20 73 70 65 63 69 66 79 69 6e 67 20 68 61 6e 64 6c 65 72 73 20 66 6f 72 20 67 70 74 65 6c 27 t.specifying.handlers.for.gptel'
41540 73 20 64 65 66 61 75 6c 74 20 73 74 61 74 65 20 74 72 61 6e 73 69 74 69 6f 6e 73 2e 0a 0a 45 61 s.default.state.transitions...Ea
41560 63 68 20 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 ch.entry.is.a.list.whose.car.is.
41580 61 20 72 65 71 75 65 73 74 20 73 74 61 74 65 20 28 61 20 73 79 6d 62 6f 6c 29 20 61 6e 64 0a 77 a.request.state.(a.symbol).and.w
415a0 68 6f 73 65 20 63 64 72 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 68 61 6e 64 6c 65 72 20 66 75 hose.cdr.is.a.list.of.handler.fu
415c0 6e 63 74 69 6f 6e 73 20 63 61 6c 6c 65 64 20 77 68 65 6e 0a 74 72 61 6e 73 69 74 69 6f 6e 69 6e nctions.called.when.transitionin
415e0 67 20 74 6f 20 74 68 61 74 20 73 74 61 74 65 2e 20 20 54 68 65 20 68 61 6e 64 6c 65 72 73 20 61 g.to.that.state...The.handlers.a
41600 72 65 20 63 61 6c 6c 65 64 20 69 6e 20 74 68 65 0a 73 65 71 75 65 6e 63 65 20 74 68 61 74 20 74 re.called.in.the.sequence.that.t
41620 68 65 79 20 61 70 70 65 61 72 20 69 6e 20 74 68 65 20 6c 69 73 74 2c 20 61 6e 64 20 65 61 63 68 hey.appear.in.the.list,.and.each
41640 20 66 75 6e 63 74 69 6f 6e 20 72 65 63 65 69 76 65 73 0a 74 68 65 20 73 74 61 74 65 20 6d 61 63 .function.receives.the.state.mac
41660 68 69 6e 65 20 61 73 20 69 74 73 20 6f 6e 6c 79 20 61 72 67 75 6d 65 6e 74 2e 20 20 49 6e 66 6f hine.as.its.only.argument...Info
41680 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 74 68 65 0a 72 65 71 75 65 73 74 20 73 74 61 74 65 20 rmation.about.the.request.state.
416a0 63 61 6e 20 62 65 20 72 65 74 72 69 65 76 65 64 20 76 69 61 20 74 68 65 20 6d 61 63 68 69 6e 65 can.be.retrieved.via.the.machine
416c0 27 73 20 49 4e 46 4f 20 73 6c 6f 74 2c 20 73 65 65 0a 60 67 70 74 65 6c 2d 66 73 6d 27 2e 0a 0a 's.INFO.slot,.see.`gptel-fsm'...
416e0 48 61 6e 64 6c 65 72 73 20 61 72 65 20 72 65 73 70 6f 6e 73 69 62 6c 65 20 66 6f 72 20 64 6f 69 Handlers.are.responsible.for.doi
41700 6e 67 20 73 74 61 74 65 2d 72 65 6c 61 74 65 64 20 74 61 73 6b 73 20 28 6c 69 6b 65 0a 6c 6f 67 ng.state-related.tasks.(like.log
41720 67 69 6e 67 20 65 72 72 6f 72 73 20 6f 72 20 69 6e 73 65 72 74 69 6e 67 20 72 65 73 70 6f 6e 73 ging.errors.or.inserting.respons
41740 65 73 29 20 61 6e 64 20 74 72 61 6e 73 69 74 69 6f 6e 69 6e 67 20 74 6f 20 74 68 65 0a 6e 65 78 es).and.transitioning.to.the.nex
41760 74 20 73 74 61 74 65 20 62 79 20 63 61 6c 6c 69 6e 67 20 60 67 70 74 65 6c 2d 2d 66 73 6d 2d 74 t.state.by.calling.`gptel--fsm-t
41780 72 61 6e 73 69 74 69 6f 6e 27 2e 0a 0a 48 61 6e 64 6c 65 72 73 20 63 61 6e 20 62 65 20 61 73 79 ransition'...Handlers.can.be.asy
417a0 6e 63 68 72 6f 6e 6f 75 73 2c 20 69 6e 20 77 68 69 63 68 20 63 61 73 65 20 74 68 65 20 74 72 61 nchronous,.in.which.case.the.tra
417c0 6e 73 69 74 69 6f 6e 20 63 61 6c 6c 0a 73 68 6f 75 6c 64 20 74 79 70 69 63 61 6c 6c 79 20 62 65 nsition.call.should.typically.be
417e0 20 70 6c 61 63 65 64 20 69 6e 20 69 74 73 20 63 61 6c 6c 62 61 63 6b 2e 22 29 0a 0a 28 64 65 66 .placed.in.its.callback.")..(def
41800 76 61 72 20 67 70 74 65 6c 2d 73 65 6e 64 2d 2d 68 61 6e 64 6c 65 72 73 0a 20 20 60 28 28 57 41 var.gptel-send--handlers...`((WA
41820 49 54 20 2c 23 27 67 70 74 65 6c 2d 2d 68 61 6e 64 6c 65 2d 77 61 69 74 29 0a 20 20 20 20 28 54 IT.,#'gptel--handle-wait).....(T
41840 59 50 45 20 2c 23 27 67 70 74 65 6c 2d 2d 68 61 6e 64 6c 65 2d 70 72 65 2d 69 6e 73 65 72 74 29 YPE.,#'gptel--handle-pre-insert)
41860 0a 20 20 20 20 28 45 52 52 53 20 2c 23 27 67 70 74 65 6c 2d 2d 68 61 6e 64 6c 65 2d 65 72 72 6f .....(ERRS.,#'gptel--handle-erro
41880 72 20 2c 23 27 67 70 74 65 6c 2d 2d 66 73 6d 2d 6c 61 73 74 29 0a 20 20 20 20 28 54 4f 4f 4c 20 r.,#'gptel--fsm-last).....(TOOL.
418a0 2c 23 27 67 70 74 65 6c 2d 2d 68 61 6e 64 6c 65 2d 74 6f 6f 6c 2d 75 73 65 29 0a 20 20 20 20 28 ,#'gptel--handle-tool-use).....(
418c0 44 4f 4e 45 20 2c 23 27 67 70 74 65 6c 2d 2d 68 61 6e 64 6c 65 2d 70 6f 73 74 2d 69 6e 73 65 72 DONE.,#'gptel--handle-post-inser
418e0 74 20 2c 23 27 67 70 74 65 6c 2d 2d 66 73 6d 2d 6c 61 73 74 29 29 0a 20 20 22 41 6c 69 73 74 20 t.,#'gptel--fsm-last))..."Alist.
41900 73 70 65 63 69 66 79 69 6e 67 20 68 61 6e 64 6c 65 72 73 20 66 6f 72 20 60 67 70 74 65 6c 2d 73 specifying.handlers.for.`gptel-s
41920 65 6e 64 27 20 73 74 61 74 65 20 74 72 61 6e 73 69 74 69 6f 6e 73 2e 0a 0a 53 65 65 20 60 67 70 end'.state.transitions...See.`gp
41940 74 65 6c 2d 72 65 71 75 65 73 74 2d 2d 68 61 6e 64 6c 65 72 73 27 20 66 6f 72 20 64 65 74 61 69 tel-request--handlers'.for.detai
41960 6c 73 2e 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 66 73 6d 20 ls.")..(cl-defstruct.(gptel-fsm.
41980 28 3a 63 6f 6e 73 74 72 75 63 74 6f 72 20 67 70 74 65 6c 2d 6d 61 6b 65 2d 66 73 6d 29 0a 20 20 (:constructor.gptel-make-fsm)...
419a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 3a 63 6f 70 69 65 72 20 .......................(:copier.
419c0 67 70 74 65 6c 2d 63 6f 70 79 2d 66 73 6d 29 29 0a 20 20 22 53 74 61 74 65 20 6d 61 63 68 69 6e gptel-copy-fsm))..."State.machin
419e0 65 20 66 6f 72 20 67 70 74 65 6c 20 72 65 71 75 65 73 74 73 2e 0a 0a 53 54 41 54 45 3a 20 54 68 e.for.gptel.requests...STATE:.Th
41a00 65 20 63 75 72 72 65 6e 74 20 73 74 61 74 65 20 6f 66 20 74 68 65 20 6d 61 63 68 69 6e 65 2c 20 e.current.state.of.the.machine,.
41a20 63 61 6e 20 62 65 20 61 6e 79 20 73 79 6d 62 6f 6c 2e 0a 0a 54 41 42 4c 45 3a 20 41 6c 69 73 74 can.be.any.symbol...TABLE:.Alist
41a40 20 6d 61 70 70 69 6e 67 20 73 74 61 74 65 73 20 74 6f 20 70 6f 73 73 69 62 6c 65 20 6e 65 78 74 .mapping.states.to.possible.next
41a60 20 73 74 61 74 65 73 0a 61 6c 6f 6e 67 20 77 69 74 68 20 70 72 65 64 69 63 61 74 65 73 20 74 6f .states.along.with.predicates.to
41a80 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20 6e 65 78 74 20 73 74 61 74 65 2e 20 20 53 65 65 0a .determine.the.next.state...See.
41aa0 60 67 70 74 65 6c 2d 72 65 71 75 65 73 74 2d 2d 74 72 61 6e 73 69 74 69 6f 6e 73 27 20 66 6f 72 `gptel-request--transitions'.for
41ac0 20 61 6e 20 65 78 61 6d 70 6c 65 2e 0a 0a 48 41 4e 44 4c 45 52 53 3a 20 41 6c 69 73 74 20 6d 61 .an.example...HANDLERS:.Alist.ma
41ae0 70 70 69 6e 67 20 73 74 61 74 65 73 20 74 6f 20 73 74 61 74 65 20 68 61 6e 64 6c 65 72 20 66 75 pping.states.to.state.handler.fu
41b00 6e 63 74 69 6f 6e 73 2e 0a 48 61 6e 64 6c 65 72 73 20 61 72 65 20 63 61 6c 6c 65 64 20 77 68 65 nctions..Handlers.are.called.whe
41b20 6e 20 65 6e 74 65 72 69 6e 67 20 65 61 63 68 20 73 74 61 74 65 2e 20 20 53 65 65 0a 60 67 70 74 n.entering.each.state...See.`gpt
41b40 65 6c 2d 72 65 71 75 65 73 74 2d 2d 68 61 6e 64 6c 65 72 73 27 20 66 6f 72 20 61 6e 20 65 78 61 el-request--handlers'.for.an.exa
41b60 6d 70 6c 65 0a 0a 49 4e 46 4f 3a 20 54 68 65 20 73 74 61 74 65 20 6d 61 63 68 69 6e 65 27 73 20 mple..INFO:.The.state.machine's.
41b80 63 75 72 72 65 6e 74 20 63 6f 6e 74 65 78 74 2e 20 20 54 68 69 73 20 69 73 20 61 20 70 6c 69 73 current.context...This.is.a.plis
41ba0 74 0a 68 6f 6c 64 69 6e 67 20 61 6c 6c 20 74 68 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 72 65 t.holding.all.the.information.re
41bc0 71 75 69 72 65 64 20 66 6f 72 20 74 68 65 20 6f 6e 67 6f 69 6e 67 20 72 65 71 75 65 73 74 2c 20 quired.for.the.ongoing.request,.
41be0 61 6e 64 0a 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 74 77 65 61 6b 20 61 6e 64 20 72 65 73 and.can.be.used.to.tweak.and.res
41c00 75 6d 65 20 61 20 70 61 75 73 65 64 20 72 65 71 75 65 73 74 2e 20 20 54 68 69 73 20 73 68 6f 75 ume.a.paused.request...This.shou
41c20 6c 64 20 62 65 0a 63 61 6c 6c 65 64 20 5c 22 63 6f 6e 74 65 78 74 5c 22 2c 20 62 75 74 20 63 6f ld.be.called.\"context\",.but.co
41c40 6e 74 65 78 74 20 6d 65 61 6e 73 20 74 6f 6f 20 6d 61 6e 79 20 74 68 69 6e 67 73 20 61 6c 72 65 ntext.means.too.many.things.alre
41c60 61 64 79 20 69 6e 0a 67 70 74 65 6c 27 73 20 63 6f 64 65 21 0a 0a 45 61 63 68 20 67 70 74 65 6c ady.in.gptel's.code!..Each.gptel
41c80 20 72 65 71 75 65 73 74 20 69 73 20 70 61 73 73 65 64 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f .request.is.passed.an.instance.o
41ca0 66 20 74 68 69 73 0a 73 74 61 74 65 20 6d 61 63 68 69 6e 65 20 61 6e 64 20 64 72 69 76 65 6e 20 f.this.state.machine.and.driven.
41cc0 62 79 20 69 74 2e 22 0a 20 20 28 73 74 61 74 65 20 27 49 4e 49 54 29 0a 20 20 28 74 61 62 6c 65 by.it."...(state.'INIT)...(table
41ce0 20 67 70 74 65 6c 2d 72 65 71 75 65 73 74 2d 2d 74 72 61 6e 73 69 74 69 6f 6e 73 29 0a 20 20 28 .gptel-request--transitions)...(
41d00 68 61 6e 64 6c 65 72 73 20 67 70 74 65 6c 2d 72 65 71 75 65 73 74 2d 2d 68 61 6e 64 6c 65 72 73 handlers.gptel-request--handlers
41d20 29 20 69 6e 66 6f 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 66 73 6d 2d 74 72 61 6e 73 ).info)..(defun.gptel--fsm-trans
41d40 69 74 69 6f 6e 20 28 6d 61 63 68 69 6e 65 20 26 6f 70 74 69 6f 6e 61 6c 20 6e 65 77 2d 73 74 61 ition.(machine.&optional.new-sta
41d60 74 65 29 0a 20 20 22 4d 6f 76 65 20 4d 41 43 48 49 4e 45 20 74 6f 20 69 74 73 20 6e 65 78 74 20 te)..."Move.MACHINE.to.its.next.
41d80 73 74 61 74 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 state...MACHINE.is.an.instance.o
41da0 66 20 60 67 70 74 65 6c 2d 66 73 6d 27 2e 0a 0a 54 68 65 20 6e 65 78 74 20 73 74 61 74 65 20 69 f.`gptel-fsm'...The.next.state.i
41dc0 73 20 4e 45 57 2d 53 54 41 54 45 20 69 66 20 67 69 76 65 6e 2e 20 20 4f 74 68 65 72 77 69 73 65 s.NEW-STATE.if.given...Otherwise
41de0 20 69 74 20 69 73 20 64 65 74 65 72 6d 69 6e 65 64 0a 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 .it.is.determined.automatically.
41e00 66 72 6f 6d 20 4d 41 43 48 49 4e 45 27 73 20 74 72 61 6e 73 69 74 69 6f 6e 20 74 61 62 6c 65 2e from.MACHINE's.transition.table.
41e20 22 0a 20 20 28 75 6e 6c 65 73 73 20 6e 65 77 2d 73 74 61 74 65 20 28 73 65 74 71 20 6e 65 77 2d "...(unless.new-state.(setq.new-
41e40 73 74 61 74 65 20 28 67 70 74 65 6c 2d 2d 66 73 6d 2d 6e 65 78 74 20 6d 61 63 68 69 6e 65 29 29 state.(gptel--fsm-next.machine))
41e60 29 0a 20 20 28 70 75 73 68 20 28 67 70 74 65 6c 2d 66 73 6d 2d 73 74 61 74 65 20 6d 61 63 68 69 )...(push.(gptel-fsm-state.machi
41e80 6e 65 29 0a 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 67 65 74 20 28 67 70 74 65 6c 2d 66 73 ne).........(plist-get.(gptel-fs
41ea0 6d 2d 69 6e 66 6f 20 6d 61 63 68 69 6e 65 29 20 3a 68 69 73 74 6f 72 79 29 29 0a 20 20 28 73 65 m-info.machine).:history))...(se
41ec0 74 66 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 20 6e 65 77 tf.(gptel-fsm-state.machine).new
41ee0 2d 73 74 61 74 65 29 0a 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 68 61 6e 64 6c 65 72 73 20 -state)...(when-let*.((handlers.
41f00 28 61 6c 69 73 74 2d 67 65 74 20 6e 65 77 2d 73 74 61 74 65 20 28 67 70 74 65 6c 2d 66 73 6d 2d (alist-get.new-state.(gptel-fsm-
41f20 68 61 6e 64 6c 65 72 73 20 6d 61 63 68 69 6e 65 29 29 29 29 0a 20 20 20 20 28 6d 61 70 63 20 28 handlers.machine)))).....(mapc.(
41f40 6c 61 6d 62 64 61 20 28 68 29 20 28 66 75 6e 63 61 6c 6c 20 68 20 6d 61 63 68 69 6e 65 29 29 20 lambda.(h).(funcall.h.machine)).
41f60 68 61 6e 64 6c 65 72 73 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 66 73 6d 2d 6e handlers)))..(defun.gptel--fsm-n
41f80 65 78 74 20 28 6d 61 63 68 69 6e 65 29 0a 20 20 22 44 65 74 65 72 6d 69 6e 65 20 4d 41 43 48 49 ext.(machine)..."Determine.MACHI
41fa0 4e 45 27 73 20 6e 65 78 74 20 73 74 61 74 65 20 61 63 63 6f 72 64 69 6e 67 20 74 6f 20 69 74 73 NE's.next.state.according.to.its
41fc0 20 74 72 61 6e 73 69 74 69 6f 6e 20 74 61 62 6c 65 2e 0a 0a 4d 41 43 48 49 4e 45 20 69 73 20 61 .transition.table...MACHINE.is.a
41fe0 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 60 67 70 74 65 6c 2d 66 73 6d 27 22 0a 20 20 28 6c 65 n.instance.of.`gptel-fsm'"...(le
42000 74 2a 20 28 28 63 75 72 72 65 6e 74 20 28 67 70 74 65 6c 2d 66 73 6d 2d 73 74 61 74 65 20 6d 61 t*.((current.(gptel-fsm-state.ma
42020 63 68 69 6e 65 29 29 0a 20 20 20 20 20 20 20 20 20 28 74 72 61 6e 73 69 74 69 6f 6e 73 20 28 61 chine))..........(transitions.(a
42040 6c 69 73 74 2d 67 65 74 20 63 75 72 72 65 6e 74 20 28 67 70 74 65 6c 2d 66 73 6d 2d 74 61 62 6c list-get.current.(gptel-fsm-tabl
42060 65 20 6d 61 63 68 69 6e 65 29 29 29 29 0a 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 0a 20 20 20 20 20 e.machine)))).....(cl-loop......
42080 77 69 74 68 20 69 6e 66 6f 20 3d 20 28 67 70 74 65 6c 2d 66 73 6d 2d 69 6e 66 6f 20 6d 61 63 68 with.info.=.(gptel-fsm-info.mach
420a0 69 6e 65 29 0a 20 20 20 20 20 66 6f 72 20 28 70 72 65 64 20 2e 20 6e 65 78 74 29 20 69 6e 20 74 ine)......for.(pred...next).in.t
420c0 72 61 6e 73 69 74 69 6f 6e 73 0a 20 20 20 20 20 77 68 65 6e 20 28 6f 72 20 28 65 71 20 70 72 65 ransitions......when.(or.(eq.pre
420e0 64 20 74 29 20 28 66 75 6e 63 61 6c 6c 20 70 72 65 64 20 69 6e 66 6f 29 29 0a 20 20 20 20 20 72 d.t).(funcall.pred.info))......r
42100 65 74 75 72 6e 20 6e 65 78 74 29 29 29 0a 0a 28 64 65 66 76 61 72 2d 6c 6f 63 61 6c 20 67 70 74 eturn.next)))..(defvar-local.gpt
42120 65 6c 2d 2d 66 73 6d 2d 6c 61 73 74 20 6e 69 6c 0a 20 20 22 53 74 61 74 65 20 6d 61 63 68 69 6e el--fsm-last.nil..."State.machin
42140 65 20 66 6f 72 20 6c 61 74 65 73 74 20 72 65 71 75 65 73 74 20 69 6e 20 74 68 65 20 62 75 66 66 e.for.latest.request.in.the.buff
42160 65 72 2e 22 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 66 73 6d 2d 6c 61 73 74 20 28 66 er.")..(defun.gptel--fsm-last.(f
42180 73 6d 29 0a 20 20 20 20 22 43 61 70 74 75 72 65 20 74 68 65 20 6c 61 74 65 73 74 20 72 65 71 75 sm)....."Capture.the.latest.requ
421a0 65 73 74 20 73 74 61 74 65 20 46 53 4d 20 66 6f 72 20 69 6e 74 72 6f 73 70 65 63 74 69 6f 6e 2e est.state.FSM.for.introspection.
421c0 22 0a 20 20 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 ".....(let.((info.(gptel-fsm-inf
421e0 6f 20 66 73 6d 29 29 29 0a 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 67 70 74 65 6c 2d 6c 6f 67 o.fsm))).......(unless.gptel-log
42200 2d 6c 65 76 65 6c 0a 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 64 61 74 61 20 28 70 6c 69 73 -level.........(let.((data.(plis
42220 74 2d 67 65 74 20 69 6e 66 6f 20 3a 64 61 74 61 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 64 t-get.info.:data)))...........(d
42240 6f 6c 69 73 74 20 28 6b 65 79 20 27 28 3a 6d 65 73 73 61 67 65 73 20 3a 63 6f 6e 74 65 6e 74 73 olist.(key.'(:messages.:contents
42260 20 3a 71 75 65 72 79 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 66 20 28 70 6c 69 .:query)).............(setf.(pli
42280 73 74 2d 67 65 74 20 64 61 74 61 20 6b 65 79 29 20 6e 69 6c 29 29 29 29 0a 20 20 20 20 20 20 28 st-get.data.key).nil)))).......(
422a0 73 65 74 66 20 28 67 70 74 65 6c 2d 66 73 6d 2d 69 6e 66 6f 20 66 73 6d 29 0a 20 20 20 20 20 20 setf.(gptel-fsm-info.fsm).......
422c0 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 65 6e 64 2d 74 69 6d 65 20 ......(plist-put.info.:end-time.
422e0 28 63 75 72 72 65 6e 74 2d 74 69 6d 65 2d 73 74 72 69 6e 67 29 29 29 0a 20 20 20 20 20 20 28 77 (current-time-string))).......(w
42300 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 6e ith-current-buffer.(plist-get.in
42320 66 6f 20 3a 62 75 66 66 65 72 29 0a 20 20 20 20 20 20 20 20 28 73 65 74 71 20 67 70 74 65 6c 2d fo.:buffer).........(setq.gptel-
42340 2d 66 73 6d 2d 6c 61 73 74 20 66 73 6d 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d -fsm-last.fsm))))..(defun.gptel-
42360 2d 69 6e 73 70 65 63 74 2d 66 73 6d 20 28 26 6f 70 74 69 6f 6e 61 6c 20 66 73 6d 29 0a 20 20 22 -inspect-fsm.(&optional.fsm)..."
42380 49 6e 73 70 65 63 74 20 67 70 74 65 6c 20 72 65 71 75 65 73 74 20 73 74 61 74 65 20 46 53 4d 2e Inspect.gptel.request.state.FSM.
423a0 0a 0a 46 53 4d 20 64 65 66 61 75 6c 74 73 20 74 6f 20 74 68 65 20 73 74 61 74 65 20 6f 66 20 74 ..FSM.defaults.to.the.state.of.t
423c0 68 65 20 6c 61 73 74 20 72 65 71 75 65 73 74 20 69 6e 20 74 68 65 20 63 75 72 72 65 6e 74 0a 62 he.last.request.in.the.current.b
423e0 75 66 66 65 72 2e 22 0a 20 20 28 75 6e 6c 65 73 73 20 66 73 6d 0a 20 20 20 20 28 73 65 74 71 20 uffer."...(unless.fsm.....(setq.
42400 66 73 6d 20 28 6f 72 20 28 63 64 72 2d 73 61 66 65 20 28 63 6c 2d 66 69 6e 64 2d 69 66 0a 20 20 fsm.(or.(cdr-safe.(cl-find-if...
42420 20 20 20 20 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 ...........................(lamb
42440 64 61 20 28 70 72 6f 63 2d 6c 69 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 da.(proc-list)..................
42460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 71 20 28 74 68 72 65 61 64 2d 66 69 72 73 74 20 ..............(eq.(thread-first.
42480 28 63 61 64 72 20 70 72 6f 63 2d 6c 69 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (cadr.proc-list)................
424a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
424c0 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)..............
424e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
42500 20 20 20 20 28 70 6c 69 73 74 2d 67 65 74 20 3a 62 75 66 66 65 72 29 29 0a 20 20 20 20 20 20 20 ....(plist-get.:buffer))........
42520 20 20 20 20 20 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
42540 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)))..................
42560 20 20 20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 2d 72 65 71 75 65 73 74 2d 61 6c 69 73 74 ............gptel--request-alist
42580 29 29 0a 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 66 73 6d 2d ))...................gptel--fsm-
425a0 6c 61 73 74 29 29 29 0a 20 20 28 75 6e 6c 65 73 73 20 28 63 6c 2d 74 79 70 65 70 20 67 70 74 65 last)))...(unless.(cl-typep.gpte
425c0 6c 2d 2d 66 73 6d 2d 6c 61 73 74 20 27 67 70 74 65 6c 2d 66 73 6d 29 0a 20 20 20 20 28 75 73 65 l--fsm-last.'gptel-fsm).....(use
425e0 72 2d 65 72 72 6f 72 20 22 4e 6f 20 67 70 74 65 6c 20 72 65 71 75 65 73 74 20 6c 6f 67 20 69 6e r-error."No.gptel.request.log.in
42600 20 74 68 69 73 20 62 75 66 66 65 72 20 79 65 74 21 22 29 29 0a 20 20 28 72 65 71 75 69 72 65 20 .this.buffer.yet!"))...(require.
42620 27 74 61 62 75 6c 61 74 65 64 2d 6c 69 73 74 29 0a 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 'tabulated-list)...(with-current
42640 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 74 -buffer.(get-buffer-create."*gpt
42660 65 6c 2d 64 69 61 67 6e 6f 73 74 69 63 2a 22 29 0a 20 20 20 20 28 73 65 74 71 20 74 61 62 75 6c el-diagnostic*").....(setq.tabul
42680 61 74 65 64 2d 6c 69 73 74 2d 66 6f 72 6d 61 74 20 5b 28 22 52 65 71 75 65 73 74 20 61 74 74 72 ated-list-format.[("Request.attr
426a0 69 62 75 74 65 22 20 33 30 20 74 29 20 28 22 56 61 6c 75 65 22 20 33 30 29 5d 29 0a 20 20 20 20 ibute".30.t).("Value".30)]).....
426c0 28 6c 65 74 2a 20 28 28 70 62 20 28 6c 61 6d 62 64 61 20 28 73 29 20 28 70 72 6f 70 65 72 74 69 (let*.((pb.(lambda.(s).(properti
426e0 7a 65 20 73 20 27 66 61 63 65 20 27 66 6f 6e 74 2d 6c 6f 63 6b 2d 62 75 69 6c 74 69 6e 2d 66 61 ze.s.'face.'font-lock-builtin-fa
42700 63 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 70 73 20 28 6c 61 6d 62 64 61 20 28 73 29 ce)))............(ps.(lambda.(s)
42720 20 28 70 72 6f 70 65 72 74 69 7a 65 20 73 20 27 66 61 63 65 20 27 66 6f 6e 74 2d 6c 6f 63 6b 2d .(propertize.s.'face.'font-lock-
42740 73 74 72 69 6e 67 2d 66 61 63 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 66 6d 74 20 28 string-face)))............(fmt.(
42760 6c 61 6d 62 64 61 20 28 73 29 20 28 63 6f 6e 64 20 28 28 6d 65 6d 71 20 28 63 61 72 2d 73 61 66 lambda.(s).(cond.((memq.(car-saf
42780 65 20 73 29 20 27 28 63 6c 6f 73 75 72 65 20 6c 61 6d 62 64 61 29 29 0a 20 20 20 20 20 20 20 20 e.s).'(closure.lambda)).........
427a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 23 ......................(format."#
427c0 3c 6c 61 6d 62 64 61 20 25 23 78 3e 22 20 28 73 78 68 61 73 68 20 73 29 29 29 0a 20 20 20 20 20 <lambda.%#x>".(sxhash.s)))......
427e0 20 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 62 79 74 65 2d 63 ........................((byte-c
42800 6f 64 65 2d 66 75 6e 63 74 69 6f 6e 2d 70 20 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ode-function-p.s)...............
42820 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 23 3c 63 6f 6d 70 69 ................(format."#<compi
42840 6c 65 64 20 25 23 78 3e 22 20 28 73 78 68 61 73 68 20 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 led.%#x>".(sxhash.s)))..........
42860 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 69 6e 67 70 20 73 29 ....................((stringp.s)
42880 20 28 73 74 72 69 6e 67 2d 72 65 70 6c 61 63 65 20 22 5c 6e 22 20 22 e2 ae 90 20 22 20 73 29 29 .(string-replace."\n"."....".s))
428a0 0a 20 20 20 20 20 20 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
428c0 20 28 70 72 69 6e 31 2d 74 6f 2d 73 74 72 69 6e 67 20 73 29 29 29 29 29 0a 20 20 20 20 20 20 20 .(prin1-to-string.s)))))........
428e0 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 0a 20 20 20 20 20 20 ....(inhibit-read-only.t).......
42900 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 73 6d 29 29 .....(info.(gptel-fsm-info.fsm))
42920 0a 20 20 20 20 20 20 20 20 20 20 20 28 65 6e 74 72 69 65 73 2d 69 6e 66 6f 0a 20 20 20 20 20 20 ............(entries-info.......
42940 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 66 6f 72 20 ......(cl-loop..............for.
42960 69 64 78 20 75 70 66 72 6f 6d 20 33 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 6b idx.upfrom.3..............for.(k
42980 65 79 20 76 61 6c 29 20 6f 6e 20 69 6e 66 6f 20 62 79 20 23 27 63 64 64 72 0a 20 20 20 20 20 20 ey.val).on.info.by.#'cddr.......
429a0 20 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 64 61 74 61 20 .......unless.(memq.key.'(:data.
429c0 3a 68 69 73 74 6f 72 79 20 3a 74 6f 6f 6c 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :history.:tools.................
429e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 70 61 72 74 69 61 6c 5f 74 65 78 74 20 3a 70 ................:partial_text.:p
42a00 61 72 74 69 61 6c 5f 6a 73 6f 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6c 6c 65 artial_json))..............colle
42a20 63 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 69 64 78 20 60 5b 2c 28 66 75 ct..............(list.idx.`[,(fu
42a40 6e 63 61 6c 6c 20 70 62 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 6b 65 79 29 29 0a 20 20 20 20 ncall.pb.(symbol-name.key)).....
42a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2c 28 66 75 6e 63 61 6c 6c 20 70 .....................,(funcall.p
42a80 73 20 28 66 75 6e 63 61 6c 6c 20 66 6d 74 20 76 61 6c 29 29 5d 29 29 29 0a 20 20 20 20 20 20 20 s.(funcall.fmt.val))])))........
42aa0 20 20 20 20 28 65 6e 74 72 69 65 73 2d 64 61 74 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 63 ....(entries-data.............(c
42ac0 6c 2d 6c 6f 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 l-loop..............for.idx.upfr
42ae0 6f 6d 20 35 30 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 om.50..............for.(key.val)
42b00 20 6f 6e 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 64 61 74 61 29 20 62 79 20 23 27 .on.(plist-get.info.:data).by.#'
42b20 63 64 64 72 0a 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 6b cddr..............unless.(memq.k
42b40 65 79 20 27 28 3a 6d 65 73 73 61 67 65 73 20 3a 73 74 72 65 61 6d 20 3a 63 6f 6e 74 65 6e 74 73 ey.'(:messages.:stream.:contents
42b60 20 3a 71 75 65 72 79 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6c 6c 65 63 74 0a 20 .:query))..............collect..
42b80 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 69 64 78 20 60 5b 2c 28 66 75 6e 63 61 6c ............(list.idx.`[,(funcal
42ba0 6c 20 70 62 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 6b 65 79 29 29 0a 20 20 20 20 20 20 20 20 l.pb.(symbol-name.key)).........
42bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2c 28 66 75 6e 63 61 6c 6c 20 70 73 20 28 66 .................,(funcall.ps.(f
42be0 75 6e 63 61 6c 6c 20 66 6d 74 20 76 61 6c 29 29 5d 29 29 29 29 0a 20 20 20 20 20 20 28 73 65 74 uncall.fmt.val))])))).......(set
42c00 71 20 74 61 62 75 6c 61 74 65 64 2d 6c 69 73 74 2d 65 6e 74 72 69 65 73 0a 20 20 20 20 20 20 20 q.tabulated-list-entries........
42c20 20 20 20 20 20 28 6e 63 6f 6e 63 20 28 6c 69 73 74 20 60 28 32 20 5b 2c 28 66 75 6e 63 61 6c 6c .....(nconc.(list.`(2.[,(funcall
42c40 20 70 62 20 22 3a 73 74 61 74 65 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .pb.":state")...................
42c60 20 20 20 20 20 20 20 20 20 20 20 20 2c 28 66 75 6e 63 61 6c 6c 20 70 73 0a 20 20 20 20 20 20 20 ............,(funcall.ps........
42c80 20 20 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 6f 6e .........................(mapcon
42ca0 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.............................
42cc0 20 20 20 20 20 66 6d 74 20 28 72 65 76 65 72 73 65 20 28 63 6f 6e 73 20 28 67 70 74 65 6c 2d 66 .....fmt.(reverse.(cons.(gptel-f
42ce0 73 6d 2d 73 74 61 74 65 20 66 73 6d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 sm-state.fsm)...................
42d00 20 20 20 20 20 20 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 .............................(pl
42d20 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 68 69 73 74 6f 72 79 29 29 29 0a 20 20 20 20 20 20 20 ist-get.info.:history)))........
42d40 20 20 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 e2 86 92 20 ..........................".....
42d60 22 29 29 5d 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 74 72 69 65 "))]))....................entrie
42d80 73 2d 69 6e 66 6f 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 74 72 69 65 s-info....................entrie
42da0 73 2d 64 61 74 61 29 29 0a 20 20 20 20 20 20 28 74 61 62 75 6c 61 74 65 64 2d 6c 69 73 74 2d 70 s-data)).......(tabulated-list-p
42dc0 72 69 6e 74 29 0a 20 20 20 20 20 20 28 74 61 62 75 6c 61 74 65 64 2d 6c 69 73 74 2d 6d 6f 64 65 rint).......(tabulated-list-mode
42de0 29 0a 20 20 20 20 20 20 28 74 61 62 75 6c 61 74 65 64 2d 6c 69 73 74 2d 69 6e 69 74 2d 68 65 61 ).......(tabulated-list-init-hea
42e00 64 65 72 29 0a 20 20 20 20 20 20 28 68 6c 2d 6c 69 6e 65 2d 6d 6f 64 65 20 31 29 0a 20 20 20 20 der).......(hl-line-mode.1).....
42e20 20 20 28 64 69 73 70 6c 61 79 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 28 63 75 72 72 65 6e ..(display-buffer........(curren
42e40 74 2d 62 75 66 66 65 72 29 0a 20 20 20 20 20 20 20 27 28 28 64 69 73 70 6c 61 79 2d 62 75 66 66 t-buffer)........'((display-buff
42e60 65 72 2d 69 6e 2d 73 69 64 65 2d 77 69 6e 64 6f 77 29 0a 20 20 20 20 20 20 20 20 20 28 73 69 64 er-in-side-window)..........(sid
42e80 65 20 2e 20 62 6f 74 74 6f 6d 29 0a 20 20 20 20 20 20 20 20 20 28 77 69 6e 64 6f 77 2d 68 65 69 e...bottom)..........(window-hei
42ea0 67 68 74 20 2e 20 66 69 74 2d 77 69 6e 64 6f 77 2d 74 6f 2d 62 75 66 66 65 72 29 0a 20 20 20 20 ght...fit-window-to-buffer).....
42ec0 20 20 20 20 20 28 73 6c 6f 74 20 2e 20 31 30 29 0a 20 20 20 20 20 20 20 20 20 28 62 6f 64 79 2d .....(slot...10)..........(body-
42ee0 66 75 6e 63 74 69 6f 6e 20 2e 20 73 65 6c 65 63 74 2d 77 69 6e 64 6f 77 29 29 29 29 29 29 0a 0a function...select-window))))))..
42f00 3b 3b 3b 3b 20 53 74 61 74 65 20 6d 61 63 68 69 6e 65 20 68 61 6e 64 6c 65 72 73 0a 3b 3b 20 54 ;;;;.State.machine.handlers.;;.T
42f20 68 65 20 6e 65 78 74 20 66 65 77 20 66 75 6e 63 74 69 6f 6e 73 20 61 72 65 20 64 65 66 61 75 6c he.next.few.functions.are.defaul
42f40 74 20 73 74 61 74 65 20 68 61 6e 64 6c 65 72 73 20 66 6f 72 20 67 70 74 65 6c 27 73 20 73 74 61 t.state.handlers.for.gptel's.sta
42f60 74 65 20 6d 61 63 68 69 6e 65 2c 0a 3b 3b 20 73 65 65 20 60 67 70 74 65 6c 2d 72 65 71 75 65 73 te.machine,.;;.see.`gptel-reques
42f80 74 2d 2d 68 61 6e 64 6c 65 72 73 27 2e 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 68 61 6e t--handlers'...(defun.gptel--han
42fa0 64 6c 65 2d 77 61 69 74 20 28 66 73 6d 29 0a 20 20 22 46 69 72 65 20 74 68 65 20 72 65 71 75 65 dle-wait.(fsm)..."Fire.the.reque
42fc0 73 74 20 63 6f 6e 74 61 69 6e 65 64 20 69 6e 20 73 74 61 74 65 20 6d 61 63 68 69 6e 65 20 46 53 st.contained.in.state.machine.FS
42fe0 4d 27 73 20 69 6e 66 6f 2e 22 0a 20 20 3b 3b 20 52 65 73 65 74 20 73 6f 6d 65 20 66 6c 61 67 73 M's.info."...;;.Reset.some.flags
43000 20 69 6e 20 69 6e 66 6f 2e 20 20 54 68 69 73 20 69 73 20 6e 65 63 65 73 73 61 72 79 20 77 68 65 .in.info...This.is.necessary.whe
43020 6e 20 72 65 75 73 69 6e 67 20 66 73 6d 27 73 20 63 6f 6e 74 65 78 74 20 66 6f 72 0a 20 20 3b 3b n.reusing.fsm's.context.for...;;
43040 20 61 20 73 65 63 6f 6e 64 20 6e 65 74 77 6f 72 6b 20 72 65 71 75 65 73 74 3a 20 67 70 74 65 6c .a.second.network.request:.gptel
43060 20 74 65 73 74 73 20 66 6f 72 20 74 68 65 20 70 72 65 73 65 6e 63 65 20 6f 66 20 74 68 65 73 65 .tests.for.the.presence.of.these
43080 20 66 6c 61 67 73 20 74 6f 0a 20 20 3b 3b 20 68 61 6e 64 6c 65 20 73 74 61 74 65 20 74 72 61 6e .flags.to...;;.handle.state.tran
430a0 73 69 74 69 6f 6e 73 2e 20 20 28 4e 4f 54 45 3a 20 44 6f 6e 27 74 20 61 64 64 20 3a 74 6f 6b 65 sitions...(NOTE:.Don't.add.:toke
430c0 6e 20 74 6f 20 74 68 69 73 2e 29 0a 20 20 28 6c 65 74 20 28 28 69 6e 66 6f 20 28 67 70 74 65 6c n.to.this.)...(let.((info.(gptel
430e0 2d 66 73 6d 2d 69 6e 66 6f 20 66 73 6d 29 29 29 0a 20 20 20 20 28 64 6f 6c 69 73 74 20 28 6b 65 -fsm-info.fsm))).....(dolist.(ke
43100 79 20 27 28 3a 74 6f 6f 6c 2d 73 75 63 63 65 73 73 20 3a 74 6f 6f 6c 2d 75 73 65 20 3a 65 72 72 y.'(:tool-success.:tool-use.:err
43120 6f 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 68 74 74 70 2d 73 74 61 74 or....................:http-stat
43140 75 73 20 3a 72 65 61 73 6f 6e 69 6e 67 20 3a 72 65 61 73 6f 6e 69 6e 67 2d 62 6c 6f 63 6b 29 29 us.:reasoning.:reasoning-block))
43160 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 6e 66 6f 20 6b 65 79 .......(when.(plist-get.info.key
43180 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 6b 65 79 20 6e 69 ).........(plist-put.info.key.ni
431a0 6c 29 29 29 29 0a 20 20 28 66 75 6e 63 61 6c 6c 0a 20 20 20 28 69 66 20 67 70 74 65 6c 2d 75 73 l))))...(funcall....(if.gptel-us
431c0 65 2d 63 75 72 6c 0a 20 20 20 20 20 20 20 23 27 67 70 74 65 6c 2d 63 75 72 6c 2d 67 65 74 2d 72 e-curl........#'gptel-curl-get-r
431e0 65 73 70 6f 6e 73 65 0a 20 20 20 20 20 23 27 67 70 74 65 6c 2d 2d 75 72 6c 2d 67 65 74 2d 72 65 esponse......#'gptel--url-get-re
43200 73 70 6f 6e 73 65 29 0a 20 20 20 66 73 6d 29 0a 20 20 28 72 75 6e 2d 68 6f 6f 6b 73 20 27 67 70 sponse)....fsm)...(run-hooks.'gp
43220 74 65 6c 2d 70 6f 73 74 2d 72 65 71 75 65 73 74 2d 68 6f 6f 6b 29 0a 20 20 28 77 69 74 68 2d 63 tel-post-request-hook)...(with-c
43240 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 28 67 70 74 65 6c 2d urrent-buffer.(plist-get.(gptel-
43260 66 73 6d 2d 69 6e 66 6f 20 66 73 6d 29 20 3a 62 75 66 66 65 72 29 0a 20 20 20 20 28 67 70 74 65 fsm-info.fsm).:buffer).....(gpte
43280 6c 2d 2d 75 70 64 61 74 65 2d 73 74 61 74 75 73 20 22 20 57 61 69 74 69 6e 67 2e 2e 2e 22 20 27 l--update-status.".Waiting...".'
432a0 77 61 72 6e 69 6e 67 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 warning)))..(defun.gptel--handle
432c0 2d 70 72 65 2d 69 6e 73 65 72 74 20 28 66 73 6d 29 0a 20 20 22 54 61 73 6b 73 20 62 65 66 6f 72 -pre-insert.(fsm)..."Tasks.befor
432e0 65 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 66 6f 72 e.inserting.the.LLM.response.for
43300 20 73 74 61 74 65 20 46 53 4d 2e 0a 0a 48 61 6e 64 6c 65 20 72 65 61 64 2d 6f 6e 6c 79 20 62 75 .state.FSM...Handle.read-only.bu
43320 66 66 65 72 73 20 61 6e 64 20 72 75 6e 20 70 72 65 2d 72 65 73 70 6f 6e 73 65 20 68 6f 6f 6b 73 ffers.and.run.pre-response.hooks
43340 20 28 62 75 74 20 6f 6e 6c 79 20 69 66 0a 74 68 65 20 72 65 71 75 65 73 74 20 73 75 63 63 65 65 .(but.only.if.the.request.succee
43360 64 65 64 29 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 73 6d ded)."...(let*.((info.(gptel-fsm
43380 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 72 6b -info.fsm))..........(start-mark
433a0 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 29 0a er.(plist-get.info.:position))).
433c0 20 20 20 20 28 77 68 65 6e 20 28 61 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 28 6d 65 6d 71 20 ....(when.(and............(memq.
433e0 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 0a 20 20 20 20 20 (plist-get.info.:callback)......
43400 20 20 20 20 20 20 20 20 20 20 20 20 27 28 67 70 74 65 6c 2d 2d 69 6e 73 65 72 74 2d 72 65 73 70 ............'(gptel--insert-resp
43420 6f 6e 73 65 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 onse.gptel-curl--stream-insert-r
43440 65 73 70 6f 6e 73 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 esponse))............(with-curre
43460 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
43480 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 20 62 75 66 66 65 72 2d 72 65 61 64 2d r)..............(or.buffer-read-
434a0 6f 6e 6c 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 65 74 2d 63 68 61 72 2d only..................(get-char-
434c0 70 72 6f 70 65 72 74 79 20 73 74 61 72 74 2d 6d 61 72 6b 65 72 20 27 72 65 61 64 2d 6f 6e 6c 79 property.start-marker.'read-only
434e0 29 29 29 29 0a 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 42 75 66 66 65 72 20 69 73 20 72 )))).......(message."Buffer.is.r
43500 65 61 64 20 6f 6e 6c 79 2c 20 64 69 73 70 6c 61 79 69 6e 67 20 72 65 70 6c 79 20 69 6e 20 62 75 ead.only,.displaying.reply.in.bu
43520 66 66 65 72 20 5c 22 2a 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 2a 5c 22 22 29 0a 20 20 20 20 20 20 ffer.\"*LLM.response*\"").......
43540 28 64 69 73 70 6c 61 79 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 28 77 69 74 68 2d 63 75 72 (display-buffer........(with-cur
43560 72 65 6e 74 2d 62 75 66 66 65 72 20 28 67 65 74 2d 62 75 66 66 65 72 2d 63 72 65 61 74 65 20 22 rent-buffer.(get-buffer-create."
43580 2a 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 2a 22 29 0a 20 20 20 20 20 20 20 20 20 28 76 69 73 75 61 *LLM.response*")..........(visua
435a0 6c 2d 6c 69 6e 65 2d 6d 6f 64 65 20 31 29 0a 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 l-line-mode.1)..........(goto-ch
435c0 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 28 6d 6f 76 65 2d 6d ar.(point-max))..........(move-m
435e0 61 72 6b 65 72 20 73 74 61 72 74 2d 6d 61 72 6b 65 72 20 28 70 6f 69 6e 74 29 20 28 63 75 72 72 arker.start-marker.(point).(curr
43600 65 6e 74 2d 62 75 66 66 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 28 63 75 72 72 65 6e 74 2d 62 ent-buffer))..........(current-b
43620 75 66 66 65 72 29 29 0a 20 20 20 20 20 20 20 27 28 28 64 69 73 70 6c 61 79 2d 62 75 66 66 65 72 uffer))........'((display-buffer
43640 2d 72 65 75 73 65 2d 77 69 6e 64 6f 77 0a 20 20 20 20 20 20 20 20 20 20 64 69 73 70 6c 61 79 2d -reuse-window...........display-
43660 62 75 66 66 65 72 2d 70 6f 70 2d 75 70 2d 77 69 6e 64 6f 77 29 0a 20 20 20 20 20 20 20 20 20 28 buffer-pop-up-window)..........(
43680 72 65 75 73 61 62 6c 65 2d 66 72 61 6d 65 73 20 2e 20 76 69 73 69 62 6c 65 29 29 29 29 0a 20 20 reusable-frames...visible))))...
436a0 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 6d 61 72 6b 65 72 2d 62 ..(with-current-buffer.(marker-b
436c0 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 20 28 77 68 65 6e 20 uffer.start-marker).......(when.
436e0 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 73 74 72 65 61 6d 29 0a 20 20 20 20 20 20 20 (plist-get.info.:stream)........
43700 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 54 79 70 69 6e 67 2e .(gptel--update-status.".Typing.
43720 2e 2e 22 20 27 73 75 63 63 65 73 73 29 29 0a 20 20 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 ..".'success)).......(save-excur
43740 73 69 6f 6e 0a 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 sion.........(goto-char.start-ma
43760 72 6b 65 72 29 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 61 6e 64 20 28 6d 65 6d 62 65 72 rker).........(when.(and.(member
43780 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 68 74 74 70 2d 73 74 61 74 75 73 29 20 27 .(plist-get.info.:http-status).'
437a0 28 22 32 30 30 22 20 22 31 30 30 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ("200"."100"))..................
437c0 20 20 67 70 74 65 6c 2d 70 72 65 2d 72 65 73 70 6f 6e 73 65 2d 68 6f 6f 6b 29 0a 20 20 20 20 20 ..gptel-pre-response-hook)......
437e0 20 20 20 20 20 28 72 75 6e 2d 68 6f 6f 6b 73 20 27 67 70 74 65 6c 2d 70 72 65 2d 72 65 73 70 6f .....(run-hooks.'gptel-pre-respo
43800 6e 73 65 2d 68 6f 6f 6b 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 68 61 nse-hook))))))..(defun.gptel--ha
43820 6e 64 6c 65 2d 70 6f 73 74 2d 69 6e 73 65 72 74 20 28 66 73 6d 29 0a 20 20 22 54 61 73 6b 73 20 ndle-post-insert.(fsm)..."Tasks.
43840 61 66 74 65 72 20 73 75 63 63 65 73 73 66 75 6c 6c 79 20 69 6e 73 65 72 74 69 6e 67 20 74 68 65 after.successfully.inserting.the
43860 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 20 77 69 74 68 20 73 74 61 74 65 20 46 53 4d 2e 0a 0a 49 .LLM.response.with.state.FSM...I
43880 6e 64 69 63 61 74 65 20 67 70 74 65 6c 20 73 74 61 74 75 73 2c 20 70 75 6c 73 65 20 74 68 65 20 ndicate.gptel.status,.pulse.the.
438a0 69 6e 73 65 72 74 65 64 20 74 65 78 74 20 61 6e 64 20 72 75 6e 20 70 6f 73 74 2d 72 65 73 70 6f inserted.text.and.run.post-respo
438c0 6e 73 65 20 68 6f 6f 6b 73 2e 0a 0a 4e 6f 20 73 74 61 74 65 20 74 72 61 6e 73 69 74 69 6f 6e 20 nse.hooks...No.state.transition.
438e0 68 65 72 65 20 73 69 6e 63 65 20 74 68 61 74 27 73 20 68 61 6e 64 6c 65 64 20 62 79 20 74 68 65 here.since.that's.handled.by.the
43900 20 70 72 6f 63 65 73 73 20 73 65 6e 74 69 6e 65 6c 73 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 69 .process.sentinels."...(let*.((i
43920 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 20 20 20 nfo.(gptel-fsm-info.fsm)).......
43940 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
43960 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-
43980 6d 61 72 6b 65 72 20 28 6f 72 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 74 72 61 63 marker.(or.(plist-get.info.:trac
439a0 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)....................
439c0 20 20 20 20 20 20 20 20 20 20 20 73 74 61 72 74 2d 6d 61 72 6b 65 72 29 29 0a 20 20 20 20 20 20 ...........start-marker)).......
439e0 20 20 20 3b 3b 20 73 74 61 72 74 2d 6d 61 72 6b 65 72 20 6d 61 79 20 68 61 76 65 20 62 65 65 6e ...;;.start-marker.may.have.been
43a00 20 6d 6f 76 65 64 20 69 66 20 3a 62 75 66 66 65 72 20 77 61 73 20 72 65 61 64 2d 6f 6e 6c 79 0a .moved.if.:buffer.was.read-only.
43a20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 62 75 66 66 65 72 20 28 6d 61 72 6b 65 72 2d 62 .........(gptel-buffer.(marker-b
43a40 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 20 28 77 69 74 68 2d uffer.start-marker))).....(with-
43a60 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.....
43a80 20 20 28 69 66 20 28 6e 6f 74 20 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 29 20 20 20 20 20 ..(if.(not.tracking-marker).....
43aa0 20 20 20 20 3b 45 6d 70 74 79 20 72 65 73 70 6f 6e 73 65 0a 20 20 20 20 20 20 20 20 20 20 28 77 ....;Empty.response...........(w
43ac0 68 65 6e 20 67 70 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 hen.gptel-mode.(gptel--update-st
43ae0 61 74 75 73 20 22 20 45 6d 70 74 79 20 72 65 73 70 6f 6e 73 65 22 20 27 73 75 63 63 65 73 73 29 atus.".Empty.response".'success)
43b00 29 0a 20 20 20 20 20 20 20 20 28 70 75 6c 73 65 2d 6d 6f 6d 65 6e 74 61 72 79 2d 68 69 67 68 6c ).........(pulse-momentary-highl
43b20 69 67 68 74 2d 72 65 67 69 6f 6e 20 73 74 61 72 74 2d 6d 61 72 6b 65 72 20 74 72 61 63 6b 69 6e ight-region.start-marker.trackin
43b40 67 2d 6d 61 72 6b 65 72 29 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 6d 6f g-marker).........(when.gptel-mo
43b60 64 65 0a 20 20 20 20 20 20 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 20 28 67 6f de...........(save-excursion.(go
43b80 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)........
43ba0 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 67 70 74 65 6c ...................(insert.gptel
43bc0 2d 72 65 73 70 6f 6e 73 65 2d 73 65 70 61 72 61 74 6f 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 -response-separator.............
43be0 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 70 72 6f ......................(gptel-pro
43c00 6d 70 74 2d 70 72 65 66 69 78 2d 73 74 72 69 6e 67 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 mpt-prefix-string)))...........(
43c20 67 70 74 65 6c 2d 2d 75 70 64 61 74 65 2d 73 74 61 74 75 73 20 20 22 20 52 65 61 64 79 22 20 27 gptel--update-status..".Ready".'
43c40 73 75 63 63 65 73 73 29 29 29 29 0a 20 20 20 20 3b 3b 20 52 75 6e 20 68 6f 6f 6b 20 69 6e 20 76 success)))).....;;.Run.hook.in.v
43c60 69 73 69 62 6c 65 20 77 69 6e 64 6f 77 20 74 6f 20 73 65 74 20 77 69 6e 64 6f 77 2d 70 6f 69 6e isible.window.to.set.window-poin
43c80 74 2c 20 42 55 47 20 23 32 36 39 0a 20 20 20 20 28 69 66 2d 6c 65 74 2a 20 28 28 67 70 74 65 6c t,.BUG.#269.....(if-let*.((gptel
43ca0 2d 77 69 6e 64 6f 77 20 28 67 65 74 2d 62 75 66 66 65 72 2d 77 69 6e 64 6f 77 20 67 70 74 65 6c -window.(get-buffer-window.gptel
43cc0 2d 62 75 66 66 65 72 20 27 76 69 73 69 62 6c 65 29 29 29 0a 20 20 20 20 20 20 20 20 28 77 69 74 -buffer.'visible))).........(wit
43ce0 68 2d 73 65 6c 65 63 74 65 64 2d 77 69 6e 64 6f 77 20 67 70 74 65 6c 2d 77 69 6e 64 6f 77 0a 20 h-selected-window.gptel-window..
43d00 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 0a 20 20 20 .........(run-hook-with-args....
43d20 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 65 2d 66 75 6e ........'gptel-post-response-fun
43d40 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 6f 73 69 74 69 ctions............(marker-positi
43d60 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 73 69 74 69 6f on.start-marker).(marker-positio
43d80 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 28 77 69 74 68 n.tracking-marker))).......(with
43da0 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 67 70 74 65 6c 2d 62 75 66 66 65 72 0a 20 20 20 -current-buffer.gptel-buffer....
43dc0 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 20 20 20 20 20 .....(run-hook-with-args........
43de0 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 74 69 6f 6e 73 ..'gptel-post-response-functions
43e00 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 73 74 61 72 74 ..........(marker-position.start
43e20 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 72 61 63 6b 69 -marker).(marker-position.tracki
43e40 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 65 6c 2d 2d 68 ng-marker))))))..(defun.gptel--h
43e60 61 6e 64 6c 65 2d 65 72 72 6f 72 20 28 66 73 6d 29 0a 20 20 22 43 68 65 63 6b 20 66 6f 72 20 65 andle-error.(fsm)..."Check.for.e
43e80 72 72 6f 72 73 20 69 6e 20 72 65 71 75 65 73 74 20 73 74 61 74 65 20 46 53 4d 20 70 65 72 66 6f rrors.in.request.state.FSM.perfo
43ea0 72 6d 20 55 49 20 75 70 64 61 74 65 73 2e 0a 0a 52 75 6e 20 70 6f 73 74 2d 72 65 73 70 6f 6e 73 rm.UI.updates...Run.post-respons
43ec0 65 20 68 6f 6f 6b 73 2e 22 0a 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 69 6e 66 6f 20 28 67 e.hooks."...(when-let*.((info.(g
43ee0 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 20 ptel-fsm-info.fsm)).............
43f00 20 20 28 65 72 72 6f 72 2d 64 61 74 61 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 65 ..(error-data.(plist-get.info.:e
43f20 72 72 6f 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 68 74 74 70 2d 6d 73 67 20 20 rror))...............(http-msg..
43f40 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 73 74 61 74 75 73 29 29 0a 20 20 20 20 20 .(plist-get.info.:status))......
43f60 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 62 75 66 66 65 72 20 28 70 6c 69 73 74 2d 67 65 .........(gptel-buffer.(plist-ge
43f80 74 20 69 6e 66 6f 20 3a 62 75 66 66 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 t.info.:buffer))...............(
43fa0 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 20 3a 70 6f start-marker.(plist-get.info.:po
43fc0 73 69 74 69 6f 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 72 61 63 6b 69 6e 67 sition))...............(tracking
43fe0 2d 6d 61 72 6b 65 72 20 28 6f 72 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 74 72 61 -marker.(or.(plist-get.info.:tra
44000 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)...................
44020 20 20 20 20 20 20 20 20 20 20 20 20 73 74 61 72 74 2d 6d 61 72 6b 65 72 29 29 0a 20 20 20 20 20 ............start-marker))......
44040 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 20 20 20 20 20 .........(backend-name..........
44060 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 20 20 ......(gptel-backend-name.......
44080 20 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 2d 6c 6f 63 61 6c 2d 76 61 6c 75 65 20 27 67 ..........(buffer-local-value.'g
440a0 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 62 75 66 66 65 72 29 29 29 29 0a 20 20 ptel-backend.gptel-buffer))))...
440c0 20 20 28 69 66 20 28 73 74 72 69 6e 67 70 20 65 72 72 6f 72 2d 64 61 74 61 29 0a 20 20 20 20 20 ..(if.(stringp.error-data)......
440e0 20 20 20 28 6d 65 73 73 61 67 65 20 22 25 73 20 65 72 72 6f 72 3a 20 28 25 73 29 20 25 73 22 20 ...(message."%s.error:.(%s).%s".
44100 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 20 68 74 74 70 2d 6d 73 67 20 28 73 74 72 69 6e 67 2d 74 72 backend-name.http-msg.(string-tr
44120 69 6d 20 65 72 72 6f 72 2d 64 61 74 61 29 29 0a 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a im.error-data)).......(when-let*
44140 20 28 28 65 72 72 6f 72 2d 74 79 70 65 20 28 70 6c 69 73 74 2d 67 65 74 20 65 72 72 6f 72 2d 64 .((error-type.(plist-get.error-d
44160 61 74 61 20 3a 74 79 70 65 29 29 29 0a 20 20 20 20 20 20 20 20 28 73 65 74 71 20 68 74 74 70 2d ata.:type))).........(setq.http-
44180 6d 73 67 20 28 63 6f 6e 63 61 74 20 22 28 22 20 20 68 74 74 70 2d 6d 73 67 20 22 29 20 22 20 28 msg.(concat."("..http-msg.").".(
441a0 73 74 72 69 6e 67 2d 74 72 69 6d 20 65 72 72 6f 72 2d 74 79 70 65 29 29 29 29 0a 20 20 20 20 20 string-trim.error-type))))......
441c0 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 65 72 72 6f 72 2d 6d 73 67 20 28 70 6c 69 73 74 2d 67 .(when-let*.((error-msg.(plist-g
441e0 65 74 20 65 72 72 6f 72 2d 64 61 74 61 20 3a 6d 65 73 73 61 67 65 29 29 29 0a 20 20 20 20 20 20 et.error-data.:message))).......
44200 20 20 28 6d 65 73 73 61 67 65 20 22 25 73 20 65 72 72 6f 72 3a 20 28 25 73 29 20 25 73 22 20 62 ..(message."%s.error:.(%s).%s".b
44220 61 63 6b 65 6e 64 2d 6e 61 6d 65 20 68 74 74 70 2d 6d 73 67 20 28 73 74 72 69 6e 67 2d 74 72 69 ackend-name.http-msg.(string-tri
44240 6d 20 65 72 72 6f 72 2d 6d 73 67 29 29 29 29 0a 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e m.error-msg)))).....(with-curren
44260 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 20 20 28 77 68 65 t-buffer.gptel-buffer.......(whe
44280 6e 20 67 70 74 65 6c 2d 6d 6f 64 65 0a 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 75 70 64 n.gptel-mode.........(gptel--upd
442a0 61 74 65 2d 73 74 61 74 75 73 0a 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 20 45 72 ate-status..........(format.".Er
442c0 72 6f 72 3a 20 25 73 22 20 68 74 74 70 2d 6d 73 67 29 20 27 65 72 72 6f 72 29 29 29 0a 20 20 20 ror:.%s".http-msg).'error)))....
442e0 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 2d 62 75 .(if-let*.((gptel-window.(get-bu
44300 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 69 62 6c ffer-window.gptel-buffer.'visibl
44320 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 69 6e 64 e))).........(with-selected-wind
44340 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 6e 2d 68 ow.gptel-window...........(run-h
44360 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 65 6c 2d ook-with-args............'gptel-
44380 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 20 20 20 post-response-functions.........
443a0 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 6b 65 72 ...(marker-position.start-marker
443c0 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 61 72 6b ).(marker-position.tracking-mark
443e0 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 66 65 72 er))).......(with-current-buffer
44400 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 6f 6b 2d .gptel-buffer.........(run-hook-
44420 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 74 2d 72 with-args..........'gptel-post-r
44440 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 61 72 6b esponse-functions..........(mark
44460 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 72 6b 65 er-position.start-marker).(marke
44480 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 29 29 29 r-position.tracking-marker))))))
444a0 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 68 61 6e 64 6c 65 2d 74 6f 6f 6c 2d 75 73 65 20 ..(defun.gptel--handle-tool-use.
444c0 28 66 73 6d 29 0a 20 20 22 52 75 6e 20 74 6f 6f 6c 20 63 61 6c 6c 73 20 63 61 70 74 75 72 65 64 (fsm)..."Run.tool.calls.captured
444e0 20 69 6e 20 46 53 4d 2c 20 61 6e 64 20 61 64 76 61 6e 63 65 20 74 68 65 20 73 74 61 74 65 20 6d .in.FSM,.and.advance.the.state.m
44500 61 63 68 69 6e 65 20 77 69 74 68 20 74 68 65 20 72 65 73 75 6c 74 73 2e 22 0a 20 20 28 77 68 65 achine.with.the.results."...(whe
44520 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 6f 20 66 73 n-let*.((info.(gptel-fsm-info.fs
44540 6d 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 61 63 6b 65 6e 64 20 28 70 6c 69 73 m))...............(backend.(plis
44560 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 20 t-get.info.:backend))...........
44580 20 20 20 20 3b 3b 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 6d 69 67 68 74 20 72 75 6e 20 6d ....;;.This.function.might.run.m
445a0 61 6e 79 20 74 69 6d 65 73 2c 20 73 6f 20 6f 6e 6c 79 20 61 63 74 20 6f 6e 20 74 68 65 20 72 65 any.times,.so.only.act.on.the.re
445c0 6d 61 69 6e 69 6e 67 20 74 6f 6f 6c 20 63 61 6c 6c 73 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 maining.tool.calls..............
445e0 20 20 28 74 6f 6f 6c 2d 75 73 65 20 28 63 6c 2d 72 65 6d 6f 76 65 2d 69 66 20 28 6c 61 6d 62 64 ..(tool-use.(cl-remove-if.(lambd
44600 61 20 28 74 63 29 20 28 70 6c 69 73 74 2d 67 65 74 20 74 63 20 3a 72 65 73 75 6c 74 29 29 0a 20 a.(tc).(plist-get.tc.:result))..
44620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
44640 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 73 65 29 29 .....(plist-get.info.:tool-use))
44660 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 74 6f 6f 6c 73 20 28 6c 65 6e 67 74 68 20 )...............(ntools.(length.
44680 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 74 6f 6f 6c 2d 69 tool-use))...............(tool-i
446a0 64 78 20 30 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 dx.0)).....(with-current-buffer.
446c0 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 28 (plist-get.info.:buffer).......(
446e0 77 68 65 6e 20 67 70 74 65 6c 2d 6d 6f 64 65 0a 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d when.gptel-mode.........(gptel--
44700 75 70 64 61 74 65 2d 73 74 61 74 75 73 0a 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 update-status..........(format."
44720 20 43 61 6c 6c 69 6e 67 20 74 6f 6f 6c 2e 2e 2e 22 20 29 20 27 6d 6f 64 65 2d 6c 69 6e 65 2d 65 .Calling.tool...".).'mode-line-e
44740 6d 70 68 61 73 69 73 29 29 0a 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 72 65 73 75 6c 74 2d 61 mphasis))........(let.((result-a
44760 6c 69 73 74 29 20 28 70 65 6e 64 69 6e 67 2d 63 61 6c 6c 73 29 29 0a 20 20 20 20 20 20 20 20 28 list).(pending-calls)).........(
44780 6d 61 70 63 20 20 20 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 mapc...........................;
447a0 20 43 6f 6e 73 74 72 75 63 74 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 73 0a 20 20 20 20 20 20 .Construct.function.calls.......
447c0 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 20 20 20 ...(lambda.(tool-call)..........
447e0 20 20 28 6c 65 74 72 65 63 20 28 28 61 72 67 73 20 28 70 6c 69 73 74 2d 67 65 74 20 74 6f 6f 6c ..(letrec.((args.(plist-get.tool
44800 2d 63 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 -call.:args))...................
44820 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
44840 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 28 61 72 67 2d 76 61 me)).....................(arg-va
44860 6c 75 65 73 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 28 74 lues.nil).....................(t
44880 6f 6f 6c 2d 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 20 28 63 ool-spec......................(c
448a0 6c 2d 66 69 6e 64 2d 69 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 l-find-if.......................
448c0 28 6c 61 6d 62 64 61 20 28 74 73 29 20 28 65 71 75 61 6c 20 28 67 70 74 65 6c 2d 74 6f 6f 6c 2d (lambda.(ts).(equal.(gptel-tool-
448e0 6e 61 6d 65 20 74 73 29 20 6e 61 6d 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 name.ts).name)).................
44900 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 73 29 29 29 0a ......(plist-get.info.:tools))).
44920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 63 65 73 73 2d 74 6f 6f ....................(process-too
44940 6c 2d 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 28 6c l-result......................(l
44960 61 6d 62 64 61 20 28 72 65 73 75 6c 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ambda.(result)..................
44980 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 73 75 63 63 ......(plist-put.info.:tool-succ
449a0 65 73 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 28 6c ess.t)........................(l
449c0 65 74 20 28 28 72 65 73 75 6c 74 20 28 67 70 74 65 6c 2d 2d 74 6f 2d 73 74 72 69 6e 67 20 72 65 et.((result.(gptel--to-string.re
449e0 73 75 6c 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 sult))).........................
44a00 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 20 72 65 .(plist-put.tool-call.:result.re
44a20 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)..........................(
44a40 70 75 73 68 20 28 6c 69 73 74 20 74 6f 6f 6c 2d 73 70 65 63 20 61 72 67 73 20 72 65 73 75 6c 74 push.(list.tool-spec.args.result
44a60 29 20 72 65 73 75 6c 74 2d 61 6c 69 73 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ).result-alist))................
44a80 20 20 20 20 20 20 20 20 28 63 6c 2d 69 6e 63 66 20 74 6f 6f 6c 2d 69 64 78 29 0a 20 20 20 20 20 ........(cl-incf.tool-idx)......
44aa0 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 74 6f 6f 6c ..................(when.(>=.tool
44ac0 2d 69 64 78 20 6e 74 6f 6f 6c 73 29 20 3b 20 41 6c 6c 20 74 6f 6f 6c 73 20 68 61 76 65 20 72 75 -idx.ntools).;.All.tools.have.ru
44ae0 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 28 67 70 74 65 n..........................(gpte
44b00 6c 2d 2d 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 l--inject-prompt................
44b20 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 20 69 6e ...........backend.(plist-get.in
44b40 66 6f 20 3a 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 20 20 fo.:data).......................
44b60 20 20 20 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 0a 20 ....(gptel--parse-tool-results..
44b80 20 20 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 61 63 6b 65 6e ..........................backen
44ba0 64 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 20 d.(plist-get.info.:tool-use)))..
44bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c ........................(funcall
44be0 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 0a 20 20 20 20 .(plist-get.info.:callback).....
44c00 20 20 20 20 20 20 20 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 ..............................(c
44c20 6f 6e 73 20 27 74 6f 6f 6c 2d 72 65 73 75 6c 74 20 72 65 73 75 6c 74 2d 61 6c 69 73 74 29 20 69 ons.'tool-result.result-alist).i
44c40 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 28 67 nfo)..........................(g
44c60 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 29 29 29 0a 20 20 ptel--fsm-transition.fsm)))))...
44c80 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 6e 75 6c 6c 20 74 6f 6f 6c 2d 73 70 65 63 29 0a ...........(if.(null.tool-spec).
44ca0 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 6e 6f .................(message."Unkno
44cc0 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 61 6d wn.tool.called.by.model:.%s".nam
44ce0 65 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 61 6c 75 e)................(setq.arg-valu
44d00 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 61 72 0a es......................(mapcar.
44d20 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 61 ......................(lambda.(a
44d40 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 6c 65 74 rg).........................(let
44d60 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 6c 69 73 .((key.(intern.(concat.":".(plis
44d80 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 20 20 20 t-get.arg.:name)))))............
44da0 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 73 20 6b ...............(plist-get.args.k
44dc0 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 67 70 74 ey))).......................(gpt
44de0 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 20 20 20 el-tool-args.tool-spec))).......
44e00 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 75 69 72 .........;;.Check.if.tool.requir
44e20 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 20 20 28 es.confirmation................(
44e40 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 6c 6c 73 if.(and.gptel-confirm-tool-calls
44e60 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 61 6c 6c .(or.(eq.gptel-confirm-tool-call
44e80 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 20 20 20 s.t)............................
44ea0 20 20 20 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
44ec0 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 20 20 20 -tool-confirm.tool-spec)))......
44ee0 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 6c 2d 73 ..............(push.(list.tool-s
44f00 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 65 73 75 pec.arg-values.process-tool-resu
44f20 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 70 65 6e lt)..........................pen
44f40 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 3b 3b 20 ding-calls)..................;;.
44f60 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 20 20 20 If.not,.run.the.tool............
44f80 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 6f 6f 6c ......(if.(gptel-tool-async.tool
44fa0 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 61 70 70 -spec)......................(app
44fc0 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 73 70 65 ly.(gptel-tool-function.tool-spe
44fe0 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 20 20 70 c).............................p
45000 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 20 rocess-tool-result.arg-values)..
45020 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 0a ..................(let.((result.
45040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 69 ..........................(condi
45060 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 20 20 20 tion-case.errdata...............
45080 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 2d 74 6f ................(apply.(gptel-to
450a0 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 6c 75 65 ol-function.tool-spec).arg-value
450c0 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 28 s).............................(
450e0 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 73 74 72 error.(mapconcat.#'gptel--to-str
45100 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 20 20 20 ing.errdata.".")))))............
45120 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 6f 6c 2d ..........(funcall.process-tool-
45140 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 20 74 6f result.result)))))))..........to
45160 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 2d 63 61 ol-use).........(when.pending-ca
45180 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 6d 2d 6c lls...........(setq.gptel--fsm-l
451a0 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 6c 2d 6d ast.fsm)...........(when.gptel-m
451c0 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 20 20 20 ode.(gptel--update-status.......
451e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 20 ......................(format.".
45200 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 61 73 69 Run.tools?".).'mode-line-emphasi
45220 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 2d 67 65 s))...........(funcall.(plist-ge
45240 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 20 20 20 t.info.:callback)...............
45260 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 2d 63 61 .....(cons.'tool-call.pending-ca
45280 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 61 63 68 lls).info))))))..;;;;.State.mach
452a0 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 75 73 65 ine.predicates.;;.Predicates.use
452c0 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 72 61 6e d.to.find.the.next.state.to.tran
452e0 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 65 73 74 sition.to,.see.;;.`gptel-request
45300 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 2d 2d 65 --transitions'...(defun.gptel--e
45320 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 20 3a 65 rror-p.(info).(plist-get.info.:e
45340 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 65 2d 70 rror))..(defun.gptel--tool-use-p
45360 20 28 69 6e 66 6f 29 0a 20 20 28 61 6e 64 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a .(info)...(and.(plist-get.info.:
45380 74 6f 6f 6c 73 29 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 tools).(plist-get.info.:tool-use
453a0 29 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 74 2d 70 )))..(defun.gptel--tool-result-p
453c0 20 28 69 6e 66 6f 29 0a 20 20 28 61 6e 64 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a .(info)...(and.(plist-get.info.:
453e0 74 6f 6f 6c 73 29 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 74 6f 6f 6c 2d 73 75 63 tools).(plist-get.info.:tool-suc
45400 63 65 73 73 29 29 29 0a 0a 3b 3b 20 54 4f 44 4f 28 70 72 6f 6d 70 74 2d 6c 69 73 74 29 3a 20 44 cess)))..;;.TODO(prompt-list):.D
45420 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 61 74 20 ocument.new.prompt.input.format.
45440 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 64 20 71 to.`gptel-request'....;;;.Send.q
45460 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 64 65 66 ueries,.handle.responses.(cl-def
45480 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 61 6c 20 un.gptel-request.....(&optional.
454a0 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 20 20 20 prompt.&key.callback............
454c0 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 0a 20 20 ....(buffer.(current-buffer))...
454e0 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 20 64 72 .............position.context.dr
45500 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 6e 69 6c y-run................(stream.nil
45520 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 20 20 20 ).(in-place.nil)................
45540 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 29 0a 20 (system.gptel--system-message)..
45560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 6e 73 66 6f 72 6d 73 20 28 66 73 6d 20 28 67 ..............transforms.(fsm.(g
45580 70 74 65 6c 2d 6d 61 6b 65 2d 66 73 6d 29 29 29 0a 20 20 22 52 65 71 75 65 73 74 20 61 20 72 65 ptel-make-fsm)))..."Request.a.re
455a0 73 70 6f 6e 73 65 20 66 72 6f 6d 20 74 68 65 20 60 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 27 20 sponse.from.the.`gptel-backend'.
455c0 66 6f 72 20 50 52 4f 4d 50 54 2e 0a 0a 54 68 65 20 72 65 71 75 65 73 74 20 69 73 20 61 73 79 6e for.PROMPT...The.request.is.asyn
455e0 63 68 72 6f 6e 6f 75 73 2c 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 chronous,.this.function.returns.
45600 69 6d 6d 65 64 69 61 74 65 6c 79 2e 0a 0a 49 66 20 50 52 4f 4d 50 54 20 69 73 0a 2d 20 61 20 73 immediately...If.PROMPT.is.-.a.s
45620 74 72 69 6e 67 2c 20 69 74 20 69 73 20 75 73 65 64 20 74 6f 20 63 72 65 61 74 65 20 61 20 66 75 tring,.it.is.used.to.create.a.fu
45640 6c 6c 20 70 72 6f 6d 70 74 20 73 75 69 74 61 62 6c 65 20 66 6f 72 0a 20 20 73 65 6e 64 69 6e 67 ll.prompt.suitable.for...sending
45660 20 74 6f 20 74 68 65 20 4c 4c 4d 2e 0a 2d 20 41 20 6c 69 73 74 20 6f 66 20 73 74 72 69 6e 67 73 .to.the.LLM..-.A.list.of.strings
45680 2c 20 69 74 20 69 73 20 69 6e 74 65 72 70 72 65 74 65 64 20 61 73 20 61 20 63 6f 6e 76 65 72 73 ,.it.is.interpreted.as.a.convers
456a0 61 74 69 6f 6e 2c 20 69 2e 65 2e 20 61 0a 20 20 73 65 72 69 65 73 20 6f 66 20 61 6c 74 65 72 6e ation,.i.e..a...series.of.altern
456c0 61 74 69 6e 67 20 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 ating.user.prompts.and.LLM.respo
456e0 6e 73 65 73 2e 0a 20 20 28 5c 22 75 73 65 72 20 6d 73 67 20 31 5c 22 20 5c 22 6c 6c 6d 20 6d 73 nses....(\"user.msg.1\".\"llm.ms
45700 67 20 31 5c 22 20 5c 22 75 73 65 72 20 6d 73 67 20 32 5c 22 20 5c 22 6c 6c 6d 20 6d 73 67 20 32 g.1\".\"user.msg.2\".\"llm.msg.2
45720 5c 22 20 2e 2e 2e 29 0a 2d 20 6e 69 6c 20 62 75 74 20 72 65 67 69 6f 6e 20 69 73 20 61 63 74 69 \"....).-.nil.but.region.is.acti
45740 76 65 2c 20 74 68 65 20 72 65 67 69 6f 6e 20 63 6f 6e 74 65 6e 74 73 20 61 72 65 20 75 73 65 64 ve,.the.region.contents.are.used
45760 2e 0a 2d 20 6e 69 6c 2c 20 74 68 65 20 63 75 72 72 65 6e 74 20 62 75 66 66 65 72 27 73 20 63 6f ..-.nil,.the.current.buffer's.co
45780 6e 74 65 6e 74 73 20 75 70 20 74 6f 20 28 70 6f 69 6e 74 29 20 61 72 65 20 75 73 65 64 2e 0a 20 ntents.up.to.(point).are.used...
457a0 20 50 72 65 76 69 6f 75 73 20 72 65 73 70 6f 6e 73 65 73 20 66 72 6f 6d 20 74 68 65 20 4c 4c 4d .Previous.responses.from.the.LLM
457c0 20 61 72 65 20 69 64 65 6e 74 69 66 69 65 64 20 61 73 20 72 65 73 70 6f 6e 73 65 73 2e 0a 0a 4b .are.identified.as.responses...K
457e0 65 79 77 6f 72 64 20 61 72 67 75 6d 65 6e 74 73 3a 0a 0a 43 41 4c 4c 42 41 43 4b 2c 20 69 66 20 eyword.arguments:..CALLBACK,.if.
45800 73 75 70 70 6c 69 65 64 2c 20 69 73 20 61 20 66 75 6e 63 74 69 6f 6e 20 6f 66 20 74 77 6f 20 61 supplied,.is.a.function.of.two.a
45820 72 67 75 6d 65 6e 74 73 2c 20 63 61 6c 6c 65 64 0a 77 69 74 68 20 74 68 65 20 52 45 53 50 4f 4e rguments,.called.with.the.RESPON
45840 53 45 20 28 75 73 75 61 6c 6c 79 20 61 20 73 74 72 69 6e 67 29 20 61 6e 64 20 49 4e 46 4f 20 28 SE.(usually.a.string).and.INFO.(
45860 61 20 70 6c 69 73 74 29 3a 0a 0a 20 28 66 75 6e 63 61 6c 6c 20 43 41 4c 4c 42 41 43 4b 20 52 45 a.plist):...(funcall.CALLBACK.RE
45880 53 50 4f 4e 53 45 20 49 4e 46 4f 29 0a 0a 52 45 53 50 4f 4e 53 45 20 69 73 0a 0a 2d 20 41 20 73 SPONSE.INFO)..RESPONSE.is..-.A.s
458a0 74 72 69 6e 67 20 69 66 20 74 68 65 20 72 65 71 75 65 73 74 20 77 61 73 20 73 75 63 63 65 73 73 tring.if.the.request.was.success
458c0 66 75 6c 0a 2d 20 6e 69 6c 20 69 66 20 74 68 65 72 65 20 77 61 73 20 6e 6f 20 72 65 73 70 6f 6e ful.-.nil.if.there.was.no.respon
458e0 73 65 20 6f 72 20 61 6e 20 65 72 72 6f 72 2e 0a 0a 54 68 65 73 65 20 61 72 65 20 74 68 65 20 6f se.or.an.error...These.are.the.o
45900 6e 6c 79 20 74 77 6f 20 63 61 73 65 73 20 79 6f 75 20 74 79 70 69 63 61 6c 6c 79 20 6e 65 65 64 nly.two.cases.you.typically.need
45920 20 74 6f 20 63 6f 6e 73 69 64 65 72 2c 0a 75 6e 6c 65 73 73 20 79 6f 75 20 6e 65 65 64 20 74 6f .to.consider,.unless.you.need.to
45940 20 63 6c 65 61 6e 20 75 70 20 61 66 74 65 72 20 61 62 6f 72 74 65 64 20 72 65 71 75 65 73 74 73 .clean.up.after.aborted.requests
45960 2c 20 75 73 65 20 4c 4c 4d 0a 74 6f 6f 6c 73 2c 20 68 61 6e 64 6c 65 20 5c 22 72 65 61 73 6f 6e ,.use.LLM.tools,.handle.\"reason
45980 69 6e 67 5c 22 20 63 6f 6e 74 65 6e 74 20 73 70 65 63 69 61 6c 6c 79 20 6f 72 20 73 74 72 65 61 ing\".content.specially.or.strea
459a0 6d 0a 72 65 73 70 6f 6e 73 65 73 20 28 73 65 65 20 53 54 52 45 41 4d 29 2e 20 20 49 6e 20 74 68 m.responses.(see.STREAM)...In.th
459c0 65 73 65 20 63 61 73 65 73 2c 20 52 45 53 50 4f 4e 53 45 20 63 61 6e 20 62 65 0a 0a 2d 20 54 68 ese.cases,.RESPONSE.can.be..-.Th
459e0 65 20 73 79 6d 62 6f 6c 20 60 61 62 6f 72 74 27 20 69 66 20 74 68 65 20 72 65 71 75 65 73 74 20 e.symbol.`abort'.if.the.request.
45a00 69 73 20 61 62 6f 72 74 65 64 2c 20 73 65 65 20 60 67 70 74 65 6c 2d 61 62 6f 72 74 27 2e 0a 0a is.aborted,.see.`gptel-abort'...
45a20 2d 20 41 20 63 6f 6e 73 20 63 65 6c 6c 20 6f 66 20 74 68 65 20 66 6f 72 6d 0a 0a 20 20 28 74 6f -.A.cons.cell.of.the.form....(to
45a40 6f 6c 2d 63 61 6c 6c 20 2e 20 28 28 54 4f 4f 4c 20 41 52 47 53 20 43 42 29 20 2e 2e 2e 29 29 0a ol-call...((TOOL.ARGS.CB)....)).
45a60 0a 20 20 77 68 65 72 65 20 54 4f 4f 4c 20 69 73 20 61 20 67 70 74 65 6c 2d 74 6f 6f 6c 20 73 74 ...where.TOOL.is.a.gptel-tool.st
45a80 72 75 63 74 2c 20 41 52 47 53 20 69 73 20 61 20 70 6c 69 73 74 20 6f 66 0a 20 20 61 72 67 75 6d ruct,.ARGS.is.a.plist.of...argum
45aa0 65 6e 74 73 2c 20 61 6e 64 20 43 42 20 69 73 20 61 20 66 75 6e 63 74 69 6f 6e 20 66 6f 72 20 68 ents,.and.CB.is.a.function.for.h
45ac0 61 6e 64 6c 69 6e 67 20 74 68 65 20 72 65 73 75 6c 74 73 2e 20 20 59 6f 75 0a 20 20 63 61 6e 20 andling.the.results...You...can.
45ae0 63 61 6c 6c 20 43 42 20 77 69 74 68 20 74 68 65 20 72 65 73 75 6c 74 20 6f 66 20 63 61 6c 6c 69 call.CB.with.the.result.of.calli
45b00 6e 67 20 74 68 65 20 74 6f 6f 6c 20 74 6f 20 63 6f 6e 74 69 6e 75 65 20 74 68 65 0a 20 20 72 65 ng.the.tool.to.continue.the...re
45b20 71 75 65 73 74 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 6f 72 quest...-.A.cons.cell.of.the.for
45b40 6d 0a 0a 20 20 28 74 6f 6f 6c 2d 72 65 73 75 6c 74 20 2e 20 28 28 54 4f 4f 4c 20 41 52 47 53 20 m....(tool-result...((TOOL.ARGS.
45b60 52 45 53 55 4c 54 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 RESULT)....))....where.TOOL.is.a
45b80 20 67 70 74 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 .gptel-tool.struct,.ARGS.is.a.pl
45ba0 69 73 74 20 6f 66 0a 20 20 61 72 67 75 6d 65 6e 74 73 2c 20 61 6e 64 20 52 45 53 55 4c 54 20 77 ist.of...arguments,.and.RESULT.w
45bc0 61 73 20 72 65 74 75 72 6e 65 64 20 66 72 6f 6d 20 63 61 6c 6c 69 6e 67 20 74 68 65 20 74 6f 6f as.returned.from.calling.the.too
45be0 6c 0a 20 20 66 75 6e 63 74 69 6f 6e 2e 0a 0a 2d 20 41 20 63 6f 6e 73 20 63 65 6c 6c 20 6f 66 20 l...function...-.A.cons.cell.of.
45c00 74 68 65 20 66 6f 72 6d 0a 0a 20 20 28 72 65 61 73 6f 6e 69 6e 67 20 2e 20 74 65 78 74 29 0a 0a the.form....(reasoning...text)..
45c20 20 20 77 68 65 72 65 20 74 65 78 74 20 69 73 20 74 68 65 20 63 6f 6e 74 65 6e 74 73 20 6f 66 20 ..where.text.is.the.contents.of.
45c40 74 68 65 20 72 65 61 73 6f 6e 69 6e 67 20 62 6c 6f 63 6b 2e 20 20 28 41 6c 73 6f 20 73 65 65 0a the.reasoning.block...(Also.see.
45c60 20 20 53 54 52 45 41 4d 20 69 66 20 79 6f 75 20 61 72 65 20 75 73 69 6e 67 20 73 74 72 65 61 6d ..STREAM.if.you.are.using.stream
45c80 69 6e 67 2e 29 0a 0a 53 65 65 20 60 67 70 74 65 6c 2d 2d 69 6e 73 65 72 74 2d 72 65 73 70 6f 6e ing.)..See.`gptel--insert-respon
45ca0 73 65 27 20 66 6f 72 20 61 6e 20 65 78 61 6d 70 6c 65 20 63 61 6c 6c 62 61 63 6b 20 68 61 6e 64 se'.for.an.example.callback.hand
45cc0 6c 69 6e 67 20 61 6c 6c 0a 63 61 73 65 73 2e 0a 0a 54 68 65 20 49 4e 46 4f 20 70 6c 69 73 74 20 ling.all.cases...The.INFO.plist.
45ce0 68 61 73 20 28 61 74 20 6c 65 61 73 74 29 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 6b 65 79 has.(at.least).the.following.key
45d00 73 3a 0a 3a 64 61 74 61 20 20 20 20 20 20 20 20 20 2d 20 54 68 65 20 72 65 71 75 65 73 74 20 64 s:.:data.........-.The.request.d
45d20 61 74 61 20 69 6e 63 6c 75 64 65 64 20 77 69 74 68 20 74 68 65 20 71 75 65 72 79 0a 3a 70 6f 73 ata.included.with.the.query.:pos
45d40 69 74 69 6f 6e 20 20 20 20 20 2d 20 6d 61 72 6b 65 72 20 61 74 20 74 68 65 20 70 6f 69 6e 74 20 ition.....-.marker.at.the.point.
45d60 74 68 65 20 72 65 71 75 65 73 74 20 77 61 73 20 73 65 6e 74 2c 20 75 6e 6c 65 73 73 0a 20 20 20 the.request.was.sent,.unless....
45d80 20 20 20 20 20 20 20 20 20 20 20 20 20 50 4f 53 49 54 49 4f 4e 20 69 73 20 73 70 65 63 69 66 69 .............POSITION.is.specifi
45da0 65 64 2e 0a 3a 62 75 66 66 65 72 20 20 20 20 20 20 20 2d 20 54 68 65 20 62 75 66 66 65 72 20 63 ed..:buffer.......-.The.buffer.c
45dc0 75 72 72 65 6e 74 20 77 68 65 6e 20 74 68 65 20 72 65 71 75 65 73 74 20 77 61 73 20 73 65 6e 74 urrent.when.the.request.was.sent
45de0 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 6e 6c 65 73 73 20 42 55 46 46 45 52 20 ,.................unless.BUFFER.
45e00 69 73 20 73 70 65 63 69 66 69 65 64 2e 0a 3a 73 74 61 74 75 73 20 20 20 20 20 20 20 2d 20 53 68 is.specified..:status.......-.Sh
45e20 6f 72 74 20 73 74 72 69 6e 67 20 64 65 73 63 72 69 62 69 6e 67 20 74 68 65 20 72 65 73 75 6c 74 ort.string.describing.the.result
45e40 20 6f 66 20 74 68 65 20 72 65 71 75 65 73 74 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .of.the.request,................
45e60 20 69 6e 63 6c 75 64 69 6e 67 20 70 6f 73 73 69 62 6c 65 20 48 54 54 50 20 65 72 72 6f 72 73 2e .including.possible.HTTP.errors.
45e80 0a 0a 45 78 61 6d 70 6c 65 20 6f 66 20 61 20 63 61 6c 6c 62 61 63 6b 20 74 68 61 74 20 6d 65 73 ..Example.of.a.callback.that.mes
45ea0 73 61 67 65 73 20 74 68 65 20 75 73 65 72 20 77 69 74 68 20 74 68 65 20 72 65 73 70 6f 6e 73 65 sages.the.user.with.the.response
45ec0 0a 61 6e 64 20 69 6e 66 6f 3a 0a 0a 20 28 6c 61 6d 62 64 61 20 28 72 65 73 70 6f 6e 73 65 20 69 .and.info:...(lambda.(response.i
45ee0 6e 66 6f 29 0a 20 20 28 69 66 20 28 73 74 72 69 6e 67 70 20 72 65 73 70 6f 6e 73 65 29 0a 20 20 nfo)...(if.(stringp.response)...
45f00 20 20 20 20 28 6c 65 74 20 28 28 70 6f 73 6e 20 28 6d 61 72 6b 65 72 2d 70 6f 73 69 74 69 6f 6e ....(let.((posn.(marker-position
45f20 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 70 6f 73 69 74 69 6f 6e 29 29 29 0a 20 20 .(plist-get.info.:position)))...
45f40 20 20 20 20 20 20 20 20 20 20 28 62 75 66 20 20 28 62 75 66 66 65 72 2d 6e 61 6d 65 20 28 70 6c ..........(buf..(buffer-name.(pl
45f60 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 62 75 66 66 65 72 29 29 29 29 0a 20 20 20 20 20 20 20 ist-get.info.:buffer))))........
45f80 20 28 6d 65 73 73 61 67 65 20 5c 22 52 65 73 70 6f 6e 73 65 20 66 6f 72 20 72 65 71 75 65 73 74 .(message.\"Response.for.request
45fa0 20 66 72 6f 6d 20 25 53 20 61 74 20 25 64 3a 20 25 73 5c 22 0a 20 20 20 20 20 20 20 20 20 20 20 .from.%S.at.%d:.%s\"............
45fc0 20 20 20 20 20 20 62 75 66 20 70 6f 73 6e 20 72 65 73 70 6f 6e 73 65 29 29 0a 20 20 20 20 28 6d ......buf.posn.response)).....(m
45fe0 65 73 73 61 67 65 20 5c 22 67 70 74 65 6c 2d 72 65 71 75 65 73 74 20 66 61 69 6c 65 64 20 77 69 essage.\"gptel-request.failed.wi
46000 74 68 20 6d 65 73 73 61 67 65 3a 20 25 73 5c 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 th.message:.%s\"..............(p
46020 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 73 74 61 74 75 73 29 29 29 29 0a 0a 4f 72 2c 20 66 list-get.info.:status))))..Or,.f
46040 6f 72 20 6a 75 73 74 20 74 68 65 20 72 65 73 70 6f 6e 73 65 3a 0a 0a 20 28 6c 61 6d 62 64 61 20 or.just.the.response:...(lambda.
46060 28 72 65 73 70 6f 6e 73 65 20 5f 29 0a 20 20 3b 3b 20 44 6f 20 73 6f 6d 65 74 68 69 6e 67 20 77 (response._)...;;.Do.something.w
46080 69 74 68 20 72 65 73 70 6f 6e 73 65 0a 20 20 28 6d 65 73 73 61 67 65 20 28 72 6f 74 31 33 2d 73 ith.response...(message.(rot13-s
460a0 74 72 69 6e 67 20 72 65 73 70 6f 6e 73 65 29 29 29 0a 0a 49 66 20 43 41 4c 4c 42 41 43 4b 20 69 tring.response)))..If.CALLBACK.i
460c0 73 20 6f 6d 69 74 74 65 64 2c 20 74 68 65 20 72 65 73 70 6f 6e 73 65 20 69 73 20 69 6e 73 65 72 s.omitted,.the.response.is.inser
460e0 74 65 64 20 61 74 20 74 68 65 20 70 6f 69 6e 74 20 74 68 65 0a 72 65 71 75 65 73 74 20 77 61 73 ted.at.the.point.the.request.was
46100 20 73 65 6e 74 2e 0a 0a 53 54 52 45 41 4d 20 69 73 20 61 20 62 6f 6f 6c 65 61 6e 20 74 68 61 74 .sent...STREAM.is.a.boolean.that
46120 20 64 65 74 65 72 6d 69 6e 65 73 20 69 66 20 74 68 65 20 72 65 73 70 6f 6e 73 65 20 73 68 6f 75 .determines.if.the.response.shou
46140 6c 64 20 62 65 0a 73 74 72 65 61 6d 65 64 2c 20 61 73 20 69 6e 20 60 67 70 74 65 6c 2d 73 74 72 ld.be.streamed,.as.in.`gptel-str
46160 65 61 6d 27 2e 20 20 49 66 20 74 68 65 20 6d 6f 64 65 6c 20 6f 72 20 74 68 65 20 62 61 63 6b 65 eam'...If.the.model.or.the.backe
46180 6e 64 20 64 6f 65 73 0a 6e 6f 74 20 73 75 70 70 6f 72 74 20 73 74 72 65 61 6d 69 6e 67 2c 20 74 nd.does.not.support.streaming,.t
461a0 68 69 73 20 77 69 6c 6c 20 62 65 20 69 67 6e 6f 72 65 64 2e 0a 0a 57 68 65 6e 20 73 74 72 65 61 his.will.be.ignored...When.strea
461c0 6d 69 6e 67 20 72 65 73 70 6f 6e 73 65 73 0a 0a 2d 20 43 41 4c 4c 42 41 43 4b 20 77 69 6c 6c 20 ming.responses..-.CALLBACK.will.
461e0 62 65 20 63 61 6c 6c 65 64 20 72 65 70 65 61 74 65 64 6c 79 20 77 69 74 68 20 65 61 63 68 20 52 be.called.repeatedly.with.each.R
46200 45 53 50 4f 4e 53 45 20 74 65 78 74 0a 20 20 63 68 75 6e 6b 20 28 61 20 73 74 72 69 6e 67 29 20 ESPONSE.text...chunk.(a.string).
46220 61 73 20 69 74 20 69 73 20 72 65 63 65 69 76 65 64 2e 0a 2d 20 57 68 65 6e 20 74 68 65 20 48 54 as.it.is.received..-.When.the.HT
46240 54 50 20 72 65 71 75 65 73 74 20 65 6e 64 73 20 73 75 63 63 65 73 73 66 75 6c 6c 79 2c 20 43 41 TP.request.ends.successfully,.CA
46260 4c 4c 42 41 43 4b 20 77 69 6c 6c 20 62 65 0a 20 20 63 61 6c 6c 65 64 20 77 69 74 68 20 61 20 52 LLBACK.will.be...called.with.a.R
46280 45 53 50 4f 4e 53 45 20 61 72 67 75 6d 65 6e 74 20 6f 66 20 74 20 74 6f 20 69 6e 64 69 63 61 74 ESPONSE.argument.of.t.to.indicat
462a0 65 20 73 75 63 63 65 73 73 2e 0a 2d 20 53 69 6d 69 6c 61 72 6c 79 2c 20 43 41 4c 4c 42 41 43 4b e.success..-.Similarly,.CALLBACK
462c0 20 77 69 6c 6c 20 62 65 20 63 61 6c 6c 65 64 20 77 69 74 68 0a 20 20 28 72 65 61 73 6f 6e 69 6e .will.be.called.with...(reasonin
462e0 67 20 2e 20 74 65 78 74 2d 63 68 75 6e 6b 29 20 66 6f 72 20 65 61 63 68 20 72 65 61 73 6f 6e 69 g...text-chunk).for.each.reasoni
46300 6e 67 20 63 68 75 6e 6b 2c 20 61 6e 64 0a 20 20 28 72 65 61 73 6f 6e 69 6e 67 20 2e 20 74 29 20 ng.chunk,.and...(reasoning...t).
46320 74 6f 20 69 6e 64 69 63 61 74 65 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20 72 65 61 73 6f to.indicate.the.end.of.the.reaso
46340 6e 69 6e 67 20 62 6c 6f 63 6b 2e 0a 0a 42 55 46 46 45 52 20 61 6e 64 20 50 4f 53 49 54 49 4f 4e ning.block...BUFFER.and.POSITION
46360 20 61 72 65 20 74 68 65 20 62 75 66 66 65 72 20 61 6e 64 20 70 6f 73 69 74 69 6f 6e 20 28 69 6e .are.the.buffer.and.position.(in
46380 74 65 67 65 72 20 6f 72 0a 6d 61 72 6b 65 72 29 20 61 74 20 77 68 69 63 68 20 74 68 65 20 72 65 teger.or.marker).at.which.the.re
463a0 73 70 6f 6e 73 65 20 69 73 20 69 6e 73 65 72 74 65 64 2e 20 20 49 66 20 61 20 43 41 4c 4c 42 41 sponse.is.inserted...If.a.CALLBA
463c0 43 4b 20 69 73 0a 73 70 65 63 69 66 69 65 64 2c 20 6e 6f 20 72 65 73 70 6f 6e 73 65 20 69 73 20 CK.is.specified,.no.response.is.
463e0 69 6e 73 65 72 74 65 64 20 61 6e 64 20 74 68 65 73 65 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 inserted.and.these.arguments.are
46400 0a 69 67 6e 6f 72 65 64 2c 20 62 75 74 20 74 68 65 79 20 61 72 65 20 73 74 69 6c 6c 20 61 76 61 .ignored,.but.they.are.still.ava
46420 69 6c 61 62 6c 65 20 69 6e 20 74 68 65 20 49 4e 46 4f 20 70 6c 69 73 74 20 70 61 73 73 65 64 0a ilable.in.the.INFO.plist.passed.
46440 74 6f 20 43 41 4c 4c 42 41 43 4b 20 66 6f 72 20 79 6f 75 20 74 6f 20 75 73 65 2e 0a 0a 42 55 46 to.CALLBACK.for.you.to.use...BUF
46460 46 45 52 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 FER.defaults.to.the.current.buff
46480 65 72 2c 20 61 6e 64 20 50 4f 53 49 54 49 4f 4e 20 74 6f 20 74 68 65 20 76 61 6c 75 65 0a 6f 66 er,.and.POSITION.to.the.value.of
464a0 20 28 70 6f 69 6e 74 29 20 6f 72 20 28 72 65 67 69 6f 6e 2d 65 6e 64 29 2c 20 64 65 70 65 6e 64 .(point).or.(region-end),.depend
464c0 69 6e 67 20 6f 6e 20 77 68 65 74 68 65 72 20 74 68 65 20 72 65 67 69 6f 6e 20 69 73 0a 61 63 74 ing.on.whether.the.region.is.act
464e0 69 76 65 2e 0a 0a 43 4f 4e 54 45 58 54 20 69 73 20 61 6e 79 20 61 64 64 69 74 69 6f 6e 61 6c 20 ive...CONTEXT.is.any.additional.
46500 64 61 74 61 20 6e 65 65 64 65 64 20 66 6f 72 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 74 6f 20 data.needed.for.the.callback.to.
46520 72 75 6e 2e 20 49 74 0a 69 73 20 69 6e 63 6c 75 64 65 64 20 69 6e 20 74 68 65 20 49 4e 46 4f 20 run..It.is.included.in.the.INFO.
46540 61 72 67 75 6d 65 6e 74 20 74 6f 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 2e 0a 4e 6f 74 65 3a 20 argument.to.the.callback..Note:.
46560 54 68 69 73 20 69 73 20 69 6e 74 65 6e 64 65 64 20 66 6f 72 20 73 74 6f 72 69 6e 67 20 45 6d 61 This.is.intended.for.storing.Ema
46580 63 73 20 73 74 61 74 65 20 74 6f 20 62 65 20 75 73 65 64 20 62 79 0a 43 41 4c 4c 42 41 43 4b 2c cs.state.to.be.used.by.CALLBACK,
465a0 20 61 6e 64 20 75 6e 72 65 6c 61 74 65 64 20 74 6f 20 74 68 65 20 63 6f 6e 74 65 78 74 20 73 75 .and.unrelated.to.the.context.su
465c0 70 70 6c 69 65 64 20 74 6f 20 74 68 65 20 4c 4c 4d 2e 0a 0a 53 59 53 54 45 4d 20 69 73 20 74 68 pplied.to.the.LLM...SYSTEM.is.th
465e0 65 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 20 6f 72 20 65 78 74 65 6e 64 65 64 20 63 68 61 e.system.message.or.extended.cha
46600 74 20 64 69 72 65 63 74 69 76 65 20 73 65 6e 74 20 74 6f 0a 74 68 65 20 4c 4c 4d 2e 20 20 54 68 t.directive.sent.to.the.LLM...Th
46620 69 73 20 63 61 6e 20 62 65 20 61 20 73 74 72 69 6e 67 2c 20 61 20 6c 69 73 74 20 6f 66 20 73 74 is.can.be.a.string,.a.list.of.st
46640 72 69 6e 67 73 20 6f 72 20 61 20 66 75 6e 63 74 69 6f 6e 0a 74 68 61 74 20 72 65 74 75 72 6e 73 rings.or.a.function.that.returns
46660 20 65 69 74 68 65 72 3b 20 73 65 65 20 60 67 70 74 65 6c 2d 64 69 72 65 63 74 69 76 65 73 27 20 .either;.see.`gptel-directives'.
46680 66 6f 72 20 6d 6f 72 65 0a 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 20 49 66 20 53 59 53 54 45 4d 20 for.more.information..If.SYSTEM.
466a0 69 73 20 6f 6d 69 74 74 65 64 2c 20 74 68 65 20 76 61 6c 75 65 20 6f 66 0a 60 67 70 74 65 6c 2d is.omitted,.the.value.of.`gptel-
466c0 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 27 20 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 -system-message'.for.the.current
466e0 20 62 75 66 66 65 72 20 69 73 20 75 73 65 64 2e 0a 0a 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 .buffer.is.used...The.following.
46700 6b 65 79 77 6f 72 64 73 20 61 72 65 20 6d 61 69 6e 6c 79 20 66 6f 72 20 69 6e 74 65 72 6e 61 6c keywords.are.mainly.for.internal
46720 20 75 73 65 3a 0a 0a 49 4e 2d 50 4c 41 43 45 20 69 73 20 61 20 62 6f 6f 6c 65 61 6e 20 75 73 65 .use:..IN-PLACE.is.a.boolean.use
46740 64 20 62 79 20 74 68 65 20 64 65 66 61 75 6c 74 20 63 61 6c 6c 62 61 63 6b 20 77 68 65 6e 20 69 d.by.the.default.callback.when.i
46760 6e 73 65 72 74 69 6e 67 0a 74 68 65 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 64 65 74 65 72 6d 69 nserting.the.response.to.determi
46780 6e 65 20 69 66 20 64 65 6c 69 6d 69 74 65 72 73 20 61 72 65 20 6e 65 65 64 65 64 20 62 65 74 77 ne.if.delimiters.are.needed.betw
467a0 65 65 6e 20 74 68 65 0a 70 72 6f 6d 70 74 20 61 6e 64 20 74 68 65 20 72 65 73 70 6f 6e 73 65 2e een.the.prompt.and.the.response.
467c0 0a 0a 49 66 20 44 52 59 2d 52 55 4e 20 69 73 20 6e 6f 6e 2d 6e 69 6c 2c 20 64 6f 20 6e 6f 74 20 ..If.DRY-RUN.is.non-nil,.do.not.
467e0 73 65 6e 64 20 74 68 65 20 72 65 71 75 65 73 74 2e 20 20 43 6f 6e 73 74 72 75 63 74 20 61 6e 64 send.the.request...Construct.and
46800 0a 72 65 74 75 72 6e 20 61 20 73 74 61 74 65 20 6d 61 63 68 69 6e 65 20 6f 62 6a 65 63 74 20 74 .return.a.state.machine.object.t
46820 68 61 74 20 63 61 6e 20 62 65 20 69 6e 74 72 6f 73 70 65 63 74 65 64 20 61 6e 64 0a 72 65 73 75 hat.can.be.introspected.and.resu
46840 6d 65 64 2e 0a 0a 54 52 41 4e 53 46 4f 52 4d 53 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 66 75 med...TRANSFORMS.is.a.list.of.fu
46860 6e 63 74 69 6f 6e 73 20 75 73 65 64 20 74 6f 20 74 72 61 6e 73 66 6f 72 6d 20 74 68 65 20 70 72 nctions.used.to.transform.the.pr
46880 6f 6d 70 74 20 6f 72 20 71 75 65 72 79 0a 70 61 72 61 6d 65 74 65 72 73 20 64 79 6e 61 6d 69 63 ompt.or.query.parameters.dynamic
468a0 61 6c 6c 79 2e 20 20 45 61 63 68 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 63 61 6c 6c 65 64 20 69 ally...Each.function.is.called.i
468c0 6e 20 61 20 74 65 6d 70 6f 72 61 72 79 20 62 75 66 66 65 72 0a 63 6f 6e 74 61 69 6e 69 6e 67 20 n.a.temporary.buffer.containing.
468e0 74 68 65 20 70 72 6f 6d 70 74 20 74 6f 20 62 65 20 73 65 6e 74 2c 20 61 6e 64 20 63 61 6e 20 63 the.prompt.to.be.sent,.and.can.c
46900 6f 6e 64 69 74 69 6f 6e 61 6c 6c 79 20 6d 6f 64 69 66 79 20 74 68 69 73 0a 62 75 66 66 65 72 2e onditionally.modify.this.buffer.
46920 20 20 54 68 69 73 20 63 61 6e 20 69 6e 63 6c 75 64 65 20 63 68 61 6e 67 69 6e 67 20 74 68 65 20 ..This.can.include.changing.the.
46940 28 62 75 66 66 65 72 2d 6c 6f 63 61 6c 29 20 76 61 6c 75 65 73 20 6f 66 20 74 68 65 0a 6d 6f 64 (buffer-local).values.of.the.mod
46960 65 6c 2c 20 62 61 63 6b 65 6e 64 20 6f 72 20 73 79 73 74 65 6d 20 70 72 6f 6d 70 74 2c 20 6f 72 el,.backend.or.system.prompt,.or
46980 20 61 75 67 6d 65 6e 74 69 6e 67 20 74 68 65 20 70 72 6f 6d 70 74 20 77 69 74 68 0a 61 64 64 69 .augmenting.the.prompt.with.addi
469a0 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 28 73 75 63 68 20 61 73 20 66 72 6f 6d tional.information.(such.as.from
469c0 20 61 20 52 41 47 20 65 6e 67 69 6e 65 29 2e 0a 0a 2d 20 53 79 6e 63 68 72 6f 6e 6f 75 73 20 74 .a.RAG.engine)...-.Synchronous.t
469e0 72 61 6e 73 66 6f 72 6d 65 72 73 20 61 72 65 20 63 61 6c 6c 65 64 20 77 69 74 68 20 7a 65 72 6f ransformers.are.called.with.zero
46a00 20 6f 72 20 6f 6e 65 20 61 72 67 75 6d 65 6e 74 2c 20 74 68 65 0a 20 20 73 74 61 74 65 20 6d 61 .or.one.argument,.the...state.ma
46a20 63 68 69 6e 65 20 66 6f 72 20 74 68 65 20 72 65 71 75 65 73 74 2e 0a 0a 2d 20 41 73 79 6e 63 68 chine.for.the.request...-.Asynch
46a40 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 20 77 ronous.transformers.are.called.w
46a60 69 74 68 20 74 77 6f 20 61 72 67 75 6d 65 6e 74 73 2c 20 61 20 63 61 6c 6c 62 61 63 6b 0a 20 20 ith.two.arguments,.a.callback...
46a80 61 6e 64 20 74 68 65 20 73 74 61 74 65 20 6d 61 63 68 69 6e 65 2e 20 20 49 74 20 73 68 6f 75 6c and.the.state.machine...It.shoul
46aa0 64 20 72 75 6e 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 61 66 74 65 72 20 66 69 6e 69 73 68 69 d.run.the.callback.after.finishi
46ac0 6e 67 20 69 74 73 0a 20 20 74 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 2e 0a 0a 53 65 65 20 60 67 ng.its...transformation...See.`g
46ae0 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 27 ptel-prompt-transform-functions'
46b00 20 66 6f 72 20 6d 6f 72 65 2e 0a 0a 46 53 4d 20 69 73 20 74 68 65 20 73 74 61 74 65 20 6d 61 63 .for.more...FSM.is.the.state.mac
46b20 68 69 6e 65 20 64 72 69 76 69 6e 67 20 74 68 65 20 72 65 71 75 65 73 74 2e 20 20 54 68 69 73 20 hine.driving.the.request...This.
46b40 63 61 6e 20 62 65 20 75 73 65 64 0a 74 6f 20 64 65 66 69 6e 65 20 61 20 63 75 73 74 6f 6d 20 72 can.be.used.to.define.a.custom.r
46b60 65 71 75 65 73 74 20 63 6f 6e 74 72 6f 6c 20 66 6c 6f 77 2c 20 73 65 65 20 60 67 70 74 65 6c 2d equest.control.flow,.see.`gptel-
46b80 66 73 6d 27 20 66 6f 72 0a 64 65 74 61 69 6c 73 2e 20 20 59 6f 75 20 63 61 6e 20 73 61 66 65 6c fsm'.for.details...You.can.safel
46ba0 79 20 69 67 6e 6f 72 65 20 74 68 69 73 20 2d 2d 20 46 53 4d 20 69 73 20 61 6e 20 75 6e 73 74 61 y.ignore.this.--.FSM.is.an.unsta
46bc0 62 6c 65 0a 66 65 61 74 75 72 65 20 61 6e 64 20 73 75 62 6a 65 63 74 20 74 6f 20 63 68 61 6e 67 ble.feature.and.subject.to.chang
46be0 65 2e 0a 0a 4e 6f 74 65 3a 0a 0a 31 2e 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 6e e...Note:..1..This.function.is.n
46c00 6f 74 20 66 75 6c 6c 79 20 73 65 6c 66 2d 63 6f 6e 74 61 69 6e 65 64 2e 20 20 43 6f 6e 73 69 64 ot.fully.self-contained...Consid
46c20 65 72 0a 6c 65 74 2d 62 69 6e 64 69 6e 67 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 73 20 60 67 er.let-binding.the.parameters.`g
46c40 70 74 65 6c 2d 62 61 63 6b 65 6e 64 27 2c 20 60 67 70 74 65 6c 2d 6d 6f 64 65 6c 27 2c 0a 60 67 ptel-backend',.`gptel-model',.`g
46c60 70 74 65 6c 2d 75 73 65 2d 74 6f 6f 6c 73 27 20 61 6e 64 20 60 67 70 74 65 6c 2d 75 73 65 2d 63 ptel-use-tools'.and.`gptel-use-c
46c80 6f 6e 74 65 78 74 27 20 61 72 6f 75 6e 64 20 63 61 6c 6c 73 20 74 6f 20 69 74 20 61 73 0a 72 65 ontext'.around.calls.to.it.as.re
46ca0 71 75 69 72 65 64 2e 0a 0a 32 2e 20 54 68 65 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20 6f 66 20 quired...2..The.return.value.of.
46cc0 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 61 20 73 74 61 74 65 20 6d 61 63 68 69 6e 65 this.function.is.a.state.machine
46ce0 20 74 68 61 74 20 6d 61 79 0a 62 65 20 75 73 65 64 20 74 6f 20 72 65 72 75 6e 20 6f 72 20 63 6f .that.may.be.used.to.rerun.or.co
46d00 6e 74 69 6e 75 65 20 74 68 65 20 72 65 71 75 65 73 74 20 61 74 20 61 20 6c 61 74 65 72 20 74 69 ntinue.the.request.at.a.later.ti
46d20 6d 65 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 69 6e 64 65 6e 74 20 31 29 29 0a 20 20 3b 3b me."...(declare.(indent.1))...;;
46d40 20 54 4f 44 4f 20 52 65 6d 6f 76 65 20 74 68 69 73 20 63 68 65 63 6b 20 69 6e 20 76 65 72 73 69 .TODO.Remove.this.check.in.versi
46d60 6f 6e 20 31 2e 30 0a 20 20 28 67 70 74 65 6c 2d 2d 73 61 6e 69 74 69 7a 65 2d 6d 6f 64 65 6c 29 on.1.0...(gptel--sanitize-model)
46d80 0a 20 20 28 6c 65 74 2a 20 28 28 73 74 61 72 74 2d 6d 61 72 6b 65 72 0a 20 20 20 20 20 20 20 20 ...(let*.((start-marker.........
46da0 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 28 28 6e 75 6c 6c 20 70 6f 73 69 74 69 ..(cond............((null.positi
46dc0 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 75 73 65 2d 72 65 67 69 6f 6e 2d on).............(if.(use-region-
46de0 70 29 0a 20 20 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 28 p).................(set-marker.(
46e00 6d 61 6b 65 2d 6d 61 72 6b 65 72 29 20 28 72 65 67 69 6f 6e 2d 65 6e 64 29 29 0a 20 20 20 20 20 make-marker).(region-end))......
46e20 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 6e 64 20 28 70 6f .........(gptel--at-word-end.(po
46e40 69 6e 74 2d 6d 61 72 6b 65 72 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 28 6d 61 72 6b int-marker))))............((mark
46e60 65 72 70 20 70 6f 73 69 74 69 6f 6e 29 20 70 6f 73 69 74 69 6f 6e 29 0a 20 20 20 20 20 20 20 20 erp.position).position).........
46e80 20 20 20 28 28 69 6e 74 65 67 65 72 70 20 70 6f 73 69 74 69 6f 6e 29 0a 20 20 20 20 20 20 20 20 ...((integerp.position).........
46ea0 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 29 20 70 6f ....(set-marker.(make-marker).po
46ec0 73 69 74 69 6f 6e 20 62 75 66 66 65 72 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 70 72 6f 6d sition.buffer))))..........(prom
46ee0 70 74 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 20 20 20 20 20 20 20 pt-buffer...........(cond.......
46f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 70 72 6f 6d 70 74 20 66 72 6f 6d 20 62 75 66 ................;prompt.from.buf
46f20 66 65 72 20 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 fer.or.explicitly.supplied......
46f40 20 20 20 20 20 20 28 28 6e 75 6c 6c 20 70 72 6f 6d 70 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 ......((null.prompt)............
46f60 20 28 67 70 74 65 6c 2d 2d 63 72 65 61 74 65 2d 70 72 6f 6d 70 74 2d 62 75 66 66 65 72 20 73 74 .(gptel--create-prompt-buffer.st
46f80 61 72 74 2d 6d 61 72 6b 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 28 73 74 72 69 6e 67 art-marker))............((string
46fa0 70 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 77 69 p.prompt).............(gptel--wi
46fc0 74 68 2d 62 75 66 66 65 72 2d 63 6f 70 79 20 62 75 66 66 65 72 20 6e 69 6c 20 6e 69 6c 0a 20 20 th-buffer-copy.buffer.nil.nil...
46fe0 20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 70 72 6f 6d 70 74 29 0a 20 20 20 20 ............(insert.prompt).....
47000 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 29 0a 20 20 20 ..........(current-buffer)))....
47020 20 20 20 20 20 20 20 20 28 28 63 6f 6e 73 70 20 70 72 6f 6d 70 74 29 0a 20 20 20 20 20 20 20 20 ........((consp.prompt).........
47040 20 20 20 20 3b 3b 20 28 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 6c 69 73 74 20 67 70 74 65 6c 2d ....;;.(gptel--parse-list.gptel-
47060 62 61 63 6b 65 6e 64 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 backend.prompt).............(gpt
47080 65 6c 2d 2d 77 69 74 68 2d 62 75 66 66 65 72 2d 63 6f 70 79 20 62 75 66 66 65 72 20 6e 69 6c 20 el--with-buffer-copy.buffer.nil.
470a0 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 54 45 4d 50 20 44 65 63 69 64 65 nil...............;;.TEMP.Decide
470c0 20 6f 6e 20 74 68 65 20 61 6e 6e 6f 61 74 65 64 20 70 72 6f 6d 70 74 2d 6c 69 73 74 20 66 6f 72 .on.the.annoated.prompt-list.for
470e0 6d 61 74 0a 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 mat...............(gptel--parse-
47100 6c 69 73 74 2d 61 6e 64 2d 69 6e 73 65 72 74 20 70 72 6f 6d 70 74 29 0a 20 20 20 20 20 20 20 20 list-and-insert.prompt).........
47120 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 29 0a 20 20 20 20 20 ......(current-buffer)))))......
47140 20 20 20 20 28 69 6e 66 6f 20 28 6c 69 73 74 20 3a 64 61 74 61 20 70 72 6f 6d 70 74 2d 62 75 66 ....(info.(list.:data.prompt-buf
47160 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 3a 62 75 66 66 65 72 fer......................:buffer
47180 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 20 3a 70 6f .buffer......................:po
471a0 73 69 74 69 6f 6e 20 73 74 61 72 74 2d 6d 61 72 6b 65 72 29 29 29 0a 20 20 20 20 28 77 68 65 6e sition.start-marker))).....(when
471c0 20 74 72 61 6e 73 66 6f 72 6d 73 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 74 72 61 .transforms.(plist-put.info.:tra
471e0 6e 73 66 6f 72 6d 73 20 74 72 61 6e 73 66 6f 72 6d 73 29 29 0a 20 20 20 20 28 77 69 74 68 2d 63 nsforms.transforms)).....(with-c
47200 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 70 72 6f 6d 70 74 2d 62 75 66 66 65 72 20 28 73 65 74 urrent-buffer.prompt-buffer.(set
47220 71 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 29 29 q.gptel--system-message.system))
47240 0a 20 20 20 20 28 77 68 65 6e 20 73 74 72 65 61 6d 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 .....(when.stream.(plist-put.inf
47260 6f 20 3a 73 74 72 65 61 6d 20 73 74 72 65 61 6d 29 29 0a 20 20 20 20 3b 3b 20 54 68 69 73 20 63 o.:stream.stream)).....;;.This.c
47280 6f 6e 74 65 78 74 20 73 68 6f 75 6c 64 20 6e 6f 74 20 62 65 20 63 6f 6e 66 75 73 65 64 20 77 69 ontext.should.not.be.confused.wi
472a0 74 68 20 74 68 65 20 63 6f 6e 74 65 78 74 20 61 67 67 72 65 67 61 74 69 6f 6e 20 63 6f 6e 74 65 th.the.context.aggregation.conte
472c0 78 74 21 0a 20 20 20 20 28 77 68 65 6e 20 63 61 6c 6c 62 61 63 6b 20 28 70 6c 69 73 74 2d 70 75 xt!.....(when.callback.(plist-pu
472e0 74 20 69 6e 66 6f 20 3a 63 61 6c 6c 62 61 63 6b 20 63 61 6c 6c 62 61 63 6b 29 29 0a 20 20 20 20 t.info.:callback.callback)).....
47300 28 77 68 65 6e 20 63 6f 6e 74 65 78 74 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 63 (when.context.(plist-put.info.:c
47320 6f 6e 74 65 78 74 20 63 6f 6e 74 65 78 74 29 29 0a 20 20 20 20 28 77 68 65 6e 20 69 6e 2d 70 6c ontext.context)).....(when.in-pl
47340 61 63 65 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 69 6e 2d 70 6c 61 63 65 20 69 6e ace.(plist-put.info.:in-place.in
47360 2d 70 6c 61 63 65 29 29 0a 20 20 20 20 3b 3b 20 41 64 64 20 69 6e 66 6f 20 74 6f 20 73 74 61 74 -place)).....;;.Add.info.to.stat
47380 65 20 6d 61 63 68 69 6e 65 20 63 6f 6e 74 65 78 74 0a 20 20 20 20 28 77 68 65 6e 20 64 72 79 2d e.machine.context.....(when.dry-
473a0 72 75 6e 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 64 72 79 2d 72 75 6e 20 64 72 79 run.(plist-put.info.:dry-run.dry
473c0 2d 72 75 6e 29 29 0a 20 20 20 20 28 73 65 74 66 20 28 67 70 74 65 6c 2d 66 73 6d 2d 69 6e 66 6f -run)).....(setf.(gptel-fsm-info
473e0 20 66 73 6d 29 20 69 6e 66 6f 29 29 0a 0a 20 20 3b 3b 20 54 45 4d 50 3a 20 41 75 67 6d 65 6e 74 .fsm).info))....;;.TEMP:.Augment
47400 20 69 6e 20 73 65 70 61 72 61 74 65 20 6c 65 74 20 62 6c 6f 63 6b 20 66 6f 72 20 6e 6f 77 2e 20 .in.separate.let.block.for.now..
47420 20 41 72 65 20 77 65 20 6f 76 65 72 63 61 70 74 75 72 69 6e 67 3f 0a 20 20 3b 3b 20 46 49 58 4d .Are.we.overcapturing?...;;.FIXM
47440 45 28 61 75 67 6d 65 6e 74 29 3a 20 43 61 6c 6c 20 61 75 67 6d 65 6e 74 6f 72 73 20 77 69 74 68 E(augment):.Call.augmentors.with
47460 20 49 4e 46 4f 2c 20 6e 6f 74 20 46 53 4d 0a 20 20 28 6c 65 74 20 28 28 69 6e 66 6f 20 28 67 70 .INFO,.not.FSM...(let.((info.(gp
47480 74 65 6c 2d 66 73 6d 2d 69 6e 66 6f 20 66 73 6d 29 29 29 0a 20 20 20 20 28 77 69 74 68 2d 63 75 tel-fsm-info.fsm))).....(with-cu
474a0 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 64 61 rrent-buffer.(plist-get.info.:da
474c0 74 61 29 0a 20 20 20 20 20 20 28 73 65 74 71 2d 6c 6f 63 61 6c 20 67 70 74 65 6c 2d 70 72 6f 6d ta).......(setq-local.gptel-prom
474e0 70 74 2d 74 72 61 6e 73 66 6f 72 6d 2d 66 75 6e 63 74 69 6f 6e 73 20 28 70 6c 69 73 74 2d 67 65 pt-transform-functions.(plist-ge
47500 74 20 69 6e 66 6f 20 3a 74 72 61 6e 73 66 6f 72 6d 73 29 29 0a 20 20 20 20 20 20 3b 3b 20 50 72 t.info.:transforms)).......;;.Pr
47520 65 73 65 74 20 68 61 73 20 68 69 67 68 65 73 74 20 70 72 69 6f 72 69 74 79 20 62 65 63 61 75 73 eset.has.highest.priority.becaus
47540 65 20 69 74 20 63 61 6e 20 63 68 61 6e 67 65 20 70 72 6f 6d 70 74 2d 74 72 61 6e 73 66 6f 72 6d e.it.can.change.prompt-transform
47560 2d 66 75 6e 63 74 69 6f 6e 73 0a 20 20 20 20 20 20 28 77 68 65 6e 20 28 6d 65 6d 71 20 27 67 70 -functions.......(when.(memq.'gp
47580 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 65 tel--transform-apply-preset.gpte
475a0 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 0a 20 20 l-prompt-transform-functions)...
475c0 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 74 72 61 6e 73 66 6f 72 6d 2d 61 70 70 6c 79 2d 70 72 ......(gptel--transform-apply-pr
475e0 65 73 65 74 20 66 73 6d 29 0a 20 20 20 20 20 20 20 20 28 73 65 74 71 20 67 70 74 65 6c 2d 70 72 eset.fsm).........(setq.gptel-pr
47600 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 3b 61 76 6f 69 64 20 ompt-transform-functions.;avoid.
47620 6d 75 74 61 74 69 6f 6e 2c 20 63 6f 70 79 20 74 72 61 6e 73 66 6f 72 6d 73 0a 20 20 20 20 20 20 mutation,.copy.transforms.......
47640 20 20 20 20 20 20 20 20 28 72 65 6d 71 20 27 67 70 74 65 6c 2d 2d 74 72 61 6e 73 66 6f 72 6d 2d ........(remq.'gptel--transform-
47660 61 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 apply-preset.gptel-prompt-transf
47680 6f 72 6d 2d 66 75 6e 63 74 69 6f 6e 73 29 29 29 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 61 75 orm-functions))).......(let.((au
476a0 67 6d 65 6e 74 2d 74 6f 74 61 6c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 61 63 74 20 6c 69 gment-total..............;act.li
476c0 6b 65 20 61 20 68 6f 6f 6b 2c 20 63 6f 75 6e 74 20 74 6f 74 61 6c 0a 20 20 20 20 20 20 20 20 20 ke.a.hook,.count.total..........
476e0 20 20 20 20 28 69 66 20 28 6d 65 6d 71 20 74 20 67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 74 72 61 ....(if.(memq.t.gptel-prompt-tra
47700 6e 73 66 6f 72 6d 2d 66 75 6e 63 74 69 6f 6e 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 nsform-functions)...............
47720 20 20 20 28 6c 65 6e 67 74 68 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 ...(length...................(se
47740 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 75 6e 63 74 69 tq.gptel-prompt-transform-functi
47760 6f 6e 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 63 6f ons.........................(nco
47780 6e 63 20 28 72 65 6d 71 20 74 20 67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 74 72 61 6e 73 66 6f 72 nc.(remq.t.gptel-prompt-transfor
477a0 6d 2d 66 75 6e 63 74 69 6f 6e 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 m-functions)....................
477c0 20 20 20 20 20 20 20 20 20 20 20 20 28 64 65 66 61 75 6c 74 2d 76 61 6c 75 65 20 27 67 70 74 65 ............(default-value.'gpte
477e0 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 29 l-prompt-transform-functions))))
47800 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 6e 67 74 68 20 67 70 74 65 6c 2d 70 72 ................(length.gptel-pr
47820 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 0a 20 20 20 20 ompt-transform-functions))).....
47840 20 20 20 20 20 20 20 20 28 61 75 67 6d 65 6e 74 2d 69 64 78 20 30 29 29 0a 20 20 20 20 20 20 20 ........(augment-idx.0))........
47860 20 28 69 66 20 28 6e 75 6c 6c 20 67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 74 72 61 6e 73 66 6f 72 .(if.(null.gptel-prompt-transfor
47880 6d 2d 66 75 6e 63 74 69 6f 6e 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d m-functions).............(gptel-
478a0 2d 72 65 61 6c 69 7a 65 2d 71 75 65 72 79 20 66 73 6d 29 0a 20 20 20 20 20 20 20 20 20 20 28 77 -realize-query.fsm)...........(w
478c0 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 6e ith-current-buffer.(plist-get.in
478e0 66 6f 20 3a 62 75 66 66 65 72 29 20 3b 41 70 70 6c 79 20 70 72 6f 6d 70 74 20 74 72 61 6e 73 66 fo.:buffer).;Apply.prompt.transf
47900 6f 72 6d 61 74 69 6f 6e 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 75 70 ormations.............(gptel--up
47920 64 61 74 65 2d 73 74 61 74 75 73 20 22 20 41 75 67 6d 65 6e 74 69 6e 67 2e 2e 2e 22 20 27 6d 6f date-status.".Augmenting...".'mo
47940 64 65 2d 6c 69 6e 65 2d 65 6d 70 68 61 73 69 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20 de-line-emphasis))...........;;.
47960 46 49 58 4d 45 28 61 75 67 6d 65 6e 74 29 3a 20 54 68 69 73 20 6e 65 65 64 73 20 74 6f 20 62 65 FIXME(augment):.This.needs.to.be
47980 20 63 6f 6e 76 65 72 74 65 64 20 69 6e 74 6f 20 61 20 6c 69 6e 65 61 72 20 63 61 6c 6c 62 61 63 .converted.into.a.linear.callbac
479a0 6b 0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20 63 68 61 69 6e 20 74 6f 20 61 76 6f 69 64 20 72 61 k...........;;.chain.to.avoid.ra
479c0 63 65 20 63 6f 6e 64 69 74 69 6f 6e 73 20 77 69 74 68 20 6d 75 6c 74 69 70 6c 65 20 61 73 79 6e ce.conditions.with.multiple.asyn
479e0 63 20 61 75 67 6d 65 6e 74 6f 72 73 2e 0a 20 20 20 20 20 20 20 20 20 20 28 72 75 6e 2d 68 6f 6f c.augmentors............(run-hoo
47a00 6b 2d 77 72 61 70 70 65 64 0a 20 20 20 20 20 20 20 20 20 20 20 27 67 70 74 65 6c 2d 70 72 6f 6d k-wrapped............'gptel-prom
47a20 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 20 20 20 20 pt-transform-functions..........
47a40 20 20 28 6c 61 6d 62 64 61 20 28 66 75 6e 63 20 66 73 6d 2d 61 72 67 29 0a 20 20 20 20 20 20 20 ..(lambda.(func.fsm-arg)........
47a60 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 6c 69 73 ......(with-current-buffer.(plis
47a80 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)...............
47aa0 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 0a 20 20 20 20 20 20 20 .(goto-char.(point-max))........
47ac0 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 72 69 74 79 20 ........(if.(=.(car.(func-arity.
47ae0 66 75 6e 63 29 29 20 32 29 20 3b 61 73 79 6e 63 20 61 75 67 6d 65 6e 74 6f 72 0a 20 20 20 20 20 func)).2).;async.augmentor......
47b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 66 75 6e 63 20 28 6c 61 6d ..............(funcall.func.(lam
47b20 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 20 20 20 bda.()..........................
47b40 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 69 6e 63 66 20 61 75 67 6d 65 6e 74 2d 69 64 78 29 0a ..........(cl-incf.augment-idx).
47b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
47b80 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 65 6e 74 ...(when.(>=.augment-idx.augment
47ba0 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 72 75 6e -total).;All.augmentors.have.run
47bc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
47be0 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 73 6d 2d ......(gptel--realize-query.fsm-
47c00 61 72 67 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 arg)))..........................
47c20 20 20 20 66 73 6d 2d 61 72 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 ...fsm-arg)..................(if
47c40 20 28 3d 20 28 63 61 72 20 28 66 75 6e 63 2d 61 72 69 74 79 20 66 75 6e 63 29 29 20 30 29 0a 20 .(=.(car.(func-arity.func)).0)..
47c60 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 66 75 6e ....................(funcall.fun
47c80 63 29 0a 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 66 c)....................(funcall.f
47ca0 75 6e 63 20 66 73 6d 2d 61 72 67 29 29 20 3b 73 79 6e 63 20 61 75 67 6d 65 6e 74 6f 72 0a 20 20 unc.fsm-arg)).;sync.augmentor...
47cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 69 6e 63 66 20 61 75 67 6d 65 6e 74 2d ...............(cl-incf.augment-
47ce0 69 64 78 29 0a 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 idx)..................(when.(>=.
47d00 61 75 67 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 augment-idx.augment-total).;All.
47d20 61 75 67 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 augmentors.have.run.............
47d40 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 73 6d .......(gptel--realize-query.fsm
47d60 2d 61 72 67 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 69 6c 29 20 20 20 20 20 20 -arg))))..............nil)......
47d80 20 20 20 20 20 3b 61 6c 77 61 79 73 20 72 65 74 75 72 6e 20 6e 69 6c 20 73 6f 20 72 75 6e 2d 68 .....;always.return.nil.so.run-h
47da0 6f 6f 6b 2d 77 72 61 70 70 65 64 20 64 6f 65 73 6e 27 74 20 61 62 6f 72 74 0a 20 20 20 20 20 20 ook-wrapped.doesn't.abort.......
47dc0 20 20 20 20 20 66 73 6d 29 29 29 29 29 0a 20 20 66 73 6d 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 .....fsm)))))...fsm)..(defun.gpt
47de0 65 6c 2d 2d 72 65 61 6c 69 7a 65 2d 71 75 65 72 79 20 28 66 73 6d 29 0a 20 20 22 52 65 61 6c 69 el--realize-query.(fsm)..."Reali
47e00 7a 65 20 74 68 65 20 71 75 65 72 79 20 70 61 79 6c 6f 61 64 20 66 6f 72 20 46 53 4d 20 66 72 6f ze.the.query.payload.for.FSM.fro
47e20 6d 20 69 74 73 20 70 72 6f 6d 70 74 20 62 75 66 66 65 72 2e 0a 0a 49 6e 69 74 69 61 74 65 20 74 m.its.prompt.buffer...Initiate.t
47e40 68 65 20 72 65 71 75 65 73 74 20 77 68 65 6e 20 64 6f 6e 65 2e 22 0a 20 20 28 6c 65 74 20 28 28 he.request.when.done."...(let.((
47e60 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 20 info.(gptel-fsm-info.fsm))).....
47e80 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 74 20 (with-current-buffer.(plist-get.
47ea0 69 6e 66 6f 20 3a 64 61 74 61 29 0a 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 64 69 72 65 63 74 info.:data).......(let*.((direct
47ec0 69 76 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 67 70 74 65 ive.(gptel--parse-directive.gpte
47ee0 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 20 20 20 20 l--system-message.'raw))........
47f00 20 20 20 20 20 20 3b 3b 20 44 49 52 45 43 54 49 56 45 20 63 6f 6e 74 61 69 6e 73 20 62 6f 74 68 ......;;.DIRECTIVE.contains.both
47f20 20 74 68 65 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 20 61 6e 64 20 74 68 65 20 74 65 6d 70 .the.system.message.and.the.temp
47f40 6c 61 74 65 20 70 72 6f 6d 70 74 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c late.prompts..............(gptel
47f60 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 28 --system-message...............(
47f80 75 6e 6c 65 73 73 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 unless.(gptel--model-capable-p.'
47fa0 6e 6f 73 79 73 74 65 6d 29 20 28 63 61 72 20 64 69 72 65 63 74 69 76 65 29 29 29 0a 20 20 20 20 nosystem).(car.directive))).....
47fc0 20 20 20 20 20 20 20 20 20 3b 3b 20 54 4f 44 4f 28 74 6f 6f 6c 29 20 4c 69 6d 69 74 20 74 6f 6f .........;;.TODO(tool).Limit.too
47fe0 6c 20 75 73 65 20 74 6f 20 63 61 70 61 62 6c 65 20 6d 6f 64 65 6c 73 20 61 66 74 65 72 20 64 6f l.use.to.capable.models.after.do
48000 63 75 6d 65 6e 74 69 6e 67 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 0a 20 20 20 20 20 20 20 20 cumenting.:capabilities.........
48020 20 20 20 20 20 3b 3b 20 28 67 70 74 65 6c 2d 75 73 65 2d 74 6f 6f 6c 73 20 28 61 6e 64 20 28 67 .....;;.(gptel-use-tools.(and.(g
48040 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 63 61 70 61 62 6c 65 2d 70 20 27 74 6f 6f 6c 2d 75 73 65 29 ptel--model-capable-p.'tool-use)
48060 20 67 70 74 65 6c 2d 75 73 65 2d 74 6f 6f 6c 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 .gptel-use-tools))..............
48080 28 73 74 72 65 61 6d 20 28 61 6e 64 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 73 74 (stream.(and.(plist-get.info.:st
480a0 72 65 61 6d 29 20 67 70 74 65 6c 2d 75 73 65 2d 63 75 72 6c 20 67 70 74 65 6c 2d 73 74 72 65 61 ream).gptel-use-curl.gptel-strea
480c0 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 3b 3b 20 48 m...........................;;.H
480e0 41 43 4b 28 74 6f 6f 6c 29 3a 20 6e 6f 20 73 74 72 65 61 6d 20 69 66 20 4f 6c 6c 61 6d 61 20 2b ACK(tool):.no.stream.if.Ollama.+
48100 20 74 6f 6f 6c 73 2e 20 20 4e 65 65 64 20 74 6f 20 66 69 6e 64 20 61 20 62 65 74 74 65 72 20 77 .tools...Need.to.find.a.better.w
48120 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 28 6e 6f ay...........................(no
48140 74 20 28 61 6e 64 20 28 65 71 20 28 74 79 70 65 2d 6f 66 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e t.(and.(eq.(type-of.gptel-backen
48160 64 29 20 27 67 70 74 65 6c 2d 6f 6c 6c 61 6d 61 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 d).'gptel-ollama)...............
48180 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 6f 6f 6c ......................gptel-tool
481a0 73 20 67 70 74 65 6c 2d 75 73 65 2d 74 6f 6f 6c 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 s.gptel-use-tools)).............
481c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 43 68 65 63 6b 20 6d 6f 64 65 6c 2d 73 70 65 ..............;;.Check.model-spe
481e0 63 69 66 69 63 20 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 20 66 6f 72 20 73 74 72 65 61 6d 69 cific.request-params.for.streami
48200 6e 67 20 70 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 ng.preference...................
48220 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 6d 6f 64 65 6c 2d 70 61 72 61 6d 73 20 28 67 70 ........(let*.((model-params.(gp
48240 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 67 70 74 65 6c 2d tel--model-request-params.gptel-
48260 6d 6f 64 65 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 model)).........................
48280 20 20 20 20 20 20 20 20 20 28 73 74 72 65 61 6d 2d 73 70 65 63 20 28 70 6c 69 73 74 2d 67 65 74 .........(stream-spec.(plist-get
482a0 20 6d 6f 64 65 6c 2d 70 61 72 61 6d 73 20 3a 73 74 72 65 61 6d 29 29 29 0a 20 20 20 20 20 20 20 .model-params.:stream)))........
482c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 49 66 20 6e 6f 74 20 70 .....................;;.If.not.p
482e0 72 65 73 65 6e 74 2c 20 74 68 65 72 65 20 69 73 20 6e 6f 20 6d 6f 64 65 6c 2d 73 70 65 63 69 66 resent,.there.is.no.model-specif
48300 69 63 20 70 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 ic.preference...................
48320 20 20 20 20 20 20 20 20 20 20 28 6f 72 20 28 6e 6f 74 20 28 6d 65 6d 71 20 3a 73 74 72 65 61 6d ..........(or.(not.(memq.:stream
48340 20 6d 6f 64 65 6c 2d 70 61 72 61 6d 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .model-params)).................
48360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 49 66 20 70 72 65 73 65 6e 74 2c 20 69 ................;;.If.present,.i
48380 74 20 6d 75 73 74 20 6e 6f 74 20 62 65 20 3a 6a 73 6f 6e 2d 66 61 6c 73 65 20 6f 72 20 6e 69 6c t.must.not.be.:json-false.or.nil
483a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
483c0 20 28 61 6e 64 20 73 74 72 65 61 6d 2d 73 70 65 63 20 28 6e 6f 74 20 28 65 71 20 73 74 72 65 61 .(and.stream-spec.(not.(eq.strea
483e0 6d 2d 73 70 65 63 20 3a 6a 73 6f 6e 2d 66 61 6c 73 65 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 m-spec.:json-false))))).........
48400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 43 68 65 63 6b 20 62 61 63 6b 65 ..................;;.Check.backe
48420 6e 64 2d 73 70 65 63 69 66 69 63 20 73 74 72 65 61 6d 69 6e 67 20 73 65 74 74 69 6e 67 73 0a 20 nd-specific.streaming.settings..
48440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d .........................(gptel-
48460 62 61 63 6b 65 6e 64 2d 73 74 72 65 61 6d 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 29 29 0a backend-stream.gptel-backend))).
48480 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 73 74 72 65 61 6d 20 73 74 72 65 61 .............(gptel-stream.strea
484a0 6d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6c 6c 2d 70 72 6f 6d 70 74 29 29 0a 20 m)..............(full-prompt))..
484c0 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 63 64 72 20 64 69 72 65 63 74 69 76 65 29 20 20 20 20 .......(when.(cdr.directive)....
484e0 20 20 20 3b 20 70 72 6f 6d 70 74 20 63 6f 6e 73 74 72 75 63 74 65 64 20 66 72 6f 6d 20 64 69 72 ...;.prompt.constructed.from.dir
48500 65 63 74 69 76 65 2f 74 65 6d 70 6c 61 74 65 0a 20 20 20 20 20 20 20 20 20 20 28 73 61 76 65 2d ective/template...........(save-
48520 65 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 excursion.(goto-char.(point-min)
48540 29 0a 20 20 20 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
48560 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 28 63 64 72 20 64 el--parse-list-and-insert.(cdr.d
48580 69 72 65 63 74 69 76 65 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 irective)))).........(goto-char.
485a0 28 70 6f 69 6e 74 2d 6d 61 78 29 29 0a 20 20 20 20 20 20 20 20 28 73 65 74 71 20 66 75 6c 6c 2d (point-max)).........(setq.full-
485c0 70 72 6f 6d 70 74 20 28 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 62 75 66 66 65 72 20 3b 70 72 6f prompt.(gptel--parse-buffer.;pro
485e0 6d 70 74 20 66 72 6f 6d 20 62 75 66 66 65 72 20 6f 72 20 65 78 70 6c 69 63 69 74 6c 79 20 73 75 mpt.from.buffer.or.explicitly.su
48600 70 70 6c 69 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 pplied..........................
48620 20 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 28 61 6e 64 20 67 70 74 65 6c 2d 2d 6e 75 6d 2d ..gptel-backend.(and.gptel--num-
48640 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 20 messages-to-send................
48660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 ...............................(
48680 2a 20 32 20 67 70 74 65 6c 2d 2d 6e 75 6d 2d 6d 65 73 73 61 67 65 73 2d 74 6f 2d 73 65 6e 64 29 *.2.gptel--num-messages-to-send)
486a0 29 29 29 0a 20 20 20 20 20 20 20 20 3b 3b 20 49 6e 6a 65 63 74 20 6d 65 64 69 61 20 63 68 75 6e ))).........;;.Inject.media.chun
486c0 6b 73 20 69 6e 74 6f 20 74 68 65 20 66 69 72 73 74 20 75 73 65 72 20 70 72 6f 6d 70 74 20 69 66 ks.into.the.first.user.prompt.if
486e0 20 72 65 71 75 69 72 65 64 2e 20 20 4d 65 64 69 61 0a 20 20 20 20 20 20 20 20 3b 3b 20 63 68 75 .required...Media.........;;.chu
48700 6e 6b 73 20 61 72 65 20 61 6c 77 61 79 73 20 69 6e 63 6c 75 64 65 64 20 77 69 74 68 20 74 68 65 nks.are.always.included.with.the
48720 20 66 69 72 73 74 20 75 73 65 72 20 6d 65 73 73 61 67 65 2c 0a 20 20 20 20 20 20 20 20 3b 3b 20 .first.user.message,.........;;.
48740 69 72 72 65 73 70 65 63 74 69 76 65 20 6f 66 20 74 68 65 20 70 72 65 66 65 72 65 6e 63 65 20 69 irrespective.of.the.preference.i
48760 6e 20 60 67 70 74 65 6c 2d 75 73 65 2d 63 6f 6e 74 65 78 74 27 2e 20 20 54 68 69 73 20 69 73 0a n.`gptel-use-context'...This.is.
48780 20 20 20 20 20 20 20 20 3b 3b 20 62 65 63 61 75 73 65 20 6d 65 64 69 61 20 63 61 6e 6e 6f 74 20 ........;;.because.media.cannot.
487a0 62 65 20 69 6e 63 6c 75 64 65 64 20 28 69 6e 20 67 65 6e 65 72 61 6c 29 20 77 69 74 68 20 73 79 be.included.(in.general).with.sy
487c0 73 74 65 6d 20 6d 65 73 73 61 67 65 73 2e 0a 20 20 20 20 20 20 20 20 3b 3b 20 54 4f 44 4f 28 61 stem.messages..........;;.TODO(a
487e0 75 67 6d 65 6e 74 29 3a 20 46 69 6e 64 20 61 20 77 61 79 20 74 6f 20 64 6f 20 74 68 69 73 20 69 ugment):.Find.a.way.to.do.this.i
48800 6e 20 74 68 65 20 70 72 6f 6d 70 74 2d 62 75 66 66 65 72 3f 0a 20 20 20 20 20 20 20 20 28 77 68 n.the.prompt-buffer?.........(wh
48820 65 6e 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 20 67 70 74 en.(and.gptel-context--alist.gpt
48840 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 20 20 20 20 20 20 20 el-use-context..................
48860 20 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 65 ..gptel-track-media.(gptel--mode
48880 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 28 l-capable-p.'media))...........(
488a0 67 70 74 65 6c 2d 2d 77 72 61 70 2d 75 73 65 72 2d 70 72 6f 6d 70 74 20 67 70 74 65 6c 2d 62 61 gptel--wrap-user-prompt.gptel-ba
488c0 63 6b 65 6e 64 20 66 75 6c 6c 2d 70 72 6f 6d 70 74 20 27 6d 65 64 69 61 29 29 0a 20 20 20 20 20 ckend.full-prompt.'media))......
488e0 20 20 20 28 75 6e 6c 65 73 73 20 73 74 72 65 61 6d 20 28 63 6c 2d 72 65 6d 66 20 69 6e 66 6f 20 ...(unless.stream.(cl-remf.info.
48900 3a 73 74 72 65 61 6d 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 :stream)).........(plist-put.inf
48920 6f 20 3a 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 0a 20 20 20 20 20 20 o.:backend.gptel-backend).......
48940 20 20 28 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 20 ..(when.gptel-include-reasoning.
48960 20 20 3b 52 65 71 75 69 72 65 64 20 66 6f 72 20 6e 65 78 74 2d 72 65 71 75 65 73 74 2d 6f 6e 6c ..;Required.for.next-request-onl
48980 79 20 73 63 6f 70 65 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 y.scope...........(plist-put.inf
489a0 6f 20 3a 69 6e 63 6c 75 64 65 2d 72 65 61 73 6f 6e 69 6e 67 20 67 70 74 65 6c 2d 69 6e 63 6c 75 o.:include-reasoning.gptel-inclu
489c0 64 65 2d 72 65 61 73 6f 6e 69 6e 67 29 29 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 61 6e de-reasoning)).........(when.(an
489e0 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 20 d.gptel-use-tools.gptel-tools)..
48a00 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 74 6f 6f 6c 73 20 .........(plist-put.info.:tools.
48a20 67 70 74 65 6c 2d 74 6f 6f 6c 73 29 29 0a 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 gptel-tools)).........(plist-put
48a40 20 69 6e 66 6f 20 3a 64 61 74 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 .info.:data....................(
48a60 67 70 74 65 6c 2d 2d 72 65 71 75 65 73 74 2d 64 61 74 61 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e gptel--request-data.gptel-backen
48a80 64 20 66 75 6c 6c 2d 70 72 6f 6d 70 74 29 29 0a 20 20 20 20 20 20 20 20 28 72 75 6e 2d 68 6f 6f d.full-prompt)).........(run-hoo
48aa0 6b 73 20 27 67 70 74 65 6c 2d 61 75 67 6d 65 6e 74 2d 70 6f 73 74 2d 6d 6f 64 69 66 79 2d 68 6f ks.'gptel-augment-post-modify-ho
48ac0 6f 6b 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 65 6e 74 ok)).......(kill-buffer.(current
48ae0 2d 62 75 66 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 -buffer))).....;;.INIT.->.WAIT..
48b00 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 3a 64 72 79 2d ...(unless.(plist-get.info.:dry-
48b20 72 75 6e 29 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 run).(gptel--fsm-transition.fsm)
48b40 29 0a 20 20 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 ).....fsm))..(defun.gptel-abort.
48b60 28 62 75 66 29 0a 20 20 22 53 74 6f 70 20 61 6e 79 20 61 63 74 69 76 65 20 67 70 74 65 6c 20 70 (buf)..."Stop.any.active.gptel.p
48b80 72 6f 63 65 73 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 62 75 66 66 65 72 20 42 55 rocess.associated.with.buffer.BU
48ba0 46 2e 0a 0a 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 F...BUF.defaults.to.the.current.
48bc0 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 63 buffer."...(interactive.(list.(c
48be0 75 72 72 65 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 urrent-buffer)))...(when-let*.((
48c00 70 72 6f 63 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 proc-attrs................(cl-fi
48c20 6e 64 2d 69 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 nd-if.................(lambda.(e
48c40 6e 74 72 79 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 ntry)...................;;.each.
48c60 65 6e 74 72 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 entry.has.the.form.(PROC...(FSM.
48c80 41 42 4f 52 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 ABORT-FN))...................(eq
48ca0 20 28 74 68 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 .(thread-first.(cadr.entry).;.FS
48cc0 4d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 M...............................
48ce0 20 20 20 20 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 ......(gptel-fsm-info)..........
48d00 20 20 20 20 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
48d20 74 2d 67 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 t-get.:buffer)).................
48d40 20 20 20 20 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 ......buf)).................gpte
48d60 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 20 20 20 20 l--request-alist))..............
48d80 20 28 70 72 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 .(proc.(car.proc-attrs))........
48da0 20 20 20 20 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 .......(fsm.(cadr.proc-attrs))..
48dc0 20 20 20 20 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
48de0 66 6f 20 66 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 fo.fsm))...............(abort-fn
48e00 20 28 63 64 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 .(cddr.proc-attrs))).....;;.Run.
48e20 3a 63 61 6c 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 :callback.with.abort.signal.....
48e40 28 77 69 74 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 (with-demoted-errors."Callback.e
48e60 72 72 6f 72 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 rror:.%S".......(and-let*.((cb.(
48e80 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 29 0a 20 20 20 20 20 plist-get.info.:callback))......
48ea0 20 20 20 20 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 ............((functionp.cb)))...
48ec0 20 20 20 20 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 ......(funcall.cb.'abort.info)))
48ee0 0a 20 20 20 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 .....(funcall.abort-fn).....(set
48f00 66 20 28 61 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 f.(alist-get.proc.gptel--request
48f20 2d 61 6c 69 73 74 20 6e 69 6c 20 27 72 65 6d 6f 76 65 29 20 6e 69 6c 29 0a 20 20 20 20 28 77 69 -alist.nil.'remove).nil).....(wi
48f40 74 68 2d 63 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 th-current-buffer.buf.......(whe
48f60 6e 20 67 70 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 n.gptel-mode.(gptel--update-stat
48f80 75 73 20 20 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 us..".Abort".'error))).....(mess
48fa0 61 67 65 20 22 53 74 6f 70 70 65 64 20 67 70 74 65 6c 20 72 65 71 75 65 73 74 20 69 6e 20 62 75 age."Stopped.gptel.request.in.bu
48fc0 66 66 65 72 20 25 53 22 20 28 62 75 66 66 65 72 2d 6e 61 6d 65 20 62 75 66 29 29 29 29 0a 0a 3b ffer.%S".(buffer-name.buf))))..;
48fe0 3b 20 54 4f 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 ;.TODO:.Handle.multiple.requests
49000 28 23 31 35 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 (#15)..(Only.one.request.from.on
49020 65 20 62 75 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 e.buffer.at.a.time?).;;;###autol
49040 6f 61 64 0a 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 oad.(defun.gptel-send.(&optional
49060 20 61 72 67 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 .arg)..."Submit.this.prompt.to.t
49080 68 65 20 63 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 he.current.LLM.backend...By.defa
490a0 75 6c 74 2c 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 ult,.the.contents.of.the.buffer.
490c0 75 70 20 74 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 up.to.the.cursor.position.are.se
490e0 6e 74 2e 20 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 nt...If.the.region.is.active,.it
49100 73 20 63 6f 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 s.contents.are.sent.instead...Th
49120 65 20 72 65 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 e.response.from.the.LLM.is.inser
49140 74 65 64 20 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 ted.below.the.cursor.position.at
49160 20 74 68 65 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 .the.time.of.sending...To.change
49180 20 74 68 69 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 .this.behavior.or.model.paramete
491a0 72 73 2c 20 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 rs,.use.prefix.arg.ARG.activate.
491c0 61 20 74 72 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 a.transient.menu.with.more.optio
491e0 6e 73 20 69 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 ns.instead...This.command.is.asy
49200 6e 63 68 72 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 nchronous,.you.can.continue.to.u
49220 73 65 20 45 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 se.Emacs.while.waiting.for.the.r
49240 65 73 70 6f 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 esponse."...(interactive."P")...
49260 28 69 66 20 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 (if.(and.arg.(require.'gptel-tra
49280 6e 73 69 65 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 nsient.nil.t)).......(call-inter
492a0 61 63 74 69 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 actively.#'gptel-menu).....(gpte
492c0 6c 2d 2d 73 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 l--sanitize-model).....(let.((fs
492e0 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 20 67 70 74 65 m.(gptel-make-fsm.:handlers.gpte
49300 6c 2d 73 65 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 l-send--handlers))).......(gptel
49320 2d 72 65 71 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 -request.nil.........:stream.gpt
49340 65 6c 2d 73 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 el-stream.........:transforms.gp
49360 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 0a 20 tel-prompt-transform-functions..
49380 20 20 20 20 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 .......:fsm.fsm).......(message.
493a0 22 51 75 65 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 "Querying.%s..."................
493c0 28 74 68 72 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 (thread-first.(gptel-fsm-info.fs
493e0 6d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 m)..............................
49400 28 70 6c 69 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 (plist-get.:backend)............
49420 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 61 63 6b 65 6e 64 ..................(gptel-backend
49440 2d 6e 61 6d 65 29 29 29 29 0a 20 20 20 20 28 67 70 74 65 6c 2d 2d 75 70 64 61 74 65 2d 73 74 61 -name)))).....(gptel--update-sta
49460 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 28 tus.".Waiting...".'warning)))..(
49480 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 6a 73 6f 6e 2d 70 72 65 74 74 79 2d 70 72 69 declare-function.json-pretty-pri
494a0 6e 74 2d 62 75 66 66 65 72 20 22 6a 73 6f 6e 22 29 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d nt-buffer."json").(defun.gptel--
494c0 69 6e 73 70 65 63 74 2d 71 75 65 72 79 20 28 26 6f 70 74 69 6f 6e 61 6c 20 72 65 71 75 65 73 74 inspect-query.(&optional.request
494e0 2d 66 73 6d 20 66 6f 72 6d 61 74 29 0a 20 20 22 53 68 6f 77 20 74 68 65 20 66 75 6c 6c 20 4c 4c -fsm.format)..."Show.the.full.LL
49500 4d 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 69 6e 20 61 20 62 M.query.that.will.be.sent.in.a.b
49520 75 66 66 65 72 2e 0a 0a 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 73 20 61 73 20 61 20 64 72 79 20 uffer...This.functions.as.a.dry.
49540 72 75 6e 20 6f 66 20 60 67 70 74 65 6c 2d 73 65 6e 64 27 2e 20 20 54 68 65 20 72 65 71 75 65 73 run.of.`gptel-send'...The.reques
49560 74 20 64 61 74 61 0a 6d 61 79 20 62 65 20 65 64 69 74 65 64 20 61 6e 64 20 74 68 65 20 71 75 65 t.data.may.be.edited.and.the.que
49580 72 79 20 63 6f 6e 74 69 6e 75 65 64 20 66 72 6f 6d 20 74 68 69 73 20 62 75 66 66 65 72 2e 0a 0a ry.continued.from.this.buffer...
495a0 52 45 51 55 45 53 54 2d 46 53 4d 20 69 73 20 74 68 65 20 73 74 61 74 65 20 6f 66 20 74 68 65 20 REQUEST-FSM.is.the.state.of.the.
495c0 72 65 71 75 65 73 74 2c 20 61 73 20 72 65 74 75 72 6e 65 64 20 62 79 0a 60 67 70 74 65 6c 2d 72 request,.as.returned.by.`gptel-r
495e0 65 71 75 65 73 74 27 2e 20 20 49 66 20 46 4f 52 4d 41 54 20 69 73 20 74 68 65 20 73 79 6d 62 6f equest'...If.FORMAT.is.the.symbo
49600 6c 20 6a 73 6f 6e 2c 20 73 68 6f 77 20 74 68 65 20 65 6e 63 6f 64 65 64 0a 4a 53 4f 4e 20 71 75 l.json,.show.the.encoded.JSON.qu
49620 65 72 79 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20 4c 69 73 70 20 73 74 72 75 63 74 75 72 ery.instead.of.the.Lisp.structur
49640 65 20 67 70 74 65 6c 20 75 73 65 73 2e 22 0a 20 20 28 75 6e 6c 65 73 73 20 72 65 71 75 65 73 74 e.gptel.uses."...(unless.request
49660 2d 66 73 6d 20 28 73 65 74 71 20 72 65 71 75 65 73 74 2d 66 73 6d 20 67 70 74 65 6c 2d 2d 66 73 -fsm.(setq.request-fsm.gptel--fs
49680 6d 2d 6c 61 73 74 29 29 0a 20 20 28 69 66 20 28 62 75 66 66 65 72 70 20 28 70 6c 69 73 74 2d 67 m-last))...(if.(bufferp.(plist-g
496a0 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 29 20 et.(gptel-fsm-info.request-fsm).
496c0 3a 64 61 74 61 29 29 0a 20 20 20 20 20 20 28 6c 65 74 72 65 63 20 28 28 64 72 79 2d 72 75 6e 2d :data)).......(letrec.((dry-run-
496e0 70 6f 6c 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 75 6e 2d 77 69 74 68 2d 74 poll.................(run-with-t
49700 69 6d 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 30 20 31 20 28 6c 61 6d 62 64 imer..................0.1.(lambd
49720 61 20 28 66 73 6d 20 66 6f 72 6d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 a.(fsm.form)....................
49740 20 20 20 20 28 75 6e 6c 65 73 73 20 28 62 75 66 66 65 72 70 20 28 70 6c 69 73 74 2d 67 65 74 20 ....(unless.(bufferp.(plist-get.
49760 28 67 70 74 65 6c 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 (gptel-fsm-info.fsm).:data))....
49780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 61 6e 63 65 6c 2d 74 69 ......................(cancel-ti
497a0 6d 65 72 20 64 72 79 2d 72 75 6e 2d 70 6f 6c 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 mer.dry-run-poll)...............
497c0 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 71 75 65 72 79 ...........(gptel--inspect-query
497e0 20 66 73 6d 20 66 6f 72 6d 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 .fsm.form)))..................re
49800 71 75 65 73 74 2d 66 73 6d 20 66 6f 72 6d 61 74 29 29 29 29 0a 20 20 20 20 28 77 69 74 68 2d 63 quest-fsm.format)))).....(with-c
49820 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 28 67 70 74 65 6c 2d urrent-buffer.(plist-get.(gptel-
49840 66 73 6d 2d 69 6e 66 6f 20 72 65 71 75 65 73 74 2d 66 73 6d 29 20 3a 62 75 66 66 65 72 29 0a 20 fsm-info.request-fsm).:buffer)..
49860 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 52 65 61 .....(gptel--update-status.".Rea
49880 64 79 22 20 27 73 75 63 63 65 73 73 29 29 0a 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 dy".'success)).....(with-current
498a0 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 74 -buffer.(get-buffer-create."*gpt
498c0 65 6c 2d 71 75 65 72 79 2a 22 29 0a 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 73 74 61 6e 64 61 el-query*").......(let*.((standa
498e0 72 64 2d 6f 75 74 70 75 74 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29 0a 20 20 20 20 rd-output.(current-buffer)).....
49900 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 0a 20 .........(inhibit-read-only.t)..
49920 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 71 75 65 73 74 2d 64 61 74 61 0a 20 20 20 20 20 20 ............(request-data.......
49940 20 20 20 20 20 20 20 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 ........(plist-get.(gptel-fsm-in
49960 66 6f 20 72 65 71 75 65 73 74 2d 66 73 6d 29 20 3a 64 61 74 61 29 29 29 0a 20 20 20 20 20 20 20 fo.request-fsm).:data)))........
49980 20 28 62 75 66 66 65 72 2d 64 69 73 61 62 6c 65 2d 75 6e 64 6f 29 0a 20 20 20 20 20 20 20 20 28 .(buffer-disable-undo).........(
499a0 65 72 61 73 65 2d 62 75 66 66 65 72 29 0a 20 20 20 20 20 20 20 20 28 69 66 20 28 65 71 20 66 6f erase-buffer).........(if.(eq.fo
499c0 72 6d 61 74 20 27 6a 73 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 67 6e 20 28 rmat.'json).............(progn.(
499e0 66 75 6e 64 61 6d 65 6e 74 61 6c 2d 6d 6f 64 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 fundamental-mode)...............
49a00 20 20 20 20 20 28 69 6e 73 65 72 74 20 28 67 70 74 65 6c 2d 2d 6a 73 6f 6e 2d 65 6e 63 6f 64 65 .....(insert.(gptel--json-encode
49a20 20 72 65 71 75 65 73 74 2d 64 61 74 61 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .request-data)).................
49a40 20 20 20 28 6a 73 6f 6e 2d 70 72 65 74 74 79 2d 70 72 69 6e 74 2d 62 75 66 66 65 72 29 29 0a 20 ...(json-pretty-print-buffer))..
49a60 20 20 20 20 20 20 20 20 20 28 6c 69 73 70 2d 64 61 74 61 2d 6d 6f 64 65 29 0a 20 20 20 20 20 20 .........(lisp-data-mode).......
49a80 20 20 20 20 28 70 72 69 6e 31 20 72 65 71 75 65 73 74 2d 64 61 74 61 29 0a 20 20 20 20 20 20 20 ....(prin1.request-data)........
49aa0 20 20 20 28 70 70 2d 62 75 66 66 65 72 29 29 0a 20 20 20 20 20 20 20 20 28 73 65 74 71 2d 6c 6f ...(pp-buffer)).........(setq-lo
49ac0 63 61 6c 20 67 70 74 65 6c 2d 2d 66 73 6d 2d 6c 61 73 74 20 72 65 71 75 65 73 74 2d 66 73 6d 29 cal.gptel--fsm-last.request-fsm)
49ae0 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 69 6e 29 29 .........(goto-char.(point-min))
49b00 0a 20 20 20 20 20 20 20 20 28 76 69 65 77 2d 6d 6f 64 65 20 31 29 0a 20 20 20 20 20 20 20 20 28 .........(view-mode.1).........(
49b20 73 65 74 71 20 62 75 66 66 65 72 2d 75 6e 64 6f 2d 6c 69 73 74 20 6e 69 6c 29 0a 20 20 20 20 20 setq.buffer-undo-list.nil)......
49b40 20 20 20 28 75 73 65 2d 6c 6f 63 61 6c 2d 6d 61 70 0a 20 20 20 20 20 20 20 20 20 28 6d 61 6b 65 ...(use-local-map..........(make
49b60 2d 63 6f 6d 70 6f 73 65 64 2d 6b 65 79 6d 61 70 0a 20 20 20 20 20 20 20 20 20 20 28 64 65 66 69 -composed-keymap...........(defi
49b80 6e 65 2d 6b 65 79 6d 61 70 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 43 2d 63 20 43 2d 63 22 20 ne-keymap............."C-c.C-c".
49ba0 23 27 67 70 74 65 6c 2d 2d 63 6f 6e 74 69 6e 75 65 2d 71 75 65 72 79 0a 20 20 20 20 20 20 20 20 #'gptel--continue-query.........
49bc0 20 20 20 20 22 43 2d 63 20 43 2d 6b 22 20 23 27 71 75 69 74 2d 77 69 6e 64 6f 77 29 0a 20 20 20 ...."C-c.C-k".#'quit-window)....
49be0 20 20 20 20 20 20 20 28 63 75 72 72 65 6e 74 2d 6c 6f 63 61 6c 2d 6d 61 70 29 29 29 0a 20 20 20 .......(current-local-map)))....
49c00 20 20 20 20 20 28 75 6e 6c 65 73 73 20 68 65 61 64 65 72 2d 6c 69 6e 65 2d 66 6f 72 6d 61 74 0a .....(unless.header-line-format.
49c20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 68 65 61 64 65 72 2d 6c 69 6e 65 2d 66 6f 72 6d ..........(setq.header-line-form
49c40 61 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 75 62 73 74 69 74 75 74 65 2d 63 at.................(substitute-c
49c60 6f 6d 6d 61 6e 64 2d 6b 65 79 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f ommand-keys..................(co
49c80 6e 63 61 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 45 64 69 74 20 72 65 71 ncat..................."Edit.req
49ca0 75 65 73 74 3a 20 5c 5c 5b 72 65 61 64 2d 6f 6e 6c 79 2d 6d 6f 64 65 5d 2c 22 0a 20 20 20 20 20 uest:.\\[read-only-mode],"......
49cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 20 53 65 6e 64 20 72 65 71 75 65 73 74 3a 20 5c 5c 5b .............".Send.request:.\\[
49ce0 67 70 74 65 6c 2d 2d 63 6f 6e 74 69 6e 75 65 2d 71 75 65 72 79 5d 2c 22 0a 20 20 20 20 20 20 20 gptel--continue-query],"........
49d00 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 2d 77 69 6e 64 6f ...........".Quit:.\\[quit-windo
49d20 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 75 66 66 65 72 20 w]")))).........(display-buffer.
49d40 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 70 6c 61 79 2d 62 (current-buffer).gptel-display-b
49d60 75 66 66 65 72 2d 61 63 74 69 6f 6e 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d uffer-action)))))..(defun.gptel-
49d80 2d 63 6f 6e 74 69 6e 75 65 2d 71 75 65 72 79 20 28 29 0a 20 20 22 43 6f 6e 74 69 6e 75 65 20 73 -continue-query.()..."Continue.s
49da0 65 6e 64 69 6e 67 20 74 68 65 20 67 70 74 65 6c 20 71 75 65 72 79 20 64 69 73 70 6c 61 79 65 64 ending.the.gptel.query.displayed
49dc0 20 69 6e 20 74 68 69 73 20 62 75 66 66 65 72 2e 0a 0a 54 68 65 20 72 65 71 75 65 73 74 20 69 73 .in.this.buffer...The.request.is
49de0 20 63 6f 6e 74 69 6e 75 65 64 20 77 69 74 68 20 74 68 65 20 73 61 6d 65 20 70 61 72 61 6d 65 74 .continued.with.the.same.paramet
49e00 65 72 73 20 61 73 20 6f 72 69 67 69 6e 61 6c 6c 79 0a 73 70 65 63 69 66 69 65 64 2e 22 0a 20 20 ers.as.originally.specified."...
49e20 28 69 6e 74 65 72 61 63 74 69 76 65 20 6e 69 6c 20 6c 69 73 70 2d 64 61 74 61 2d 6d 6f 64 65 20 (interactive.nil.lisp-data-mode.
49e40 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 75 fundamental-mode)...(unless.(equ
49e60 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 22 al.(buffer-name)."*gptel-query*"
49e80 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 20 ).....(user-error."This.command.
49ea0 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 2d is.meant.for.use.in.a.gptel.dry-
49ec0 72 75 6e 20 62 75 66 66 65 72 2e 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
49ee0 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))....
49f00 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
49f20 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.
49f40 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).
49f60 20 20 20 20 20 20 20 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
49f80 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))...........
49fa0 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
49fc0 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
49fe0 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
4a000 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-
4a020 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.
4a040 64 61 74 61 29 0a 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 66 73 6d 2d 74 72 61 6e data)...........(gptel--fsm-tran
4a060 73 69 74 69 6f 6e 20 67 70 74 65 6c 2d 2d 66 73 6d 2d 6c 61 73 74 29 20 20 20 3b 49 4e 49 54 20 sition.gptel--fsm-last)...;INIT.
4a080 2d 3e 20 57 41 49 54 0a 20 20 20 20 20 20 20 20 20 20 28 71 75 69 74 2d 77 69 6e 64 6f 77 29 29 ->.WAIT...........(quit-window))
4a0a0 0a 20 20 20 20 20 20 28 65 72 72 6f 72 0a 20 20 20 20 20 20 20 28 75 73 65 72 2d 65 72 72 6f 72 .......(error........(user-error
4a0c0 20 22 43 61 6e 20 6e 6f 74 20 72 65 73 75 6d 65 20 72 65 71 75 65 73 74 3a 20 63 6f 75 6c 64 20 ."Can.not.resume.request:.could.
4a0e0 6e 6f 74 20 72 65 61 64 20 64 61 74 61 20 66 72 6f 6d 20 62 75 66 66 65 72 21 22 29 29 29 29 29 not.read.data.from.buffer!")))))
4a100 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 69 6e 73 65 72 74 2d 72 65 73 70 6f 6e 73 65 20 ..(defun.gptel--insert-response.
4a120 28 72 65 73 70 6f 6e 73 65 20 69 6e 66 6f 20 26 6f 70 74 69 6f 6e 61 6c 20 72 61 77 29 0a 20 20 (response.info.&optional.raw)...
4a140 22 49 6e 73 65 72 74 20 74 68 65 20 4c 4c 4d 20 52 45 53 50 4f 4e 53 45 20 69 6e 74 6f 20 74 68 "Insert.the.LLM.RESPONSE.into.th
4a160 65 20 67 70 74 65 6c 20 62 75 66 66 65 72 2e 0a 0a 49 4e 46 4f 20 69 73 20 61 20 70 6c 69 73 74 e.gptel.buffer...INFO.is.a.plist
4a180 20 63 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 .containing.information.relevant
4a1a0 20 74 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 .to.this.buffer..See.`gptel--url
4a1c0 2d 67 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 -get-response'.for.details...Opt
4a1e0 69 6f 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 ional.RAW.disables.text.properti
4a200 65 73 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 6c 65 74 2a 20 es.and.transformation."...(let*.
4a220 28 28 67 70 74 65 6c 2d 62 75 66 66 65 72 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a ((gptel-buffer.(plist-get.info.:
4a240 62 75 66 66 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 28 73 74 61 72 74 2d 6d 61 72 6b 65 72 20 buffer))..........(start-marker.
4a260 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 70 6f 73 69 74 69 6f 6e 29 29 0a 20 20 20 20 (plist-get.info.:position)).....
4a280 20 20 20 20 20 28 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 20 28 70 6c 69 73 74 2d 67 65 74 .....(tracking-marker.(plist-get
4a2a0 20 69 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 28 70 .info.:tracking-marker))).....(p
4a2c0 63 61 73 65 20 72 65 73 70 6f 6e 73 65 0a 20 20 20 20 20 20 28 28 70 72 65 64 20 73 74 72 69 6e case.response.......((pred.strin
4a2e0 67 70 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 52 65 73 70 6f 6e 73 65 20 74 65 78 gp)................;Response.tex
4a300 74 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 67 70 t........(with-current-buffer.gp
4a320 74 65 6c 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 74 72 61 63 6b 69 tel-buffer..........(when.tracki
4a340 6e 67 2d 6d 61 72 6b 65 72 20 20 20 20 20 20 20 20 20 20 20 3b 73 65 70 61 72 61 74 65 20 66 72 ng-marker...........;separate.fr
4a360 6f 6d 20 70 72 65 76 69 6f 75 73 20 72 65 73 70 6f 6e 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 om.previous.response............
4a380 28 73 65 74 71 20 72 65 73 70 6f 6e 73 65 20 28 63 6f 6e 63 61 74 20 67 70 74 65 6c 2d 72 65 73 (setq.response.(concat.gptel-res
4a3a0 70 6f 6e 73 65 2d 73 65 70 61 72 61 74 6f 72 20 72 65 73 70 6f 6e 73 65 29 29 29 0a 20 20 20 20 ponse-separator.response))).....
4a3c0 20 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 .....(save-excursion............
4a3e0 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 66 (with-current-buffer.(marker-buf
4a400 66 65 72 20 73 74 61 72 74 2d 6d 61 72 6b 65 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 fer.start-marker)..............(
4a420 67 6f 74 6f 2d 63 68 61 72 20 28 6f 72 20 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 20 73 74 goto-char.(or.tracking-marker.st
4a440 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 3b 3b 20 28 72 75 art-marker))..............;;.(ru
4a460 6e 2d 68 6f 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 n-hooks.'gptel-pre-response-hook
4a480 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 70 )..............(unless.(or.(bobp
4a4a0 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 0a 20 20 20 ).(plist-get.info.:in-place)....
4a4c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 6b 69 6e 67 2d 6d ......................tracking-m
4a4e0 61 72 6b 65 72 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 67 70 arker)................(insert.gp
4a500 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 20 20 tel-response-separator).........
4a520 20 20 20 20 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 6d 6f 64 65 0a 20 20 20 20 20 20 20 20 .......(when.gptel-mode.........
4a540 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 28 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 .........(insert.(gptel-response
4a560 2d 70 72 65 66 69 78 2d 73 74 72 69 6e 67 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -prefix-string)))...............
4a580 20 28 6d 6f 76 65 2d 6d 61 72 6b 65 72 20 73 74 61 72 74 2d 6d 61 72 6b 65 72 20 28 70 6f 69 6e .(move-marker.start-marker.(poin
4a5a0 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 72 61 77 0a 20 20 t)))..............(unless.raw...
4a5c0 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 72 61 6e 73 66 .............(when-let*.((transf
4a5e0 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 72 6d ormer.(plist-get.info.:transform
4a600 65 72 29 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 20 72 65 73 er)))..................(setq.res
4a620 70 6f 6e 73 65 20 28 66 75 6e 63 61 6c 6c 20 74 72 61 6e 73 66 6f 72 6d 65 72 20 72 65 73 70 6f ponse.(funcall.transformer.respo
4a640 6e 73 65 29 29 29 0a 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 nse)))................(add-text-
4a660 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 30 20 28 6c 65 properties.................0.(le
4a680 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 73 65 20 ngth.response).'(gptel.response.
4a6a0 66 72 6f 6e 74 2d 73 74 69 63 6b 79 20 28 67 70 74 65 6c 29 29 20 72 65 73 70 6f 6e 73 65 29 29 front-sticky.(gptel)).response))
4a6c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 72 65 73 70 6f 6e 73 65 29 0a ..............(insert.response).
4a6e0 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 74 72 .............(plist-put.info.:tr
4a700 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 20 28 73 65 74 71 20 74 72 61 63 6b 69 6e 67 2d 6d 61 72 acking-marker.(setq.tracking-mar
4a720 6b 65 72 20 28 70 6f 69 6e 74 2d 6d 61 72 6b 65 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 ker.(point-marker)))............
4a740 20 20 3b 3b 20 66 6f 72 20 75 6e 69 66 6f 72 6d 69 74 79 20 77 69 74 68 20 73 74 72 65 61 6d 69 ..;;.for.uniformity.with.streami
4a760 6e 67 20 72 65 73 70 6f 6e 73 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 2d 6d ng.responses..............(set-m
4a780 61 72 6b 65 72 2d 69 6e 73 65 72 74 69 6f 6e 2d 74 79 70 65 20 74 72 61 63 6b 69 6e 67 2d 6d 61 arker-insertion-type.tracking-ma
4a7a0 72 6b 65 72 20 74 29 29 29 29 29 0a 20 20 20 20 20 20 28 60 28 72 65 61 73 6f 6e 69 6e 67 20 2e rker.t))))).......(`(reasoning..
4a7c0 20 2c 74 65 78 74 29 0a 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 69 6e 63 6c .,text)........(when-let*.((incl
4a7e0 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 61 ude.(plist-get.info.:include-rea
4a800 73 6f 6e 69 6e 67 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 69 66 20 28 73 74 72 69 6e 67 70 20 soning)))..........(if.(stringp.
4a820 69 6e 63 6c 75 64 65 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 include)..............(with-curr
4a840 65 6e 74 2d 62 75 66 66 65 72 20 28 67 65 74 2d 62 75 66 66 65 72 2d 63 72 65 61 74 65 0a 20 20 ent-buffer.(get-buffer-create...
4a860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
4a880 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 61 73 6f 6e .(plist-get.info.:include-reason
4a8a0 69 6e 67 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 ing))................(save-excur
4a8c0 73 69 6f 6e 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 20 28 69 6e sion.(goto-char.(point-max)).(in
4a8e0 73 65 72 74 20 74 65 78 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 63 75 sert.text)))............(with-cu
4a900 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
4a920 74 2d 6d 61 72 6b 65 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 73 65 t-marker)..............(let.((se
4a940 70 61 72 61 74 6f 72 20 20 20 20 20 20 20 20 20 3b 53 65 70 61 72 61 74 65 20 66 72 6f 6d 20 72 parator.........;Separate.from.r
4a960 65 73 70 6f 6e 73 65 20 70 72 65 66 69 78 20 69 66 20 72 65 71 75 69 72 65 64 0a 20 20 20 20 20 esponse.prefix.if.required......
4a980 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 74 72 61 63 6b 69 6e ...............(and.(not.trackin
4a9a0 67 2d 6d 61 72 6b 65 72 29 20 67 70 74 65 6c 2d 6d 6f 64 65 0a 20 20 20 20 20 20 20 20 20 20 20 g-marker).gptel-mode............
4a9c0 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
4a9e0 78 2d 70 20 22 5c 6e 22 20 28 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 70 72 65 66 69 78 2d x-p."\n".(gptel-response-prefix-
4aa00 73 74 72 69 6e 67 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 string))).......................
4aa20 20 20 20 22 5c 6e 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 6c ..."\n"))....................(bl
4aa40 6f 63 6b 73 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 ocks.(if.(derived-mode-p.'org-mo
4aa60 64 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 de).............................
4aa80 20 20 20 60 28 22 23 2b 62 65 67 69 6e 5f 72 65 61 73 6f 6e 69 6e 67 5c 6e 22 20 2e 20 2c 28 63 ...`("#+begin_reasoning\n"...,(c
4aaa0 6f 6e 63 61 74 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 20 20 oncat."\n#+end_reasoning".......
4aac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
4aae0 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 72 65 73 70 6f .....................gptel-respo
4ab00 6e 73 65 2d 73 65 70 61 72 61 74 6f 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 nse-separator)).................
4ab20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 54 4f 44 4f 28 72 65 61 73 6f 6e 69 6e 67 29 20 .............;;.TODO(reasoning).
4ab40 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
4ab60 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 20 20 20 20 20 20 20 ead.............................
4ab80 20 28 63 6f 6e 73 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 60 60 60 20 72 65 61 73 6f 6e 69 6e .(cons.(propertize."```.reasonin
4aba0 67 5c 6e 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 g\n".'gptel.'ignore)............
4abc0 20 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.
4abe0 28 70 72 6f 70 65 72 74 69 7a 65 20 22 5c 6e 60 60 60 22 20 27 67 70 74 65 6c 20 27 69 67 6e 6f (propertize."\n```".'gptel.'igno
4ac00 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 20 20 re).............................
4ac20 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 65 ...............gptel-response-se
4ac40 70 61 72 61 74 6f 72 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 parator)))))................(if.
4ac60 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 20 20 20 20 20 (eq.include.'ignore)............
4ac80 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 20 ........(progn..................
4aca0 20 20 20 20 28 61 64 64 2d 74 65 78 74 2d 70 72 6f 70 65 72 74 69 65 73 0a 20 20 20 20 20 20 20 ....(add-text-properties........
4acc0 20 20 20 20 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 ...............0.(length.text).'
4ace0 28 67 70 74 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 (gptel.ignore.front-sticky.(gpte
4ad00 6c 29 29 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 l)).text)......................(
4ad20 67 70 74 65 6c 2d 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 gptel--insert-response..........
4ad40 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 28 63 61 72 20 62 6c 6f 63 6b 73 .............(concat.(car.blocks
4ad60 29 20 74 65 78 74 20 28 63 64 72 20 62 6c 6f 63 6b 73 29 29 20 69 6e 66 6f 20 74 29 29 0a 20 20 ).text.(cdr.blocks)).info.t))...
4ad80 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 65 ...............(gptel--insert-re
4ada0 73 70 6f 6e 73 65 20 28 63 6f 6e 63 61 74 20 73 65 70 61 72 61 74 6f 72 20 28 63 61 72 20 62 6c sponse.(concat.separator.(car.bl
4adc0 6f 63 6b 73 29 29 20 69 6e 66 6f 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ocks)).info.t)..................
4ade0 28 67 70 74 65 6c 2d 2d 69 6e 73 65 72 74 2d 72 65 73 70 6f 6e 73 65 20 74 65 78 74 20 69 6e 66 (gptel--insert-response.text.inf
4ae00 6f 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 2d 69 6e 73 65 o)..................(gptel--inse
4ae20 72 74 2d 72 65 73 70 6f 6e 73 65 20 28 63 64 72 20 62 6c 6f 63 6b 73 29 20 69 6e 66 6f 20 74 29 rt-response.(cdr.blocks).info.t)
4ae40 29 0a 20 20 20 20 20 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 )................(when.(derived-
4ae60 6d 6f 64 65 2d 70 20 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 mode-p.'org-mode).;fold.block...
4ae80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 ...............(save-excursion..
4aea0 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 6c ..................(goto-char.(pl
4aec0 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 0a ist-get.info.:tracking-marker)).
4aee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 61 72 63 68 2d 62 61 63 6b 77 ...................(search-backw
4af00 61 72 64 20 22 23 2b 65 6e 64 5f 72 65 61 73 6f 6e 69 6e 67 22 20 73 74 61 72 74 2d 6d 61 72 6b ard."#+end_reasoning".start-mark
4af20 65 72 20 74 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 er.t)....................(when.(
4af40 6c 6f 6f 6b 69 6e 67 2d 61 74 20 22 5e 23 5c 5c 2b 65 6e 64 5f 72 65 61 73 6f 6e 69 6e 67 22 29 looking-at."^#\\+end_reasoning")
4af60 0a 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 63 79 63 6c 65 ......................(org-cycle
4af80 29 29 29 29 29 29 29 29 29 0a 20 20 20 20 20 20 28 60 28 74 6f 6f 6c 2d 63 61 6c 6c 20 2e 20 2c ))))))))).......(`(tool-call...,
4afa0 74 6f 6f 6c 2d 63 61 6c 6c 73 29 0a 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 64 69 73 70 6c tool-calls)........(gptel--displ
4afc0 61 79 2d 74 6f 6f 6c 2d 63 61 6c 6c 73 20 74 6f 6f 6c 2d 63 61 6c 6c 73 20 69 6e 66 6f 29 29 0a ay-tool-calls.tool-calls.info)).
4afe0 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
4b000 75 6c 74 73 29 0a 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 64 69 73 70 6c 61 79 2d 74 6f 6f ults)........(gptel--display-too
4b020 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 29 29 29 l-results.tool-results.info)))))
4b040 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 63 72 65 61 74 65 2d 70 72 6f 6d 70 74 2d 62 75 ..(defun.gptel--create-prompt-bu
4b060 66 66 65 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 ffer.(&optional.prompt-end)..."R
4b080 65 74 75 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 eturn.a.buffer.with.the.conversa
4b0a0 74 69 6f 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 tion.prompt.to.be.sent...If.the.
4b0c0 72 65 67 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 region.is.active.limit.the.promp
4b0e0 74 20 74 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 t.text.to.the.region.contents..O
4b100 74 68 65 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 therwise.the.prompt.text.is.cons
4b120 74 72 75 63 74 65 64 20 66 72 6f 6d 20 74 68 65 20 63 6f 6e 74 65 6e 74 73 20 6f 66 20 74 68 65 tructed.from.the.contents.of.the
4b140 0a 63 75 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 .current.buffer.up.to.point,.or.
4b160 50 52 4f 4d 50 54 2d 45 4e 44 20 69 66 20 70 72 6f 76 69 64 65 64 2e 22 0a 20 20 28 73 61 76 65 PROMPT-END.if.provided."...(save
4b180 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 69 6f 6e -excursion.....(save-restriction
4b1a0 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 62 75 66 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 .......(let.((buf.(current-buffe
4b1c0 72 29 29 29 0a 20 20 20 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 28 28 64 65 r))).........(cond..........((de
4b1e0 72 69 76 65 64 2d 6d 6f 64 65 2d 70 20 27 6f 72 67 2d 6d 6f 64 65 29 0a 20 20 20 20 20 20 20 20 rived-mode-p.'org-mode).........
4b200 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 20 20 ..(require.'gptel-org)..........
4b220 20 3b 3b 20 41 6c 73 6f 20 68 61 6e 64 6c 65 73 20 72 65 67 69 6f 6e 73 20 69 6e 20 4f 72 67 20 .;;.Also.handles.regions.in.Org.
4b240 6d 6f 64 65 0a 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 6f 72 67 2d 2d 63 72 65 61 74 mode...........(gptel-org--creat
4b260 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 29 0a 20 20 20 e-prompt-buffer.prompt-end))....
4b280 20 20 20 20 20 20 28 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 ......((use-region-p)...........
4b2a0 28 6c 65 74 20 28 28 72 62 20 28 72 65 67 69 6f 6e 2d 62 65 67 69 6e 6e 69 6e 67 29 29 20 28 72 (let.((rb.(region-beginning)).(r
4b2c0 65 20 28 72 65 67 69 6f 6e 2d 65 6e 64 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 e.(region-end))).............(gp
4b2e0 74 65 6c 2d 2d 77 69 74 68 2d 62 75 66 66 65 72 2d 63 6f 70 79 20 62 75 66 20 72 62 20 72 65 0a tel--with-buffer-copy.buf.rb.re.
4b300 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 29 29 ..............(current-buffer)))
4b320 29 0a 20 20 20 20 20 20 20 20 20 28 74 20 28 75 6e 6c 65 73 73 20 70 72 6f 6d 70 74 2d 65 6e 64 )..........(t.(unless.prompt-end
4b340 20 28 73 65 74 71 20 70 72 6f 6d 70 74 2d 65 6e 64 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 .(setq.prompt-end.(point))).....
4b360 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 63 6f 70 79 ........(gptel--with-buffer-copy
4b380 20 62 75 66 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 70 72 6f 6d 70 74 2d 65 6e 64 0a 20 20 20 20 .buf.(point-min).prompt-end.....
4b3a0 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 29 29 29 29 29 ..........(current-buffer)))))))
4b3c0 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 63 72 65 61 74 65 2d 70 72 6f 6d 70 74 20 28 )..(defun.gptel--create-prompt.(
4b3e0 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 72 6e 20 &optional.prompt-end)..."Return.
4b400 61 20 66 75 6c 6c 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 20 70 72 6f 6d 70 74 20 66 72 6f 6d 20 a.full.conversation.prompt.from.
4b420 74 68 65 20 63 6f 6e 74 65 6e 74 73 20 6f 66 20 74 68 69 73 20 62 75 66 66 65 72 2e 0a 0a 49 66 the.contents.of.this.buffer...If
4b440 20 60 67 70 74 65 6c 2d 2d 6e 75 6d 2d 6d 65 73 73 61 67 65 73 2d 74 6f 2d 73 65 6e 64 27 20 69 .`gptel--num-messages-to-send'.i
4b460 73 20 73 65 74 2c 20 6c 69 6d 69 74 20 74 6f 20 74 68 61 74 20 6d 61 6e 79 0a 72 65 63 65 6e 74 s.set,.limit.to.that.many.recent
4b480 20 65 78 63 68 61 6e 67 65 73 2e 0a 0a 49 66 20 50 52 4f 4d 50 54 2d 45 4e 44 20 28 61 20 6d 61 .exchanges...If.PROMPT-END.(a.ma
4b4a0 72 6b 65 72 29 20 69 73 20 70 72 6f 76 69 64 65 64 2c 20 65 6e 64 20 74 68 65 20 70 72 6f 6d 70 rker).is.provided,.end.the.promp
4b4c0 74 20 63 6f 6e 74 65 6e 74 73 0a 74 68 65 72 65 2e 20 20 54 68 69 73 20 64 65 66 61 75 6c 74 73 t.contents.there...This.defaults
4b4e0 20 74 6f 20 28 70 6f 69 6e 74 29 2e 22 0a 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 .to.(point)."...(with-current-bu
4b500 66 66 65 72 20 28 67 70 74 65 6c 2d 2d 63 72 65 61 74 65 2d 70 72 6f 6d 70 74 2d 62 75 66 66 65 ffer.(gptel--create-prompt-buffe
4b520 72 20 70 72 6f 6d 70 74 2d 65 6e 64 29 0a 20 20 20 20 28 75 6e 77 69 6e 64 2d 70 72 6f 74 65 63 r.prompt-end).....(unwind-protec
4b540 74 0a 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 62 75 66 66 65 72 0a 20 t.........(gptel--parse-buffer..
4b560 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 28 61 6e 64 20 67 70 74 65 6c ........gptel-backend.(and.gptel
4b580 2d 2d 6e 75 6d 2d 6d 65 73 73 61 67 65 73 2d 74 6f 2d 73 65 6e 64 0a 20 20 20 20 20 20 20 20 20 --num-messages-to-send..........
4b5a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 2a 20 32 20 67 70 74 65 6c 2d 2d 6e ...................(*.2.gptel--n
4b5c0 75 6d 2d 6d 65 73 73 61 67 65 73 2d 74 6f 2d 73 65 6e 64 29 29 29 0a 20 20 20 20 20 20 28 6b 69 um-messages-to-send))).......(ki
4b5e0 6c 6c 2d 62 75 66 66 65 72 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29 29 29 29 0a 0a ll-buffer.(current-buffer)))))..
4b600 28 6d 61 6b 65 2d 6f 62 73 6f 6c 65 74 65 20 27 67 70 74 65 6c 2d 2d 63 72 65 61 74 65 2d 70 72 (make-obsolete.'gptel--create-pr
4b620 6f 6d 70 74 20 27 67 70 74 65 6c 2d 2d 63 72 65 61 74 65 2d 70 72 6f 6d 70 74 2d 62 75 66 66 65 ompt.'gptel--create-prompt-buffe
4b640 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 30 2e 39 2e 39 22 29 0a 0a 28 63 6c 2d 64 r................"0.9.9")..(cl-d
4b660 65 66 67 65 6e 65 72 69 63 20 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 62 75 66 66 65 72 20 28 62 efgeneric.gptel--parse-buffer.(b
4b680 61 63 6b 65 6e 64 20 6d 61 78 2d 65 6e 74 72 69 65 73 29 0a 20 20 22 50 61 72 73 65 20 63 75 72 ackend.max-entries)..."Parse.cur
4b6a0 72 65 6e 74 20 62 75 66 66 65 72 20 62 61 63 6b 77 61 72 64 73 20 66 72 6f 6d 20 70 6f 69 6e 74 rent.buffer.backwards.from.point
4b6c0 20 61 6e 64 20 72 65 74 75 72 6e 20 61 20 6c 69 73 74 20 6f 66 20 70 72 6f 6d 70 74 73 2e 0a 0a .and.return.a.list.of.prompts...
4b6e0 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 75 73 BACKEND.is.the.LLM.backend.in.us
4b700 65 2e 0a 0a 4d 41 58 2d 45 4e 54 52 49 45 53 20 69 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 e...MAX-ENTRIES.is.the.number.of
4b720 20 71 75 65 72 69 65 73 2f 72 65 73 70 6f 6e 73 65 73 20 74 6f 20 69 6e 63 6c 75 64 65 20 66 6f .queries/responses.to.include.fo
4b740 72 0a 63 6f 6e 74 65 78 62 74 2e 22 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 70 61 72 r.contexbt.")..(defun.gptel--par
4b760 73 65 2d 6c 69 73 74 2d 61 6e 64 2d 69 6e 73 65 72 74 20 28 70 72 6f 6d 70 74 73 29 0a 20 20 22 se-list-and-insert.(prompts)..."
4b780 49 6e 73 65 72 74 20 50 52 4f 4d 50 54 53 2c 20 61 20 6c 69 73 74 20 6f 66 20 6d 65 73 73 61 67 Insert.PROMPTS,.a.list.of.messag
4b7a0 65 73 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 50 72 6f es.into.the.current.buffer...Pro
4b7c0 70 65 72 74 69 7a 65 20 74 68 65 20 69 6e 73 65 72 74 69 6f 6e 73 20 69 6e 20 61 20 66 6f 72 6d pertize.the.insertions.in.a.form
4b7e0 61 74 20 67 70 74 65 6c 20 63 61 6e 20 70 61 72 73 65 20 69 6e 74 6f 20 61 0a 63 6f 6e 76 65 72 at.gptel.can.parse.into.a.conver
4b800 73 61 74 69 6f 6e 2e 0a 0a 50 52 4f 4d 50 54 53 20 69 73 20 74 79 70 69 63 61 6c 6c 79 20 74 68 sation...PROMPTS.is.typically.th
4b820 65 20 69 6e 70 75 74 20 74 6f 20 60 67 70 74 65 6c 2d 72 65 71 75 65 73 74 27 2c 20 65 69 74 68 e.input.to.`gptel-request',.eith
4b840 65 72 20 61 20 6c 69 73 74 20 6f 66 20 73 74 72 69 6e 67 73 0a 72 65 70 72 65 73 65 6e 74 69 6e er.a.list.of.strings.representin
4b860 67 20 61 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 20 77 69 74 68 20 61 6c 74 65 72 6e 61 74 65 20 g.a.conversation.with.alternate.
4b880 70 72 6f 6d 70 74 2f 72 65 73 70 6f 6e 73 65 20 74 75 72 6e 73 2c 20 6f 72 20 61 20 6c 69 73 74 prompt/response.turns,.or.a.list
4b8a0 20 6f 66 0a 6c 69 73 74 73 20 77 69 74 68 20 65 78 70 6c 69 63 69 74 20 72 6f 6c 65 73 20 28 70 .of.lists.with.explicit.roles.(p
4b8c0 72 6f 6d 70 74 2f 72 65 73 70 6f 6e 73 65 2f 74 6f 6f 6c 29 2e 20 20 53 65 65 20 74 68 65 20 64 rompt/response/tool)...See.the.d
4b8e0 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 0a 60 67 70 74 65 6c 2d 72 65 71 75 65 73 74 27 20 ocumentation.of.`gptel-request'.
4b900 66 6f 72 20 74 68 65 20 6c 61 74 74 65 72 2e 22 0a 20 20 28 69 66 20 28 73 74 72 69 6e 67 70 20 for.the.latter."...(if.(stringp.
4b920 28 63 61 72 20 70 72 6f 6d 70 74 73 29 29 20 20 20 20 20 20 20 20 20 3b 20 53 69 6d 70 6c 65 20 (car.prompts)).........;.Simple.
4b940 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 20 20 20 28 63 format,.list.of.strings.......(c
4b960 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 73 0a 20 20 20 20 20 l-loop.for.text.in.prompts......
4b980 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 72 65 73 70 6f 6e 73 65 20 3d 20 6e 69 6c 20 74 68 65 ..........for.response.=.nil.the
4b9a0 6e 20 28 6e 6f 74 20 72 65 73 70 6f 6e 73 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 n.(not.response)................
4b9c0 77 68 65 6e 20 74 65 78 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 72 65 73 70 when.text................if.resp
4b9e0 6f 6e 73 65 0a 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 20 67 onse................do.(insert.g
4ba00 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 20 20 20 20 20 20 ptel-response-separator.........
4ba20 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 74 65 ..................(propertize.te
4ba40 78 74 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 20 xt.'gptel.'response)............
4ba60 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 65 ...............gptel-response-se
4ba80 70 61 72 61 74 6f 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 64 6f 20 parator)................else.do.
4baa0 28 69 6e 73 65 72 74 20 74 65 78 74 29 29 0a 20 20 20 20 28 64 6f 6c 69 73 74 20 28 65 6e 74 72 (insert.text)).....(dolist.(entr
4bac0 79 20 70 72 6f 6d 70 74 73 29 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 41 64 76 61 6e 63 65 y.prompts).............;.Advance
4bae0 64 20 66 6f 72 6d 61 74 2c 20 6c 69 73 74 20 6f 66 20 6c 69 73 74 73 0a 20 20 20 20 20 20 28 70 d.format,.list.of.lists.......(p
4bb00 63 61 73 65 20 65 6e 74 72 79 0a 20 20 20 20 20 20 20 20 28 60 28 70 72 6f 6d 70 74 20 2e 20 2c case.entry.........(`(prompt...,
4bb20 6d 73 67 29 20 28 69 6e 73 65 72 74 20 28 6f 72 20 28 63 61 72 2d 73 61 66 65 20 6d 73 67 29 20 msg).(insert.(or.(car-safe.msg).
4bb40 6d 73 67 29 29 29 0a 20 20 20 20 20 20 20 20 28 60 28 72 65 73 70 6f 6e 73 65 20 2e 20 2c 6d 73 msg))).........(`(response...,ms
4bb60 67 29 0a 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 g)..........(insert.gptel-respon
4bb80 73 65 2d 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 se-separator..................(p
4bba0 72 6f 70 65 72 74 69 7a 65 20 28 6f 72 20 28 63 61 72 2d 73 61 66 65 20 6d 73 67 29 20 6d 73 67 ropertize.(or.(car-safe.msg).msg
4bbc0 29 20 27 67 70 74 65 6c 20 27 72 65 73 70 6f 6e 73 65 29 29 29 0a 20 20 20 20 20 20 20 20 28 60 ).'gptel.'response))).........(`
4bbe0 28 74 6f 6f 6c 20 2e 20 2c 63 61 6c 6c 29 0a 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 (tool...,call)..........(insert.
4bc00 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 20 20 20 20 20 gptel-response-separator........
4bc20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 0a 20 20 20 20 20 20 20 20 20 20 ..........(propertize...........
4bc40 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 20 20 20 ........(concat.................
4bc60 20 20 20 22 28 3a 6e 61 6d 65 20 22 20 28 70 6c 69 73 74 2d 67 65 74 20 63 61 6c 6c 20 3a 6e 61 ..."(:name.".(plist-get.call.:na
4bc80 6d 65 29 20 22 20 3a 61 72 67 73 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 me).".:args."...................
4bca0 20 28 70 72 69 6e 31 2d 74 6f 2d 73 74 72 69 6e 67 20 28 70 6c 69 73 74 2d 67 65 74 20 63 61 6c .(prin1-to-string.(plist-get.cal
4bcc0 6c 20 3a 61 72 67 73 29 29 20 22 29 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 l.:args)).")\n\n"...............
4bce0 20 20 20 20 20 28 70 6c 69 73 74 2d 67 65 74 20 63 61 6c 6c 20 3a 72 65 73 75 6c 74 29 29 0a 20 .....(plist-get.call.:result))..
4bd00 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 6c 20 2e .................'gptel.`(tool..
4bd20 20 2c 28 70 6c 69 73 74 2d 67 65 74 20 63 61 6c 6c 20 3a 69 64 29 29 29 29 29 29 29 29 29 0a 0a .,(plist-get.call.:id)))))))))..
4bd40 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 73 65 2d 6c 69 73 74 (cl-defgeneric.gptel--parse-list
4bd60 20 28 62 61 63 6b 65 6e 64 20 70 72 6f 6d 70 74 2d 6c 69 73 74 29 0a 20 20 22 50 61 72 73 65 20 .(backend.prompt-list)..."Parse.
4bd80 50 52 4f 4d 50 54 2d 4c 49 53 54 20 61 6e 64 20 72 65 74 75 72 6e 20 61 20 6c 69 73 74 20 6f 66 PROMPT-LIST.and.return.a.list.of
4bda0 20 70 72 6f 6d 70 74 73 20 73 75 69 74 61 62 6c 65 20 66 6f 72 0a 42 41 43 4b 45 4e 44 2e 0a 0a .prompts.suitable.for.BACKEND...
4bdc0 50 52 4f 4d 50 54 2d 4c 49 53 54 20 69 73 20 69 6e 74 65 72 70 72 65 74 65 64 20 61 73 20 61 20 PROMPT-LIST.is.interpreted.as.a.
4bde0 63 6f 6e 76 65 72 73 61 74 69 6f 6e 2c 20 69 2e 65 2e 20 61 6e 20 61 6c 74 65 72 6e 61 74 69 6e conversation,.i.e..an.alternatin
4be00 67 0a 73 65 72 69 65 73 20 6f 66 20 75 73 65 72 20 70 72 6f 6d 70 74 73 20 61 6e 64 20 4c 4c 4d g.series.of.user.prompts.and.LLM
4be20 20 72 65 73 70 6f 6e 73 65 73 2e 20 20 54 68 65 20 72 65 74 75 72 6e 65 64 20 73 74 72 75 63 74 .responses...The.returned.struct
4be40 75 72 65 0a 69 73 20 73 75 69 74 61 62 6c 65 20 66 6f 72 20 69 6e 63 6c 75 64 69 6e 67 20 69 6e ure.is.suitable.for.including.in
4be60 20 74 68 65 20 72 65 71 75 65 73 74 20 70 61 79 6c 6f 61 64 2e 0a 0a 42 41 43 4b 45 4e 44 20 69 .the.request.payload...BACKEND.i
4be80 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 22 29 0a 0a 28 63 6c s.the.LLM.backend.in.use.")..(cl
4bea0 2d 64 65 66 67 65 6e 65 72 69 63 20 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 6d 65 64 69 61 2d 6c -defgeneric.gptel--parse-media-l
4bec0 69 6e 6b 73 20 28 6d 6f 64 65 20 62 65 67 20 65 6e 64 29 0a 20 20 22 46 69 6e 64 20 6d 65 64 69 inks.(mode.beg.end)..."Find.medi
4bee0 61 20 6c 69 6e 6b 73 20 62 65 74 77 65 65 6e 20 42 45 47 20 61 6e 64 20 45 4e 44 2e 0a 0a 4d 4f a.links.between.BEG.and.END...MO
4bf00 44 45 20 69 73 20 74 68 65 20 6d 61 6a 6f 72 2d 6d 6f 64 65 20 6f 66 20 74 68 65 20 62 75 66 66 DE.is.the.major-mode.of.the.buff
4bf20 65 72 2e 0a 0a 52 65 74 75 72 6e 73 20 61 20 70 6c 69 73 74 20 77 68 65 72 65 20 65 61 63 68 20 er...Returns.a.plist.where.each.
4bf40 65 6e 74 72 79 20 69 73 20 6f 66 20 74 68 65 20 66 6f 72 6d 0a 20 20 28 3a 74 65 78 74 20 5c 22 entry.is.of.the.form...(:text.\"
4bf60 73 6f 6d 65 20 74 65 78 74 5c 22 29 0a 6f 72 0a 20 20 28 3a 6d 65 64 69 61 20 5c 22 6d 65 64 69 some.text\").or...(:media.\"medi
4bf80 61 20 75 72 69 20 6f 72 20 66 69 6c 65 20 70 61 74 68 5c 22 29 2e 22 0a 20 20 28 69 67 6e 6f 72 a.uri.or.file.path\")."...(ignor
4bfa0 65 20 6d 6f 64 65 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 e.mode).........................
4bfc0 3b 62 79 74 65 2d 63 6f 6d 70 69 6c 65 72 0a 20 20 28 6c 69 73 74 20 60 28 3a 74 65 78 74 20 2c ;byte-compiler...(list.`(:text.,
4bfe0 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.
4c000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 65 67 20 65 6e 64 29 29 29 29 0a 0a 28 ..................beg.end))))..(
4c020 64 65 66 76 61 72 20 6d 61 72 6b 64 6f 77 6e 2d 72 65 67 65 78 2d 6c 69 6e 6b 2d 69 6e 6c 69 6e defvar.markdown-regex-link-inlin
4c040 65 29 0a 28 64 65 66 76 61 72 20 6d 61 72 6b 64 6f 77 6e 2d 72 65 67 65 78 2d 61 6e 67 6c 65 2d e).(defvar.markdown-regex-angle-
4c060 75 72 69 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 6d 61 72 6b 64 6f 77 6e 2d uri).(declare-function.markdown-
4c080 6c 69 6e 6b 2d 61 74 2d 70 6f 73 20 22 6d 61 72 6b 64 6f 77 6e 2d 6d 6f 64 65 22 29 0a 28 64 65 link-at-pos."markdown-mode").(de
4c0a0 63 6c 61 72 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 clare-function.mailcap-file-name
4c0c0 2d 74 6f 2d 6d 69 6d 65 2d 74 79 70 65 20 22 6d 61 69 6c 63 61 70 22 29 0a 0a 28 63 6c 2d 64 65 -to-mime-type."mailcap")..(cl-de
4c0e0 66 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 6d 65 64 69 61 2d 6c 69 6e 6b 73 fmethod.gptel--parse-media-links
4c100 20 28 28 5f 6d 6f 64 65 20 28 65 71 6c 20 27 6d 61 72 6b 64 6f 77 6e 2d 6d 6f 64 65 29 29 20 62 .((_mode.(eql.'markdown-mode)).b
4c120 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 63 74 69 6f 6e eg.end)..."Parse.text.and.action
4c140 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 45 4e 44 2e 0a able.links.between.BEG.and.END..
4c160 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 20 28 28 3a 74 .Return.a.list.of.the.form..((:t
4c180 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.\"/
4c1a0 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
4c1c0 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\")
4c1e0 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 65 72 20 70 72 ).for.inclusion.into.the.user.pr
4c200 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 22 0a 20 20 28 ompt.for.the.gptel.request."...(
4c220 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 20 20 20 20 20 require.'mailcap)...............
4c240 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 68 6f 77 0a 20 .....;FIXME.Avoid.this.somehow..
4c260 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 69 6d 65 29 29 .(let.((parts).(from-pt).(mime))
4c280 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 73 65 74 71 .....(save-excursion.......(setq
4c2a0 20 66 72 6f 6d 2d 70 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 .from-pt.(goto-char.beg)).......
4c2c0 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 0a 20 20 20 20 20 20 (while.(re-search-forward.......
4c2e0 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 22 5c 5c 28 3f 3a 22 20 6d 61 72 6b 64 6f 77 6e ........(concat."\\(?:".markdown
4c300 2d 72 65 67 65 78 2d 6c 69 6e 6b 2d 69 6e 6c 69 6e 65 20 22 5c 5c 7c 22 0a 20 20 20 20 20 20 20 -regex-link-inline."\\|"........
4c320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 61 72 6b 64 6f 77 6e 2d 72 65 67 65 78 2d 61 6e ...............markdown-regex-an
4c340 67 6c 65 2d 75 72 69 20 22 5c 5c 29 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 gle-uri."\\)")...............end
4c360 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 20 .t).........(setq.mime.nil).....
4c380 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 6c 69 6e 6b 2d 61 74 2d 70 74 20 28 6d 61 72 ....(when-let*.((link-at-pt.(mar
4c3a0 6b 64 6f 77 6e 2d 6c 69 6e 6b 2d 61 74 2d 70 6f 73 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 kdown-link-at-pos.(point))).....
4c3c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 67 70 74 65 6c 2d 2d 6c 69 6e 6b 2d 73 74 ................((gptel--link-st
4c3e0 61 6e 64 61 6c 6f 6e 65 2d 70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 andalone-p......................
4c400 20 28 63 61 72 20 6c 69 6e 6b 2d 61 74 2d 70 74 29 20 28 63 61 64 72 20 6c 69 6e 6b 2d 61 74 2d .(car.link-at-pt).(cadr.link-at-
4c420 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 20 28 70 61 74 68 20 pt))).....................(path.
4c440 28 6e 74 68 20 33 20 6c 69 6e 6b 2d 61 74 2d 70 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 (nth.3.link-at-pt)).............
4c460 20 20 20 20 20 20 20 20 28 70 61 74 68 20 28 73 74 72 69 6e 67 2d 72 65 6d 6f 76 65 2d 70 72 65 ........(path.(string-remove-pre
4c480 66 69 78 20 22 66 69 6c 65 3a 2f 2f 22 20 70 61 74 68 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 fix."file://".path)))...........
4c4a0 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 28 28 73 65 71 2d 73 6f 6d 65 20 28 6c 61 6d (cond............((seq-some.(lam
4c4c0 62 64 61 20 28 70 29 20 28 73 74 72 69 6e 67 2d 70 72 65 66 69 78 2d 70 20 70 20 70 61 74 68 29 bda.(p).(string-prefix-p.p.path)
4c4e0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 28 22 68 74 74 70 73 ).......................'("https
4c500 3a 22 20 22 68 74 74 70 3a 22 20 22 66 74 70 3a 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 :"."http:"."ftp:")).............
4c520 3b 3b 20 43 6f 6c 6c 65 63 74 20 74 65 78 74 20 75 70 20 74 6f 20 74 68 69 73 20 69 6d 61 67 65 ;;.Collect.text.up.to.this.image
4c540 2c 20 61 6e 64 20 63 6f 6c 6c 65 63 74 20 74 68 69 73 20 69 6d 61 67 65 20 75 72 6c 0a 20 20 20 ,.and.collect.this.image.url....
4c560 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 63 61 70 .........(when.(gptel--model-cap
4c580 61 62 6c 65 2d 70 20 27 75 72 6c 29 20 3b 20 46 49 58 4d 45 20 54 68 69 73 20 69 73 20 6e 6f 74 able-p.'url).;.FIXME.This.is.not
4c5a0 20 61 20 67 6f 6f 64 20 70 6c 61 63 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .a.good.place...................
4c5c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 74 6f 20 63 68 65 63 6b ......................;.to.check
4c5e0 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 20 20 20 20 20 .for.url.capability!............
4c600 20 20 20 28 6c 65 74 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 ...(let.((text.(buffer-substring
4c620 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 20 66 72 6f 6d 2d 70 74 20 28 63 61 72 20 6c 69 6e 6b -no-properties.from-pt.(car.link
4c640 2d 61 74 2d 70 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 -at-pt)))).................(unle
4c660 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 28 ss.(string-blank-p.text).(push.(
4c680 6c 69 73 74 20 3a 74 65 78 74 20 74 65 78 74 29 20 70 61 72 74 73 29 29 0a 20 20 20 20 20 20 20 list.:text.text).parts))........
4c6a0 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 6c 69 73 74 20 3a 75 72 6c 20 70 61 74 68 20 3a .........(push.(list.:url.path.:
4c6c0 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 20 20 mime.mime).parts)...............
4c6e0 20 20 28 73 65 74 71 20 66 72 6f 6d 2d 70 74 20 28 63 61 64 72 20 6c 69 6e 6b 2d 61 74 2d 70 74 ..(setq.from-pt.(cadr.link-at-pt
4c700 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 28 66 69 6c 65 2d 72 65 61 64 61 62 6c 65 )))))............((file-readable
4c720 2d 70 20 70 61 74 68 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 6f 72 20 28 6e 6f -p.path).............(if.(or.(no
4c740 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))..
4c760 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 6d 69 ...................(and.(setq.mi
4c780 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 74 79 me.(mailcap-file-name-to-mime-ty
4c7a0 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 20 20 pe.path)).......................
4c7c0 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 65 2d 70 20 ...(gptel--model-mime-capable-p.
4c7e0 6d 69 6d 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 43 6f 6c 6c 65 mime))).................;;.Colle
4c800 63 74 20 74 65 78 74 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 ct.text.up.to.this.image,.and.co
4c820 6c 6c 65 63 74 20 74 68 69 73 20 69 6d 61 67 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 llect.this.image................
4c840 20 28 6c 65 74 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 6e .(let.((text.(buffer-substring-n
4c860 6f 2d 70 72 6f 70 65 72 74 69 65 73 20 66 72 6f 6d 2d 70 74 20 28 63 61 72 20 6c 69 6e 6b 2d 61 o-properties.from-pt.(car.link-a
4c880 74 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 28 75 6e 6c 65 t-pt))))...................(unle
4c8a0 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 28 ss.(string-blank-p.text).(push.(
4c8c0 6c 69 73 74 20 3a 74 65 78 74 20 74 65 78 74 29 20 70 61 72 74 73 29 29 0a 20 20 20 20 20 20 20 list.:text.text).parts))........
4c8e0 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 74 20 ...........(push.(if.mime.(list.
4c900 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 3a 74 :media.path.:mime.mime).(list.:t
4c920 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 20 20 extfile.path)).parts)...........
4c940 20 20 20 20 20 20 20 20 28 73 65 74 71 20 66 72 6f 6d 2d 70 74 20 28 63 61 64 72 20 6c 69 6e 6b ........(setq.from-pt.(cadr.link
4c960 2d 61 74 2d 70 74 29 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 -at-pt)))...............(message
4c980 20 22 49 67 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 ."Ignoring.unsupported.binary.fi
4c9a0 6c 65 20 5c 22 25 73 5c 22 2e 22 20 70 61 74 68 29 29 29 29 29 29 29 0a 20 20 20 20 28 75 6e 6c le.\"%s\".".path))))))).....(unl
4c9c0 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 28 70 75 73 68 20 ess.(=.from-pt.end).......(push.
4c9e0 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 72 69 6e 67 2d 6e 6f (list.:text.(buffer-substring-no
4ca00 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 20 70 61 72 74 73 29 -properties.from-pt.end)).parts)
4ca20 29 0a 20 20 20 20 28 6e 72 65 76 65 72 73 65 20 70 61 72 74 73 29 29 29 0a 0a 28 63 6c 2d 64 65 ).....(nreverse.parts)))..(cl-de
4ca40 66 67 65 6e 65 72 69 63 20 67 70 74 65 6c 2d 2d 77 72 61 70 2d 75 73 65 72 2d 70 72 6f 6d 70 74 fgeneric.gptel--wrap-user-prompt
4ca60 20 28 62 61 63 6b 65 6e 64 20 5f 70 72 6f 6d 70 74 73 29 0a 20 20 22 57 72 61 70 20 74 68 65 20 .(backend._prompts)..."Wrap.the.
4ca80 6c 61 73 74 20 70 72 6f 6d 70 74 20 69 6e 20 50 52 4f 4d 50 54 53 20 77 69 74 68 20 67 70 74 65 last.prompt.in.PROMPTS.with.gpte
4caa0 6c 27 73 20 63 6f 6e 74 65 78 74 2e 0a 0a 50 52 4f 4d 50 54 53 20 69 73 20 61 20 73 74 72 75 63 l's.context...PROMPTS.is.a.struc
4cac0 74 75 72 65 20 61 73 20 72 65 74 75 72 6e 65 64 20 62 79 20 60 67 70 74 65 6c 2d 2d 70 61 72 73 ture.as.returned.by.`gptel--pars
4cae0 65 2d 62 75 66 66 65 72 27 2e 0a 54 79 70 69 63 61 6c 6c 79 20 74 68 69 73 20 69 73 20 61 20 6c e-buffer'..Typically.this.is.a.l
4cb00 69 73 74 20 6f 66 20 70 6c 69 73 74 73 2e 0a 0a 42 41 43 4b 45 4e 44 20 69 73 20 74 68 65 20 67 ist.of.plists...BACKEND.is.the.g
4cb20 70 74 65 6c 20 62 61 63 6b 65 6e 64 20 69 6e 20 75 73 65 2e 22 0a 20 20 28 64 69 73 70 6c 61 79 ptel.backend.in.use."...(display
4cb40 2d 77 61 72 6e 69 6e 67 0a 20 20 20 27 28 67 70 74 65 6c 20 63 6f 6e 74 65 78 74 29 0a 20 20 20 -warning....'(gptel.context)....
4cb60 28 66 6f 72 6d 61 74 20 22 43 6f 6e 74 65 78 74 20 73 75 70 70 6f 72 74 20 6e 6f 74 20 69 6d 70 (format."Context.support.not.imp
4cb80 6c 65 6d 65 6e 74 65 64 20 66 6f 72 20 62 61 63 6b 65 6e 64 20 25 73 2c 20 69 67 6e 6f 72 69 6e lemented.for.backend.%s,.ignorin
4cba0 67 20 63 6f 6e 74 65 78 74 22 0a 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 62 61 63 g.context"............(gptel-bac
4cbc0 6b 65 6e 64 2d 6e 61 6d 65 20 62 61 63 6b 65 6e 64 29 29 29 29 0a 0a 28 63 6c 2d 64 65 66 67 65 kend-name.backend))))..(cl-defge
4cbe0 6e 65 72 69 63 20 67 70 74 65 6c 2d 2d 72 65 71 75 65 73 74 2d 64 61 74 61 20 28 62 61 63 6b 65 neric.gptel--request-data.(backe
4cc00 6e 64 20 70 72 6f 6d 70 74 73 29 0a 20 20 22 47 65 6e 65 72 61 74 65 20 61 20 70 6c 69 73 74 20 nd.prompts)..."Generate.a.plist.
4cc20 6f 66 20 61 6c 6c 20 64 61 74 61 20 66 6f 72 20 61 6e 20 4c 4c 4d 20 71 75 65 72 79 2e 0a 0a 42 of.all.data.for.an.LLM.query...B
4cc40 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 75 73 65 ACKEND.is.the.LLM.backend.in.use
4cc60 2e 0a 0a 50 52 4f 4d 50 54 53 20 69 73 20 74 68 65 20 70 6c 69 73 74 20 6f 66 20 70 72 65 76 69 ...PROMPTS.is.the.plist.of.previ
4cc80 6f 75 73 20 75 73 65 72 20 71 75 65 72 69 65 73 20 61 6e 64 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 ous.user.queries.and.LLM.respons
4cca0 65 73 2e 22 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 75 72 6c 2d 67 65 74 2d 72 65 73 es.")..(defun.gptel--url-get-res
4ccc0 70 6f 6e 73 65 20 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 ponse.(fsm)..."Fetch.response.to
4cce0 20 70 72 6f 6d 70 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 .prompt.in.state.FSM.from.the.LL
4cd00 4d 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 65 20 64 72 69 M...FSM.is.the.state.machine.dri
4cd20 76 69 6e 67 20 74 68 69 73 20 72 65 71 75 65 73 74 2e 20 20 49 74 73 20 49 4e 46 4f 20 73 6c 6f ving.this.request...Its.INFO.slo
4cd40 74 0a 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 64 61 74 61 20 72 65 71 75 69 72 65 64 20 66 6f 72 t.contains.the.data.required.for
4cd60 20 73 65 74 74 69 6e 67 20 75 70 20 74 68 65 20 72 65 71 75 65 73 74 2e 20 20 49 4e 46 4f 20 69 .setting.up.the.request...INFO.i
4cd80 73 20 61 0a 70 6c 69 73 74 20 77 69 74 68 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 6b 65 79 s.a.plist.with.the.following.key
4cda0 73 2c 20 61 6d 6f 6e 67 20 6f 74 68 65 72 73 3a 0a 2d 20 3a 64 61 74 61 20 20 20 20 20 28 74 68 s,.among.others:.-.:data.....(th
4cdc0 65 20 64 61 74 61 20 62 65 69 6e 67 20 73 65 6e 74 29 0a 2d 20 3a 62 75 66 66 65 72 20 20 20 28 e.data.being.sent).-.:buffer...(
4cde0 74 68 65 20 67 70 74 65 6c 20 62 75 66 66 65 72 29 0a 2d 20 3a 70 6f 73 69 74 69 6f 6e 20 28 6d the.gptel.buffer).-.:position.(m
4ce00 61 72 6b 65 72 20 61 74 20 77 68 69 63 68 20 74 6f 20 69 6e 73 65 72 74 20 74 68 65 20 72 65 73 arker.at.which.to.insert.the.res
4ce20 70 6f 6e 73 65 29 2e 0a 2d 20 3a 63 61 6c 6c 62 61 63 6b 20 28 6f 70 74 69 6f 6e 61 6c 2c 20 74 ponse)..-.:callback.(optional,.t
4ce40 68 65 20 72 65 71 75 65 73 74 20 63 61 6c 6c 62 61 63 6b 29 0a 0a 43 61 6c 6c 20 43 41 4c 4c 42 he.request.callback)..Call.CALLB
4ce60 41 43 4b 20 77 69 74 68 20 74 68 65 20 72 65 73 70 6f 6e 73 65 20 61 6e 64 20 49 4e 46 4f 20 61 ACK.with.the.response.and.INFO.a
4ce80 66 74 65 72 77 61 72 64 73 2e 20 20 49 66 20 6f 6d 69 74 74 65 64 0a 74 68 65 20 72 65 73 70 6f fterwards...If.omitted.the.respo
4cea0 6e 73 65 20 69 73 20 69 6e 73 65 72 74 65 64 20 69 6e 74 6f 20 74 68 65 20 63 75 72 72 65 6e 74 nse.is.inserted.into.the.current
4cec0 20 62 75 66 66 65 72 20 61 66 74 65 72 20 70 6f 69 6e 74 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 .buffer.after.point."...(let*.((
4cee0 69 6e 68 69 62 69 74 2d 6d 65 73 73 61 67 65 20 74 29 0a 20 20 20 20 20 20 20 20 20 28 6d 65 73 inhibit-message.t)..........(mes
4cf00 73 61 67 65 2d 6c 6f 67 2d 6d 61 78 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 28 75 72 6c 2d sage-log-max.nil)..........(url-
4cf20 72 65 71 75 65 73 74 2d 6d 65 74 68 6f 64 20 22 50 4f 53 54 22 29 0a 20 20 20 20 20 20 20 20 20 request-method."POST")..........
4cf40 28 75 72 6c 2d 72 65 71 75 65 73 74 2d 65 78 74 72 61 2d 68 65 61 64 65 72 73 0a 20 20 20 20 20 (url-request-extra-headers......
4cf60 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 65 22 20 2e .....(append.'(("Content-Type"..
4cf80 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 20 20 20 20 ."application/json"))...........
4cfa0 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 28 67 70 74 ........(when-let*.((header.(gpt
4cfc0 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 65 6e 64 29 el-backend-header.gptel-backend)
4cfe0 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 66 75 6e 63 )).....................(if.(func
4d000 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 20 20 20 20 tionp.header)...................
4d020 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 72 29 29 29 ......(funcall.header).header)))
4d040 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 66 6f )..........(info.(gptel-fsm-info
4d060 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 74 2d .fsm))..........(backend.(plist-
4d080 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 63 61 get.info.:backend))..........(ca
4d0a0 6c 6c 62 61 63 6b 20 28 6f 72 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 63 61 6c 6c llback.(or.(plist-get.info.:call
4d0c0 62 61 63 6b 29 20 3b 69 66 20 6e 6f 74 20 74 68 65 20 66 69 72 73 74 20 72 75 6e 0a 20 20 20 20 back).;if.not.the.first.run.....
4d0e0 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 2d 69 6e 73 65 ...................#'gptel--inse
4d100 72 74 2d 72 65 73 70 6f 6e 73 65 29 29 20 3b 64 65 66 61 75 6c 74 20 63 61 6c 6c 62 61 63 6b 0a rt-response)).;default.callback.
4d120 20 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 0a 20 20 20 20 20 .........(url-request-data......
4d140 20 20 20 20 20 28 65 6e 63 6f 64 65 2d 63 6f 64 69 6e 67 2d 73 74 72 69 6e 67 0a 20 20 20 20 20 .....(encode-coding-string......
4d160 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 69 73 74 ......(gptel--json-encode.(plist
4d180 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 20 27 75 74 -get.info.:data))............'ut
4d1a0 66 2d 38 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 6e 74 2d 62 f-8))).....(when.(with-current-b
4d1c0 75 66 66 65 72 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 62 75 66 66 65 72 29 0a 20 uffer.(plist-get.info.:buffer)..
4d1e0 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 65 2d 70 20 ...........(and.(derived-mode-p.
4d200 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 67 70 74 65 'org-mode)..................gpte
4d220 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 20 20 20 28 l-org-convert-response)).......(
4d240 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 23 27 67 70 plist-put.info.:transformer.#'gp
4d260 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 0a 20 20 20 tel--convert-markdown->org))....
4d280 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 61 6c 6c 62 .(plist-put.info.:callback.callb
4d2a0 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 65 6c 20 20 ack).....(when.gptel-log-level..
4d2c0 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 28 77 68 65 .............;logging.......(whe
4d2e0 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 29 0a 20 20 n.(eq.gptel-log-level.'debug)...
4d300 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 6f 6e 2d 65 ......(gptel--log.(gptel--json-e
4d320 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 6d 61 70 63 ncode......................(mapc
4d340 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 65 72 6e 20 ar.(lambda.(pair).(cons.(intern.
4d360 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 20 20 20 20 (car.pair)).(cdr.pair)))........
4d380 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 71 75 65 73 ......................url-reques
4d3a0 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 20 20 20 20 t-extra-headers))...............
4d3c0 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 20 20 20 20 ......"request.headers")).......
4d3e0 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 20 22 72 65 (gptel--log.url-request-data."re
4d400 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 63 2d 62 75 quest.body")).....(let.((proc-bu
4d420 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 6c 65 74 20 f............(url-retrieve.(let.
4d440 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 2d 75 72 6c ((backend-url.(gptel-backend-url
4d460 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 20 20 .gptel-backend)))...............
4d480 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 66 75 6e 63 74 69 6f 6e 70 20 62 61 63 6b .............(if.(functionp.back
4d4a0 65 6e 64 2d 75 72 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 end-url)........................
4d4c0 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 6c ........(with-current-buffer.(pl
4d4e0 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 20 ist-get.info.:buffer)...........
4d500 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.
4d520 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 20 20 20 20 backend-url))...................
4d540 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 20 20 20 20 ...........backend-url))........
4d560 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 29 0a 20 20 ..................(lambda.(_)...
4d580 20 20 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 2d 62 75 .........................(set-bu
4d5a0 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 20 20 20 20 ffer-multibyte.t)...............
4d5c0 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 65 2d 63 6f .............(set-buffer-file-co
4d5e0 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 20 20 20 20 ding-system.'utf-8-unix)........
4d600 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 65 74 20 28 ....................(pcase-let.(
4d620 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 74 74 70 2d (`(,response.,http-status.,http-
4d640 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 20 20 20 20 msg.,error).....................
4d660 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 75 72 6c 2d ....................(gptel--url-
4d680 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 29 0a 20 20 parse-response.backend.info))...
4d6a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
4d6c0 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 0a 20 20 20 .....(buf.(current-buffer)))....
4d6e0 20 20 20 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
4d700 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 73 74 61 74 -put.info.:http-status.http-stat
4d720 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 20 20 20 20 us).............................
4d740 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 70 2d 6d 73 .(plist-put.info.:status.http-ms
4d760 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 20 20 20 g)..............................
4d780 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 57 41 49 (gptel--fsm-transition.fsm).;WAI
4d7a0 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 20 20 20 20 T.->.TYPE.......................
4d7c0 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 74 20 69 6e .......(when.error.(plist-put.in
4d7e0 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 20 20 20 20 fo.:error.error))...............
4d800 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 65 20 3b 4c ...............(when.response.;L
4d820 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 20 20 20 20 ook.for.a.reasoning.block.......
4d840 20 20 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 73 74 .........................(if.(st
4d860 72 69 6e 67 2d 6d 61 74 63 68 2d 70 20 22 5e 20 2a 3c 74 68 69 6e 6b 3e 5c 6e 22 20 72 65 73 70 ring-match-p."^.*<think>\n".resp
4d880 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)...........................
4d8a0 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 73 74 72 69 6e .........(when-let*.((idx.(strin
4d8c0 67 2d 73 65 61 72 63 68 20 22 3c 2f 74 68 69 6e 6b 3e 5c 6e 22 20 72 65 73 70 6f 6e 73 65 29 29 g-search."</think>\n".response))
4d8e0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 )...............................
4d900 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 67 70 74 .......(with-demoted-errors."gpt
4d920 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 20 20 20 el.callback.error:.%S"..........
4d940 20 20 20 20 20 20 20 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
4d960 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 20 20 20 uncall.callback.................
4d980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
4d9a0 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 20 20 20 (cons.'reasoning................
4d9c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
4d9e0 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 6c 20 28 .......(substring.response.nil.(
4da00 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 20 20 20 +.idx.8)))......................
4da20 20 20 20 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 ...........................info)
4da40 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 )...............................
4da60 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 2d 74 72 .......(setq.response.(string-tr
4da80 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 20 20 20 im-left.........................
4daa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 75 .............................(su
4dac0 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 29 0a 20 bstring.response.(+.idx.8)))))..
4dae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
4db00 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 2d 67 65 (when-let*.((reasoning.(plist-ge
4db20 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 20 20 20 t.info.:reasoning)).............
4db40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
4db60 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 20 20 20 .((stringp.reasoning))).........
4db80 20 20 20 20 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
4dba0 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 20 72 65 all.callback.(cons.'reasoning.re
4dbc0 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 20 20 20 asoning).info))))...............
4dbe0 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 6f 6e 73 ...............(when.(or.respons
4dc00 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 22 32 30 e.(not.(member.http-status.'("20
4dc20 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 20 20 20 0"."100"))))....................
4dc40 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 6f 72 73 ............(with-demoted-errors
4dc60 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 20 20 20 ."gptel.callback.error:.%S".....
4dc80 20 20 20 20 20 20 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
4dca0 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 29 29 0a ncall.callback.response.info))).
4dcc0 20 20 20 20 20 20 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
4dce0 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 45 20 2d tel--fsm-transition.fsm).;TYPE.-
4dd00 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 20 20 20 >.next..........................
4dd20 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 6c 2d 2d ....(setf.(alist-get.buf.gptel--
4dd40 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).
4dd60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6b 69 .............................(ki
4dd80 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 20 20 20 ll-buffer.buf)))................
4dda0 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 3b 3b 20 ..........nil.t.nil))).......;;.
4ddc0 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 20 20 20 TODO:.Add.transformer.here......
4dde0 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 70 74 65 ..(setf.(alist-get.proc-buf.gpte
4de00 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 20 28 63 l--request-alist).............(c
4de20 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 6c 61 6d ons.fsm...................#'(lam
4de40 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 28 70 6c bda.().......................(pl
4de60 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 72 65 29 ist-put.info.:callback.#'ignore)
4de80 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 6b 69 6c .......................(let.(kil
4dea0 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 20 20 20 l-buffer-query-functions).......
4dec0 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 70 20 75 ..................;;Can't.stop.u
4dee0 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 20 20 20 rl-retrieve.process.............
4df00 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 2d 62 75 ............(kill-buffer.proc-bu
4df20 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 65 6c 2d f))))))))..(cl-defgeneric.gptel-
4df40 2d 70 61 72 73 65 2d 72 65 73 70 6f 6e 73 65 20 28 62 61 63 6b 65 6e 64 20 72 65 73 70 6f 6e 73 -parse-response.(backend.respons
4df60 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 61 63 74 e.proc-info)..."Response.extract
4df80 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 20 69 73 or.for.LLM.requests...BACKEND.is
4dfa0 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 50 4f 4e .the.LLM.backend.in.use...RESPON
4dfc0 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 72 65 73 SE.is.the.parsed.JSON.of.the.res
4dfe0 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 20 69 73 ponse,.as.a.plist...PROC-INFO.is
4e000 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 74 69 6f .a.plist.with.process.informatio
4e020 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 65 6c 2d n.and.other.context..See.`gptel-
4e040 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 6f 6e 74 curl--get-response'.for.its.cont
4e060 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 72 73 65 ents.")..(defun.gptel--url-parse
4e080 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 0a 20 20 -response.(backend.proc-info)...
4e0a0 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 77 69 74 "Parse.response.from.BACKEND.wit
4e0c0 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 6f 67 2d h.PROC-INFO."...(when.gptel-log-
4e0e0 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 67 0a 20 level.................;logging..
4e100 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 ...(save-excursion.......(goto-c
4e120 68 61 72 20 75 72 6c 2d 68 74 74 70 2d 65 6e 64 2d 6f 66 2d 68 65 61 64 65 72 73 29 0a 20 20 20 har.url-http-end-of-headers)....
4e140 20 20 20 28 77 68 65 6e 20 28 65 71 20 67 70 74 65 6c 2d 6c 6f 67 2d 6c 65 76 65 6c 20 27 64 65 ...(when.(eq.gptel-log-level.'de
4e160 62 75 67 29 0a 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 6c 6f 67 20 28 67 70 74 65 6c 2d bug).........(gptel--log.(gptel-
4e180 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 67 2d 6e -json-encode.(buffer-substring-n
4e1a0 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 6e 74 29 o-properties.(point-min).(point)
4e1c0 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 6e 73 65 ))....................."response
4e1e0 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 20 28 62 .headers")).......(gptel--log.(b
4e200 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 20 28 70 uffer-substring-no-properties.(p
4e220 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 20 20 20 oint).(point-max))..............
4e240 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 2d 6c 65 ....."response.body")))...(if-le
4e260 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 75 66 66 t*.((http-msg.(string-trim.(buff
4e280 65 72 2d 73 75 62 73 74 72 69 6e 67 20 28 6c 69 6e 65 2d 62 65 67 69 6e 6e 69 6e 67 2d 70 6f 73 er-substring.(line-beginning-pos
4e2a0 69 74 69 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ition)..........................
4e2c0 20 20 20 20 20 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 ............................(lin
4e2e0 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 20 20 28 e-end-position)))).............(
4e300 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 65 2d 6d http-status..............(save-m
4e320 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 20 28 73 atch-data................(and.(s
4e340 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 5b 30 tring-match."HTTP/[.0-9]+.+\\([0
4e360 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 20 20 -9]+\\)".http-msg)..............
4e380 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 73 67 29 .......(match-string.1.http-msg)
4e3a0 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 6f 67 6e ))).............(response.(progn
4e3c0 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 65 61 64 .(goto-char.url-http-end-of-head
4e3e0 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 20 20 20 ers)............................
4e400 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...........
4e420 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 6a .......................(gptel--j
4e440 73 6f 6e 2d 72 65 61 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 son-read).......................
4e460 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 72 6f 72 .........(error.'json-read-error
4e480 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 49 58 4d ))))).......(cond........;;.FIXM
4e4a0 45 20 48 61 6e 64 6c 65 20 74 68 65 20 63 61 73 65 20 77 68 65 72 65 20 48 54 54 50 20 31 30 30 E.Handle.the.case.where.HTTP.100
4e4c0 20 69 73 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 48 54 54 50 20 28 6e 6f 74 20 32 30 30 29 20 42 .is.followed.by.HTTP.(not.200).B
4e4e0 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 2d 68 74 UG.#194........((or.(memq.url-ht
4e500 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 29 0a 20 tp-response-status.'(200.100))..
4e520 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 5c 28 3f ...........(string-match-p."\\(?
4e540 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 20 20 20 :1\\|2\\)00.OK".http-msg))......
4e560 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 74 65 6c ...(list.(and-let*.((resp.(gptel
4e580 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 6f 6e 73 --parse-response.backend.respons
4e5a0 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 20 20 20 e.proc-info))...................
4e5c0 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 72 65 73 .......((not.(string-blank-p.res
4e5e0 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 2d 74 72 p)))).................(string-tr
4e600 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 73 74 61 im.resp))...............http-sta
4e620 74 75 73 20 68 74 74 70 2d 6d 73 67 29 29 0a 20 20 20 20 20 20 20 28 28 70 6c 69 73 74 2d 67 65 tus.http-msg))........((plist-ge
4e640 74 20 72 65 73 70 6f 6e 73 65 20 3a 65 72 72 6f 72 29 0a 20 20 20 20 20 20 20 20 28 6c 69 73 74 t.response.:error).........(list
4e660 20 6e 69 6c 20 68 74 74 70 2d 73 74 61 74 75 73 20 68 74 74 70 2d 6d 73 67 20 28 70 6c 69 73 74 .nil.http-status.http-msg.(plist
4e680 2d 67 65 74 20 72 65 73 70 6f 6e 73 65 20 3a 65 72 72 6f 72 29 29 29 0a 20 20 20 20 20 20 20 28 -get.response.:error)))........(
4e6a0 28 65 71 20 72 65 73 70 6f 6e 73 65 20 27 6a 73 6f 6e 2d 72 65 61 64 2d 65 72 72 6f 72 29 0a 20 (eq.response.'json-read-error)..
4e6c0 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 28 63 6f .......(list.nil.http-status.(co
4e6e0 6e 63 61 74 20 22 28 22 20 68 74 74 70 2d 6d 73 67 20 22 29 20 4d 61 6c 66 6f 72 6d 65 64 20 4a ncat."(".http-msg.").Malformed.J
4e700 53 4f 4e 20 69 6e 20 72 65 73 70 6f 6e 73 65 2e 22 29 20 22 6a 73 6f 6e 2d 72 65 61 64 2d 65 72 SON.in.response.")."json-read-er
4e720 72 6f 72 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 ror"))........(t.(list.nil.http-
4e740 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 67 20 22 29 20 43 status.(concat."(".http-msg.").C
4e760 6f 75 6c 64 20 6e 6f 74 20 70 61 72 73 65 20 48 54 54 50 20 72 65 73 70 6f 6e 73 65 2e 22 29 0a ould.not.parse.HTTP.response.").
4e780 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 70 61 72 73 65 ................"Could.not.parse
4e7a0 20 48 54 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 .HTTP.response."))).....(list.ni
4e7c0 6c 20 28 63 6f 6e 63 61 74 20 22 28 22 20 68 74 74 70 2d 6d 73 67 20 22 29 20 43 6f 75 6c 64 20 l.(concat."(".http-msg.").Could.
4e7e0 6e 6f 74 20 70 61 72 73 65 20 48 54 54 50 20 72 65 73 70 6f 6e 73 65 2e 22 29 0a 20 20 20 20 20 not.parse.HTTP.response.")......
4e800 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 20 72 65 73 70 6f ....."Could.not.parse.HTTP.respo
4e820 6e 73 65 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 nse.")))..(cl-defun.gptel--sanit
4e840 69 7a 65 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 ize-model.(&key.(backend.gptel-b
4e860 61 63 6b 65 6e 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ackend).........................
4e880 20 20 20 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 ..............(model.gptel-model
4e8a0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 )...............................
4e8c0 20 20 20 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 ........(shoosh.t))..."Check.if.
4e8e0 4d 4f 44 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 MODEL.is.available.in.BACKEND,.a
4e900 64 6a 75 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 djust.accordingly...If.SHOOSH.is
4e920 20 74 72 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 .true,.don't.issue.a.warning."..
4e940 20 28 6c 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 .(let.((available.(gptel-backend
4e960 2d 6d 6f 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 -models.backend))).....(when.(st
4e980 72 69 6e 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 ringp.model).......(unless.shoos
4e9a0 68 0a 20 20 20 20 20 20 20 20 28 64 69 73 70 6c 61 79 2d 77 61 72 6e 69 6e 67 0a 20 20 20 20 20 h.........(display-warning......
4e9c0 20 20 20 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 ....'gptel..........(format."`gp
4e9e0 74 65 6c 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 tel-model'.expects.a.symbol,.fou
4ea00 6e 64 20 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 nd.string.\"%s\"....Resetting.`g
4ea20 70 74 65 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 ptel-model'.to.%s"..............
4ea40 20 20 20 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 ....model.model))).......(setq.g
4ea60 70 74 65 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 ptel-model.(gptel--intern.model)
4ea80 0a 20 20 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 .............model.gptel-model))
4eaa0 0a 20 20 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 .....(unless.(member.model.avail
4eac0 61 62 6c 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 able).......(let.((fallback.(car
4eae0 20 61 76 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 .available))).........(unless.sh
4eb00 6f 6f 73 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 oosh...........(display-warning.
4eb20 20 20 20 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 ...........'gptel............(fo
4eb40 72 6d 61 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 rmat.(concat."Preferred.`gptel-m
4eb60 6f 64 65 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 odel'.\"%s\".not"...............
4eb80 20 20 20 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 ............."supported.in.\"%s\
4eba0 22 2c 20 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 ",.using.\"%s\".instead").......
4ebc0 20 20 20 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 .............model.(gptel-backen
4ebe0 64 2d 6e 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 d-name.backend).fallback))).....
4ec00 20 20 20 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 ....(setq-local.gptel-model.fall
4ec20 62 61 63 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 back)))))..;;;###autoload.(defun
4ec40 20 67 70 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 .gptel.(name.&optional._.initial
4ec60 20 69 6e 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 .interactivep)..."Switch.to.or.s
4ec80 74 61 72 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 tart.a.chat.session.with.NAME...
4eca0 41 73 6b 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 Ask.for.API-KEY.if.`gptel-api-ke
4ecc0 79 27 20 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 y'.is.unset...If.region.is.activ
4ece0 65 2c 20 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 e,.use.it.as.the.INITIAL.prompt.
4ed00 20 20 52 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 ..Returns.the.buffer.created.or.
4ed20 73 77 69 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 switched.to...INTERACTIVEP.is.t.
4ed40 77 68 65 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 when.gptel.is.called.interactive
4ed60 6c 79 2e 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 ly."...(interactive....(let*.((b
4ed80 61 63 6b 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 ackend.(default-value.'gptel-bac
4eda0 6b 65 6e 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 kend))...........(backend-name..
4edc0 20 20 20 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 ..........(format."*%s*".(gptel-
4ede0 62 61 63 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 backend-name.backend))))......(l
4ee00 69 73 74 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 ist.(read-buffer............."Cr
4ee20 65 61 74 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 eate.or.choose.gptel.buffer:."..
4ee40 20 20 20 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 ...........backend-name.nil.....
4ee60 20 20 20 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 ....................;.DEFAULT.an
4ee80 64 20 52 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 d.REQUIRE-MATCH.............(lam
4eea0 62 64 61 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 bda.(b).........................
4eec0 20 20 20 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 ..........;.PREDICATE...........
4eee0 20 20 20 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 ....;;.NOTE:.buffer.check.is.req
4ef00 75 69 72 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 uired.(#450)...............(and-
4ef20 6c 65 74 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 let*.((buf.(get-buffer.(or.(car-
4ef40 73 61 66 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 safe.b).b)))).................(b
4ef60 75 66 66 65 72 2d 6c 6f 63 61 6c 2d 76 61 6c 75 65 20 27 67 70 74 65 6c 2d 6d 6f 64 65 20 62 75 uffer-local-value.'gptel-mode.bu
4ef80 66 29 29 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 f))))............(condition-case
4efa0 20 6e 69 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 .nil................(gptel--get-
4efc0 61 70 69 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 api-key.................(gptel-b
4efe0 61 63 6b 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 ackend-key.backend))............
4f000 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 20 ..((error.user-error)...........
4f020 20 20 20 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 ....(setq.gptel-api-key.........
4f040 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 61 64 2d 70 61 73 73 77 64 0a 20 20 20 20 20 20 20 ............(read-passwd........
4f060 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 20 41 50 49 20 6b 65 ..............(format."%s.API.ke
4f080 79 3a 20 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 y:.".backend-name)))))..........
4f0a0 20 20 28 61 6e 64 20 28 75 73 65 2d 72 65 67 69 6f 6e 2d 70 29 0a 20 20 20 20 20 20 20 20 20 20 ..(and.(use-region-p)...........
4f0c0 20 20 20 20 20 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 20 28 72 65 67 69 6f 6e 2d ......(buffer-substring.(region-
4f0e0 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)......................
4f100 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 29 0a 20 20 20 20 .............(region-end))).....
4f120 20 20 20 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 .......t)))...(with-current-buff
4f140 65 72 20 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 er.(get-buffer-create.name).....
4f160 28 63 6f 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 (cond.;Set.major.mode......((eq.
4f180 6d 61 6a 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 major-mode.gptel-default-mode)).
4f1a0 20 20 20 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 .....((eq.gptel-default-mode.'te
4f1c0 78 74 2d 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 xt-mode).......(text-mode)......
4f1e0 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 20 28 74 20 28 .(visual-line-mode.1))......(t.(
4f200 66 75 6e 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 funcall.gptel-default-mode)))...
4f220 20 20 28 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 ..(gptel--sanitize-model.:backen
4f240 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 64 29 d.(default-value.'gptel-backend)
4f260 0a 20 20 20 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 ............................:mod
4f280 65 6c 20 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 el.(default-value.'gptel-model).
4f2a0 20 20 20 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 ...........................:shoo
4f2c0 73 68 20 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 sh.nil).....(unless.gptel-mode.(
4f2e0 67 70 74 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 gptel-mode.1)).....(goto-char.(p
4f300 6f 69 6e 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 oint-max)).....(skip-chars-backw
4f320 61 72 64 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 ard."\t\r\n").....(if.(bobp).(in
4f340 73 65 72 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 sert.(or.initial.(gptel-prompt-p
4f360 72 65 66 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 refix-string)))).....(when.inter
4f380 61 63 74 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 activep.......(display-buffer.(c
4f3a0 75 72 72 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 urrent-buffer).gptel-display-buf
4f3c0 66 65 72 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 fer-action).......(message."Send
4f3e0 20 79 6f 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 .your.query.with.%s!"...........
4f400 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 20 22 5c .....(substitute-command-keys."\
4f420 5c 5b 67 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 \[gptel-send]"))).....(current-b
4f440 75 66 66 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 uffer)))....;;;.Reasoning.conten
4f460 74 20 55 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 t.UI.(declare-function.gptel-cur
4f480 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 22 67 70 74 65 6c l--stream-insert-response."gptel
4f4a0 2d 63 75 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 -curl")..(defun.gptel--display-r
4f4c0 65 61 73 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 easoning-stream.(text.info)..."S
4f4e0 68 6f 77 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 how.reasoning.TEXT.in.an.appropr
4f500 69 61 74 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 iate.location...INFO.is.the.requ
4f520 65 73 74 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 est.INFO,.see.`gptel--url-get-re
4f540 73 70 6f 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 sponse'...This.is.for.streaming.
4f560 72 65 73 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 responses.only."...(when-let*.((
4f580 69 6e 63 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 include.(plist-get.info.:include
4f5a0 2d 72 65 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 -reasoning))).....(if.(stringp.i
4f5c0 6e 63 6c 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 nclude).........(unless.(eq.text
4f5e0 20 74 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 .t)...........(with-current-buff
4f600 65 72 20 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 er.(get-buffer-create.include)..
4f620 20 20 20 20 20 20 20 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 20 28 67 6f 74 6f ...........(save-excursion.(goto
4f640 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 20 -char.(point-max))..............
4f660 20 20 20 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 ...............(insert.text)))).
4f680 20 20 20 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 ......(let*.((reasoning-marker.(
4f6a0 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 6d 61 72 6b 65 72 plist-get.info.:reasoning-marker
4f6c0 29 29 0a 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 ))..............(tracking-marker
4f6e0 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 .(plist-get.info.:tracking-marke
4f700 72 29 29 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 r))..............(start-marker.(
4f720 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 70 6f 73 69 74 69 6f 6e 29 29 29 0a 20 20 20 20 plist-get.info.:position))).....
4f740 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 6d 61 72 6b 65 72 ....(with-current-buffer.(marker
4f760 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 20 20 20 20 20 -buffer.start-marker)...........
4f780 28 69 66 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 (if.(eq.text.t)...............;e
4f7a0 6e 64 20 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 nd.of.stream...............(prog
4f7c0 6e 0a 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 6c 2d 2d 73 n.................(gptel-curl--s
4f7e0 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 20 20 20 20 20 20 tream-insert-response...........
4f800 20 20 20 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 .......(concat.(if.(derived-mode
4f820 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 20 -p.'org-mode)...................
4f840 20 20 20 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 ..........."\n#+end_reasoning"..
4f860 20 20 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 ..........................;;.TOD
4f880 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 65 73 20 61 O(reasoning).remove.properties.a
4f8a0 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 20 20 20 20 nd.strip.instead................
4f8c0 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 5c 6e 60 60 60 22 20 ............(propertize."\n```".
4f8e0 27 67 70 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 'gptel.'ignore))................
4f900 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 65 70 61 72 61 74 ..........gptel-response-separat
4f920 6f 72 29 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 or)..................info.t)....
4f940 20 20 20 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 .............(when.(derived-mode
4f960 2d 70 20 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 -p.'org-mode).;fold.block.......
4f980 20 20 20 20 20 20 20 20 20 20 20 20 28 69 67 6e 6f 72 65 2d 65 72 72 6f 72 73 0a 20 20 20 20 20 ............(ignore-errors......
4f9a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 ...............(save-excursion..
4f9c0 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.
4f9e0 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 20 20 20 20 20 20 20 tracking-marker)................
4fa00 20 20 20 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 .......(search-backward."#+end_r
4fa20 65 61 73 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 easoning".start-marker.t).......
4fa40 20 20 20 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 ................(when.(looking-a
4fa60 74 20 22 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 t."^#\\+end_reasoning").........
4fa80 20 20 20 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 ................(org-cycle))))))
4faa0 0a 20 20 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 .............(unless.(and.reason
4fac0 69 6e 67 2d 6d 61 72 6b 65 72 20 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 0a 20 20 20 20 20 ing-marker.tracking-marker......
4fae0 20 20 20 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 ....................(=.reasoning
4fb00 2d 6d 61 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 -marker.tracking-marker)).......
4fb20 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........
4fb40 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 69 ;Separate.from.response.prefix.i
4fb60 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 20 f.required......................
4fb80 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
4fba0 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 20 -mode...........................
4fbc0 28 6e 6f 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 (not.(string-suffix-p...........
4fbe0 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 67 70 74 65 ......................"\n".(gpte
4fc00 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 20 l-response-prefix-string))).....
4fc20 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 29 29 29 0a 20 20 ......................"\n")))...
4fc40 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 61 ..............(gptel-curl--strea
4fc60 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 20 m-insert-response...............
4fc80 20 20 20 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 ...(concat.separator............
4fca0 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-
4fcc0 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)....................
4fce0 20 20 20 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 .........."#+begin_reasoning\n".
4fd00 20 20 20 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 ...........................;;.TO
4fd20 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 65 73 20 DO(reasoning).remove.properties.
4fd40 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 20 20 20 and.strip.instead...............
4fd60 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 60 60 60 20 72 65 .............(propertize."```.re
4fd80 61 73 6f 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 asoning\n".'gptel.'ignore)))....
4fda0 20 20 20 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 ..............info.t))).........
4fdc0 20 20 20 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 ....(if.(eq.include.'ignore)....
4fde0 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 20 20 20 .............(progn.............
4fe00 20 20 20 20 20 20 28 61 64 64 2d 74 65 78 74 2d 70 72 6f 70 65 72 74 69 65 73 0a 20 20 20 20 20 ......(add-text-properties......
4fe20 20 20 20 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 ..............0.(length.text).'(
4fe40 67 70 74 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 gptel.ignore.front-sticky.(gptel
4fe60 29 29 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 )).text)...................(gpte
4fe80 6c 2d 63 75 72 6c 2d 2d 73 74 72 65 61 6d 2d 69 6e 73 65 72 74 2d 72 65 73 70 6f 6e 73 65 20 74 l-curl--stream-insert-response.t
4fea0 65 78 74 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 ext.info.t))...............(gpte
4fec0 6c 2d 63 75 72 6c 2d 2d 73 74 72 65 61 6d 2d 69 6e 73 65 72 74 2d 72 65 73 70 6f 6e 73 65 20 74 l-curl--stream-insert-response.t
4fee0 65 78 74 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 ext.info)))...........(setq.trac
4ff00 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 61 king-marker.(plist-get.info.:tra
4ff20 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 28 69 66 20 72 65 61 cking-marker))...........(if.rea
4ff40 73 6f 6e 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 soning-marker...............(mov
4ff60 65 2d 6d 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 e-marker.reasoning-marker.tracki
4ff80 6e 67 2d 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 ng-marker).............(plist-pu
4ffa0 74 20 69 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 t.info.:reasoning-marker........
4ffc0 20 20 20 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 ................(copy-marker.tra
4ffe0 63 6b 69 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 cking-marker.nil))))))))....;;;.
50000 54 6f 6f 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 Tool.use.UI.(defun.gptel--displa
50020 79 2d 74 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 y-tool-calls.(tool-calls.info.&o
50040 70 74 69 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 ptional.use-minibuffer)..."Handl
50060 65 20 74 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 e.tool.call.confirmation...TOOL-
50080 43 41 4c 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 CALLS.should.be.a.list.of.tool.c
500a0 61 6c 6c 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 all.specifications.or.results,.s
500c0 74 72 75 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 tructured.as:...((tool.args.call
500e0 62 61 63 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 back)....)..for.tool.call.specif
50100 69 63 61 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 ications.to.be.confirmed...INFO.
50120 63 6f 6e 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 contains.the.state.of.the.reques
50140 74 2e 20 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 t...To.prompt.for.tool.call.conf
50160 69 72 6d 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 irmation,.use.either.an.overlay.
50180 69 6e 20 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 in.the.request.buffer.or.the.min
501a0 69 62 75 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 ibuffer.(if.USE-MINIBUFFER.is.no
501c0 6e 2d 6e 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 n-nil)."...(let*.((start-marker.
501e0 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 70 6f 73 69 74 69 6f 6e 29 29 0a 20 20 20 20 (plist-get.info.:position)).....
50200 20 20 20 20 20 28 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 20 28 70 6c 69 73 74 2d 67 65 74 .....(tracking-marker.(plist-get
50220 20 69 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 3b 3b .info.:tracking-marker))).....;;
50240 20 70 65 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 .pending.tool.calls.look.like.((
50260 74 6f 6f 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 tool.callback.args)....).....(wi
50280 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 6e 66 th-current-buffer.(plist-get.inf
502a0 6f 20 3a 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 o.:buffer).......(if.use-minibuf
502c0 66 65 72 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 fer............;prompt.for.confi
502e0 72 6d 61 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 rmation.from.the.minibuffer.....
50300 20 20 20 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 ......(let*.((minibuffer-allow-t
50320 65 78 74 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 ext-properties.t)...............
50340 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 2d ...(backend-name.(gptel-backend-
50360 6e 61 6d 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 name.(plist-get.info.:backend)))
50380 0a 20 20 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 ..................(prompt.(forma
503a0 74 20 22 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 t."%s.wants.to.run.".backend-nam
503c0 65 29 29 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 e))).............(map-y-or-n-p..
503e0 20 20 20 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 ............(lambda.(tool-call-s
50400 70 65 63 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 pec)................(concat.prom
50420 70 74 20 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 pt.(propertize.(gptel-tool-name.
50440 28 63 61 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 (car.tool-call-spec))...........
50460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
50480 27 66 61 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 'face.'font-lock-keyword-face)..
504a0 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 0a 20 20 20 ......................":."))....
504c0 20 20 20 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 ..........(lambda.(tcs).(gptel--
504e0 61 63 63 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 accept-tool-calls.(list.tcs).nil
50500 29 29 0a 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 ))..............tool-calls.'("to
50520 6f 6c 20 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 ol.call"."tool.calls"."run")....
50540 20 20 20 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 ..........`((?i.,(lambda.(_).(sa
50560 76 65 2d 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 ve-window-excursion.............
50580 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 6c 65 63 74 65 64 2d .................(with-selected-
505a0 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 20 20 window..........................
505c0 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 20 67 70 74 65 ........(gptel--inspect-fsm.gpte
505e0 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 20 20 20 20 20 l--fsm-last)....................
50600 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 69 ............(goto-char.(point-mi
50620 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 n)).............................
50640 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 20 ...(when.(search-forward-regexp.
50660 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 20 "^:tool-use".nil.t).............
50680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 77 61 72 64 2d 6c 69 .....................(forward-li
506a0 6e 65 20 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 ne.0).(hl-line-highlight))......
506c0 20 20 20 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 ..........................(use-l
506e0 6f 63 61 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 ocal-map........................
50700 20 20 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 .........(make-composed-keymap..
50720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
50740 28 64 65 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 (define-keymap."q".(lambda.().(i
50760 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).....................
50780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
507a0 20 20 28 71 75 69 74 2d 77 69 6e 64 6f 77 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..(quit-window).................
507c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
507e0 20 20 20 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 ......(exit-recursive-edit)))...
50800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 ...............................(
50820 63 75 72 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 current-local-map)))............
50840 20 20 20 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 ....................(recursive-e
50860 64 69 74 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 dit).nil)))...................."
50880 69 6e 73 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 inspect.call(s)")))).........;;.
508a0 50 72 6f 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 Prompt.for.confirmation.from.the
508c0 20 63 68 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 .chat.buffer.........(let*.((bac
508e0 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 65 20 28 70 kend-name.(gptel-backend-name.(p
50900 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 20 20 20 20 list-get.info.:backend))).......
50920 20 20 20 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 .........(actions-string........
50940 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 52 75 .........(concat.(propertize."Ru
50960 6e 20 74 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 n.tools:.".'face.'font-lock-stri
50980 6e 67 2d 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 ng-face)........................
509a0 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 27 68 65 .(propertize."C-c.C-c".'face.'he
509c0 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 20 20 20 lp-key-binding).................
509e0 20 20 20 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 ........(propertize.",.Cancel.re
50a00 71 75 65 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 quest:.".'face.'font-lock-string
50a20 2d 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 -face).........................(
50a40 70 72 6f 70 65 72 74 69 7a 65 20 22 43 2d 63 20 43 2d 6b 22 20 27 66 61 63 65 20 27 68 65 6c 70 propertize."C-c.C-k".'face.'help
50a60 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 20 20 20 20 20 -key-binding)...................
50a80 20 20 20 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 ......(propertize.",.Inspect:.".
50aa0 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)...
50ac0 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 7a ......................(propertiz
50ae0 65 20 22 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 e."C-c.C-i".'face.'help-key-bind
50b00 69 6e 67 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 ing)))................(confirm-s
50b20 74 72 69 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 trings.................(list.(co
50b40 6e 63 61 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 ncat."\n".actions-string........
50b60 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
50b80 7a 65 20 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 ze."\n".'face.'(:inherit.font-lo
50ba0 63 6b 2d 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 ck-string-face..................
50bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
50be0 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 3a 65 78 74 ...............:underline.t.:ext
50c00 65 6e 64 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 end.t)).........................
50c20 20 20 20 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 ......(format.(propertize."\n%s.
50c40 77 61 6e 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 wants.to.run:\n"................
50c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
50c80 20 20 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 ...'face.'font-lock-string-face)
50ca0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
50cc0 20 20 20 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 .......backend-name)))).........
50ce0 20 20 20 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 .......;;.FIXME(tool).use.a.wrap
50d00 70 65 72 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 per.instead.of.a.manual.text-pro
50d20 70 65 72 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 perty.search,................;;.
50d40 74 68 69 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 this.is.fragile................(
50d60 6f 76 2d 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 ov-start.(save-excursion........
50d80 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 73 ....................(goto-char.s
50da0 74 61 72 74 2d 6d 61 72 6b 65 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 tart-marker)....................
50dc0 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 2d 62 61 ........(text-property-search-ba
50de0 63 6b 77 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 ckward.'gptel.'response)........
50e00 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)))...
50e20 20 20 20 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 .............(ov.(or.(cdr-safe.(
50e40 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 61 79 0a 20 20 get-char-property-and-overlay...
50e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
50e80 73 74 61 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 start-marker.'gptel-tool))......
50ea0 20 20 20 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 ..................(make-overlay.
50ec0 6f 76 2d 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 ov-start.(or.tracking-marker.sta
50ee0 72 74 2d 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 rt-marker)))))...........;;.If.t
50f00 68 65 20 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 he.cursor.is.at.the.overlay-end,
50f20 20 69 74 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 .it.ends.up.outside,.so.move.it.
50f40 62 61 63 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 back...........(unless.tracking-
50f60 6d 61 72 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 marker.............(when.(=.(poi
50f80 6e 74 29 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 nt).start-marker).(ignore-errors
50fa0 20 28 62 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 .(backward-char))))...........(p
50fc0 63 61 73 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 case-dolist.(`(,tool-spec.,arg-v
50fe0 61 6c 75 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 alues._).tool-calls)............
51000 20 28 70 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 .(push.(gptel--format-tool-call.
51020 28 67 70 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 (gptel-tool-name.tool-spec).arg-
51040 76 61 6c 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 values)...................confir
51060 6d 2d 73 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 m-strings))...........(push.(con
51080 63 61 74 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 cat.(propertize."\n".'face.'(:in
510a0 68 65 72 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 herit.font-lock-string-face.....
510c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
510e0 20 20 20 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 ......................:underline
51100 20 74 20 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 .t.:extend.t))).................
51120 63 6f 6e 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 confirm-strings)...........;;.Ad
51140 64 20 63 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 d.confirmation.prompt.to.the.ove
51160 72 6c 61 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 rlay...........(overlay-put.ov.'
51180 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 20 20 20 20 20 20 20 after-string....................
511a0 20 20 20 20 28 61 70 70 6c 79 20 23 27 63 6f 6e 63 61 74 20 28 6e 72 65 76 65 72 73 65 20 63 6f ....(apply.#'concat.(nreverse.co
511c0 6e 66 69 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 nfirm-strings)))...........(over
511e0 6c 61 79 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 lay-put.ov.'mouse-face.'highligh
51200 74 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 67 70 t)...........(overlay-put.ov.'gp
51220 74 65 6c 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 tel-tool.tool-calls)...........(
51240 6f 76 65 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 overlay-put.ov.'help-echo.......
51260 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 54 6f 6f 6c 20 63 .................(concat."Tool.c
51280 61 6c 6c 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 all(s).requested:.".actions-stri
512a0 6e 67 29 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 ng))...........(overlay-put.ov.'
512c0 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 20 28 64 keymap........................(d
512e0 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 20 20 20 20 20 20 20 efine-keymap....................
51300 20 20 20 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 ......"<mouse-1>".#'gptel--dispa
51320 74 63 68 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 tch-tool-calls..................
51340 20 20 20 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 ........"C-c.C-c".#'gptel--accep
51360 74 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 t-tool-calls....................
51380 20 20 20 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 ......"C-c.C-k".#'gptel--reject-
513a0 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 20 tool-calls......................
513c0 20 20 20 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 ...."C-c.C-i"...................
513e0 20 20 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 29 0a .......(lambda.().(interactive).
51400 20 20 20 20 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 ...........................(with
51420 2d 73 65 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 -selected-window................
51440 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 70 65 63 74 2d ................(gptel--inspect-
51460 66 73 6d 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 fsm.gptel--fsm-last)............
51480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f ..................(goto-char.(po
514a0 69 6e 74 2d 6d 69 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 int-min)).......................
514c0 20 20 20 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 .......(when.(search-forward-reg
514e0 65 78 70 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 exp."^:tool-use".nil.t).........
51500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 77 61 72 64 2d .......................(forward-
51520 6c 69 6e 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 line.0).........................
51540 20 20 20 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 .......(hl-line-highlight)))))))
51560 29 29 29 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 ))))..(defun.gptel--display-tool
51580 2d 72 65 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 -results.(tool-results.info)..."
515a0 49 6e 73 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 Insert.TOOL-RESULTS.into.buffer.
515c0 0a 0a 54 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 ..TOOL-RESULTS.is...((tool.args.
515e0 72 65 73 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 result)....)..for.tool.call.resu
51600 6c 74 73 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 lts...INFO.contains.the.state.of
51620 20 74 68 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 .the.request."...(let*.((start-m
51640 61 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 arker.(plist-get.info.:position)
51660 29 0a 20 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 )..........(tool-marker.(plist-g
51680 65 74 20 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 et.info.:tool-marker))..........
516a0 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 66 6f (tracking-marker.(plist-get.info
516c0 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 49 6e 73 65 .:tracking-marker))).....;;.Inse
516e0 72 74 20 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 rt.tool.results.....(when.gptel-
51700 69 6e 63 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 include-tool-results.......(with
51720 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 6d 61 72 6b 65 72 2d 62 75 66 66 65 72 20 73 -current-buffer.(marker-buffer.s
51740 74 61 72 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 tart-marker).........(cl-loop...
51760 20 20 20 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 .......for.(tool.args.result).in
51780 20 74 6f 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 .tool-results..........with.incl
517a0 75 64 65 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 ude-names.=..........(mapcar.#'g
517c0 70 74 65 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 ptel-tool-name..................
517e0 28 63 6c 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 (cl-remove-if-not.#'gptel-tool-i
51800 6e 63 6c 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 nclude.(plist-get.info.:tools)))
51820 0a 20 20 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 ..........if.(or.(eq.gptel-inclu
51840 64 65 2d 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 de-tool-results.t)..............
51860 20 20 20 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 ...(member.(gptel-tool-name.tool
51880 29 20 69 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 ).include-names))..........do.(f
518a0 75 6e 63 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 uncall..............(plist-get.i
518c0 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 28 6c 65 74 nfo.:callback)..............(let
518e0 2a 20 28 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 *.((name.(gptel-tool-name.tool))
51900 0a 20 20 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 .....................(separator.
51920 20 20 20 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 .......;Separate.from.response.p
51940 72 65 66 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 refix.if.required...............
51960 20 20 20 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 .......(cond.((not.tracking-mark
51980 65 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 er).............................
519a0 28 61 6e 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 (and.gptel-mode.................
519c0 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 2d 73 75 .................(not.(string-su
519e0 66 66 69 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 ffix-p..........................
51a00 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 65 73 70 6f 6e .............."\n".(gptel-respon
51a20 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 20 20 20 20 20 se-prefix-string))).............
51a40 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 29 29 20 20 20 20 20 ....................."\n")).....
51a60 20 20 20 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 ......;start.of.response........
51a80 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 61 6e 64 20 74 ....................((not.(and.t
51aa0 6f 6f 6c 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 ool-marker.;not.consecutive.tool
51ac0 20 72 65 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 .result.blocks..................
51ae0 20 20 20 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 .....................(=.tracking
51b00 2d 6d 61 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 -marker.tool-marker)))..........
51b20 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 72 65 73 70 6f 6e 73 ...................gptel-respons
51b40 65 2d 73 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 e-separator)))..................
51b60 20 20 20 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 ...(tool-use....................
51b80 20 20 3b 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 ..;;.TODO(tool).also.check.args.
51ba0 73 69 6e 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 since.there.may.be.more.than....
51bc0 20 20 20 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 ..................;;.one.call/re
51be0 73 75 6c 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 sult.for.the.same.tool..........
51c00 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 20 20 20 20 20 20 ............(cl-find-if.........
51c20 20 20 20 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 ..............(lambda.(tu).(equa
51c40 6c 20 28 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 l.(plist-get.tu.:name).name))...
51c60 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
51c80 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 20 20 nfo.:tool-use)))................
51ca0 20 20 20 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 .....(id.(plist-get.tool-use.:id
51cc0 29 29 0a 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 )).....................(display-
51ce0 63 61 6c 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 call.(format."(%s.%s)".name.....
51d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
51d20 20 20 20 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 ......(string-trim.(prin1-to-str
51d40 69 6e 67 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 ing.args)."(".")")))............
51d60 20 20 20 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 .........(call.(prin1-to-string.
51d80 60 28 3a 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 `(:name.,name.:args.,args)))....
51da0 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 64 2d 63 61 6c 6c .................(truncated-call
51dc0 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 20 20 .(truncate-string-to-width......
51de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
51e00 64 69 73 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 display-call....................
51e20 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 28 77 69 6e ..................(floor.(*.(win
51e40 64 6f 77 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 dow-width).0.6)).0.nil."....)"))
51e60 29 0a 20 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 )................(if.(derived-mo
51e80 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 20 20 20 20 20 de-p.'org-mode).................
51ea0 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 73 ...(concat.....................s
51ec0 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 22 23 2b eparator....................."#+
51ee0 62 65 67 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 begin_tool."....................
51f00 20 74 72 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 .truncated-call.................
51f20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ....(propertize.................
51f40 20 20 20 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 .....(concat."\n".call."\n\n".(o
51f60 72 67 2d 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 rg-escape-code-in-string.result)
51f80 29 0a 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 20 60 28 )......................'gptel.`(
51fa0 74 6f 6f 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 tool...,id))....................
51fc0 20 22 5c 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 ."\n#+end_tool\n")..............
51fe0 20 20 20 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 ....;;.TODO(tool).else.branch.is
52000 20 68 61 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 .handling.all.front-ends.as.mark
52020 64 6f 77 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 down...................;;.At.lea
52040 73 74 20 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 st.escape.markdown..............
52060 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 20 20 73 .....(concat...................s
52080 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 3b 3b 20 54 4f eparator...................;;.TO
520a0 44 4f 28 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 DO(tool).remove.properties.and.s
520c0 74 72 69 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 trip.instead.of.ignoring........
520e0 20 20 20 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 ...........(propertize.(format."
52100 60 60 60 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 ```.tool.%s".truncated-call).'gp
52120 74 65 6c 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 tel.'ignore)...................(
52140 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 3b 3b propertize....................;;
52160 20 54 4f 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 .TODO(tool).escape.markdown.in.r
52180 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 28 63 6f 6e 63 61 74 esult....................(concat
521a0 20 22 5c 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 ."\n".call."\n\n".result).......
521c0 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 6c 20 2e 20 2c 69 64 .............'gptel.`(tool...,id
521e0 29 29 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 74 6f 6f ))...................;;.TODO(too
52200 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 70 20 69 l).remove.properties.and.strip.i
52220 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 20 20 20 nstead.of.ignoring..............
52240 20 20 20 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 .....(propertize."\n```\n".'gpte
52260 6c 20 27 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 l.'ignore))))..............info.
52280 20 20 20 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 .............'raw)..........;;.t
522a0 6f 6f 6c 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 ool-result.insertion.has.updated
522c0 20 74 68 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 .the.tracking.marker..........(u
522e0 6e 6c 65 73 73 20 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 0a 20 20 20 20 20 20 20 20 20 20 nless.tracking-marker...........
52300 20 28 73 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 .(setq.tracking-marker.(plist-ge
52320 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 29 0a 20 20 20 20 20 t.info.:tracking-marker)))......
52340 20 20 20 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 ....(if.tool-marker.............
52360 20 20 20 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 ...(move-marker.tool-marker.trac
52380 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 28 73 65 74 71 20 king-marker)..............(setq.
523a0 74 6f 6f 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 tool-marker.(copy-marker.trackin
523c0 67 2d 6d 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 g-marker.nil))..............(pli
523e0 73 74 2d 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 st-put.info.:tool-marker.tool-ma
52400 72 6b 65 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 rker))..........(when.(derived-m
52420 6f 64 65 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 ode-p.'org-mode).;fold.drawer...
52440 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.........
52460 20 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 .....(save-excursion............
52480 20 20 20 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 ....(goto-char.tracking-marker).
524a0 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 2d 31 29 ...............(forward-line.-1)
524c0 0a 20 20 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 ................(when.(looking-a
524e0 74 20 22 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 t."^#\\+end_tool")..............
52500 20 20 20 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 ....(org-cycle))))))))))..(defun
52520 20 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 6e 61 6d 65 20 61 .gptel--format-tool-call.(name.a
52540 72 67 2d 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 rg-values)..."Format.a.tool.call
52560 20 66 6f 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 .for.display.in.the.buffer...NAM
52580 45 20 61 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 E.and.ARG-VALUES.are.the.name.an
525a0 64 20 61 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 d.arguments.for.the.call."...(fo
525c0 72 6d 61 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 rmat."(%s.%s)\n"...........(prop
525e0 65 72 74 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 ertize.name.'face.'font-lock-key
52600 77 6f 72 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 word-face)...........(propertize
52620 0a 20 20 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 ............(mapconcat.(lambda.(
52640 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 63 6f arg).........................(co
52660 6e 64 20 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 nd.((stringp.arg)...............
52680 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 6e .................(prin1-to-strin
526a0 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 20 g...............................
526c0 20 20 28 72 65 70 6c 61 63 65 2d 72 65 67 65 78 70 2d 69 6e 2d 73 74 72 69 6e 67 0a 20 20 20 20 ..(replace-regexp-in-string.....
526e0 20 20 20 20 20 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 ............................."\n
52700 22 20 22 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 "."...".(truncate-string-to-widt
52720 68 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 h...............................
52740 20 20 20 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 .............arg.(floor.(window-
52760 77 69 64 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 width).2).......................
52780 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 74 29 29 .....................nil.nil.t))
527a0 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 ))..............................
527c0 20 28 74 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 .(t.(prin1-to-string.arg))))....
527e0 20 20 20 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 ...................arg-values.".
52800 22 29 0a 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 ")............'face.'font-lock-c
52820 6f 6e 73 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 onstant-face)))..(defun.gptel--a
52840 63 63 65 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 ccept-tool-calls.(&optional.resp
52860 6f 6e 73 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 onse.ov)...(interactive.(pcase-l
52880 65 74 20 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 et.((`(,resp...,o).(get-char-pro
528a0 70 65 72 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 perty-and-overlay...............
528c0 20 20 20 20 20 20 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
528e0 69 6e 74 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 int).'gptel-tool))).............
52900 20 20 20 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 .....(list.resp.o)))...(gptel--u
52920 70 64 61 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 pdate-status.".Calling.tool...".
52940 27 6d 6f 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 'mode-line-emphasis)...(message.
52960 22 43 6f 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 "Continuing.query...")...(cl-loo
52980 70 20 66 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 p.for.(tool-spec.arg-values.proc
529a0 65 73 73 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 ess-tool-result).in.response....
529c0 20 20 20 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 ........do............(if.(gptel
529e0 2d 74 6f 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 -tool-async.tool-spec)..........
52a00 20 20 20 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 ......(apply.(gptel-tool-functio
52a20 6e 20 74 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 n.tool-spec)....................
52a40 20 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 ...process-tool-result.arg-value
52a60 73 29 0a 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 s)..............(let.((result...
52a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 ..................(condition-cas
52aa0 65 20 65 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 e.errdata.......................
52ac0 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 6f ..(apply.(gptel-tool-function.to
52ae0 6f 6c 2d 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 ol-spec).arg-values)............
52b00 20 20 20 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 ...........(error.(mapconcat.#'g
52b20 70 74 65 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 ptel--to-string.errdata.".")))))
52b40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 70 72 6f 63 65 73 73 ................(funcall.process
52b60 2d 74 6f 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 -tool-result.result))))...(and.(
52b80 6f 76 65 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 overlayp.ov).(delete-overlay.ov)
52ba0 29 29 0a 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 ))..(defun.gptel--reject-tool-ca
52bc0 6c 6c 73 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 lls.(&optional._response.ov)...(
52be0 69 6e 74 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 interactive.(pcase-let.((`(,resp
52c00 20 2e 20 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 ...,o).(get-char-property-and-ov
52c20 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 20 20 erlay...........................
52c40 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 2d .................(point).'gptel-
52c60 74 6f 6f 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 tool)))..................(list.r
52c80 65 73 70 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 esp.o)))...(gptel--update-status
52ca0 20 22 20 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 .".Tools.cancelled".'error)...(m
52cc0 65 73 73 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 essage.(substitute-command-keys.
52ce0 20 20 20 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 ............"Tool.calls.canceled
52d00 2e 20 20 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 ...\\[gptel-menu].to.continue.th
52d20 65 6d 21 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 em!"))...(and.(overlayp.ov).(del
52d40 65 74 65 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 ete-overlay.ov)))..(defun.gptel-
52d60 2d 64 69 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 -dispatch-tool-calls.(choice)...
52d80 28 69 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 6c 65 74 20 28 (interactive....(list.....(let.(
52da0 28 63 68 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 (choices.'((?y."yes").(?n."do.no
52dc0 74 68 69 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 thing")......................(?k
52de0 20 22 63 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 ."cancel.request").(?i."inspect.
52e00 63 61 6c 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 call(s)")))).......(read-multipl
52e20 65 2d 63 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 e-choice."Run.tool.calls?.".choi
52e40 63 65 73 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 ces))))...(pcase.(car.choice)...
52e60 20 20 28 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 ..(?y.(call-interactively.#'gpte
52e80 6c 2d 2d 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 l--accept-tool-calls)).....(?k.(
52ea0 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 72 65 6a 65 call-interactively.#'gptel--reje
52ec0 63 74 2d 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 ct-tool-calls)).....(?i.(gptel--
52ee0 69 6e 73 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 inspect-fsm.gptel--fsm-last)))).
52f00 0a 0c 0a 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 ...;;;.Presets.;;;;.Presets.impl
52f20 65 6d 65 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 ementation.(defvar.gptel--known-
52f40 70 72 65 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 presets.nil..."Alist.of.presets.
52f60 66 6f 72 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 for.gptel...Each.entry.maps.a.pr
52f80 65 73 65 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 eset.name.(a.symbol).to.a.plist.
52fa0 6f 66 0a 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 of.specifications.(see.`gptel-ma
52fc0 6b 65 2d 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 ke-preset').")..(defun.gptel-mak
52fe0 65 2d 70 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 e-preset.(name.&rest.keys)..."De
53000 66 69 6e 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 fine.a.gptel.preset.with.NAME...
53020 41 20 70 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 A.preset.is.a.combination.of.gpt
53040 65 6c 20 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 el.options.intended.to.be.applie
53060 64 20 61 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 d.and.used.together...Presets.ca
53080 6e 20 6d 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 n.make.it.less.tedious.to.change
530a0 20 67 70 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 .gptel.settings.on.the.fly...Typ
530c0 69 63 61 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 ically.this.will.include.a.model
530e0 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 20 61 6e 64 20 70 65 ,.backend,.system.message.and.pe
53100 72 68 61 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 rhaps.some.tools,.but.any.set.of
53120 20 67 70 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 .gptel.options.can.be.set.this.w
53140 61 79 2e 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 ay...NAME.must.be.a.symbol...KEY
53160 53 20 69 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 S.is.a.plist.corresponding.to.th
53180 65 20 6f 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 e.options.being.set...All.KEYS.a
531a0 72 65 20 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 re.optional...Recognized.keys:..
531c0 44 45 53 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 DESCRIPTION.is.a.description.of.
531e0 74 68 65 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 the.preset,.used.when.selecting.
53200 61 0a 70 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 a.preset...PARENTS.is.a.preset.n
53220 61 6d 65 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 ame.(or.list.of.preset.names).to
53240 20 61 70 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 .apply.before.this.one...PRE.and
53260 20 50 4f 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 .POST.are.functions.to.run.befor
53280 65 20 61 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 e.and.after.the.preset.is.applie
532a0 64 2e 20 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 d...They.take.no.arguments...BAC
532c0 4b 45 4e 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 KEND.is.the.gptel-backend.to.set
532e0 2c 20 6f 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 ,.or.its.name.(like.\"ChatGPT\")
53300 2e 0a 0a 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 ...MODEL.is.the.gptel-model...SY
53320 53 54 45 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 STEM.is.the.directive..It.can.be
53340 0a 2d 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 .-.the.system.message.(a.string)
53360 2c 0a 2d 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 ,.-.a.list.of.strings.(a.convers
53380 61 74 69 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 ation.template).-.or.a.function.
533a0 28 64 79 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 (dynamic.system.message)..-.It.c
533c0 61 6e 20 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 an.also.be.a.symbol.naming.a.dir
533e0 65 63 74 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 ective.in.`gptel-directives'...T
53400 4f 4f 4c 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 OOLS.is.a.list.of.gptel.tools.or
53420 20 74 6f 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 .tool.names,.like.\\='(\"read_ur
53440 6c 5c 22 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 l\".\"read_buffer\"....)..Recogn
53460 69 7a 65 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 ized.keys.are.not.limited.to.the
53480 20 61 62 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 .above...Any.other.key.(like.`:f
534a0 6f 6f 27 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 oo').corresponds.to.the.value.of
534c0 20 65 69 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 .either.`gptel-foo'.(preferred).
534e0 6f 72 0a 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 or.`gptel--foo'..-.So.TOOLS.corr
53500 65 73 70 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 esponds.to.`gptel-tools',.-.CONF
53520 49 52 4d 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 IRM-TOOL-CALLS.to.`gptel-confirm
53540 2d 74 6f 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 -tool-calls',.-.TEMPERATURE.to.`
53560 67 70 74 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 gptel-temperature'.and.so.on..Se
53580 65 20 67 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 e.gptel's.customization.options.
535a0 66 6f 72 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 for.all.available.settings."...(
535c0 64 65 63 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 declare.(indent.1))...(if-let*.(
535e0 28 70 20 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 (p.(assoc.name.gptel--known-pres
53600 65 74 73 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 ets))).......(setcdr.p.keys)....
53620 20 28 73 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 .(setq.gptel--known-presets.....
53640 20 20 20 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 .....;Add.at.end.of.presets.for.
53660 6d 65 6e 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 menu.ordering...........(nconc.g
53680 70 74 65 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 ptel--known-presets.(list.(cons.
536a0 6e 61 6d 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 name.keys))))))..(defun.gptel-ge
536c0 74 2d 70 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 t-preset.(name)..."Get.the.gptel
536e0 20 70 72 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 .preset.spec.with.NAME."...(alis
53700 74 2d 67 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 t-get.name.gptel--known-presets.
53720 6e 69 6c 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 nil.nil.#'equal))..(defun.gptel-
53740 2d 73 61 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 -save-preset.(name.&optional.des
53760 63 72 69 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 cription)..."Save.gptel's.curren
53780 74 20 73 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 t.settings.as.a.preset.with.NAME
537a0 2e 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 44 45 53 43 52 ...NAME.must.be.a.symbol...DESCR
537c0 49 50 54 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 IPTION.is.added.if.provided...In
537e0 20 61 64 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 .addition.to.registering.the.pre
53800 73 65 74 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 set,.elisp.code.to.do.the.same.i
53820 73 20 63 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 s.copied.to.the.kill-ring."...(i
53840 6e 74 65 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 nteractive....(list.(intern.(com
53860 70 6c 65 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 pleting-read."Save.gptel.setting
53880 73 20 74 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 s.to.(existing.or.new).preset:."
538a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
538c0 20 20 20 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 ...gptel--known-presets)).......
538e0 20 20 20 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 ...(read-string."Description.(op
53900 74 69 6f 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 tional):.")))...(let.((preset-co
53920 64 65 0a 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 de..........`(gptel-make-preset.
53940 27 2c 6e 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 ',name............:description.,
53960 28 77 68 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 (when.(and.description..........
53980 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 74 72 .......................(not.(str
539a0 69 6e 67 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 ing-blank-p.description)))......
539c0 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 69 6f 6e .....................description
539e0 29 0a 20 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 )............:backend.,(gptel-ba
53a00 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 0a 20 20 20 20 20 20 ckend-name.gptel-backend).......
53a20 20 20 20 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 .....:model.',gptel-model.......
53a40 20 20 20 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 .....:system.,(if-let*.((directi
53a60 76 65 20 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 ve.(car-safe.(rassoc.gptel--syst
53a80 65 6d 2d 6d 65 73 73 61 67 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 em-message......................
53aa0 20 20 20 20 20 20 20 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
53ac0 70 74 65 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 ptel-directives)))).............
53ae0 20 20 20 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 .............`',directive.......
53b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 ................gptel--system-me
53b20 73 73 61 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 ssage)............:tools.',(mapc
53b40 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 6f 6f 6c 73 ar.#'gptel-tool-name.gptel-tools
53b60 29 0a 20 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 )............:stream.,gptel-stre
53b80 61 6d 0a 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 am............:temperature.,gpte
53ba0 6c 2d 74 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 l-temperature............:max-to
53bc0 6b 65 6e 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 kens.,gptel-max-tokens..........
53be0 20 20 3a 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 ..:use-context.',gptel-use-conte
53c00 78 74 0a 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 xt............:track-media.,gpte
53c20 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 3a 69 6e 63 6c 75 64 l-track-media............:includ
53c40 65 2d 72 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 e-reasoning.,(let.((reasoning.gp
53c60 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 20 20 20 20 20 20 20 tel-include-reasoning)).........
53c80 20 20 20 20 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 ...........................(if.(
53ca0 65 71 20 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 eq.reasoning.'ignore)...........
53cc0 20 20 20 20 20 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 .............................''i
53ce0 67 6e 6f 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 gnore.reasoning))))).....(kill-n
53d00 65 77 20 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 ew.(pp-to-string.preset-code))..
53d20 20 20 20 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 ...(eval.preset-code).....(messa
53d40 67 65 20 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 ge."Preset.%s.saved..(Lisp.expre
53d60 73 73 69 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 ssion.for.preset.saved.to.kill-r
53d80 69 6e 67 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 ing)"..............(propertize.(
53da0 73 79 6d 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 symbol-name.name).'face.'highlig
53dc0 68 74 29 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 ht))))..(defvar.gptel--rewrite-d
53de0 69 72 65 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 irective).(defun.gptel--apply-pr
53e00 65 73 65 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 eset.(preset.&optional.setter)..
53e20 20 22 41 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 ."Apply.gptel.PRESET.with.SETTER
53e40 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 72 65 73 65 ...PRESET.is.the.name.of.a.prese
53e60 74 2c 20 6f 72 20 61 20 73 70 65 63 20 6f 66 20 74 68 65 20 66 6f 72 6d 0a 20 28 4e 41 4d 45 20 t,.or.a.spec.of.the.form..(NAME.
53e80 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
53ea0 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.
53ec0 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
53ee0 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
53f00 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
53f20 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
53f40 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
53f60 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
53f80 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
53fa0 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
53fc0 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-
53fe0 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)..............
54000 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
54020 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."...
54040 20 20 20 20 20 20 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
54060 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 28 63 6f 6e eset)))).......(setq.preset.(con
54080 73 20 70 72 65 73 65 74 20 73 70 65 63 29 29 29 29 0a 20 20 28 75 6e 6c 65 73 73 20 73 65 74 74 s.preset.spec))))...(unless.sett
540a0 65 72 20 28 73 65 74 71 20 73 65 74 74 65 72 20 23 27 73 65 74 29 29 0a 20 20 28 77 68 65 6e 2d er.(setq.setter.#'set))...(when-
540c0 6c 65 74 2a 20 28 28 66 75 6e 63 20 28 70 6c 69 73 74 2d 67 65 74 20 28 63 64 72 20 70 72 65 73 let*.((func.(plist-get.(cdr.pres
540e0 65 74 29 20 3a 70 72 65 29 29 29 20 28 66 75 6e 63 61 6c 6c 20 66 75 6e 63 29 29 0a 20 20 28 77 et).:pre))).(funcall.func))...(w
54100 68 65 6e 2d 6c 65 74 2a 20 28 28 70 61 72 65 6e 74 73 20 28 70 6c 69 73 74 2d 67 65 74 20 28 63 hen-let*.((parents.(plist-get.(c
54120 64 72 20 70 72 65 73 65 74 29 20 3a 70 61 72 65 6e 74 73 29 29 29 0a 20 20 20 20 28 6d 61 70 63 dr.preset).:parents))).....(mapc
54140 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 73 75 72 65 2d 6c .#'gptel--apply-preset.(ensure-l
54160 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 20 20 28 6c 61 6d ist.parents)))...(map-do....(lam
54180 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 6b 65 79 0a 20 20 bda.(key.val)......(pcase.key...
541a0 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 70 74 69 6f 6e 20 .....((or.:parents.:description.
541c0 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 6f 72 20 3a 73 79 :pre.:post).nil)........((or.:sy
541e0 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 69 74 65 2d 64 69 stem.:system-message.:rewrite-di
54200 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 6d 20 28 69 66 20 rective).........(let.((sym.(if.
54220 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 29 0a 20 20 20 20 (eq.key.:rewrite-directive).....
54240 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 2d 72 65 77 72 69 ...................'gptel--rewri
54260 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 6d 2d 6d 65 73 73 te-directive.'gptel--system-mess
54280 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 28 73 79 6d 62 6f age)))...........(if.(and.(symbo
542a0 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 6c 29 29 29 0a 20 lp.val).(not.(functionp.val)))..
542c0 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 72 65 63 74 69 76 .............(if-let*.((directiv
542e0 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 65 63 74 69 76 65 e.(alist-get.val.gptel-directive
54300 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 6e 63 61 6c 6c 20 s)))...................(funcall.
54320 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 20 20 20 20 20 20 setter.sym.directive)...........
54340 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 20 ......(user-error."gptel.preset.
54360 5c 22 25 73 5c 22 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 \"%s\":.Cannot.find.directive.%s
54380 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 28 63 ".............................(c
543a0 61 72 20 70 72 65 73 65 74 29 20 76 61 6c 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 ar.preset).val)).............(fu
543c0 6e 63 61 6c 6c 20 73 65 74 74 65 72 20 73 79 6d 20 76 61 6c 29 29 29 29 0a 20 20 20 20 20 20 20 ncall.setter.sym.val))))........
543e0 28 3a 62 61 63 6b 65 6e 64 0a 20 20 20 20 20 20 20 20 28 73 65 74 71 20 76 61 6c 20 28 63 6c 2d (:backend.........(setq.val.(cl-
54400 65 74 79 70 65 63 61 73 65 20 76 61 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 etypecase.val...................
54420 20 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 76 61 6c 29 0a 20 20 20 20 20 20 20 20 20 20 ..(gptel-backend.val)...........
54440 20 20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 20 28 67 70 74 65 6c 2d 67 65 74 2d 62 61 63 ..........(string.(gptel-get-bac
54460 6b 65 6e 64 20 76 61 6c 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 76 61 6c kend.val)))).........(unless.val
54480 0a 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 72 ...........(user-error."gptel.pr
544a0 65 73 65 74 20 5c 22 25 73 5c 22 3a 20 43 61 6e 6e 6f 74 20 66 69 6e 64 20 62 61 63 6b 65 6e 64 eset.\"%s\":.Cannot.find.backend
544c0 20 25 73 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 61 72 .%s.".......................(car
544e0 20 70 72 65 73 65 74 29 20 76 61 6c 29 29 0a 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 .preset).val)).........(funcall.
54500 73 65 74 74 65 72 20 27 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 76 61 6c 29 29 0a 20 20 20 20 setter.'gptel-backend.val)).....
54520 20 20 20 28 3a 74 6f 6f 6c 73 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ...(:tools......................
54540 20 20 20 20 3b 54 45 4d 50 20 43 6f 6e 66 69 72 6d 20 74 68 69 73 20 60 3a 61 70 70 65 6e 64 27 ....;TEMP.Confirm.this.`:append'
54560 20 63 6f 6e 76 65 6e 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 61 70 70 65 .convention.........(let*.((appe
54580 6e 64 20 28 77 68 65 6e 20 28 65 71 20 28 63 61 72 2d 73 61 66 65 20 76 61 6c 29 20 3a 61 70 70 nd.(when.(eq.(car-safe.val).:app
545a0 65 6e 64 29 20 28 73 65 74 71 20 76 61 6c 20 28 63 64 72 20 76 61 6c 29 29 20 74 29 29 0a 20 20 end).(setq.val.(cdr.val)).t))...
545c0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 6f 6f 6c 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 .............(tools.............
545e0 20 20 20 20 28 66 6c 61 74 74 65 6e 2d 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ....(flatten-list...............
54600 20 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 74 6f 6f 6c 2d 6e 61 6d 65 20 69 6e 20 28 65 6e ...(cl-loop.for.tool-name.in.(en
54620 73 75 72 65 2d 6c 69 73 74 20 76 61 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 sure-list.val)..................
54640 20 20 20 20 20 20 20 20 20 66 6f 72 20 74 6f 6f 6c 20 3d 20 28 63 6c 2d 65 74 79 70 65 63 61 73 .........for.tool.=.(cl-etypecas
54660 65 20 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 20 20 20 e.tool-name.....................
54680 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 74 6f 6f 6c 20 74 ...................(gptel-tool.t
546a0 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 20 20 20 20 ool-name).......................
546c0 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 69 67 6e 6f 72 65 .................(string.(ignore
546e0 2d 65 72 72 6f 72 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 -errors.........................
54700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d .........................(gptel-
54720 67 65 74 2d 74 6f 6f 6c 20 74 6f 6f 6c 2d 6e 61 6d 65 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 get-tool.tool-name))))..........
54740 20 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 74 6f 6f 6c .................do.(unless.tool
54760 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
54780 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 20 5c 22 25 73 5c 22 (user-error."gptel.preset.\"%s\"
547a0 3a 20 43 61 6e 6e 6f 74 20 66 69 6e 64 20 74 6f 6f 6c 20 25 73 2e 22 0a 20 20 20 20 20 20 20 20 :.Cannot.find.tool.%s.".........
547c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
547e0 20 20 20 28 63 61 72 20 70 72 65 73 65 74 29 20 76 61 6c 29 29 0a 20 20 20 20 20 20 20 20 20 20 ...(car.preset).val))...........
54800 20 20 20 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 29 29 29 29 ................collect.tool))))
54820 0a 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 73 65 74 74 65 72 20 27 67 70 74 65 ...........(funcall.setter.'gpte
54840 6c 2d 74 6f 6f 6c 73 20 3b 61 70 70 65 6e 64 20 6d 61 6b 65 73 20 61 20 63 6f 70 79 20 6f 66 20 l-tools.;append.makes.a.copy.of.
54860 67 70 74 65 6c 2d 74 6f 6f 6c 73 2c 20 69 6e 74 65 6e 74 69 6f 6e 61 6c 0a 20 20 20 20 20 20 20 gptel-tools,.intentional........
54880 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 61 70 70 65 6e 64 20 28 64 65 6c 65 74 65 2d 64 ............(if.append.(delete-d
548a0 75 70 73 20 28 61 70 70 65 6e 64 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 20 74 6f 6f 6c 73 29 29 20 ups.(append.gptel-tools.tools)).
548c0 74 6f 6f 6c 73 29 29 29 29 0a 20 20 20 20 20 20 20 28 28 61 6e 64 20 28 6c 65 74 20 73 79 6d 20 tools))))........((and.(let.sym.
548e0 28 6f 72 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 20 20 (or.(intern-soft................
54900 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 22 20 28 73 75 ............(concat."gptel-".(su
54920 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 29 0a 20 bstring.(symbol-name.key).1)))..
54940 20 20 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 .........................(intern
54960 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 20 20 -soft...........................
54980 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 20 28 73 .(concat."gptel--".(substring.(s
549a0 79 6d 62 6f 6c 2d 6e 61 6d 65 20 6b 65 79 29 20 31 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 ymbol-name.key).1)))))..........
549c0 20 20 20 20 28 67 75 61 72 64 20 28 61 6e 64 20 73 79 6d 20 28 62 6f 75 6e 64 70 20 73 79 6d 29 ....(guard.(and.sym.(boundp.sym)
549e0 29 29 29 0a 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 73 65 74 74 65 72 20 73 79 6d 20 ))).........(funcall.setter.sym.
54a00 76 61 6c 29 29 0a 20 20 20 20 20 20 20 28 5f 20 28 64 69 73 70 6c 61 79 2d 77 61 72 6e 69 6e 67 val))........(_.(display-warning
54a20 0a 20 20 20 20 20 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 ............'(gptel.presets)....
54a40 20 20 20 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 ........(format."gptel.preset.\"
54a60 25 73 5c 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 %s\":.setting.for.%s.not.found,.
54a80 69 67 6e 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 28 63 ignoring."....................(c
54aa0 61 72 20 70 72 65 73 65 74 29 20 6b 65 79 29 29 29 29 29 0a 20 20 20 28 63 64 72 20 70 72 65 73 ar.preset).key)))))....(cdr.pres
54ac0 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 6c 69 73 74 2d et))...(when-let*.((func.(plist-
54ae0 67 65 74 20 28 63 64 72 20 70 72 65 73 65 74 29 20 3a 70 6f 73 74 29 29 29 20 28 66 75 6e 63 61 get.(cdr.preset).:post))).(funca
54b00 6c 6c 20 66 75 6e 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 ll.func)))..(defun.gptel--preset
54b20 2d 73 79 6d 73 20 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 -syms.(preset)..."Return.a.list.
54b40 6f 66 20 67 70 74 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 of.gptel.variables.(symbols).set
54b60 20 62 79 20 50 52 45 53 45 54 2e 0a 0a 50 52 45 53 45 54 20 69 73 20 61 20 73 70 65 63 20 28 70 .by.PRESET...PRESET.is.a.spec.(p
54b80 6c 69 73 74 29 20 6f 66 20 6b 65 79 73 20 61 6e 64 20 76 61 6c 75 65 73 2e 22 0a 20 20 28 6c 65 list).of.keys.and.values."...(le
54ba0 74 2a 20 28 28 69 6e 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 t*.((index.preset)..........syms
54bc0 20 6b 65 79 20 76 61 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 .key.val).....(while.index......
54be0 20 28 73 65 74 71 20 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 .(setq.key.(pop.index).val.(pop.
54c00 69 6e 64 65 78 29 29 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 index)).......(pcase.key........
54c20 20 28 3a 64 65 73 63 72 69 70 74 69 6f 6e 29 0a 20 20 20 20 20 20 20 20 28 3a 70 61 72 65 6e 74 .(:description).........(:parent
54c40 73 0a 20 20 20 20 20 20 20 20 20 28 6d 61 70 63 20 28 6c 61 6d 62 64 61 20 28 70 61 72 65 6e 74 s..........(mapc.(lambda.(parent
54c60 2d 70 72 65 73 65 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 63 6f 6e 63 -preset)..................(nconc
54c80 20 73 79 6d 73 20 28 67 70 74 65 6c 2d 2d 70 72 65 73 65 74 2d 73 79 6d 73 0a 20 20 20 20 20 20 .syms.(gptel--preset-syms.......
54ca0 20 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 67 ........................(gptel-g
54cc0 65 74 2d 70 72 65 73 65 74 20 70 61 72 65 6e 74 2d 70 72 65 73 65 74 29 29 29 29 0a 20 20 20 20 et-preset.parent-preset)))).....
54ce0 20 20 20 20 20 20 20 20 20 20 20 28 65 6e 73 75 72 65 2d 6c 69 73 74 20 76 61 6c 29 29 29 0a 20 ...........(ensure-list.val)))..
54d00 20 20 20 20 20 20 20 28 3a 73 79 73 74 65 6d 20 28 70 75 73 68 20 27 67 70 74 65 6c 2d 2d 73 79 .......(:system.(push.'gptel--sy
54d20 73 74 65 6d 2d 6d 65 73 73 61 67 65 20 73 79 6d 73 29 29 0a 20 20 20 20 20 20 20 20 28 5f 20 28 stem-message.syms)).........(_.(
54d40 69 66 2d 6c 65 74 2a 20 28 28 76 61 72 20 28 6f 72 20 28 69 6e 74 65 72 6e 2d 73 6f 66 74 0a 20 if-let*.((var.(or.(intern-soft..
54d60 20 20 20 20 20 20 20 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 ..............................(c
54d80 6f 6e 63 61 74 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 oncat."gptel-".(substring.(symbo
54da0 6c 2d 6e 61 6d 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 l-name.key).1)))................
54dc0 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 66 74 0a 20 20 20 20 ...............(intern-soft.....
54de0 20 20 20 20 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 ...........................(conc
54e00 61 74 20 22 67 70 74 65 6c 2d 2d 22 20 28 73 75 62 73 74 72 69 6e 67 20 28 73 79 6d 62 6f 6c 2d at."gptel--".(substring.(symbol-
54e20 6e 61 6d 65 20 6b 65 79 29 20 31 29 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 name.key).1))))))...............
54e40 20 28 70 75 73 68 20 76 61 72 20 73 79 6d 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 .(push.var.syms)..............(d
54e60 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 20 20 27 28 67 isplay-warning...............'(g
54e80 70 74 65 6c 20 70 72 65 73 65 74 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 ptel.presets)...............(for
54ea0 6d 61 74 20 22 67 70 74 65 6c 20 70 72 65 73 65 74 20 5c 22 25 73 5c 22 3a 20 73 65 74 74 69 6e mat."gptel.preset.\"%s\":.settin
54ec0 67 20 66 6f 72 20 25 73 20 6e 6f 74 20 66 6f 75 6e 64 2c 20 69 67 6e 6f 72 69 6e 67 2e 22 0a 20 g.for.%s.not.found,.ignoring."..
54ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 61 72 20 70 72 65 73 65 74 .....................(car.preset
54f00 29 20 6b 65 79 29 29 29 29 29 29 0a 20 20 20 20 28 63 6c 2d 64 65 6c 65 74 65 2d 64 75 70 6c 69 ).key)))))).....(cl-delete-dupli
54f20 63 61 74 65 73 20 73 79 6d 73 29 29 29 0a 0a 28 64 65 66 6d 61 63 72 6f 20 67 70 74 65 6c 2d 77 cates.syms)))..(defmacro.gptel-w
54f40 69 74 68 2d 70 72 65 73 65 74 20 28 6e 61 6d 65 20 26 72 65 73 74 20 62 6f 64 79 29 0a 20 20 22 ith-preset.(name.&rest.body)..."
54f60 52 75 6e 20 42 4f 44 59 20 77 69 74 68 20 67 70 74 65 6c 20 70 72 65 73 65 74 20 4e 41 4d 45 20 Run.BODY.with.gptel.preset.NAME.
54f80 61 70 70 6c 69 65 64 2e 0a 0a 54 68 69 73 20 6d 61 63 72 6f 20 63 61 6e 20 62 65 20 75 73 65 64 applied...This.macro.can.be.used
54fa0 20 74 6f 20 63 72 65 61 74 65 20 60 67 70 74 65 6c 2d 72 65 71 75 65 73 74 27 20 63 6f 6d 6d 61 .to.create.`gptel-request'.comma
54fc0 6e 64 20 77 69 74 68 20 73 65 74 74 69 6e 67 73 0a 66 72 6f 6d 20 61 20 67 70 74 65 6c 20 70 72 nd.with.settings.from.a.gptel.pr
54fe0 65 73 65 74 20 61 70 70 6c 69 65 64 2e 20 20 4e 41 4d 45 20 69 73 20 74 68 65 20 70 72 65 73 65 eset.applied...NAME.is.the.prese
55000 74 20 6e 61 6d 65 2c 20 74 79 70 69 63 61 6c 6c 79 20 61 0a 73 79 6d 62 6f 6c 2e 22 0a 20 20 28 t.name,.typically.a.symbol."...(
55020 64 65 63 6c 61 72 65 20 28 69 6e 64 65 6e 74 20 31 29 29 0a 20 20 60 28 63 6c 2d 70 72 6f 67 76 declare.(indent.1))...`(cl-progv
55040 20 28 67 70 74 65 6c 2d 2d 70 72 65 73 65 74 2d 73 79 6d 73 0a 20 20 20 20 20 20 20 20 20 20 20 .(gptel--preset-syms............
55060 20 20 20 28 67 70 74 65 6c 2d 67 65 74 2d 70 72 65 73 65 74 20 2c 28 69 66 20 28 73 79 6d 62 6f ...(gptel-get-preset.,(if.(symbo
55080 6c 70 20 6e 61 6d 65 29 20 60 27 2c 6e 61 6d 65 20 6e 61 6d 65 29 29 29 0a 20 20 20 20 20 20 20 lp.name).`',name.name)))........
550a0 6e 69 6c 0a 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 61 70 70 6c 79 2d 70 72 65 73 65 74 20 2c 28 nil......(gptel--apply-preset.,(
550c0 69 66 20 28 73 79 6d 62 6f 6c 70 20 6e 61 6d 65 29 20 60 27 2c 6e 61 6d 65 20 6e 61 6d 65 29 29 if.(symbolp.name).`',name.name))
550e0 0a 20 20 20 20 20 2c 40 62 6f 64 79 29 29 0a 0a 3b 3b 3b 3b 20 50 72 65 73 65 74 73 20 69 6e 2d ......,@body))..;;;;.Presets.in-
55100 62 75 66 66 65 72 20 55 49 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 74 72 61 6e 73 66 6f 72 buffer.UI.(defun.gptel--transfor
55120 6d 2d 61 70 70 6c 79 2d 70 72 65 73 65 74 20 28 5f 66 73 6d 29 0a 20 20 22 41 70 70 6c 79 20 61 m-apply-preset.(_fsm)..."Apply.a
55140 20 67 70 74 65 6c 20 70 72 65 73 65 74 20 74 6f 20 74 68 65 20 62 75 66 66 65 72 20 64 65 70 65 .gptel.preset.to.the.buffer.depe
55160 6e 64 69 6e 67 20 6f 6e 20 74 68 65 20 70 72 6f 6d 70 74 2e 0a 0a 49 66 20 74 68 65 20 75 73 65 nding.on.the.prompt...If.the.use
55180 72 20 70 72 6f 6d 70 74 20 62 65 67 69 6e 73 20 77 69 74 68 20 40 66 6f 6f 2c 20 74 68 65 20 70 r.prompt.begins.with.@foo,.the.p
551a0 72 65 73 65 74 20 66 6f 6f 20 69 73 20 61 70 70 6c 69 65 64 2e 22 0a 20 20 28 77 68 65 6e 20 67 reset.foo.is.applied."...(when.g
551c0 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 70 72 65 73 65 74 73 0a 20 20 20 20 28 74 65 78 74 2d 70 72 ptel--known-presets.....(text-pr
551e0 6f 70 65 72 74 79 2d 73 65 61 72 63 68 2d 62 61 63 6b 77 61 72 64 20 27 67 70 74 65 6c 20 6e 69 operty-search-backward.'gptel.ni
55200 6c 20 74 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 l.t).....(while.(re-search-forwa
55220 72 64 20 22 40 5c 5c 28 5b 5e 5b 3a 62 6c 61 6e 6b 3a 5d 5d 2b 5c 5c 29 5c 5c 5f 3e 22 20 6e 69 rd."@\\([^[:blank:]]+\\)\\_>".ni
55240 6c 20 74 29 0a 20 20 20 20 20 20 3b 3b 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 63 6f 6e 76 l.t).......;;.The.following.conv
55260 6f 6c 75 74 65 64 20 63 68 65 63 6b 20 69 73 20 62 65 63 61 75 73 65 20 72 65 2d 73 65 61 72 63 oluted.check.is.because.re-searc
55280 68 20 69 73 20 6d 75 63 68 20 66 61 73 74 65 72 20 69 66 0a 20 20 20 20 20 20 3b 3b 20 74 68 65 h.is.much.faster.if.......;;.the
552a0 20 73 65 61 72 63 68 20 70 61 74 74 65 72 6e 20 62 65 67 69 6e 73 20 77 69 74 68 20 61 20 6e 6f .search.pattern.begins.with.a.no
552c0 6e 2d 77 68 69 74 65 73 70 61 63 65 20 63 68 61 72 2e 0a 20 20 20 20 20 20 28 77 68 65 6e 20 28 n-whitespace.char........(when.(
552e0 6f 72 20 28 3d 20 28 6d 61 74 63 68 2d 62 65 67 69 6e 6e 69 6e 67 20 30 29 20 28 70 6f 69 6e 74 or.(=.(match-beginning.0).(point
55300 2d 6d 69 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 65 6d 71 20 28 63 68 -min)).................(memq.(ch
55320 61 72 2d 73 79 6e 74 61 78 20 28 63 68 61 72 2d 62 65 66 6f 72 65 20 28 6d 61 74 63 68 2d 62 65 ar-syntax.(char-before.(match-be
55340 67 69 6e 6e 69 6e 67 20 30 29 29 29 20 27 28 33 32 20 36 32 29 29 29 0a 20 20 20 20 20 20 20 20 ginning.0))).'(32.62))).........
55360 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 6e 61 6d 65 20 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 20 (when-let*.((name.(match-string.
55380 31 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 72 65 73 65 74 20 1)).....................(preset.
553a0 28 6f 72 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 (or.(gptel-get-preset.(intern-so
553c0 66 74 20 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 ft.name)).......................
553e0 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 67 65 74 2d 70 72 65 73 65 74 20 6e 61 6d 65 ..........(gptel-get-preset.name
55400 29 29 29 29 0a 20 20 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 ))))...........(delete-region.(m
55420 61 74 63 68 2d 62 65 67 69 6e 6e 69 6e 67 20 30 29 20 28 6d 61 74 63 68 2d 65 6e 64 20 30 29 29 atch-beginning.0).(match-end.0))
55440 0a 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 61 70 70 6c 79 2d 70 72 65 73 65 74 20 ...........(gptel--apply-preset.
55460 28 63 6f 6e 73 20 6e 61 6d 65 20 70 72 65 73 65 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 (cons.name.preset)..............
55480 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 73 79 6d 20 76 ..................(lambda.(sym.v
554a0 61 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 al).............................
554c0 20 20 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 .....(set.(make-local-variable.s
554e0 79 6d 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 ym).val))))))))..;;.;;.Alternati
55500 76 65 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 ve.approach.with.string.search.;
55520 3b 20 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 ;.(search-forward."@".nil.t).;;.
55540 28 69 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 (if.(and.(memq.(char-syntax.(cha
55560 72 2d 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 r-before.(1-.(point)))).'(32.62)
55580 29 0a 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 ).;;..........(looking-at."\\([^
555a0 5b 3a 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 [:blank:]]+?\\)[[:punct:]]?\\s-+
555c0 22 29 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 ")).;;.....do-stuff)..(defun.gpt
555e0 65 6c 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 el--fontify-preset-keyword.(end)
55600 0a 20 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 ..."Font-lock.function.for.prese
55620 74 20 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 t.indicators.in.chat.buffers...R
55640 65 74 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 eturn.preset.fontification.info.
55660 66 6f 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 for.text.up.to.END."...(and.(re-
55680 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 6b 3a 5d 5d search-forward."@\\([^[:blank:]]
556a0 2b 5c 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 +\\)\\_>".end.t)........(or.(=.(
556c0 6d 61 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 match-beginning.0).(point-min)).
556e0 20 20 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 ...........(memq.(char-syntax.(c
55700 68 61 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 har-before.(match-beginning.0)))
55720 20 27 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 .'(32.62)))........(not.(plist-g
55740 65 74 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 et.(text-properties-at.(match-be
55760 67 69 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 ginning.1)).'gptel))))..(defun.g
55780 70 74 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 ptel-preset-capf.()..."Completio
557a0 6e 20 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 n.at.point.for.gptel.presets.in.
557c0 60 67 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 `gptel-mode'...Add.this.to.`comp
557e0 6c 65 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 letion-at-point-functions'."...(
55800 61 6e 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 and.gptel--known-presets........
55820 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 28 6c 65 74 20 28 28 (save-excursion..........(let.((
55840 6e 75 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 num.(-.(skip-syntax-backward."w_
55860 22 29 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 "))))............(when.(eql.(cha
55880 72 2d 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 r-before).?@)..............(list
558a0 20 28 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 .(point).(+.(point).num)........
558c0 20 20 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 ............gptel--known-presets
558e0 0a 20 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 ....................:exclusive.'
55900 6e 6f 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 no....................:annotatio
55920 6e 2d 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 n-function....................#'
55940 28 6c 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 (lambda.(c).(thread-first.......
55960 20 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-
55980 73 6f 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 soft.c).........................
559a0 20 20 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 ......(assq.gptel--known-presets
559c0 29 20 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 ).(cdr).........................
559e0 20 20 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 ......(plist-get.:description)))
55a00 29 29 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 ))))))..(defun.gptel--prettify-p
55a20 72 65 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 reset.()..."Get.visual.and.compl
55a40 65 74 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 etion.help.with.presets.in.gptel
55a60 20 62 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 .buffers...Intended.to.be.added.
55a80 74 6f 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 to.`gptel-mode-hook'."...(let.((
55aa0 6b 65 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 keyword.'((gptel--fontify-preset
55ac0 2d 6b 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 -keyword.....................;;.
55ae0 73 75 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 subexp.0.here.is.not.required,.w
55b00 65 20 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 e.retain.it.to.make.it..........
55b20 20 20 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 ...........;;.easy.to.swtich.to.
55b40 6d 6f 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 more.complex.patterns.in.the.fut
55b60 75 72 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 ure.....................0.(when-
55b80 6c 65 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 let*.((comps.(all-completions.(m
55ba0 61 74 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 atch-string.1)..................
55bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 2d .........................gptel--
55be0 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 20 20 20 20 20 20 20 known-presets)).................
55c00 20 20 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 ..................((member.(matc
55c20 68 2d 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 h-string.1).comps)))............
55c40 20 20 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 ............'(:box.-1.:inherit.s
55c60 65 63 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 econdary-selection))............
55c80 20 20 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 .........prepend)))).....(cond..
55ca0 20 20 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 ....(gptel-mode.......(font-lock
55cc0 2d 61 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 -add-keywords.nil.keyword.t)....
55ce0 20 20 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 ...(add-hook.'completion-at-poin
55d00 74 2d 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 t-functions.#'gptel-preset-capf.
55d20 6e 69 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 nil.t))......(t.(font-lock-remov
55d40 65 2d 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 e-keywords.nil.keyword).........
55d60 28 72 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 (remove-hook.'completion-at-poin
55d80 74 2d 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 t-functions.#'gptel-preset-capf.
55da0 74 29 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 t)))))....;;;.Response.tweaking.
55dc0 63 6f 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 commands..(defun.gptel--attach-r
55de0 65 73 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 esponse-history.(history.&option
55e00 61 6c 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 al.buf)..."Attach.HISTORY.to.the
55e20 20 6e 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 .next.gptel.response.in.buffer.B
55e40 55 46 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 UF...HISTORY.is.a.list.of.string
55e60 73 20 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 s.typically.containing.text.repl
55e80 61 63 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 aced.by.gptel...BUF.is.the.curre
55ea0 6e 74 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 nt.buffer.if.not.specified...Thi
55ec0 73 20 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 s.is.used.to.maintain.variants.o
55ee0 66 20 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 f.prompts.or.responses.to.diff.a
55f00 67 61 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 gainst.if.required."...(with-cur
55f20 72 65 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 rent-buffer.(or.buf.(current-buf
55f40 66 65 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 fer)).....(letrec.((gptel--attac
55f60 68 2d 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 h-after...............(lambda.(b
55f80 20 65 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 .e).................(when.(and.b
55fa0 20 65 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 .e)...................(add-text-
55fc0 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 62 20 properties....................b.
55fe0 65 20 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 e.`(gptel-history...............
56000 20 20 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 ...........,(append.(ensure-list
56020 20 68 69 73 74 6f 72 79 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .history).......................
56040 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 31 2d 20 65 29 20 27 .....(get-char-property.(1-.e).'
56060 67 70 74 65 6c 2d 68 69 73 74 6f 72 79 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 gptel-history)).................
56080 20 20 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 .........front-sticky.(gptel.gpt
560a0 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 20 20 28 el-history)))).................(
560c0 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
560e0 2d 66 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 -functions......................
56100 20 20 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 ........gptel--attach-after.'loc
56120 61 6c 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 al)))).......(add-hook.'gptel-po
56140 73 74 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 st-response-functions.gptel--att
56160 61 63 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 ach-after.................nil.'l
56180 6f 63 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 ocal))))..(defun.gptel--ediff.(&
561a0 6f 70 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 optional.arg.bounds-func)..."Edi
561c0 66 66 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 ff.response.at.point.against.pre
561e0 76 69 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 vious.gptel.responses...If.prefi
56200 78 20 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 x.ARG.is.non-nil,.select.the.pre
56220 76 69 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 vious.response.to.ediff.against.
56240 69 6e 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 interactively...If.specified,.us
56260 65 20 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 e.BOUNDS-FUNC.to.compute.the.bou
56280 6e 64 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 nds.of.the.response.at.point...T
562a0 68 69 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 his.can.be.used.to.include.addit
562c0 69 6f 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 ional.context.for.the.ediff.sess
562e0 69 6f 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 ion."...(interactive."P")...(whe
56300 6e 20 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 n.(gptel--at-response-history-p)
56320 0a 20 20 20 20 28 70 63 61 73 65 2d 6c 65 74 2a 20 28 28 60 28 2c 62 65 67 20 2e 20 2c 65 6e 64 .....(pcase-let*.((`(,beg...,end
56340 29 20 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 ).(funcall.(or.bounds-func.#'gpt
56360 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 29 0a 20 20 20 20 20 el--get-response-bounds)))......
56380 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 65 76 2d 72 65 73 70 6f 6e 73 65 0a 20 20 20 20 20 ............(prev-response......
563a0 20 20 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 .............(if.arg............
563c0 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6d 70 6c 65 74 69 6e 67 2d 72 65 61 64 20 22 43 68 6f ...........(completing-read."Cho
563e0 6f 73 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 ose.response.variant.to.diff.aga
56400 69 6e 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 inst:.".........................
56420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 65 74 2d 63 68 61 72 2d 70 72 6f 70 65 72 74 ...............(get-char-propert
56440 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 0a 20 20 20 20 20 20 y.(point).'gptel-history).......
56460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
56480 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 20 20 20 28 63 61 72 .nil.t).....................(car
564a0 2d 73 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 -safe.(get-char-property.(point)
564c0 20 27 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 .'gptel-history)))).............
564e0 20 20 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 .....(buffer-mode.major-mode)...
56500 20 20 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 ...............(bufname.(buffer-
56520 6e 61 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 name))..................(`(,new-
56540 62 75 66 20 2c 6e 65 77 2d 62 65 67 20 2c 6e 65 77 2d 65 6e 64 29 0a 20 20 20 20 20 20 20 20 20 buf.,new-beg.,new-end)..........
56560 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 0a 20 20 .........(with-current-buffer...
56580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 65 74 2d 62 75 66 66 65 72 2d ....................(get-buffer-
565a0 63 72 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 create.(concat.bufname."-PREVIOU
565c0 53 2d 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 S-*")).....................(let.
565e0 28 28 69 6e 68 69 62 69 74 2d 72 65 61 64 2d 6f 6e 6c 79 20 74 29 29 0a 20 20 20 20 20 20 20 20 ((inhibit-read-only.t)).........
56600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 72 61 73 65 2d 62 75 66 66 65 72 29 0a 20 20 20 ..............(erase-buffer)....
56620 20 20 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 ...................(delay-mode-h
56640 6f 6f 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 ooks.(funcall.buffer-mode)).....
56660 20 20 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 ..................(visual-line-m
56680 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 28 69 6e 73 65 ode).......................(inse
566a0 72 74 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 rt.prev-response)...............
566c0 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 0a ........(goto-char.(point-min)).
566e0 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 28 63 75 72 ......................(list.(cur
56700 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 70 6f 69 6e 74 2d rent-buffer).(point-min).(point-
56720 6d 61 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 max)))))).......(unless.prev-res
56740 70 6f 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 ponse.(user-error."gptel.respons
56760 65 20 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 e.is.additive:.no.changes.to.edi
56780 66 66 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 ff")).......(require.'ediff)....
567a0 20 20 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 ...(letrec.((cwc.(current-window
567c0 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 20 20 -configuration))................
567e0 28 67 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 (gptel--ediff-restore...........
56800 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 20 ......(lambda.()................
56820 20 20 20 28 77 68 65 6e 20 28 77 69 6e 64 6f 77 2d 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2d 70 ...(when.(window-configuration-p
56840 20 63 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 .cwc).....................(set-w
56860 69 6e 64 6f 77 2d 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 63 77 63 29 29 0a 20 20 20 20 20 20 indow-configuration.cwc)).......
56880 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 28 67 65 74 2d 62 75 ............(kill-buffer.(get-bu
568a0 66 66 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 ffer.(concat.bufname."-PREVIOUS-
568c0 2a 22 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 *")))...................(kill-bu
568e0 66 66 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 ffer.(get-buffer.(concat.bufname
56900 20 22 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 ."-CURRENT-*")))................
56920 20 20 20 28 72 65 6d 6f 76 65 2d 68 6f 6f 6b 20 27 65 64 69 66 66 2d 71 75 69 74 2d 68 6f 6f 6b ...(remove-hook.'ediff-quit-hook
56940 20 67 70 74 65 6c 2d 2d 65 64 69 66 66 2d 72 65 73 74 6f 72 65 29 29 29 29 0a 20 20 20 20 20 20 .gptel--ediff-restore)))).......
56960 20 20 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 ..(add-hook.'ediff-quit-hook.gpt
56980 65 6c 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 el--ediff-restore).........(appl
569a0 79 0a 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 y..........#'ediff-regions-inter
569c0 6e 61 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 nal..........(get-buffer.(ediff-
569e0 6d 61 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 make-cloned-buffer.(current-buff
56a00 65 72 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 er)."-CURRENT-*"))..........beg.
56a20 65 6e 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 end.new-buf.new-beg.new-end.....
56a40 20 20 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 .....nil..........(list.'ediff-r
56a60 65 67 69 6f 6e 73 2d 77 6f 72 64 77 69 73 65 20 27 77 6f 72 64 2d 77 69 73 65 20 6e 69 6c 29 0a egions-wordwise.'word-wise.nil).
56a80 20 20 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 .........;;.(if.(transient-arg-v
56aa0 61 6c 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 alue."-w".args)..........;;.....
56ac0 28 6c 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 (list.'ediff-regions-wordwise.'w
56ae0 6f 72 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 ord-wise.nil)..........;;...(lis
56b00 74 20 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 t.'ediff-regions-linewise.nil.ni
56b20 6c 29 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 l))..........)))))..(defun.gptel
56b40 2d 2d 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 --mark-response.()..."Mark.gptel
56b60 20 72 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 .response.at.point,.if.any."...(
56b80 69 6e 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 interactive)...(unless.(gptel--i
56ba0 6e 2d 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 n-response-p).(user-error."No.gp
56bc0 74 65 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 tel.response.at.point"))...(pcas
56be0 65 2d 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 e-let.((`(,beg...,end).(gptel--g
56c00 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 28 67 6f 74 6f 2d et-response-bounds))).....(goto-
56c20 63 68 61 72 20 62 65 67 29 20 28 70 75 73 68 2d 6d 61 72 6b 29 20 28 67 6f 74 6f 2d 63 68 61 72 char.beg).(push-mark).(goto-char
56c40 20 65 6e 64 29 20 28 61 63 74 69 76 61 74 65 2d 6d 61 72 6b 29 29 29 0a 0a 28 64 65 66 75 6e 20 .end).(activate-mark)))..(defun.
56c60 67 70 74 65 6c 2d 2d 70 72 65 76 69 6f 75 73 2d 76 61 72 69 61 6e 74 20 28 26 6f 70 74 69 6f 6e gptel--previous-variant.(&option
56c80 61 6c 20 61 72 67 29 0a 20 20 22 53 77 69 74 63 68 20 74 6f 20 70 72 65 76 69 6f 75 73 20 67 70 al.arg)..."Switch.to.previous.gp
56ca0 74 65 6c 2d 72 65 73 70 6f 6e 73 65 20 61 74 20 74 68 69 73 20 70 6f 69 6e 74 2c 20 69 66 20 69 tel-response.at.this.point,.if.i
56cc0 74 20 65 78 69 73 74 73 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 20 22 70 22 29 0a 20 t.exists."...(interactive."p")..
56ce0 20 28 70 63 61 73 65 2d 6c 65 74 2a 20 28 28 60 28 2c 62 65 67 20 2e 20 2c 65 6e 64 29 20 28 67 .(pcase-let*.((`(,beg...,end).(g
56d00 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 29 29 0a 20 20 20 20 ptel--get-response-bounds)).....
56d20 20 20 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 ...........(history.(get-char-pr
56d40 6f 70 65 72 74 79 20 28 70 6f 69 6e 74 29 20 27 67 70 74 65 6c 2d 68 69 73 74 6f 72 79 29 29 0a operty.(point).'gptel-history)).
56d60 20 20 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 ...............(alt-response.(ca
56d80 72 2d 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 r-safe.history))................
56da0 28 6f 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 (offset)).....(unless.(and.histo
56dc0 72 79 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 ry.alt-response).......(user-err
56de0 6f 72 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 or."No.variant.responses.availab
56e00 6c 65 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 le")).....(if.(>.arg.0).........
56e20 28 73 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 (setq.history.(append.(cdr.histo
56e40 72 79 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ry).............................
56e60 20 20 28 6c 69 73 74 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f ..(list.(buffer-substring-no-pro
56e80 70 65 72 74 69 65 73 20 62 65 67 20 65 6e 64 29 29 29 29 0a 20 20 20 20 20 20 28 73 65 74 71 0a perties.beg.end)))).......(setq.
56ea0 20 20 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 .......alt-response.(car.(last.h
56ec0 69 73 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 istory))........history.(cons.(b
56ee0 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 62 65 uffer-substring-no-properties.be
56f00 67 20 65 6e 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 62 75 g.end)......................(nbu
56f20 74 6c 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 tlast.history)))).....(add-text-
56f40 70 72 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 properties..............0.(lengt
56f60 68 20 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 h.alt-response)..............`(g
56f80 70 74 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 ptel.response.gptel-history.,his
56fa0 74 6f 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 tory)..............alt-response)
56fc0 0a 20 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 .....(setq.offset.(min.(-.(point
56fe0 29 20 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 ).beg).(1-.(length.alt-response)
57000 29 29 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 ))).....(delete-region.beg.end).
57020 20 20 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 ....(insert.alt-response).....(g
57040 6f 74 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 oto-char.(+.beg.offset)).....(pu
57060 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 62 lse-momentary-highlight-region.b
57080 65 67 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 eg.(+.beg.(length.alt-response))
570a0 29 29 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 )))..(defun.gptel--next-variant.
570c0 28 26 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 (&optional.arg)..."Switch.to.nex
570e0 74 20 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 t.gptel-response.at.this.point,.
57100 69 66 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 if.it.exists."...(interactive."p
57120 22 29 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 ")...(gptel--previous-variant.(-
57140 20 61 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 .arg)))..(provide.'gptel).;;;.gp
57160 74 65 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 tel.el.ends.here..;;.Local.Varia
57180 62 6c 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 bles:.;;.bug-reference-url-forma
571a0 74 3a 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 t:."https://github.com/karthink/
571c0 67 70 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 gptel/issues/%s".;;.End:........
571e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
57200 67 70 74 65 6c 2d 30 2e 39 2e 38 2e 35 2f 67 70 74 65 6c 2d 61 6e 74 68 72 6f 70 69 63 2e 65 6c gptel-0.9.8.5/gptel-anthropic.el
57220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
57240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
57260 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
57280 30 30 37 33 36 36 37 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 35 31 31 32 00 20 30 00 00 00 0073667.00000000000.015112..0...
572a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
572c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
572e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
57300 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...................
57320 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...................
57340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
57360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
57380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
573a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
573c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
573e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
57400 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
57420 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..-*-
57440 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
57460 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
57480 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
574a0 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
574c0 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
574e0 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
57500 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
57520 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
57540 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
57560 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
57580 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.;
575a0 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
575c0 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
575e0 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
57600 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
57620 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.
57640 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
57660 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
57680 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
576a0 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...;;
576c0 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
576e0 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
57700 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...
57720 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
57740 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:..;
57760 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
57780 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..
577a0 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).
577c0 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)
577e0 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-
57800 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.
57820 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-
57840 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-
57860 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
57880 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
578a0 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
578c0 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
578e0 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
57900 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
57920 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
57940 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
57960 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-
57980 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)................
579a0 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)...
579c0 20 20 20 20 20 20 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
579e0 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
57a00 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.
57a20 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.:
57a40 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
57a60 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....)).
57a80 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
57aa0 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
57ac0 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
57ae0 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.
57b00 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.
57b20 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
57b40 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
57b60 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.
57b80 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.
57ba0 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
57bc0 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!..;
57be0 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.
57c00 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
57c20 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
57c40 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
57c60 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
57c80 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
57ca0 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.
57cc0 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
57ce0 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
57d00 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
57d20 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
57d40 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
57d60 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
57d80 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
57da0 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
57dc0 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-
57de0 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
57e00 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.
57e20 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)..
57e40 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
57e60 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
57e80 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
57ea0 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
57ec0 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.(
57ee0 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)).
57f00 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
57f20 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..
57f40 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_
57f60 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
57f80 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).
57fa0 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
57fc0 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
57fe0 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
58000 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)))..........
58020 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
58040 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))................
58060 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
58080 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
580a0 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
580c0 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
580e0 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
58100 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))).....................(
58120 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
58140 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..................
58160 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..........
58180 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.(
581a0 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))).
581c0 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
581e0 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
58200 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
58220 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............
58240 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
58260 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
58280 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
582a0 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.:
582c0 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)))....................
582e0 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.
58300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
58320 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
58340 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))))))))........
58360 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
58380 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
583a0 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?.............(
583c0 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)
583e0 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
58400 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).:
58420 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)))...............(
58440 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)..
58460 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
58480 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
584a0 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"
584c0 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......
584e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
58500 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
58520 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)........................
58540 20 20 20 20 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
58560 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)).....
58580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
585a0 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
585c0 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
585e0 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
58600 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)).....
58620 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
58640 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)))))..........
58660 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
58680 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.........
586a0 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
586c0 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.......
586e0 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
58700 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
58720 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*.((
58740 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
58760 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
58780 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))))..........................(
587a0 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
587c0 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....................
587e0 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-
58800 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)...........................
58820 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
58840 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))))..................
58860 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-
58880 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
588a0 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
588c0 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)).
588e0 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.
58900 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
58920 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:.................;;.
58940 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
58960 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.
58980 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
589a0 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....
589c0 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
589e0 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
58a00 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
58a20 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
58a40 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.:
58a60 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
58a80 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.
58aa0 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
58ac0 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
58ae0 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
58b00 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
58b20 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)......
58b40 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
58b60 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))........
58b80 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
58ba0 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
58bc0 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
58be0 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
58c00 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)))...
58c20 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
58c40 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
58c60 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........
58c80 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........
58ca0 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..............
58cc0 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...................`
58ce0 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".............
58d00 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
58d20 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
58d40 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..............................
58d60 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-
58d80 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)))..
58da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
58dc0 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
58de0 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........................
58e00 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-
58e20 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)))).........
58e40 20 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
58e60 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
58e80 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))).......................
58ea0 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
58ec0 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
58ee0 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 )))))...........................
58f00 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
58f20 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...
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 20 20 20 20 20 20 ................................
58f60 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
58f80 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").........................
58fa0 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
58fc0 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)))..................
58fe0 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))))))..
59000 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.:
59020 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
59040 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
59060 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.
59080 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
590a0 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.(
590c0 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)..............
590e0 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.
59100 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
59120 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
59140 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)....
59160 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.
59180 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
591a0 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))).......................
591c0 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-
591e0 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.........
59200 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
59220 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
59240 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
59260 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.................
59280 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
592a0 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)))))))..
592c0 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)))....
592e0 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
59300 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))))
59320 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
59340 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
59360 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.............
59380 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
593a0 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))))....
593c0 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)
593e0 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.
59400 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)))...
59420 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
59440 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......................
59460 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
59480 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)))).......
594a0 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.
594c0 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
594e0 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)
59500 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
59520 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
59540 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
59560 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
59580 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.
595a0 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
595c0 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........
595e0 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.'
59600 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-
59620 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
59640 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
59660 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.=.
59680 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.(
596a0 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
596c0 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
596e0 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
59700 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.
59720 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
59740 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
59760 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
59780 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.....
597a0 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
597c0 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
597e0 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....
59800 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
59820 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
59840 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
59860 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
59880 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))).
598a0 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.:
598c0 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
598e0 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.
59900 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
59920 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
59940 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
59960 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
59980 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
599a0 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
599c0 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)).......
599e0 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).....
59a00 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
59a20 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
59a40 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
59a60 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)))...
59a80 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-
59aa0 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
59ac0 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
59ae0 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
59b00 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
59b20 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."...(
59b40 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..........`(:
59b60 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-
59b80 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
59ba0 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)........
59bc0 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
59be0 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
59c00 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-
59c20 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.(
59c40 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
59c60 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))...............
59c80 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)
59ca0 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
59cc0 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
59ce0 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
59d00 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....................
59d20 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--
59d40 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..................
59d60 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
59d80 68 65 6d 65 72 61 6c 22 29 29 5d 29 0a 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 hemeral"))]).........(plist-put.
59da0 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 73 prompts-plist.:system.gptel--sys
59dc0 74 65 6d 2d 6d 65 73 73 61 67 65 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 74 tem-message))).....(when.gptel-t
59de0 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
59e00 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
59e20 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 2d 74 perature)).....(when.gptel-use-t
59e40 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 2d 74 ools.......(when.(eq.gptel-use-t
59e60 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 74 20 ools.'force).........(plist-put.
59e80 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 27 28 3a 74 79 prompts-plist.:tool_choice.'(:ty
59ea0 70 65 20 22 61 6e 79 22 29 29 29 0a 20 20 20 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 74 6f pe."any"))).......(when.gptel-to
59ec0 6f 6c 73 0a 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 74 6f 6f 6c 73 2d 61 72 72 61 79 20 28 ols.........(let.((tools-array.(
59ee0 67 70 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 gptel--parse-tools.backend.gptel
59f00 2d 74 6f 6f 6c 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 70 -tools)))...........(plist-put.p
59f20 72 6f 6d 70 74 73 2d 70 6c 69 73 74 20 3a 74 6f 6f 6c 73 20 74 6f 6f 6c 73 2d 61 72 72 61 79 29 rompts-plist.:tools.tools-array)
59f40 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 61 6e 64 20 28 6f 72 20 28 65 71 20 67 70 ...........(when.(and.(or.(eq.gp
59f60 74 65 6c 2d 63 61 63 68 65 20 74 29 20 28 6d 65 6d 71 20 27 74 6f 6f 6c 20 67 70 74 65 6c 2d 63 tel-cache.t).(memq.'tool.gptel-c
59f80 61 63 68 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 28 67 70 74 ache))......................(gpt
59fa0 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 20 el--model-capable-p.'cache))....
59fc0 20 20 20 20 20 20 20 20 20 28 6e 63 6f 6e 63 20 28 61 72 65 66 20 74 6f 6f 6c 73 2d 61 72 72 61 .........(nconc.(aref.tools-arra
59fe0 79 20 28 31 2d 20 28 6c 65 6e 67 74 68 20 74 6f 6f 6c 73 2d 61 72 72 61 79 29 29 29 0a 20 20 20 y.(1-.(length.tools-array)))....
5a000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 28 3a 63 61 63 68 65 5f 63 6f 6e 74 72 6f 6c ................'(:cache_control
5a020 20 28 3a 74 79 70 65 20 22 65 70 68 65 6d 65 72 61 6c 22 29 29 29 29 29 29 29 0a 20 20 20 20 3b .(:type."ephemeral"))))))).....;
5a040 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
5a060 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
5a080 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
5a0a0 74 0a 20 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 t......(gptel-backend-request-pa
5a0c0 72 61 6d 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 rams.gptel-backend)......(gptel-
5a0e0 2d 6d 6f 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 -model-request-params..gptel-mod
5a100 65 6c 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 el))))..(cl-defmethod.gptel--par
5a120 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 6f se-tools.((_backend.gptel-anthro
5a140 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 68 pic).tools)..."Parse.TOOLS.to.th
5a160 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 20 e.Anthropic.API.tool.definition.
5a180 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 6c spec...TOOLS.is.a.list.of.`gptel
5a1a0 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 76 -tool'.structs,.which.see."...(v
5a1c0 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 74 concat....(mapcar.....(lambda.(t
5a1e0 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 6f ool).......(list.:name.(gptel-to
5a200 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 72 ol-name.tool).............:descr
5a220 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 74 iption.(gptel-tool-description.t
5a240 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 3b ool).............:input_schema.;
5a260 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 68 NOTE:.Anthropic.wants."{}".if.th
5a280 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 75 e.function.takes.no.args,.not.nu
5a2a0 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 65 ll.............(list.:type."obje
5a2c0 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 65 ct"...................;;.See.the
5a2e0 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 65 .generic.implementation.for.an.e
5a300 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 20 xplanation.of.this..............
5a320 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 20 .....;;.transformation..........
5a340 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 20 ..........:properties...........
5a360 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 20 ........(cl-loop................
5a380 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 20 ....for.arg.in.(gptel-tool-args.
5a3a0 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 67 tool)....................for.arg
5a3c0 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 20 spec.=.(copy-sequence.arg)......
5a3e0 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 2d ..............for.name.=.(plist-
5a400 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 6e get.arg.:name).;handled.differen
5a420 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 61 tly....................for.newna
5a440 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 61 me.=.(or.(and.(keywordp.name).na
5a460 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 20 me).............................
5a480 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 3a .........(make-symbol.(concat.":
5a4a0 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 20 ".name)))....................do.
5a4c0 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 47 .................;ARGSPEC.is.ARG
5a4e0 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 20 .without.unrecognized.keys......
5a500 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 3a ..............(cl-remf.argspec.:
5a520 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 6d name)....................(cl-rem
5a540 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 20 f.argspec.:optional)............
5a560 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 67 ........if.(equal.(plist-get.arg
5a580 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 20 .:type)."object")...............
5a5a0 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 72 .....do.(unless.(plist-member.ar
5a5c0 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 20 gspec.:required)................
5a5e0 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 71 .........(plist-put.argspec.:req
5a600 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 70 uired.[]))....................ap
5a620 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 20 pend.(list.newname.argspec))....
5a640 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 20 ...............:required........
5a660 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 20 ...........(vconcat.............
5a680 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........
5a6a0 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.(
5a6c0 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 6f arg).(and.(not.(plist-get.arg.:o
5a6e0 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 20 ptional)).......................
5a700 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 74 ......................(plist-get
5a720 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 20 .arg.:name)))...................
5a740 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 6f ............(gptel-tool-args.too
5a760 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 29 l))))))).....(ensure-list.tools)
5a780 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-
5a7a0 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 6e tool-results.((_backend.gptel-an
5a7c0 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 70 thropic).tool-use)..."Return.a.p
5a7e0 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 6c rompt.containing.tool.call.resul
5a800 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 6c ts.in.TOOL-USE...TOOL-USE.is.a.l
5a820 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 61 ist.of.plists.containing.tool.na
5a840 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 2e mes,.arguments.and.call.results.
5a860 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 65 "...;;.(declare.(side-effect-fre
5a880 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 20 e.t))...(list....:role."user"...
5a8a0 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 61 .:content....(vconcat.....(mapca
5a8c0 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 20 r......(lambda.(tool-call)......
5a8e0 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 6c ..(let*.((result.(plist-get.tool
5a900 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 66 -call.:result))...............(f
5a920 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 74 ormatted................(list.:t
5a940 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 20 ype."tool_result"...............
5a960 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 74 .......:tool_use_id.(plist-get.t
5a980 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 20 ool-call.:id)...................
5a9a0 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 29 ...:content.(if.(stringp.result)
5a9c0 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 20 .result.........................
5a9e0 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 29 ........(prin1-to-string.result)
5aa00 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 20 ))))..........(prog1.formatted..
5aa20 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 2d ..........(when.(plist-get.tool-
5aa40 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 74 call.:error)..............(plist
5aa60 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 0a -put.formatted.:is_error.t))))).
5aa80 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 60 .....tool-use))))..;;.NOTE:.No.`
5aaa0 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
5aac0 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 65 uired.for.gptel-anthropic,.since
5aae0 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 65 .;;.this.is.handled.by.its.defge
5ab00 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 52 neric.implementation..;;.TODO:.R
5ab20 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 65 emove.these.functions.(#792).(de
5ab40 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 6c fun.gptel--anthropic-format-tool
5ab60 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 0a -id.(tool-id)...(unless.tool-id.
5ab80 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 20 ....(setq.tool-id.(substring....
5aba0 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 73 ................(md5.(format."%s
5abc0 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 20 %s".(random).(float-time))).....
5abe0 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 28 ...............nil.24)))...(if.(
5ac00 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 6c or.(string-prefix-p."call_".tool
5ac20 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 20 -id)...........(string-prefix-p.
5ac40 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 64 "toolu_".tool-id)).......tool-id
5ac60 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 29 .....(format."toolu_%s".tool-id)
5ac80 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 6f ))..(defun.gptel--anthropic-unfo
5aca0 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 6e rmat-tool-id.(tool-id)...(or.(an
5acc0 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 22 d.(string-match."toolu_\\(.+\\)"
5ace0 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 69 .tool-id)............(match-stri
5ad00 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 0a ng.1.tool-id)).......tool-id))..
5ad20 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 20 (cl-defmethod.gptel--parse-list.
5ad40 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 70 ((backend.gptel-anthropic).promp
5ad60 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 20 t-list)...(let.((full-prompt....
5ad80 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 73 ......(if.(consp.(car.prompt-lis
5ada0 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 29 t))..............(let.((prompts)
5adc0 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 20 )................(dolist.(entry.
5ade0 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 20 prompt-list).;.Advanced.format,.
5ae00 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 28 list.of.lists..................(
5ae20 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 28 pcase.entry....................(
5ae40 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 20 `(prompt...,msg)................
5ae60 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 20 .....(push.(list.:role."user"...
5ae80 20 20 20 20 20 20 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 ..............................:c
5aea0 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 6f ontent.`[(:type."text".:text.,(o
5aec0 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 20 r.(car-safe.msg).msg))])........
5aee0 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 20 ...................prompts))....
5af00 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 6d ................(`(response...,m
5af20 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 6c sg).....................(push.(l
5af40 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 20 ist.:role."assistant"...........
5af60 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 60 ......................:content.`
5af80 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 73 [(:type."text".:text.,(or.(car-s
5afa0 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 20 afe.msg).msg))])................
5afc0 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 20 ...........prompts))............
5afe0 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 20 ........(`(tool...,call)........
5b000 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 20 .............(unless.(plist-get.
5b020 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).......................
5b040 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 68 (plist-put.call.:id.(gptel--anth
5b060 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 20 ropic-format-tool-id.nil))).....
5b080 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
5b0a0 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 20 e."assistant"...................
5b0c0 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 65 ..............:content.`[(.:type
5b0e0 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 6c ."tool_use".:id.,(plist-get.call
5b100 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 20 .:id)...........................
5b120 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 74 ...................:name.,(plist
5b140 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 20 -get.call.:name)................
5b160 20 20 20 20 20 20 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 69 ..............................:i
5b180 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 0a nput.,(plist-get.call.:args))]).
5b1a0 20 20 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 74 ..........................prompt
5b1c0 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 70 s).....................(push.(gp
5b1e0 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.
5b200 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 0a (list.(cdr.entry))).prompts)))).
5b220 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 73 ...............(nreverse.prompts
5b240 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 20 ))............(cl-loop.for.text.
5b260 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 20 in.prompt-list.;.Simple.format,.
5b280 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 20 list.of.strings.................
5b2a0 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 29 ....for.role.=.t.then.(not.role)
5b2c0 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 20 .....................if.text....
5b2e0 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 3a .................collect.(list.:
5b300 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 22 role.(if.role."user"."assistant"
5b320 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 )...............................
5b340 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 65 ....:content.`[(:type."text".:te
5b360 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 73 xt.,text)]))))).....;;.cache.mes
5b380 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 6e sages.if.required:.add.cache_con
5b3a0 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 68 trol.to.the.last.message.....(wh
5b3c0 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 28 en.(and.(or.(eq.gptel-cache.t).(
5b3e0 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 20 memq.'message.gptel-cache)).....
5b400 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 65 ...........(gptel--model-capable
5b420 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 28 -p.'cache)).......(nconc.(aref.(
5b440 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 74 plist-get.(car.(last.full-prompt
5b460 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 3a )).:content).0)..............'(:
5b480 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 22 cache_control.(:type."ephemeral"
5b4a0 29 29 29 29 0a 20 20 20 20 66 75 6c 6c 2d 70 72 6f 6d 70 74 29 29 0a 0a 28 63 6c 2d 64 65 66 6d )))).....full-prompt))..(cl-defm
5b4c0 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 6b ethod.gptel--parse-buffer.((back
5b4e0 65 6e 64 20 67 70 74 65 6c 2d 61 6e 74 68 72 6f 70 69 63 29 20 26 6f 70 74 69 6f 6e 61 6c 20 6d end.gptel-anthropic).&optional.m
5b500 61 78 2d 65 6e 74 72 69 65 73 29 0a 20 20 28 6c 65 74 20 28 28 70 72 6f 6d 70 74 73 29 20 28 70 ax-entries)...(let.((prompts).(p
5b520 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 67 70 74 rev-pt.(point))).....(if.(or.gpt
5b540 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 0a 20 20 el-mode.gptel-track-response)...
5b560 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 78 2d 65 ......(while.(and.(or.(not.max-e
5b580 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 20 20 20 ntries).(>=.max-entries.0)).....
5b5a0 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 72 65 76 ................(goto-char.(prev
5b5c0 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 20 20 20 ious-single-property-change.....
5b5e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6f 69 ............................(poi
5b600 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 20 20 20 nt).'gptel.nil.(point-min)))....
5b620 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 6e 74 29 .................(not.(=.(point)
5b640 20 70 72 65 76 2d 70 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20 48 41 43 4b 20 55 6e .prev-pt)))...........;;.HACK.Un
5b660 74 69 6c 20 77 65 20 63 61 6e 20 66 69 6e 64 20 61 20 6d 6f 72 65 20 72 6f 62 75 73 74 20 73 6f til.we.can.find.a.more.robust.so
5b680 6c 75 74 69 6f 6e 20 66 6f 72 20 65 64 69 74 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20 lution.for.editing...........;;.
5b6a0 72 65 73 70 6f 6e 73 65 73 2c 20 69 67 6e 6f 72 65 20 70 72 6f 6d 70 74 73 20 63 6f 6e 74 61 69 responses,.ignore.prompts.contai
5b6c0 6e 69 6e 67 20 6f 6e 6c 79 20 77 68 69 74 65 73 70 61 63 65 2c 20 61 73 20 74 68 65 0a 20 20 20 ning.only.whitespace,.as.the....
5b6e0 20 20 20 20 20 20 20 3b 3b 20 41 6e 74 68 72 6f 70 69 63 20 41 50 49 20 63 61 6e 27 74 20 68 61 .......;;.Anthropic.API.can't.ha
5b700 6e 64 6c 65 20 69 74 2e 20 20 53 65 65 20 23 34 35 32 2c 20 23 34 30 39 2c 20 23 34 30 36 2c 20 ndle.it...See.#452,.#409,.#406,.
5b720 23 33 35 31 20 61 6e 64 20 23 33 32 31 0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20 57 65 20 63 68 #351.and.#321...........;;.We.ch
5b740 65 63 6b 20 66 6f 72 20 62 6c 61 6e 6b 20 70 72 6f 6d 70 74 73 20 62 79 20 73 6b 69 70 70 69 6e eck.for.blank.prompts.by.skippin
5b760 67 20 77 68 69 74 65 73 70 61 63 65 20 61 6e 64 20 63 6f 6d 70 61 72 69 6e 67 0a 20 20 20 20 20 g.whitespace.and.comparing......
5b780 20 20 20 20 20 3b 3b 20 70 6f 69 6e 74 20 61 67 61 69 6e 73 74 20 74 68 65 20 70 72 65 76 69 6f .....;;.point.against.the.previo
5b7a0 75 73 2e 0a 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 78 63 75 us............(unless.(save-excu
5b7c0 72 73 69 6f 6e 20 28 73 6b 69 70 2d 73 79 6e 74 61 78 2d 66 6f 72 77 61 72 64 20 22 20 22 29 20 rsion.(skip-syntax-forward.".").
5b7e0 28 3e 3d 20 28 70 6f 69 6e 74 29 20 70 72 65 76 2d 70 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 (>=.(point).prev-pt))...........
5b800 20 20 28 70 63 61 73 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 ..(pcase.(get-char-property.(poi
5b820 6e 74 29 20 27 67 70 74 65 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 27 72 65 73 70 nt).'gptel)...............('resp
5b840 6f 6e 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 onse................(when-let*.(
5b860 28 63 6f 6e 74 65 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (content........................
5b880 20 20 20 20 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 20 20 20 .....(gptel--trim-prefixes......
5b8a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 2d ........................(buffer-
5b8c0 73 75 62 73 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 20 28 70 6f 69 6e 74 29 20 substring-no-properties.(point).
5b8e0 70 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 28 77 68 prev-pt))))..................(wh
5b900 65 6e 20 28 6e 6f 74 20 28 73 74 72 69 6e 67 2d 62 6c 61 6e 6b 2d 70 20 63 6f 6e 74 65 6e 74 29 en.(not.(string-blank-p.content)
5b920 29 0a 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 )....................(push.(list
5b940 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 6e 74 .:role."assistant".:content.cont
5b960 65 6e 74 29 20 70 72 6f 6d 70 74 73 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 ent).prompts))))...............(
5b980 60 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 20 20 28 73 61 `(tool...,id)................(sa
5b9a0 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 20 28 63 ve-excursion..................(c
5b9c0 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ondition-case.nil...............
5b9e0 20 20 20 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 .......(let*.((tool-call.(read.(
5ba00 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 20 20 20 20 20 20 current-buffer)))...............
5ba20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 28 69 64 20 28 67 70 74 65 6c 2d 2d 61 6e 74 ..............;;.(id.(gptel--ant
5ba40 68 72 6f 70 69 63 2d 66 6f 72 6d 61 74 2d 74 6f 6f 6c 2d 69 64 20 69 64 29 29 0a 20 20 20 20 20 hropic-format-tool-id.id))......
5ba60 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 61 6d 65 20 28 70 6c .......................(name.(pl
5ba80 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 0a 20 20 20 20 20 20 ist-get.tool-call.:name)).......
5baa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 72 67 75 6d 65 6e 74 73 ......................(arguments
5bac0 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 29 29 0a 20 .(plist-get.tool-call.:args)))..
5bae0 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
5bb00 20 74 6f 6f 6c 2d 63 61 6c 6c 20 3a 69 64 20 69 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 .tool-call.:id.id)..............
5bb20 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 3a ..........(plist-put.tool-call.:
5bb40 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 20 20 result..........................
5bb60 20 20 20 20 20 20 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 .........(string-trim.(buffer-su
5bb80 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 20 bstring-no-properties...........
5bba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
5bbc0 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 20 20 20 20 20 20 ......(point).prev-pt)))........
5bbe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 67 70 74 65 6c 2d 2d 70 61 ................(push.(gptel--pa
5bc00 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 28 6c 69 73 74 20 74 rse-tool-results.backend.(list.t
5bc20 6f 6f 6c 2d 63 61 6c 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 ool-call))......................
5bc40 20 20 20 20 20 20 20 20 70 72 6f 6d 70 74 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ........prompts)................
5bc60 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 61 73 73 69 73 ........(push.(list.:role."assis
5bc80 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 20 20 20 20 20 20 tant"...........................
5bca0 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 65 20 22 74 6f 6f .........:content.`[(.:type."too
5bcc0 6c 5f 75 73 65 22 20 3a 69 64 20 2c 69 64 20 3a 6e 61 6d 65 20 2c 6e 61 6d 65 0a 20 20 20 20 20 l_use".:id.,id.:name.,name......
5bce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
5bd00 20 20 20 20 20 20 20 20 20 20 20 3a 69 6e 70 75 74 20 2c 61 72 67 75 6d 65 6e 74 73 29 5d 29 0a ...........:input.,arguments)]).
5bd20 20 20 20 20 20 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 .............................pro
5bd40 6d 70 74 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 65 6e 64 2d mpts))....................((end-
5bd60 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 0a 20 20 20 of-file.invalid-read-syntax)....
5bd80 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 6d 61 .................(message.(forma
5bda0 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 25 73 20 t."Could.not.parse.tool-call.%s.
5bdc0 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 20 20 20 20 20 20 20 on.line.%s".....................
5bde0 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 75 6d 62 65 72 .................id.(line-number
5be00 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 20 20 20 20 -at-pos.(point))))))))..........
5be20 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 20 20 28 27 6e .....('ignore)...............('n
5be40 69 6c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 75 73 65 72 20 72 6f il.....................;.user.ro
5be60 6c 65 3a 20 70 6f 73 73 69 62 6c 79 20 77 69 74 68 20 6d 65 64 69 61 0a 20 20 20 20 20 20 20 20 le:.possibly.with.media.........
5be80 20 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 .......(if.gptel-track-media....
5bea0 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 63 6f 6e ................(when-let*.((con
5bec0 74 65 6e 74 20 28 67 70 74 65 6c 2d 2d 61 6e 74 68 72 6f 70 69 63 2d 70 61 72 73 65 2d 6d 75 6c tent.(gptel--anthropic-parse-mul
5bee0 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 20 20 20 20 tipart..........................
5bf00 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 6d 65 ................(gptel--parse-me
5bf20 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 72 65 dia-links.major-mode.(point).pre
5bf40 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 20 20 28 77 v-pt))))......................(w
5bf60 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)......
5bf80 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 72 ..................(push.(list.:r
5bfa0 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
5bfc0 6d 70 74 73 29 29 29 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 mpts)))..................(when-l
5bfe0 65 74 2a 20 28 28 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 et*.((content.(gptel--trim-prefi
5c000 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 20 20 xes.............................
5c020 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-
5c040 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 29 29 29 0a 20 properties.(point).prev-pt))))..
5c060 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 72 ..................(push.(list.:r
5c080 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
5c0a0 6d 70 74 73 29 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 mpts))))))...........(setq.prev-
5c0c0 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 6d 61 78 2d 65 pt.(point))...........(and.max-e
5c0e0 6e 74 72 69 65 73 20 28 63 6c 2d 64 65 63 66 20 6d 61 78 2d 65 6e 74 72 69 65 73 29 29 29 0a 20 ntries.(cl-decf.max-entries)))..
5c100 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 73 74 72 69 6e .....(when-let*.((content.(strin
5c120 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 2d 70 72 6f 70 g-trim.(buffer-substring-no-prop
5c140 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 20 erties..........................
5c160 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 28 70 6f 69 ................(point-min).(poi
5c180 6e 74 2d 6d 61 78 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 3b 3b 20 58 58 58 20 66 61 69 6c 73 nt-max))))).........;;.XXX.fails
5c1a0 20 69 66 20 63 6f 6e 74 65 6e 74 20 69 73 20 65 6d 70 74 79 2e 20 20 54 68 65 20 63 6f 72 72 65 .if.content.is.empty...The.corre
5c1c0 63 74 20 65 72 72 6f 72 20 62 65 68 61 76 69 6f 72 20 69 73 20 6c 65 66 74 20 74 6f 0a 20 20 20 ct.error.behavior.is.left.to....
5c1e0 20 20 20 20 20 3b 3b 20 61 20 66 75 74 75 72 65 20 64 69 73 63 75 73 73 69 6f 6e 2e 0a 20 20 20 .....;;.a.future.discussion.....
5c200 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 3a 63 .....(push.(list.:role."user".:c
5c220 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 20 3b ontent.content).prompts))).....;
5c240 3b 20 43 61 63 68 65 20 6d 65 73 73 61 67 65 73 20 69 66 20 72 65 71 75 69 72 65 64 3a 20 61 64 ;.Cache.messages.if.required:.ad
5c260 64 20 63 61 63 68 65 5f 63 6f 6e 74 72 6f 6c 20 74 6f 20 74 68 65 20 6c 61 73 74 20 6d 65 73 73 d.cache_control.to.the.last.mess
5c280 61 67 65 0a 20 20 20 20 28 69 66 20 28 61 6e 64 20 28 6f 72 20 28 65 71 20 67 70 74 65 6c 2d 63 age.....(if.(and.(or.(eq.gptel-c
5c2a0 61 63 68 65 20 74 29 20 28 6d 65 6d 71 20 27 6d 65 73 73 61 67 65 20 67 70 74 65 6c 2d 63 61 63 ache.t).(memq.'message.gptel-cac
5c2c0 68 65 29 29 0a 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 6c 2d he))..............(gptel--model-
5c2e0 63 61 70 61 62 6c 65 2d 70 20 27 63 61 63 68 65 29 29 0a 20 20 20 20 20 20 20 20 28 6c 65 74 20 capable-p.'cache)).........(let.
5c300 28 28 6c 61 73 74 2d 6d 65 73 73 61 67 65 20 28 70 6c 69 73 74 2d 67 65 74 20 28 63 61 72 20 28 ((last-message.(plist-get.(car.(
5c320 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 0a 20 20 20 20 20 last.prompts)).:content)))......
5c340 20 20 20 20 20 28 69 66 20 28 73 74 72 69 6e 67 70 20 6c 61 73 74 2d 6d 65 73 73 61 67 65 29 0a .....(if.(stringp.last-message).
5c360 20 20 20 20 20 20 20 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 ..............(plist-put........
5c380 20 20 20 20 20 20 20 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 ........(car.(last.prompts)).:co
5c3a0 6e 74 65 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 60 5b 28 3a 74 79 70 65 20 22 74 ntent................`[(:type."t
5c3c0 65 78 74 22 20 3a 74 65 78 74 20 2c 6c 61 73 74 2d 6d 65 73 73 61 67 65 20 3a 63 61 63 68 65 5f ext".:text.,last-message.:cache_
5c3e0 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 29 29 5d 29 0a 20 control.(:type."ephemeral"))])..
5c400 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 70 6c 69 73 74 2d 67 ...........(nconc.(aref.(plist-g
5c420 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 74 et.(car.(last.prompts)).:content
5c440 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 28 3a 63 61 63 68 65 ).0)....................'(:cache
5c460 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 29 29 29 29 29 _control.(:type."ephemeral")))))
5c480 29 0a 20 20 20 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 61 ).....prompts))..(defun.gptel--a
5c4a0 6e 74 68 72 6f 70 69 63 2d 70 61 72 73 65 2d 6d 75 6c 74 69 70 61 72 74 20 28 70 61 72 74 73 29 nthropic-parse-multipart.(parts)
5c4c0 0a 20 20 22 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 ..."Convert.a.multipart.prompt.P
5c4e0 41 52 54 53 20 74 6f 20 74 68 65 20 41 6e 74 68 72 6f 70 69 63 20 41 50 49 20 66 6f 72 6d 61 74 ARTS.to.the.Anthropic.API.format
5c500 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 20 74 68 65 20 ...The.input.is.an.alist.of.the.
5c520 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 29 0a 20 20 28 form..((:text.\"some.text\")...(
5c540 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 5c 22 20 3a 6d :media.\"/path/to/media.png\".:m
5c560 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 20 5c 22 4d 6f ime.\"image/png\")...(:text.\"Mo
5c580 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 20 61 20 76 65 re.text\"))...The.output.is.a.ve
5c5a0 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 64 2d 61 70 70 ctor.of.entries.in.a.backend-app
5c5c0 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 70 0a 20 20 20 ropriate.format."...(cl-loop....
5c5e0 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 75 70 66 72 6f for.part.in.parts....for.n.upfro
5c600 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 70 61 72 74 73 m.1....with.last.=.(length.parts
5c620 29 0a 20 20 20 77 69 74 68 20 74 79 70 65 0a 20 20 20 66 6f 72 20 74 65 78 74 20 3d 20 28 70 6c )....with.type....for.text.=.(pl
5c640 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 6d 69 6d 65 20 ist-get.part.:text)....for.mime.
5c660 3d 20 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 66 6f 72 20 =.(plist-get.part.:mime)....for.
5c680 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).
5c6a0 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
5c6c0 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-
5c6e0 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 20 69 66 -trim-prefixes.text))).and....if
5c700 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".
5c720 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
5c740 64 0a 20 20 20 65 6c 73 65 20 69 66 20 6d 65 64 69 61 0a 20 20 20 64 6f 0a 20 20 20 28 73 65 74 d....else.if.media....do....(set
5c760 71 20 74 79 70 65 20 28 63 6f 6e 64 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 q.type.(cond....................
5c780 20 3b 43 75 72 72 65 6e 74 6c 79 20 73 75 70 70 6f 72 74 65 64 3a 20 49 6d 61 67 65 73 20 61 6e .;Currently.supported:.Images.an
5c7a0 64 20 50 44 46 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 65 71 75 61 6c 20 28 73 d.PDFs................((equal.(s
5c7c0 75 62 73 74 72 69 6e 67 20 6d 69 6d 65 20 30 20 35 29 20 22 69 6d 61 67 65 22 29 20 22 69 6d 61 ubstring.mime.0.5)."image")."ima
5c7e0 67 65 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 4e 4f 54 45 3a 20 4f 6e 6c ge")................;;.NOTE:.Onl
5c800 79 20 43 6c 61 75 64 65 20 33 2e 35 20 53 6f 6e 6e 65 74 20 73 75 70 70 6f 72 74 73 20 50 44 46 y.Claude.3.5.Sonnet.supports.PDF
5c820 20 64 6f 63 75 6d 65 6e 74 73 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 65 71 75 .documents:................((equ
5c840 61 6c 20 6d 69 6d 65 20 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 70 64 66 22 29 20 22 64 6f 63 75 al.mime."application/pdf")."docu
5c860 6d 65 6e 74 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 20 28 65 72 72 6f 72 20 ment")................(t.(error.
5c880 28 63 6f 6e 63 61 74 20 22 28 67 70 74 65 6c 2d 61 6e 74 68 72 6f 70 69 63 29 20 52 65 71 75 65 (concat."(gptel-anthropic).Reque
5c8a0 73 74 20 61 62 6f 72 74 65 64 3a 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 st.aborted:."...................
5c8c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 74 72 79 69 6e 67 20 74 6f 20 73 65 6e 64 20 75 ..............."trying.to.send.u
5c8e0 6e 73 75 70 70 6f 72 74 65 64 20 4d 49 4d 45 20 74 79 70 65 20 25 73 22 29 0a 20 20 20 20 20 20 nsupported.MIME.type.%s").......
5c900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 69 6d 65 29 29 29 29 0a 20 20 20 61 ...................mime))))....a
5c920 6e 64 20 63 6f 6c 6c 65 63 74 0a 20 20 20 60 28 3a 74 79 70 65 20 2c 74 79 70 65 0a 20 20 20 20 nd.collect....`(:type.,type.....
5c940 20 3a 73 6f 75 72 63 65 20 28 3a 74 79 70 65 20 22 62 61 73 65 36 34 22 0a 20 20 20 20 20 20 20 .:source.(:type."base64"........
5c960 20 20 20 20 20 20 20 3a 6d 65 64 69 61 5f 74 79 70 65 20 2c 28 70 6c 69 73 74 2d 67 65 74 20 70 .......:media_type.,(plist-get.p
5c980 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 3a 64 61 74 61 20 2c art.:mime)...............:data.,
5c9a0 28 67 70 74 65 6c 2d 2d 62 61 73 65 36 34 2d 65 6e 63 6f 64 65 20 6d 65 64 69 61 29 29 0a 20 20 (gptel--base64-encode.media))...
5c9c0 20 20 20 3b 3b 20 54 4f 44 4f 20 4d 61 6b 65 20 6d 65 64 69 61 20 63 61 63 68 69 6e 67 20 61 20 ...;;.TODO.Make.media.caching.a.
5c9e0 75 73 65 72 20 6f 70 74 69 6f 6e 0a 20 20 20 20 20 2c 40 28 61 6e 64 20 28 67 70 74 65 6c 2d 2d user.option......,@(and.(gptel--
5ca00 6d 6f 64 65 6c 2d 63 61 70 61 62 6c 65 2d 70 20 27 63 61 63 68 65 29 0a 20 20 20 20 20 20 20 20 model-capable-p.'cache).........
5ca20 27 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 '(:cache_control.(:type."ephemer
5ca40 61 6c 22 29 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 65 al"))))....into.parts-array....e
5ca60 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 78 74 66 69 6c 65 lse.if.(plist-get.part.:textfile
5ca80 29 20 63 6f 6c 6c 65 63 74 0a 20 20 20 60 28 3a 74 79 70 65 20 22 74 65 78 74 22 0a 20 20 20 20 ).collect....`(:type."text".....
5caa0 20 3a 74 65 78 74 20 2c 28 77 69 74 68 2d 74 65 6d 70 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20 .:text.,(with-temp-buffer.......
5cac0 20 20 20 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 ........(gptel--insert-file-stri
5cae0 6e 67 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 29 0a 20 ng.(plist-get.part.:textfile))..
5cb00 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)))..
5cb20 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
5cb40 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
5cb60 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
5cb80 6d 70 74 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 mpt.((_backend.gptel-anthropic).
5cba0 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 20 20 20 prompts.........................
5cbc0 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 63 74 2d ...............&optional.inject-
5cbe0 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 70 72 6f media)..."Wrap.the.last.user.pro
5cc00 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 78 74 20 mpt.in.PROMPTS.with.the.context.
5cc20 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 6f 6e 2d string...If.INJECT-MEDIA.is.non-
5cc40 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 65 64 20 nil.wrap.it.with.base64-encoded.
5cc60 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 20 20 28 media.files.in.the.context."...(
5cc80 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 20 74 68 if.inject-media.......;;.Wrap.th
5cca0 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 75 64 65 e.first.user.prompt.with.include
5ccc0 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 28 77 68 d.media.files/contexts.......(wh
5cce0 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 6f 6e 74 en-let*.((media-list.(gptel-cont
5cd00 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 20 28 63 ext--collect-media))).........(c
5cd20 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 20 20 20 l-callf.(lambda.(current).......
5cd40 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 20 20 20 ..............(vconcat..........
5cd60 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 61 6e 74 68 72 6f 70 69 63 2d 70 61 ............(gptel--anthropic-pa
5cd80 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).......
5cda0 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
5cdc0 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
5cde0 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
5ce00 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
5ce20 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)....................
5ce40 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)))).............(
5ce60 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
5ce80 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
5cea0 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
5cec0 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)
5cee0 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
5cf00 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
5cf20 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)).
5cf40 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
5cf60 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
5cf80 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)))........................
5cfa0 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".
5cfc0 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))................
5cfe0 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)
5d000 0a 20 20 20 20 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
5d020 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
5d040 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))))..;
5d060 3b 20 28 69 66 2d 6c 65 74 2a 20 28 28 63 6f 6e 74 65 78 74 2d 73 74 72 69 6e 67 20 28 67 70 74 ;.(if-let*.((context-string.(gpt
5d080 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 73 74 72 69 6e 67 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 el-context--string.gptel-context
5d0a0 2d 2d 61 6c 69 73 74 29 29 29 0a 3b 3b 20 20 20 20 20 28 63 6c 2d 63 61 6c 6c 66 20 28 6c 61 6d --alist))).;;.....(cl-callf.(lam
5d0c0 62 64 61 20 28 70 72 65 76 69 6f 75 73 29 0a 3b 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 bda.(previous).;;...............
5d0e0 20 20 28 63 6c 2d 74 79 70 65 63 61 73 65 20 70 72 65 76 69 6f 75 73 0a 3b 3b 20 20 20 20 20 20 ..(cl-typecase.previous.;;......
5d100 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 20 28 63 6f 6e 63 61 74 20 63 6f 6e .............(string.(concat.con
5d120 74 65 78 74 2d 73 74 72 69 6e 67 20 70 72 65 76 69 6f 75 73 29 29 0a 3b 3b 20 20 20 20 20 20 20 text-string.previous)).;;.......
5d140 20 20 20 20 20 20 20 20 20 20 20 20 28 76 65 63 74 6f 72 20 28 76 63 6f 6e 63 61 74 20 60 28 28 ............(vector.(vconcat.`((
5d160 3a 74 79 70 65 20 22 74 65 78 74 22 20 3a 74 65 78 74 20 2c 70 72 65 76 69 6f 75 73 29 29 0a 3b :type."text".:text.,previous)).;
5d180 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ;...............................
5d1a0 20 20 20 20 20 70 72 65 76 69 6f 75 73 29 29 0a 3b 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .....previous)).;;..............
5d1c0 20 20 20 20 20 28 74 20 63 6f 6e 74 65 78 74 2d 73 74 72 69 6e 67 29 29 29 0a 3b 3b 20 20 20 20 .....(t.context-string))).;;....
5d1e0 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 70 72 6f 6d 70 .....(plist-get.(car.(last.promp
5d200 74 73 29 29 20 3a 63 6f 6e 74 65 6e 74 29 29 29 0a 0a 28 64 65 66 63 6f 6e 73 74 20 67 70 74 65 ts)).:content)))..(defconst.gpte
5d220 6c 2d 2d 61 6e 74 68 72 6f 70 69 63 2d 6d 6f 64 65 6c 73 0a 20 20 27 28 28 63 6c 61 75 64 65 2d l--anthropic-models...'((claude-
5d240 33 2d 37 2d 73 6f 6e 6e 65 74 2d 32 30 32 35 30 32 31 39 0a 20 20 20 20 20 3a 64 65 73 63 72 69 3-7-sonnet-20250219......:descri
5d260 70 74 69 6f 6e 20 22 48 79 62 72 69 64 20 6d 6f 64 65 6c 20 63 61 70 61 62 6c 65 20 6f 66 20 73 ption."Hybrid.model.capable.of.s
5d280 74 61 6e 64 61 72 64 20 74 68 69 6e 6b 69 6e 67 20 61 6e 64 20 65 78 74 65 6e 64 65 64 20 74 68 tandard.thinking.and.extended.th
5d2a0 69 6e 6b 69 6e 67 20 6d 6f 64 65 73 22 0a 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 inking.modes"......:capabilities
5d2c0 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 69 .(media.tool-use.cache)......:mi
5d2e0 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 6e me-types.("image/jpeg"."image/pn
5d300 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 70 g"."image/gif"."image/webp"."app
5d320 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 6e lication/pdf")......:context-win
5d340 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 20 dow.200......:input-cost.3......
5d360 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 74 :output-cost.15......:cutoff-dat
5d380 65 20 22 32 30 32 35 2d 30 32 22 29 0a 20 20 20 20 28 63 6c 61 75 64 65 2d 73 6f 6e 6e 65 74 2d e."2025-02").....(claude-sonnet-
5d3a0 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 69 6f 6e 20 22 48 69 4-20250514......:description."Hi
5d3c0 67 68 2d 70 65 72 66 6f 72 6d 61 6e 63 65 20 6d 6f 64 65 6c 20 77 69 74 68 20 65 78 63 65 70 74 gh-performance.model.with.except
5d3e0 69 6f 6e 61 6c 20 72 65 61 73 6f 6e 69 6e 67 20 61 6e 64 20 65 66 66 69 63 69 65 6e 63 79 22 0a ional.reasoning.and.efficiency".
5d400 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 2d 75 .....:capabilities.(media.tool-u
5d420 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 6d 61 se.cache)......:mime-types.("ima
5d440 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"
5d460 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 22 29 ."image/webp"."application/pdf")
5d480 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 3a ......:context-window.200......:
5d4a0 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 20 31 input-cost.3......:output-cost.1
5d4c0 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 33 22 29 0a 20 5......:cutoff-date."2025-03")..
5d4e0 20 20 20 28 63 6c 61 75 64 65 2d 6f 70 75 73 2d 34 2d 32 30 32 35 30 35 31 34 0a 20 20 20 20 20 ...(claude-opus-4-20250514......
5d500 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 20 6d 6f 64 65 6c :description."Most.capable.model
5d520 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 20 61 64 76 61 6e .for.complex.reasoning.and.advan
5d540 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 74 69 65 73 20 28 ced.coding"......:capabilities.(
5d560 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 69 6d 65 media.tool-use.cache)......:mime
5d580 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"
5d5a0 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 70 6c 69 ."image/gif"."image/webp"."appli
5d5c0 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 6e 64 6f cation/pdf")......:context-windo
5d5e0 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 20 20 20 3a w.200......:input-cost.15......:
5d600 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 66 2d 64 61 74 65 output-cost.75......:cutoff-date
5d620 20 22 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 ."2025-03").....(claude-3-5-sonn
5d640 65 74 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 et-20241022......:description."H
5d660 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 65 20 61 6e 64 ighest.level.of.intelligence.and
5d680 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 74 69 65 73 20 .capability"......:capabilities.
5d6a0 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 69 6d (media.tool-use.cache)......:mim
5d6c0 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 6e 67 e-types.("image/jpeg"."image/png
5d6e0 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 70 6c "."image/gif"."image/webp"."appl
5d700 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 6e 64 ication/pdf")......:context-wind
5d720 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 20 3a ow.200......:input-cost.3......:
5d740 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 74 65 output-cost.15......:cutoff-date
5d760 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 2d 35 2d 73 6f 6e 6e ."2024-04").....(claude-3-5-sonn
5d780 65 74 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 et-20240620......:description."H
5d7a0 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 65 20 61 6e 64 ighest.level.of.intelligence.and
5d7c0 20 63 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 .capability.(earlier.version)"..
5d7e0 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 2d 75 73 ....:capabilities.(media.tool-us
5d800 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 6d 61 67 e.cache)......:mime-types.("imag
5d820 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".
5d840 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
5d860 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 20 3a ow.200......:input-cost.3......:
5d880 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 74 65 output-cost.15......:cutoff-date
5d8a0 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 2d 35 2d 68 61 69 6b ."2024-04").....(claude-3-5-haik
5d8c0 75 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 49 6e u-20241022......:description."In
5d8e0 74 65 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 telligence.at.blazing.speeds"...
5d900 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 63 61 63 68 65 ...:capabilities.(tool-use.cache
5d920 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......
5d940 3a 69 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 :input-cost.1.00......:output-co
5d960 73 74 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 st.5.00......:cutoff-date."2024-
5d980 30 37 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 07").....(claude-3-opus-20240229
5d9a0 0a 20 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 ......:description."Top-level.pe
5d9c0 72 66 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 rformance,.intelligence,.fluency
5d9e0 2c 20 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 ,.and.understanding"......:capab
5da00 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 20 ilities.(media.tool-use.cache)..
5da20 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
5da40 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
5da60 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 20 20 20 p")......:context-window.200....
5da80 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 2d 63 6f ..:input-cost.15......:output-co
5daa0 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 32 30 32 33 2d 30 38 st.75......:cutoff-date."2023-08
5dac0 22 29 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 ").....(claude-3-sonnet-20240229
5dae0 0a 20 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 ......:description."Balance.of.i
5db00 6e 74 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 ntelligence.and.speed.(legacy.mo
5db20 64 65 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 del)"......:capabilities.(media.
5db40 74 6f 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 tool-use)......:mime-types.("ima
5db60 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"
5db80 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
5dba0 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 20 dow.200......:input-cost.3......
5dbc0 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 74 :output-cost.15......:cutoff-dat
5dbe0 65 20 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 e."2023-08").....(claude-3-haiku
5dc00 2d 32 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 -20240307......:description."Fas
5dc20 74 20 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 t.and.most.compact.model.for.nea
5dc40 72 2d 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 r-instant.responsiveness"......:
5dc60 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 20 20 capabilities.(tool-use.cache)...
5dc80 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 6e 70 ...:context-window.200......:inp
5dca0 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 63 6f 73 74 20 31 ut-cost.0.25......:output-cost.1
5dcc0 2e 32 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 .25......:cutoff-date."2023-08")
5dce0 29 0a 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 )..."List.of.available.Anthropic
5dd00 20 6d 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 .models.and.associated.propertie
5dd20 73 2e 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 s..Keys:..-.`:description':.a.br
5dd40 69 65 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 ief.description.of.the.model...-
5dd60 20 60 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 .`:capabilities':.a.list.of.capa
5dd80 62 69 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 bilities.supported.by.the.model.
5dda0 0a 0a 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 ..-.`:mime-types':.a.list.of.sup
5ddc0 70 6f 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 ported.MIME.types.for.media.file
5dde0 73 2e 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 s...-.`:context-window':.the.con
5de00 74 65 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 text.window.size,.in.thousands.o
5de20 66 20 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 f.tokens...-.`:input-cost':.the.
5de40 69 6e 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 input.cost,.in.US.dollars.per.mi
5de60 6c 6c 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 llion.tokens...-.`:output-cost':
5de80 20 74 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 .the.output.cost,.in.US.dollars.
5dea0 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 63 75 74 6f 66 66 2d per.million.tokens...-.`:cutoff-
5dec0 64 61 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 date':.the.knowledge.cutoff.date
5dee0 2e 0a 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 ...-.`:request-params':.a.plist.
5df00 6f 66 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 of.additional.request.parameters
5df20 20 74 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 .to...include.when.using.this.mo
5df40 64 65 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 del...Information.about.the.Anth
5df60 72 6f 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 ropic.models.was.obtained.from.t
5df80 68 65 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 he.following.comparison.table:..
5dfa0 55 52 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 URL.`https://docs.anthropic.com/
5dfc0 65 6e 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 en/docs/about-claude/models#mode
5dfe0 6c 2d 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 l-comparison-table'")..;;;###aut
5e000 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 6e 74 68 72 oload.(cl-defun.gptel-make-anthr
5e020 6f 70 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 opic.....(name.&key.curl-args.st
5e040 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 20 20 20 20 20 20 20 ream.key.request-params.........
5e060 20 20 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 ..(header............(lambda.().
5e080 28 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 (when-let*.((key.(gptel--get-api
5e0a0 2d 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 60 28 28 22 78 -key)))....................`(("x
5e0c0 2d 61 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 -api-key"...,key)...............
5e0e0 20 20 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 .......("anthropic-version"..."2
5e100 30 32 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 023-06-01").....................
5e120 20 28 22 61 6e 74 68 72 6f 70 69 63 2d 62 65 74 61 22 20 2e 20 22 70 64 66 73 2d 32 30 32 34 2d .("anthropic-beta"..."pdfs-2024-
5e140 30 39 2d 32 35 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 22 61 09-25")......................("a
5e160 6e 74 68 72 6f 70 69 63 2d 62 65 74 61 22 20 2e 20 22 70 72 6f 6d 70 74 2d 63 61 63 68 69 6e 67 nthropic-beta"..."prompt-caching
5e180 2d 32 30 32 34 2d 30 37 2d 33 31 22 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 -2024-07-31")))))...........(mod
5e1a0 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 73 29 0a 20 20 20 els.gptel--anthropic-models)....
5e1c0 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 63 2e 63 6f 6d 22 .......(host."api.anthropic.com"
5e1e0 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 74 6f 63 6f 6c 20 22 68 74 74 70 73 22 29 0a 20 )...........(protocol."https")..
5e200 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 73 73 61 67 65 73 .........(endpoint."/v1/messages
5e220 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 69 63 20 41 50 49 "))..."Register.an.Anthropic.API
5e240 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
5e260 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
5e280 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.
5e2a0 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
5e2c0 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
5e2e0 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 75 6c 74 2e 0a 0a pi.anthropic.com\".by.default...
5e300 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 6f MODELS.is.a.list.of.available.mo
5e320 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 74 69 6f 6e 61 del.names,.as.symbols..Additiona
5e340 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 74 65 64 20 4c lly,.you.can.specify.supported.L
5e360 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 20 6f 72 20 74 LM.capabilities.like.vision.or.t
5e380 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 74 20 74 6f 20 ool-use.by.appending.a.plist.to.
5e3a0 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 74 69 6f 6e 2c the.model.with.more.information,
5e3c0 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 2e 20 70 6c 69 .in.the.form...(model-name...pli
5e3e0 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 79 20 72 65 63 st)..For.a.list.of.currently.rec
5e400 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 74 65 6c 2d 2d ognized.plist.keys,.see.`gptel--
5e420 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 70 6c 65 20 6f 66 anthropic-models'..An.example.of
5e440 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 69 6e 67 .a.model.specification.including
5e460 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 73 0a 5c .both.kinds.of.specs:..:models.\
5e480 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 37 20 20 20 20 20 \='(claude-3-haiku-20240307.....
5e4a0 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 63 6c 61 75 64 65 ..........;Simple.specs...claude
5e4c0 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 2d 33 2d 35 2d 73 -3-opus-20240229...(claude-3-5-s
5e4e0 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 46 75 6c 6c 20 73 onnet-20240620...........;Full.s
5e500 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 61 6e 63 65 20 6f pec....:description..\"Balance.o
5e520 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 0a 20 20 20 3a 63 f.intelligence.and.speed\"....:c
5e540 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 6f 6e 29 0a 20 20 apabilities.(media.tool.json)...
5e560 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 20 .:mime-types....(\"image/jpeg\".
5e580 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 22 20 5c 22 69 6d \"image/png\".\"image/gif\".\"im
5e5a0 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 20 62 6f 6f 6c 65 age/webp\")))..STREAM.is.a.boole
5e5c0 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
5e5e0 2c 20 64 65 66 61 75 6c 74 73 20 74 6f 0a 66 61 6c 73 65 2e 0a 0a 50 52 4f 54 4f 43 4f 4c 20 28 ,.defaults.to.false...PROTOCOL.(
5e600 6f 70 74 69 6f 6e 61 6c 29 20 73 70 65 63 69 66 69 65 73 20 74 68 65 20 70 72 6f 74 6f 63 6f 6c optional).specifies.the.protocol
5e620 2c 20 68 74 74 70 73 20 62 79 20 64 65 66 61 75 6c 74 2e 0a 0a 45 4e 44 50 4f 49 4e 54 20 28 6f ,.https.by.default...ENDPOINT.(o
5e640 70 74 69 6f 6e 61 6c 29 20 69 73 20 74 68 65 20 41 50 49 20 65 6e 64 70 6f 69 6e 74 20 66 6f 72 ptional).is.the.API.endpoint.for
5e660 20 63 6f 6d 70 6c 65 74 69 6f 6e 73 2c 20 64 65 66 61 75 6c 74 73 20 74 6f 0a 5c 22 2f 76 31 2f .completions,.defaults.to.\"/v1/
5e680 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 6e 61 6c 29 20 69 messages\"...HEADER.(optional).i
5e6a0 73 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 68 65 61 64 65 72 73 20 74 6f 20 73 65 6e 64 s.for.additional.headers.to.send
5e6c0 20 77 69 74 68 20 65 61 63 68 0a 72 65 71 75 65 73 74 2e 20 20 49 74 20 73 68 6f 75 6c 64 20 62 .with.each.request...It.should.b
5e6e0 65 20 61 6e 20 61 6c 69 73 74 20 6f 72 20 61 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 72 65 e.an.alist.or.a.function.that.re
5e700 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 43 6f 6e 74 65 6e tuns.an.alist,.like:..((\"Conten
5e720 74 2d 54 79 70 65 5c 22 20 2e 20 5c 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 6a 73 6f 6e 5c 22 29 t-Type\"...\"application/json\")
5e740 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 20 76 61 6c 75 65 )..KEY.is.a.variable.whose.value
5e760 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 6f 6e 20 74 68 61 .is.the.API.key,.or.function.tha
5e780 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 54 2d 50 41 52 41 t.returns.the.key...REQUEST-PARA
5e7a0 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 64 69 MS.(optional).is.a.plist.of.addi
5e7c0 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 20 28 tional.HTTP.request.parameters.(
5e7e0 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 6f 72 as.plist.keys).and.values.suppor
5e800 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 73 65 ted.by.the.API...Use.these.to.se
5e820 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 6f 74 t.parameters.that.gptel.does.not
5e840 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 28 64 .provide.user.options.for."...(d
5e860 65 63 6c 61 72 65 20 28 69 6e 64 65 6e 74 20 31 29 29 0a 20 20 28 6c 65 74 20 28 28 62 61 63 6b eclare.(indent.1))...(let.((back
5e880 65 6e 64 20 28 67 70 74 65 6c 2d 2d 6d 61 6b 65 2d 61 6e 74 68 72 6f 70 69 63 0a 20 20 20 20 20 end.(gptel--make-anthropic......
5e8a0 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
5e8c0 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..
5e8e0 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.....
5e900 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....
5e920 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.........
5e940 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 70 72 6f 63 65 73 ..........:models.(gptel--proces
5e960 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 20 20 20 20 20 20 s-models.models)................
5e980 20 20 20 3a 70 72 6f 74 6f 63 6f 6c 20 70 72 6f 74 6f 63 6f 6c 0a 20 20 20 20 20 20 20 20 20 20 ...:protocol.protocol...........
5e9a0 20 20 20 20 20 20 20 20 3a 65 6e 64 70 6f 69 6e 74 20 65 6e 64 70 6f 69 6e 74 0a 20 20 20 20 20 ........:endpoint.endpoint......
5e9c0 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 73 74 72 65 61 6d 20 73 74 72 65 61 6d 0a 20 20 20 20 .............:stream.stream.....
5e9e0 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 61 6d 73 20 72 65 ..............:request-params.re
5ea00 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 20 20 20 20 20 3a quest-params...................:
5ea20 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 20 20 20 20 20 20 url.(if.protocol................
5ea40 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 6f 6c 20 22 3a 2f ............(concat.protocol.":/
5ea60 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 20 20 20 20 20 20 /".host.endpoint)...............
5ea80 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 64 70 6f 69 6e 74 ...........(concat.host.endpoint
5eaa0 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 20 20 20 20 20 28 ))))).....(prog1.backend.......(
5eac0 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 2d 2d 6b 6e 6f 77 setf.(alist-get.name.gptel--know
5eae0 6e 2d 62 61 63 6b 65 6e 64 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 n-backends......................
5eb00 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 20 20 20 20 20 20 ..nil.nil.#'equal)..............
5eb20 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 20 27 67 70 74 65 .....backend))))..(provide.'gpte
5eb40 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 68 72 6f 70 69 63 l-anthropic).;;;.gptel-anthropic
5eb60 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 65 .el.ends.here..;;.Local.Variable
5eb80 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 73 3a 20 28 6e 6f s:.;;.byte-compile-warnings:.(no
5eba0 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 00 00 00 00 00 00 t.docstrings).;;.End:...........
5ebc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5ebe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5ec00 67 70 74 65 6c 2d 30 2e 39 2e 38 2e 35 2f 4c 49 43 45 4e 53 45 00 00 00 00 00 00 00 00 00 00 00 gptel-0.9.8.5/LICENSE...........
5ec20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5ec40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5ec60 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
5ec80 30 31 30 34 35 31 31 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 32 34 35 34 00 20 30 00 00 00 0104511.00000000000.012454..0...
5eca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5ecc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5ece0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5ed00 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...................
5ed20 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...................
5ed40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5ed60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5ed80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5eda0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5edc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5ede0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5ee00 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.
5ee20 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..................
5ee40 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...
5ee60 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
5ee80 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
5eea0 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
5eec0 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
5eee0 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
5ef00 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....
5ef20 20 20 20 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
5ef40 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
5ef60 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
5ef80 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
5efa0 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
5efc0 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
5efe0 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
5f000 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.
5f020 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
5f040 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
5f060 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
5f080 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
5f0a0 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
5f0c0 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
5f0e0 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
5f100 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
5f120 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
5f140 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
5f160 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
5f180 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
5f1a0 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
5f1c0 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
5f1e0 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
5f200 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
5f220 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
5f240 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
5f260 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
5f280 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
5f2a0 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.
5f2c0 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.
5f2e0 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
5f300 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
5f320 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
5f340 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
5f360 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
5f380 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
5f3a0 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
5f3c0 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.
5f3e0 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
5f400 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
5f420 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
5f440 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
5f460 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
5f480 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
5f4a0 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.
5f4c0 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
5f4e0 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
5f500 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
5f520 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
5f540 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
5f560 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
5f580 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
5f5a0 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
5f5c0 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
5f5e0 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).
5f600 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
5f620 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
5f640 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.
5f660 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
5f680 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
5f6a0 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.
5f6c0 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
5f6e0 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.
5f700 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.
5f720 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
5f740 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
5f760 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
5f780 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
5f7a0 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
5f7c0 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
5f7e0 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
5f800 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
5f820 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.
5f840 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
5f860 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
5f880 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
5f8a0 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
5f8c0 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
5f8e0 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
5f900 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
5f920 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.
5f940 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
5f960 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..
5f980 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
5f9a0 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
5f9c0 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.
5f9e0 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
5fa00 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
5fa20 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
5fa40 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
5fa60 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
5fa80 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
5faa0 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
5fac0 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
5fae0 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
5fb00 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.
5fb20 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
5fb40 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
5fb60 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
5fb80 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
5fba0 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
5fbc0 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
5fbe0 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
5fc00 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
5fc20 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........................
5fc40 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
5fc60 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
5fc80 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
5fca0 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
5fcc0 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
5fce0 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
5fd00 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
5fd20 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
5fd40 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
5fd60 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.
5fd80 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
5fda0 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
5fdc0 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.
5fde0 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
5fe00 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
5fe20 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
5fe40 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.
5fe60 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
5fe80 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
5fea0 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.
5fec0 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
5fee0 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
5ff00 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
5ff20 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...
5ff40 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
5ff60 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
5ff80 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
5ffa0 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
5ffc0 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
5ffe0 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
60000 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
60020 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
60040 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
60060 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.
60080 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.
600a0 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.
600c0 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
600e0 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
60100 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.
60120 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
60140 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
60160 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
60180 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
601a0 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
601c0 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"
601e0 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.
60200 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
60220 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
60240 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,.
60260 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
60280 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
602a0 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
602c0 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
602e0 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
60300 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
60320 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
60340 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
60360 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,
60380 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
603a0 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
603c0 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.
603e0 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.
60400 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
60420 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
60440 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..
60460 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.
60480 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
604a0 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
604c0 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.
604e0 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
60500 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
60520 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.
60540 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
60560 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
60580 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
605a0 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
605c0 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
605e0 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
60600 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
60620 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
60640 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
60660 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
60680 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
606a0 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
606c0 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
606e0 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
60700 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
60720 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
60740 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
60760 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
60780 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
607a0 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
607c0 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
607e0 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
60800 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
60820 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.
60840 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
60860 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,
60880 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
608a0 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.
608c0 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
608e0 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
60900 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'
60920 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
60940 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
60960 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
60980 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.
609a0 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
609c0 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
609e0 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
60a00 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
60a20 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,
60a40 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.
60a60 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
60a80 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
60aa0 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,.
60ac0 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
60ae0 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
60b00 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
60b20 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
60b40 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
60b60 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
60b80 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.
60ba0 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
60bc0 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
60be0 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
60c00 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.
60c20 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
60c40 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
60c60 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,.
60c80 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
60ca0 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
60cc0 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
60ce0 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
60d00 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
60d20 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
60d40 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
60d60 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,.
60d80 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
60da0 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
60dc0 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
60de0 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
60e00 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
60e20 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
60e40 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
60e60 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.
60e80 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
60ea0 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
60ec0 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
60ee0 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
60f00 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
60f20 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
60f40 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.
60f60 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
60f80 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
60fa0 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
60fc0 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
60fe0 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
61000 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
61020 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
61040 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
61060 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.
61080 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
610a0 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
610c0 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
610e0 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
61100 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
61120 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
61140 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.
61160 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
61180 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
611a0 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
611c0 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
611e0 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
61200 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.
61220 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
61240 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
61260 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
61280 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
612a0 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
612c0 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
612e0 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
61300 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
61320 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
61340 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
61360 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
61380 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.
613a0 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.
613c0 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
613e0 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
61400 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
61420 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
61440 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
61460 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
61480 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
614a0 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
614c0 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
614e0 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
61500 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
61520 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
61540 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
61560 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
61580 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
615a0 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
615c0 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
615e0 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
61600 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.
61620 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.
61640 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
61660 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
61680 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.
616a0 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
616c0 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.
616e0 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
61700 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.
61720 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
61740 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
61760 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
61780 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.
617a0 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.
617c0 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
617e0 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
61800 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.
61820 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).
61840 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
61860 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
61880 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
618a0 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.
618c0 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
618e0 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
61900 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".
61920 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
61940 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
61960 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
61980 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
619a0 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
619c0 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
619e0 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
61a00 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
61a20 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
61a40 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
61a60 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
61a80 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,
61aa0 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.
61ac0 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
61ae0 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
61b00 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
61b20 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
61b40 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
61b60 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
61b80 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
61ba0 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,.
61bc0 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
61be0 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
61c00 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
61c20 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.
61c40 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
61c60 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
61c80 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
61ca0 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
61cc0 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
61ce0 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
61d00 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.
61d20 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.
61d40 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
61d60 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
61d80 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
61da0 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
61dc0 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
61de0 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
61e00 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
61e20 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
61e40 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
61e60 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
61e80 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,.
61ea0 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
61ec0 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
61ee0 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.
61f00 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:..
61f20 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
61f40 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
61f60 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
61f80 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
61fa0 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
61fc0 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
61fe0 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
62000 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
62020 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
62040 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
62060 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.
62080 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
620a0 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.
620c0 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....
620e0 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
62100 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
62120 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
62140 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
62160 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
62180 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
621a0 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
621c0 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
621e0 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
62200 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
62220 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.
62240 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
62260 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
62280 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
622a0 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
622c0 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
622e0 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
62300 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
62320 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
62340 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.
62360 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
62380 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
623a0 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
623c0 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.
623e0 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
62400 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
62420 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
62440 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
62460 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
62480 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
624a0 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.
624c0 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....
624e0 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
62500 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...
62520 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
62540 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
62560 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.
62580 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
625a0 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
625c0 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.
625e0 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
62600 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,.
62620 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.
62640 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
62660 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.....
62680 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
626a0 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
626c0 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.
626e0 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..
62700 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
62720 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
62740 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
62760 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
62780 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.
627a0 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.
627c0 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.
627e0 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
62800 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
62820 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
62840 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
62860 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
62880 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
628a0 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
628c0 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
628e0 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
62900 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
62920 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
62940 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
62960 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
62980 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
629a0 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
629c0 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
629e0 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
62a00 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.
62a20 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
62a40 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
62a60 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
62a80 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
62aa0 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
62ac0 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.
62ae0 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
62b00 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
62b20 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
62b40 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..
62b60 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
62b80 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
62ba0 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
62bc0 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,.
62be0 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
62c00 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
62c20 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
62c40 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
62c60 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
62c80 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
62ca0 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
62cc0 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
62ce0 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
62d00 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
62d20 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
62d40 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.
62d60 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
62d80 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
62da0 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
62dc0 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
62de0 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.
62e00 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
62e20 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
62e40 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
62e60 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
62e80 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
62ea0 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
62ec0 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
62ee0 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
62f00 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
62f20 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
62f40 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
62f60 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
62f80 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
62fa0 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
62fc0 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
62fe0 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
63000 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
63020 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
63040 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
63060 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
63080 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
630a0 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
630c0 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
630e0 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
63100 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
63120 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
63140 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.
63160 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
63180 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
631a0 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
631c0 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
631e0 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
63200 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
63220 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
63240 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
63260 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
63280 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
632a0 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
632c0 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
632e0 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
63300 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
63320 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
63340 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.
63360 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...
63380 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
633a0 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
633c0 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
633e0 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
63400 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..
63420 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.
63440 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
63460 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
63480 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,.
634a0 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
634c0 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
634e0 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
63500 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.
63520 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
63540 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
63560 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.
63580 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
635a0 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
635c0 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
635e0 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
63600 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
63620 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.
63640 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
63660 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
63680 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
636a0 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
636c0 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
636e0 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
63700 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
63720 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
63740 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.
63760 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,
63780 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
637a0 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.
637c0 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
637e0 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.
63800 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:.....
63820 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
63840 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.
63860 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
63880 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).
638a0 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
638c0 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.
638e0 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.
63900 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
63920 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
63940 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
63960 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
63980 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..
639a0 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
639c0 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
639e0 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
63a00 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
63a20 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
63a40 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
63a60 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
63a80 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
63aa0 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.
63ac0 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,
63ae0 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
63b00 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
63b20 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.
63b40 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.
63b60 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
63b80 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
63ba0 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.
63bc0 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
63be0 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
63c00 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...
63c20 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...
63c40 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
63c60 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
63c80 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
63ca0 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
63cc0 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
63ce0 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
63d00 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
63d20 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.
63d40 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
63d60 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
63d80 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
63da0 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
63dc0 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
63de0 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
63e00 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.
63e20 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
63e40 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.
63e60 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
63e80 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
63ea0 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.
63ec0 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
63ee0 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,
63f00 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
63f20 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,.
63f40 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.
63f60 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
63f80 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
63fa0 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
63fc0 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.
63fe0 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
64000 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
64020 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....
64040 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
64060 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
64080 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.
640a0 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
640c0 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
640e0 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
64100 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
64120 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
64140 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
64160 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
64180 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
641a0 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
641c0 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
641e0 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
64200 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.
64220 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
64240 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
64260 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
64280 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
642a0 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
642c0 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.
642e0 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.
64300 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
64320 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
64340 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.
64360 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
64380 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
643a0 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
643c0 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
643e0 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,.
64400 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
64420 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
64440 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.
64460 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
64480 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
644a0 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
644c0 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
644e0 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
64500 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
64520 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
64540 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
64560 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
64580 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.
645a0 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
645c0 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
645e0 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
64600 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
64620 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
64640 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
64660 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
64680 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
646a0 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
646c0 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
646e0 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
64700 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
64720 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
64740 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
64760 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
64780 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,.
647a0 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.
647c0 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
647e0 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.
64800 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
64820 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
64840 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
64860 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,.
64880 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
648a0 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.
648c0 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
648e0 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
64900 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
64920 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
64940 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
64960 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
64980 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
649a0 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
649c0 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
649e0 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
64a00 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
64a20 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
64a40 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
64a60 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
64a80 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
64aa0 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
64ac0 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
64ae0 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
64b00 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
64b20 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
64b40 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
64b60 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.
64b80 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
64ba0 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
64bc0 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
64be0 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.
64c00 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
64c20 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.
64c40 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
64c60 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
64c80 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
64ca0 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)
64cc0 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.
64ce0 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
64d00 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
64d20 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
64d40 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."
64d60 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
64d80 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
64da0 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
64dc0 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.
64de0 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
64e00 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
64e20 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."
64e40 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
64e60 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
64e80 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
64ea0 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
64ec0 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
64ee0 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
64f00 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
64f20 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,.
64f40 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
64f60 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
64f80 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.
64fa0 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
64fc0 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
64fe0 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
65000 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
65020 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
65040 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
65060 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
65080 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
650a0 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
650c0 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.
650e0 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,
65100 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
65120 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.
65140 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
65160 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
65180 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
651a0 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
651c0 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.
651e0 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
65200 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
65220 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
65240 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
65260 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
65280 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
652a0 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
652c0 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
652e0 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
65300 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
65320 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
65340 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
65360 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
65380 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
653a0 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
653c0 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
653e0 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.
65400 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
65420 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
65440 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
65460 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
65480 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).
654a0 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.
654c0 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
654e0 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
65500 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..."
65520 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
65540 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
65560 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
65580 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
655a0 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
655c0 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
655e0 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
65600 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
65620 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
65640 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
65660 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
65680 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
656a0 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
656c0 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
656e0 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
65700 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
65720 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,
65740 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
65760 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
65780 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
657a0 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
657c0 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
657e0 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.
65800 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
65820 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
65840 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
65860 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
65880 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.
658a0 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
658c0 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
658e0 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.
65900 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
65920 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
65940 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
65960 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
65980 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
659a0 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.
659c0 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
659e0 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
65a00 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
65a20 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
65a40 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
65a60 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
65a80 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
65aa0 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
65ac0 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
65ae0 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
65b00 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
65b20 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
65b40 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.
65b60 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
65b80 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
65ba0 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
65bc0 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
65be0 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
65c00 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
65c20 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
65c40 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
65c60 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
65c80 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
65ca0 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
65cc0 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
65ce0 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
65d00 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
65d20 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
65d40 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
65d60 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
65d80 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
65da0 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.
65dc0 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,
65de0 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
65e00 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
65e20 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
65e40 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.
65e60 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
65e80 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,
65ea0 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.
65ec0 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
65ee0 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
65f00 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
65f20 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
65f40 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
65f60 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
65f80 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
65fa0 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
65fc0 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
65fe0 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
66000 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
66020 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
66040 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
66060 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
66080 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
660a0 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
660c0 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
660e0 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
66100 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
66120 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
66140 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
66160 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.
66180 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.
661a0 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
661c0 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
661e0 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
66200 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
66220 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
66240 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
66260 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
66280 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
662a0 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
662c0 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.
662e0 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
66300 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"
66320 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
66340 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
66360 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
66380 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
663a0 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
663c0 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
663e0 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
66400 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
66420 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
66440 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
66460 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
66480 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
664a0 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
664c0 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.
664e0 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
66500 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
66520 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
66540 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
66560 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.
66580 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
665a0 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
665c0 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
665e0 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.
66600 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.
66620 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
66640 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.
66660 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,.
66680 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
666a0 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
666c0 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
666e0 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
66700 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
66720 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.
66740 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,
66760 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
66780 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
667a0 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
667c0 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.
667e0 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
66800 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.
66820 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
66840 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
66860 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...
66880 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...
668a0 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
668c0 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.
668e0 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
66900 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
66920 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
66940 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
66960 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
66980 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
669a0 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.
669c0 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
669e0 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
66a00 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
66a20 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
66a40 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
66a60 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.
66a80 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
66aa0 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
66ac0 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.
66ae0 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.....
66b00 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
66b20 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
66b40 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
66b60 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.
66b80 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
66ba0 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
66bc0 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
66be0 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
66c00 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
66c20 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
66c40 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
66c60 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
66c80 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.
66ca0 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
66cc0 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........
66ce0 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
66d00 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
66d20 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
66d40 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
66d60 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.
66d80 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
66da0 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
66dc0 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
66de0 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
66e00 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
66e20 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.
66e40 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
66e60 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.
66e80 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
66ea0 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
66ec0 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
66ee0 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
66f00 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
66f20 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
66f40 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.(
66f60 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}.....
66f80 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:.
66fa0 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
66fc0 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.
66fe0 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
67000 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
67020 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.
67040 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
67060 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.....
67080 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
670a0 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
670c0 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;.
670e0 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
67100 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
67120 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
67140 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
67160 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
67180 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.
671a0 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..
671c0 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.
671e0 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
67200 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.
67220 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
67240 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
67260 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,
67280 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
672a0 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
672c0 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}..
672e0 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}
67300 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
67320 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
67340 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
67360 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
67380 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
673a0 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
673c0 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
673e0 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
67400 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
67420 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
67440 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
67460 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
67480 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
674a0 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
674c0 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
674e0 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
67500 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
67520 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
67540 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.
67560 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.
67580 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
675a0 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
675c0 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
675e0 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
67600 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
67620 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.
67640 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
67660 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
67680 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
676a0 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
676c0 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
676e0 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
67700 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
67720 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
67740 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>.........................
67760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
67780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
677a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
677c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
677e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
67800 67 70 74 65 6c 2d 30 2e 39 2e 38 2e 35 2f 67 70 74 65 6c 2d 70 6b 67 2e 65 6c 00 00 00 00 00 00 gptel-0.9.8.5/gptel-pkg.el......
67820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
67840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
67860 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
67880 30 30 30 30 37 33 32 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 33 36 36 33 00 20 30 00 00 00 0000732.00000000000.013663..0...
678a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
678c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
678e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
67900 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...................
67920 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...................
67940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
67960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
67980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
679a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
679c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
679e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
67a00 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
67a20 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
67a40 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
67a60 6c 22 20 22 30 2e 39 2e 38 2e 35 22 20 22 49 6e 74 65 72 61 63 74 20 77 69 74 68 20 43 68 61 74 l"."0.9.8.5"."Interact.with.Chat
67a80 47 50 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 GPT.or.other.LLMs".'((emacs."27.
67aa0 31 22 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 1").(transient."0.7.4").(compat.
67ac0 22 32 39 2e 31 2e 34 2e 31 22 29 29 20 3a 63 6f 6d 6d 69 74 20 22 61 35 61 66 31 35 63 37 37 30 "29.1.4.1")).:commit."a5af15c770
67ae0 62 36 36 61 36 31 64 30 36 30 39 61 37 33 36 65 31 64 62 33 37 34 39 35 36 35 35 35 35 39 22 20 b66a61d0609a736e1db37495655559".
67b00 3a 61 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 :authors.'(("Karthik.Chikmagalur
67b20 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 6d 61 69 6c 2e 63 "..."karthik.chikmagalur@gmail.c
67b40 6f 6d 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 om")).:maintainer.'("Karthik.Chi
67b60 6b 6d 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 kmagalur"..."karthik.chikmagalur
67b80 40 67 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 @gmail.com").:keywords.'("conven
67ba0 69 65 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 ience"."tools").:url."https://gi
67bc0 74 68 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 thub.com/karthink/gptel").......
67be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
67c00 67 70 74 65 6c 2d 30 2e 39 2e 38 2e 35 2f 67 70 74 65 6c 2d 67 65 6d 69 6e 69 2e 65 6c 00 00 00 gptel-0.9.8.5/gptel-gemini.el...
67c20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
67c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
67c60 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
67c80 30 30 36 34 33 34 30 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 34 33 35 37 00 20 30 00 00 00 0064340.00000000000.014357..0...
67ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
67cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
67ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
67d00 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...................
67d20 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...................
67d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
67d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
67d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
67da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
67dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
67de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
67e00 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.
67e20 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-
67e40 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
67e60 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
67e80 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
67ea0 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>.
67ec0 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
67ee0 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
67f00 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
67f20 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
67f40 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
67f60 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
67f80 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
67fa0 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...;;
67fc0 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.
67fe0 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,
68000 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
68020 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.
68040 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
68060 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.
68080 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
680a0 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
680c0 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
680e0 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
68100 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
68120 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
68140 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
68160 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
68180 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.
681a0 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
681c0 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.
681e0 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
68200 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
68220 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
68240 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."
68260 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-
68280 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
682a0 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
682c0 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
682e0 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
68300 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
68320 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
68340 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
68360 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).......
68380 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).......
683a0 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
683c0 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
683e0 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
68400 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,
68420 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
68440 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
68460 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?.
68480 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-
684a0 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).
684c0 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
684e0 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
68500 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
68520 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,.
68540 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
68560 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
68580 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
685a0 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......
685c0 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
685e0 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
68600 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
68620 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-
68640 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
68660 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))
68680 0a 20 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.(
686a0 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...........
686c0 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.
686e0 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)..................
68700 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
68720 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
68740 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..
68760 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
68780 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
687a0 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
687c0 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
687e0 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
68800 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..............................
68820 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).
68840 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
68860 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.
68880 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
688a0 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
688c0 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
688e0 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
68900 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
68920 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)))..........(
68940 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
68960 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
68980 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
689a0 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
689c0 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..........
689e0 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...........
68a00 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.
68a20 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
68a40 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
68a60 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.:
68a80 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
68aa0 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
68ac0 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
68ae0 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)..
68b00 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
68b20 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.
68b40 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
68b60 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
68b80 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
68ba0 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).......
68bc0 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
68be0 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
68c00 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
68c20 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).....
68c40 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
68c60 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.......
68c80 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.
68ca0 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......
68cc0 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)
68ce0 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.
68d00 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
68d20 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)).
68d40 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
68d60 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))))
68d80 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
68da0 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")....
68dc0 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
68de0 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
68e00 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
68e20 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
68e40 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..........
68e60 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
68e80 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
68ea0 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......
68ec0 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
68ee0 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
68f00 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........
68f20 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
68f40 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
68f60 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.
68f80 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.
68fa0 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
68fc0 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
68fe0 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..
69000 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.
69020 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-
69040 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))).
69060 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
69080 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
690a0 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
690c0 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-
690e0 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.
69100 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.".
69120 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..........
69140 60 28 3a 63 6f 6e 74 65 6e 74 73 20 5b 2c 40 70 72 6f 6d 70 74 73 5d 0a 20 20 20 20 20 20 20 20 `(:contents.[,@prompts].........
69160 20 20 20 3a 73 61 66 65 74 79 53 65 74 74 69 6e 67 73 20 5b 28 3a 63 61 74 65 67 6f 72 79 20 22 ...:safetySettings.[(:category."
69180 48 41 52 4d 5f 43 41 54 45 47 4f 52 59 5f 48 41 52 41 53 53 4d 45 4e 54 22 0a 20 20 20 20 20 20 HARM_CATEGORY_HARASSMENT".......
691a0 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
691c0 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").................
691e0 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 5f 43 41 54 ............(:category."HARM_CAT
69200 45 47 4f 52 59 5f 53 45 58 55 41 4c 4c 59 5f 45 58 50 4c 49 43 49 54 22 0a 20 20 20 20 20 20 20 EGORY_SEXUALLY_EXPLICIT"........
69220 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 64 ......................:threshold
69240 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 20 ."BLOCK_NONE")..................
69260 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 5f 43 41 54 45 ...........(:category."HARM_CATE
69280 47 4f 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 GORY_DANGEROUS_CONTENT".........
692a0 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 64 20 .....................:threshold.
692c0 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 20 20 "BLOCK_NONE")...................
692e0 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 5f 43 41 54 45 47 ..........(:category."HARM_CATEG
69300 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 20 20 20 20 20 20 ORY_HATE_SPEECH"................
69320 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 4b 5f ..............:threshold."BLOCK_
69340 4e 4f 4e 45 22 29 5d 29 29 0a 20 20 20 20 20 20 20 20 70 61 72 61 6d 73 29 0a 20 20 20 20 28 69 NONE")])).........params).....(i
69360 66 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 f.gptel--system-message.........
69380 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 73 79 73 74 65 6d (plist-put.prompts-plist.:system
693a0 5f 69 6e 73 74 72 75 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 _instruction....................
693c0 60 28 3a 70 61 72 74 73 20 28 3a 74 65 78 74 20 2c 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d `(:parts.(:text.,gptel--system-m
693e0 65 73 73 61 67 65 29 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 75 73 65 2d 74 essage)))).....(when.gptel-use-t
69400 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 2d 74 ools.......(when.(eq.gptel-use-t
69420 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 74 20 ools.'force).........(plist-put.
69440 70 72 6f 6d 70 74 73 2d 70 6c 69 73 74 20 3a 74 6f 6f 6c 5f 63 6f 6e 66 69 67 0a 20 20 20 20 20 prompts-plist.:tool_config......
69460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 28 3a 66 75 6e 63 74 69 6f 6e 5f 63 61 6c 6c 69 6e ..............'(:function_callin
69480 67 5f 63 6f 6e 66 69 67 20 28 3a 6d 6f 64 65 20 22 41 4e 59 22 29 29 29 29 0a 20 20 20 20 20 20 g_config.(:mode."ANY")))).......
694a0 28 77 68 65 6e 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 0a 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 (when.gptel-tools.........(plist
694c0 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 0a 20 20 20 20 20 20 -put.prompts-plist.:tools.......
694e0 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 74 6f 6f 6c 73 .............(gptel--parse-tools
69500 20 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 29 29 29 29 0a 20 20 20 20 28 77 68 .backend.gptel-tools)))).....(wh
69520 65 6e 20 67 70 74 65 6c 2d 74 65 6d 70 65 72 61 74 75 72 65 0a 20 20 20 20 20 20 28 73 65 74 71 en.gptel-temperature.......(setq
69540 20 70 61 72 61 6d 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 70 .params.............(plist-put.p
69560 61 72 61 6d 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 74 65 arams........................:te
69580 6d 70 65 72 61 74 75 72 65 20 28 6d 61 78 20 67 70 74 65 6c 2d 74 65 6d 70 65 72 61 74 75 72 65 mperature.(max.gptel-temperature
695a0 20 31 2e 30 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 .1.0)))).....(when.gptel-max-tok
695c0 65 6e 73 0a 20 20 20 20 20 20 28 73 65 74 71 20 70 61 72 61 6d 73 0a 20 20 20 20 20 20 20 20 20 ens.......(setq.params..........
695e0 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 70 61 72 61 6d 73 0a 20 20 20 20 20 20 20 20 20 20 20 ...(plist-put.params............
69600 20 20 20 20 20 20 20 20 20 20 20 20 3a 6d 61 78 4f 75 74 70 75 74 54 6f 6b 65 6e 73 20 67 70 74 ............:maxOutputTokens.gpt
69620 65 6c 2d 6d 61 78 2d 74 6f 6b 65 6e 73 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c el-max-tokens))).....(when.gptel
69640 2d 69 6e 63 6c 75 64 65 2d 72 65 61 73 6f 6e 69 6e 67 0a 20 20 20 20 20 20 28 73 65 74 71 20 70 -include-reasoning.......(setq.p
69660 61 72 61 6d 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 70 61 72 arams.............(plist-put.par
69680 61 6d 73 20 3a 74 68 69 6e 6b 69 6e 67 43 6f 6e 66 69 67 20 27 28 3a 69 6e 63 6c 75 64 65 54 68 ams.:thinkingConfig.'(:includeTh
696a0 6f 75 67 68 74 73 20 74 29 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 70 61 72 61 6d 73 0a 20 20 oughts.t)))).....(when.params...
696c0 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 0a 20 20 20 ....(plist-put.prompts-plist....
696e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 67 65 6e 65 72 61 74 69 6f 6e 43 6f 6e 66 69 67 20 ..............:generationConfig.
69700 70 61 72 61 6d 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 params)).....;;.Merge.request.pa
69720 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 64 20 70 61 72 61 rams.with.model.and.backend.para
69740 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 74 73 0a 20 20 20 ms......(gptel--merge-plists....
69760 20 20 70 72 6f 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 ..prompts-plist......(gptel-back
69780 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 64 end-request-params.gptel-backend
697a0 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 72 )......(gptel--model-request-par
697c0 61 6d 73 20 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 ams..gptel-model))))..(defun.gpt
697e0 65 6c 2d 2d 67 65 6d 69 6e 69 2d 66 69 6c 74 65 72 2d 73 63 68 65 6d 61 20 28 73 63 68 65 6d 61 el--gemini-filter-schema.(schema
69800 29 0a 20 20 22 44 65 73 74 72 75 63 74 69 76 65 6c 79 20 66 69 6c 74 65 72 20 75 6e 73 75 70 70 )..."Destructively.filter.unsupp
69820 6f 72 74 65 64 20 61 74 74 72 69 62 75 74 65 73 20 66 72 6f 6d 20 53 43 48 45 4d 41 2e 0a 0a 47 orted.attributes.from.SCHEMA...G
69840 65 6d 69 6e 69 27 73 20 41 50 49 20 64 6f 65 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 20 60 61 64 emini's.API.does.not.support.`ad
69860 64 69 74 69 6f 6e 61 6c 50 72 6f 70 65 72 74 69 65 73 27 2e 22 0a 20 20 28 63 6c 2d 72 65 6d 66 ditionalProperties'."...(cl-remf
69880 20 73 63 68 65 6d 61 20 3a 61 64 64 69 74 69 6f 6e 61 6c 50 72 6f 70 65 72 74 69 65 73 29 0a 20 .schema.:additionalProperties)..
698a0 20 28 77 68 65 6e 20 28 70 6c 69 73 74 70 20 73 63 68 65 6d 61 29 0a 20 20 20 20 28 63 6c 2d 6c .(when.(plistp.schema).....(cl-l
698c0 6f 6f 70 20 66 6f 72 20 28 6b 65 79 20 76 61 6c 29 20 6f 6e 20 73 63 68 65 6d 61 20 62 79 20 23 oop.for.(key.val).on.schema.by.#
698e0 27 63 64 64 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 20 28 63 6f 6e 64 0a 20 20 20 20 'cddr..............do.(cond.....
69900 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 20 6d 6f 64 69 .............;;.Recursively.modi
69920 66 79 20 73 63 68 65 6d 61 73 20 77 69 74 68 69 6e 20 76 65 63 74 6f 72 73 20 28 61 6e 79 4f 66 fy.schemas.within.vectors.(anyOf
69940 2f 61 6c 6c 4f 66 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 6d 65 6d 71 20 /allOf)..................((memq.
69960 6b 65 79 20 27 28 3a 61 6e 79 4f 66 20 3a 61 6c 6c 4f 66 29 29 0a 20 20 20 20 20 20 20 20 20 20 key.'(:anyOf.:allOf))...........
69980 20 20 20 20 20 20 20 20 28 64 6f 74 69 6d 65 73 20 28 69 20 28 6c 65 6e 67 74 68 20 76 61 6c 29 ........(dotimes.(i.(length.val)
699a0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 73 65 74 20 76 61 6c 20 ).....................(aset.val.
699c0 69 20 28 67 70 74 65 6c 2d 2d 67 65 6d 69 6e 69 2d 66 69 6c 74 65 72 2d 73 63 68 65 6d 61 20 28 i.(gptel--gemini-filter-schema.(
699e0 61 72 65 66 20 76 61 6c 20 69 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 aref.val.i))))).................
69a00 20 3b 3b 20 52 65 63 75 72 73 69 76 65 6c 79 20 6d 6f 64 69 66 79 20 70 6c 69 73 74 20 76 61 6c .;;.Recursively.modify.plist.val
69a20 75 65 73 2c 20 77 68 69 63 68 20 6d 61 79 20 63 6f 6e 74 61 69 6e 20 73 75 62 2d 73 63 68 65 6d ues,.which.may.contain.sub-schem
69a40 61 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 70 6c 69 73 74 70 20 76 61 6c as..................((plistp.val
69a60 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 28 63 6c 2d 72 65 )...................(when.(cl-re
69a80 6d 66 20 76 61 6c 20 3a 61 64 64 69 74 69 6f 6e 61 6c 50 72 6f 70 65 72 74 69 65 73 29 0a 20 20 mf.val.:additionalProperties)...
69aa0 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 28 70 6c 69 73 ..................(cl-remf.(plis
69ac0 74 2d 67 65 74 20 73 63 68 65 6d 61 20 6b 65 79 29 20 3a 61 64 64 69 74 69 6f 6e 61 6c 50 72 6f t-get.schema.key).:additionalPro
69ae0 70 65 72 74 69 65 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 perties))...................(gpt
69b00 65 6c 2d 2d 67 65 6d 69 6e 69 2d 66 69 6c 74 65 72 2d 73 63 68 65 6d 61 20 76 61 6c 29 29 0a 20 el--gemini-filter-schema.val))..
69b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 44 65 66 61 75 6c 74 3a 20 64 6f 20 6e ................;;.Default:.do.n
69b40 6f 74 68 69 6e 67 20 74 6f 20 6f 74 68 65 72 20 6b 65 79 2d 76 61 6c 75 65 20 70 61 69 72 73 20 othing.to.other.key-value.pairs.
69b60 79 65 74 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 20 6e 69 6c 29 29 29 29 yet...................(t.nil))))
69b80 0a 20 20 73 63 68 65 6d 61 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d ...schema)..(cl-defmethod.gptel-
69ba0 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 2d 67 65 -parse-tools.((_backend.gptel-ge
69bc0 6d 69 6e 69 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 mini).tools)..."Parse.TOOLS.to.t
69be0 68 65 20 47 65 6d 69 6e 69 20 41 50 49 20 74 6f 6f 6c 20 64 65 66 69 6e 69 74 69 6f 6e 20 73 70 he.Gemini.API.tool.definition.sp
69c00 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 6c 2d 74 ec...TOOLS.is.a.list.of.`gptel-t
69c20 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 63 6c 2d ool'.structs,.which.see."...(cl-
69c40 6c 6f 6f 70 0a 20 20 20 66 6f 72 20 74 6f 6f 6c 20 69 6e 20 28 65 6e 73 75 72 65 2d 6c 69 73 74 loop....for.tool.in.(ensure-list
69c60 20 74 6f 6f 6c 73 29 0a 20 20 20 63 6f 6c 6c 65 63 74 0a 20 20 20 28 6c 69 73 74 0a 20 20 20 20 .tools)....collect....(list.....
69c80 3a 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 0a 20 20 20 :name.(gptel-tool-name.tool)....
69ca0 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 2d 64 65 73 63 72 69 .:description.(gptel-tool-descri
69cc0 70 74 69 6f 6e 20 74 6f 6f 6c 29 0a 20 20 20 20 3a 70 61 72 61 6d 65 74 65 72 73 0a 20 20 20 20 ption.tool).....:parameters.....
69ce0 28 69 66 20 28 6e 6f 74 20 28 67 70 74 65 6c 2d 74 6f 6f 6c 2d 61 72 67 73 20 74 6f 6f 6c 29 29 (if.(not.(gptel-tool-args.tool))
69d00 0a 20 20 20 20 20 20 20 20 20 3a 6e 75 6c 6c 20 20 20 20 20 20 20 20 20 20 20 3b 4e 4f 54 45 3a ..........:null...........;NOTE:
69d20 20 47 65 6d 69 6e 69 20 77 61 6e 74 73 20 3a 6e 75 6c 6c 20 69 66 20 74 68 65 20 66 75 6e 63 74 .Gemini.wants.:null.if.the.funct
69d40 69 6f 6e 20 74 61 6b 65 73 20 6e 6f 20 61 72 67 73 0a 20 20 20 20 20 20 28 6c 69 73 74 20 3a 74 ion.takes.no.args.......(list.:t
69d60 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 3b 3b 20 53 65 65 20 ype."object".............;;.See.
69d80 74 68 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 the.generic.implementation.for.a
69da0 6e 20 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 n.explanation.of.this...........
69dc0 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 20 20 20 20 ..;;.transformation.............
69de0 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 28 63 6c 2d 6c 6f 6f .:properties.............(cl-loo
69e00 70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 61 72 67 20 69 6e 20 28 67 70 74 65 6c p..............for.arg.in.(gptel
69e20 2d 74 6f 6f 6c 2d 61 72 67 73 20 74 6f 6f 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f -tool-args.tool)..............fo
69e40 72 20 61 72 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 r.argspec.=.(copy-sequence.arg).
69e60 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
69e80 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
69ea0 6c 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 6e 65 77 6e 61 6d 65 20 3d 20 28 6f ly..............for.newname.=.(o
69ec0 72 20 28 61 6e 64 20 28 6b 65 79 77 6f 72 64 70 20 6e 61 6d 65 29 20 6e 61 6d 65 29 0a 20 20 20 r.(and.(keywordp.name).name)....
69ee0 20 20 20 20 20 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 ............................(mak
69f00 65 2d 73 79 6d 62 6f 6c 20 28 63 6f 6e 63 61 74 20 22 3a 22 20 6e 61 6d 65 29 29 29 0a 20 20 20 e-symbol.(concat.":".name)))....
69f20 20 20 20 20 20 20 20 20 20 20 64 6f 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..........do....................
69f40 20 20 20 20 3b 41 52 47 53 50 45 43 20 69 73 20 41 52 47 20 77 69 74 68 6f 75 74 20 75 6e 72 65 ....;ARGSPEC.is.ARG.without.unre
69f60 63 6f 67 6e 69 7a 65 64 20 6b 65 79 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 72 cognized.keys..............(cl-r
69f80 65 6d 66 20 61 72 67 73 70 65 63 20 3a 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 emf.argspec.:name)..............
69fa0 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).....
69fc0 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
69fe0 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")..............
6a000 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 72 67 73 70 65 63 do.(unless.(plist-member.argspec
6a020 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 20 20 20 20 28 70 .:required)...................(p
6a040 6c 69 73 74 2d 70 75 74 20 61 72 67 73 70 65 63 20 3a 72 65 71 75 69 72 65 64 20 5b 5d 29 29 0a list-put.argspec.:required.[])).
6a060 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 74 2d 67 65 .............if.(equal.(plist-ge
6a080 74 20 61 72 67 20 3a 74 79 70 65 29 20 22 73 74 72 69 6e 67 22 29 0a 20 20 20 20 20 20 20 20 20 t.arg.:type)."string")..........
6a0a0 20 20 20 20 64 6f 20 28 63 6c 2d 72 65 6d 66 20 61 72 67 73 70 65 63 20 3a 66 6f 72 6d 61 74 29 ....do.(cl-remf.argspec.:format)
6a0c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 61 70 70 65 6e 64 20 28 6c 69 73 74 20 6e 65 77 6e 61 ..............append.(list.newna
6a0e0 6d 65 20 28 67 70 74 65 6c 2d 2d 67 65 6d 69 6e 69 2d 66 69 6c 74 65 72 2d 73 63 68 65 6d 61 20 me.(gptel--gemini-filter-schema.
6a100 61 72 67 73 70 65 63 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 72 65 71 75 69 72 65 64 argspec))).............:required
6a120 0a 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 .............(vconcat...........
6a140 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 20 20 20 20 ...(delq.nil.(mapcar............
6a160 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 61 72 67 29 20 28 61 6e 64 20 .............(lambda.(arg).(and.
6a180 28 6e 6f 74 20 28 70 6c 69 73 74 2d 67 65 74 20 61 72 67 20 3a 6f 70 74 69 6f 6e 61 6c 29 29 0a (not.(plist-get.arg.:optional)).
6a1a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
6a1c0 20 20 20 20 20 20 28 70 6c 69 73 74 2d 67 65 74 20 61 72 67 20 3a 6e 61 6d 65 29 29 29 0a 20 20 ......(plist-get.arg.:name)))...
6a1e0 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 74 6f 6f ......................(gptel-too
6a200 6c 2d 61 72 67 73 20 74 6f 6f 6c 29 29 29 29 29 29 29 0a 20 20 20 69 6e 74 6f 20 74 6f 6f 6c 2d l-args.tool)))))))....into.tool-
6a220 73 70 65 63 73 0a 20 20 20 66 69 6e 61 6c 6c 79 20 72 65 74 75 72 6e 20 60 5b 28 3a 66 75 6e 63 specs....finally.return.`[(:func
6a240 74 69 6f 6e 5f 64 65 63 6c 61 72 61 74 69 6f 6e 73 20 2c 28 76 63 6f 6e 63 61 74 20 74 6f 6f 6c tion_declarations.,(vconcat.tool
6a260 2d 73 70 65 63 73 29 29 5d 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c -specs))]))..(cl-defmethod.gptel
6a280 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.
6a2a0 67 70 74 65 6c 2d 67 65 6d 69 6e 69 29 20 74 6f 6f 6c 2d 75 73 65 29 0a 20 20 22 52 65 74 75 72 gptel-gemini).tool-use)..."Retur
6a2c0 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 61 6c 6c 20 n.a.prompt.containing.tool.call.
6a2e0 72 65 73 75 6c 74 73 20 69 6e 20 54 4f 4f 4c 2d 55 53 45 2e 22 0a 20 20 28 6c 69 73 74 0a 20 20 results.in.TOOL-USE."...(list...
6a300 20 3a 72 6f 6c 65 20 22 75 73 65 72 22 0a 20 20 20 3a 70 61 72 74 73 0a 20 20 20 28 76 63 6f 6e .:role."user"....:parts....(vcon
6a320 63 61 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 cat.....(mapcar......(lambda.(to
6a340 6f 6c 2d 63 61 6c 6c 29 0a 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 72 65 73 75 6c 74 20 28 70 ol-call)........(let.((result.(p
6a360 6c 69 73 74 2d 67 65 74 20 74 6f 6f 6c 2d 63 61 6c 6c 20 3a 72 65 73 75 6c 74 29 29 0a 20 20 20 list-get.tool-call.:result))....
6a380 20 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 ..........(name.(plist-get.tool-
6a3a0 63 61 6c 6c 20 3a 6e 61 6d 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 60 28 3a 66 75 6e 63 74 69 call.:name)))..........`(:functi
6a3c0 6f 6e 52 65 73 70 6f 6e 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 28 3a 6e 61 6d 65 20 2c 6e 61 onResponse............(:name.,na
6a3e0 6d 65 20 3a 72 65 73 70 6f 6e 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 3a 6e 61 6d 65 20 me.:response.............(:name.
6a400 2c 6e 61 6d 65 20 3a 63 6f 6e 74 65 6e 74 20 2c 72 65 73 75 6c 74 29 29 29 29 29 0a 20 20 20 20 ,name.:content.,result))))).....
6a420 20 74 6f 6f 6c 2d 75 73 65 29 29 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 67 70 74 .tool-use))))..(cl-defmethod.gpt
6a440 65 6c 2d 2d 69 6e 6a 65 63 74 2d 70 72 6f 6d 70 74 20 28 28 5f 62 61 63 6b 65 6e 64 20 67 70 74 el--inject-prompt.((_backend.gpt
6a460 65 6c 2d 67 65 6d 69 6e 69 29 20 64 61 74 61 20 6e 65 77 2d 70 72 6f 6d 70 74 20 26 6f 70 74 69 el-gemini).data.new-prompt.&opti
6a480 6f 6e 61 6c 20 5f 70 6f 73 69 74 69 6f 6e 29 0a 20 20 22 41 70 70 65 6e 64 20 4e 45 57 2d 50 52 onal._position)..."Append.NEW-PR
6a4a0 4f 4d 50 54 20 74 6f 20 65 78 69 73 74 69 6e 67 20 70 72 6f 6d 70 74 73 20 69 6e 20 71 75 65 72 OMPT.to.existing.prompts.in.quer
6a4c0 79 20 44 41 54 41 2e 0a 0a 53 65 65 20 67 65 6e 65 72 69 63 20 69 6d 70 6c 65 6d 65 6e 74 61 74 y.DATA...See.generic.implementat
6a4e0 69 6f 6e 20 66 6f 72 20 66 75 6c 6c 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 2e 22 0a 20 20 28 ion.for.full.documentation."...(
6a500 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 63 let.((prompts.(plist-get.data.:c
6a520 6f 6e 74 65 6e 74 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 3a ontents))).....(plist-put.data.:
6a540 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 20 28 6c 69 73 74 20 contents.(vconcat.prompts.(list.
6a560 6e 65 77 2d 70 72 6f 6d 70 74 29 29 29 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 67 new-prompt)))))..(cl-defmethod.g
6a580 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 65 6c ptel--parse-list.((backend.gptel
6a5a0 2d 67 65 6d 69 6e 69 29 20 70 72 6f 6d 70 74 2d 6c 69 73 74 29 0a 20 20 28 69 66 20 28 63 6f 6e -gemini).prompt-list)...(if.(con
6a5c0 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 65 74 sp.(car.prompt-list)).......(let
6a5e0 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 3b 20 .((full-prompt))..............;.
6a600 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 0a 20 Advanced.format,.list.of.lists..
6a620 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 69 73 .......(dolist.(entry.prompt-lis
6a640 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 20 20 t)...........(pcase.entry.......
6a660 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 20 20 ......(`(prompt...,msg).........
6a680 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 20 .....(push.(list.:role."user"...
6a6a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 70 61 72 74 73 20 60 5b .......................:parts.`[
6a6c0 28 3a 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 (:text.,(or.(car-safe.msg).msg))
6a6e0 5d 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 ])....................full-promp
6a700 74 29 29 0a 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 6d t)).............(`(response...,m
6a720 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 74 20 3a 72 6f sg)..............(push.(list.:ro
6a740 6c 65 20 22 6d 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 le."model"......................
6a760 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 72 2d 73 61 ....:parts.`[(:text.,(or.(car-sa
6a780 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 20 20 fe.msg).msg))]).................
6a7a0 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 20 28 60 28 ...full-prompt)).............(`(
6a7c0 74 6f 6f 6c 20 2e 20 2c 63 61 6c 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 tool...,call)..............(push
6a7e0 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 20 20 20 20 20 20 20 .(list.:role."model"............
6a800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 70 61 72 74 73 20 28 76 65 63 74 6f 72 20 60 28 3a ..............:parts.(vector.`(:
6a820 66 75 6e 63 74 69 6f 6e 43 61 6c 6c 20 28 20 3a 6e 61 6d 65 20 2c 28 70 6c 69 73 74 2d 67 65 74 functionCall.(.:name.,(plist-get
6a840 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 20 20 20 20 20 .call.:name)....................
6a860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
6a880 20 20 20 20 20 20 20 3a 61 72 67 73 20 2c 28 70 6c 69 73 74 2d 67 65 74 20 63 61 6c 6c 20 3a 61 .......:args.,(plist-get.call.:a
6a8a0 72 67 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 66 75 6c 6c rgs)))))....................full
6a8c0 2d 70 72 6f 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 67 70 74 -prompt)..............(push.(gpt
6a8e0 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 28 el--parse-tool-results.backend.(
6a900 6c 69 73 74 20 28 63 64 72 20 65 6e 74 72 79 29 29 29 20 66 75 6c 6c 2d 70 72 6f 6d 70 74 29 29 list.(cdr.entry))).full-prompt))
6a920 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 70 74 )).........(nreverse.full-prompt
6a940 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 6f 6d )).....(cl-loop.for.text.in.prom
6a960 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 73 74 pt-list....;.Simple.format,.list
6a980 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 6f 6c .of.strings..............for.rol
6a9a0 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 20 20 e.=.t.then.(not.role)...........
6a9c0 20 20 20 69 66 20 74 65 78 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 72 6f 6c 65 0a ...if.text..............if.role.
6a9e0 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 72 6f 6c 65 .............collect.(list.:role
6aa00 20 22 75 73 65 72 22 20 3a 70 61 72 74 73 20 60 5b 28 3a 74 65 78 74 20 2c 74 65 78 74 29 5d 29 ."user".:parts.`[(:text.,text)])
6aa20 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 65 6c 73 65 20 .into.prompts..............else.
6aa40 63 6f 6c 6c 65 63 74 20 28 6c 69 73 74 20 3a 72 6f 6c 65 20 22 6d 6f 64 65 6c 22 20 3a 70 61 72 collect.(list.:role."model".:par
6aa60 74 73 20 60 28 3a 74 65 78 74 20 2c 74 65 78 74 29 29 20 69 6e 74 6f 20 70 72 6f 6d 70 74 73 0a ts.`(:text.,text)).into.prompts.
6aa80 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 70 72 6f 6d .............finally.return.prom
6aaa0 70 74 73 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 pts)))..(cl-defmethod.gptel--par
6aac0 73 65 2d 62 75 66 66 65 72 20 28 28 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 67 65 6d 69 6e 69 se-buffer.((backend.gptel-gemini
6aae0 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 28 6c 65 74 20 ).&optional.max-entries)...(let.
6ab00 28 28 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 ((prompts).(prev-pt.(point)))...
6ab20 20 20 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 ..(if.(or.gptel-mode.gptel-track
6ab40 2d 72 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 -response).........(while.(and.(
6ab60 6f 72 20 28 6e 6f 74 20 6d 61 78 2d 65 6e 74 72 69 65 73 29 20 28 3e 3d 20 6d 61 78 2d 65 6e 74 or.(not.max-entries).(>=.max-ent
6ab80 72 69 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 ries.0)).....................(go
6aba0 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 65 72 74 to-char.(previous-single-propert
6abc0 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 20 20 20 y-change........................
6abe0 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 70 6f 69 .........(point).'gptel.nil.(poi
6ac00 6e 74 2d 6d 69 6e 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e nt-min))).....................(n
6ac20 6f 74 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 ot.(=.(point).prev-pt)))........
6ac40 20 20 20 28 70 63 61 73 65 20 28 67 65 74 2d 63 68 61 72 2d 70 72 6f 70 65 72 74 79 20 28 70 6f ...(pcase.(get-char-property.(po
6ac60 69 6e 74 29 20 27 67 70 74 65 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 27 72 65 73 70 6f int).'gptel).............('respo
6ac80 6e 73 65 0a 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 nse..............(when-let*.((co
6aca0 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 20 20 ntent.(gptel--trim-prefixes.....
6acc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 ...............................(
6ace0 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 20 28 buffer-substring-no-properties.(
6ad00 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 20 point).prev-pt))))..............
6ad20 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 20 3a 70 61 72 ..(push.(list.:role."model".:par
6ad40 74 73 20 28 6c 69 73 74 20 3a 74 65 78 74 20 63 6f 6e 74 65 6e 74 29 29 20 70 72 6f 6d 70 74 73 ts.(list.:text.content)).prompts
6ad60 29 29 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 5f 69 64 29 0a ))).............(`(tool...,_id).
6ad80 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 0a 20 20 20 .............(save-excursion....
6ada0 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20 6e 69 6c 0a ............(condition-case.nil.
6adc0 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 74 6f 6f 6c 2d ...................(let*.((tool-
6ade0 63 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 call.(read.(current-buffer)))...
6ae00 20 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 61 6d 65 20 28 70 ........................(name.(p
6ae20 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 0a 20 20 20 20 20 list-get.tool-call.:name))......
6ae40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 72 67 75 6d 65 6e 74 73 20 .....................(arguments.
6ae60 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 29 29 0a 20 .(plist-get.tool-call.:args)))..
6ae80 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
6aea0 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................
6aec0 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
6aee0 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...
6af00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
6af20 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)))..
6af40 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 70 74 65 6c ....................(push.(gptel
6af60 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 28 6c 69 --parse-tool-results.backend.(li
6af80 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 20 20 20 20 20 20 20 st.tool-call))..................
6afa0 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 20 20 20 20 20 20 ..........prompts)..............
6afc0 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 6f 64 65 6c ........(push.(list.:role."model
6afe0 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 "...............................
6b000 20 20 20 3a 70 61 72 74 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ...:parts.......................
6b020 20 20 20 20 20 20 20 20 20 20 20 28 76 65 63 74 6f 72 20 60 28 3a 66 75 6e 63 74 69 6f 6e 43 61 ...........(vector.`(:functionCa
6b040 6c 6c 20 28 20 3a 6e 61 6d 65 20 2c 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ll.(.:name.,name................
6b060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
6b080 20 20 20 20 20 20 20 20 20 20 20 20 3a 61 72 67 73 20 2c 61 72 67 75 6d 65 6e 74 73 29 29 29 29 ............:args.,arguments))))
6b0a0 0a 20 20 20 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 ............................prom
6b0c0 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 65 6e 64 2d 6f 66 2d pts))..................((end-of-
6b0e0 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 0a 20 20 20 20 20 20 file.invalid-read-syntax).......
6b100 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 6d 61 74 20 22 43 6f ............(message.(format."Co
6b120 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 6e 20 6c 69 6e 65 20 uld.not.parse.tool-call.on.line.
6b140 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 20 20 %s".............................
6b160 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 73 20 28 70 6f 69 6e .......(line-number-at-pos.(poin
6b180 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 67 6e 6f 72 65 29 0a t)))))))).............('ignore).
6b1a0 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 20 20 20 20 20 20 28 ............('nil..............(
6b1c0 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 20 20 20 20 20 20 20 if.gptel-track-media............
6b1e0 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
6b200 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 0a 20 20 20 20 20 20 l--gemini-parse-multipart.......
6b220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
6b240 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 73 20 6d 61 6a 6f 72 .(gptel--parse-media-links.major
6b260 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 0a 20 20 20 20 20 20 -mode.(point).prev-pt)))).......
6b280 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 6e 67 74 68 20 63 6f .............(when.(>.(length.co
6b2a0 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 20 20 28 ntent).0)......................(
6b2c0 70 75 73 68 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 63 push.(list.:role."user".:parts.c
6b2e0 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)))..............
6b300 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
6b320 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....................
6b340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 ..................(buffer-substr
6b360 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...............
6b380 20 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 29 20 ........................(point).
6b3a0 70 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 28 70 75 prev-pt))))..................(pu
6b3c0 73 68 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 60 5b 28 sh.(list.:role."user".:parts.`[(
6b3e0 3a 74 65 78 74 20 2c 63 6f 6e 74 65 6e 74 29 5d 29 20 70 72 6f 6d 70 74 73 29 29 29 29 29 0a 20 :text.,content)]).prompts)))))..
6b400 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 70 72 65 76 2d 70 74 20 28 70 6f 69 6e 74 29 29 0a .........(setq.prev-pt.(point)).
6b420 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 73 20 28 63 6c 2d 64 ..........(and.max-entries.(cl-d
6b440 65 63 66 20 6d 61 78 2d 65 6e 74 72 69 65 73 29 29 29 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 ecf.max-entries))).......(let.((
6b460 63 6f 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 content.(string-trim.(buffer-sub
6b480 73 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 string-no-properties............
6b4a0 20 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 ........................(point-m
6b4c0 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 28 70 75 73 in).(point-max))))).........(pus
6b4e0 68 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 60 5b 28 3a h.(list.:role."user".:parts.`[(:
6b500 74 65 78 74 20 2c 63 6f 6e 74 65 6e 74 29 5d 29 20 70 72 6f 6d 70 74 73 29 29 29 0a 20 20 20 20 text.,content)]).prompts))).....
6b520 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 67 65 6d 69 6e 69 2d prompts))..(defun.gptel--gemini-
6b540 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 65 parse-multipart.(parts)..."Conve
6b560 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 74 rt.a.multipart.prompt.PARTS.to.t
6b580 68 65 20 47 65 6d 69 6e 69 20 41 50 49 20 66 6f 72 6d 61 74 2e 0a 0a 54 68 65 20 69 6e 70 75 74 he.Gemini.API.format...The.input
6b5a0 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 78 .is.an.alist.of.the.form..((:tex
6b5c0 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 61 t.\"some.text\")...(:media.\"/pa
6b5e0 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 2f th/to/media.png\".:mime.\"image/
6b600 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 2e png\")...(:text.\"More.text\")).
6b620 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 72 ..The.output.is.a.vector.of.entr
6b640 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 72 ies.in.a.backend-appropriate.for
6b660 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 20 mat."...(cl-loop....for.part.in.
6b680 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 20 parts....for.n.upfrom.1....with.
6b6a0 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 78 last.=.(length.parts)....for.tex
6b6c0 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 6f t.=.(plist-get.part.:text)....fo
6b6e0 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 61 r.media.=.(plist-get.part.:media
6b700 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 6e )....if.text.do....(and.(or.(=.n
6b720 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 65 .1).(=.n.last)).(setq.text.(gpte
6b740 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 20 l--trim-prefixes.text))).and....
6b760 69 66 20 74 65 78 74 0a 20 20 20 63 6f 6c 6c 65 63 74 20 28 6c 69 73 74 20 3a 74 65 78 74 20 74 if.text....collect.(list.:text.t
6b780 65 78 74 29 20 69 6e 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 ext).into.parts-array.end....els
6b7a0 65 20 69 66 20 6d 65 64 69 61 0a 20 20 20 63 6f 6c 6c 65 63 74 0a 20 20 20 60 28 3a 69 6e 6c 69 e.if.media....collect....`(:inli
6b7c0 6e 65 5f 64 61 74 61 0a 20 20 20 20 20 28 3a 6d 69 6d 65 5f 74 79 70 65 20 2c 28 70 6c 69 73 74 ne_data......(:mime_type.,(plist
6b7e0 2d 67 65 74 20 70 61 72 74 20 3a 6d 69 6d 65 29 0a 20 20 20 20 20 20 3a 64 61 74 61 20 2c 28 67 -get.part.:mime).......:data.,(g
6b800 70 74 65 6c 2d 2d 62 61 73 65 36 34 2d 65 6e 63 6f 64 65 20 6d 65 64 69 61 29 29 29 0a 20 20 20 ptel--base64-encode.media)))....
6b820 69 6e 74 6f 20 70 61 72 74 73 2d 61 72 72 61 79 0a 20 20 20 65 6c 73 65 20 69 66 20 28 70 6c 69 into.parts-array....else.if.(pli
6b840 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 63 6f 6c 6c 65 63 st-get.part.:textfile)....collec
6b860 74 0a 20 20 20 28 6c 69 73 74 20 3a 74 65 78 74 20 28 77 69 74 68 2d 74 65 6d 70 2d 62 75 66 66 t....(list.:text.(with-temp-buff
6b880 65 72 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 69 6e 73 65 er..................(gptel--inse
6b8a0 72 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 rt-file-string.(plist-get.part.:
6b8c0 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 20 20 20 28 62 75 66 textfile))..................(buf
6b8e0 66 65 72 2d 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 fer-string)))....into.parts-arra
6b900 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 74 20 70 61 72 y....finally.return.(vconcat.par
6b920 74 73 2d 61 72 72 61 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 ts-array)))..(cl-defmethod.gptel
6b940 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 67 70 --wrap-user-prompt.((_backend.gp
6b960 74 65 6c 2d 67 65 6d 69 6e 69 29 20 70 72 6f 6d 70 74 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 tel-gemini).prompts.............
6b980 20 20 20 20 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 ...........................&opti
6b9a0 6f 6e 61 6c 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 onal.inject-media)..."Wrap.the.l
6b9c0 61 73 74 20 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 ast.user.prompt.in.PROMPTS.with.
6b9e0 74 68 65 20 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 the.context.string...If.INJECT-M
6ba00 45 44 49 41 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 EDIA.is.non-nil.wrap.it.with.bas
6ba20 65 36 34 2d 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 e64-encoded.media.files.in.the.c
6ba40 6f 6e 74 65 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 ontext."...(if.inject-media.....
6ba60 20 20 3b 3b 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 ..;;.Wrap.the.first.user.prompt.
6ba80 77 69 74 68 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 with.included.media.files/contex
6baa0 74 73 0a 20 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 ts.......(when-let*.((media-list
6bac0 20 28 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 29 29 .(gptel-context--collect-media))
6bae0 29 0a 20 20 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 ).........(cl-callf.(lambda.(cur
6bb00 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 28 76 63 6f 6e 63 rent).....................(vconc
6bb20 61 74 20 28 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 at.(gptel--gemini-parse-multipar
6bb40 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 20 20 20 20 20 t.media-list)...................
6bb60 20 20 20 20 20 20 20 20 20 20 20 63 75 72 72 65 6e 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 ...........current))............
6bb80 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 70 61 72 74 73 .(plist-get.(car.prompts).:parts
6bba0 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
6bbc0 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
6bbe0 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)
6bc00 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 77 72 61 70 .................(if-let*.((wrap
6bc20 70 65 64 20 28 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 77 72 61 70 20 6e 69 6c 29 29 29 0a ped.(gptel-context--wrap.nil))).
6bc40 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 20 60 28 28 ....................(vconcat.`((
6bc60 3a 74 65 78 74 20 2c 77 72 61 70 70 65 64 29 29 20 63 75 72 72 65 6e 74 29 0a 20 20 20 20 20 20 :text.,wrapped)).current).......
6bc80 20 20 20 20 20 20 20 20 20 20 20 20 63 75 72 72 65 6e 74 29 29 0a 20 20 20 20 20 20 20 20 28 70 ............current)).........(p
6bca0 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 70 list-get.(car.(last.prompts)).:p
6bcc0 61 72 74 73 29 29 29 29 0a 0a 28 64 65 66 63 6f 6e 73 74 20 67 70 74 65 6c 2d 2d 67 65 6d 69 6e arts))))..(defconst.gptel--gemin
6bce0 69 2d 6d 6f 64 65 6c 73 0a 20 20 27 28 28 67 65 6d 69 6e 69 2d 31 2e 35 2d 70 72 6f 2d 6c 61 74 i-models...'((gemini-1.5-pro-lat
6bd00 65 73 74 0a 20 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 est......:description."Google's.
6bd20 6c 61 74 65 73 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 latest.model.with.enhanced.capab
6bd40 69 6c 69 74 69 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 ilities.across.various.tasks"...
6bd60 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 20 ...:capabilities.(tool-use.json.
6bd80 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 2f media)......:mime-types.("image/
6bda0 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 22 png"."image/jpeg"."image/webp"."
6bdc0 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 20 image/heic"."image/heif"........
6bde0 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 65 ..........."application/pdf"."te
6be00 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 22 xt/plain"."text/csv"."text/html"
6be20 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 30 0a 20 20 20 20 )......:context-window.2000.....
6be40 20 3b 3b 20 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 .;;.input.&.output.price.is.halv
6be60 65 64 20 66 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 ed.for.prompts.of.128k.tokens.or
6be80 20 6c 65 73 73 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 .less......:input-cost.2.50.....
6bea0 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 61 .:output-cost.10......:cutoff-da
6bec0 74 65 20 22 32 30 32 34 2d 30 35 22 29 0a 20 20 20 20 28 67 65 6d 69 6e 69 2d 32 2e 30 2d 66 6c te."2024-05").....(gemini-2.0-fl
6bee0 61 73 68 2d 65 78 70 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 ash-exp......:description."Next.
6bf00 67 65 6e 65 72 61 74 69 6f 6e 20 66 65 61 74 75 72 65 73 2c 20 73 75 70 65 72 69 6f 72 20 73 70 generation.features,.superior.sp
6bf20 65 65 64 2c 20 6e 61 74 69 76 65 20 74 6f 6f 6c 20 75 73 65 22 0a 20 20 20 20 20 3a 63 61 70 61 eed,.native.tool.use"......:capa
6bf40 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)..
6bf60 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
6bf80 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
6bfa0 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"................
6bfc0 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
6bfe0 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")......:
6c000 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 63 75 74 6f 66 66 context-window.1000......:cutoff
6c020 2d 64 61 74 65 20 22 32 30 32 34 2d 31 32 22 29 0a 20 20 20 20 28 67 65 6d 69 6e 69 2d 31 2e 35 -date."2024-12").....(gemini-1.5
6c040 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 41 20 66 61 73 74 -flash......:description."A.fast
6c060 65 72 2c 20 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 er,.more.efficient.version.of.Ge
6c080 6d 69 6e 69 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 mini.1.5.optimized.for.speed"...
6c0a0 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 20 ...:capabilities.(tool-use.json.
6c0c0 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 2f media)......:mime-types.("image/
6c0e0 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 22 png"."image/jpeg"."image/webp"."
6c100 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 20 image/heic"."image/heif"........
6c120 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 65 ..........."application/pdf"."te
6c140 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 22 xt/plain"."text/csv"."text/html"
6c160 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 20 20 20 )......:context-window.1000.....
6c180 20 3b 3b 20 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 .;;.input.&.output.price.is.halv
6c1a0 65 64 20 66 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 ed.for.prompts.of.128k.tokens.or
6c1c0 20 6c 65 73 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 .less......:input-cost.0.15.....
6c1e0 20 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 .:output-cost.0.60......:cutoff-
6c200 64 61 74 65 20 22 32 30 32 34 2d 30 35 22 29 0a 20 20 20 20 28 67 65 6d 69 6e 69 2d 31 2e 35 2d date."2024-05").....(gemini-1.5-
6c220 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
6c240 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
6c260 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
6c280 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
6c2a0 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
6c2c0 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"
6c2e0 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"......
6c300 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"."
6c320 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
6c340 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
6c360 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
6c380 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
6c3a0 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.....
6c3c0 20 3a 63 75 74 6f 66 66 2d 64 61 74 65 20 22 32 30 32 34 2d 31 30 22 29 0a 20 20 20 20 28 67 65 .:cutoff-date."2024-10").....(ge
6c3e0 6d 69 6e 69 2d 65 78 70 2d 31 32 30 36 0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 mini-exp-1206......:description.
6c400 22 49 6d 70 72 6f 76 65 64 20 63 6f 64 69 6e 67 2c 20 72 65 61 73 6f 6e 69 6e 67 20 61 6e 64 20 "Improved.coding,.reasoning.and.
6c420 76 69 73 69 6f 6e 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 62 vision.capabilities"......:capab
6c440 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 20 ilities.(tool-use.json.media)...
6c460 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 61 ...:mime-types.("image/png"."ima
6c480 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 69 ge/jpeg"."image/webp"."image/hei
6c4a0 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 20 c"."image/heif".................
6c4c0 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 22 .."application/pdf"."text/plain"
6c4e0 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 63 ."text/csv"."text/html")......:c
6c500 75 74 6f 66 66 2d 64 61 74 65 20 22 32 30 32 34 2d 31 32 22 29 0a 20 20 20 20 28 67 65 6d 69 6e utoff-date."2024-12").....(gemin
6c520 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 4e i-2.0-flash......:description."N
6c540 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 20 ext.gen,.high.speed,.multimodal.
6c560 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 0a for.a.diverse.variety.of.tasks".
6c580 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 6f .....:capabilities.(tool-use.jso
6c5a0 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 67 n.media)......:mime-types.("imag
6c5c0 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"
6c5e0 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"......
6c600 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"."
6c620 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
6c640 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 20 l")......:context-window.1000...
6c660 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 75 74 70 75 74 ...:input-cost.0.10......:output
6c680 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 65 20 22 32 30 -cost.0.40......:cutoff-date."20
6c6a0 32 34 2d 30 38 22 29 0a 20 20 20 20 28 67 65 6d 69 6e 69 2d 32 2e 30 2d 66 6c 61 73 68 2d 6c 69 24-08").....(gemini-2.0-flash-li
6c6c0 74 65 2d 70 72 65 76 69 65 77 2d 30 32 2d 30 35 0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 te-preview-02-05......:descripti
6c6e0 6f 6e 20 22 47 65 6d 69 6e 69 20 32 2e 30 20 46 6c 61 73 68 20 6d 6f 64 65 6c 20 6f 70 74 69 6d on."Gemini.2.0.Flash.model.optim
6c700 69 7a 65 64 20 66 6f 72 20 63 6f 73 74 20 65 66 66 69 63 69 65 6e 63 79 20 61 6e 64 20 6c 6f 77 ized.for.cost.efficiency.and.low
6c720 20 6c 61 74 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 6a 73 .latency"......:capabilities.(js
6c740 6f 6e 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 20 on)......:context-window.1000...
6c760 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 30 2e 30 37 35 0a 20 20 20 20 20 3a 6f 75 74 70 75 ...:input-cost.0.075......:outpu
6c780 74 2d 63 6f 73 74 20 30 2e 33 30 0a 20 20 20 20 20 3a 63 75 74 6f 66 66 2d 64 61 74 65 20 22 32 t-cost.0.30......:cutoff-date."2
6c7a0 30 32 34 2d 30 38 22 29 0a 20 20 20 20 28 67 65 6d 69 6e 69 2d 32 2e 30 2d 70 72 6f 2d 65 78 70 024-08").....(gemini-2.0-pro-exp
6c7c0 2d 30 32 2d 30 35 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 -02-05......:description."Next.g
6c7e0 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
6c800 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"......
6c820 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 29 0a 20 20 :capabilities.(tool-use.json)...
6c840 20 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 3a 69 6e ...:context-window.2000......:in
6c860 70 75 74 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 put-cost.0.00......:output-cost.
6c880 30 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 38 22 0.00......:cutoff-date."2024-08"
6c8a0 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 67 ).....(gemini-2.0-flash-thinking
6c8c0 2d 65 78 70 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 -exp-01-21......:description."Ne
6c8e0 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 20 66 xt.gen,.high.speed,.multimodal.f
6c900 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 0a 20 or.a.diverse.variety.of.tasks"..
6c920 20 20 20 20 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 ....:capabilities.(json)......:i
6c940 6e 70 75 74 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 nput-cost.0.00......:output-cost
6c960 20 30 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 38 .0.00......:cutoff-date."2024-08
6c980 22 29 0a 20 20 20 20 28 67 65 6d 69 6e 69 2d 32 2e 30 2d 66 6c 61 73 68 2d 65 78 70 0a 20 20 20 ").....(gemini-2.0-flash-exp....
6c9a0 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 4d 75 6c 74 69 2d 6d 6f 64 61 6c 2c 20 73 74 72 ..:description."Multi-modal,.str
6c9c0 65 61 6d 69 6e 67 2c 20 74 6f 6f 6c 20 75 73 65 20 32 30 30 30 20 52 50 4d 22 0a 20 20 20 20 20 eaming,.tool.use.2000.RPM"......
6c9e0 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 20 6d 65 64 :capabilities.(tool-use.json.med
6ca00 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 67 ia)......:mime-types.("image/png
6ca20 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 61 "."image/jpeg"."image/webp"."ima
6ca40 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 20 ge/heic"."image/heif"...........
6ca60 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 2f ........"application/pdf"."text/
6ca80 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 20 plain"."text/csv"."text/html")..
6caa0 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 69 ....:context-window.1000......:i
6cac0 6e 70 75 74 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 nput-cost.0.00......:output-cost
6cae0 20 30 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 38 .0.00......:cutoff-date."2024-08
6cb00 22 29 0a 20 20 20 20 28 67 65 6d 69 6e 69 2d 32 2e 35 2d 70 72 6f 2d 65 78 70 2d 30 33 2d 32 35 ").....(gemini-2.5-pro-exp-03-25
6cb20 0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 4c 69 6b 65 20 67 65 6d 69 6e 69 2d ......:description."Like.gemini-
6cb40 32 2e 35 2d 70 72 6f 2d 70 72 65 76 69 65 77 2d 30 33 2d 32 35 20 62 75 74 20 6c 69 6d 69 74 65 2.5-pro-preview-03-25.but.limite
6cb60 64 20 74 6f 20 35 20 72 65 71 2f 6d 69 6e 2c 20 32 35 20 72 65 71 2f 64 61 79 22 0a 20 20 20 20 d.to.5.req/min,.25.req/day".....
6cb80 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 20 6d 65 .:capabilities.(tool-use.json.me
6cba0 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
6cbc0 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
6cbe0 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"..........
6cc00 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
6cc20 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").
6cc40 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......:
6cc60 69 6e 70 75 74 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 input-cost.0.00......:output-cos
6cc80 74 20 30 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 35 2d 30 t.0.00......:cutoff-date."2025-0
6cca0 31 22 29 0a 20 20 20 20 28 67 65 6d 69 6e 69 2d 32 2e 35 2d 70 72 6f 2d 70 72 65 76 69 65 77 2d 1").....(gemini-2.5-pro-preview-
6ccc0 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 45 6e 68 61 6e 63 65 03-25......:description."Enhance
6cce0 64 20 72 65 61 73 6f 6e 69 6e 67 2c 20 6d 75 6c 74 69 6d 6f 64 61 6c 20 75 6e 64 65 72 73 74 61 d.reasoning,.multimodal.understa
6cd00 6e 64 69 6e 67 20 26 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 nding.&.advanced.coding"......:c
6cd20 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
6cd40 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".
6cd60 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
6cd80 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".............
6cda0 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
6cdc0 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")....
6cde0 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 69 6e 70 ..:context-window.1000......:inp
6ce00 75 74 2d 63 6f 73 74 20 31 2e 32 35 20 3b 20 32 2e 35 30 20 66 6f 72 20 3e 32 30 30 6b 20 74 6f ut-cost.1.25.;.2.50.for.>200k.to
6ce20 6b 65 6e 73 0a 20 20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 31 30 2e 30 30 20 3b 20 31 kens......:output-cost.10.00.;.1
6ce40 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 66 2d 5.for.>200k.tokens......:cutoff-
6ce60 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 35 2d date."2025-01").....(gemini-2.5-
6ce80 66 6c 61 73 68 2d 70 72 65 76 69 65 77 2d 30 34 2d 31 37 0a 20 20 20 20 20 3a 64 65 73 63 72 69 flash-preview-04-17......:descri
6cea0 70 74 69 6f 6e 20 22 42 65 73 74 20 47 65 6d 69 6e 69 20 6d 6f 64 65 6c 20 69 6e 20 74 65 72 6d ption."Best.Gemini.model.in.term
6cec0 73 20 6f 66 20 70 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 s.of.price-performance,.offering
6cee0 20 77 65 6c 6c 2d 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 .well-rounded.capabilities".....
6cf00 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 20 6d 65 .:capabilities.(tool-use.json.me
6cf20 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
6cf40 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
6cf60 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"..........
6cf80 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
6cfa0 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").
6cfc0 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......:
6cfe0 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 70 75 74 2d 63 6f 73 input-cost.0.15......:output-cos
6d000 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 67 0a 20 20 20 20 20 t.0.60.;.3.50.for.thinking......
6d020 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 20 20 20 28 67 65 6d :cutoff-date."2025-01").....(gem
6d040 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 32 30 0a 20 20 20 20 ini-2.5-flash-preview-05-20.....
6d060 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 42 65 73 74 20 47 65 6d 69 6e 69 20 6d 6f 64 65 6c .:description."Best.Gemini.model
6d080 20 69 6e 20 74 65 72 6d 73 20 6f 66 20 70 72 69 63 65 2d 70 65 72 66 6f 72 6d 61 6e 63 65 2c 20 .in.terms.of.price-performance,.
6d0a0 6f 66 66 65 72 69 6e 67 20 77 65 6c 6c 2d 72 6f 75 6e 64 65 64 20 63 61 70 61 62 69 6c 69 74 69 offering.well-rounded.capabiliti
6d0c0 65 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 73 65 es"......:capabilities.(tool-use
6d0e0 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 20 28 22 .json.media)......:mime-types.("
6d100 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 77 image/png"."image/jpeg"."image/w
6d120 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 22 0a 20 ebp"."image/heic"."image/heif"..
6d140 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 2f 70 64 ................."application/pd
6d160 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 65 78 74 f"."text/plain"."text/csv"."text
6d180 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 31 30 34 /html")......:context-window.104
6d1a0 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 0a 20 20 20 8.;.65536.output.token.limit....
6d1c0 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 70 75 74 2d ..:input-cost.0.15......:output-
6d1e0 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 67 0a 20 20 cost.0.60.;.3.50.for.thinking...
6d200 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 20 20 20 28 ...:cutoff-date."2025-01").....(
6d220 67 65 6d 69 6e 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 gemini-2.5-pro-preview-05-06....
6d240 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 50 72 65 76 69 6f 75 73 6c 79 20 74 68 65 20 6d ..:description."Previously.the.m
6d260 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 6f 64 ost.powerful.Gemini.thinking.mod
6d280 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 72 6d el.with.state-of-the-art.perform
6d2a0 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 2d 75 ance"......:capabilities.(tool-u
6d2c0 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 20 se.json.media)......:mime-types.
6d2e0 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 65 ("image/png"."image/jpeg"."image
6d300 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 22 /webp"."image/heic"."image/heif"
6d320 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 2f ..................."application/
6d340 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 65 pdf"."text/plain"."text/csv"."te
6d360 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 31 xt/html")......:context-window.1
6d380 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 0a 20 048.;.65536.output.token.limit..
6d3a0 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 35 30 20 66 6f 72 20 ....:input-cost.1.25.;.2.50.for.
6d3c0 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 2d 63 6f 73 74 20 31 >200k.tokens......:output-cost.1
6d3e0 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 73 0a 20 20 20 20 20 0.00.;.15.for.>200k.tokens......
6d400 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 20 20 20 28 67 65 6d :cutoff-date."2025-01").....(gem
6d420 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 20 20 3a ini-2.5-pro-preview-06-05......:
6d440 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 47 65 6d 69 6e description."Most.powerful.Gemin
6d460 69 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 2d 74 i.thinking.model.with.state-of-t
6d480 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 62 69 he-art.performance"......:capabi
6d4a0 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 20 20 lities.(tool-use.json.media)....
6d4c0 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
6d4e0 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
6d500 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"..................
6d520 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".
6d540 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 63 6f "text/csv"."text/html")......:co
6d560 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
6d580 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.
6d5a0 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 20 20 25.;.2.50.for.>200k.tokens......
6d5c0 3a 6f 75 74 70 75 74 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 :output-cost.10.00.;.15.for.>200
6d5e0 6b 20 74 6f 6b 65 6e 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 k.tokens......:cutoff-date."2025
6d600 2d 30 31 22 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 -01").....(gemini-2.0-flash-thin
6d620 6b 69 6e 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 king-exp......:description."DEPR
6d640 45 43 41 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 ECATED:.Please.use.gemini-2.0-fl
6d660 61 73 68 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 ash-thinking-exp-01-21.instead."
6d680 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 6d 65 ......:capabilities.(tool-use.me
6d6a0 64 69 61 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 dia)......:context-window.32....
6d6c0 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
6d6e0 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
6d700 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"..................
6d720 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
6d740 74 6d 6c 22 29 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 38 tml")......:cutoff-date."2024-08
6d760 22 29 29 0a 20 20 22 4c 69 73 74 20 6f 66 20 61 76 61 69 6c 61 62 6c 65 20 47 65 6d 69 6e 69 20 "))..."List.of.available.Gemini.
6d780 6d 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 models.and.associated.properties
6d7a0 2e 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 ..Keys:..-.`:description':.a.bri
6d7c0 65 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 ef.description.of.the.model...-.
6d7e0 60 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 `:capabilities':.a.list.of.capab
6d800 69 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 ilities.supported.by.the.model..
6d820 0a 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 .-.`:mime-types':.a.list.of.supp
6d840 6f 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 orted.MIME.types.for.media.files
6d860 2e 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 ...-.`:context-window':.the.cont
6d880 65 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 ext.window.size,.in.thousands.of
6d8a0 20 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 .tokens...-.`:input-cost':.the.i
6d8c0 6e 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 nput.cost,.in.US.dollars.per.mil
6d8e0 6c 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 lion.tokens...-.`:output-cost':.
6d900 74 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 the.output.cost,.in.US.dollars.p
6d920 65 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 er.million.tokens...-.`:cutoff-d
6d940 61 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 ate':.the.knowledge.cutoff.date.
6d960 0a 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 ..-.`:request-params':.a.plist.o
6d980 66 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 f.additional.request.parameters.
6d9a0 74 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 to...include.when.using.this.mod
6d9c0 65 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 47 65 6d 69 6e el...Information.about.the.Gemin
6d9e0 69 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 20 66 i.models.was.obtained.from.the.f
6da00 6f 6c 6c 6f 77 69 6e 67 0a 73 6f 75 72 63 65 3a 0a 0a 2d 20 3c 68 74 74 70 73 3a 2f 2f 61 69 2e ollowing.source:..-.<https://ai.
6da20 67 6f 6f 67 6c 65 2e 64 65 76 2f 70 72 69 63 69 6e 67 3e 0a 2d 20 3c 68 74 74 70 73 3a 2f 2f 63 google.dev/pricing>.-.<https://c
6da40 6c 6f 75 64 2e 67 6f 6f 67 6c 65 2e 63 6f 6d 2f 76 65 72 74 65 78 2d 61 69 2f 67 65 6e 65 72 61 loud.google.com/vertex-ai/genera
6da60 74 69 76 65 2d 61 69 2f 64 6f 63 73 2f 6c 65 61 72 6e 2f 6d 6f 64 65 6c 73 3e 0a 2d 20 3c 68 74 tive-ai/docs/learn/models>.-.<ht
6da80 74 70 73 3a 2f 2f 61 69 2e 67 6f 6f 67 6c 65 2e 64 65 76 2f 67 65 6d 69 6e 69 2d 61 70 69 2f 64 tps://ai.google.dev/gemini-api/d
6daa0 6f 63 73 2f 6d 6f 64 65 6c 73 3e 22 29 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a 28 63 ocs/models>")..;;;###autoload.(c
6dac0 6c 2d 64 65 66 75 6e 20 67 70 74 65 6c 2d 6d 61 6b 65 2d 67 65 6d 69 6e 69 0a 20 20 20 20 28 6e l-defun.gptel-make-gemini.....(n
6dae0 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 72 65 ame.&key.curl-args.header.key.re
6db00 71 75 65 73 74 2d 70 61 72 61 6d 73 0a 20 20 20 20 20 20 20 20 20 20 28 73 74 72 65 61 6d 20 6e quest-params...........(stream.n
6db20 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 28 68 6f 73 74 20 22 67 65 6e 65 72 61 74 69 76 65 6c il)...........(host."generativel
6db40 61 6e 67 75 61 67 65 2e 67 6f 6f 67 6c 65 61 70 69 73 2e 63 6f 6d 22 29 0a 20 20 20 20 20 20 20 anguage.googleapis.com")........
6db60 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 20 20 ...(protocol."https")...........
6db80 28 6d 6f 64 65 6c 73 20 67 70 74 65 6c 2d 2d 67 65 6d 69 6e 69 2d 6d 6f 64 65 6c 73 29 0a 20 20 (models.gptel--gemini-models)...
6dba0 20 20 20 20 20 20 20 20 28 65 6e 64 70 6f 69 6e 74 20 22 2f 76 31 62 65 74 61 2f 6d 6f 64 65 6c ........(endpoint."/v1beta/model
6dbc0 73 22 29 29 0a 0a 20 20 22 52 65 67 69 73 74 65 72 20 61 20 47 65 6d 69 6e 69 20 62 61 63 6b 65 s"))...."Register.a.Gemini.backe
6dbe0 6e 64 20 66 6f 72 20 67 70 74 65 6c 20 77 69 74 68 20 4e 41 4d 45 2e 0a 0a 4b 65 79 77 6f 72 64 nd.for.gptel.with.NAME...Keyword
6dc00 20 61 72 67 75 6d 65 6e 74 73 3a 0a 0a 43 55 52 4c 2d 41 52 47 53 20 28 6f 70 74 69 6f 6e 61 6c .arguments:..CURL-ARGS.(optional
6dc20 29 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 61 64 64 69 74 69 6f 6e 61 6c 20 43 75 72 6c 20 61 ).is.a.list.of.additional.Curl.a
6dc40 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 74 68 rguments...HOST.(optional).is.th
6dc60 65 20 41 50 49 20 68 6f 73 74 2c 20 64 65 66 61 75 6c 74 73 20 74 6f 0a 5c 22 67 65 6e 65 72 61 e.API.host,.defaults.to.\"genera
6dc80 74 69 76 65 6c 61 6e 67 75 61 67 65 2e 67 6f 6f 67 6c 65 61 70 69 73 2e 63 6f 6d 5c 22 2e 0a 0a tivelanguage.googleapis.com\"...
6dca0 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 6f MODELS.is.a.list.of.available.mo
6dcc0 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 74 69 6f 6e 61 del.names,.as.symbols..Additiona
6dce0 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 74 65 64 20 4c lly,.you.can.specify.supported.L
6dd00 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 20 6f 72 20 74 LM.capabilities.like.vision.or.t
6dd20 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 74 20 74 6f 20 ool-use.by.appending.a.plist.to.
6dd40 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 74 69 6f 6e 2c the.model.with.more.information,
6dd60 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 2e 20 70 6c 69 .in.the.form...(model-name...pli
6dd80 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 79 20 72 65 63 st)..For.a.list.of.currently.rec
6dda0 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 74 65 6c 2d 2d ognized.plist.keys,.see.`gptel--
6ddc0 67 65 6d 69 6e 69 2d 6d 6f 64 65 6c 73 27 2e 20 41 6e 20 65 78 61 6d 70 6c 65 20 6f 66 20 61 20 gemini-models'..An.example.of.a.
6dde0 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 69 6e 67 20 62 6f model.specification.including.bo
6de00 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 73 0a 5c 5c 3d 27 th.kinds.of.specs:..:models.\\='
6de20 28 67 65 6d 69 6e 69 2d 32 2e 30 2d 66 6c 61 73 68 2d 6c 69 74 65 20 20 20 20 20 20 20 20 20 20 (gemini-2.0-flash-lite..........
6de40 20 20 20 20 3b 53 69 6d 70 6c 65 20 73 70 65 63 73 0a 20 20 67 65 6d 69 6e 69 2d 31 2e 35 2d 66 ....;Simple.specs...gemini-1.5-f
6de60 6c 61 73 68 0a 20 20 28 67 65 6d 69 6e 69 2d 31 2e 35 2d 70 72 6f 2d 6c 61 74 65 73 74 20 20 20 lash...(gemini-1.5-pro-latest...
6de80 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 64 65 73 63 .............;Full.spec....:desc
6dea0 72 69 70 74 69 6f 6e 0a 20 20 20 5c 22 43 6f 6d 70 6c 65 78 20 72 65 61 73 6f 6e 69 6e 67 20 74 ription....\"Complex.reasoning.t
6dec0 61 73 6b 73 2c 20 70 72 6f 62 6c 65 6d 20 73 6f 6c 76 69 6e 67 20 61 6e 64 20 64 61 74 61 20 65 asks,.problem.solving.and.data.e
6dee0 78 74 72 61 63 74 69 6f 6e 5c 22 0a 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 74 6f xtraction\"....:capabilities.(to
6df00 6f 6c 20 6a 73 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 ol.json)....:mime-types....(\"im
6df20 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 61 67 65 age/jpeg\".\"image/png\".\"image
6df40 2f 77 65 62 70 5c 22 20 5c 22 69 6d 61 67 65 2f 68 65 69 63 5c 22 29 29 29 0a 0a 0a 53 54 52 45 /webp\".\"image/heic\")))...STRE
6df60 41 4d 20 69 73 20 61 20 62 6f 6f 6c 65 61 6e 20 74 6f 20 65 6e 61 62 6c 65 20 73 74 72 65 61 6d AM.is.a.boolean.to.enable.stream
6df80 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 65 ing.responses,.defaults.to.false
6dfa0 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 73 ...PROTOCOL.(optional).specifies
6dfc0 20 74 68 65 20 70 72 6f 74 6f 63 6f 6c 2c 20 5c 22 68 74 74 70 73 5c 22 20 62 79 20 64 65 66 61 .the.protocol,.\"https\".by.defa
6dfe0 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 74 68 65 ult...ENDPOINT.(optional).is.the
6e000 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 2c 20 64 .API.endpoint.for.completions,.d
6e020 65 66 61 75 6c 74 73 20 74 6f 0a 5c 22 2f 76 31 62 65 74 61 2f 6d 6f 64 65 6c 73 5c 22 2e 0a 0a efaults.to.\"/v1beta/models\"...
6e040 48 45 41 44 45 52 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 66 6f 72 20 61 64 64 69 74 69 6f HEADER.(optional).is.for.additio
6e060 6e 61 6c 20 68 65 61 64 65 72 73 20 74 6f 20 73 65 6e 64 20 77 69 74 68 20 65 61 63 68 0a 72 65 nal.headers.to.send.with.each.re
6e080 71 75 65 73 74 2e 20 20 49 74 20 73 68 6f 75 6c 64 20 62 65 20 61 6e 20 61 6c 69 73 74 20 6f 72 quest...It.should.be.an.alist.or
6e0a0 20 61 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 72 65 74 75 6e 73 20 61 6e 0a 61 6c 69 73 74 .a.function.that.retuns.an.alist
6e0c0 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 2e 20 5c 22 ,.like:..((\"Content-Type\"...\"
6e0e0 61 70 70 6c 69 63 61 74 69 6f 6e 2f 6a 73 6f 6e 5c 22 29 29 0a 0a 4b 45 59 20 28 6f 70 74 69 6f application/json\"))..KEY.(optio
6e100 6e 61 6c 29 20 69 73 20 61 20 76 61 72 69 61 62 6c 65 20 77 68 6f 73 65 20 76 61 6c 75 65 20 69 nal).is.a.variable.whose.value.i
6e120 73 20 74 68 65 20 41 50 49 20 6b 65 79 2c 20 6f 72 0a 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 s.the.API.key,.or.function.that.
6e140 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 52 41 4d 53 returns.the.key...REQUEST-PARAMS
6e160 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 69 .(optional).is.a.plist.of.additi
6e180 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 73 onal.HTTP.request.parameters.(as
6e1a0 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 65 .plist.keys).and.values.supporte
6e1c0 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 20 d.by.the.API...Use.these.to.set.
6e1e0 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 70 parameters.that.gptel.does.not.p
6e200 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 63 rovide.user.options.for."...(dec
6e220 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 6e lare.(indent.1))...(let.((backen
6e240 64 20 28 67 70 74 65 6c 2d 2d 6d 61 6b 65 2d 67 65 6d 69 6e 69 0a 20 20 20 20 20 20 20 20 20 20 d.(gptel--make-gemini...........
6e260 20 20 20 20 20 20 20 20 3a 63 75 72 6c 2d 61 72 67 73 20 63 75 72 6c 2d 61 72 67 73 0a 20 20 20 ........:curl-args.curl-args....
6e280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6e 61 6d 65 20 6e 61 6d 65 0a 20 20 20 20 20 20 ...............:name.name.......
6e2a0 20 20 20 20 20 20 20 20 20 20 20 20 3a 68 6f 73 74 20 68 6f 73 74 0a 20 20 20 20 20 20 20 20 20 ............:host.host..........
6e2c0 20 20 20 20 20 20 20 20 20 3a 68 65 61 64 65 72 20 68 65 61 64 65 72 0a 20 20 20 20 20 20 20 20 .........:header.header.........
6e2e0 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 70 72 6f 63 65 73 ..........:models.(gptel--proces
6e300 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 20 20 20 20 20 20 s-models.models)................
6e320 20 20 20 3a 70 72 6f 74 6f 63 6f 6c 20 70 72 6f 74 6f 63 6f 6c 0a 20 20 20 20 20 20 20 20 20 20 ...:protocol.protocol...........
6e340 20 20 20 20 20 20 20 20 3a 65 6e 64 70 6f 69 6e 74 20 65 6e 64 70 6f 69 6e 74 0a 20 20 20 20 20 ........:endpoint.endpoint......
6e360 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 73 74 72 65 61 6d 20 73 74 72 65 61 6d 0a 20 20 20 20 .............:stream.stream.....
6e380 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 61 6d 73 20 72 65 ..............:request-params.re
6e3a0 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 20 20 20 20 20 3a quest-params...................:
6e3c0 6b 65 79 20 6b 65 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 75 72 6c 20 28 key.key...................:url.(
6e3e0 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.().......................
6e400 20 20 20 28 6c 65 74 20 28 28 6d 65 74 68 6f 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ...(let.((method................
6e420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 61 6e 64 20 73 74 72 65 61 6d .................(if.(and.stream
6e440 20 67 70 74 65 6c 2d 75 73 65 2d 63 75 72 6c 20 67 70 74 65 6c 2d 73 74 72 65 61 6d 29 0a 20 20 .gptel-use-curl.gptel-stream)...
6e460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
6e480 20 20 22 73 74 72 65 61 6d 47 65 6e 65 72 61 74 65 43 6f 6e 74 65 6e 74 22 0a 20 20 20 20 20 20 .."streamGenerateContent".......
6e4a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 67 65 6e ............................"gen
6e4c0 65 72 61 74 65 43 6f 6e 74 65 6e 74 22 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 erateContent")))................
6e4e0 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 25 73 3a 2f 2f 25 73 25 73 2f 25 ............(format."%s://%s%s/%
6e500 73 3a 25 73 3f 6b 65 79 3d 25 73 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 s:%s?key=%s"....................
6e520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 74 6f 63 6f 6c 0a 20 20 20 20 20 20 20 ................protocol........
6e540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 6f 73 74 ............................host
6e560 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
6e580 20 20 20 20 65 6e 64 70 6f 69 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ....endpoint....................
6e5a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 0a 20 20 20 20 ................gptel-model.....
6e5c0 20 20 20 20 20 20 20 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 ...............................m
6e5e0 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 20 ethod...........................
6e600 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 67 65 74 2d 61 70 69 2d 6b 65 79 29 29 29 29 .........(gptel--get-api-key))))
6e620 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 65 ))).....(prog1.backend.......(se
6e640 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-
6e660 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 20 backends........................
6e680 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 62 61 63 nil.nil.#'equal).............bac
6e6a0 6b 65 6e 64 29 29 29 29 0a 0a 28 70 72 6f 76 69 64 65 20 27 67 70 74 65 6c 2d 67 65 6d 69 6e 69 kend))))..(provide.'gptel-gemini
6e6c0 29 0a 3b 3b 3b 20 67 70 74 65 6c 2d 67 65 6d 69 6e 69 2e 65 6c 20 65 6e 64 73 20 68 65 72 65 0a ).;;;.gptel-gemini.el.ends.here.
6e6e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6e700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6e720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6e740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6e760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6e780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6e7a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6e7c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6e7e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6e800 67 70 74 65 6c 2d 30 2e 39 2e 38 2e 35 2f 67 70 74 65 6c 2d 74 72 61 6e 73 69 65 6e 74 2e 65 6c gptel-0.9.8.5/gptel-transient.el
6e820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6e840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6e860 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
6e880 30 32 32 34 32 32 37 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 35 31 32 30 00 20 30 00 00 00 0224227.00000000000.015120..0...
6e8a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6e8c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6e8e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6e900 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...................
6e920 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...................
6e940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6e960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6e980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6e9a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6e9c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6e9e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6ea00 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
6ea20 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
6ea40 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.(
6ea60 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
6ea80 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
6eaa0 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>
6eac0 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
6eae0 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
6eb00 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
6eb20 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.
6eb40 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
6eb60 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
6eb80 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.
6eba0 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
6ebc0 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.;;
6ebe0 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
6ec00 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
6ec20 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
6ec40 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
6ec60 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
6ec80 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
6eca0 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
6ecc0 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
6ece0 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...;;.
6ed00 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.
6ed20 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
6ed40 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
6ed60 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/
6ed80 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:..;;
6eda0 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
6edc0 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
6ede0 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
6ee00 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-
6ee20 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
6ee40 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.
6ee60 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
6ee80 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...
6eea0 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
6eec0 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-
6eee0 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.()...
6ef00 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
6ef20 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
6ef40 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.....
6ef60 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-
6ef80 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..........................
6efa0 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
6efc0 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
6efe0 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.
6f000 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
6f020 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.").
6f040 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
6f060 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
6f080 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.
6f0a0 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.
6f0c0 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
6f0e0 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-
6f100 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
6f120 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
6f140 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."...
6f160 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
6f180 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)).
6f1a0 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
6f1c0 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...........
6f1e0 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.()...............
6f200 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
6f220 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).......
6f240 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.......
6f260 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.
6f280 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
6f2a0 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
6f2c0 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!...
6f2e0 20 20 20 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
6f300 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))........
6f320 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
6f340 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))................
6f360 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.
6f380 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
6f3a0 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
6f3c0 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)).....(_.
6f3e0 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).......
6f400 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
6f420 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
6f440 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
6f460 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
6f480 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.
6f4a0 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.
6f4c0 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
6f4e0 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)...............
6f500 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
6f520 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).....
6f540 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
6f560 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
6f580 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......
6f5a0 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
6f5c0 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
6f5e0 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
6f600 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).......
6f620 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
6f640 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.(
6f660 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)))....
6f680 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
6f6a0 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))).............
6f6c0 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))).........
6f6e0 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
6f700 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).............
6f720 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
6f740 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)............
6f760 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))....
6f780 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)))
6f7a0 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)......
6f7c0 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
6f7e0 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.
6f800 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.
6f820 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........
6f840 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
6f860 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).
6f880 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
6f8a0 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.(
6f8c0 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).
6f8e0 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
6f900 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.(
6f920 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
6f940 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)...........................
6f960 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)).............
6f980 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))))......
6f9a0 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
6f9c0 0a 20 20 20 20 20 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
6f9e0 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)
6fa00 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
6fa20 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
6fa40 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))....................
6fa60 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
6fa80 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))))).............
6faa0 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)................
6fac0 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
6fae0 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))...................(
6fb00 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
6fb20 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)..
6fb40 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.
6fb60 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
6fb80 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.
6fba0 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).
6fbc0 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-
6fbe0 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)........................
6fc00 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)))...............
6fc20 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
6fc40 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
6fc60 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.
6fc80 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
6fca0 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
6fcc0 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
6fce0 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-
6fd00 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))....
6fd20 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
6fd40 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
6fd60 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
6fd80 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
6fda0 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
6fdc0 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
6fde0 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
6fe00 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
6fe20 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)).
6fe40 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)
6fe60 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))......
6fe80 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).
6fea0 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
6fec0 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).....;;.
6fee0 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
6ff00 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
6ff20 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.
6ff40 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))).
6ff60 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
6ff80 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.'
6ffa0 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
6ffc0 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
6ffe0 29 0a 20 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
70000 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
70020 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"))
70040 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
70060 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....(
70080 70 72 6f 70 65 72 74 69 7a 65 20 22 28 22 20 27 66 61 63 65 20 27 64 65 66 61 75 6c 74 29 0a 20 propertize."(".'face.'default)..
700a0 20 20 28 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 ..(propertize."TAB".'face.'help-
700c0 6b 65 79 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 key-binding)....(propertize.":.e
700e0 78 70 61 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 xpand,.".'face.'default)....(pro
70100 70 65 72 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 pertize."M-n".'face.'help-key-bi
70120 6e 64 69 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 nding)....(propertize."/".'face.
70140 27 64 65 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 'default)....(propertize."M-p".'
70160 66 61 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 28 70 72 6f 70 face.'help-key-binding)....(prop
70180 65 72 74 69 7a 65 20 22 3a 20 6e 65 78 74 2f 70 72 65 76 69 6f 75 73 29 20 22 20 27 66 61 63 65 ertize.":.next/previous).".'face
701a0 20 27 64 65 66 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 .'default))..."Help.string.;TODO
701c0 3a 20 22 29 0a 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 :.")..(defun.gptel--read-with-pr
701e0 65 66 69 78 20 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 efix.(prefix)..."Show.string.PRE
70200 46 49 58 20 69 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 FIX.in.the.minibuffer.after.the.
70220 6d 69 6e 69 62 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 minibuffer.prompt...PREFIX.is.sh
70240 6f 77 6e 20 69 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 own.in.an.overlay...Repeated.cal
70260 6c 73 20 74 6f 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 ls.to.this.function.will.toggle.
70280 69 74 73 20 76 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 its.visibility.state."...(unless
702a0 20 28 6d 69 6e 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 .(minibufferp).....(user-error."
702c0 54 68 69 73 20 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 This.command.is.intended.to.be.u
702e0 73 65 64 20 69 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 sed.in.the.minibuffer."))...(let
70300 2a 20 28 28 75 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 *.((update..........(lambda.(ov.
70320 73 29 0a 20 20 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 s)............(overlay-put......
70340 20 20 20 20 20 20 20 6f 76 20 27 61 66 74 65 72 2d 73 74 72 69 6e 67 0a 20 20 20 20 20 20 20 20 .......ov.'after-string.........
70360 20 20 20 20 28 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 ....(and.s.(concat.(propertize.(
70380 63 6f 6e 63 61 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 concat."\n".s."\n").'face.'shado
703a0 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 20 20 20 28 6d w)............................(m
703c0 61 6b 65 2d 73 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 ake-separator-line))))))........
703e0 20 20 28 6d 61 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 ..(max-width.(-.(window-width).(
70400 6d 69 6e 69 62 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 minibuffer-prompt-end)))........
70420 20 20 28 6d 61 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 ..(max.(or.max-mini-window-heigh
70440 74 20 30 2e 34 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 t.0.4))..........(max-height.(-.
70460 28 6f 72 20 28 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 (or.(and.(natnump.max).max).....
70480 20 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 6c 6f 6f 72 20 28 ........................(floor.(
704a0 2a 20 6d 61 78 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 *.max.(frame-height)))).........
704c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 35 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 28 ................5))).....(when.(
704e0 61 6e 64 20 70 72 65 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 and.prefix.(not.(string-empty-p.
70500 70 72 65 66 69 78 29 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 prefix)).(>.max-height.1))......
70520 20 28 75 6e 6c 65 73 73 20 76 69 73 75 61 6c 2d 6c 69 6e 65 2d 6d 6f 64 65 20 28 76 69 73 75 61 .(unless.visual-line-mode.(visua
70540 6c 2d 6c 69 6e 65 2d 6d 6f 64 65 20 31 29 29 0a 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 l-line-mode.1)).......(goto-char
70560 20 28 6d 69 6e 69 62 75 66 66 65 72 2d 70 72 6f 6d 70 74 2d 65 6e 64 29 29 0a 20 20 20 20 20 20 .(minibuffer-prompt-end)).......
70580 28 70 63 61 73 65 2d 6c 65 74 20 28 28 60 28 2c 70 72 6f 70 20 2e 20 2c 6f 76 29 0a 20 20 20 20 (pcase-let.((`(,prop...,ov).....
705a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 65 74 2d 63 68 61 72 2d 70 72 6f 70 65 72 74 ...............(get-char-propert
705c0 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 20 y-and-overlay...................
705e0 20 20 28 70 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 ..(point-min).'gptel))).........
70600 28 75 6e 6c 65 73 73 20 6f 76 0a 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 6f 76 20 28 6d (unless.ov...........(setq.ov.(m
70620 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 20 20 20 20 ake-overlay.....................
70640 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28 6d 69 6e 69 62 75 66 66 65 72 2d 70 72 6f 6d 70 74 2d 65 (point-min).(minibuffer-prompt-e
70660 6e 64 29 20 6e 69 6c 20 74 29 29 29 0a 20 20 20 20 20 20 20 20 28 70 63 61 73 65 20 70 72 6f 70 nd).nil.t))).........(pcase.prop
70680 0a 20 20 20 20 20 20 20 20 20 20 28 27 70 61 72 74 69 61 6c 0a 20 20 20 20 20 20 20 20 20 20 20 ...........('partial............
706a0 28 69 66 20 28 3e 20 28 6c 65 6e 67 74 68 20 70 72 65 66 69 78 29 20 6d 61 78 2d 77 69 64 74 68 (if.(>.(length.prefix).max-width
706c0 29 0a 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 )................(progn.........
706e0 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 20 .........(overlay-put.ov.'gptel.
70700 27 70 72 65 66 69 78 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 'prefix)..................(let.(
70720 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......................
70740 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 70 72 65 66 ...(cl-loop.for.char.across.pref
70760 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 20 20 ix..............................
70780 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 20 20 20 20 ....for.idx.upfrom.0............
707a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 69 74 68 20 6e 20 3d 20 30 ......................with.n.=.0
707c0 20 77 69 74 68 20 6d 61 78 2d 6c 65 6e 67 74 68 20 3d 20 28 2a 20 6d 61 78 2d 68 65 69 67 68 74 .with.max-length.=.(*.max-height
707e0 20 6d 61 78 2d 77 69 64 74 68 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .max-width).....................
70800 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65 71 20 63 68 61 72 20 3f 5c 6e 29 20 64 6f .............if.(eq.char.?\n).do
70820 20 28 63 6c 2d 69 6e 63 66 20 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .(cl-incf.n)....................
70840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 3e 20 6e 20 6d 61 78 2d 68 65 69 67 68 74 ..............if.(>.n.max-height
70860 29 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 ).return.idx....................
70880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 3e 20 69 64 78 20 6d 61 78 2d 6c 65 6e 67 ..............if.(>.idx.max-leng
708a0 74 68 29 0a 20 20 20 20 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).............................
708c0 20 20 20 20 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 .....return.idx.................
708e0 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.
70900 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 28 66 75 6e 63 61 nil)))....................(funca
70920 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 20 20 20 20 ll.update.ov....................
70940 20 20 20 20 20 20 20 20 20 28 69 66 20 64 69 73 70 2d 73 69 7a 65 0a 20 20 20 20 20 20 20 20 20 .........(if.disp-size..........
70960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 72 75 6e 63 61 74 65 .......................(truncate
70980 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 20 20 20 20 20 20 20 -string-to-width................
709a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 65 66 69 78 20 64 69 73 70 2d 73 69 ..................prefix.disp-si
709c0 7a 65 20 20 6e 69 6c 20 6e 69 6c 20 27 65 6c 6c 69 70 73 69 73 29 0a 20 20 20 20 20 20 20 20 20 ze..nil.nil.'ellipsis)..........
709e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 65 66 69 78 29 29 29 29 0a .....................prefix)))).
70a00 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 27 67 70 .............(overlay-put.ov.'gp
70a20 74 65 6c 20 27 68 69 64 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c tel.'hide)..............(funcall
70a40 20 75 70 64 61 74 65 20 6f 76 20 6e 69 6c 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 27 70 72 .update.ov.nil)))...........('pr
70a60 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
70a80 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
70aa0 61 74 65 20 6f 76 20 6e 69 6c 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 5f 20 28 6f 76 65 72 6c ate.ov.nil))...........(_.(overl
70ac0 61 79 2d 70 75 74 20 6f 76 20 27 67 70 74 65 6c 20 27 70 61 72 74 69 61 6c 29 0a 20 20 20 20 20 ay-put.ov.'gptel.'partial)......
70ae0 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 75 70 64 61 74 65 20 6f 76 20 28 74 72 75 6e ........(funcall.update.ov.(trun
70b00 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 20 20 20 cate-string-to-width............
70b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 65 66 69 78 20 6d 61 78 ......................prefix.max
70b40 2d 77 69 64 74 68 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 20 -width.nil.nil..................
70b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 65 6c 6c 69 70 73 69 73 29 29 29 29 29 29 29 ................'ellipsis)))))))
70b80 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 74 72 61 6e 73 69 65 6e 74 2d 72 65 61 64 2d )..(defun.gptel--transient-read-
70ba0 6e 75 6d 62 65 72 20 28 70 72 6f 6d 70 74 20 5f 69 6e 69 74 69 61 6c 2d 69 6e 70 75 74 20 68 69 number.(prompt._initial-input.hi
70bc0 73 74 6f 72 79 29 0a 20 20 22 52 65 61 64 20 61 20 6e 75 6d 65 72 69 63 20 76 61 6c 75 65 20 66 story)..."Read.a.numeric.value.f
70be0 72 6f 6d 20 74 68 65 20 6d 69 6e 69 62 75 66 66 65 72 2e 0a 0a 50 52 4f 4d 50 54 2c 20 5f 49 4e rom.the.minibuffer...PROMPT,._IN
70c00 49 54 49 41 4c 2d 49 4e 50 55 54 20 61 6e 64 20 48 49 53 54 4f 52 59 20 61 72 65 20 61 73 20 69 ITIAL-INPUT.and.HISTORY.are.as.i
70c20 6e 20 74 68 65 20 74 72 61 6e 73 69 65 6e 74 20 72 65 61 64 65 72 0a 64 6f 63 75 6d 65 6e 74 69 n.the.transient.reader.documenti
70c40 6f 6e 2e 20 20 52 65 74 75 72 6e 20 6e 69 6c 20 69 66 20 75 73 65 72 20 64 6f 65 73 20 6e 6f 74 on...Return.nil.if.user.does.not
70c60 20 70 72 6f 76 69 64 65 20 61 20 6e 75 6d 62 65 72 2c 20 66 6f 72 20 64 65 66 61 75 6c 74 2e 22 .provide.a.number,.for.default."
70c80 0a 20 20 3b 3b 20 57 6f 72 6b 61 72 6f 75 6e 64 20 66 6f 72 20 62 75 67 67 79 20 74 72 61 6e 73 ...;;.Workaround.for.buggy.trans
70ca0 69 65 6e 74 20 62 65 68 61 76 69 6f 75 72 20 77 68 65 6e 20 64 65 61 6c 69 6e 67 20 77 69 74 68 ient.behaviour.when.dealing.with
70cc0 0a 20 20 3b 3b 20 6e 6f 6e 2d 73 74 72 69 6e 67 20 76 61 6c 75 65 73 2e 20 20 53 65 65 3a 20 68 ...;;.non-string.values...See:.h
70ce0 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 65 6e ttps://github.com/magit/transien
70d00 74 2f 69 73 73 75 65 73 2f 31 37 32 0a 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 76 61 6c 20 t/issues/172...(when-let*.((val.
70d20 28 73 79 6d 62 6f 6c 2d 76 61 6c 75 65 20 68 69 73 74 6f 72 79 29 29 29 0a 20 20 20 20 28 77 68 (symbol-value.history))).....(wh
70d40 65 6e 20 28 6e 6f 74 20 28 73 74 72 69 6e 67 70 20 28 63 61 72 20 76 61 6c 29 29 29 0a 20 20 20 en.(not.(stringp.(car.val)))....
70d60 20 20 20 28 73 65 74 63 61 72 20 76 61 6c 20 28 6e 75 6d 62 65 72 2d 74 6f 2d 73 74 72 69 6e 67 ...(setcar.val.(number-to-string
70d80 20 28 63 61 72 20 76 61 6c 29 29 29 29 29 0a 20 20 28 6c 65 74 2a 20 28 28 6d 69 6e 69 62 75 66 .(car.val)))))...(let*.((minibuf
70da0 66 65 72 2d 64 65 66 61 75 6c 74 2d 70 72 6f 6d 70 74 2d 66 6f 72 6d 61 74 20 22 22 29 0a 09 20 fer-default-prompt-format."")...
70dc0 28 6e 75 6d 20 28 72 65 61 64 2d 6e 75 6d 62 65 72 20 70 72 6f 6d 70 74 20 2d 31 20 68 69 73 74 (num.(read-number.prompt.-1.hist
70de0 6f 72 79 29 29 29 0a 20 20 20 20 28 69 66 20 28 3d 20 6e 75 6d 20 2d 31 29 20 6e 69 6c 20 6e 75 ory))).....(if.(=.num.-1).nil.nu
70e00 6d 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 73 79 73 74 65 6d 2d 70 72 6f 6d 70 74 m)))..(defun.gptel-system-prompt
70e20 2d 2d 66 6f 72 6d 61 74 20 28 26 6f 70 74 69 6f 6e 61 6c 20 6d 65 73 73 61 67 65 29 0a 20 20 22 --format.(&optional.message)..."
70e40 46 6f 72 6d 61 74 20 74 68 65 20 73 79 73 74 65 6d 20 4d 45 53 53 41 47 45 20 66 6f 72 20 64 69 Format.the.system.MESSAGE.for.di
70e60 73 70 6c 61 79 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 splay.in.gptel's.transient.menus
70e80 2e 0a 0a 48 61 6e 64 6c 65 20 66 6f 72 6d 61 74 74 69 6e 67 20 66 6f 72 20 73 79 73 74 65 6d 20 ...Handle.formatting.for.system.
70ea0 6d 65 73 73 61 67 65 73 20 77 68 65 6e 20 74 68 65 20 61 63 74 69 76 65 0a 60 67 70 74 65 6c 2d messages.when.the.active.`gptel-
70ec0 6d 6f 64 65 6c 27 20 64 6f 65 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 20 73 79 73 74 65 6d 20 6d model'.does.not.support.system.m
70ee0 65 73 73 61 67 65 73 2e 22 0a 20 20 28 73 65 74 71 20 6d 65 73 73 61 67 65 20 28 6f 72 20 6d 65 essages."...(setq.message.(or.me
70f00 73 73 61 67 65 20 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 29 29 0a 20 20 ssage.gptel--system-message))...
70f20 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 6f 73 (if.(gptel--model-capable-p.'nos
70f40 79 73 74 65 6d 29 0a 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 ystem).......(concat.(propertize
70f60 20 22 5b 4e 6f 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 20 73 75 70 70 6f 72 74 20 66 6f 72 ."[No.system.message.support.for
70f80 20 6d 6f 64 65 6c 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 .model."........................
70fa0 20 20 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 29 0a 20 20 20 ...'face.'transient-heading)....
70fc0 20 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 ...........(propertize.(gptel--m
70fe0 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 20 20 20 20 odel-name.gptel-model)..........
71000 20 20 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 6e 69 6e 67 29 .................'face.'warning)
71020 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 22 5d 22 20 27 ...............(propertize."]".'
71040 66 61 63 65 20 27 74 72 61 6e 73 69 65 6e 74 2d 68 65 61 64 69 6e 67 29 29 0a 20 20 20 20 28 69 face.'transient-heading)).....(i
71060 66 20 6d 65 73 73 61 67 65 0a 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 64 65 73 63 72 69 f.message.........(gptel--descri
71080 62 65 2d 64 69 72 65 63 74 69 76 65 0a 20 20 20 20 20 20 20 20 20 6d 65 73 73 61 67 65 20 28 6d be-directive..........message.(m
710a0 61 78 20 28 2d 20 28 77 69 6e 64 6f 77 2d 77 69 64 74 68 29 20 31 32 29 20 31 34 29 20 22 e2 ae ax.(-.(window-width).12).14)."..
710c0 90 20 22 29 0a 20 20 20 20 20 20 22 5b 4e 6f 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 20 73 ..")......."[No.system.message.s
710e0 65 74 5d 22 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 74 6f 6f 6c 73 2d 69 6e 69 et]")))..(defun.gptel--tools-ini
71100 74 2d 76 61 6c 75 65 20 28 6f 62 6a 29 0a 20 20 22 53 65 74 20 74 68 65 20 69 6e 69 74 69 61 6c t-value.(obj)..."Set.the.initial
71120 20 73 74 61 74 65 20 6f 66 20 61 20 74 6f 6f 6c 20 4f 42 4a 20 69 6e 20 60 67 70 74 65 6c 2d 74 .state.of.a.tool.OBJ.in.`gptel-t
71140 6f 6f 6c 73 27 2e 0a 0a 4f 42 4a 20 69 73 20 61 20 74 6f 6f 6c 2d 69 6e 66 69 78 20 6f 66 20 74 ools'...OBJ.is.a.tool-infix.of.t
71160 79 70 65 20 60 67 70 74 65 6c 2d 2d 73 77 69 74 63 68 27 2e 22 0a 20 20 28 77 68 65 6e 2d 6c 65 ype.`gptel--switch'."...(when-le
71180 74 2a 20 28 28 6e 61 6d 65 20 28 63 61 72 20 28 6d 65 6d 62 65 72 20 28 6f 72 65 66 20 6f 62 6a t*.((name.(car.(member.(oref.obj
711a0 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)......................
711c0 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 70 63 61 72 20 23 27 63 61 64 72 0a 20 20 20 20 20 ............(mapcar.#'cadr......
711e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
71200 20 20 20 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 ....(plist-get.(transient-scope)
71220 20 3a 74 6f 6f 6c 73 29 29 29 29 29 29 0a 20 20 20 20 28 6f 73 65 74 20 6f 62 6a 20 76 61 6c 75 .:tools)))))).....(oset.obj.valu
71240 65 20 28 6c 69 73 74 20 28 6f 72 65 66 20 6f 62 6a 20 63 61 74 65 67 6f 72 79 29 20 6e 61 6d 65 e.(list.(oref.obj.category).name
71260 29 29 29 29 0a 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d 2d 63 72 6f 77 64 73 6f 75 72 63 65 ))))..(defvar.gptel--crowdsource
71280 64 2d 70 72 6f 6d 70 74 73 2d 75 72 6c 0a 20 20 22 68 74 74 70 73 3a 2f 2f 72 61 77 2e 67 69 74 d-prompts-url..."https://raw.git
712a0 68 75 62 75 73 65 72 63 6f 6e 74 65 6e 74 2e 63 6f 6d 2f 66 2f 61 77 65 73 6f 6d 65 2d 63 68 61 hubusercontent.com/f/awesome-cha
712c0 74 67 70 74 2d 70 72 6f 6d 70 74 73 2f 6d 61 69 6e 2f 70 72 6f 6d 70 74 73 2e 63 73 76 22 0a 20 tgpt-prompts/main/prompts.csv"..
712e0 20 22 55 52 4c 20 66 6f 72 20 63 72 6f 77 64 73 6f 75 72 63 65 64 20 4c 4c 4d 20 73 79 73 74 65 ."URL.for.crowdsourced.LLM.syste
71300 6d 20 70 72 6f 6d 70 74 73 2e 22 29 0a 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d 2d 63 72 6f m.prompts.")..(defvar.gptel--cro
71320 77 64 73 6f 75 72 63 65 64 2d 70 72 6f 6d 70 74 73 0a 20 20 28 6d 61 6b 65 2d 68 61 73 68 2d 74 wdsourced-prompts...(make-hash-t
71340 61 62 6c 65 20 3a 74 65 73 74 20 23 27 65 71 75 61 6c 29 0a 20 20 22 43 72 6f 77 64 73 6f 75 72 able.:test.#'equal)..."Crowdsour
71360 63 65 64 20 4c 4c 4d 20 73 79 73 74 65 6d 20 70 72 6f 6d 70 74 73 2e 22 29 0a 0a 28 64 65 66 75 ced.LLM.system.prompts.")..(defu
71380 6e 20 67 70 74 65 6c 2d 2d 72 65 61 64 2d 63 73 76 2d 63 6f 6c 75 6d 6e 20 28 29 0a 20 20 22 52 n.gptel--read-csv-column.()..."R
713a0 65 61 64 20 6e 65 78 74 20 43 53 56 20 63 6f 6c 75 6d 6e 20 69 6e 20 74 68 65 20 63 75 72 72 65 ead.next.CSV.column.in.the.curre
713c0 6e 74 20 62 75 66 66 65 72 2e 0a 0a 53 75 70 70 6f 72 74 73 20 62 6f 74 68 20 71 75 6f 74 65 64 nt.buffer...Supports.both.quoted
713e0 20 61 6e 64 20 6e 6f 6e 2d 71 75 6f 74 65 64 20 63 6f 6c 75 6d 6e 73 20 28 52 46 43 20 34 31 38 .and.non-quoted.columns.(RFC.418
71400 30 29 2e 22 0a 20 20 28 6c 65 74 20 28 28 73 74 61 72 74 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 0)."...(let.((start.(point)))...
71420 20 20 28 75 6e 6c 65 73 73 20 28 65 6f 6c 70 29 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 63 6f ..(unless.(eolp).......(let.((co
71440 6c 75 6d 6e 0a 09 20 20 20 20 20 28 69 66 20 28 65 71 20 28 63 68 61 72 2d 61 66 74 65 72 29 20 lumn.......(if.(eq.(char-after).
71460 3f 5c 22 29 0a 09 09 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 ?\")....(when.(re-search-forward
71480 20 22 5c 22 2c 5c 5c 7c 5c 22 24 22 20 6e 69 6c 20 74 29 0a 09 09 20 20 20 28 6c 65 74 20 28 28 ."\",\\|\"$".nil.t)......(let.((
714a0 65 6e 64 20 28 6d 61 74 63 68 2d 62 65 67 69 6e 6e 69 6e 67 20 30 29 29 29 0a 09 09 20 20 20 20 end.(match-beginning.0))).......
714c0 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
714e0 20 28 2b 20 73 74 61 72 74 20 31 29 20 28 69 66 20 28 65 6f 6c 70 29 20 28 2d 20 65 6e 64 20 31 .(+.start.1).(if.(eolp).(-.end.1
71500 29 20 65 6e 64 29 29 29 29 0a 09 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 73 65 61 72 63 68 2d ).end)))).........(when.(search-
71520 66 6f 72 77 61 72 64 20 22 2c 22 20 28 6c 69 6e 65 2d 65 6e 64 2d 70 6f 73 69 74 69 6f 6e 29 20 forward.",".(line-end-position).
71540 74 29 0a 09 09 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 t)....(let.((end.(match-beginnin
71560 67 20 30 29 29 29 0a 09 09 20 20 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 2d 6e 6f g.0)))......(buffer-substring-no
71580 2d 70 72 6f 70 65 72 74 69 65 73 20 73 74 61 72 74 20 65 6e 64 29 29 29 29 29 29 0a 09 28 73 74 -properties.start.end))))))..(st
715a0 72 69 6e 67 2d 72 65 70 6c 61 63 65 20 22 5c 22 5c 22 22 20 22 5c 22 22 20 63 6f 6c 75 6d 6e 29 ring-replace."\"\""."\"".column)
715c0 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 63 72 6f 77 64 73 6f 75 72 63 65 64 ))))..(defun.gptel--crowdsourced
715e0 2d 70 72 6f 6d 70 74 73 20 28 29 0a 20 20 22 41 63 71 75 69 72 65 20 61 6e 64 20 72 65 61 64 20 -prompts.()..."Acquire.and.read.
71600 63 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.
71620 0a 0a 54 68 65 73 65 20 61 72 65 20 73 74 6f 72 65 64 20 69 6e 20 74 68 65 20 76 61 72 69 61 62 ..These.are.stored.in.the.variab
71640 6c 65 20 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 74 73 27 le.`gptel--crowdsourced-prompts'
71660 2c 0a 77 68 69 63 68 20 73 65 65 2e 22 0a 20 20 28 77 68 65 6e 20 28 68 61 73 68 2d 74 61 62 6c ,.which.see."...(when.(hash-tabl
71680 65 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 70 74 73 29 e-p.gptel--crowdsourced-prompts)
716a0 0a 20 20 20 20 28 77 68 65 6e 20 28 68 61 73 68 2d 74 61 62 6c 65 2d 65 6d 70 74 79 2d 70 20 67 .....(when.(hash-table-empty-p.g
716c0 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 0a 20 20 20 20 ptel--crowdsourced-prompts).....
716e0 20 20 28 75 6e 6c 65 73 73 20 67 70 74 65 6c 2d 63 72 6f 77 64 73 6f 75 72 63 65 64 2d 70 72 6f ..(unless.gptel-crowdsourced-pro
71700 6d 70 74 73 2d 66 69 6c 65 0a 20 20 20 20 20 20 20 20 28 72 75 6e 2d 61 74 2d 74 69 6d 65 20 30 mpts-file.........(run-at-time.0
71720 20 6e 69 6c 20 23 27 67 70 74 65 6c 2d 73 79 73 74 65 6d 2d 70 72 6f 6d 70 74 29 0a 20 20 20 20 .nil.#'gptel-system-prompt).....
71740 20 20 20 20 28 75 73 65 72 2d 65 72 72 6f 72 20 22 4e 6f 20 63 72 6f 77 64 73 6f 75 72 63 65 64 ....(user-error."No.crowdsourced
71760 20 70 72 6f 6d 70 74 73 20 61 76 61 69 6c 61 62 6c 65 22 29 29 0a 20 20 20 20 20 20 28 75 6e 6c .prompts.available")).......(unl
71780 65 73 73 20 28 61 6e 64 20 28 66 69 6c 65 2d 65 78 69 73 74 73 2d 70 20 67 70 74 65 6c 2d 63 72 ess.(and.(file-exists-p.gptel-cr
717a0 6f 77 64 73 6f 75 72 63 65 64 2d 70 72 6f 6d 70 74 73 2d 66 69 6c 65 29 0a 20 20 20 20 20 20 20 owdsourced-prompts-file)........
717c0 20 20 20 20 20 20 20 20 20 20 20 20 28 74 69 6d 65 2d 6c 65 73 73 2d 70 0a 20 20 20 20 20 20 20 ............(time-less-p........
717e0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 69 6d 65 2d 73 75 62 74 72 61 63 74 20 28 63 75 72 .............(time-subtract.(cur
71800 72 65 6e 74 2d 74 69 6d 65 29 20 28 64 61 79 73 2d 74 6f 2d 74 69 6d 65 20 31 34 29 29 0a 20 20 rent-time).(days-to-time.14))...
71820 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
71840 65 2d 6d 6f 64 69 66 69 63 61 74 69 6f 6e 2d 74 69 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 e-modification-time.............
71860 20 20 20 20 20 20 20 20 20 28 66 69 6c 65 2d 61 74 74 72 69 62 75 74 65 73 20 67 70 74 65 6c 2d .........(file-attributes.gptel-
71880 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 29 29 29 29 0a 20 20 crowdsourced-prompts-file))))...
718a0 20 20 20 20 20 20 28 77 68 65 6e 20 28 79 2d 6f 72 2d 6e 2d 70 0a 20 20 20 20 20 20 20 20 20 20 ......(when.(y-or-n-p...........
718c0 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 22 46 65 .....(concat................."Fe
718e0 74 63 68 20 63 72 6f 77 64 73 6f 75 72 63 65 64 20 73 79 73 74 65 6d 20 70 72 6f 6d 70 74 73 20 tch.crowdsourced.system.prompts.
71900 66 72 6f 6d 20 22 0a 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 from.".................(properti
71920 7a 65 20 22 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 66 2f 61 77 65 73 6f 6d 65 ze."https://github.com/f/awesome
71940 2d 63 68 61 74 67 70 74 2d 70 72 6f 6d 70 74 73 22 20 27 66 61 63 65 20 27 6c 69 6e 6b 29 0a 20 -chatgpt-prompts".'face.'link)..
71960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 3f 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 3b ..............."?"))...........;
71980 3b 20 46 65 74 63 68 20 66 69 6c 65 0a 20 20 20 20 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 ;.Fetch.file...........(message.
719a0 22 46 65 74 63 68 69 6e 67 20 70 72 6f 6d 70 74 73 2e 2e 2e 22 29 0a 20 20 20 20 20 20 20 20 20 "Fetching.prompts...")..........
719c0 20 28 6c 65 74 20 28 28 64 69 72 20 28 66 69 6c 65 2d 6e 61 6d 65 2d 64 69 72 65 63 74 6f 72 79 .(let.((dir.(file-name-directory
719e0 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
71a00 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 66 69 6c 65 2d 65 78 ))).............(unless.(file-ex
71a20 69 73 74 73 2d 70 20 64 69 72 29 20 28 6d 6b 64 69 72 20 64 69 72 20 27 63 72 65 61 74 65 2d 70 ists-p.dir).(mkdir.dir.'create-p
71a40 61 72 65 6e 74 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 75 72 6c 2d 63 6f arents)).............(if.(url-co
71a60 70 79 2d 66 69 6c 65 20 67 70 74 65 6c 2d 2d 63 72 6f 77 64 73 6f 75 72 63 65 64 2d 70 72 6f 6d py-file.gptel--crowdsourced-prom
71a80 70 74 73 2d 75 72 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 pts-url.........................
71aa0 20 20 20 20 20 20 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 .......gptel-crowdsourced-prompt
71ac0 73 2d 66 69 6c 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 s-file..........................
71ae0 20 20 20 20 20 20 27 6f 6b 2d 69 66 2d 61 6c 72 65 61 64 79 2d 65 78 69 73 74 73 29 0a 09 09 28 ......'ok-if-already-exists)...(
71b00 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 20 64 6f 6e message."Fetching.prompts....don
71b20 65 2e 22 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 22 43 6f 75 e.")...............(message."Cou
71b40 6c 64 20 6e 6f 74 20 72 65 74 72 69 65 76 65 20 6e 65 77 20 70 72 6f 6d 70 74 73 2e 22 29 29 29 ld.not.retrieve.new.prompts.")))
71b60 29 29 0a 20 20 20 20 20 20 28 69 66 20 28 6e 6f 74 20 28 66 69 6c 65 2d 72 65 61 64 61 62 6c 65 )).......(if.(not.(file-readable
71b80 2d 70 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 -p.gptel-crowdsourced-prompts-fi
71ba0 6c 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 67 6e 20 28 6d 65 73 73 61 67 65 20 22 le))...........(progn.(message."
71bc0 4e 6f 20 63 72 6f 77 64 73 6f 75 72 63 65 64 20 70 72 6f 6d 70 74 73 20 61 76 61 69 6c 61 62 6c No.crowdsourced.prompts.availabl
71be0 65 22 29 0a 20 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 e")..................(call-inter
71c00 61 63 74 69 76 65 6c 79 20 23 27 67 70 74 65 6c 2d 73 79 73 74 65 6d 2d 70 72 6f 6d 70 74 29 29 actively.#'gptel-system-prompt))
71c20 0a 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 20 20 20 .........(with-temp-buffer......
71c40 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 67 70 74 65 6c .....(insert-file-contents.gptel
71c60 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 29 0a 20 20 20 20 -crowdsourced-prompts-file).....
71c80 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))...
71ca0 20 20 20 20 20 20 20 20 28 66 6f 72 77 61 72 64 2d 6c 69 6e 65 20 31 29 0a 20 20 20 20 20 20 20 ........(forward-line.1)........
71cc0 20 20 20 28 77 68 69 6c 65 20 28 6e 6f 74 20 28 65 6f 62 70 29 29 0a 09 20 20 20 20 28 77 68 65 ...(while.(not.(eobp))......(whe
71ce0 6e 2d 6c 65 74 2a 20 28 28 61 63 74 20 28 67 70 74 65 6c 2d 2d 72 65 61 64 2d 63 73 76 2d 63 6f n-let*.((act.(gptel--read-csv-co
71d00 6c 75 6d 6e 29 29 0a 09 09 09 28 70 72 6f 6d 70 74 20 28 67 70 74 65 6c 2d 2d 72 65 61 64 2d 63 lumn))....(prompt.(gptel--read-c
71d20 73 76 2d 63 6f 6c 75 6d 6e 29 29 29 0a 09 09 28 70 75 74 68 61 73 68 20 61 63 74 20 70 72 6f 6d sv-column)))...(puthash.act.prom
71d40 70 74 20 67 70 74 65 6c 2d 2d 63 72 6f 77 64 73 6f 75 72 63 65 64 2d 70 72 6f 6d 70 74 73 29 29 pt.gptel--crowdsourced-prompts))
71d60 0a 09 20 20 20 20 20 20 28 66 6f 72 77 61 72 64 2d 6c 69 6e 65 20 31 29 29 29 29 29 0a 20 20 20 ........(forward-line.1)))))....
71d80 20 67 70 74 65 6c 2d 2d 63 72 6f 77 64 73 6f 75 72 63 65 64 2d 70 72 6f 6d 70 74 73 29 29 0a 0a .gptel--crowdsourced-prompts))..
71da0 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 64 65 73 63 72 69 62 65 2d 69 6e 66 69 78 2d 63 6f 6e (defun.gptel--describe-infix-con
71dc0 74 65 78 74 20 28 29 0a 20 20 28 69 66 20 28 6e 75 6c 6c 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 text.()...(if.(null.gptel-contex
71de0 74 2d 2d 61 6c 69 73 74 29 20 22 43 6f 6e 74 65 78 74 22 0a 20 20 20 20 28 70 63 61 73 65 2d 6c t--alist)."Context".....(pcase-l
71e00 65 74 2a 0a 20 20 20 20 20 20 20 20 28 28 63 6f 6e 74 65 78 74 73 20 28 67 70 74 65 6c 2d 63 6f et*.........((contexts.(gptel-co
71e20 6e 74 65 78 74 2d 2d 63 6f 6c 6c 65 63 74 29 29 0a 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65 ntext--collect))..........(buffe
71e40 72 2d 63 6f 75 6e 74 20 28 6c 65 6e 67 74 68 20 63 6f 6e 74 65 78 74 73 29 29 0a 20 20 20 20 20 r-count.(length.contexts))......
71e60 20 20 20 20 28 60 28 2c 66 69 6c 65 2d 63 6f 75 6e 74 20 2c 6f 76 2d 63 6f 75 6e 74 29 0a 20 20 ....(`(,file-count.,ov-count)...
71e80 20 20 20 20 20 20 20 20 28 69 66 20 28 3e 20 62 75 66 66 65 72 2d 63 6f 75 6e 74 20 30 29 0a 20 ........(if.(>.buffer-count.0)..
71ea0 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 62 75 66 2d 66 .............(cl-loop.for.(buf-f
71ec0 69 6c 65 20 2e 20 6f 76 73 29 20 69 6e 20 63 6f 6e 74 65 78 74 73 0a 20 20 20 20 20 20 20 20 20 ile...ovs).in.contexts..........
71ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62 75 66 66 65 72 70 20 62 75 66 2d 66 69 ..............if.(bufferp.buf-fi
71f00 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 73 75 6d 20 28 le)........................sum.(
71f20 6c 65 6e 67 74 68 20 6f 76 73 29 20 69 6e 74 6f 20 6f 76 2d 63 6f 75 6e 74 0a 20 20 20 20 20 20 length.ovs).into.ov-count.......
71f40 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 6e 74 20 28 73 74 72 .................else.count.(str
71f60 69 6e 67 70 20 62 75 66 2d 66 69 6c 65 29 20 69 6e 74 6f 20 66 69 6c 65 2d 63 6f 75 6e 74 0a 20 ingp.buf-file).into.file-count..
71f80 20 20 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 ......................finally.re
71fa0 74 75 72 6e 20 28 6c 69 73 74 20 66 69 6c 65 2d 63 6f 75 6e 74 20 6f 76 2d 63 6f 75 6e 74 29 29 turn.(list.file-count.ov-count))
71fc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 30 20 30 29 29 29 29 0a 20 20 20 20 20 .............(list.0.0))))......
71fe0 20 28 63 6f 6e 63 61 74 20 22 43 6f 6e 74 65 78 74 20 28 22 0a 20 20 20 20 20 20 20 20 20 20 20 .(concat."Context.("............
72000 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 ...(propertize................(c
72020 6f 6e 63 61 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 28 3e 20 6f 76 oncat.................(and.(>.ov
72040 2d 63 6f 75 6e 74 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 -count.0)......................(
72060 66 6f 72 6d 61 74 20 22 25 64 20 72 65 67 69 6f 6e 25 73 20 69 6e 20 25 64 20 62 75 66 66 65 72 format."%d.region%s.in.%d.buffer
72080 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 20 20 %s".............................
720a0 20 6f 76 2d 63 6f 75 6e 74 20 28 69 66 20 28 3e 20 6f 76 2d 63 6f 75 6e 74 20 31 29 20 22 73 22 .ov-count.(if.(>.ov-count.1)."s"
720c0 20 22 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 ."")............................
720e0 20 20 28 2d 20 62 75 66 66 65 72 2d 63 6f 75 6e 74 20 66 69 6c 65 2d 63 6f 75 6e 74 29 0a 20 20 ..(-.buffer-count.file-count)...
72100 20 20 20 20 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 ...........................(if.(
72120 3e 20 28 20 2d 20 62 75 66 66 65 72 2d 63 6f 75 6e 74 20 66 69 6c 65 2d 63 6f 75 6e 74 29 20 31 >.(.-.buffer-count.file-count).1
72140 29 20 22 73 22 20 22 22 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 )."s".""))).................(and
72160 20 28 3e 20 66 69 6c 65 2d 63 6f 75 6e 74 20 30 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .(>.file-count.0)...............
72180 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 25 73 25 64 20 66 69 6c 65 25 73 22 0a 20 20 20 .......(format."%s%d.file%s"....
721a0 20 20 20 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 3e ..........................(if.(>
721c0 20 6f 76 2d 63 6f 75 6e 74 20 30 29 20 22 2c 20 22 20 22 22 29 20 66 69 6c 65 2d 63 6f 75 6e 74 .ov-count.0).",."."").file-count
721e0 0a 20 20 20 20 20 20 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 ..............................(i
72200 66 20 28 3e 20 66 69 6c 65 2d 63 6f 75 6e 74 20 31 29 20 22 73 22 20 22 22 29 29 29 29 0a 20 20 f.(>.file-count.1)."s".""))))...
72220 20 20 20 20 20 20 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 .............'face.'warning)....
72240 20 20 20 20 20 20 20 20 20 20 20 22 29 22 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c ...........")"))))..(defun.gptel
72260 2d 2d 64 65 73 63 72 69 62 65 2d 73 75 66 66 69 78 2d 73 65 6e 64 20 28 29 0a 20 20 22 44 65 73 --describe-suffix-send.()..."Des
72280 63 72 69 62 65 20 74 68 65 20 61 63 74 69 6f 6e 20 6f 66 20 60 67 70 74 65 6c 2d 2d 73 75 66 66 cribe.the.action.of.`gptel--suff
722a0 69 78 2d 73 65 6e 64 27 2e 22 0a 20 20 28 63 6c 2d 66 6c 65 74 20 28 28 70 74 76 20 28 73 29 20 ix-send'."...(cl-flet.((ptv.(s).
722c0 28 70 72 6f 70 65 72 74 69 7a 65 20 73 20 27 66 61 63 65 20 27 77 61 72 6e 69 6e 67 29 29 0a 20 (propertize.s.'face.'warning))..
722e0 20 20 20 20 20 20 20 20 20 20 20 28 70 74 68 20 28 73 29 20 28 70 72 6f 70 65 72 74 69 7a 65 20 ...........(pth.(s).(propertize.
72300 73 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 29 29 29 0a 20 20 s.'face.'transient-heading)))...
72320 20 20 28 6c 65 74 2a 20 28 28 61 72 67 73 20 28 6f 72 20 28 61 6e 64 20 74 72 61 6e 73 69 65 6e ..(let*.((args.(or.(and.transien
72340 74 2d 63 75 72 72 65 6e 74 2d 63 6f 6d 6d 61 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 t-current-command...............
72360 20 20 20 20 20 20 20 20 20 20 20 20 28 74 72 61 6e 73 69 65 6e 74 2d 61 72 67 73 20 74 72 61 6e ............(transient-args.tran
72380 73 69 65 6e 74 2d 63 75 72 72 65 6e 74 2d 63 6f 6d 6d 61 6e 64 29 29 0a 09 20 20 20 20 20 20 20 sient-current-command)).........
723a0 20 20 20 20 20 20 3b 3b 20 4e 6f 74 20 79 65 74 20 65 78 70 6f 72 74 65 64 2c 20 73 69 6d 75 6c ......;;.Not.yet.exported,.simul
723c0 61 74 65 2e 20 20 48 41 43 4b 3a 20 57 65 20 61 72 65 20 61 63 63 65 73 73 69 6e 67 0a 09 20 20 ate...HACK:.We.are.accessing....
723e0 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 54 72 61 6e 73 69 65 6e 74 27 73 20 69 6e 74 65 72 6e ...........;;.Transient's.intern
72400 61 6c 20 76 61 72 69 61 62 6c 65 73 20 68 65 72 65 20 66 6f 72 20 6c 69 76 65 20 75 70 64 61 74 al.variables.here.for.live.updat
72420 65 73 2e 0a 09 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 es................(let*.((transi
72440 65 6e 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 ent-current-command.(oref.transi
72460 65 6e 74 2d 2d 70 72 65 66 69 78 20 63 6f 6d 6d 61 6e 64 29 29 0a 09 20 20 20 20 20 20 20 20 20 ent--prefix.command))...........
72480 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 6e 74 2d 73 75 ...........(transient-current-su
724a0 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 29 0a 09 20 20 ffixes.transient--suffixes))....
724c0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 72 61 6e 73 69 65 6e 74 2d 61 72 67 73 20 74 72 61 .............(transient-args.tra
724e0 6e 73 69 65 6e 74 2d 63 75 72 72 65 6e 74 2d 63 6f 6d 6d 61 6e 64 29 29 29 29 0a 20 20 20 20 20 nsient-current-command))))......
72500 20 20 20 20 20 20 28 6c 62 65 67 20 28 6c 69 6e 65 2d 6e 75 6d 62 65 72 2d 61 74 2d 70 6f 73 20 ......(lbeg.(line-number-at-pos.
72520 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 6e 2d 62 65 67 69 6e (if.(use-region-p).(region-begin
72540 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 20 ning)...........................
72560 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 29 29 0a 20 20 20 20 .............(point-min)))).....
72580 20 20 20 20 20 20 20 28 6c 65 6e 64 20 28 6c 69 6e 65 2d 6e 75 6d 62 65 72 2d 61 74 2d 70 6f 73 .......(lend.(line-number-at-pos
725a0 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 6e 2d 65 6e 64 29 .(if.(use-region-p).(region-end)
725c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
725e0 20 20 20 20 20 20 20 20 28 70 6f 69 6e 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 6c ........(point))))............(l
72600 74 65 78 74 20 28 70 74 76 20 28 69 66 20 28 3e 20 6c 65 6e 64 20 6c 62 65 67 29 0a 20 20 20 20 text.(ptv.(if.(>.lend.lbeg).....
72620 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 20 22 .......................(format."
72640 20 28 6c 69 6e 65 73 20 25 64 2d 25 64 29 22 20 6c 62 65 67 20 6c 65 6e 64 29 0a 20 20 20 20 20 .(lines.%d-%d)".lbeg.lend)......
72660 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 20 28 6c ....................(format.".(l
72680 69 6e 65 20 25 64 29 22 20 6c 62 65 67 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 64 65 ine.%d)".lbeg))))............(de
726a0 73 74 29 20 28 63 6f 6e 74 65 78 74 29 29 0a 20 20 20 20 20 20 28 73 65 74 71 20 64 65 73 74 20 st).(context)).......(setq.dest.
726c0 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 6d 65 6d 62 65 72 (cond...................((member
726e0 20 22 65 22 20 61 72 67 73 29 20 28 70 74 76 20 22 65 63 68 6f 20 61 72 65 61 22 29 29 0a 20 20 ."e".args).(ptv."echo.area"))...
72700 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 22 6b 22 20 61 72 67 ................((member."k".arg
72720 73 29 20 28 70 74 76 20 22 6b 69 6c 6c 2d 72 69 6e 67 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 s).(ptv."kill-ring"))...........
72740 20 20 20 20 20 20 20 20 28 28 63 6c 2d 73 6f 6d 65 20 28 6c 61 6d 62 64 61 20 28 73 29 0a 20 20 ........((cl-some.(lambda.(s)...
72760 20 20 20 20 20 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 ............................(and
72780 20 28 73 74 72 69 6e 67 70 20 73 29 20 28 6d 65 6d 71 20 28 61 72 65 66 20 73 20 30 29 20 27 28 .(stringp.s).(memq.(aref.s.0).'(
727a0 3f 67 20 3f 62 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 ?g.?b)).........................
727c0 20 20 20 20 20 20 20 20 20 20 20 28 6e 6f 74 20 28 65 71 75 61 6c 20 28 73 75 62 73 74 72 69 6e ...........(not.(equal.(substrin
727e0 67 20 73 20 31 29 20 28 62 75 66 66 65 72 2d 6e 61 6d 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 g.s.1).(buffer-name)))..........
72800 20 20 20 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
72820 74 20 28 70 74 68 20 22 62 75 66 66 65 72 20 22 29 20 28 70 74 76 20 28 73 75 62 73 74 72 69 6e t.(pth."buffer.").(ptv.(substrin
72840 67 20 73 20 31 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 g.s.1)))))......................
72860 20 20 20 20 20 20 20 61 72 67 73 29 29 29 29 0a 20 20 20 20 20 20 28 73 65 74 71 20 63 6f 6e 74 .......args)))).......(setq.cont
72880 65 78 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 67 70 74 65 6c 2d 63 6f 6e 74 65 ext.............(and.gptel-conte
728a0 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 28 6c 65 74 20 xt--alist..................(let.
728c0 28 28 6c 63 20 28 6c 65 6e 67 74 68 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61 6c 69 73 ((lc.(length.gptel-context--alis
728e0 74 29 29 29 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 t)))....................(concat.
72900 28 70 74 68 20 22 20 61 6c 6f 6e 67 20 77 69 74 68 20 22 29 20 28 70 74 76 20 28 66 6f 72 6d 61 (pth.".along.with.").(ptv.(forma
72920 74 20 22 25 64 22 20 6c 63 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 t."%d".lc)).....................
72940 20 20 20 20 20 20 20 28 70 74 68 20 28 63 6f 6e 63 61 74 20 22 20 63 6f 6e 74 65 78 74 20 73 6f .......(pth.(concat.".context.so
72960 75 72 63 65 22 20 28 61 6e 64 20 28 2f 3d 20 6c 63 20 31 29 20 22 73 22 29 29 29 29 29 29 29 0a urce".(and.(/=.lc.1)."s"))))))).
72980 20 20 20 20 20 20 28 63 6f 6e 64 20 28 28 6d 65 6d 62 65 72 20 22 6d 22 20 61 72 67 73 29 0a 20 ......(cond.((member."m".args)..
729a0 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 61 64 20 70 ............(concat.(pth."Read.p
729c0 72 6f 6d 70 74 20 66 72 6f 6d 20 22 29 20 28 70 74 76 20 22 6d 69 6e 69 62 75 66 66 65 72 22 29 rompt.from.").(ptv."minibuffer")
729e0 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 20 20 ......................context...
72a00 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 6f 6e ...................(if.dest.(con
72a20 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 74 29 cat.(pth.",.response.to.").dest)
72a40 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 74 20 ........................(concat.
72a60 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 6e 74 (pth.",.insert.response.at.point
72a80 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 79 22 20 "))))).............((member."y".
72aa0 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 28 70 74 68 20 args)..............(concat.(pth.
72ac0 22 53 65 6e 64 20 70 72 6f 6d 70 74 20 66 72 6f 6d 20 22 29 0a 09 09 20 20 20 20 20 28 63 6f 6e "Send.prompt.from.")........(con
72ae0 63 61 74 20 28 70 74 76 20 22 6b 69 6c 6c 2d 72 69 6e 67 20 28 22 29 0a 09 09 09 20 20 20 20 20 cat.(ptv."kill-ring.(").........
72b00 28 69 66 2d 6c 65 74 2a 20 28 28 76 61 6c 20 28 63 61 72 2d 73 61 66 65 20 6b 69 6c 6c 2d 72 69 (if-let*.((val.(car-safe.kill-ri
72b20 6e 67 29 29 0a 09 09 09 09 20 20 20 20 20 20 20 28 76 61 6c 20 28 73 75 62 73 74 72 69 6e 67 2d ng))............(val.(substring-
72b40 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 20 76 61 6c 29 29 0a 09 09 09 09 20 20 20 20 20 20 20 28 no-properties.val))............(
72b60 6c 65 6e 20 28 6c 65 6e 67 74 68 20 76 61 6c 29 29 29 0a 09 09 09 09 20 28 70 74 76 20 28 63 6f len.(length.val)))......(ptv.(co
72b80 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 20 20 ncat............................
72ba0 20 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 ............"\"".(string-replace
72bc0 0a 09 09 09 09 09 20 20 20 20 20 22 5c 6e 22 20 22 e2 ae 90 22 0a 09 09 09 09 09 20 20 20 20 20 ..........."\n"."..."...........
72be0 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 09 09 09 09 09 20 (truncate-string-to-width.......
72c00 20 20 20 20 20 76 61 6c 20 32 30 20 6e 69 6c 20 6e 69 6c 20 74 29 29 0a 09 09 09 09 20 20 20 20 .....val.20.nil.nil.t)).........
72c20 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 09 09 09 09 09 20 20 ..."\"".(when.(>.len.20)........
72c40 20 20 20 20 28 63 6f 6e 63 61 74 0a 09 09 09 09 09 20 20 20 20 20 20 20 22 2c 20 22 0a 09 09 09 ....(concat.............",."....
72c60 09 09 20 20 20 20 20 20 20 28 66 69 6c 65 2d 73 69 7a 65 2d 68 75 6d 61 6e 2d 72 65 61 64 61 62 .........(file-size-human-readab
72c80 6c 65 20 6c 65 6e 20 27 73 69 20 22 20 22 29 0a 09 09 09 09 09 20 20 20 20 20 20 20 22 20 63 68 le.len.'si.".").............".ch
72ca0 61 72 73 22 29 29 29 29 0a 09 09 09 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 65 6d ars")))).........(propertize."em
72cc0 70 74 79 22 20 27 66 61 63 65 20 27 65 72 72 6f 72 29 29 0a 09 09 09 20 20 20 28 70 74 76 20 22 pty".'face.'error)).......(ptv."
72ce0 29 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 65 78 )"))......................contex
72d00 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 64 65 73 74 20 t......................(if.dest.
72d20 28 63 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 (concat.(pth.",.response.to.").d
72d40 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 20 20 20 28 63 6f 6e est)........................(con
72d60 63 61 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 cat.(pth.",.insert.response.at.p
72d80 6f 69 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 oint"))))).............((member.
72da0 22 69 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 "i".args)..............(let*.((r
72dc0 65 67 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 eg.(use-region-p))..............
72de0 20 20 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 .......(src.(ptv.(if.reg."select
72e00 69 6f 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 ion".(buffer-name)))))..........
72e20 20 20 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 ......(if.dest.(concat.(pth."Sen
72e40 64 20 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 d.").src.ltext.context.(pth.",.w
72e60 69 74 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 ith.response.to.")..............
72e80 20 20 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 ...................(ptv.dest).(p
72ea0 74 68 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 th.";.kill").ltext..............
72ec0 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 6e 6f 74 20 72 65 67 ...................(and.(not.reg
72ee0 29 20 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 ).(concat.(pth.".in.").src)))...
72f00 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 52 65 70 ...............(concat.(pth."Rep
72f20 6c 61 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 lace.").src.ltext.(pth.".with.re
72f40 73 70 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 sponse")........................
72f60 20 20 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 ..(and.context..................
72f80 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 20 28 20 77 69 .............(concat.(pth.".(.wi
72fa0 74 68 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 th").(substring.context.11).".)"
72fc0 29 29 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 )))))).............((use-region-
72fe0 70 29 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 p)..............(concat.(pth."Se
73000 6e 64 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 nd.").(ptv."selection").ltext...
73020 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 20 64 ...................context.(if.d
73040 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 6e 73 est.(concat.(pth.",.with.respons
73060 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 20 20 e.to.").dest)...................
73080 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 20 69 6e 73 .............(concat.(pth.",.ins
730a0 65 72 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 ert.response.at.region.end")))))
730c0 0a 20 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 .............(t.(concat.(pth."Se
730e0 6e 64 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 nd.").(ptv.(buffer-name)).ltext.
73100 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 6e 74 65 78 74 20 28 .......................context.(
73120 69 66 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 if.dest.(concat.(pth.",.with.res
73140 70 6f 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 ponse.to.").dest)...............
73160 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 74 68 20 ...................(concat.(pth.
73180 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 6e 74 22 29 29 29 29 ",.insert.response.at.point"))))
731a0 29 29 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 )))))..(defun.gptel--format-pres
731c0 65 74 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 et-string.()..."Format.the.prese
731e0 74 20 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 t.indicator.display.for.`gptel-m
73200 65 6e 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 enu'."...(if.(and.gptel--known-p
73220 72 65 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 resets.gptel--preset).......(app
73240 6c 79 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 ly........#'format.".(%s%s)"....
73260 20 20 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 ....(let.((mismatch.(gptel--pres
73280 65 74 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 et-mismatch-p.gptel--preset)))..
732a0 20 20 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 ........(list.(propertize."@".'f
732c0 61 63 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 ace.(if.mismatch.'transient-key.
732e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
73300 20 20 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 .......'(.:inherit.transient-key
73320 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
73340 20 20 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 ...........:inherit.secondary-se
73360 6c 65 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 lection.........................
73380 20 20 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 ..................:box.-1.:weigh
733a0 74 20 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 t.bold)))................(proper
733c0 74 69 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 tize.(format."%s".gptel--preset)
733e0 20 27 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 .'face..........................
73400 20 20 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 ..(if.mismatch..................
73420 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 77 61 72 6e 69 6e 67 ..............'(:inherit.warning
73440 20 3a 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 .:strike-through.t).............
73460 20 20 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 .................'(:inherit.seco
73480 6e 64 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 ndary-selection.:box.-1))))))...
734a0 20 20 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 ..(format.".(%s%s)".............
734c0 28 70 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 (propertize."@".'face.'transient
734e0 2d 6b 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 -key).............(propertize."p
73500 72 65 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 reset".'face.'transient-inactive
73520 2d 76 61 6c 75 65 29 29 29 29 0a 0a 0c 0a 3b 3b 20 2a 20 54 72 61 6e 73 69 65 6e 74 20 63 6c 61 -value))))....;;.*.Transient.cla
73540 73 73 65 73 20 61 6e 64 20 6d 65 74 68 6f 64 73 20 66 6f 72 20 67 70 74 65 6c 0a 0a 3b 3b 20 2a sses.and.methods.for.gptel..;;.*
73560 2a 20 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 *.Class.for.generic.gptel.elisp.
73580 76 61 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 variables..(defclass.gptel-lisp-
735a0 76 61 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 variable.(transient-lisp-variabl
735c0 65 29 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 e)...((display-nil.:initarg.:dis
735e0 70 6c 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 play-nil)..;String.to.display.if
73600 20 76 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 .value.if.nil....(display-map.:i
73620 6e 69 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 nitarg.:display-map.:initform.ni
73640 6c 29 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 l)).;Display.string.from.alist.d
73660 69 73 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 isplay-map..."Lisp.variables.tha
73680 74 20 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 t.show.:display-nil.instead.of.n
736a0 69 6c 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 il.")..(cl-defmethod.transient-f
736c0 6f 72 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 ormat-value.((obj.gptel-lisp-var
736e0 69 61 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 iable))...(let.((display-value..
73700 20 20 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 ........(with-slots.(value.displ
73720 61 79 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 ay-nil.display-map).obj.........
73740 20 20 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 ...(cond.((null.value).display-n
73760 69 6c 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 il)..................(display-ma
73780 70 20 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 p.(or.(cdr.(assoc.value.display-
737a0 6d 61 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 map)).value))..................(
737c0 74 20 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 t.value))))).....(propertize....
737e0 20 20 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 ..(if.(stringp.display-value).di
73800 73 70 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 splay-value.(prin1-to-string.dis
73820 70 6c 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 play-value))......'face.'transie
73840 6e 74 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 nt-value)))..(cl-defmethod.trans
73860 69 65 6e 74 2d 69 6e 66 69 78 2d 73 65 74 20 28 28 6f 62 6a 20 67 70 74 65 6c 2d 6c 69 73 70 2d ient-infix-set.((obj.gptel-lisp-
73880 76 61 72 69 61 62 6c 65 29 20 76 61 6c 75 65 29 0a 20 20 28 66 75 6e 63 61 6c 6c 20 28 6f 72 65 variable).value)...(funcall.(ore
738a0 66 20 6f 62 6a 20 73 65 74 2d 76 61 6c 75 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 65 f.obj.set-value)............(ore
738c0 66 20 6f 62 6a 20 76 61 72 69 61 62 6c 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 6f 73 65 74 f.obj.variable)............(oset
738e0 20 6f 62 6a 20 76 61 6c 75 65 20 76 61 6c 75 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 67 70 74 .obj.value.value)............gpt
73900 65 6c 2d 2d 73 65 74 2d 62 75 66 66 65 72 2d 6c 6f 63 61 6c 6c 79 29 29 0a 0a 3b 3b 20 2a 2a 20 el--set-buffer-locally))..;;.**.
73920 43 6c 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 Class.for.managing.gptel.tools..
73940 28 64 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 (defclass.gptel--switch.(transie
73960 6e 74 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 nt-switch)...((category.:initarg
73980 20 3a 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 .:category))..."Class.used.for.a
739a0 72 67 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 rguments.that.share.a.category."
739c0 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 69 6e 66 69 78 )..(cl-defmethod.transient-infix
739e0 2d 73 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 -set.((obj.gptel--switch).value)
73a00 0a 20 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 ..."Set.VALUE.of.a.`gptel--switc
73a20 68 27 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 h'.OBJ...It.is.a.list.of.the.cat
73a40 65 67 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 egory.and.argument,.e.g...(\"fil
73a60 65 73 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 esystem\".\"read_file\")."...(le
73a80 74 20 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 t.((state.(transient-scope))....
73aa0 20 20 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 .....(category.(oref.obj.categor
73ac0 79 29 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 y))).....(if.value.........(prog
73ae0 6e 0a 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 n...........(cl-pushnew.(list.ca
73b00 74 65 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 tegory.value)...................
73b20 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 20 3a 74 65 ....(plist-get.state.:tools).:te
73b40 73 74 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 st.#'equal)...........(oset.obj.
73b60 76 61 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 value.(list.category.value)))...
73b80 20 20 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 ....(plist-put.state.:tools.....
73ba0 20 20 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 .............(delete.(list.categ
73bc0 6f 72 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 ory.(oref.obj.argument))........
73be0 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 73 74 61 ..................(plist-get.sta
73c00 74 65 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 te.:tools))).......(oset.obj.val
73c20 75 65 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 ue.nil)).....(oset.transient--pr
73c40 65 66 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 efix.scope.state)))..;;.**.Class
73c60 20 66 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 .for.managing.gptel.tool.categor
73c80 69 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 68 2d 63 61 74 ies..(defclass.gptel--switch-cat
73ca0 65 67 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 egory.(transient-switch)...((cat
73cc0 65 67 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 egory.:initarg.:category))..."Cl
73ce0 61 73 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 ass.used.for.arguments.that.swit
73d00 63 68 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 ch.a.group.of.other.arguments...
73d20 54 68 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 Their.own.value.is.ignored")..(c
73d40 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
73d60 75 65 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 ue.((obj.gptel--switch-category)
73d80 29 0a 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 )...(let*.((category.(oref.obj.c
73da0 61 74 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 ategory))..........(active-count
73dc0 0a 20 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 ...........(cl-count-if.(lambda.
73de0 28 74 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 (tl).(equal.(car.tl).category)).
73e00 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
73e20 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 0a 20 20 t.(transient-scope).:tools)))...
73e40 20 20 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 .......(total-count.(length.(cdr
73e60 20 28 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 .(assoc.category.gptel--known-to
73e80 6f 6c 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 ols))))).....(if.(>.active-count
73ea0 20 30 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 .0).........(propertize.(format.
73ec0 22 28 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 "(%d/%d)".active-count.total-cou
73ee0 6e 74 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 nt).'face.'transient-value).....
73f00 20 20 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 ..(propertize.(format."(0/%d)".t
73f20 6f 74 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 otal-count).'face.'transient-ina
73f40 63 74 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 ctive-value))))..;;.Pressing.a.t
73f60 6f 6f 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 ool.category.key.should.have.dif
73f80 66 65 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 ferent.behaviors.in.different.;;
73fa0 20 63 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 .contexts:.;;.-.If.the.tools.for
73fc0 20 74 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 .the.category.are.not.shown,.sho
73fe0 77 20 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 w.them,.do.nothing.else.;;.-.If.
74000 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 20 61 6e 79 20 6f 66 the.tools.are.showing.and.any.of
74020 20 74 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 .them.are.selected,.deselect.all
74040 0a 3b 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 .;;.-.If.the.tools.are.showing.a
74060 6e 64 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 nd.none.of.them.are.selected,.se
74080 6c 65 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 lect.all..;;.To.do.this.we.indep
740a0 65 6e 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 endently.track.whether.the.categ
740c0 6f 72 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 ory.tools.are.visible.;;.("activ
740e0 65 22 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 e"),.and.whether.any.category.to
74100 6f 6c 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 ols.have.been."selected":.(cl-de
74120 66 6d 65 74 68 6f 64 20 74 72 61 6e 73 69 65 6e 74 2d 69 6e 66 69 78 2d 72 65 61 64 20 28 28 6f fmethod.transient-infix-read.((o
74140 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 20 20 22 44 bj.gptel--switch-category))..."D
74160 65 74 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 etermine.OBJ.value.according.to.
74180 63 61 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 category.toggle.settings."...(le
741a0 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 65 67 6f 72 79 t*.((category.(oref.obj.category
741c0 29 29 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 ))..........(active.(equal.categ
741e0 6f 72 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 ory.(plist-get.(transient-scope)
74200 20 3a 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 .:category)))..........(selected
74220 20 28 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 .(cl-some.(lambda.(tool-spec).(e
74240 71 75 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 qual.category.(car.tool-spec))).
74260 20 20 20 20 20 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
74280 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 74 6f 6f 6c 73 29 st-get.(transient-scope).:tools)
742a0 29 29 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 ))).....(if.(not.active)........
742c0 20 28 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 .(oref.obj.value).......(if.sele
742e0 63 74 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 cted.nil.(oref.obj.argument)))))
74300 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 69 6e 66 69 78 2d ..(cl-defmethod.transient-infix-
74320 73 65 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 set.((obj.gptel--switch-category
74340 29 20 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 ).value)..."When.setting.VALUE,.
74360 73 65 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 set.all.options.in.the.category.
74380 6f 66 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 of.OBJ."...(dolist.(suffix-obj.t
743a0 72 61 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 ransient--suffixes).....;;.Find.
743c0 61 6c 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 all.suffixes.that.have.this.cate
743e0 67 6f 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 gory.....(when-let*.(((cl-typep.
74400 73 75 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 suffix-obj.'gptel--switch)).....
74420 20 20 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 ............((equal.(oref.suffix
74440 2d 6f 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 -obj.category)..................
74460 20 20 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 .......(oref.obj.category)))....
74480 20 20 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 .............(arg.(if.(slot-boun
744a0 64 70 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 dp.suffix-obj.'argument)........
744c0 20 20 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 ..................(oref.suffix-o
744e0 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 20 20 20 20 20 20 20 bj.argument)....................
74500 20 20 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 ....(oref.obj.argument-format)))
74520 29 0a 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 ).......(if.value...............
74540 20 20 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 ..........;.Turn.on/off.all.memb
74560 65 72 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 ers.in.category...........(trans
74580 69 65 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 ient-infix-set.suffix-obj.arg)..
745a0 20 20 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 .......(transient-infix-set.suff
745c0 69 78 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 ix-obj.nil))))...;;.Update.the.a
745e0 63 74 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 ctive.menu.category.and.key.in.t
74600 68 65 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 he.prefix.scope...(plist-put.(tr
74620 61 6e 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 ansient-scope).:category.(oref.o
74640 62 6a 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 bj.category))...(plist-put.(tran
74660 73 69 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 sient-scope).:key.(oref.obj.key)
74680 29 0a 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 )...;;.Finally.set.the."value".o
746a0 66 20 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 f.the.category.itself...(oset.ob
746c0 6a 20 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 j.value.value))..;;.**.Class.for
746e0 20 67 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 .gptel.options.that.are.three-wa
74700 79 20 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 y.switches..(defclass.gptel--swi
74720 74 63 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 tches.(gptel-lisp-variable)...((
74740 64 69 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 display-if-true.:initarg.:displa
74760 79 2d 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 y-if-true.:initform."True")....(
74780 64 69 73 70 6c 61 79 2d 69 66 2d 66 61 6c 73 65 20 3a 69 6e 69 74 61 72 67 20 3a 64 69 73 70 6c display-if-false.:initarg.:displ
747a0 61 79 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 ay-if-false.:initform."False")).
747c0 20 20 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 .."Boolean.lisp.variable.class.f
747e0 6f 72 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 or.gptel-transient.")..(cl-defme
74800 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 20 thod.transient-infix-read.((obj.
74820 67 70 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 gptel--switches))..."Cycle.throu
74840 67 68 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 gh.the.mutually.exclusive.switch
74860 65 73 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 es."...(not.(oref.obj.value)))..
74880 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 6d 61 74 2d 76 (cl-defmethod.transient-format-v
748a0 61 6c 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 alue.((obj.gptel--switches))...(
748c0 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 2d 69 66 2d 74 72 75 with-slots.(value.display-if-tru
748e0 65 20 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 e.display-if-false).obj.......(f
74900 6f 72 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 ormat........(propertize."(%s)".
74920 27 66 61 63 65 20 27 74 72 61 6e 73 69 65 6e 74 2d 64 65 6c 69 6d 69 74 65 72 29 0a 20 20 20 20 'face.'transient-delimiter).....
74940 20 20 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 ...(concat.........(propertize.d
74960 69 73 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 isplay-if-false.................
74980 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 73 69 65 6e 74 2d 69 ....'face.(if.value.'transient-i
749a0 6e 61 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 nactive-value.'transient-value))
749c0 0a 20 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 .........(propertize."|".'face.'
749e0 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 20 20 28 70 72 transient-delimiter).........(pr
74a00 6f 70 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 opertize.display-if-true........
74a20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 66 61 63 65 20 28 69 66 20 76 61 6c 75 65 20 27 74 72 .............'face.(if.value.'tr
74a40 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 69 76 ansient-value.'transient-inactiv
74a60 65 2d 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 e-value))))))..;;.**.Class.for.g
74a80 70 74 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 ptel's.scope.management,.singlet
74aa0 6f 6e 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 on..(defclass.gptel--scope.(gpte
74ac0 6c 2d 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 l--switches)...((display-if-true
74ae0 20 3a 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 .:initarg.:display-if-true.:init
74b00 66 6f 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 form."buffer")....(display-if-fa
74b20 6c 73 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 lse.:initarg.:display-if-false.:
74b40 69 6e 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 initform."global"))..."Singleton
74b60 20 6c 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 .lisp.variable.class.for.`gptel-
74b80 2d 73 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 -set-buffer-locally'...This.is.u
74ba0 73 65 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 sed.only.for.setting.this.variab
74bc0 6c 65 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 le.via.`gptel-menu'.")..(cl-defm
74be0 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
74c00 20 67 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 .gptel--scope))..."Cycle.through
74c20 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
74c40 2e 22 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 ."...(with-slots.(value).obj....
74c60 20 28 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 .(pcase.value.......('t.(message
74c80 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 66 6f 72 20 74 68 65 ."Parameters.will.be.set.for.the
74ca0 20 6e 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 .next.request.only")).......('ni
74cc0 6c 20 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 l.(message."Parameters.will.be.s
74ce0 65 74 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 et.buffer-locally")).......(1.(m
74d00 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 20 67 essage."Parameters.will.be.set.g
74d20 6c 6f 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 lobally"))).....(pcase.value.('t
74d40 20 31 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 .1).('nil.t).(1.nil))))..(cl-def
74d60 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 20 28 28 method.transient-format-value.((
74d80 6f 62 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 obj.gptel--scope))...(with-slots
74da0 20 28 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 .(value.display-if-true.display-
74dc0 69 66 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 if-false).obj.......(format.....
74de0 20 20 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 ...(propertize."(%s)".'face.'tra
74e00 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 28 63 6f 6e 63 61 74 nsient-delimiter)........(concat
74e20 0a 20 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 .........(propertize.display-if-
74e40 66 61 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 false.....................'face.
74e60 28 69 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 (if.(null.value).'transient-valu
74e80 65 20 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 e.'transient-inactive-value))...
74ea0 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 61 ......(propertize."|".'face.'tra
74ec0 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 65 nsient-delimiter).........(prope
74ee0 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 20 rtize.display-if-true...........
74f00 20 20 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 ..........'face.(if.(eq.value.t)
74f20 20 27 74 72 61 6e 73 69 65 6e 74 2d 76 61 6c 75 65 20 27 74 72 61 6e 73 69 65 6e 74 2d 69 6e 61 .'transient-value.'transient-ina
74f40 63 74 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 ctive-value)).........(propertiz
74f60 65 20 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 e."|".'face.'transient-delimiter
74f80 29 0a 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 ).........(propertize."oneshot".
74fa0 27 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 28 69 66 20 28 65 'face.....................(if.(e
74fc0 71 6c 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 ql.value.1).'transient-value.'tr
74fe0 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 29 29 0a 0a 28 63 ansient-inactive-value))))))..(c
75000 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 74 20 l-defmethod.transient-infix-set.
75020 28 28 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 ((obj.gptel--scope).value)...(fu
75040 6e 63 61 6c 6c 20 28 6f 72 65 66 20 6f 62 6a 20 73 65 74 2d 76 61 6c 75 65 29 0a 20 20 20 20 20 ncall.(oref.obj.set-value)......
75060 20 20 20 20 20 20 28 6f 72 65 66 20 6f 62 6a 20 76 61 72 69 61 62 6c 65 29 0a 20 20 20 20 20 20 ......(oref.obj.variable).......
75080 20 20 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 .....(oset.obj.value.value)))..;
750a0 3b 20 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 ;.**.Class.for.managing.gptel's.
750c0 62 61 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 backend.and.model,.singleton..(d
750e0 65 66 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 efclass.gptel-provider-variable.
75100 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 0a 20 20 28 28 62 61 (transient-lisp-variable)...((ba
75120 63 6b 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 ckend.......:initarg.:backend)..
75140 20 20 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 ..(backend-value.:initarg.:backe
75160 6e 64 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 nd-value)....(always-read.:initf
75180 6f 72 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 orm.t)....(set-value.:initarg.:s
751a0 65 74 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 et-value.:initform.#'set))..."Cl
751c0 61 73 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 ass.used.for.gptel-backends.")..
751e0 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 6d 61 74 2d 76 (cl-defmethod.transient-format-v
75200 61 6c 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 alue.((obj.gptel-provider-variab
75220 6c 65 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 le))...(propertize.(concat......
75240 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 0a 20 20 ..........(gptel-backend-name...
75260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 2d 6c 6f 63 61 6c 2d 76 61 6c 75 ..............(buffer-local-valu
75280 65 20 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 e.(oref.obj.backend).transient--
752a0 6f 72 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 original-buffer)).":"...........
752c0 20 20 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 .....(gptel--model-name.(oref.ob
752e0 6a 20 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 j.value)))...............'face.'
75300 74 72 61 6e 73 69 65 6e 74 2d 76 61 6c 75 65 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 transient-value))..(cl-defmethod
75320 20 74 72 61 6e 73 69 65 6e 74 2d 69 6e 66 69 78 2d 73 65 74 20 28 28 6f 62 6a 20 67 70 74 65 6c .transient-infix-set.((obj.gptel
75340 2d 70 72 6f 76 69 64 65 72 2d 76 61 72 69 61 62 6c 65 29 20 76 61 6c 75 65 29 0a 20 20 28 70 63 -provider-variable).value)...(pc
75360 61 73 65 2d 6c 65 74 20 28 28 60 28 2c 62 61 63 6b 65 6e 64 2d 76 61 6c 75 65 20 2c 6d 6f 64 65 ase-let.((`(,backend-value.,mode
75380 6c 2d 76 61 6c 75 65 29 20 76 61 6c 75 65 29 29 0a 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 28 6f l-value).value)).....(funcall.(o
753a0 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 20 20 20 20 20 20 ref.obj.set-value)..............
753c0 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 20 20 20 20 (oref.obj.variable).............
753e0 20 28 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 .(oset.obj.value.model-value)...
75400 20 20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 2d 73 65 74 2d 62 75 66 66 65 72 2d 6c 6f 63 ...........gptel--set-buffer-loc
75420 61 6c 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 ally).....(funcall.(oref.obj.set
75440 2d 76 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 -value)..............(oref.obj.b
75460 61 63 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 ackend)..............(oset.obj.b
75480 61 63 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 ackend-value.backend-value).....
754a0 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
754c0 6c 79 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 ly))...(transient-setup))..;;.**
754e0 20 43 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 .Class.for.infix.options.with.in
75500 2d 62 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 -buffer.overlay.display..(defcla
75520 73 73 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 ss.gptel-option-overlaid.(transi
75540 65 6e 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 ent-option)...((display-nil.:ini
75560 74 61 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 targ.:display-nil)....(overlay.:
75580 69 6e 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 initarg.:overlay))..."Transient.
755a0 6f 70 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 options.for.overlays.displayed.i
755c0 6e 20 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 n.the.working.buffer.")..(cl-def
755e0 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 20 28 28 method.transient-format-value.((
75600 6f 62 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 obj.gptel-option-overlaid))..."S
75620 65 74 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 et.up.the.in-buffer.overlay.for.
75640 61 64 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 additional.directive,.a.string..
75660 0a 41 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 .Also.format.its.value.in.the.Tr
75680 61 6e 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 ansient.menu."...(let.((value.(o
756a0 72 65 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 ref.obj.value)).........(ov....(
756c0 6f 72 65 66 20 6f 62 6a 20 6f 76 65 72 6c 61 79 29 29 0a 20 20 20 20 20 20 20 20 28 61 72 67 75 oref.obj.overlay)).........(argu
756e0 6d 65 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 ment.(oref.obj.argument))).....;
75700 3b 20 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 ;.Making.an.overlay.....(if.(or.
75720 28 6e 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 (not.value).(string-empty-p.valu
75740 65 29 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 e)).........(when.ov.(delete-ove
75760 72 6c 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 rlay.ov)).......(with-current-bu
75780 66 66 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 ffer.transient--original-buffer.
757a0 20 20 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 ........(oset.obj.overlay.(gptel
757c0 2d 2d 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 --instructions-make-overlay.valu
757e0 65 20 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 e.ov))).......(letrec.((ov-clear
75800 2d 68 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 -hook.................(lambda.()
75820 20 28 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 .(when-let*.((ov.(oref.obj.overl
75840 61 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 20 20 20 20 20 ay))............................
75860 20 20 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 .......((overlayp.ov))).........
75880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 6d 6f 76 65 2d 68 6f 6f 6b 20 27 74 72 ................(remove-hook.'tr
758a0 61 6e 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 ansient-exit-hook...............
758c0 20 20 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 .......................ov-clear-
758e0 68 6f 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 hook).........................(d
75900 65 6c 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 elete-overlay.ov))))).........(a
75920 64 64 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 dd-hook.'transient-exit-hook.ov-
75940 63 6c 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 clear-hook))).....;;.Updating.tr
75960 61 6e 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 ansient.menu.display.....(if.val
75980 75 65 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 ue.........(propertize.(concat.a
759a0 72 67 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 rgument.(truncate-string-to-widt
759c0 68 20 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 h.value.35.nil.nil.t))..........
759e0 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 76 61 6c 75 ...........'face.'transient-valu
75a00 65 29 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 e).......(propertize........(con
75a20 63 61 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 cat."(".(symbol-name.(oref.obj.d
75a40 69 73 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 isplay-nil)).")")........'face.'
75a60 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 29 29 0a 0a 0c 0a transient-inactive-value))))....
75a80 3b 3b 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 ;;.*.Transient.Prefixes..;;;###a
75aa0 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 6d 65 6e 75 20 22 67 utoload.(autoload.'gptel-menu."g
75ac0 70 74 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 ptel-transient".nil.t).(transien
75ae0 74 2d 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 t-define-prefix.gptel-menu.()...
75b00 22 43 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 "Change.parameters.of.prompt.to.
75b20 73 65 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 send.to.the.LLM."...:incompatibl
75b40 65 20 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 e.'(("m"."y"."i").("e"."g"."b"."
75b60 6b 22 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 k"))...;;.:value.(list.(concat."
75b80 62 22 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 b".(buffer-name)))...[:descripti
75ba0 6f 6e 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 on.gptel-system-prompt--format..
75bc0 20 20 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 ..["".....:if.(lambda.().(not.(g
75be0 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 74 65 6d 29 ptel--model-capable-p.'nosystem)
75c00 29 29 0a 20 20 20 20 22 49 6e 73 74 72 75 63 74 69 6f 6e 73 22 0a 20 20 20 20 28 22 73 22 20 22 ))....."Instructions".....("s"."
75c20 53 65 74 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 22 20 67 70 74 65 6c 2d 73 79 73 74 65 6d Set.system.message".gptel-system
75c40 2d 70 72 6f 6d 70 74 20 3a 74 72 61 6e 73 69 65 6e 74 20 74 29 0a 20 20 20 20 28 67 70 74 65 6c -prompt.:transient.t).....(gptel
75c60 2d 2d 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 --infix-add-directive)]....[:pad
75c80 2d 6b 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 -keys.t."".....(:info.#'gptel--d
75ca0 65 73 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 escribe-infix-context......:face
75cc0 20 74 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 .transient-heading.:format."%d")
75ce0 0a 20 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 .....(gptel--infix-context-add-c
75d00 75 72 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 urrent-kill).....(gptel--infix-c
75d20 6f 6e 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 ontext-add-region).....(gptel--i
75d40 6e 66 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 nfix-context-add-buffer).....(gp
75d60 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 29 0a 20 20 20 tel--infix-context-add-file)....
75d80 20 28 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 .(gptel--infix-context-remove-al
75da0 6c 29 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 l).....(gptel--suffix-context-bu
75dc0 66 66 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 ffer)]....[:pad-keys.t.....:if.(
75de0 6c 61 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 lambda.().(and.gptel-use-tools..
75e00 20 20 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 ..................(or.gptel--kno
75e20 77 6e 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 wn-tools.(featurep.'gptel-integr
75e40 61 74 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 ations))))....."".(:info........
75e60 20 28 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 .(lambda.()...........(concat...
75e80 20 20 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 ........."Tools".(and.gptel-tool
75ea0 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 63 6f 6e 63 61 s.........................(conca
75ec0 74 20 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 t.".(".(propertize.(format."%d.s
75ee0 65 6c 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 elected"........................
75f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
75f20 20 20 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 ..(length.gptel-tools)).........
75f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
75f60 20 20 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 .........'face.'warning)........
75f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 29 22 29 29 29 29 .........................")"))))
75fa0 0a 20 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 .........:format."%d".:face.tran
75fc0 73 69 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 sient-heading).....("t"."Select.
75fe0 74 6f 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 tools".gptel-tools.:transient.t)
76000 0a 20 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 .....("T"."Continue.tool.calls".
76020 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 29 20 28 67 .....(lambda.().(interactive).(g
76040 70 74 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 ptel--handle-tool-use.gptel--fsm
76060 2d 6c 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 -last))......:if.(lambda.().(and
76080 20 67 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 .gptel--fsm-last................
760a0 20 20 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 .....(eq.(gptel-fsm-state.gptel-
760c0 2d 66 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 -fsm-last).'TOOL))))]]...[[(gpte
760e0 6c 2d 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 l--preset......:key."@".:format.
76100 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 20 20 28 6c 61 6d "%d"......:description......(lam
76120 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 70 65 72 74 69 7a bda.()........(concat.(propertiz
76140 65 20 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 e."Request.Parameters".'face.'tr
76160 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)................
76180 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))))
761a0 0a 20 20 20 20 28 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 76 61 72 69 61 62 6c 65 2d 73 63 6f 70 .....(gptel--infix-variable-scop
761c0 65 29 0a 20 20 20 20 28 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 70 72 6f 76 69 64 65 72 29 0a 20 e).....(gptel--infix-provider)..
761e0 20 20 20 28 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 6d 61 78 2d 74 6f 6b 65 6e 73 29 0a 20 20 20 ...(gptel--infix-max-tokens)....
76200 20 28 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 6e 75 6d 2d 6d 65 73 73 61 67 65 73 2d 74 6f 2d 73 .(gptel--infix-num-messages-to-s
76220 65 6e 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 end......:if.(lambda.().(and.gpt
76240 65 6c 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 el-expert-commands..............
76260 20 20 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 .......(or.gptel-mode.gptel-trac
76280 6b 2d 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 k-response)))).....(gptel--infix
762a0 2d 74 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 -temperature.:if.(lambda.().gpte
762c0 6c 2d 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 l-expert-commands)).....(gptel--
762e0 69 6e 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 infix-use-context).....(gptel--i
76300 6e 66 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 nfix-include-reasoning).....(gpt
76320 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 28 67 70 74 65 6c 2d el--infix-use-tools).....(gptel-
76340 2d 69 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 -infix-track-response......:if.(
76360 6c 61 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 lambda.().(and.gptel-expert-comm
76380 61 6e 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 ands.(not.gptel-mode)))).....(gp
763a0 74 65 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 tel--infix-track-media.:if.(lamb
763c0 64 61 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 da.().gptel-mode))]....[".<Promp
763e0 74 20 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 t.from".....("m"."Minibuffer.ins
76400 74 65 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 tead"."m").....("y"."Kill-ring.i
76420 6e 73 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 nstead"."y")....."".....("i"."Re
76440 73 70 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 spond.in.place"."i")]....[".>Res
76460 70 6f 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 ponse.to".....("e"."Echo.area"."
76480 65 22 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 e").....("b"."Other.buffer"."b".
764a0 20 20 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 .....:class.transient-option....
764c0 20 20 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 ..:prompt."Output.to.buffer:."..
764e0 20 20 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 ....:reader.(lambda.(prompt._._h
76500 69 73 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 istory)................(read-buf
76520 66 65 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 fer.prompt.(buffer-name.(other-b
76540 75 66 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 uffer)).nil))).....("g"."gptel.s
76560 65 73 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 ession"."g"......:class.transien
76580 74 2d 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 t-option......:prompt."Existing.
765a0 6f 72 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 or.new.gptel.session:."......:re
765c0 61 64 65 72 0a 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 70 72 6f 6d 70 74 20 5f 20 5f 68 69 73 ader......(lambda.(prompt._._his
765e0 74 6f 72 79 29 0a 20 20 20 20 20 20 20 28 72 65 61 64 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20 tory)........(read-buffer.......
76600 20 20 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 ..prompt.(generate-new-buffer-na
76620 6d 65 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 me.................(concat."*".(
76640 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 gptel-backend-name.gptel-backend
76660 29 20 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 )."*")).........nil.(lambda.(buf
76680 2d 6e 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 -name)...............(if.(consp.
766a0 62 75 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 buf-name).(setq.buf-name.(car.bu
766c0 66 2d 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 f-name)))...............(let.((b
766e0 75 66 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 uf.(get-buffer.buf-name)))......
76700 20 20 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 ...........(and.(buffer-local-va
76720 6c 75 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 lue.'gptel-mode.buf)............
76740 20 20 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 ..........(not.(eq.(current-buff
76760 65 72 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 er).buf)))))))).....("k"."Kill-r
76780 69 6e 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 ing"."k")]]...[[:description.(la
767a0 6d 62 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 mbda.().(concat.(and.gptel--rewr
767c0 69 74 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 ite-overlays."Continue.").......
767e0 20 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 77 72 69 74 ........................."Rewrit
76800 65 22 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 e")).....:if.(lambda.().(or.(use
76820 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 28 61 6e -region-p)...................(an
76840 64 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 20 20 d.gptel--rewrite-overlays.......
76860 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 65 .................(gptel--rewrite
76880 2d 73 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 -sanitize-overlays)))).....("r".
768a0 20 20 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 .....(lambda.().(if.(get-char-pr
768c0 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 65 29 0a 20 operty.(point).'gptel-rewrite)..
768e0 20 20 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 .............."Iterate"."Rewrite
76900 22 29 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 "))......gptel-rewrite)]....["Tw
76920 65 61 6b 20 52 65 73 70 6f 6e 73 65 22 20 3a 69 66 20 67 70 74 65 6c 2d 2d 69 6e 2d 72 65 73 70 eak.Response".:if.gptel--in-resp
76940 6f 6e 73 65 2d 70 20 3a 70 61 64 2d 6b 65 79 73 20 74 0a 20 20 20 20 28 22 53 50 43 22 20 22 4d onse-p.:pad-keys.t.....("SPC"."M
76960 61 72 6b 22 20 67 70 74 65 6c 2d 2d 6d 61 72 6b 2d 72 65 73 70 6f 6e 73 65 29 0a 20 20 20 20 28 ark".gptel--mark-response).....(
76980 22 4d 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 "M-RET"."Regenerate".gptel--rege
769a0 6e 65 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 nerate.:if.gptel--in-response-p)
769c0 0a 20 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 .....("P"."Previous.variant".gpt
769e0 65 6c 2d 2d 70 72 65 76 69 6f 75 73 2d 76 61 72 69 61 6e 74 0a 20 20 20 20 20 3a 69 66 20 67 70 el--previous-variant......:if.gp
76a00 74 65 6c 2d 2d 61 74 2d 72 65 73 70 6f 6e 73 65 2d 68 69 73 74 6f 72 79 2d 70 0a 20 20 20 20 20 tel--at-response-history-p......
76a20 3a 74 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 :transient.t).....("N"."Next.var
76a40 69 61 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 iant".gptel--previous-variant...
76a60 20 20 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 ...:if.gptel--at-response-histor
76a80 79 2d 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 y-p......:transient.t).....("E".
76aa0 22 45 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 "Ediff.previous".gptel--ediff...
76ac0 20 20 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 ...:if.gptel--at-response-histor
76ae0 79 2d 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 y-p)]....["Dry.Run".:if.(lambda.
76b00 28 29 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 ().(or.gptel-log-level.gptel-exp
76b20 65 72 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 ert-commands)).....("I"."Inspect
76b40 20 71 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 .query.(Lisp)"......(lambda.()..
76b60 20 20 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 ......"Inspect.the.query.that.wi
76b80 6c 6c 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 ll.be.sent.as.a.lisp.object."...
76ba0 20 20 20 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 20 20 20 20 20 28 67 70 74 65 6c .....(interactive)........(gptel
76bc0 2d 2d 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 --sanitize-model)........(gptel-
76be0 2d 69 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 -inspect-query.........(gptel--s
76c00 75 66 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 uffix-send..........(cons."I".(t
76c20 72 61 6e 73 69 65 6e 74 2d 61 72 67 73 20 74 72 61 6e 73 69 65 6e 74 2d 63 75 72 72 65 6e 74 2d ransient-args.transient-current-
76c40 63 6f 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 command)))))).....("J"."Inspect.
76c60 71 75 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 query.(JSON)"......(lambda.()...
76c80 20 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 ....."Inspect.the.query.that.wil
76ca0 6c 20 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 l.be.sent.as.a.JSON.object."....
76cc0 20 20 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d ....(interactive)........(gptel-
76ce0 2d 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 -sanitize-model)........(gptel--
76d00 69 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 inspect-query.........(gptel--su
76d20 66 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 ffix-send..........(cons."I".(tr
76d40 61 6e 73 69 65 6e 74 2d 61 72 67 73 20 74 72 61 6e 73 69 65 6e 74 2d 63 75 72 72 65 6e 74 2d 63 ansient-args.transient-current-c
76d60 6f 6d 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 5d 0a 20 20 5b ommand))).........'json)))]]...[
76d80 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 61 63 (gptel--suffix-send)]...(interac
76da0 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 29 0a tive)...(gptel--sanitize-model).
76dc0 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 29 29 ..(transient-setup.'gptel-menu))
76de0 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 20 73 ..;;.**.Prefix.for.setting.the.s
76e00 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 65 74 ystem.prompt...(defun.gptel--set
76e20 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 74 69 up-directive-menu.(sym.msg.&opti
76e40 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 74 20 onal.external)..."Return.a.list.
76e60 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 20 66 of.transient.infix.definitions.f
76e80 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 53 59 or.setting.gptel.directives...SY
76ea0 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 20 73 M.is.the.symbol.whose.value.is.s
76ec0 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 0a 4d et.to.the.selected.directive...M
76ee0 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 73 65 SG.is.the.meaning.of.symbol,.use
76f00 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 69 73 d.when.messaging..If.EXTERNAL.is
76f20 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 72 63 .non-nil,.include.external.sourc
76f40 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 66 6f es.of.directives."...(cl-loop.fo
76f60 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 65 63 r.(type...prompt).in.gptel-direc
76f80 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 68 65 tives............;;.Avoid.clashe
76fa0 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 79 0a s.with.the.custom.directive.key.
76fc0 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 28 64 ...........with.unused-keys.=.(d
76fe0 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 63 65 elete.?s.(nconc.(number-sequence
77000 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 20 20 .?a.?z).........................
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 6e 75 6d 62 65 72 2d ........................(number-
77040 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 69 74 sequence.?0.?9)))............wit
77060 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 20 20 h.width.=.(window-width)........
77080 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 70 65 ....for.name.=.(symbol-name.type
770a0 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 6e 64 )............for.key.=.(seq-find
770c0 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 6b 65 .(lambda.(k).(member.k.unused-ke
770e0 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 79 73 ys)).name.(seq-first.unused-keys
77100 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 6b 65 ))............do.(setq.unused-ke
77120 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 20 20 ys.(delete.key.unused-keys))....
77140 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 61 74 ........;;.The.explicit.declarat
77160 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 72 65 ion.":transient.transient--do-re
77180 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 72 73 turn".here............;;.appears
771a0 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 76 30 .to.be.required.for.Transient.v0
771c0 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 20 20 .5.and.up...Without.it,.these...
771e0 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 66 69 .........;;.are.treated.as.suffi
77200 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 6d 2d xes.when.invoking.`gptel-system-
77220 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 3b 20 prompt'.directly,............;;.
77240 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 20 60 and.infixes.when.going.through.`
77260 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 4f 3a gptel-menu'.............;;.TODO:
77280 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 2e 0a .Raise.an.issue.with.Transient..
772a0 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 28 6c ...........collect............(l
772c0 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 29 29 ist.(key-description.(list.key))
772e0 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 69 74 ..................(concat.(capit
77300 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 20 20 alize.name).".".................
77320 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 6c 61 .........(propertize.".".'displa
77340 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 20 20 y.'(space.:align-to.20))........
77360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 0a 20 20 ..................(propertize...
77380 20 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.
773a0 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 20 70 "(".(gptel--describe-directive.p
773c0 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 20 20 rompt.(-.width.30)).")")........
773e0 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 6f 77 ...................'face.'shadow
77400 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 29 20 ))..................`(lambda.().
77420 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)...................
77440 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 65 6c ..(message."%s:.%s".,msg.,(gptel
77460 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 30 20 --describe-directive.prompt.100.
77480 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 67 70 "....")).....................(gp
774a0 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 6f 6d tel--set-with-scope.',sym.',prom
774c0 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 0a 09 pt.gptel--set-buffer-locally))..
774e0 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 2d 2d .........:transient.'transient--
77500 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 6d 70 do-return)............into.promp
77520 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 72 65 t-suffixes............finally.re
77540 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 20 20 turn............(nconc..........
77560 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 20 28 ...prompt-suffixes.............(
77580 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 20 20 list.(list."DEL"."None".........
775a0 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 6e 74 ................`(lambda.().(int
775c0 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 20 eractive).......................
775e0 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 0a 20 .....(message."%s.unset".,msg)..
77600 20 20 20 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
77620 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 65 6c --set-with-scope.',sym.nil.gptel
77640 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 20 20 --set-buffer-locally))..........
77660 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 6e 73 ...............:transient.'trans
77680 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 28 61 ient--do-return)).............(a
776a0 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 6c 69 nd.external..................(li
776c0 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 63 65 st.(list."SPC"."Pick.crowdsource
776e0 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 20 20 d.prompt".......................
77700 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 65 64 .......'gptel--read-crowdsourced
77720 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 3a 20 -prompt................;;.NOTE:.
77740 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 68 65 Quitting.the.completing.read.whe
77760 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 63 72 n.picking.a................;;.cr
77780 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 68 65 owdsourced.prompt.will.cause.the
777a0 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 20 20 .transient.to.exit..............
777c0 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 68 65 ..;;.instead.of.returning.to.the
777e0 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 20 20 .system.prompt.menu.............
77800 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 74 72 ..................:transient.'tr
77820 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 61 75 ansient--do-exit))))))..;;;###au
77840 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 2d 70 toload.(autoload.'gptel-system-p
77860 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 0a 28 rompt."gptel-transient".nil.t).(
77880 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 73 79 transient-define-prefix.gptel-sy
778a0 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 73 79 stem-prompt.()..."Set.the.LLM.sy
778c0 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 6f 6e stem.message.for.LLM.interaction
778e0 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 61 62 s...The.\"system.message\".estab
77900 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 0a 73 lishes.directives.for.the.chat.s
77920 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 6f 72 ession.and.modifies.the.behavior
77940 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 73 79 .of.the.LLM..Some.examples.of.sy
77960 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 65 6c stem.prompts.are:..You.are.a.hel
77980 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 69 73 pful.assistant..Answer.as.concis
779a0 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 74 68 ely.as.possible..Reply.only.with
779c0 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 59 6f .shell.commands.and.no.prose..Yo
779e0 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
77a00 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 61 67 e...More.extensive.system.messag
77a20 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 74 61 es.can.be.useful.for.specific.ta
77a40 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 76 65 sks...Customize.`gptel-directive
77a60 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 0a 20 s'.for.task-specific.prompts."..
77a80 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 6f 6d .[:description.gptel-system-prom
77aa0 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 73 79 pt--format....[(gptel--suffix-sy
77ac0 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 69 78 stem-message)]....[(gptel--infix
77ae0 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
77b00 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
77b20 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
77b40 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-
77b60 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 65 6c system-prompt.............(gptel
77b80 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 20 20 --setup-directive-menu..........
77ba0 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 72 65 ....'gptel--system-message."Dire
77bc0 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 0a 3b ctive".t))).....:pad-keys.t])..;
77be0 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 6c 79 ;.**.Prefix.for.saving.and.apply
77c00 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 2d 70 ing.presets..(transient-define-p
77c20 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 79 20 refix.gptel--preset.()..."Apply.
77c40 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 72 72 a.gptel.preset,.or.save.the.curr
77c60 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 0a 0a ent.configuration.as.a.preset...
77c80 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 66 20 A.\"preset\".is.a.collection.of.
77ca0 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 64 65 gptel.settings,.such.as.the.mode
77cc0 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 20 65 l,.backend,.system.message.and.e
77ce0 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 20 61 nabled.tools,.that.are.applied.a
77d00 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 6d 61 nd.used.together...See.`gptel-ma
77d20 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 61 6e ke-preset'.for.details."...:tran
77d40 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 65 74 sient-suffix.#'transient--do-ret
77d60 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 70 70 urn...[:description."Save.or.app
77d80 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 6c 20 ly.a.preset.collection.of.gptel.
77da0 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 22 43 options"....[:pad-keys.t.....("C
77dc0 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 74 6f 20 70 72 -s"."Save.current.settings.to.pr
77de0 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 5d 0a 20 20 5b 3a eset".gptel--save-preset)]]...[:
77e00 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 2d 70 72 65 73 65 if.(lambda.().gptel--known-prese
77e20 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 6c 75 6d 6e 0a 20 ts)....:class.transient-column..
77e40 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 64 61 20 28 5f 29 ..:setup-children....(lambda.(_)
77e60 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 66 69 78 65 73 0a ......(transient-parse-suffixes.
77e80 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 20 28 63 6c 2d 6c ......'gptel--preset.......(cl-l
77ea0 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 20 70 72 65 73 65 oop........for.(name-sym...prese
77ec0 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 0a 20 20 20 20 20 t).in.gptel--known-presets......
77ee0 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 6e 61 6d 65 2d 73 ..for.name.=.(format."%s".name-s
77f00 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 73 20 3d 20 28 6e ym)........with.unused-keys.=.(n
77f20 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 7a 29 0a 20 20 20 conc.(number-sequence.?a.?z)....
77f40 20 20 20 20 20 20 20 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 ..............................(n
77f60 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 20 20 20 20 66 6f umber-sequence.?0.?9))........fo
77f80 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 20 70 72 65 73 65 r.description.=.(plist-get.prese
77fa0 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 20 6b 65 79 20 3d t.:description)........for.key.=
77fc0 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 6d 62 65 72 20 6b .(seq-find.(lambda.(k).(member.k
77fe0 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 20 20 20 20 20 20 .unused-keys))..................
78000 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 75 6e 75 73 65 64 ..........name.(seq-first.unused
78020 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 75 73 65 64 2d 6b -keys))........do.(setq.unused-k
78040 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 29 0a 20 20 20 20 eys.(delq.key.unused-keys)).....
78060 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 20 20 20 20 20 20 ...collect........(list.........
78080 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 29 29 0a 20 20 20 (key-description.(list.key))....
780a0 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 20 20 20 20 20 20 .....(concat.name...............
780c0 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 20 22 20 27 64 69 73 70 6c 61 79 20 27 28 73 70 61 ..(propertize.".".'display.'(spa
780e0 63 65 20 3a 61 6c 69 67 6e 2d 74 6f 20 32 30 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ce.:align-to.20))...............
78100 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 20 20 20 20 20 20 ..(and.description..............
78120 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 0a 20 20 20 20 ........(propertize.(concat.....
78140 20 20 20 20 20 20 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 28 .............................."(
78160 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 0a 20 20 20 ".(gptel--describe-directive....
78180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
781a0 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 2d 77 69 64 74 68 ....description.(-.(window-width
781c0 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 20 20 20 20 20 20 ).30))..........................
781e0 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 20 20 20 20 20 20 .........")")...................
78200 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 6f 77 29 29 29 0a ...............'face.'shadow))).
78220 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 61 63 74 69 76 65 ........`(lambda.().(interactive
78240 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 69 74 68 2d 73 63 )............(gptel--set-with-sc
78260 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 73 79 6d 0a 20 20 ope.'gptel--preset.',name-sym...
78280 20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 2d 73 65 74 2d 62 75 66 66 65 72 2d 6c 6f 63 61 ..........gptel--set-buffer-loca
782a0 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 70 6c 79 2d 70 72 lly)............(gptel--apply-pr
782c0 65 73 65 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 27 2c 28 63 6f 6e 73 20 6e 61 6d 65 2d 73 79 eset.............',(cons.name-sy
782e0 6d 20 70 72 65 73 65 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 73 m.preset).............(lambda.(s
78300 79 6d 20 76 61 6c 29 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 ym.val).(gptel--set-with-scope..
78320 20 20 20 20 20 20 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
78340 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 61 6c 6c 79 29 m.val.gptel--set-buffer-locally)
78360 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 6c 69 65 64 20 ))............(message."Applied.
78380 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 20 20 28 70 72 gptel.preset.%s".............(pr
783a0 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 69 65 6e 74 2d opertize.,name.'face.'transient-
783c0 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 61 6e 73 69 65 value))............(when.transie
783e0 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 61 74 2d 74 69 nt--stack.............(run-at-ti
78400 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 29 29 29 0a 20 me.0.nil.#'transient-setup))))..
78420 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 20 66 69 6e 61 ......into.generated........fina
78440 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 69 73 74 20 27 lly.return........(nconc.(list.'
78460 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 0a 20 20 20 (gptel--infix-variable-scope....
78480 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 22 25 64 20 25 ...................:format."%d.%
784a0 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 20 3a 64 65 73 k.%v".......................:des
784c0 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 20 20 20 20 28 cription.......................(
784e0 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 20 20 25 73 22 lambda.().(format."%s........%s"
78500 0a 20 20 20 20 20 20 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
78520 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 61 63 65 20 27 ropertize."Apply.preset".'face.'
78540 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 20 20 20 20 transient-heading)..............
78560 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 53 63 6f ................(propertize."Sco
78580 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 2d 70 72 65 66 pe".'face.'transient-active-pref
785a0 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 61 74 65 64 29 ix)))))...............generated)
785c0 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 65 63 74 69 6e )))])..;;.**.Prefix.for.selectin
785e0 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 65 72 73 20 61 g.tools..;;.gptel-tools.offers.a
78600 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 6e 67 20 74 6f .two-level.menu.for.selecting.to
78620 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 74 6c 65 20 63 ols,.its.design.is.a.;;.little.c
78640 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 61 6e 61 74 69 onvoluted.so.here's.an.explanati
78660 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 65 6e 74 20 70 on:.;;.;;.Normally.a.transient.p
78680 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 20 74 72 61 6e refix.exports.its.value.via.tran
786a0 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 65 64 20 62 79 sient-args,.to.be.;;.consumed.by
786c0 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 20 61 72 65 20 .suffixes,.where.these.args.are.
786e0 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 74 68 65 0a 3b determined.by.the.state.of.the.;
78700 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 74 2e 20 20 54 ;.menu.at.the.time.of.export...T
78720 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 6d 69 63 20 61 he.gptel-tools.menu.is.dynamic.a
78740 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 65 6c 65 63 74 nd.needs.to.;;.store.tool.select
78760 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 65 20 69 6e 20 ions.that.may.not.be.visible.in.
78780 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 20 63 61 6e 6e the.meny.any.more,.so.we.;;.cann
787a0 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 3b 3b 0a 3b 3b ot.use.the.transient-args..;;.;;
787c0 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 6f 6e 74 72 6f .We.can.not.(should.not?).contro
787e0 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 69 72 65 63 74 l.the.value.of.the.prefix.direct
78800 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 65 20 73 63 6f ly,.so.we.;;.instead.use.the.sco
78820 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 68 65 20 70 72 pe.(a.secondary.value).of.the.pr
78840 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 74 6f 72 79 20 efix.to.maintain.the.;;.history.
78860 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 67 20 61 20 73 of.selections...When.running.a.s
78880 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 74 69 6f 6e 73 uffix,.we.gather.tool.selections
788a0 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 6f 70 65 20 69 .from.;;.the.scope...The.scope.i
788c0 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 61 6e 6e 65 6c s.also.used.as.a.message.channel
788e0 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 67 6f 72 79 20 .for.connecting.the.;;.category.
78900 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 20 66 6f 72 20 menu.and.the.tool.list.menu.for.
78920 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 6f 61 64 20 28 that.category...;;;###autoload.(
78940 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 6c 2d 74 72 61 autoload.'gptel-tools."gptel-tra
78960 6e 73 69 65 6e 74 22 20 6e 69 6c 20 74 29 0a 28 74 72 61 6e 73 69 65 6e 74 2d 64 65 66 69 6e 65 nsient".nil.t).(transient-define
78980 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 65 6c 65 63 74 -prefix.gptel-tools.()..."Select
789a0 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 6c 20 72 65 71 .tools.to.include.with.gptel.req
789c0 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 20 69 6e 74 6f uests...Tools.are.organized.into
789e0 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 20 63 61 74 65 .categories...Selecting.the.cate
78a00 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 77 69 74 68 20 gory.toggles.all.the.tools.with.
78a20 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 73 20 74 6f 20 that.category...To.add.tools.to.
78a40 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 74 6f 6f 6c 27 this.list,.use.`gptel-make-tool'
78a60 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 70 65 20 6f 70 ,.which.see...Using.the.scope.op
78a80 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 75 73 65 20 77 tion,.you.can.set.tools.to.use.w
78aa0 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 2c 20 69 6e 20 ith.gptel.requests.globally,.in.
78ac0 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 20 72 65 71 75 this.buffer.or.for.the.next.requ
78ae0 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 3a 72 65 66 72 est.only.(\"oneshot\")."...:refr
78b00 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 69 6f 6e 20 22 esh-suffixes.t...[:description."
78b20 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 74 6f 20 72 75 Provide.the.LLM.with.tools.to.ru
78b40 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 20 28 67 70 74 n.tasks.for.you"....["".....(gpt
78b60 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 20 20 20 28 67 el--infix-variable-scope).....(g
78b80 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 28 67 70 74 65 ptel--infix-use-tools).....(gpte
78ba0 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 29 0a 20 20 20 l--infix-confirm-tool-calls)....
78bc0 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 2d 72 65 73 75 .(gptel--infix-include-tool-resu
78be0 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 6e 66 69 72 6d lts)]....["".....("RET"."Confirm
78c00 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 6f 6f 6c 73 29 .selection"......(lambda.(tools)
78c20 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 6f 75 74 20 74 ........;;.We.don't.care.about.t
78c40 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 72 65 66 69 78 he.transient.args.of.this.prefix
78c60 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 65 20 73 74 61 .at.all,.since........;;.the.sta
78c80 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 75 67 68 20 69 te.is.managed.entirely.through.i
78ca0 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 28 69 6e 74 65 ts.transient-scope:........(inte
78cc0 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 72 61 6e 73 69 ractive.(list.(plist-get.(transi
78ce0 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 6f 6c 73 29 29 ent-scope.'gptel-tools).:tools))
78d00 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 63 6f 70 65 0a )........(gptel--set-with-scope.
78d20 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 20 20 28 6d 61 ........'gptel-tools.........(ma
78d40 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 6e 61 6d 65 29 pcar.(lambda.(category-and-name)
78d60 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 74 65 64 2d 65 ...................(map-nested-e
78d80 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 6f 72 79 2d 61 lt.gptel--known-tools.category-a
78da0 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 63 6c 2d 64 65 nd-name)).................(cl-de
78dc0 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 0a 20 20 20 20 lete-if-not.#'consp.tools)).....
78de0 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 29 29 0a ....gptel--set-buffer-locally)).
78e00 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 64 6f 2d 72 65 .....:transient.transient--do-re
78e20 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 6e 73 69 65 6e turn).....("q"."Cancel".transien
78e40 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 61 6e 73 69 65 t-quit-one)]]...[[:class.transie
78e60 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 6c 61 79 20 6b nt-column.............;Display.k
78e80 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 63 68 69 6c 64 nown.categories.....:setup-child
78ea0 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 74 72 61 6e 73 ren.....(lambda.(_).......(trans
78ec0 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 27 67 70 74 65 ient-parse-suffixes........'gpte
78ee0 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 20 20 20 20 20 l-tools........(cl-loop.........
78f00 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 20 74 6f 6f 6c .;loop.through.gptel--known.tool
78f20 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 20 20 20 20 20 s.and.collect.categories........
78f40 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 74 29 20 69 6e .for.(category...tools-alist).in
78f60 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 20 77 69 74 68 .gptel--known-tools.........with
78f80 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 74 65 20 3f 71 .unused-keys.=.(nconc.(delete.?q
78fa0 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 20 20 20 20 20 .(number-sequence.?a.?z)).......
78fc0 20 20 20 20 20 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 ............................(num
78fe0 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 20 20 20 20 20 ber-sequence.?0.?9).............
79000 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 72 2d 73 65 ......................(number-se
79020 71 75 65 6e 63 65 20 3f 41 20 3f 5a 29 29 0a 20 20 20 20 20 20 20 20 66 6f 72 20 63 61 74 65 67 quence.?A.?Z)).........for.categ
79040 6f 72 79 2d 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 ory-key.=.(seq-find.(lambda.(k).
79060 28 6d 65 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 (member.k.unused-keys)).........
79080 20 20 20 20 20 20 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
790a0 72 69 6e 67 2d 72 65 6d 6f 76 65 2d 70 72 65 66 69 78 20 22 6d 63 70 2d 22 20 63 61 74 65 67 6f ring-remove-prefix."mcp-".catego
790c0 72 79 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ry).............................
790e0 20 20 20 20 20 20 20 20 20 28 73 65 71 2d 66 69 72 73 74 20 75 6e 75 73 65 64 2d 6b 65 79 73 29 .........(seq-first.unused-keys)
79100 29 0a 20 20 20 20 20 20 20 20 64 6f 20 28 73 65 74 71 20 75 6e 75 73 65 64 2d 6b 65 79 73 20 28 ).........do.(setq.unused-keys.(
79120 64 65 6c 65 74 65 20 63 61 74 65 67 6f 72 79 2d 6b 65 79 20 75 6e 75 73 65 64 2d 6b 65 79 73 29 delete.category-key.unused-keys)
79140 29 0a 20 20 20 20 20 20 20 20 63 6f 6c 6c 65 63 74 20 28 6c 69 73 74 20 28 6b 65 79 2d 64 65 73 ).........collect.(list.(key-des
79160 63 72 69 70 74 69 6f 6e 20 28 6c 69 73 74 20 63 61 74 65 67 6f 72 79 2d 6b 65 79 29 29 0a 20 20 cription.(list.category-key))...
79180 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 72 6f ....................(concat.(pro
791a0 70 65 72 74 69 7a 65 20 63 61 74 65 67 6f 72 79 20 27 66 61 63 65 20 27 74 72 61 6e 73 69 65 6e pertize.category.'face.'transien
791c0 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 20 20 20 20 20 20 t-heading)......................
791e0 20 20 20 20 20 20 20 20 20 28 6d 61 6b 65 2d 73 74 72 69 6e 67 20 28 6d 61 78 20 28 2d 20 31 34 .........(make-string.(max.(-.14
79200 20 28 6c 65 6e 67 74 68 20 63 61 74 65 67 6f 72 79 29 29 20 30 29 20 3f 20 29 29 0a 20 20 20 20 .(length.category)).0).?.)).....
79220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 68 61 72 2d 74 6f 2d 73 74 72 69 6e ..................(char-to-strin
79240 67 20 63 61 74 65 67 6f 72 79 2d 6b 65 79 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 g.category-key).................
79260 20 20 20 20 20 20 3a 66 6f 72 6d 61 74 20 22 20 25 6b 20 25 64 20 25 76 22 0a 20 20 20 20 20 20 ......:format.".%k.%d.%v".......
79280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 6c 61 73 73 20 27 67 70 74 65 6c 2d 2d 73 ................:class.'gptel--s
792a0 77 69 74 63 68 2d 63 61 74 65 67 6f 72 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 witch-category..................
792c0 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)........
792e0 20 69 6e 74 6f 20 63 61 74 65 67 6f 72 69 65 73 0a 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 .into.categories.........finally
79300 20 64 6f 20 28 70 6c 69 73 74 2d 70 75 74 20 28 74 72 61 6e 73 69 65 6e 74 2d 73 63 6f 70 65 29 .do.(plist-put.(transient-scope)
79320 20 3a 6b 65 79 73 20 75 6e 75 73 65 64 2d 6b 65 79 73 29 0a 20 20 20 20 20 20 20 20 66 69 6e 61 .:keys.unused-keys).........fina
79340 6c 6c 79 20 72 65 74 75 72 6e 20 63 61 74 65 67 6f 72 69 65 73 29 29 29 5d 0a 20 20 20 5b 3a 63 lly.return.categories)))]....[:c
79360 6c 61 73 73 20 74 72 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 lass.transient-column...........
79380 3b 44 69 73 70 6c 61 79 20 6b 6e 6f 77 6e 20 74 6f 6f 6c 73 20 66 6f 72 20 73 65 6c 65 63 74 65 ;Display.known.tools.for.selecte
793a0 64 20 63 61 74 65 67 6f 72 79 0a 20 20 20 20 3a 73 65 74 75 70 2d 63 68 69 6c 64 72 65 6e 0a 20 d.category.....:setup-children..
793c0 20 20 20 28 6c 61 6d 62 64 61 20 28 5f 29 0a 20 20 20 20 20 20 28 74 72 61 6e 73 69 65 6e 74 2d ...(lambda.(_).......(transient-
793e0 70 61 72 73 65 2d 73 75 66 66 69 78 65 73 0a 20 20 20 20 20 20 20 27 67 70 74 65 6c 2d 74 6f 6f parse-suffixes........'gptel-too
79400 6c 73 0a 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 63 61 74 65 67 6f 72 79 20 ls........(when-let*.((category.
79420 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 63 61 (plist-get.(transient-scope).:ca
79440 74 65 67 6f 72 79 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 6f 6f tegory))....................(too
79460 6c 2d 6b 65 79 73 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 l-keys.(plist-get.(transient-sco
79480 70 65 29 20 3a 6b 65 79 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 20 20 pe).:keys)))..........(cl-loop..
794a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 66 6f 72 20 65 61 63 68 20 63 61 74 65 67 .................;for.each.categ
794c0 6f 72 79 2c 20 63 6f 6c 6c 65 63 74 20 74 6f 6f 6c 73 20 61 73 20 69 6e 66 69 78 65 73 0a 20 20 ory,.collect.tools.as.infixes...
794e0 20 20 20 20 20 20 20 20 77 69 74 68 20 74 6f 6f 6c 73 2d 61 6c 69 73 74 20 3d 20 28 63 64 72 20 ........with.tools-alist.=.(cdr.
79500 28 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 (assoc.category.gptel--known-too
79520 6c 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 6e 61 6d 65 20 2e 20 74 6f 6f 6c 29 ls))...........for.(name...tool)
79540 20 69 6e 20 74 6f 6f 6c 73 2d 61 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 74 6f .in.tools-alist...........for.to
79560 6f 6c 2d 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 ol-key.=.(seq-find.(lambda.(k).(
79580 6d 65 6d 62 65 72 20 6b 20 74 6f 6f 6c 2d 6b 65 79 73 29 29 20 6e 61 6d 65 20 28 73 65 71 2d 66 member.k.tool-keys)).name.(seq-f
795a0 69 72 73 74 20 74 6f 6f 6c 2d 6b 65 79 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 64 6f 20 28 73 irst.tool-keys))...........do.(s
795c0 65 74 71 20 74 6f 6f 6c 2d 6b 65 79 73 20 28 64 65 6c 65 74 65 20 74 6f 6f 6c 2d 6b 65 79 20 74 etq.tool-keys.(delete.tool-key.t
795e0 6f 6f 6c 2d 6b 65 79 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 63 6f 6c 6c 65 63 74 20 20 20 20 ool-keys))...........collect....
79600 20 20 20 20 20 20 3b 45 61 63 68 20 6c 69 73 74 20 69 73 20 61 20 74 72 61 6e 73 69 65 6e 74 20 ......;Each.list.is.a.transient.
79620 69 6e 66 69 78 20 6f 66 20 74 79 70 65 20 67 70 74 65 6c 2d 2d 73 77 69 74 63 68 0a 20 20 20 20 infix.of.type.gptel--switch.....
79640 20 20 20 20 20 20 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 ......(list.(key-description.(li
79660 73 74 20 74 6f 6f 6c 2d 6b 65 79 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 st.tool-key)).................(c
79680 6f 6e 63 61 74 20 28 6d 61 6b 65 2d 73 74 72 69 6e 67 20 28 6d 61 78 20 28 2d 20 32 30 20 28 6c oncat.(make-string.(max.(-.20.(l
796a0 65 6e 67 74 68 20 6e 61 6d 65 29 29 20 30 29 20 3f 20 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 ength.name)).0).?.).............
796c0 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.........
796e0 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 28 22 20 28 67 70 .................(concat."(".(gp
79700 74 65 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 tel--describe-directive.........
79720 20 20 20 20 20 20 20 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
79740 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 20 28 2d 20 28 ptel-tool-description.tool).(-.(
79760 77 69 6e 64 6f 77 2d 77 69 64 74 68 29 20 34 30 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 window-width).40))..............
79780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 29 22 29 0a 20 20 20 20 20 20 20 ....................")")........
797a0 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 6f 77 29 ..................'face.'shadow)
797c0 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 74 6f 6f 6c 2d 6e 61 ).................(gptel-tool-na
797e0 6d 65 20 74 6f 6f 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 66 6f 72 6d 61 74 me.tool).................:format
79800 20 22 20 25 6b 20 25 76 20 25 64 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 69 6e .".%k.%v.%d".................:in
79820 69 74 2d 76 61 6c 75 65 20 23 27 67 70 74 65 6c 2d 2d 74 6f 6f 6c 73 2d 69 6e 69 74 2d 76 61 6c it-value.#'gptel--tools-init-val
79840 75 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 6c 61 73 73 20 27 67 70 74 65 6c ue.................:class.'gptel
79860 2d 2d 73 77 69 74 63 68 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 61 74 65 67 6f --switch.................:catego
79880 72 79 20 63 61 74 65 67 6f 72 79 29 0a 20 20 20 20 20 20 20 20 20 20 69 6e 74 6f 20 69 6e 66 69 ry.category)...........into.infi
798a0 78 65 73 2d 66 6f 72 2d 63 61 74 65 67 6f 72 79 0a 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c xes-for-category...........final
798c0 6c 79 20 72 65 74 75 72 6e 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 20 28 6c 69 73 74 20 ly.return...........(cons.(list.
798e0 3a 69 6e 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 28 6c 61 6d :info.......................(lam
79900 62 64 61 20 28 29 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 bda.().(concat..................
79920 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 70 6c 69 73 74 2d 67 ............(propertize.(plist-g
79940 65 74 20 28 74 72 61 6e 73 69 65 6e 74 2d 73 63 6f 70 65 29 20 3a 6b 65 79 29 0a 20 20 20 20 20 et.(transient-scope).:key)......
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 20 20 27 66 61 63 65 20 27 74 72 61 6e 73 69 65 6e 74 2d 6b 65 79 29 0a 20 20 20 20 20 20 ....'face.'transient-key).......
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 72 6f 70 65 72 74 69 .......................(properti
799c0 7a 65 20 22 20 74 6f 67 67 6c 65 20 61 6c 6c 22 20 27 66 61 63 65 20 27 74 72 61 6e 73 69 65 6e ze.".toggle.all".'face.'transien
799e0 74 2d 68 65 61 64 69 6e 67 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 t-heading)))....................
79a00 20 20 20 3a 66 6f 72 6d 61 74 20 22 20 25 64 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ...:format.".%d")...............
79a20 20 20 69 6e 66 69 78 65 73 2d 66 6f 72 2d 63 61 74 65 67 6f 72 79 29 29 29 29 29 5d 5d 0a 20 20 ..infixes-for-category)))))]]...
79a40 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 28 74 72 61 6e 73 69 65 6e 74 2d 73 65 74 75 70 (interactive)...(transient-setup
79a60 0a 20 20 20 27 67 70 74 65 6c 2d 74 6f 6f 6c 73 20 6e 69 6c 20 6e 69 6c 0a 20 20 20 3a 73 63 6f ....'gptel-tools.nil.nil....:sco
79a80 70 65 20 28 6c 69 73 74 20 3a 74 6f 6f 6c 73 20 28 6d 61 70 63 61 72 20 28 6c 61 6d 62 64 61 20 pe.(list.:tools.(mapcar.(lambda.
79aa0 28 74 6f 6f 6c 29 20 28 6c 69 73 74 20 28 67 70 74 65 6c 2d 74 6f 6f 6c 2d 63 61 74 65 67 6f 72 (tool).(list.(gptel-tool-categor
79ac0 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 20 20 20 20 y.tool).........................
79ae0 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 74 6f .......................(gptel-to
79b00 6f 6c 2d 6e 61 6d 65 20 74 6f 6f 6c 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ol-name.tool))).................
79b20 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 29 29 0a 0a ...............gptel-tools))))..
79b40 0c 0a 3b 3b 20 2a 20 54 72 61 6e 73 69 65 6e 74 20 49 6e 66 69 78 65 73 0a 0a 3b 3b 20 2a 2a 20 ..;;.*.Transient.Infixes..;;.**.
79b60 49 6e 66 69 78 65 73 20 66 6f 72 20 63 6f 6e 74 65 78 74 20 61 67 67 72 65 67 61 74 69 6f 6e 0a Infixes.for.context.aggregation.
79b80 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--
79ba0 69 6e 66 69 78 2d 75 73 65 2d 63 6f 6e 74 65 78 74 20 28 29 0a 20 20 22 44 65 73 63 72 69 62 65 infix-use-context.()..."Describe
79bc0 20 74 61 72 67 65 74 20 64 65 73 74 69 6e 61 74 69 6f 6e 20 66 6f 72 20 63 6f 6e 74 65 78 74 20 .target.destination.for.context.
79be0 69 6e 6a 65 63 74 69 6f 6e 2e 0a 0a 67 70 74 65 6c 20 77 69 6c 6c 20 69 6e 63 6c 75 64 65 20 77 injection...gptel.will.include.w
79c00 69 74 68 20 74 68 65 20 4c 4c 4d 20 72 65 71 75 65 73 74 20 61 6e 79 20 61 64 64 69 74 69 6f 6e ith.the.LLM.request.any.addition
79c20 61 6c 20 63 6f 6e 74 65 78 74 0a 61 64 64 65 64 20 77 69 74 68 20 60 67 70 74 65 6c 2d 61 64 64 al.context.added.with.`gptel-add
79c40 27 2e 20 20 54 68 69 73 20 63 6f 6e 74 65 78 74 20 63 61 6e 20 62 65 20 69 67 6e 6f 72 65 64 2c '...This.context.can.be.ignored,
79c60 20 69 6e 63 6c 75 64 65 64 0a 77 69 74 68 20 74 68 65 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 .included.with.the.system.messag
79c80 65 20 6f 72 20 69 6e 63 6c 75 64 65 64 20 77 69 74 68 20 74 68 65 20 75 73 65 72 20 70 72 6f 6d e.or.included.with.the.user.prom
79ca0 70 74 2e 0a 0a 57 68 65 72 65 20 69 6e 20 74 68 65 20 72 65 71 75 65 73 74 20 74 68 69 73 20 63 pt...Where.in.the.request.this.c
79cc0 6f 6e 74 65 78 74 20 69 73 20 69 6e 63 6c 75 64 65 64 20 64 65 70 65 6e 64 73 20 6f 6e 20 74 68 ontext.is.included.depends.on.th
79ce0 65 0a 76 61 6c 75 65 20 6f 66 20 60 67 70 74 65 6c 2d 75 73 65 2d 63 6f 6e 74 65 78 74 27 2c 20 e.value.of.`gptel-use-context',.
79d00 73 65 74 20 66 72 6f 6d 20 68 65 72 65 2e 22 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 set.from.here."...:description."
79d20 49 6e 63 6c 75 64 65 20 63 6f 6e 74 65 78 74 22 0a 20 20 3a 63 6c 61 73 73 20 27 67 70 74 65 6c Include.context"...:class.'gptel
79d40 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
79d60 6c 2d 75 73 65 2d 63 6f 6e 74 65 78 74 0a 20 20 3a 66 6f 72 6d 61 74 20 22 20 25 6b 20 25 64 20 l-use-context...:format.".%k.%d.
79d80 25 76 22 0a 20 20 3a 73 65 74 2d 76 61 6c 75 65 20 23 27 67 70 74 65 6c 2d 2d 73 65 74 2d 77 69 %v"...:set-value.#'gptel--set-wi
79da0 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 4e 6f 22 0a 20 20 3a th-scope...:display-nil."No"...:
79dc0 64 69 73 70 6c 61 79 2d 6d 61 70 20 27 28 28 6e 69 6c 20 20 20 20 2e 20 22 4e 6f 22 29 0a 20 20 display-map.'((nil......"No")...
79de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 79 73 74 65 6d 20 2e 20 22 77 69 74 68 20 73 ...............(system..."with.s
79e00 79 73 74 65 6d 20 6d 65 73 73 61 67 65 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ystem.message").................
79e20 20 28 75 73 65 72 20 20 20 2e 20 22 77 69 74 68 20 75 73 65 72 20 70 72 6f 6d 70 74 22 29 29 0a .(user....."with.user.prompt")).
79e40 20 20 3a 6b 65 79 20 22 2d 69 22 0a 20 20 3a 72 65 61 64 65 72 20 28 6c 61 6d 62 64 61 20 28 70 ..:key."-i"...:reader.(lambda.(p
79e60 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 74 2a rompt.&rest._).............(let*
79e80 20 28 28 63 68 6f 69 63 65 73 20 27 28 28 22 4e 6f 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .((choices.'(("No"..............
79ea0 20 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 ......nil)......................
79ec0 20 20 20 20 20 20 20 20 20 28 22 77 69 74 68 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 22 20 .........("with.system.message".
79ee0 2e 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 20 20 20 20 20 20 ..system).......................
79f00 20 20 20 20 20 20 20 20 28 22 77 69 74 68 20 75 73 65 72 20 70 72 6f 6d 70 74 22 20 20 20 20 2e ........("with.user.prompt".....
79f20 20 75 73 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 28 64 65 73 .user)))....................(des
79f40 74 69 6e 61 74 69 6f 6e 20 28 63 6f 6d 70 6c 65 74 69 6e 67 2d 72 65 61 64 20 70 72 6f 6d 70 74 tination.(completing-read.prompt
79f60 20 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 .choices.nil.t)))...............
79f80 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)
79fa0 29 29 29 29 0a 0a 3b 3b 20 2a 2a 20 49 6e 66 69 78 65 73 20 66 6f 72 20 6d 6f 64 65 6c 20 70 61 ))))..;;.**.Infixes.for.model.pa
79fc0 72 61 6d 65 74 65 72 73 0a 0a 28 74 72 61 6e 73 69 65 6e 74 2d 64 65 66 69 6e 65 2d 69 6e 66 69 rameters..(transient-define-infi
79fe0 78 20 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 76 61 72 69 61 62 6c 65 2d 73 63 6f 70 65 20 28 29 x.gptel--infix-variable-scope.()
7a000 0a 20 20 22 53 65 74 20 67 70 74 65 6c 27 73 20 6d 6f 64 65 6c 20 70 61 72 61 6d 65 74 65 72 73 ..."Set.gptel's.model.parameters
7a020 20 61 6e 64 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 20 69 6e 20 74 68 69 73 20 62 75 66 66 .and.system.message.in.this.buff
7a040 65 72 20 6f 72 20 67 6c 6f 62 61 6c 6c 79 2e 22 0a 20 20 3a 61 72 67 75 6d 65 6e 74 20 22 73 63 er.or.globally."...:argument."sc
7a060 6f 70 65 22 0a 20 20 3a 76 61 72 69 61 62 6c 65 20 27 67 70 74 65 6c 2d 2d 73 65 74 2d 62 75 66 ope"...:variable.'gptel--set-buf
7a080 66 65 72 2d 6c 6f 63 61 6c 6c 79 0a 20 20 3a 63 6c 61 73 73 20 27 67 70 74 65 6c 2d 2d 73 63 6f fer-locally...:class.'gptel--sco
7a0a0 70 65 0a 20 20 3a 66 6f 72 6d 61 74 20 22 20 20 25 6b 20 25 64 20 25 76 22 0a 20 20 3a 6b 65 79 pe...:format."..%k.%d.%v"...:key
7a0c0 20 22 3d 22 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 28 70 72 6f 70 65 72 74 69 7a 65 20 ."="...:description.(propertize.
7a0e0 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 69 6e 61 63 74 69 76 "Scope".'face.'transient-inactiv
7a100 65 2d 61 72 67 75 6d 65 6e 74 29 29 0a 0a 28 74 72 61 6e 73 69 65 6e 74 2d 64 65 66 69 6e 65 2d e-argument))..(transient-define-
7a120 69 6e 66 69 78 20 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 6e 75 6d 2d 6d 65 73 73 61 67 65 73 2d infix.gptel--infix-num-messages-
7a140 74 6f 2d 73 65 6e 64 20 28 29 0a 20 20 22 4e 75 6d 62 65 72 20 6f 66 20 72 65 63 65 6e 74 20 6d to-send.()..."Number.of.recent.m
7a160 65 73 73 61 67 65 73 20 74 6f 20 73 65 6e 64 20 77 69 74 68 20 65 61 63 68 20 65 78 63 68 61 6e essages.to.send.with.each.exchan
7a180 67 65 2e 0a 0a 42 79 20 64 65 66 61 75 6c 74 2c 20 74 68 65 20 66 75 6c 6c 20 63 6f 6e 76 65 72 ge...By.default,.the.full.conver
7a1a0 73 61 74 69 6f 6e 20 68 69 73 74 6f 72 79 20 69 73 20 73 65 6e 74 20 77 69 74 68 20 65 76 65 72 sation.history.is.sent.with.ever
7a1c0 79 20 6e 65 77 0a 70 72 6f 6d 70 74 2e 20 54 68 69 73 20 72 65 74 61 69 6e 73 20 74 68 65 20 66 y.new.prompt..This.retains.the.f
7a1e0 75 6c 6c 20 63 6f 6e 74 65 78 74 20 6f 66 20 74 68 65 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 2c ull.context.of.the.conversation,
7a200 20 62 75 74 0a 63 61 6e 20 62 65 20 65 78 70 65 6e 73 69 76 65 20 69 6e 20 74 6f 6b 65 6e 20 73 .but.can.be.expensive.in.token.s
7a220 69 7a 65 2e 20 53 65 74 20 68 6f 77 20 6d 61 6e 79 20 72 65 63 65 6e 74 20 6d 65 73 73 61 67 65 ize..Set.how.many.recent.message
7a240 73 20 74 6f 0a 69 6e 63 6c 75 64 65 2e 22 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 70 s.to.include."...:description."p
7a260 72 65 76 69 6f 75 73 20 72 65 73 70 6f 6e 73 65 73 22 0a 20 20 3a 63 6c 61 73 73 20 27 67 70 74 revious.responses"...:class.'gpt
7a280 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 70 el-lisp-variable...:variable.'gp
7a2a0 74 65 6c 2d 2d 6e 75 6d 2d 6d 65 73 73 61 67 65 73 2d 74 6f 2d 73 65 6e 64 0a 20 20 3a 73 65 74 tel--num-messages-to-send...:set
7a2c0 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..
7a2e0 20 3a 64 69 73 70 6c 61 79 2d 6e 69 6c 20 27 61 6c 6c 0a 20 20 3a 66 6f 72 6d 61 74 20 22 20 25 .:display-nil.'all...:format.".%
7a300 6b 20 25 76 20 25 64 22 0a 20 20 3a 6b 65 79 20 22 2d 6e 22 0a 20 20 3a 70 72 6f 6d 70 74 20 22 k.%v.%d"...:key."-n"...:prompt."
7a320 4e 75 6d 62 65 72 20 6f 66 20 70 61 73 74 20 6d 65 73 73 61 67 65 73 20 74 6f 20 69 6e 63 6c 75 Number.of.past.messages.to.inclu
7a340 64 65 20 66 6f 72 20 63 6f 6e 74 65 78 74 20 28 6c 65 61 76 65 20 65 6d 70 74 79 20 66 6f 72 20 de.for.context.(leave.empty.for.
7a360 61 6c 6c 29 3a 20 22 0a 20 20 3a 72 65 61 64 65 72 20 27 67 70 74 65 6c 2d 2d 74 72 61 6e 73 69 all):."...:reader.'gptel--transi
7a380 65 6e 74 2d 72 65 61 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 ent-read-number)..(transient-def
7a3a0 69 6e 65 2d 69 6e 66 69 78 20 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 6d 61 78 2d 74 6f 6b 65 6e ine-infix.gptel--infix-max-token
7a3c0 73 20 28 29 0a 20 20 22 4d 61 78 20 74 6f 6b 65 6e 73 20 70 65 72 20 72 65 73 70 6f 6e 73 65 2e s.()..."Max.tokens.per.response.
7a3e0 0a 0a 54 68 69 73 20 69 73 20 72 6f 75 67 68 6c 79 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 ..This.is.roughly.the.number.of.
7a400 77 6f 72 64 73 20 69 6e 20 74 68 65 20 72 65 73 70 6f 6e 73 65 2e 20 31 30 30 2d 33 30 30 20 69 words.in.the.response..100-300.i
7a420 73 20 61 0a 72 65 61 73 6f 6e 61 62 6c 65 20 72 61 6e 67 65 20 66 6f 72 20 73 68 6f 72 74 20 61 s.a.reasonable.range.for.short.a
7a440 6e 73 77 65 72 73 2c 20 34 30 30 20 6f 72 20 6d 6f 72 65 20 66 6f 72 20 6c 6f 6e 67 65 72 0a 72 nswers,.400.or.more.for.longer.r
7a460 65 73 70 6f 6e 73 65 73 2e 22 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 52 65 73 70 6f esponses."...:description."Respo
7a480 6e 73 65 20 6c 65 6e 67 74 68 20 28 74 6f 6b 65 6e 73 29 22 0a 20 20 3a 63 6c 61 73 73 20 27 67 nse.length.(tokens)"...:class.'g
7a4a0 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 27 ptel-lisp-variable...:variable.'
7a4c0 67 70 74 65 6c 2d 6d 61 78 2d 74 6f 6b 65 6e 73 0a 20 20 3a 73 65 74 2d 76 61 6c 75 65 20 23 27 gptel-max-tokens...:set-value.#'
7a4e0 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 6c 61 79 gptel--set-with-scope...:display
7a500 2d 6e 69 6c 20 27 61 75 74 6f 0a 20 20 3a 6b 65 79 20 22 2d 63 22 0a 20 20 3a 70 72 6f 6d 70 74 -nil.'auto...:key."-c"...:prompt
7a520 20 22 52 65 73 70 6f 6e 73 65 20 6c 65 6e 67 74 68 20 69 6e 20 74 6f 6b 65 6e 73 20 28 6c 65 61 ."Response.length.in.tokens.(lea
7a540 76 65 20 65 6d 70 74 79 3a 20 64 65 66 61 75 6c 74 2c 20 38 30 2d 32 30 30 3a 20 73 68 6f 72 74 ve.empty:.default,.80-200:.short
7a560 2c 20 32 30 30 2d 35 30 30 3a 20 6c 6f 6e 67 29 3a 20 22 0a 20 20 3a 72 65 61 64 65 72 20 27 67 ,.200-500:.long):."...:reader.'g
7a580 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
7a5a0 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
7a5c0 69 78 2d 70 72 6f 76 69 64 65 72 20 28 29 0a 20 20 22 41 49 20 50 72 6f 76 69 64 65 72 20 66 6f ix-provider.()..."AI.Provider.fo
7a5e0 72 20 43 68 61 74 2e 22 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 4d 6f 64 65 6c 22 0a r.Chat."...:description."Model".
7a600 20 20 3a 63 6c 61 73 73 20 27 67 70 74 65 6c 2d 70 72 6f 76 69 64 65 72 2d 76 61 72 69 61 62 6c ..:class.'gptel-provider-variabl
7a620 65 0a 20 20 3a 70 72 6f 6d 70 74 20 22 4d 6f 64 65 6c 3a 20 22 0a 20 20 3a 76 61 72 69 61 62 6c e...:prompt."Model:."...:variabl
7a640 65 20 27 67 70 74 65 6c 2d 6d 6f 64 65 6c 0a 20 20 3a 73 65 74 2d 76 61 6c 75 65 20 23 27 67 70 e.'gptel-model...:set-value.#'gp
7a660 74 65 6c 2d 2d 73 65 74 2d 77 69 74 68 2d 73 63 6f 70 65 0a 20 20 3a 62 61 63 6b 65 6e 64 20 27 tel--set-with-scope...:backend.'
7a680 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 0a 20 20 3a 6b 65 79 20 22 2d 6d 22 0a 20 20 3a 72 65 61 gptel-backend...:key."-m"...:rea
7a6a0 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._)....
7a6c0 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 66 .........(cl-loop..............f
7a6e0 6f 72 20 28 6e 61 6d 65 20 2e 20 62 61 63 6b 65 6e 64 29 20 69 6e 20 67 70 74 65 6c 2d 2d 6b 6e or.(name...backend).in.gptel--kn
7a700 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 6e 63 6f 6e 63 20 own-backends..............nconc.
7a720 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 6d 6f 64 65 6c 20 69 6e 20 28 67 70 74 65 6c 2d 62 61 63 (cl-loop.for.model.in.(gptel-bac
7a740 6b 65 6e 64 2d 6d 6f 64 65 6c 73 20 62 61 63 6b 65 6e 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 kend-models.backend)............
7a760 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 28 .................collect.(list.(
7a780 63 6f 6e 63 61 74 20 6e 61 6d 65 20 22 3a 22 20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 6e 61 concat.name.":".(gptel--model-na
7a7a0 6d 65 20 6d 6f 64 65 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 me.model))......................
7a7c0 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 20 6d 6f 64 .....................backend.mod
7a7e0 65 6c 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 6f 20 6d 6f 64 65 6c 73 2d 61 6c el))..............into.models-al
7a800 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 77 69 74 68 20 63 6f 6d 70 6c 65 74 69 6f 6e ist..............with.completion
7a820 2d 65 78 74 72 61 2d 70 72 6f 70 65 72 74 69 65 73 20 3d 0a 20 20 20 20 20 20 20 20 20 20 20 20 -extra-properties.=.............
7a840 20 60 28 3a 61 6e 6e 6f 74 61 74 69 6f 6e 2d 66 75 6e 63 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 .`(:annotation-function.........
7a860 20 20 20 20 20 20 20 2c 28 6c 61 6d 62 64 61 20 28 63 6f 6d 70 29 0a 09 09 20 20 28 6c 65 74 2a .......,(lambda.(comp).....(let*
7a880 20 28 28 6d 6f 64 65 6c 20 28 6e 74 68 20 32 20 28 61 73 73 6f 63 20 63 6f 6d 70 20 6d 6f 64 65 .((model.(nth.2.(assoc.comp.mode
7a8a0 6c 73 2d 61 6c 69 73 74 29 29 29 0a 09 09 09 20 28 64 65 73 63 20 28 67 65 74 20 6d 6f 64 65 6c ls-alist))).....(desc.(get.model
7a8c0 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 29 29 0a 09 09 09 20 28 63 61 70 73 20 28 67 65 74 20 6d .:description)).....(caps.(get.m
7a8e0 6f 64 65 6c 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 29 29 0a 09 09 09 20 28 63 6f 6e 74 65 78 odel.:capabilities)).....(contex
7a900 74 20 28 67 65 74 20 6d 6f 64 65 6c 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 29 29 0a 09 t.(get.model.:context-window))..
7a920 09 09 20 28 69 6e 70 75 74 2d 63 6f 73 74 20 28 67 65 74 20 6d 6f 64 65 6c 20 3a 69 6e 70 75 74 ...(input-cost.(get.model.:input
7a940 2d 63 6f 73 74 29 29 0a 09 09 09 20 28 6f 75 74 70 75 74 2d 63 6f 73 74 20 28 67 65 74 20 6d 6f -cost)).....(output-cost.(get.mo
7a960 64 65 6c 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 29 29 0a 09 09 09 20 28 63 75 74 6f 66 66 20 28 del.:output-cost)).....(cutoff.(
7a980 67 65 74 20 6d 6f 64 65 6c 20 3a 63 75 74 6f 66 66 2d 64 61 74 65 29 29 29 0a 09 09 20 20 20 20 get.model.:cutoff-date))).......
7a9a0 28 77 68 65 6e 20 28 6f 72 20 64 65 73 63 20 63 61 70 73 20 63 6f 6e 74 65 78 74 20 69 6e 70 75 (when.(or.desc.caps.context.inpu
7a9c0 74 2d 63 6f 73 74 20 6f 75 74 70 75 74 2d 63 6f 73 74 20 63 75 74 6f 66 66 29 0a 09 09 20 20 20 t-cost.output-cost.cutoff)......
7a9e0 20 20 20 28 63 6f 6e 63 61 74 0a 09 09 20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 ...(concat..........(propertize.
7aa00 22 20 22 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 34 ".".'display.`(space.:align-to.4
7aa20 30 29 29 0a 09 09 20 20 20 20 20 20 20 28 77 68 65 6e 20 64 65 73 63 20 28 74 72 75 6e 63 61 74 0))..........(when.desc.(truncat
7aa40 65 2d 73 74 72 69 6e 67 2d 74 6f 2d 77 69 64 74 68 20 64 65 73 63 20 37 30 20 6e 69 6c 20 3f 20 e-string-to-width.desc.70.nil.?.
7aa60 74 20 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 t.t))..........".".(propertize."
7aa80 20 22 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 31 .".'display.`(space.:align-to.11
7aaa0 32 29 29 0a 09 09 20 20 20 20 20 20 20 28 77 68 65 6e 20 63 61 70 73 20 28 74 72 75 6e 63 61 74 2))..........(when.caps.(truncat
7aac0 65 2d 73 74 72 69 6e 67 2d 74 6f 2d 77 69 64 74 68 20 28 70 72 69 6e 31 2d 74 6f 2d 73 74 72 69 e-string-to-width.(prin1-to-stri
7aae0 6e 67 20 63 61 70 73 29 20 32 31 20 6e 69 6c 20 3f 20 74 20 74 29 29 0a 09 09 20 20 20 20 20 20 ng.caps).21.nil.?.t.t)).........
7ab00 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 60 28 .".".(propertize.".".'display.`(
7ab20 73 70 61 63 65 20 3a 61 6c 69 67 6e 2d 74 6f 20 31 33 34 29 29 0a 09 09 20 20 20 20 20 20 20 28 space.:align-to.134))..........(
7ab40 77 68 65 6e 20 63 6f 6e 74 65 78 74 20 28 66 6f 72 6d 61 74 20 22 25 35 64 6b 22 20 63 6f 6e 74 when.context.(format."%5dk".cont
7ab60 65 78 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 ext))..........".".(propertize."
7ab80 20 22 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 34 .".'display.`(space.:align-to.14
7aba0 32 29 29 0a 09 09 20 20 20 20 20 20 20 28 77 68 65 6e 20 69 6e 70 75 74 2d 63 6f 73 74 20 28 66 2))..........(when.input-cost.(f
7abc0 6f 72 6d 61 74 20 22 24 25 35 2e 32 66 20 69 6e 22 20 69 6e 70 75 74 2d 63 6f 73 74 29 29 0a 09 ormat."$%5.2f.in".input-cost))..
7abe0 09 20 20 20 20 20 20 20 28 69 66 20 28 61 6e 64 20 69 6e 70 75 74 2d 63 6f 73 74 20 6f 75 74 70 ........(if.(and.input-cost.outp
7ac00 75 74 2d 63 6f 73 74 29 20 22 2c 22 20 22 20 22 29 0a 09 09 20 20 20 20 20 20 20 22 20 22 20 28 ut-cost).",".".")..........".".(
7ac20 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.
7ac40 3a 61 6c 69 67 6e 2d 74 6f 20 31 35 33 29 29 0a 09 09 20 20 20 20 20 20 20 28 77 68 65 6e 20 6f :align-to.153))..........(when.o
7ac60 75 74 70 75 74 2d 63 6f 73 74 20 28 66 6f 72 6d 61 74 20 22 24 25 36 2e 32 66 20 6f 75 74 22 20 utput-cost.(format."$%6.2f.out".
7ac80 6f 75 74 70 75 74 2d 63 6f 73 74 29 29 0a 09 09 20 20 20 20 20 20 20 22 20 22 20 28 70 72 6f 70 output-cost))..........".".(prop
7aca0 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 3a 61 6c 69 ertize.".".'display.`(space.:ali
7acc0 67 6e 2d 74 6f 20 31 36 36 29 29 0a 09 09 20 20 20 20 20 20 20 63 75 74 6f 66 66 29 29 29 29 29 gn-to.166))..........cutoff)))))
7ace0 0a 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 0a 20 20 20 ..............finally.return....
7ad00 20 20 20 20 20 20 20 20 20 20 28 63 64 72 20 28 61 73 73 6f 63 20 28 63 6f 6d 70 6c 65 74 69 6e ..........(cdr.(assoc.(completin
7ad20 67 2d 72 65 61 64 20 70 72 6f 6d 70 74 20 6d 6f 64 65 6c 73 2d 61 6c 69 73 74 20 6e 69 6c 20 74 g-read.prompt.models-alist.nil.t
7ad40 20 6e 69 6c 20 6e 69 6c 0a 09 09 09 09 09 20 20 28 63 6f 6e 63 61 74 20 28 67 70 74 65 6c 2d 62 .nil.nil........(concat.(gptel-b
7ad60 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 22 3a 22 0a 09 ackend-name.gptel-backend).":"..
7ad80 09 09 09 09 09 20 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 .......(gptel--model-name.gptel-
7ada0 6d 6f 64 65 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 model)))........................
7adc0 20 20 6d 6f 64 65 6c 73 2d 61 6c 69 73 74 29 29 29 29 29 0a 0a 28 74 72 61 6e 73 69 65 6e 74 2d ..models-alist)))))..(transient-
7ade0 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 65 6d 70 65 72 define-infix.gptel--infix-temper
7ae00 61 74 75 72 65 20 28 29 0a 20 20 22 54 65 6d 70 65 72 61 74 75 72 65 20 6f 66 20 72 65 71 75 65 ature.()..."Temperature.of.reque
7ae20 73 74 2e 22 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 54 65 6d 70 65 72 61 74 75 72 65 st."...:description."Temperature
7ae40 20 28 30 20 2d 20 32 2e 30 29 22 0a 20 20 3a 64 69 73 70 6c 61 79 2d 6e 69 6c 20 22 64 65 66 61 .(0.-.2.0)"...:display-nil."defa
7ae60 75 6c 74 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 61 62 ult"...:class.'gptel-lisp-variab
7ae80 6c 65 0a 20 20 3a 76 61 72 69 61 62 6c 65 20 27 67 70 74 65 6c 2d 74 65 6d 70 65 72 61 74 75 72 le...:variable.'gptel-temperatur
7aea0 65 0a 20 20 3a 73 65 74 2d 76 61 6c 75 65 20 23 27 67 70 74 65 6c 2d 2d 73 65 74 2d 77 69 74 68 e...:set-value.#'gptel--set-with
7aec0 2d 73 63 6f 70 65 0a 20 20 3a 6b 65 79 20 22 2d 54 22 0a 20 20 3a 70 72 6f 6d 70 74 20 22 54 65 -scope...:key."-T"...:prompt."Te
7aee0 6d 70 65 72 61 74 75 72 65 20 63 6f 6e 74 72 6f 6c 73 20 74 68 65 20 72 65 73 70 6f 6e 73 65 20 mperature.controls.the.response.
7af00 72 61 6e 64 6f 6d 6e 65 73 73 20 28 30 2e 30 2d 32 2e 30 2c 20 6c 65 61 76 65 20 65 6d 70 74 79 randomness.(0.0-2.0,.leave.empty
7af20 20 66 6f 72 20 41 50 49 20 64 65 66 61 75 6c 74 29 3a 20 22 0a 20 20 3a 72 65 61 64 65 72 20 27 .for.API.default):."...:reader.'
7af40 67 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 gptel--transient-read-number)..(
7af60 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 69 6e transient-define-infix.gptel--in
7af80 66 69 78 2d 74 72 61 63 6b 2d 72 65 73 70 6f 6e 73 65 20 28 29 0a 20 20 22 44 69 73 74 69 6e 67 fix-track-response.()..."Disting
7afa0 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 6e 64 20 4c uish.between.user.messages.and.L
7afc0 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 20 61 20 70 LM.responses...When.creating.a.p
7afe0 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 74 65 6c 20 rompt.to.send.to.the.LLM,.gptel.
7b000 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 6e 74 65 72 distinguishes.between.text.enter
7b020 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 72 65 73 70 ed.by.the.user.and.past.LLM.resp
7b040 6f 6e 73 65 73 2e 20 20 54 68 69 73 20 69 73 0a 72 65 71 75 69 72 65 64 20 66 6f 72 20 6d 75 6c onses...This.is.required.for.mul
7b060 74 69 2d 74 75 72 6e 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 73 2c 20 61 6e 64 20 69 73 20 61 6c ti-turn.conversations,.and.is.al
7b080 77 61 79 73 20 74 68 65 20 63 61 73 65 20 69 6e 0a 64 65 64 69 63 61 74 65 64 20 63 68 61 74 20 ways.the.case.in.dedicated.chat.
7b0a0 62 75 66 66 65 72 73 20 28 69 6e 20 60 67 70 74 65 6c 2d 6d 6f 64 65 27 29 2e 0a 0a 49 6e 20 72 buffers.(in.`gptel-mode')...In.r
7b0c0 65 67 75 6c 61 72 20 62 75 66 66 65 72 73 2c 20 79 6f 75 20 63 61 6e 20 74 6f 67 67 6c 65 20 74 egular.buffers,.you.can.toggle.t
7b0e0 68 69 73 20 62 65 68 61 76 69 6f 72 20 68 65 72 65 20 6f 72 20 62 79 0a 63 75 73 74 6f 6d 69 7a his.behavior.here.or.by.customiz
7b100 69 6e 67 20 60 67 70 74 65 6c 2d 74 72 61 63 6b 2d 72 65 73 70 6f 6e 73 65 27 2e 20 20 57 68 65 ing.`gptel-track-response'...Whe
7b120 6e 20 72 65 73 70 6f 6e 73 65 20 74 72 61 63 6b 69 6e 67 20 69 73 0a 74 75 72 6e 65 64 20 6f 66 n.response.tracking.is.turned.of
7b140 66 2c 20 61 6c 6c 20 74 65 78 74 20 77 69 6c 6c 20 62 65 20 61 73 73 69 67 6e 65 64 20 74 68 65 f,.all.text.will.be.assigned.the
7b160 20 5c 22 75 73 65 72 5c 22 20 72 6f 6c 65 20 77 68 65 6e 0a 71 75 65 72 79 69 6e 67 20 74 68 65 .\"user\".role.when.querying.the
7b180 20 4c 4c 4d 2e 22 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 54 72 61 63 6b 20 4c 4c 4d .LLM."...:description."Track.LLM
7b1a0 20 72 65 73 70 6f 6e 73 65 73 22 0a 20 20 3a 63 6c 61 73 73 20 27 67 70 74 65 6c 2d 2d 73 77 69 .responses"...:class.'gptel--swi
7b1c0 74 63 68 65 73 0a 20 20 3a 76 61 72 69 61 62 6c 65 20 27 67 70 74 65 6c 2d 74 72 61 63 6b 2d 72 tches...:variable.'gptel-track-r
7b1e0 65 73 70 6f 6e 73 65 0a 20 20 3a 73 65 74 2d 76 61 6c 75 65 20 23 27 67 70 74 65 6c 2d 2d 73 65 esponse...:set-value.#'gptel--se
7b200 74 2d 77 69 74 68 2d 73 63 6f 70 65 0a 20 20 3a 64 69 73 70 6c 61 79 2d 69 66 2d 74 72 75 65 20 t-with-scope...:display-if-true.
7b220 22 59 65 73 22 0a 20 20 3a 64 69 73 70 6c 61 79 2d 69 66 2d 66 61 6c 73 65 20 22 4e 6f 22 0a 20 "Yes"...:display-if-false."No"..
7b240 20 3a 6b 65 79 20 22 2d 52 22 29 0a 0a 28 74 72 61 6e 73 69 65 6e 74 2d 64 65 66 69 6e 65 2d 69 .:key."-R")..(transient-define-i
7b260 6e 66 69 78 20 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 74 72 61 63 6b 2d 6d 65 64 69 61 20 28 29 nfix.gptel--infix-track-media.()
7b280 0a 20 20 22 53 65 6e 64 20 6d 65 64 69 61 20 66 72 6f 6d 20 5c 22 73 74 61 6e 64 61 6c 6f 6e 65 ..."Send.media.from.\"standalone
7b2a0 5c 22 20 6c 69 6e 6b 73 20 69 6e 20 74 68 65 20 70 72 6f 6d 70 74 2e 0a 0a 57 68 65 6e 20 74 68 \".links.in.the.prompt...When.th
7b2c0 65 20 61 63 74 69 76 65 20 60 67 70 74 65 6c 2d 6d 6f 64 65 6c 27 20 73 75 70 70 6f 72 74 73 20 e.active.`gptel-model'.supports.
7b2e0 69 74 2c 20 67 70 74 65 6c 20 63 61 6e 20 73 65 6e 64 20 69 6d 61 67 65 73 0a 6f 72 20 6f 74 68 it,.gptel.can.send.images.or.oth
7b300 65 72 20 6d 65 64 69 61 20 66 72 6f 6d 20 6c 69 6e 6b 73 20 69 6e 20 74 68 65 20 62 75 66 66 65 er.media.from.links.in.the.buffe
7b320 72 20 74 6f 20 74 68 65 20 4c 4c 4d 2e 20 20 4f 6e 6c 79 0a 5c 22 73 74 61 6e 64 61 6c 6f 6e 65 r.to.the.LLM...Only.\"standalone
7b340 5c 22 20 6c 69 6e 6b 73 20 61 72 65 20 63 6f 6e 73 69 64 65 72 65 64 3a 20 74 68 65 73 65 20 61 \".links.are.considered:.these.a
7b360 72 65 20 6c 69 6e 6b 73 20 6f 6e 20 74 68 65 69 72 20 6f 77 6e 0a 6c 69 6e 65 20 77 69 74 68 20 re.links.on.their.own.line.with.
7b380 6e 6f 20 73 75 72 72 6f 75 6e 64 69 6e 67 20 74 65 78 74 2e 0a 0a 57 68 61 74 20 6c 69 6e 6b 20 no.surrounding.text...What.link.
7b3a0 74 79 70 65 73 20 61 72 65 20 73 65 6e 74 20 64 65 70 65 6e 64 73 20 6f 6e 20 74 68 65 20 6d 69 types.are.sent.depends.on.the.mi
7b3c0 6d 65 2d 74 79 70 65 73 20 74 68 65 20 6d 6f 64 65 6c 0a 73 75 70 70 6f 72 74 73 2e 20 20 53 65 me-types.the.model.supports...Se
7b3e0 65 20 60 67 70 74 65 6c 2d 74 72 61 63 6b 2d 6d 65 64 69 61 27 20 66 6f 72 20 6d 6f 72 65 20 69 e.`gptel-track-media'.for.more.i
7b400 6e 66 6f 72 6d 61 74 69 6f 6e 2e 22 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 53 65 6e nformation."...:description."Sen
7b420 64 20 6d 65 64 69 61 20 66 72 6f 6d 20 6c 69 6e 6b 73 22 0a 20 20 3a 63 6c 61 73 73 20 27 67 70 d.media.from.links"...:class.'gp
7b440 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 70 74 65 6c tel--switches...:variable.'gptel
7b460 2d 74 72 61 63 6b 2d 6d 65 64 69 61 0a 20 20 3a 73 65 74 2d 76 61 6c 75 65 20 23 27 67 70 74 65 -track-media...:set-value.#'gpte
7b480 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 69 66 2d l--set-with-scope...:display-if-
7b4a0 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 66 61 6c 73 65 20 22 true."Yes"...:display-if-false."
7b4c0 4e 6f 22 0a 20 20 3a 6b 65 79 20 22 2d 49 22 29 0a 0a 3b 3b 20 2a 2a 20 49 6e 66 69 78 65 73 20 No"...:key."-I")..;;.**.Infixes.
7b4e0 66 6f 72 20 61 64 64 69 6e 67 20 61 6e 64 20 72 65 6d 6f 76 69 6e 67 20 63 6f 6e 74 65 78 74 0a for.adding.and.removing.context.
7b500 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 78 74 .(declare-function.gptel-context
7b520 2d 2d 61 74 2d 70 6f 69 6e 74 20 22 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 22 29 0a 28 64 65 63 --at-point."gptel-context").(dec
7b540 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 67 70 74 65 6c 2d 61 64 64 20 22 67 70 74 65 6c 2d 63 lare-function.gptel-add."gptel-c
7b560 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 20 67 70 74 65 6c ontext").(declare-function.gptel
7b580 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 22 67 70 74 65 6c -context-add-current-kill."gptel
7b5a0 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
7b5c0 66 66 69 78 20 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 ffix.gptel--infix-context-add-cu
7b5e0 72 72 65 6e 74 2d 6b 69 6c 6c 20 28 26 6f 70 74 69 6f 6e 61 6c 20 61 72 67 29 0a 20 20 22 41 64 rrent-kill.(&optional.arg)..."Ad
7b600 64 20 63 75 72 72 65 6e 74 20 6b 69 6c 6c 20 74 6f 20 67 70 74 65 6c 27 73 20 63 6f 6e 74 65 78 d.current.kill.to.gptel's.contex
7b620 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 64 6f 2d t."...:transient.'transient--do-
7b640 73 74 61 79 0a 20 20 3a 6b 65 79 20 22 43 2d 79 22 0a 20 20 3a 69 66 20 28 6c 61 6d 62 64 61 20 stay...:key."C-y"...:if.(lambda.
7b660 28 29 20 67 70 74 65 6c 2d 65 78 70 65 72 74 2d 63 6f 6d 6d 61 6e 64 73 29 0a 20 20 3a 64 65 73 ().gptel-expert-commands)...:des
7b680 63 72 69 70 74 69 6f 6e 0a 20 20 22 59 61 6e 6b 20 74 6f 20 63 6f 6e 74 65 78 74 22 0a 20 20 28 cription..."Yank.to.context"...(
7b6a0 69 6e 74 65 72 61 63 74 69 76 65 20 22 50 22 29 0a 20 20 28 67 70 74 65 6c 2d 63 6f 6e 74 65 78 interactive."P")...(gptel-contex
7b6c0 74 2d 61 64 64 2d 63 75 72 72 65 6e 74 2d 6b 69 6c 6c 20 61 72 67 29 0a 20 20 28 74 72 61 6e 73 t-add-current-kill.arg)...(trans
7b6e0 69 65 6e 74 2d 73 65 74 75 70 29 29 0a 0a 28 74 72 61 6e 73 69 65 6e 74 2d 64 65 66 69 6e 65 2d ient-setup))..(transient-define-
7b700 73 75 66 66 69 78 20 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 suffix.gptel--infix-context-add-
7b720 72 65 67 69 6f 6e 20 28 29 0a 20 20 22 41 64 64 20 63 75 72 72 65 6e 74 20 72 65 67 69 6f 6e 20 region.()..."Add.current.region.
7b740 74 6f 20 67 70 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 to.gptel's.context."...:transien
7b760 74 20 27 74 72 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 2d 72 t.'transient--do-stay...:key."-r
7b780 22 0a 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 65 67 69 "...:if.(lambda.().(or.(use-regi
7b7a0 6f 6e 2d 70 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 28 66 62 6f 75 on-p).................(and.(fbou
7b7c0 6e 64 70 20 27 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61 74 2d 70 6f 69 6e 74 29 0a 20 20 ndp.'gptel-context--at-point)...
7b7e0 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 65 78 ...................(gptel-contex
7b800 74 2d 2d 61 74 2d 70 6f 69 6e 74 29 29 29 29 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 0a 20 t--at-point))))...:description..
7b820 20 28 6c 61 6d 62 64 61 20 28 29 0a 20 20 20 20 28 69 66 20 28 61 6e 64 20 28 66 62 6f 75 6e 64 .(lambda.().....(if.(and.(fbound
7b840 70 20 27 67 70 74 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 p.'gptel-context--at-point).....
7b860 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 74 2d 70 6f 69 6e .........(gptel-context--at-poin
7b880 74 29 29 0a 20 20 20 20 20 20 20 20 22 52 65 6d 6f 76 65 20 63 6f 6e 74 65 78 74 20 61 74 20 70 t))........."Remove.context.at.p
7b8a0 6f 69 6e 74 22 0a 20 20 20 20 20 20 22 41 64 64 20 72 65 67 69 6f 6e 20 74 6f 20 63 6f 6e 74 65 oint"......."Add.region.to.conte
7b8c0 78 74 22 29 29 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 61 xt"))...(interactive)...(gptel-a
7b8e0 64 64 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 dd)...(transient-setup))..(trans
7b900 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-
7b920 63 6f 6e 74 65 78 74 2d 61 64 64 2d 62 75 66 66 65 72 20 28 29 0a 20 20 22 41 64 64 20 61 20 62 context-add-buffer.()..."Add.a.b
7b940 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 22 0a 20 20 3a 74 72 uffer.to.gptel's.context."...:tr
7b960 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 79 0a 20 20 3a 6b ansient.'transient--do-stay...:k
7b980 65 79 20 22 2d 62 22 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 41 64 64 20 61 20 62 75 ey."-b"...:description."Add.a.bu
7b9a0 66 66 65 72 20 74 6f 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 ffer.to.context"...(interactive)
7b9c0 0a 20 20 28 67 70 74 65 6c 2d 61 64 64 20 27 28 34 29 29 0a 20 20 28 74 72 61 6e 73 69 65 6e 74 ...(gptel-add.'(4))...(transient
7b9e0 2d 73 65 74 75 70 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 -setup))..(declare-function.gpte
7ba00 6c 2d 61 64 64 2d 66 69 6c 65 20 22 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 22 29 0a 28 64 65 63 l-add-file."gptel-context").(dec
7ba20 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 72 65 6d 6f lare-function.gptel-context-remo
7ba40 76 65 2d 61 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 ve-all."gptel-context")..(transi
7ba60 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 63 ent-define-suffix.gptel--infix-c
7ba80 6f 6e 74 65 78 74 2d 61 64 64 2d 66 69 6c 65 20 28 29 0a 20 20 22 41 64 64 20 61 20 66 69 6c 65 ontext-add-file.()..."Add.a.file
7baa0 20 74 6f 20 67 70 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 .to.gptel's.context."...:transie
7bac0 6e 74 20 27 74 72 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 2d nt.'transient--do-stay...:key."-
7bae0 66 22 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 41 64 64 20 61 20 66 69 6c 65 20 74 6f f"...:description."Add.a.file.to
7bb00 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 63 61 6c .context"...(interactive)...(cal
7bb20 6c 2d 69 6e 74 65 72 61 63 74 69 76 65 6c 79 20 23 27 67 70 74 65 6c 2d 61 64 64 2d 66 69 6c 65 l-interactively.#'gptel-add-file
7bb40 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 69 65 )...(transient-setup))..(transie
7bb60 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
7bb80 6e 74 65 78 74 2d 72 65 6d 6f 76 65 2d 61 6c 6c 20 28 29 0a 20 20 22 43 6c 65 61 72 20 67 70 74 ntext-remove-all.()..."Clear.gpt
7bba0 65 6c 27 73 20 63 6f 6e 74 65 78 74 2e 22 0a 20 20 3a 69 66 20 28 6c 61 6d 62 64 61 20 28 29 20 el's.context."...:if.(lambda.().
7bbc0 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61 6c 69 73 74 29 0a 20 20 3a 74 72 61 6e 73 69 65 gptel-context--alist)...:transie
7bbe0 6e 74 20 27 74 72 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 2d nt.'transient--do-stay...:key."-
7bc00 64 22 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 52 65 6d 6f 76 65 20 61 6c 6c 22 0a 20 d"...:description."Remove.all"..
7bc20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 28 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d .(interactive)...(gptel-context-
7bc40 72 65 6d 6f 76 65 2d 61 6c 6c 20 74 29 0a 20 20 28 74 72 61 6e 73 69 65 6e 74 2d 73 65 74 75 70 remove-all.t)...(transient-setup
7bc60 29 29 0a 0a 3b 3b 20 2a 2a 20 49 6e 66 69 78 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 64 ))..;;.**.Infix.for.additional.d
7bc80 69 72 65 63 74 69 76 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 irective..(transient-define-infi
7bca0 78 20 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 61 64 64 2d 64 69 72 65 63 74 69 76 65 20 28 29 0a x.gptel--infix-add-directive.().
7bcc0 20 20 22 41 64 64 69 74 69 6f 6e 61 6c 20 64 69 72 65 63 74 69 76 65 20 69 6e 74 65 6e 64 65 64 .."Additional.directive.intended
7bce0 20 66 6f 72 20 74 68 65 20 6e 65 78 74 20 71 75 65 72 79 20 6f 6e 6c 79 2e 0a 0a 54 68 69 73 20 .for.the.next.query.only...This.
7bd00 69 73 20 75 73 65 66 75 6c 20 74 6f 20 64 65 66 69 6e 65 20 61 20 71 75 69 63 6b 20 74 61 73 6b is.useful.to.define.a.quick.task
7bd20 20 6f 6e 20 74 6f 70 20 6f 66 20 61 20 6d 6f 72 65 20 65 78 74 65 6e 73 69 76 65 0a 6f 72 20 64 .on.top.of.a.more.extensive.or.d
7bd40 65 74 61 69 6c 65 64 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 2e 0a 0a 46 6f 72 20 65 78 61 etailed.system.message...For.exa
7bd60 6d 70 6c 65 2c 20 77 69 74 68 20 63 6f 64 65 2f 74 65 78 74 20 73 65 6c 65 63 74 65 64 3a 0a 0a mple,.with.code/text.selected:..
7bd80 2d 20 52 65 77 72 69 74 65 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 64 6f 20 58 20 -.Rewrite.this.function.to.do.X.
7bda0 77 68 69 6c 65 20 61 76 6f 69 64 69 6e 67 20 59 2e 0a 2d 20 43 68 61 6e 67 65 20 74 68 65 20 74 while.avoiding.Y..-.Change.the.t
7bdc0 6f 6e 65 20 6f 66 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 70 61 72 61 67 72 61 70 68 20 74 one.of.the.following.paragraph.t
7bde0 6f 20 62 65 20 6d 6f 72 65 20 64 69 72 65 63 74 2e 0a 0a 4f 72 20 69 6e 20 61 6e 20 65 78 74 65 o.be.more.direct...Or.in.an.exte
7be00 6e 64 65 64 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 3a 0a 0a 2d 20 50 68 72 61 73 65 20 79 6f 75 nded.conversation:..-.Phrase.you
7be20 20 6e 65 78 74 20 72 65 73 70 6f 6e 73 65 20 69 6e 20 74 65 6e 20 77 6f 72 64 73 20 6f 72 20 6c .next.response.in.ten.words.or.l
7be40 65 73 73 2e 0a 2d 20 50 72 65 74 65 6e 64 20 66 6f 72 20 6e 6f 77 20 74 68 61 74 20 79 6f 75 27 ess..-.Pretend.for.now.that.you'
7be60 72 65 20 61 6e 20 61 6e 74 68 72 6f 70 6f 6c 6f 67 69 73 74 2e 22 0a 20 20 3a 63 6c 61 73 73 20 re.an.anthropologist."...:class.
7be80 27 67 70 74 65 6c 2d 6f 70 74 69 6f 6e 2d 6f 76 65 72 6c 61 69 64 0a 20 20 3b 3b 20 3a 76 61 72 'gptel-option-overlaid...;;.:var
7bea0 69 61 62 6c 65 20 27 67 70 74 65 6c 2d 2d 69 6e 73 74 72 75 63 74 69 6f 6e 73 0a 20 20 3a 64 69 iable.'gptel--instructions...:di
7bec0 73 70 6c 61 79 2d 6e 69 6c 20 27 6e 6f 6e 65 0a 20 20 3a 6f 76 65 72 6c 61 79 20 6e 69 6c 0a 20 splay-nil.'none...:overlay.nil..
7bee0 20 3a 61 72 67 75 6d 65 6e 74 20 22 3a 22 0a 20 20 3a 70 72 6f 6d 70 74 20 28 63 6f 6e 63 61 74 .:argument.":"...:prompt.(concat
7bf00 20 22 41 64 64 20 69 6e 73 74 72 75 63 74 69 6f 6e 73 20 66 6f 72 20 6e 65 78 74 20 72 65 71 75 ."Add.instructions.for.next.requ
7bf20 65 73 74 20 6f 6e 6c 79 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 70 74 est.only."...................gpt
7bf40 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 29 0a 20 20 3a 72 65 el--read-with-prefix-help)...:re
7bf60 61 64 65 72 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 ader.(lambda.(prompt.initial.his
7bf80 74 6f 72 79 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 tory).............(let*.((direct
7bfa0 69 76 65 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 61 66 ive.....................(car-saf
7bfc0 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 67 70 74 65 6c 2d e.(gptel--parse-directive.gptel-
7bfe0 2d 73 79 73 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 -system-message.'raw))).........
7c000 20 20 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
7c020 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)...............
7c040 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 61 .....................(gptel--rea
7c060 64 2d 77 69 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 d-with-prefix.directive)))......
7c080 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 6c 6f 63 61 6c 2d ..............(minibuffer-local-
7c0a0 6d 61 70 0a 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 map.....................(make-co
7c0c0 6d 70 6f 73 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 mposed-keymap...................
7c0e0 20 20 20 28 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 ...(define-keymap."TAB".cycle-pr
7c100 65 66 69 78 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 efix."<tab>".cycle-prefix)......
7c120 20 20 20 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 ................minibuffer-local
7c140 2d 6d 61 70 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 -map))....................(extra
7c160 20 28 6d 69 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 .(minibuffer-with-setup-hook.cyc
7c180 6c 65 2d 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 le-prefix.......................
7c1a0 20 20 20 20 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 ......(read-string.prompt.(or.in
7c1c0 69 74 69 61 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 itial.".").history))))..........
7c1e0 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 73 74 72 69 6e 67 2d 65 6d 70 74 79 2d 70 20 65 78 74 .....(unless.(string-empty-p.ext
7c200 72 61 29 20 65 78 74 72 61 29 29 29 0a 20 20 3a 66 6f 72 6d 61 74 20 22 20 25 6b 20 25 64 20 25 ra).extra)))...:format.".%k.%d.%
7c220 76 22 0a 20 20 3a 6b 65 79 20 22 64 22 0a 20 20 3a 61 72 67 75 6d 65 6e 74 20 22 3a 22 0a 20 20 v"...:key."d"...:argument.":"...
7c240 3a 64 65 73 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 :description."Add.instruction"..
7c260 20 3a 74 72 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 .:transient.t)..;;.**.Infix.for.
7c280 72 65 61 73 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 reasoning.block.control..(transi
7c2a0 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 69 6e ent-define-infix.gptel--infix-in
7c2c0 63 6c 75 64 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 clude-reasoning.()..."How.to.han
7c2e0 64 6c 65 20 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 dle.reasoning/thinking.response.
7c300 62 6c 6f 63 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 blocks...Some.LLMs.include.in.th
7c320 65 69 72 20 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 eir.response.a.\"thinking\".sect
7c340 69 6f 6e 2e 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 ion...This.text.improves.the.qua
7c360 6c 69 74 79 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 lity.of.the.LLM's.final.output,.
7c380 62 75 74 20 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 but.may.not.be.interesting.to.yo
7c3a0 75 20 62 79 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 u.by.itself...You.can.control.ho
7c3c0 77 20 67 70 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 w.gptel.should.handle.the.thinki
7c3e0 6e 67 20 62 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 ng.blocks.via.this.option,.or.by
7c400 20 73 65 74 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 .setting.the.variable.`gptel-inc
7c420 6c 75 64 65 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 lude-reasoning'.via.elisp,.which
7c440 20 73 65 65 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 .see...Available.behaviors.are.-
7c460 20 74 6f 20 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 .to.include.thinking.blocks.with
7c480 20 74 68 65 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 .the.response,.-.to.omit.them.en
7c4a0 74 69 72 65 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 tirely,.-.to.include.them.but.ig
7c4c0 6e 6f 72 65 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 nore.them.in.consequent.conversa
7c4e0 74 69 6f 6e 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 tion.turns,.and.-.to.append.them
7c500 20 74 6f 20 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 .to.a.buffer.of.your.choosing.".
7c520 20 20 3a 64 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 ..:description."Include.reasonin
7c540 67 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 61 62 6c 65 g"...:class.'gptel-lisp-variable
7c560 0a 20 20 3a 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 ...:variable.'gptel-include-reas
7c580 6f 6e 69 6e 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 oning...:format.".%k.%d.%v"...:s
7c5a0 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 65 et-value.#'gptel--set-with-scope
7c5c0 0a 20 20 3a 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 ...:display-nil."No"...:display-
7c5e0 6d 61 70 20 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 map.'((nil......"No")...........
7c600 20 20 20 20 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 .......(ignore..."and.ignore")..
7c620 20 20 20 20 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 ................(t........"with.
7c640 72 65 73 70 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 response"))...:key."-v"...:promp
7c660 74 20 22 49 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 t."Include.reasoning:."...:reade
7c680 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._)......
7c6a0 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 20 20 .......(let*.((choices.'(("no"..
7c6c0 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).......................
7c6e0 20 20 20 20 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 ........("ignore"...ignore).....
7c700 20 20 20 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 79 65 73 22 ..........................("yes"
7c720 20 20 20 20 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 ......t)........................
7c740 20 20 20 20 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 .......("other.buffer"...buffer)
7c760 29 29 0a 20 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 ))....................(destinati
7c780 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6d 70 6c 65 74 69 on.....................(completi
7c7a0 6e 67 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 ng-read.prompt.choices.nil.t))).
7c7c0 20 20 20 20 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 ..............(if.(equal.destina
7c7e0 74 69 6f 6e 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 tion."other.buffer")............
7c800 20 20 20 20 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 .......(read-buffer."Append.reas
7c820 6f 6e 69 6e 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 oning.to.buffer:.").............
7c840 20 20 20 20 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 ....(cdr.(assoc.destination.choi
7c860 63 65 73 29 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 ces))))))..;;.**.Infixes.for.too
7c880 6c 20 75 73 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 l.use..(transient-define-infix.g
7c8a0 70 74 65 6c 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 ptel--infix-use-tools.()..."Whet
7c8c0 68 65 72 20 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 her.LLM.tool.use.with.gptel.is.e
7c8e0 6e 61 62 6c 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 nabled...This.is.a.three-way.tog
7c900 67 6c 65 2e 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 gle...Assuming.one.or.more.tools
7c920 20 74 6f 20 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 .to.be.sent.with.requests.have.b
7c940 65 65 6e 20 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 een.selected,.tool.use.can.be..-
7c960 20 64 69 73 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 .disabled,.-.enabled,.where.the.
7c980 4c 4c 4d 20 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 LLM.may.choose.to.respond.with.t
7c9a0 6f 6f 6c 20 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 ool.calls.-.forced,.where.the.LL
7c9c0 4d 20 6d 75 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 M.must.respond.with.one.or.more.
7c9e0 74 6f 6f 6c 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 tool.calls...You.can.set.this.he
7ca00 72 65 20 6f 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 re.or.by.customizing.`gptel-use-
7ca20 74 6f 6f 6c 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 tools',.which.see."...:descripti
7ca40 6f 6e 20 22 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 on."Use.tools"...:class.'gptel-l
7ca60 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 6c 2d isp-variable...:variable.'gptel-
7ca80 75 73 65 2d 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 use-tools...:set-value.(lambda.(
7caa0 73 79 6d 20 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 sym.value.scope)................
7cac0 28 67 70 74 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 (gptel--set-with-scope.sym.value
7cae0 20 73 63 6f 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 .scope)................(transien
7cb00 74 2d 73 65 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 t-setup))...:display-nil."off"..
7cb20 20 3a 64 69 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 .:display-map.'((nil....."off").
7cb40 20 20 20 20 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 .................(t......."on").
7cb60 20 20 20 20 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 .................(force..."force
7cb80 22 29 29 0a 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 "))...:prompt."Use.tools?."...:r
7cba0 65 61 64 65 72 20 28 6c 61 6d 62 64 61 20 28 70 72 6f 6d 70 74 20 26 72 65 73 74 20 5f 29 0a 20 eader.(lambda.(prompt.&rest._)..
7cbc0 20 20 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 64 ...........(let*.((choices.'(("d
7cbe0 69 73 61 62 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 isable"...nil)..................
7cc00 20 20 20 20 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 .............("enable"....t)....
7cc20 20 20 20 20 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 ...........................("for
7cc40 63 65 22 20 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 ce".....force)))................
7cc60 20 20 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 ....(pref.(completing-read.promp
7cc80 74 20 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 t.choices.nil.t)))..............
7cca0 20 28 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 0a 20 20 .(cdr.(assoc.pref.choices))))...
7ccc0 3a 6b 65 79 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 :key."-t")..(transient-define-in
7cce0 66 69 78 20 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 fix.gptel--infix-confirm-tool-ca
7cd00 6c 6c 73 20 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 lls.()..."Whether.tool.calls.sho
7cd20 75 6c 64 20 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 uld.wait.for.the.user.to.run.the
7cd40 6d 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 20 62 m...This.is.a.three-way.toggle.b
7cd60 65 74 77 65 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 etween.these.behaviors:..-.All.t
7cd80 6f 6f 6c 20 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 ool.calls.run.without.confirmati
7cda0 6f 6e 2e 0a 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 on..-.All.tool.calls.wait.for.co
7cdc0 6e 66 69 72 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 nfirmation..-.Decided.per-tool,.
7cde0 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 20 74 68 65 20 74 6f according.to.the.value.of.the.to
7ce00 6f 6c 20 73 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 ol.spec's...:confirm.slot...This
7ce20 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 2d 63 6f 6e 66 69 72 .sets.the.variable.`gptel-confir
7ce40 6d 2d 74 6f 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 m-tool-calls',.which.see."...:ke
7ce60 79 20 22 2d 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 y."-c"...:description."Confirm.t
7ce80 6f 6f 6c 20 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 ool.calls"...:class.'gptel-lisp-
7cea0 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 63 6f 6e 66 variable...:variable.'gptel-conf
7cec0 69 72 6d 2d 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 irm-tool-calls...:set-value.#'gp
7cee0 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 6e tel--set-with-scope...:display-n
7cf00 69 6c 20 22 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 il."never"...:display-map.'((nil
7cf20 20 2e 20 22 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 ..."never")..................(t.
7cf40 20 20 2e 20 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 ...."always")..................(
7cf60 61 75 74 6f 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 auto..."auto"))...:prompt."Tool.
7cf80 63 61 6c 6c 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 calls.require.confirmation?."...
7cfa0 3a 72 65 61 64 65 72 20 28 6c 61 6d 62 64 61 20 28 70 72 6f 6d 70 74 20 26 72 65 73 74 20 5f 29 :reader.(lambda.(prompt.&rest._)
7cfc0 0a 20 20 20 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 .............(let*.((choices.'((
7cfe0 22 6e 6f 22 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 "no".....nil)...................
7d000 20 20 20 20 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 ............("always"...t)......
7d020 20 20 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 74 6f 6f 6c 20 .........................("tool.
7d040 64 65 63 69 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 decides"...auto)))..............
7d060 20 20 20 20 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 ......(pref.(completing-read.pro
7d080 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 20 20 20 20 20 20 20 mpt.choices.nil.t)))............
7d0a0 20 20 20 28 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 ...(cdr.(assoc.pref.choices)))))
7d0c0 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 2d ..(transient-define-infix.gptel-
7d0e0 2d 69 6e 66 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 -infix-include-tool-results.()..
7d100 20 22 57 68 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 ."Whether.tool.call.results.shou
7d120 6c 64 20 62 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 ld.be.included.in.the.response..
7d140 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 20 62 65 74 77 .This.is.a.three-way.toggle.betw
7d160 65 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 een.these.behaviors:..-.All.tool
7d180 20 72 65 73 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 .results.are.included..-.No.tool
7d1a0 20 72 65 73 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 .results.are.included..-.Decided
7d1c0 20 70 65 72 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 .per-tool,.according.to.the.valu
7d1e0 65 20 6f 66 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 e.of.the.tool.spec's...:include.
7d200 73 6c 6f 74 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 slot...This.sets.the.variable.`g
7d220 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 27 2c 20 77 68 69 63 ptel-include-tool-results',.whic
7d240 68 20 73 65 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 h.see."...:key."-i"...:descripti
7d260 6f 6e 20 22 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 on."Include.results..."...:class
7d280 20 27 67 70 74 65 6c 2d 6c 69 73 70 2d 76 61 72 69 61 62 6c 65 0a 20 20 3a 76 61 72 69 61 62 6c .'gptel-lisp-variable...:variabl
7d2a0 65 20 27 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 0a 20 20 e.'gptel-include-tool-results...
7d2c0 3a 73 65 74 2d 76 61 6c 75 65 20 23 27 67 70 74 65 6c 2d 2d 73 65 74 2d 77 69 74 68 2d 73 63 6f :set-value.#'gptel--set-with-sco
7d2e0 70 65 0a 20 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 pe...:display-nil."never"...:dis
7d300 70 6c 61 79 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 play-map.'((nil..."never")......
7d320 20 20 20 20 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 ............(t....."always")....
7d340 20 20 20 20 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 ..............(auto..."auto"))..
7d360 20 3a 70 72 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 .:prompt."Include.tool.results.i
7d380 6e 20 4c 4c 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 n.LLM.response?."...:reader.(lam
7d3a0 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 20 20 bda.(prompt.&rest._)............
7d3c0 20 28 6c 65 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 .(let*.((choices.'(("never".....
7d3e0 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 nil)............................
7d400 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 20 20 20 20 20 ...("always"...t)...............
7d420 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 64 65 73 22 20 ................("tool.decides".
7d440 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 20 20 28 70 72 ..auto)))....................(pr
7d460 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 6f 69 63 ef.(completing-read.prompt.choic
7d480 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 72 20 28 es.nil.t)))...............(cdr.(
7d4a0 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 0c 0a 3b 3b 20 2a 20 assoc.pref.choices)))))....;;.*.
7d4c0 54 72 61 6e 73 69 65 6e 74 20 53 75 66 66 69 78 65 73 0a 0a 3b 3b 20 2a 2a 20 53 75 66 66 69 78 Transient.Suffixes..;;.**.Suffix
7d4e0 20 74 6f 20 73 65 6e 64 20 70 72 6f 6d 70 74 0a 0a 28 74 72 61 6e 73 69 65 6e 74 2d 64 65 66 69 .to.send.prompt..(transient-defi
7d500 6e 65 2d 73 75 66 66 69 78 20 67 70 74 65 6c 2d 2d 73 75 66 66 69 78 2d 73 65 6e 64 20 28 61 72 ne-suffix.gptel--suffix-send.(ar
7d520 67 73 29 0a 20 20 22 53 65 6e 64 20 41 52 47 53 2e 22 0a 20 20 3a 6b 65 79 20 22 52 45 54 22 0a gs)..."Send.ARGS."...:key."RET".
7d540 20 20 3a 64 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 ..:description.#'gptel--describe
7d560 2d 73 75 66 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 -suffix-send...(interactive.(lis
7d580 74 20 28 74 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 t.(transient-args...............
7d5a0 20 20 20 20 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 ........(or.transient-current-co
7d5c0 6d 6d 61 6e 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 mmand.'gptel-menu))))...(let.((s
7d5e0 74 72 65 61 6d 20 67 70 74 65 6c 2d 73 74 72 65 61 6d 29 0a 20 20 20 20 20 20 20 20 28 69 6e 2d tream.gptel-stream).........(in-
7d600 70 6c 61 63 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 place.(and.(member."i".args).t))
7d620 0a 20 20 20 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 .........(output-to-other-buffer
7d640 2d 70 29 0a 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 -p).........(backend.gptel-backe
7d660 6e 64 29 0a 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 nd).........(model.gptel-model).
7d680 20 20 20 20 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 ........(backend-name.(gptel-bac
7d6a0 6b 65 6e 64 2d 6e 61 6d 65 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 29 0a 20 20 20 20 20 20 kend-name.gptel-backend)).......
7d6c0 20 20 28 62 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 ..(buffer).(position).........(c
7d6e0 61 6c 6c 62 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 allback).(gptel-buffer-name)....
7d700 20 20 20 20 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 .....(system-extra.(gptel--get-d
7d720 69 72 65 63 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 irective.args)).........(dry-run
7d740 20 28 61 6e 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 .(and.(member."I".args).t)).....
7d760 20 20 20 20 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 ....;;.Input.redirection:.grab.p
7d780 72 6f 6d 70 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 rompt.from.elsewhere?.........(p
7d7a0 72 6f 6d 70 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 rompt..........(cond...........(
7d7c0 28 6d 65 6d 62 65 72 20 22 6d 22 20 61 72 67 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 6d 69 (member."m".args)............(mi
7d7e0 6e 69 62 75 66 66 65 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 nibuffer-with-setup-hook........
7d800 20 20 20 20 20 20 20 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 ........(lambda.().(add-hook.'co
7d820 6d 70 6c 65 74 69 6f 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 mpletion-at-point-functions.....
7d840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 27 67 70 74 ...........................#'gpt
7d860 65 6c 2d 70 72 65 73 65 74 2d 63 61 70 66 20 6e 69 6c 20 74 29 29 0a 20 20 20 20 20 20 20 20 20 el-preset-capf.nil.t))..........
7d880 20 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 ....(read-string...............(
7d8a0 66 6f 72 6d 61 74 20 22 41 73 6b 20 25 73 3a 20 22 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 format."Ask.%s:.".(gptel-backend
7d8c0 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 20 20 -name.gptel-backend))...........
7d8e0 20 20 20 20 28 61 6e 64 20 28 75 73 65 2d 72 65 67 69 6f 6e 2d 70 29 0a 20 20 20 20 20 20 20 20 ....(and.(use-region-p).........
7d900 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-
7d920 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 28 properties.....................(
7d940 72 65 67 69 6f 6e 2d 62 65 67 69 6e 6e 69 6e 67 29 20 28 72 65 67 69 6f 6e 2d 65 6e 64 29 29 29 region-beginning).(region-end)))
7d960 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 28 6d 65 6d 62 65 72 20 22 79 22 20 61 72 67 73 29 )))...........((member."y".args)
7d980 0a 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 63 61 72 2d 73 61 66 65 20 6b 69 ............(unless.(car-safe.ki
7d9a0 6c 6c 2d 72 69 6e 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 73 65 72 2d 65 72 72 6f ll-ring)..............(user-erro
7d9c0 72 20 22 60 6b 69 6c 6c 2d 72 69 6e 67 27 20 69 73 20 65 6d 70 74 79 21 20 20 4e 6f 74 68 69 6e r."`kill-ring'.is.empty!..Nothin
7d9e0 67 20 74 6f 20 73 65 6e 64 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 63 75 72 72 g.to.send"))............(if.curr
7da00 65 6e 74 2d 70 72 65 66 69 78 2d 61 72 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 ent-prefix-arg................(r
7da20 65 61 64 2d 66 72 6f 6d 2d 6b 69 6c 6c 2d 72 69 6e 67 20 22 50 72 6f 6d 70 74 20 66 72 6f 6d 20 ead-from-kill-ring."Prompt.from.
7da40 6b 69 6c 6c 2d 72 69 6e 67 3a 20 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 75 72 72 kill-ring:.")..............(curr
7da60 65 6e 74 2d 6b 69 6c 6c 20 30 29 29 29 29 29 29 0a 0a 20 20 20 20 3b 3b 20 4f 75 74 70 75 74 20 ent-kill.0))))))......;;.Output.
7da80 72 65 64 69 72 65 63 74 69 6f 6e 3a 20 53 65 6e 64 20 72 65 73 70 6f 6e 73 65 20 65 6c 73 65 77 redirection:.Send.response.elsew
7daa0 68 65 72 65 3f 0a 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 28 28 6d 65 6d 62 65 72 20 22 65 here?.....(cond......((member."e
7dac0 22 20 61 72 67 73 29 0a 20 20 20 20 20 20 28 73 65 74 71 20 73 74 72 65 61 6d 20 6e 69 6c 29 0a ".args).......(setq.stream.nil).
7dae0 20 20 20 20 20 20 28 73 65 74 71 20 63 61 6c 6c 62 61 63 6b 0a 20 20 20 20 20 20 20 20 20 20 20 ......(setq.callback............
7db00 20 28 6c 61 6d 62 64 61 20 28 72 65 73 70 20 69 6e 66 6f 20 26 6f 70 74 69 6f 6e 61 6c 20 5f 72 .(lambda.(resp.info.&optional._r
7db20 61 77 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 63 61 73 65 20 72 65 73 70 0a 20 20 aw)...............(pcase.resp...
7db40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 70 72 65 64 20 73 74 72 69 6e 67 70 29 20 28 6d ..............((pred.stringp).(m
7db60 65 73 73 61 67 65 20 22 25 73 20 72 65 73 70 6f 6e 73 65 3a 20 25 73 22 20 62 61 63 6b 65 6e 64 essage."%s.response:.%s".backend
7db80 2d 6e 61 6d 65 20 72 65 73 70 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 60 28 -name.resp)).................(`(
7dba0 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 74 65 6c 2d tool-call...,tool-calls).(gptel-
7dbc0 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 6c 73 20 69 -display-tool-calls.tool-calls.i
7dbe0 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 20 20 20 20 nfo.'minibuffer))...............
7dc00 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 75 6c 74 73 ..(`(tool-result...,tool-results
7dc20 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 74 73 20 74 ).(gptel--display-tool-results.t
7dc40 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 20 20 20 20 ool-results.info))..............
7dc60 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 20 28 70 6c ...(_.(when.(and.(null.resp).(pl
7dc80 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 20 20 20 20 ist-get.info.:error))...........
7dca0 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 6f 6e 73 65 ...........(message."%s.response
7dcc0 20 65 72 72 6f 72 3a 20 25 73 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .error:.%s".....................
7dce0 20 20 20 20 20 20 20 20 20 20 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 20 28 70 6c 69 73 74 2d 67 65 ..........backend-name.(plist-ge
7dd00 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 28 28 6d 65 t.info.:status))))))))......((me
7dd20 6d 62 65 72 20 22 6b 22 20 61 72 67 73 29 0a 20 20 20 20 20 20 28 73 65 74 71 20 73 74 72 65 61 mber."k".args).......(setq.strea
7dd40 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 20 20 20 20 m.nil).......(setq.callback.....
7dd60 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 6f 70 74 69 ........(lambda.(resp.info.&opti
7dd80 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 61 73 65 20 onal._raw)...............(pcase.
7dda0 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 73 74 72 69 resp.................((pred.stri
7ddc0 6e 67 70 29 20 28 6b 69 6c 6c 2d 6e 65 77 20 72 65 73 70 29 0a 20 20 20 20 20 20 20 20 20 20 20 ngp).(kill-new.resp)............
7dde0 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 25 73 20 72 65 73 70 6f 6e 73 65 3a 20 5c 22 25 ......(message."%s.response:.\"%
7de00 73 5c 22 20 63 6f 70 69 65 64 20 74 6f 20 6b 69 6c 6c 2d 72 69 6e 67 2e 22 20 62 61 63 6b 65 6e s\".copied.to.kill-ring.".backen
7de20 64 2d 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 d-name..........................
7de40 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 72 65 73 70 20 .(truncate-string-to-width.resp.
7de60 33 30 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 60 28 74 6f 6f 6c 2d 63 61 30))).................(`(tool-ca
7de80 6c 6c 20 2e 20 2c 74 6f 6f 6c 2d 63 61 6c 6c 73 29 20 28 67 70 74 65 6c 2d 2d 64 69 73 70 6c 61 ll...,tool-calls).(gptel--displa
7dea0 79 2d 74 6f 6f 6c 2d 63 61 6c 6c 73 20 74 6f 6f 6c 2d 63 61 6c 6c 73 20 69 6e 66 6f 20 27 6d 69 y-tool-calls.tool-calls.info.'mi
7dec0 6e 69 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 28 60 28 74 6f nibuffer)).................(`(to
7dee0 6f 6c 2d 72 65 73 75 6c 74 20 2e 20 2c 74 6f 6f 6c 2d 72 65 73 75 6c 74 73 29 20 28 67 70 74 65 ol-result...,tool-results).(gpte
7df00 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 72 65 73 l--display-tool-results.tool-res
7df20 75 6c 74 73 20 69 6e 66 6f 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 5f 20 28 ults.info)).................(_.(
7df40 77 68 65 6e 20 28 61 6e 64 20 28 6e 75 6c 6c 20 72 65 73 70 29 20 28 70 6c 69 73 74 2d 67 65 74 when.(and.(null.resp).(plist-get
7df60 20 69 6e 66 6f 20 3a 65 72 72 6f 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .info.:error))..................
7df80 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 25 73 20 72 65 73 70 6f 6e 73 65 20 65 72 72 6f 72 3a ....(message."%s.response.error:
7dfa0 20 25 73 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 .%s".backend-name...............
7dfc0 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 20 ................(plist-get.info.
7dfe0 3a 73 74 61 74 75 73 29 29 29 29 29 29 29 29 0a 20 20 20 20 20 28 28 73 65 74 71 20 67 70 74 65 :status))))))))......((setq.gpte
7e000 6c 2d 62 75 66 66 65 72 2d 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 73 6f l-buffer-name.............(cl-so
7e020 6d 65 20 28 6c 61 6d 62 64 61 20 28 73 29 20 28 61 6e 64 20 28 73 74 72 69 6e 67 70 20 73 29 20 me.(lambda.(s).(and.(stringp.s).
7e040 28 73 74 72 69 6e 67 2d 70 72 65 66 69 78 2d 70 20 22 67 22 20 73 29 0a 20 20 20 20 20 20 20 20 (string-prefix-p."g".s).........
7e060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 75 62 73 74 72 .........................(substr
7e080 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 20 20 20 20 20 20 20 ing.s.1)))......................
7e0a0 61 72 67 73 29 29 0a 20 20 20 20 20 20 28 73 65 74 71 20 6f 75 74 70 75 74 2d 74 6f 2d 6f 74 68 args)).......(setq.output-to-oth
7e0c0 65 72 2d 62 75 66 66 65 72 2d 70 20 74 29 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 72 65 64 75 er-buffer-p.t).......(let.((redu
7e0e0 63 65 64 2d 70 72 6f 6d 70 74 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 46 6f 72 20 69 6e 73 65 ced-prompt.............;For.inse
7e100 72 74 69 6e 67 20 69 6e 74 6f 20 74 68 65 20 67 70 74 65 6c 20 62 75 66 66 65 72 20 61 73 0a 20 rting.into.the.gptel.buffer.as..
7e120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
7e140 20 20 20 20 20 20 20 3b 63 6f 6e 74 65 78 74 2c 20 6e 6f 74 20 74 68 65 20 70 72 6f 6d 70 74 20 .......;context,.not.the.prompt.
7e160 75 73 65 64 20 66 6f 72 20 74 68 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 used.for.the....................
7e180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 72 65 71 75 65 73 74 20 69 74 .....................;request.it
7e1a0 73 65 6c 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 20 70 72 6f 6d 70 74 0a 20 20 20 self..............(or.prompt....
7e1c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 75 73 65 2d 72 65 67 69 6f 6e 2d 70 29 ..............(if.(use-region-p)
7e1e0 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 72 2d 73 75 ......................(buffer-su
7e200 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
7e220 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 20 20 ginning)........................
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 20 20 20 20 28 72 ..............................(r
7e260 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 20 20 20 20 20 28 egion-end))....................(
7e280 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 20 buffer-substring-no-properties..
7e2a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 ...................(save-excursi
7e2c0 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 28 74 65 78 74 2d 70 on.......................(text-p
7e2e0 72 6f 70 65 72 74 79 2d 73 65 61 72 63 68 2d 62 61 63 6b 77 61 72 64 0a 20 20 20 20 20 20 20 20 roperty-search-backward.........
7e300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 67 70 74 65 6c 20 27 72 65 73 70 6f 6e 73 65 0a ...............'gptel.'response.
7e320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 67 65 .......................(when.(ge
7e340 74 2d 63 68 61 72 2d 70 72 6f 70 65 72 74 79 20 28 6d 61 78 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 t-char-property.(max.(point-min)
7e360 20 28 31 2d 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .(1-.(point)))..................
7e380 20 20 20 20 20 20 20 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 ...............................'
7e3a0 67 70 74 65 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 gptel)..........................
7e3c0 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 28 70 6f 69 6e 74 t)).......................(point
7e3e0 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 70 74 65 6c 2d 2d 61 )).....................(gptel--a
7e400 74 2d 77 6f 72 64 2d 65 6e 64 20 28 70 6f 69 6e 74 29 29 29 29 29 29 29 0a 20 20 20 20 20 20 20 t-word-end.(point)))))))........
7e420 20 28 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 .(cond..........((buffer-live-p.
7e440 28 67 65 74 2d 62 75 66 66 65 72 20 67 70 74 65 6c 2d 62 75 66 66 65 72 2d 6e 61 6d 65 29 29 0a (get-buffer.gptel-buffer-name)).
7e460 20 20 20 20 20 20 20 20 20 20 3b 3b 20 49 6e 73 65 72 74 20 69 6e 74 6f 20 65 78 69 73 74 69 6e ..........;;.Insert.into.existin
7e480 67 20 67 70 74 65 6c 20 73 65 73 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 67 6e g.gptel.session...........(progn
7e4a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 62 75 66 66 65 72 20 28 67 65 74 2d 62 .............(setq.buffer.(get-b
7e4c0 75 66 66 65 72 20 67 70 74 65 6c 2d 62 75 66 66 65 72 2d 6e 61 6d 65 29 29 0a 20 20 20 20 20 20 uffer.gptel-buffer-name)).......
7e4e0 20 20 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 62 75 66 66 65 ......(with-current-buffer.buffe
7e500 72 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 6e r...............(goto-char.(poin
7e520 74 2d 6d 61 78 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 6f t-max))...............(unless.(o
7e540 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 20 r.buffer-read-only..............
7e560 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.
7e580 28 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 (point).'read-only))............
7e5a0 20 20 20 20 20 28 69 6e 73 65 72 74 20 72 65 64 75 63 65 64 2d 70 72 6f 6d 70 74 29 29 0a 20 20 .....(insert.reduced-prompt))...
7e5c0 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 70 6f 73 69 74 69 6f 6e 20 28 70 6f 69 6e ............(setq.position.(poin
7e5e0 74 29 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 67 70 74 t))...............(when.(and.gpt
7e600 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 20 20 20 20 20 el-mode.(not.dry-run))..........
7e620 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 75 70 64 61 74 65 2d 73 74 61 74 75 73 20 22 20 57 .......(gptel--update-status.".W
7e640 61 69 74 69 6e 67 2e 2e 2e 22 20 27 77 61 72 6e 69 6e 67 29 29 29 29 29 0a 20 20 20 20 20 20 20 aiting...".'warning)))))........
7e660 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 73 69 ..;;.Insert.into.new.gptel.sessi
7e680 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 20 20 on..........(t.(setq.buffer.....
7e6a0 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 66 65 ..............(gptel.gptel-buffe
7e6c0 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 20 20 r-name..........................
7e6e0 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 (condition-case.nil.............
7e700 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 70 69 .................(gptel--get-api
7e720 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)...........................
7e740 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 20 20 .((error.user-error)............
7e760 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 70 69 .................(setq.gptel-api
7e780 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 20 20 -key............................
7e7a0 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 20 20 .......(read-passwd.............
7e7c0 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 20 22 .......................(format."
7e7e0 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 20 20 %s.API.key:."...................
7e800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d .........................(gptel-
7e820 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 backend-name....................
7e840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 62 .........................gptel-b
7e860 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 20 20 ackend))))))....................
7e880 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 20 20 ......reduced-prompt))..........
7e8a0 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 20 6e ...;;.Set.backend.and.model.in.n
7e8c0 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 0a 20 ew.session.from.current.buffer..
7e8e0 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.
7e900 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 65 6c buffer...............(setq.gptel
7e920 2d 62 61 63 6b 65 6e 64 20 62 61 63 6b 65 6e 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -backend.backend)...............
7e940 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 20 20 (setq.gptel-model.model)........
7e960 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 20 20 .......(unless.dry-run..........
7e980 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 75 70 64 61 74 65 2d 73 74 61 74 75 73 20 22 20 57 .......(gptel--update-status.".W
7e9a0 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 20 20 aiting...".'warning))...........
7e9c0 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 29 29 ....(setq.position.(point)))))))
7e9e0 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 0a 20 ......((setq.gptel-buffer-name..
7ea00 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 29 20 ...........(cl-some.(lambda.(s).
7ea20 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-
7ea40 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 20 20 p."b".s)........................
7ea60 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 20 20 ..........(substring.s.1))).....
7ea80 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 28 73 .................args)).......(s
7eaa0 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 29 0a etq.output-to-other-buffer-p.t).
7eac0 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 2d 63 ......(setq.buffer.(get-buffer-c
7eae0 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 20 20 reate.gptel-buffer-name)).......
7eb00 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 65 74 (with-current-buffer.buffer.(set
7eb20 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 28 70 72 6f q.position.(point)))))......(pro
7eb40 67 31 20 28 67 70 74 65 6c 2d 72 65 71 75 65 73 74 20 70 72 6f 6d 70 74 0a 20 20 20 20 20 20 20 g1.(gptel-request.prompt........
7eb60 20 20 20 20 20 20 3a 62 75 66 66 65 72 20 28 6f 72 20 62 75 66 66 65 72 20 28 63 75 72 72 65 6e ......:buffer.(or.buffer.(curren
7eb80 74 2d 62 75 66 66 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 70 6f 73 69 74 69 6f t-buffer))..............:positio
7eba0 6e 20 70 6f 73 69 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 69 6e 2d 70 6c 61 63 n.position..............:in-plac
7ebc0 65 20 28 61 6e 64 20 69 6e 2d 70 6c 61 63 65 20 28 6e 6f 74 20 6f 75 74 70 75 74 2d 74 6f 2d 6f e.(and.in-place.(not.output-to-o
7ebe0 74 68 65 72 2d 62 75 66 66 65 72 2d 70 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 73 74 ther-buffer-p))..............:st
7ec00 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 3a 73 79 73 74 65 6d ream.stream..............:system
7ec20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 73 79 73 74 65 6d 2d 65 78 74 72 61 0a 20 ..............(if.system-extra..
7ec40 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 65 72 67 65 2d 61 64 ................(gptel--merge-ad
7ec60 64 69 74 69 6f 6e 61 6c 2d 64 69 72 65 63 74 69 76 65 20 73 79 73 74 65 6d 2d 65 78 74 72 61 29 ditional-directive.system-extra)
7ec80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 ................gptel--system-me
7eca0 73 73 61 67 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 61 6c 6c 62 61 63 6b 20 63 61 ssage)..............:callback.ca
7ecc0 6c 6c 62 61 63 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 74 72 61 6e 73 66 6f 72 6d 73 20 llback..............:transforms.
7ece0 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
7ed00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 66 73 6d 20 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 66 ..............:fsm.(gptel-make-f
7ed20 73 6d 20 3a 68 61 6e 64 6c 65 72 73 20 67 70 74 65 6c 2d 73 65 6e 64 2d 2d 68 61 6e 64 6c 65 72 sm.:handlers.gptel-send--handler
7ed40 73 29 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 s)..............:dry-run.dry-run
7ed60 29 0a 0a 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........
7ed80 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 57 61 69 74 69 6e 67 .(gptel--update-status.".Waiting
7eda0 2e 2e 2e 22 20 27 77 61 72 6e 69 6e 67 29 29 0a 0a 20 20 20 20 20 20 3b 3b 20 4e 4f 54 45 3a 20 ...".'warning))........;;.NOTE:.
7edc0 50 6f 73 73 69 62 6c 65 20 66 75 74 75 72 65 20 72 61 63 65 20 63 6f 6e 64 69 74 69 6f 6e 20 68 Possible.future.race.condition.h
7ede0 65 72 65 20 69 66 20 45 6d 61 63 73 20 65 76 65 72 20 64 72 6f 70 73 20 74 68 65 20 47 49 4c 2e ere.if.Emacs.ever.drops.the.GIL.
7ee00 0a 20 20 20 20 20 20 3b 3b 20 54 68 65 20 48 54 54 50 20 72 65 71 75 65 73 74 20 63 61 6c 6c 62 .......;;.The.HTTP.request.callb
7ee20 61 63 6b 20 6d 69 67 68 74 20 6d 6f 64 69 66 79 20 74 68 65 20 62 75 66 66 65 72 20 62 65 66 6f ack.might.modify.the.buffer.befo
7ee40 72 65 20 74 68 65 20 69 6e 2d 70 6c 61 63 65 0a 20 20 20 20 20 20 3b 3b 20 74 65 78 74 20 69 73 re.the.in-place.......;;.text.is
7ee60 20 6b 69 6c 6c 65 64 20 62 65 6c 6f 77 2e 0a 20 20 20 20 20 20 28 77 68 65 6e 20 69 6e 2d 70 6c .killed.below........(when.in-pl
7ee80 61 63 65 0a 20 20 20 20 20 20 20 20 28 69 66 20 28 6f 72 20 62 75 66 66 65 72 2d 72 65 61 64 2d ace.........(if.(or.buffer-read-
7eea0 6f 6e 6c 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 only.(get-char-property.(point).
7eec0 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 28 6d 65 73 73 61 67 'read-only)).............(messag
7eee0 65 20 22 4e 6f 74 20 72 65 70 6c 61 63 69 6e 67 20 70 72 6f 6d 70 74 3a 20 72 65 67 69 6f 6e 20 e."Not.replacing.prompt:.region.
7ef00 69 73 20 72 65 61 64 2d 6f 6e 6c 79 22 29 0a 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 is.read-only")...........(let.((
7ef20 62 65 67 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 beg.(if.(use-region-p)..........
7ef40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 67 69 6f 6e 2d 62 65 67 69 6e 6e 69 6e ................(region-beginnin
7ef60 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 6d 61 78 20 28 g)........................(max.(
7ef80 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 61 6e 67 65 0a previous-single-property-change.
7efa0 20 20 20 20 20 20 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
7efc0 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 0a 20 20 20 int).'gptel.nil.(point-min))....
7efe0 20 20 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 65 76 69 6f .........................(previo
7f000 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.......
7f020 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 29 20 27 .......................(point).'
7f040 72 65 61 64 2d 6f 6e 6c 79 20 6e 69 6c 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 29 29 29 0a 20 20 read-only.nil.(point-min)))))...
7f060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6e 64 20 28 69 66 20 28 75 73 65 2d 72 65 67 69 ..............(end.(if.(use-regi
7f080 6f 6e 2d 70 29 20 28 72 65 67 69 6f 6e 2d 65 6e 64 29 20 28 70 6f 69 6e 74 29 29 29 29 0a 20 20 on-p).(region-end).(point))))...
7f0a0 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 6f 75 74 70 75 74 2d 74 6f 2d 6f 74 68 65 ..........(unless.output-to-othe
7f0c0 72 2d 62 75 66 66 65 72 2d 70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 73 74 6f 72 r-buffer-p...............;;.stor
7f0e0 65 20 74 68 65 20 6b 69 6c 6c 65 64 20 74 65 78 74 20 69 6e 20 67 70 74 65 6c 2d 68 69 73 74 6f e.the.killed.text.in.gptel-histo
7f100 72 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 61 74 74 61 63 68 2d ry...............(gptel--attach-
7f120 72 65 73 70 6f 6e 73 65 2d 68 69 73 74 6f 72 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 response-history................
7f140 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
7f160 72 74 69 65 73 20 62 65 67 20 65 6e 64 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6b rties.beg.end)))).............(k
7f180 69 6c 6c 2d 72 65 67 69 6f 6e 20 62 65 67 20 65 6e 64 29 29 29 29 0a 0a 20 20 20 20 20 20 28 77 ill-region.beg.end))))........(w
7f1a0 68 65 6e 20 6f 75 74 70 75 74 2d 74 6f 2d 6f 74 68 65 72 2d 62 75 66 66 65 72 2d 70 0a 20 20 20 hen.output-to-other-buffer-p....
7f1c0 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 28 63 6f 6e 63 61 74 20 22 50 72 6f 6d 70 74 20 73 65 .....(message.(concat."Prompt.se
7f1e0 6e 74 20 74 6f 20 62 75 66 66 65 72 3a 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 nt.to.buffer:.".................
7f200 20 20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 67 70 74 65 6c 2d 62 75 66 66 65 .........(propertize.gptel-buffe
7f220 72 2d 6e 61 6d 65 20 27 66 61 63 65 20 27 68 65 6c 70 2d 6b 65 79 2d 62 69 6e 64 69 6e 67 29 29 r-name.'face.'help-key-binding))
7f240 29 0a 20 20 20 20 20 20 20 20 28 64 69 73 70 6c 61 79 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20 ).........(display-buffer.......
7f260 20 20 20 62 75 66 66 65 72 20 27 28 28 64 69 73 70 6c 61 79 2d 62 75 66 66 65 72 2d 72 65 75 73 ...buffer.'((display-buffer-reus
7f280 65 2d 77 69 6e 64 6f 77 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 69 73 70 e-window....................disp
7f2a0 6c 61 79 2d 62 75 66 66 65 72 2d 70 6f 70 2d 75 70 2d 77 69 6e 64 6f 77 29 0a 20 20 20 20 20 20 lay-buffer-pop-up-window).......
7f2c0 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 75 73 61 62 6c 65 2d 66 72 61 6d 65 73 20 2e 20 76 ............(reusable-frames...v
7f2e0 69 73 69 62 6c 65 29 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 6d 65 72 isible)))))))..(defun.gptel--mer
7f300 67 65 2d 61 64 64 69 74 69 6f 6e 61 6c 2d 64 69 72 65 63 74 69 76 65 20 28 61 64 64 69 74 69 6f ge-additional-directive.(additio
7f320 6e 61 6c 20 26 6f 70 74 69 6f 6e 61 6c 20 66 75 6c 6c 29 0a 20 20 22 4d 65 72 67 65 20 41 44 44 nal.&optional.full)..."Merge.ADD
7f340 49 54 49 4f 4e 41 4c 20 67 70 74 65 6c 20 64 69 72 65 63 74 69 76 65 20 77 69 74 68 20 74 68 65 ITIONAL.gptel.directive.with.the
7f360 20 66 75 6c 6c 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 2e 0a 0a 54 68 65 20 41 44 44 49 54 .full.system.message...The.ADDIT
7f380 49 4f 4e 41 4c 20 64 69 72 65 63 74 69 76 65 20 69 73 20 74 79 70 69 63 61 6c 6c 79 20 73 70 65 IONAL.directive.is.typically.spe
7f3a0 63 69 66 69 65 64 20 66 72 6f 6d 20 60 67 70 74 65 6c 2d 6d 65 6e 75 27 0a 61 6e 64 20 61 70 70 cified.from.`gptel-menu'.and.app
7f3c0 6c 69 65 73 20 6f 6e 6c 79 20 74 6f 20 74 68 65 20 6e 65 78 74 20 67 70 74 65 6c 20 72 65 71 75 lies.only.to.the.next.gptel.requ
7f3e0 65 73 74 2c 20 73 65 65 0a 60 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 61 64 64 2d 64 69 72 65 63 est,.see.`gptel--infix-add-direc
7f400 74 69 76 65 27 2e 0a 0a 46 55 4c 4c 20 64 65 66 61 75 6c 74 73 20 74 6f 20 74 68 65 20 61 63 74 tive'...FULL.defaults.to.the.act
7f420 69 76 65 2c 20 66 75 6c 6c 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 2e 20 20 49 74 20 6d 61 ive,.full.system.message...It.ma
7f440 79 20 62 65 20 61 0a 73 74 72 69 6e 67 2c 20 61 20 6c 69 73 74 20 6f 66 20 70 72 6f 6d 70 74 73 y.be.a.string,.a.list.of.prompts
7f460 20 6f 72 20 61 20 66 75 6e 63 74 69 6f 6e 2c 20 73 65 65 20 60 67 70 74 65 6c 2d 64 69 72 65 63 .or.a.function,.see.`gptel-direc
7f480 74 69 76 65 73 27 0a 66 6f 72 20 64 65 74 61 69 6c 73 2e 22 0a 20 20 28 73 65 74 71 20 66 75 6c tives'.for.details."...(setq.ful
7f4a0 6c 20 28 6f 72 20 66 75 6c 6c 20 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 l.(or.full.gptel--system-message
7f4c0 29 29 0a 20 20 28 63 6c 2d 74 79 70 65 63 61 73 65 20 66 75 6c 6c 0a 20 20 20 20 28 73 74 72 69 ))...(cl-typecase.full.....(stri
7f4e0 6e 67 20 28 63 6f 6e 63 61 74 20 66 75 6c 6c 20 22 5c 6e 5c 6e 22 20 61 64 64 69 74 69 6f 6e 61 ng.(concat.full."\n\n".additiona
7f500 6c 29 29 0a 20 20 20 20 28 6c 69 73 74 20 28 6c 65 74 20 28 28 63 6f 70 79 20 28 63 6f 70 79 2d l)).....(list.(let.((copy.(copy-
7f520 73 65 71 75 65 6e 63 65 20 66 75 6c 6c 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 sequence.full))).............(se
7f540 74 63 61 72 20 63 6f 70 79 20 28 63 6f 6e 63 61 74 20 28 63 61 72 20 63 6f 70 79 29 20 22 5c 6e tcar.copy.(concat.(car.copy)."\n
7f560 5c 6e 22 20 61 64 64 69 74 69 6f 6e 61 6c 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 70 \n".additional)).............cop
7f580 79 29 29 0a 20 20 20 20 28 66 75 6e 63 74 69 6f 6e 20 28 6c 61 6d 62 64 61 20 28 29 20 28 67 70 y)).....(function.(lambda.().(gp
7f5a0 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 65 63 74 69 76 65 0a tel--merge-additional-directive.
7f5c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 64 64 69 74 69 6f 6e 61 6c 20 .....................additional.
7f5e0 28 66 75 6e 63 61 6c 6c 20 66 75 6c 6c 29 29 29 29 0a 20 20 20 20 28 6f 74 68 65 72 77 69 73 65 (funcall.full)))).....(otherwise
7f600 20 61 64 64 69 74 69 6f 6e 61 6c 29 29 29 0a 0a 3b 3b 20 41 6c 6c 6f 77 20 63 61 6c 6c 69 6e 67 .additional)))..;;.Allow.calling
7f620 20 66 72 6f 6d 20 65 6c 69 73 70 0a 28 70 75 74 20 27 67 70 74 65 6c 2d 2d 73 75 66 66 69 78 2d .from.elisp.(put.'gptel--suffix-
7f640 73 65 6e 64 20 27 69 6e 74 65 72 61 63 74 69 76 65 2d 6f 6e 6c 79 20 6e 69 6c 29 0a 0a 3b 3b 20 send.'interactive-only.nil)..;;.
7f660 2a 2a 20 53 75 66 66 69 78 20 74 6f 20 72 65 67 65 6e 65 72 61 74 65 20 72 65 73 70 6f 6e 73 65 **.Suffix.to.regenerate.response
7f680 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 72 65 67 65 6e 65 72 61 74 65 20 28 29 0a 20 20 ..(defun.gptel--regenerate.()...
7f6a0 22 52 65 67 65 6e 65 72 61 74 65 20 67 70 74 65 6c 20 72 65 73 70 6f 6e 73 65 20 61 74 20 70 6f "Regenerate.gptel.response.at.po
7f6c0 69 6e 74 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 28 77 68 65 6e 20 28 67 int."...(interactive)...(when.(g
7f6e0 70 74 65 6c 2d 2d 69 6e 2d 72 65 73 70 6f 6e 73 65 2d 70 29 0a 20 20 20 20 28 70 63 61 73 65 2d ptel--in-response-p).....(pcase-
7f700 6c 65 74 2a 20 28 28 60 28 2c 62 65 67 20 2e 20 2c 65 6e 64 29 20 28 67 70 74 65 6c 2d 2d 67 65 let*.((`(,beg...,end).(gptel--ge
7f720 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 20 20 20 20 20 20 t-response-bounds)).............
7f740 20 20 20 20 20 28 68 69 73 74 6f 72 79 20 28 67 65 74 2d 63 68 61 72 2d 70 72 6f 70 65 72 74 79 .....(history.(get-char-property
7f760 20 28 70 6f 69 6e 74 29 20 27 67 70 74 65 6c 2d 68 69 73 74 6f 72 79 29 29 0a 20 20 20 20 20 20 .(point).'gptel-history)).......
7f780 20 20 20 20 20 20 20 20 20 20 20 28 70 72 65 76 2d 72 65 73 70 6f 6e 73 65 73 20 28 63 6f 6e 73 ...........(prev-responses.(cons
7f7a0 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
7f7c0 20 62 65 67 20 65 6e 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .beg.end).......................
7f7e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 69 73 74 6f 72 79 29 29 29 0a 20 20 20 20 .................history))).....
7f800 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 6d 6f 64 65 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..(when.gptel-mode..............
7f820 20 20 20 20 3b 52 65 6d 6f 76 65 20 70 72 65 66 69 78 2f 73 75 66 66 69 78 0a 20 20 20 20 20 20 ....;Remove.prefix/suffix.......
7f840 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 ..(save-excursion...........(got
7f860 6f 2d 63 68 61 72 20 62 65 67 29 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 6c 6f 6f o-char.beg)...........(when.(loo
7f880 6b 69 6e 67 2d 62 61 63 6b 20 28 63 6f 6e 63 61 74 20 22 5c 6e 2b 22 20 28 72 65 67 65 78 70 2d king-back.(concat."\n+".(regexp-
7f8a0 71 75 6f 74 65 20 28 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 70 72 65 66 69 78 2d 73 74 72 quote.(gptel-response-prefix-str
7f8c0 69 6e 67 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ing)))..........................
7f8e0 20 20 20 20 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 27 67 72 65 65 64 79 29 0a 20 20 20 20 20 20 .....(point-min).'greedy).......
7f900 20 20 20 20 20 20 28 73 65 74 71 20 62 65 67 20 28 6d 61 74 63 68 2d 62 65 67 69 6e 6e 69 6e 67 ......(setq.beg.(match-beginning
7f920 20 30 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 65 6e 64 29 0a .0)))...........(goto-char.end).
7f940 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 6c 6f 6f 6b 69 6e 67 2d 61 74 0a 20 20 20 20 ..........(when.(looking-at.....
7f960 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 22 5c 6e 2b 22 20 28 72 65 67 65 .............(concat."\n+".(rege
7f980 78 70 2d 71 75 6f 74 65 20 28 67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 70 72 65 66 69 78 2d 73 74 xp-quote.(gptel-prompt-prefix-st
7f9a0 72 69 6e 67 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 65 6e 64 20 28 ring)))).............(setq.end.(
7f9c0 6d 61 74 63 68 2d 65 6e 64 20 30 29 29 29 29 29 0a 20 20 20 20 20 20 28 64 65 6c 65 74 65 2d 72 match-end.0))))).......(delete-r
7f9e0 65 67 69 6f 6e 20 62 65 67 20 65 6e 64 29 0a 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 61 74 74 egion.beg.end).......(gptel--att
7fa00 61 63 68 2d 72 65 73 70 6f 6e 73 65 2d 68 69 73 74 6f 72 79 20 70 72 65 76 2d 72 65 73 70 6f 6e ach-response-history.prev-respon
7fa20 73 65 73 29 0a 20 20 20 20 20 20 28 63 61 6c 6c 2d 69 6e 74 65 72 61 63 74 69 76 65 6c 79 20 23 ses).......(call-interactively.#
7fa40 27 67 70 74 65 6c 2d 2d 73 75 66 66 69 78 2d 73 65 6e 64 29 29 29 29 0a 0a 3b 3b 20 2a 2a 20 53 'gptel--suffix-send))))..;;.**.S
7fa60 65 74 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d et.system.message.(defun.gptel--
7fa80 72 65 61 64 2d 63 72 6f 77 64 73 6f 75 72 63 65 64 2d 70 72 6f 6d 70 74 20 28 29 0a 20 20 22 50 read-crowdsourced-prompt.()..."P
7faa0 69 63 6b 20 61 20 63 72 6f 77 64 73 6f 75 72 63 65 64 20 73 79 73 74 65 6d 20 70 72 6f 6d 70 74 ick.a.crowdsourced.system.prompt
7fac0 20 66 6f 72 20 67 70 74 65 6c 2e 0a 0a 54 68 69 73 20 75 73 65 73 20 74 68 65 20 70 72 6f 6d 70 .for.gptel...This.uses.the.promp
7fae0 74 73 20 69 6e 20 74 68 65 20 76 61 72 69 61 62 6c 65 0a 60 67 70 74 65 6c 2d 2d 63 72 6f 77 64 ts.in.the.variable.`gptel--crowd
7fb00 73 6f 75 72 63 65 64 2d 70 72 6f 6d 70 74 73 27 2c 20 77 68 69 63 68 20 73 65 65 2e 22 0a 20 20 sourced-prompts',.which.see."...
7fb20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 28 69 66 20 28 6e 6f 74 20 28 68 61 73 68 2d 74 (interactive)...(if.(not.(hash-t
7fb40 61 62 6c 65 2d 65 6d 70 74 79 2d 70 20 28 67 70 74 65 6c 2d 2d 63 72 6f 77 64 73 6f 75 72 63 65 able-empty-p.(gptel--crowdsource
7fb60 64 2d 70 72 6f 6d 70 74 73 29 29 29 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 63 68 6f 69 63 65 d-prompts))).......(let.((choice
7fb80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6d 70 6c 65 74 69 6e 67 2d 72 65 61 64 0a 20 ..............(completing-read..
7fba0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 50 69 63 6b 20 61 6e 64 20 65 64 69 74 20 70 72 6f 6d ............."Pick.and.edit.prom
7fbc0 70 74 3a 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 73 74 72 pt:."...............(lambda.(str
7fbe0 20 70 72 65 64 20 61 63 74 69 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 .pred.action).................(i
7fc00 66 20 28 65 71 20 61 63 74 69 6f 6e 20 27 6d 65 74 61 64 61 74 61 29 0a 20 20 20 20 20 20 20 20 f.(eq.action.'metadata).........
7fc20 20 20 20 20 20 20 20 20 20 20 20 20 60 28 6d 65 74 61 64 61 74 61 0a 20 20 20 20 20 20 20 20 20 ............`(metadata..........
7fc40 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 66 66 69 78 61 74 69 6f 6e 2d 66 75 6e 63 74 69 6f .............(affixation-functio
7fc60 6e 20 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 n..........................(lamb
7fc80 64 61 20 28 63 61 6e 64 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 da.(cands)......................
7fca0 20 20 20 20 28 6d 61 70 63 61 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ....(mapcar.....................
7fcc0 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 63 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ......(lambda.(c)...............
7fce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 63 20 22 22 0a 20 20 20 20 20 20 20 ..............(list.c.""........
7fd00 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
7fd20 72 6f 70 65 72 74 69 7a 65 20 22 20 22 20 27 64 69 73 70 6c 61 79 20 27 28 73 70 61 63 65 20 3a ropertize.".".'display.'(space.:
7fd40 61 6c 69 67 6e 2d 74 6f 20 32 32 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 align-to.22))...................
7fd60 20 20 20 20 20 20 20 20 20 20 20 20 22 20 22 20 28 70 72 6f 70 65 72 74 69 7a 65 20 28 67 65 74 ............".".(propertize.(get
7fd80 68 61 73 68 20 63 20 67 70 74 65 6c 2d 2d 63 72 6f 77 64 73 6f 75 72 63 65 64 2d 70 72 6f 6d 70 hash.c.gptel--crowdsourced-promp
7fda0 74 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ts).............................
7fdc0 20 20 20 27 66 61 63 65 20 27 63 6f 6d 70 6c 65 74 69 6f 6e 73 2d 61 6e 6e 6f 74 61 74 69 6f 6e ...'face.'completions-annotation
7fde0 73 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 s))))...........................
7fe00 63 61 6e 64 73 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6d cands))))...................(com
7fe20 70 6c 65 74 65 2d 77 69 74 68 2d 61 63 74 69 6f 6e 20 61 63 74 69 6f 6e 20 67 70 74 65 6c 2d 2d plete-with-action.action.gptel--
7fe40 63 72 6f 77 64 73 6f 75 72 63 65 64 2d 70 72 6f 6d 70 74 73 20 73 74 72 20 70 72 65 64 29 29 29 crowdsourced-prompts.str.pred)))
7fe60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 69 6c 20 74 29 29 29 0a 20 20 20 20 20 20 20 20 ...............nil.t))).........
7fe80 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 70 72 6f 6d 70 74 20 28 67 65 74 68 61 73 68 20 63 68 6f (when-let*.((prompt.(gethash.cho
7fea0 69 63 65 20 67 70 74 65 6c 2d 2d 63 72 6f 77 64 73 6f 75 72 63 65 64 2d 70 72 6f 6d 70 74 73 29 ice.gptel--crowdsourced-prompts)
7fec0 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 73 65 74 2d 77 69 74 68 2d 73 63 ))...........(gptel--set-with-sc
7fee0 6f 70 65 0a 20 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 ope............'gptel--system-me
7ff00 73 73 61 67 65 20 70 72 6f 6d 70 74 20 67 70 74 65 6c 2d 2d 73 65 74 2d 62 75 66 66 65 72 2d 6c ssage.prompt.gptel--set-buffer-l
7ff20 6f 63 61 6c 6c 79 29 0a 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 65 64 69 74 2d 64 ocally)...........(gptel--edit-d
7ff40 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 73 61 67 65 29 irective.'gptel--system-message)
7ff60 29 29 0a 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 4e 6f 20 70 72 6f 6d 70 74 73 20 61 76 61 69 )).....(message."No.prompts.avai
7ff80 6c 61 62 6c 65 2e 22 29 29 29 0a 0a 28 74 72 61 6e 73 69 65 6e 74 2d 64 65 66 69 6e 65 2d 73 75 lable.")))..(transient-define-su
7ffa0 66 66 69 78 20 67 70 74 65 6c 2d 2d 73 75 66 66 69 78 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 ffix.gptel--suffix-system-messag
7ffc0 65 20 28 26 6f 70 74 69 6f 6e 61 6c 20 63 61 6e 63 65 6c 29 0a 20 20 22 45 64 69 74 20 4c 4c 4d e.(&optional.cancel)..."Edit.LLM
7ffe0 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 2e 0a 0a 43 41 4e 43 45 4c 20 69 73 20 75 73 65 64 .system.message...CANCEL.is.used
80000 20 74 6f 20 61 76 6f 69 64 20 74 6f 75 63 68 69 6e 67 20 64 79 6e 61 6d 69 63 20 73 79 73 74 65 .to.avoid.touching.dynamic.syste
80020 6d 20 6d 65 73 73 61 67 65 73 2c 0a 67 65 6e 65 72 61 74 65 64 20 66 72 6f 6d 20 66 75 6e 63 74 m.messages,.generated.from.funct
80040 69 6f 6e 73 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 ions."...:transient.'transient--
80060 64 6f 2d 65 78 69 74 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 53 65 74 20 6f 72 20 65 do-exit...:description."Set.or.e
80080 64 69 74 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 22 0a 20 20 3a 66 6f 72 6d 61 74 20 22 20 dit.system.message"...:format.".
800a0 25 6b 20 20 20 25 64 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 %k...%d"...:key."s"...(interacti
800c0 76 65 0a 20 20 20 28 6c 69 73 74 20 28 61 6e 64 20 28 66 75 6e 63 74 69 6f 6e 70 20 67 70 74 65 ve....(list.(and.(functionp.gpte
800e0 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 l--system-message)..............
80100 20 28 6e 6f 74 20 28 79 2d 6f 72 2d 6e 2d 70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .(not.(y-or-n-p.................
80120 20 20 20 20 22 41 63 74 69 76 65 20 64 69 72 65 63 74 69 76 65 20 69 73 20 64 79 6e 61 6d 69 63 ...."Active.directive.is.dynamic
80140 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 72 72 65 6e 74 ally.generated:.Edit.its.current
80160 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 20 63 61 6e 63 .value.instead?")))))...(if.canc
80180 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 6e 63 65 6c 65 el.(progn.(message."Edit.cancele
801a0 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 6c 6c 2d 69 6e d").....................(call-in
801c0 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 0a 20 20 20 20 28 teractively.#'gptel-menu)).....(
801e0 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 73 79 gptel--edit-directive.'gptel--sy
80200 73 74 65 6d 2d 6d 65 73 73 61 67 65 20 3a 73 65 74 75 70 20 23 27 61 63 74 69 76 61 74 65 2d 6d stem-message.:setup.#'activate-m
80220 61 72 6b 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 ark)))..;;.MAYBE:.Eventually.can
80240 20 62 65 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 .be.simplified.with.string-edit,
80260 20 61 66 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 .after.we.drop.support.;;.for.Em
80280 61 63 73 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 acs.28.2..(cl-defun.gptel--edit-
802a0 64 69 72 65 63 74 69 76 65 20 28 73 79 6d 20 26 6b 65 79 20 70 72 6f 6d 70 74 20 69 6e 69 74 69 directive.(sym.&key.prompt.initi
802c0 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 0a 20 20 22 45 64 69 al.callback.setup.buffer)..."Edi
802e0 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 64 65 64 69 63 61 74 t.a.gptel.directive.in.a.dedicat
80300 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 75 6c 74 20 69 6e 20 ed.buffer...Store.the.result.in.
80320 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 64 20 49 4e 49 54 49 SYM,.a.symbol...PROMPT.and.INITI
80340 41 4c 20 61 72 65 20 74 68 65 0a 68 65 61 64 69 6e 67 20 61 6e 64 20 69 6e 69 74 69 61 6c 20 74 AL.are.the.heading.and.initial.t
80360 65 78 74 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 65 64 2c 20 ext...If.CALLBACK.is.specified,.
80380 69 74 20 69 73 20 72 75 6e 0a 61 66 74 65 72 20 65 78 69 74 69 6e 67 20 74 68 65 20 65 64 69 74 it.is.run.after.exiting.the.edit
803a0 2e 20 20 49 66 20 53 45 54 55 50 20 69 73 20 61 20 66 75 6e 63 74 69 6f 6e 2c 20 72 75 6e 20 69 ...If.SETUP.is.a.function,.run.i
803c0 74 20 61 66 74 65 72 0a 73 65 74 74 69 6e 67 20 75 70 20 74 68 65 20 62 75 66 66 65 72 2e 22 0a t.after.setting.up.the.buffer.".
803e0 20 20 28 64 65 63 6c 61 72 65 20 28 69 6e 64 65 6e 74 20 31 29 29 0a 20 20 28 6c 65 74 20 28 28 ..(declare.(indent.1))...(let.((
80400 6f 72 69 67 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 orig-buf.(or.buffer.(current-buf
80420 66 65 72 29 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 fer))).........(msg-start.(make-
80440 6d 61 72 6b 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 marker)).........(directive.(sym
80460 62 6f 6c 2d 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 bol-value.sym))).....(when.(func
80480 74 69 6f 6e 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 tionp.directive).......(setq.dir
804a0 65 63 74 69 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 ective.(funcall.directive)))....
804c0 20 3b 3b 20 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 .;;.TODO:.Handle.editing.list-of
804e0 2d 73 74 72 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 -strings.directives.....(with-cu
80500 72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 67 65 74 2d 62 75 66 66 65 72 2d 63 72 65 61 74 65 20 rrent-buffer.(get-buffer-create.
80520 22 2a 67 70 74 65 6c 2d 73 79 73 74 65 6d 2a 22 29 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 69 "*gptel-system*").......(let.((i
80540 6e 68 69 62 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 nhibit-read-only.t).(inhibit-mes
80560 73 61 67 65 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 sage.t)).........(erase-buffer).
80580 20 20 20 20 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 ........(text-mode).........(vis
805a0 75 61 6c 2d 6c 69 6e 65 2d 6d 6f 64 65 20 31 29 0a 20 20 20 20 20 20 20 20 28 73 65 74 71 20 68 ual-line-mode.1).........(setq.h
805c0 65 61 64 65 72 2d 6c 69 6e 65 2d 66 6f 72 6d 61 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 eader-line-format...............
805e0 28 63 6f 6e 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 (concat."Edit.your.instructions.
80600 62 65 6c 6f 77 20 61 6e 64 20 70 72 65 73 73 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 below.and.press."...............
80620 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 43 2d 63 22 20 27 66 ........(propertize."C-c.C-c".'f
80640 61 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 ace.'help-key-binding)..........
80660 20 20 20 20 20 20 20 20 20 20 20 20 20 22 20 77 68 65 6e 20 72 65 61 64 79 2c 20 6f 72 20 22 0a .............".when.ready,.or.".
80680 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 7a ......................(propertiz
806a0 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 79 2d 62 69 6e 64 e."C-c.C-k".'face.'help-key-bind
806c0 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 22 20 74 6f 20 ing).......................".to.
806e0 61 62 6f 72 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 abort.")).........(insert.......
80700 20 20 20 28 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 ...(or.prompt..............(conc
80720 61 74 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 75 at..............."#.Example:.You
80740 20 61 72 65 20 61 20 68 65 6c 70 66 75 6c 20 61 73 73 69 73 74 61 6e 74 2e 20 41 6e 73 77 65 72 .are.a.helpful.assistant..Answer
80760 20 61 73 20 63 6f 6e 63 69 73 65 6c 79 20 61 73 20 70 6f 73 73 69 62 6c 65 2e 5c 6e 22 0a 20 20 .as.concisely.as.possible.\n"...
80780 20 20 20 20 20 20 20 20 20 20 20 20 22 23 20 45 78 61 6d 70 6c 65 3a 20 52 65 70 6c 79 20 6f 6e ............"#.Example:.Reply.on
807a0 6c 79 20 77 69 74 68 20 73 68 65 6c 6c 20 63 6f 6d 6d 61 6e 64 73 20 61 6e 64 20 6e 6f 20 70 72 ly.with.shell.commands.and.no.pr
807c0 6f 73 65 2e 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 ose.\n"..............."#.Example
807e0 3a 20 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 :.You.are.a.poet..Reply.only.in.
80800 76 65 72 73 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 verse.")).........."\n\n")......
80820 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.........
80840 20 28 70 6f 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 .(point-min).(point)..........(l
80860 69 73 74 20 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 ist.'read-only.t.'face.'font-loc
80880 6b 2d 63 6f 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 k-comment-face.'front-sticky.t.'
808a0 72 65 61 72 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 rear-nonsticky.t)).........(set-
808c0 6d 61 72 6b 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 marker.msg-start.(point)).......
808e0 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 3b 3b 20 49 ..(save-excursion...........;;.I
80900 66 20 69 74 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 f.it's.a.list,.insert.only.the.s
80920 79 73 74 65 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 28 69 6e ystem.message.part...........(in
80940 73 65 72 74 20 28 6f 72 20 69 6e 69 74 69 61 6c 20 28 63 61 72 2d 73 61 66 65 20 28 67 70 74 65 sert.(or.initial.(car-safe.(gpte
80960 6c 2d 2d 70 61 72 73 65 2d 64 69 72 65 63 74 69 76 65 20 64 69 72 65 63 74 69 76 65 20 27 72 61 l--parse-directive.directive.'ra
80980 77 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 2d 6d 61 72 6b 20 6e 69 6c 20 27 w))))...........(push-mark.nil.'
809a0 6e 6f 6d 73 67 29 29 0a 20 20 20 20 20 20 20 20 28 61 6e 64 20 28 66 75 6e 63 74 69 6f 6e 70 20 nomsg)).........(and.(functionp.
809c0 73 65 74 75 70 29 20 28 66 75 6e 63 61 6c 6c 20 73 65 74 75 70 29 29 29 0a 20 20 20 20 20 20 28 setup).(funcall.setup))).......(
809e0 64 69 73 70 6c 61 79 2d 62 75 66 66 65 72 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 0a display-buffer.(current-buffer).
80a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 60 28 28 64 69 73 70 6c 61 79 ......................`((display
80a20 2d 62 75 66 66 65 72 2d 62 65 6c 6f 77 2d 73 65 6c 65 63 74 65 64 29 0a 20 20 20 20 20 20 20 20 -buffer-below-selected).........
80a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 6f 64 79 2d 66 75 6e 63 74 69 6f 6e 20 2e ................(body-function..
80a60 20 2c 23 27 73 65 6c 65 63 74 2d 77 69 6e 64 6f 77 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 .,#'select-window)..............
80a80 20 20 20 20 20 20 20 20 20 20 20 28 77 69 6e 64 6f 77 2d 68 65 69 67 68 74 20 2e 20 2c 23 27 66 ...........(window-height...,#'f
80aa0 69 74 2d 77 69 6e 64 6f 77 2d 74 6f 2d 62 75 66 66 65 72 29 29 29 0a 20 20 20 20 20 20 28 6c 65 it-window-to-buffer))).......(le
80ac0 74 20 28 28 71 75 69 74 2d 74 6f 2d 6d 65 6e 75 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c t.((quit-to-menu..............(l
80ae0 61 6d 62 64 61 20 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 43 61 6e 63 65 6c 20 ambda.()................"Cancel.
80b00 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 65 74 75 72 6e system.message.update.and.return
80b20 2e 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a ."................(interactive).
80b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 71 75 69 74 2d 77 69 6e 64 6f 77 29 0a 20 20 20 ...............(quit-window)....
80b60 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 6d 69 6e 69 62 75 66 66 65 72 70 ............(unless.(minibufferp
80b80 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 62 75 66 66 )..................(display-buff
80ba0 65 72 20 6f 72 69 67 2d 62 75 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 er.orig-buf.....................
80bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 60 28 28 64 69 73 70 6c 61 79 2d 62 75 66 66 65 72 2d 72 .............`((display-buffer-r
80be0 65 75 73 65 2d 77 69 6e 64 6f 77 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 euse-window.....................
80c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 69 73 70 6c 61 79 2d 62 75 66 66 65 72 2d 75 ................display-buffer-u
80c20 73 65 2d 73 6f 6d 65 2d 77 69 6e 64 6f 77 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 se-some-window).................
80c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 6f 64 79 2d 66 75 6e 63 74 69 6f ...................(body-functio
80c60 6e 20 2e 20 2c 23 27 73 65 6c 65 63 74 2d 77 69 6e 64 6f 77 29 29 29 29 0a 20 20 20 20 20 20 20 n...,#'select-window))))........
80c80 20 20 20 20 20 20 20 20 28 63 6f 6e 64 20 28 28 63 6f 6d 6d 61 6e 64 70 20 63 61 6c 6c 62 61 63 ........(cond.((commandp.callbac
80ca0 6b 29 20 28 63 61 6c 6c 2d 69 6e 74 65 72 61 63 74 69 76 65 6c 79 20 63 61 6c 6c 62 61 63 6b 29 k).(call-interactively.callback)
80cc0 29 0a 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 69 6f )......................((functio
80ce0 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 61 63 6b 29 29 np.callback).(funcall.callback))
80d00 29 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 )))).........(use-local-map.....
80d20 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 20 .....(make-composed-keymap......
80d40 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 20 20 .....(define-keymap.............
80d60 22 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 "C-c.C-c".............(lambda.()
80d80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 43 6f 6e 66 69 72 6d 20 73 79 73 74 65 6d 20 6d ..............."Confirm.system.m
80da0 65 73 73 61 67 65 20 61 6e 64 20 72 65 74 75 72 6e 2e 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 essage.and.return.".............
80dc0 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c ..(interactive)...............(l
80de0 65 74 20 28 28 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 et.((system-message.............
80e00 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 72 .........(buffer-substring-no-pr
80e20 6f 70 65 72 74 69 65 73 20 6d 73 67 2d 73 74 61 72 74 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 29 operties.msg-start.(point-max)))
80e40 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d ).................(with-current-
80e60 62 75 66 66 65 72 20 6f 72 69 67 2d 62 75 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 buffer.orig-buf.................
80e80 20 20 28 67 70 74 65 6c 2d 2d 73 65 74 2d 77 69 74 68 2d 73 63 6f 70 65 20 73 79 6d 0a 20 20 20 ..(gptel--set-with-scope.sym....
80ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
80ec0 20 20 20 20 20 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 ......(if.(cdr-safe.directive).;
80ee0 48 61 6e 64 6c 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 Handle.list.of.strings..........
80f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
80f20 20 20 20 20 28 70 72 6f 67 31 20 64 69 72 65 63 74 69 76 65 20 28 73 65 74 63 61 72 20 64 69 72 ....(prog1.directive.(setcar.dir
80f40 65 63 74 69 76 65 20 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 29 29 0a 20 20 20 20 20 20 20 20 ective.system-message)).........
80f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
80f80 20 20 20 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ...system-message)..............
80fa0 20 20 20 20 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
80fc0 6c 2d 2d 73 65 74 2d 62 75 66 66 65 72 2d 6c 6f 63 61 6c 6c 79 29 29 29 0a 20 20 20 20 20 20 20 l--set-buffer-locally)))........
80fe0 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 71 75 69 74 2d 74 6f 2d 6d 65 6e 75 29 29 0a 20 .......(funcall.quit-to-menu))..
81000 20 20 20 20 20 20 20 20 20 20 20 22 43 2d 63 20 43 2d 6b 22 20 71 75 69 74 2d 74 6f 2d 6d 65 6e ..........."C-c.C-k".quit-to-men
81020 75 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 u)...........text-mode-map))))))
81040 0a 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 ..;;.**.Suffix.for.displaying.an
81060 64 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 d.removing.context.(declare-func
81080 74 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 tion.gptel-context--buffer-setup
810a0 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
810c0 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 20 22 67 70 74 65 ion.gptel-context--collect."gpte
810e0 6c 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 l-context")..(transient-define-s
81100 75 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 uffix.gptel--suffix-context-buff
81120 65 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 er.()..."Display.all.contexts.fr
81140 6f 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 om.all.buffers.&.files."...:tran
81160 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 6b 65 79 sient.'transient--do-exit...:key
81180 20 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 .".C"...:if.(lambda.().gptel-con
811a0 74 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 text--alist)...:description."Ins
811c0 70 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 pect.context"...(interactive)...
811e0 28 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 (gptel-context--buffer-setup))..
81200 28 70 72 6f 76 69 64 65 20 27 67 70 74 65 6c 2d 74 72 61 6e 73 69 65 6e 74 29 0a 3b 3b 3b 20 67 (provide.'gptel-transient).;;;.g
81220 70 74 65 6c 2d 74 72 61 6e 73 69 65 6e 74 2e 65 6c 20 65 6e 64 73 20 68 65 72 65 0a 0a 3b 3b 20 ptel-transient.el.ends.here..;;.
81240 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 72 65 67 65 Local.Variables:.;;.outline-rege
81260 78 70 3a 20 22 5e 3b 3b 20 5c 5c 2a 2b 22 0a 3b 3b 20 65 76 61 6c 3a 20 28 6f 75 74 6c 69 6e 65 xp:."^;;.\\*+".;;.eval:.(outline
81280 2d 6d 69 6e 6f 72 2d 6d 6f 64 65 20 31 29 0a 3b 3b 20 45 6e 64 3a 0a 00 00 00 00 00 00 00 00 00 -minor-mode.1).;;.End:..........
812a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
812c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
812e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
81300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
81320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
81340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
81360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
81380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
813a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
813c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
813e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
81400 67 70 74 65 6c 2d 30 2e 39 2e 38 2e 35 2f 67 70 74 65 6c 2d 6f 70 65 6e 61 69 2d 65 78 74 72 61 gptel-0.9.8.5/gptel-openai-extra
81420 73 2e 65 6c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 s.el............................
81440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
81460 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
81480 30 30 34 32 32 31 34 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 35 36 36 32 00 20 30 00 00 00 0042214.00000000000.015662..0...
814a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
814c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
814e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
81500 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...................
81520 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...................
81540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
81560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
81580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
815a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
815c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
815e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
81600 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
81620 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.-*-.
81640 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
81660 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
81680 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
816a0 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
816c0 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
816e0 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.
81700 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.;;
81720 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
81740 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
81760 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
81780 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
817a0 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
817c0 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
817e0 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
81800 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
81820 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.
81840 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
81860 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
81880 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.
818a0 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.
818c0 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
818e0 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.
81900 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
81920 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:/
81940 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
81960 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
81980 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
819a0 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
819c0 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
819e0 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
81a00 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
81a20 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
81a40 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-
81a60 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-
81a80 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
81aa0 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
81ac0 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
81ae0 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".())
81b00 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
81b20 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
81b40 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
81b60 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).........................
81b80 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)............
81ba0 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
81bc0 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).
81be0 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-
81c00 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
81c20 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
81c40 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
81c60 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))...
81c80 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-
81ca0 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
81cc0 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
81ce0 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.'
81d00 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
81d20 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.
81d40 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
81d60 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
81d80 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
81da0 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
81dc0 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
81de0 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
81e00 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))...................
81e20 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
81e40 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)".
81e60 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.
81e80 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.",."))....................
81ea0 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..............
81ec0 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."-.%
81ee0 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.
81f00 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
81f20 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."
81f40 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"
81f60 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
81f80 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
81fa0 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
81fc0 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
81fe0 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....
82000 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."
82020 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
82040 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
82060 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\\]")...........
82080 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
820a0 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)))...
820c0 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
820e0 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)).............
82100 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
82120 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.
82140 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)..................
82160 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
82180 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
821a0 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-
821c0 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
821e0 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)))..
82200 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
82220 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)))..
82240 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
82260 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.
82280 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.
822a0 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
822c0 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
822e0 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
82300 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
82320 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
82340 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
82360 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
82380 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
823a0 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)))........
823c0 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
823e0 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.
82400 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))......................
82420 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
82440 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
82460 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
82480 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
824a0 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
824c0 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
824e0 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."...(
82500 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..........`(:
82520 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-
82540 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]
82560 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
82580 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).
825a0 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
825c0 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
825e0 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)....
82600 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
82620 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
82640 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..........
82660 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
82680 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
826a0 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
826c0 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
826e0 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
82700 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
82720 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
82740 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
82760 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
82780 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.
827a0 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...
827c0 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
827e0 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
82800 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)....
82820 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..
82840 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
82860 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
82880 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
828a0 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
828c0 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
828e0 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
82900 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"...,(
82920 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))))))......
82940 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")....
82960 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
82980 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
829a0 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").
829c0 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
829e0 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
82a00 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
82a20 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
82a40 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.
82a60 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
82a80 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
82aa0 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..
82ac0 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
82ae0 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
82b00 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,.
82b20 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
82b40 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,.
82b60 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
82b80 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
82ba0 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
82bc0 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.
82be0 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
82c00 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
82c20 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
82c40 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
82c60 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
82c80 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.
82ca0 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
82cc0 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
82ce0 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.
82d00 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
82d20 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
82d40 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
82d60 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
82d80 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
82da0 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
82dc0 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
82de0 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.
82e00 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
82e20 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
82e40 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......
82e60 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
82e80 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..
82ea0 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.....
82ec0 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....
82ee0 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.........
82f00 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........
82f20 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...
82f40 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
82f60 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
82f80 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
82fa0 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............
82fc0 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........
82fe0 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
83000 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).......
83020 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.
83040 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
83060 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...................
83080 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
830a0 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
830c0 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........
830e0 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)
83100 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
83120 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
83140 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
83160 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
83180 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))).
831a0 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
831c0 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.
831e0 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
83200 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
83220 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)...............
83240 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
83260 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))..........................
83280 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)).
832a0 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
832c0 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--
832e0 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-
83300 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
83320 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
83340 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
83360 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
83380 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))).........
833a0 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
833c0 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
833e0 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
83400 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))))
83420 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
83440 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.
83460 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
83480 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
834a0 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
834c0 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
834e0 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
83500 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."...
83520 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
83540 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.
83560 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
83580 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)
835a0 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
835c0 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)........
835e0 20 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
83600 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)...........(
83620 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.
83640 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
83660 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
83680 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
836a0 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*.(
836c0 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))......
836e0 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.
83700 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)))....
83720 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
83740 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
83760 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
83780 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...........
837a0 20 20 20 20 20 20 20 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
837c0 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))..;;
837e0 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
83800 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
83820 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
83840 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
83860 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)))
83880 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
838a0 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)
838c0 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
838e0 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."
83900 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
83920 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
83940 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
83960 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
83980 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))
839a0 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
839c0 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
839e0 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
83a00 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
83a20 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
83a40 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
83a60 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.
83a80 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
83aa0 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
83ac0 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
83ae0 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
83b00 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
83b20 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
83b40 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
83b60 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
83b80 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
83ba0 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
83bc0 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
83be0 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
83c00 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
83c20 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
83c40 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
83c60 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
83c80 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
83ca0 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)
83cc0 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-
83ce0 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
83d00 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...............
83d20 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..................
83d40 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
83d60 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...................:
83d80 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
83da0 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
83dc0 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...................
83de0 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..............
83e00 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.............
83e20 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
83e40 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.
83e60 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........................
83e80 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.
83ea0 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).......................
83ec0 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)))))...
83ee0 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
83f00 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
83f20 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
83f40 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))
83f60 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.(
83f80 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
83fa0 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)..........................
83fc0 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)..............
83fe0 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
84000 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
84020 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 6d 20 3a ethod.gptel-curl--parse-stream.:
84040 62 65 66 6f 72 65 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 before.((_backend.gptel-deepseek
84060 29 20 69 6e 66 6f 29 0a 20 20 22 43 61 70 74 75 72 65 20 72 65 61 73 6f 6e 69 6e 67 20 62 6c 6f ).info)..."Capture.reasoning.blo
84080 63 6b 20 73 74 72 65 61 6d 20 69 6e 74 6f 20 49 4e 46 4f 2e 22 0a 20 20 28 75 6e 6c 65 73 73 20 ck.stream.into.INFO."...(unless.
840a0 28 65 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 (eq.(plist-get.info.:reasoning-b
840c0 6c 6f 63 6b 29 20 27 64 6f 6e 65 29 0a 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e lock).'done).....(save-excursion
840e0 0a 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 28 63 .......(ignore-errors.........(c
84100 61 74 63 68 20 27 64 6f 6e 65 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 69 6c 65 20 28 72 65 2d atch.'done...........(while.(re-
84120 73 65 61 72 63 68 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 search-forward."^data:".nil.t)..
84140 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 6c 6f 6f 6b 69 6e 67 2d 61 74 2d 70 ...........(unless.(looking-at-p
84160 20 22 20 2a 5c 5c 5b 44 4f 4e 45 5c 5c 5d 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 .".*\\[DONE\\]")...............(
84180 77 68 65 6e 2d 6c 65 74 2a 20 28 28 72 65 73 70 6f 6e 73 65 20 28 67 70 74 65 6c 2d 2d 6a 73 6f when-let*.((response.(gptel--jso
841a0 6e 2d 72 65 61 64 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 n-read))........................
841c0 20 20 20 28 64 65 6c 74 61 20 28 6d 61 70 2d 6e 65 73 74 65 64 2d 65 6c 74 20 72 65 73 70 6f 6e ...(delta.(map-nested-elt.respon
841e0 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 29 0a 20 20 20 20 20 se.'(:choices.0.:delta))))......
84200 20 20 20 20 20 20 20 20 20 20 20 28 69 66 2d 6c 65 74 2a 20 28 28 72 65 61 73 6f 6e 69 6e 67 20 ...........(if-let*.((reasoning.
84220 28 70 6c 69 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 (plist-get.delta.:reasoning_cont
84240 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 20 20 20 20 20 20 ent))...........................
84260 28 28 6e 6f 74 20 28 65 71 20 72 65 61 73 6f 6e 69 6e 67 20 3a 6e 75 6c 6c 29 29 29 29 0a 20 20 ((not.(eq.reasoning.:null))))...
84280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 3a 72 65 61 73 6f 6e 69 6e 67 20 ..................;;.:reasoning.
842a0 77 69 6c 6c 20 62 65 20 63 6f 6e 73 75 6d 65 64 20 62 79 20 74 68 65 20 67 70 74 65 6c 2d 72 65 will.be.consumed.by.the.gptel-re
842c0 71 75 65 73 74 20 63 61 6c 6c 62 61 63 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 quest.callback..................
842e0 20 20 20 3b 3b 20 61 6e 64 20 72 65 73 65 74 20 62 79 20 74 68 65 20 73 74 72 65 61 6d 20 66 69 ...;;.and.reset.by.the.stream.fi
84300 6c 74 65 72 2e 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 74 lter......................(plist
84320 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............
84340 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
84360 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
84380 67 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 g))...................(when-let*
843a0 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 20 3a 63 6f 6e .((content.(plist-get.delta.:con
843c0 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 20 20 20 20 20 tent))..........................
843e0 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 29 29 29 29 .....((not.(eq.content.:null))))
84400 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 20 28 70 6c .....................(if.(eq.(pl
84420 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).'
84440 69 6e 29 20 3b 43 68 65 63 6b 20 69 66 20 69 6e 20 72 65 61 73 6f 6e 69 6e 67 20 62 6c 6f 63 6b in).;Check.if.in.reasoning.block
84460 0a 20 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-
84480 70 75 74 20 69 6e 66 6f 20 3a 72 65 61 73 6f 6e 69 6e 67 2d 62 6c 6f 63 6b 20 74 29 20 3b 45 6e put.info.:reasoning-block.t).;En
844a0 64 20 6f 66 20 73 74 72 65 61 6d 69 6e 67 20 72 65 61 73 6f 6e 69 6e 67 20 62 6c 6f 63 6b 0a 20 d.of.streaming.reasoning.block..
844c0 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.
844e0 69 6e 66 6f 20 3a 72 65 61 73 6f 6e 69 6e 67 2d 62 6c 6f 63 6b 20 27 64 6f 6e 65 29 29 20 3b 4e info.:reasoning-block.'done)).;N
84500 6f 74 20 75 73 69 6e 67 20 61 20 72 65 61 73 6f 6e 69 6e 67 20 6d 6f 64 65 6c 0a 20 20 20 20 20 ot.using.a.reasoning.model......
84520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 68 72 6f 77 20 27 64 6f 6e 65 20 74 29 29 29 ...............(throw.'done.t)))
84540 29 29 29 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 ))))))))..(cl-defmethod.gptel--p
84560 61 72 73 65 2d 72 65 73 70 6f 6e 73 65 20 3a 62 65 66 6f 72 65 20 28 28 5f 62 61 63 6b 65 6e 64 arse-response.:before.((_backend
84580 20 67 70 74 65 6c 2d 64 65 65 70 73 65 65 6b 29 20 72 65 73 70 6f 6e 73 65 20 69 6e 66 6f 29 0a .gptel-deepseek).response.info).
845a0 20 20 22 43 61 70 74 75 72 65 20 72 65 61 73 6f 6e 69 6e 67 20 62 6c 6f 63 6b 20 69 6e 20 52 45 .."Capture.reasoning.block.in.RE
845c0 53 50 4f 4e 53 45 20 69 6e 74 6f 20 49 4e 46 4f 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 63 68 6f SPONSE.into.INFO."...(let*.((cho
845e0 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 27 28 ice0.(map-nested-elt.response.'(
84600 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 65 20 :choices.0)))..........(message.
84620 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 20 20 (plist-get.choice0.:message))...
84640 20 20 20 20 20 20 20 28 72 65 61 73 6f 6e 69 6e 67 20 28 70 6c 69 73 74 2d 67 65 74 20 6d 65 73 .......(reasoning.(plist-get.mes
84660 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 0a 20 20 20 20 28 sage.:reasoning_content))).....(
84680 77 68 65 6e 20 28 61 6e 64 20 28 73 74 72 69 6e 67 70 20 72 65 61 73 6f 6e 69 6e 67 29 20 28 6c when.(and.(stringp.reasoning).(l
846a0 65 6e 67 74 68 3e 20 72 65 61 73 6f 6e 69 6e 67 20 30 29 29 0a 20 20 20 20 20 20 28 70 6c 69 73 ength>.reasoning.0)).......(plis
846c0 74 2d 70 75 74 20 69 6e 66 6f 20 3a 72 65 61 73 6f 6e 69 6e 67 20 72 65 61 73 6f 6e 69 6e 67 29 t-put.info.:reasoning.reasoning)
846e0 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-
84700 62 75 66 66 65 72 20 3a 61 72 6f 75 6e 64 20 28 28 5f 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d buffer.:around.((_backend.gptel-
84720 64 65 65 70 73 65 65 6b 29 20 5f 6d 61 78 2d 65 6e 74 72 69 65 73 29 0a 20 20 22 4d 65 72 67 65 deepseek)._max-entries)..."Merge
84740 20 73 75 63 63 65 73 73 69 76 65 20 70 72 6f 6d 70 74 73 20 69 6e 20 74 68 65 20 70 72 6f 6d 70 .successive.prompts.in.the.promp
84760 74 73 20 6c 69 73 74 20 74 68 61 74 20 68 61 76 65 20 74 68 65 20 73 61 6d 65 20 72 6f 6c 65 2e ts.list.that.have.the.same.role.
84780 0a 0a 54 68 65 20 44 65 65 70 73 65 65 6b 20 41 50 49 20 72 65 71 75 69 72 65 73 20 73 74 72 69 ..The.Deepseek.API.requires.stri
847a0 63 74 6c 79 20 61 6c 74 65 72 6e 61 74 69 6e 67 20 72 6f 6c 65 73 20 28 75 73 65 72 2f 61 73 73 ctly.alternating.roles.(user/ass
847c0 69 73 74 61 6e 74 29 20 69 6e 20 6d 65 73 73 61 67 65 73 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 istant).in.messages."...(let*.((
847e0 70 72 6f 6d 70 74 73 20 28 63 6c 2d 63 61 6c 6c 2d 6e 65 78 74 2d 6d 65 74 68 6f 64 29 29 0a 20 prompts.(cl-call-next-method))..
84800 20 20 20 20 20 20 20 20 28 69 6e 64 65 78 20 70 72 6f 6d 70 74 73 29 29 0a 20 20 20 20 28 70 72 ........(index.prompts)).....(pr
84820 6f 67 31 20 70 72 6f 6d 70 74 73 0a 20 20 20 20 20 20 28 77 68 69 6c 65 20 69 6e 64 65 78 0a 20 og1.prompts.......(while.index..
84840 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 70 31 20 28 63 61 72 20 69 6e 64 65 78 29 29 0a 20 20 .......(let.((p1.(car.index))...
84860 20 20 20 20 20 20 20 20 20 20 20 20 28 70 32 20 28 63 61 64 72 20 69 6e 64 65 78 29 29 0a 20 20 ............(p2.(cadr.index))...
84880 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 73 74 20 28 63 64 72 20 69 6e 64 65 78 29 29 29 0a ............(rest.(cdr.index))).
848a0 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 61 6e 64 20 70 32 20 28 65 71 75 61 6c 20 28 ..........(when.(and.p2.(equal.(
848c0 70 6c 69 73 74 2d 67 65 74 20 70 31 20 3a 72 6f 6c 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 plist-get.p1.:role).............
848e0 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 70 32 ...................(plist-get.p2
84900 20 3a 72 6f 6c 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 66 20 28 70 6c 69 .:role))).............(setf.(pli
84920 73 74 2d 67 65 74 20 70 31 20 3a 63 6f 6e 74 65 6e 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 st-get.p1.:content).............
84940 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 28 70 6c 69 73 74 2d 67 65 74 20 70 31 20 3a 63 6f 6e ......(concat.(plist-get.p1.:con
84960 74 65 6e 74 29 20 22 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 tent)."\n"......................
84980 20 20 20 20 20 28 70 6c 69 73 74 2d 67 65 74 20 70 32 20 3a 63 6f 6e 74 65 6e 74 29 29 29 0a 20 .....(plist-get.p2.:content)))..
849a0 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 63 64 72 20 69 6e 64 65 78 20 28 63 64 72 20 72 65 ...........(setcdr.index.(cdr.re
849c0 73 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 69 6e 64 65 78 20 28 63 64 72 st)))...........(setq.index.(cdr
849e0 20 69 6e 64 65 78 29 29 29 29 29 29 29 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a 28 63 .index)))))))..;;;###autoload.(c
84a00 6c 2d 64 65 66 75 6e 20 67 70 74 65 6c 2d 6d 61 6b 65 2d 64 65 65 70 73 65 65 6b 0a 20 20 20 20 l-defun.gptel-make-deepseek.....
84a20 28 6e 61 6d 65 20 26 6b 65 79 20 63 75 72 6c 2d 61 72 67 73 20 73 74 72 65 61 6d 20 6b 65 79 20 (name.&key.curl-args.stream.key.
84a40 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 65 61 64 65 72 request-params...........(header
84a60 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
84a80 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))).............
84aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 60 28 28 22 41 75 74 68 6f 72 69 7a 61 74 69 6f 6e 22 ..............`(("Authorization"
84ac0 20 2e 20 2c 28 63 6f 6e 63 61 74 20 22 42 65 61 72 65 72 20 22 20 6b 65 79 29 29 29 29 29 29 0a ...,(concat."Bearer.".key)))))).
84ae0 20 20 20 20 20 20 20 20 20 20 28 68 6f 73 74 20 22 61 70 69 2e 64 65 65 70 73 65 65 6b 2e 63 6f ..........(host."api.deepseek.co
84b00 6d 22 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 74 6f 63 6f 6c 20 22 68 74 74 70 73 22 29 m")...........(protocol."https")
84b20 0a 20 20 20 20 20 20 20 20 20 20 28 65 6e 64 70 6f 69 6e 74 20 22 2f 76 31 2f 63 68 61 74 2f 63 ...........(endpoint."/v1/chat/c
84b40 6f 6d 70 6c 65 74 69 6f 6e 73 22 29 0a 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 65 6c 73 20 27 ompletions")...........(models.'
84b60 28 28 64 65 65 70 73 65 65 6b 2d 72 65 61 73 6f 6e 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 ((deepseek-reasoner.............
84b80 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 20 72 65 61 .........:capabilities.(tool.rea
84ba0 73 6f 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 3a 63 6f soning)......................:co
84bc0 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 36 34 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ntext-window.64.................
84be0 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 30 2e 35 35 0a 20 20 20 20 20 20 20 20 20 20 .....:input-cost.0.55...........
84c00 20 20 20 20 20 20 20 20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 32 2e 31 39 29 0a 20 20 ...........:output-cost.2.19)...
84c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 65 65 70 73 65 65 6b 2d 63 68 61 74 ..................(deepseek-chat
84c40 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 61 62 69 6c 69 74 ......................:capabilit
84c60 69 65 73 20 28 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 20 ies.(tool)......................
84c80 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 36 34 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 :context-window.64..............
84ca0 20 20 20 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 30 2e 32 37 0a 20 20 20 20 20 20 20 ........:input-cost.0.27........
84cc0 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 2e 31 30 29 ..............:output-cost.1.10)
84ce0 29 29 29 0a 20 20 22 52 65 67 69 73 74 65 72 20 61 20 44 65 65 70 53 65 65 6b 20 62 61 63 6b 65 )))..."Register.a.DeepSeek.backe
84d00 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 46 6f 72 20 74 68 65 nd.for.gptel.with.NAME...For.the
84d20 20 6d 65 61 6e 69 6e 67 73 20 6f 66 20 74 68 65 20 6b 65 79 77 6f 72 64 20 61 72 67 75 6d 65 6e .meanings.of.the.keyword.argumen
84d40 74 73 2c 20 73 65 65 20 60 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 27 2e 22 0a 20 20 ts,.see.`gptel-make-openai'."...
84d60 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
84d80 63 6b 65 6e 64 20 28 67 70 74 65 6c 2d 2d 6d 61 6b 65 2d 64 65 65 70 73 65 65 6b 0a 20 20 20 20 ckend.(gptel--make-deepseek.....
84da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6e 61 6d 65 20 6e 61 6d 65 0a 20 20 20 20 20 20 20 ..............:name.name........
84dc0 20 20 20 20 20 20 20 20 20 20 20 3a 68 6f 73 74 20 68 6f 73 74 0a 20 20 20 20 20 20 20 20 20 20 ...........:host.host...........
84de0 20 20 20 20 20 20 20 20 3a 68 65 61 64 65 72 20 68 65 61 64 65 72 0a 20 20 20 20 20 20 20 20 20 ........:header.header..........
84e00 20 20 20 20 20 20 20 20 20 3a 6b 65 79 20 6b 65 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .........:key.key...............
84e20 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 2d 6d 6f 64 65 ....:models.(gptel--process-mode
84e40 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 20 20 3a 70 72 ls.models)...................:pr
84e60 6f 74 6f 63 6f 6c 20 70 72 6f 74 6f 63 6f 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 otocol.protocol.................
84e80 20 20 3a 65 6e 64 70 6f 69 6e 74 20 65 6e 64 70 6f 69 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 ..:endpoint.endpoint............
84ea0 20 20 20 20 20 20 20 3a 73 74 72 65 61 6d 20 73 74 72 65 61 6d 0a 20 20 20 20 20 20 20 20 20 20 .......:stream.stream...........
84ec0 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 75 65 73 74 2d ........:request-params.request-
84ee0 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 63 75 72 6c 2d 61 params...................:curl-a
84f00 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 20 20 20 20 rgs.curl-args...................
84f20 3a 75 72 6c 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 :url.(concat.protocol."://".host
84f40 20 65 6e 64 70 6f 69 6e 74 29 29 29 29 0a 20 20 20 20 28 73 65 74 66 20 28 61 6c 69 73 74 2d 67 .endpoint)))).....(setf.(alist-g
84f60 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 6e 69 et.name.gptel--known-backends.ni
84f80 6c 20 6e 69 6c 20 23 27 65 71 75 61 6c 29 20 62 61 63 6b 65 6e 64 29 0a 20 20 20 20 62 61 63 6b l.nil.#'equal).backend).....back
84fa0 65 6e 64 29 29 0a 0a 3b 3b 3b 20 78 41 49 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a 28 63 end))..;;;.xAI.;;;###autoload.(c
84fc0 6c 2d 64 65 66 75 6e 20 67 70 74 65 6c 2d 6d 61 6b 65 2d 78 61 69 0a 20 20 20 20 28 6e 61 6d 65 l-defun.gptel-make-xai.....(name
84fe0 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 20 72 65 71 75 65 .&key.curl-args.stream.key.reque
85000 73 74 2d 70 61 72 61 6d 73 0a 20 20 20 20 20 20 20 20 20 20 28 68 65 61 64 65 72 20 28 6c 61 6d st-params...........(header.(lam
85020 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 74 65 6c 2d 2d bda.().(when-let*.((key.(gptel--
85040 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 20 20 20 20 20 get-api-key)))..................
85060 20 20 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 .........`(("Authorization"...,(
85080 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))))))......
850a0 20 20 20 20 20 28 68 6f 73 74 20 22 61 70 69 2e 78 2e 61 69 22 29 0a 20 20 20 20 20 20 20 20 20 .....(host."api.x.ai")..........
850c0 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
850e0 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").
85100 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 65 6c 73 20 27 28 28 67 72 6f 6b 2d 33 2d 6c 61 74 65 ..........(models.'((grok-3-late
85120 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 64 65 73 63 72 69 70 st......................:descrip
85140 74 69 6f 6e 20 22 47 72 6f 6b 20 33 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 tion."Grok.3"...................
85160 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
85180 29 0a 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 78 74 2d )......................:context-
851a0 77 69 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 20 20 20 20 window.131072...................
851c0 20 20 20 3a 69 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 20 ...:input-cost.3................
851e0 20 20 20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 31 35 29 0a 0a 20 20 20 20 20 20 20 20 ......:output-cost.15)..........
85200 20 20 20 20 20 20 20 20 20 20 20 20 28 67 72 6f 6b 2d 33 2d 66 61 73 74 2d 6c 61 74 65 73 74 0a ............(grok-3-fast-latest.
85220 20 20 20 20 20 20 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 .....................:descriptio
85240 6e 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 n."Faster.Grok.3"...............
85260 20 20 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 .......:capabilities.'(tool-use.
85280 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 3a 63 6f 6e 74 json)......................:cont
852a0 65 78 74 2d 77 69 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 ext-window.131072...............
852c0 20 20 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 35 0a 20 20 20 20 20 20 20 20 20 20 20 .......:input-cost.5............
852e0 20 20 20 20 20 20 20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 32 35 29 0a 0a 20 20 20 20 ..........:output-cost.25)......
85300 20 20 20 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 6c 61 74 ................(grok-3-mini-lat
85320 65 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 64 65 73 63 72 69 est......................:descri
85340 70 74 69 6f 6e 20 22 4d 69 6e 69 20 47 72 6f 6b 20 33 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 ption."Mini.Grok.3".............
85360 20 20 20 20 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 .........:capabilities.'(tool-us
85380 65 20 6a 73 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 e.json.reasoning)...............
853a0 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 31 30 37 32 0a 20 20 .......:context-window.131072...
853c0 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 63 6f 73 74 20 30 ...................:input-cost.0
853e0 2e 33 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6f 75 74 70 75 74 2d .3......................:output-
85400 63 6f 73 74 20 30 2e 35 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 cost.0.5)......................(
85420 67 72 6f 6b 2d 33 2d 6d 69 6e 69 2d 66 61 73 74 2d 6c 61 74 65 73 74 0a 20 20 20 20 20 20 20 20 grok-3-mini-fast-latest.........
85440 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 65 .............:description."Faste
85460 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 20 20 20 r.mini.Grok.3"..................
85480 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 6f ....:capabilities.'(tool-use.jso
854a0 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 20 20 20 20 20 n.reasoning)....................
854c0 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 31 33 31 30 37 32 0a 20 20 20 20 20 20 20 ..:context-window.131072........
854e0 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 36 0a 20 20 ..............:input-cost.0.6...
85500 20 20 20 20 20 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 ...................:output-cost.
85520 34 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 72 6f 6b 2d 32 2d 4)......................(grok-2-
85540 76 69 73 69 6f 6e 2d 31 32 31 32 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 vision-1212.....................
85560 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 47 72 6f 6b 20 32 20 56 69 73 69 6f 6e 22 0a 20 20 .:description."Grok.2.Vision"...
85580 20 20 20 20 20 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 73 ...................:capabilities
855a0 20 27 28 74 6f 6f 6c 2d 75 73 65 20 6a 73 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .'(tool-use.json)...............
855c0 20 20 20 20 20 20 20 3a 6d 69 6d 65 2d 74 79 70 65 73 20 27 28 22 69 6d 61 67 65 2f 6a 70 65 67 .......:mime-types.'("image/jpeg
855e0 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
85600 2f 77 65 62 70 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 6f /webp")......................:co
85620 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 33 32 37 36 38 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ntext-window.32768..............
85640 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 20 ........:input-cost.2...........
85660 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 30 29 29 29 29 0a 20 ...........:output-cost.10))))..
85680 20 22 52 65 67 69 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 ."Register.an.xAI.backend.for.gp
856a0 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
856c0 73 3a 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 20 76 61 6c 75 s:..KEY.is.a.variable.whose.valu
856e0 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 6f 6e 20 74 68 e.is.the.API.key,.or.function.th
85700 61 74 0a 72 65 74 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 at.returns.the.key...STREAM.is.a
85720 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
85740 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 54 68 65 20 ponses,.defaults.to.false...The.
85760 6f 74 68 65 72 20 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 other.keyword.arguments.are.all.
85780 6f 70 74 69 6f 6e 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 optional...For.their.meanings.se
857a0 65 20 60 67 70 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 e.`gptel-make-openai'."...(decla
857c0 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.
857e0 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.............
85800 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................
85820 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...................
85840 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..................
85860 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
85880 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
858a0 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
858c0 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
858e0 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...................:
85900 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...................
85920 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..
85940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 75 72 6c 2d 61 72 67 73 20 63 75 72 6c .................:curl-args.curl
85960 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 75 72 6c 20 28 63 6f -args...................:url.(co
85980 6e 63 61 74 20 70 72 6f 74 6f 63 6f 6c 20 22 3a 2f 2f 22 20 68 6f 73 74 20 65 6e 64 70 6f 69 6e ncat.protocol."://".host.endpoin
859a0 74 29 29 29 29 0a 20 20 20 20 28 73 65 74 66 20 28 61 6c 69 73 74 2d 67 65 74 20 6e 61 6d 65 20 t)))).....(setf.(alist-get.name.
859c0 67 70 74 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 gptel--known-backends.nil.nil.#'
859e0 65 71 75 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 0a equal).backend).....backend))...
85a00 28 70 72 6f 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 (provide.'gptel-openai-extras).;
85a20 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 65 6e 64 73 20 68 ;;.gptel-openai-extras.el.ends.h
85a40 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 74 65 ere..;;.Local.Variables:.;;.byte
85a60 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 72 69 6e -compile-warnings:.(not.docstrin
85a80 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 00 00 00 gs).;;.End:.....................
85aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
85ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
85ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
85b00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
85b20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
85b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
85b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
85b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
85ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
85bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
85be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
85c00 67 70 74 65 6c 2d 30 2e 39 2e 38 2e 35 2f 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2e 65 6c 00 00 gptel-0.9.8.5/gptel-context.el..
85c20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
85c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
85c60 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
85c80 30 30 36 37 30 33 34 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 34 35 37 36 00 20 30 00 00 00 0067034.00000000000.014576..0...
85ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
85cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
85ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
85d00 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...................
85d20 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...................
85d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
85d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
85d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
85da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
85dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
85de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
85e00 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
85e20 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
85e40 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
85e60 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
85e80 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
85ea0 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
85ec0 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
85ee0 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
85f00 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
85f20 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
85f40 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
85f60 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
85f80 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
85fa0 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
85fc0 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
85fe0 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...
86000 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
86020 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
86040 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;.
86060 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
86080 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
860a0 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
860c0 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
860e0 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
86100 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
86120 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
86140 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,
86160 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
86180 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
861a0 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
861c0 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
861e0 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:..;;;.
86200 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
86220 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)..(
86240 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
86260 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
86280 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")
862a0 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
862c0 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
862e0 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").
86300 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
86320 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)..
86340 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
86360 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
86380 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
863a0 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)...
863c0 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
863e0 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
86400 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)
86420 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
86440 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-
86460 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)).
86480 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
864a0 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
864c0 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))...
864e0 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
86500 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
86520 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))......
86540 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)
86560 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
86580 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
865a0 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.
865c0 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
865e0 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
86600 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
86620 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
86640 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
86660 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
86680 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
866a0 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.
866c0 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
866e0 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
86700 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
86720 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
86740 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.
86760 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
86780 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
867a0 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...
867c0 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
867e0 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
86800 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
86820 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
86840 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.
86860 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.
86880 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
868a0 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
868c0 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
868e0 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
86900 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\")...(
86920 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
86940 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\
86960 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.
86980 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
869a0 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
869c0 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
869e0 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
86a00 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
86a20 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
86a40 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.(
86a60 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).........
86a80 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
86aa0 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
86ac0 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
86ae0 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
86b00 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,
86b20 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"
86b40 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
86b60 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-
86b80 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
86ba0 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*").
86bc0 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
86be0 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
86c00 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
86c20 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)......
86c40 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")))......
86c60 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
86c80 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)
86ca0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
86cc0 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))......
86ce0 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
86d00 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
86d20 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
86d40 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
86d60 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
86d80 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
86da0 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
86dc0 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
86de0 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.
86e00 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
86e20 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
86e40 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
86e60 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.
86e80 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
86ea0 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
86ec0 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
86ee0 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
86f00 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
86f20 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.
86f40 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...
86f60 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
86f80 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.
86fa0 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
86fc0 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
86fe0 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
87000 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
87020 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...
87040 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
87060 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
87080 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
870a0 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
870c0 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)...........
870e0 20 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-
87100 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)......................
87120 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)).....(
87140 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
87160 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."
87180 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
871a0 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*.
871c0 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)
871e0 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
87200 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)).
87220 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-
87240 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
87260 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-
87280 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
872a0 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
872c0 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
872e0 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
87300 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?
87320 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
87340 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"))
87360 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))))...
87380 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
873a0 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).
873c0 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
873e0 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
87400 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.
87420 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)
87440 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-
87460 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
87480 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
874a0 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
874c0 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..
874e0 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-
87500 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
87520 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
87540 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:.".........
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 20 20 20 28 63 75 .............................(cu
87580 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
875a0 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-
875c0 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
875e0 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
87600 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-
87620 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-
87640 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)
87660 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
87680 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)))..
876a0 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.
876c0 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.(<
876e0 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)).
87700 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)....
87720 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
87740 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?.")).......(
87760 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))......
87780 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..........
877a0 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
877c0 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).(
877e0 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.
87800 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
87820 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).........
87840 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
87860 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
87880 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
878a0 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.".................
878c0 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.......
878e0 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
87900 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
87920 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
87940 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
87960 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
87980 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
879a0 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)............
879c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
879e0 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-
87a00 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)))..............
87a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
87a40 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))))....
87a60 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
87a80 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.")).......
87aa0 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
87ac0 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
87ae0 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
87b00 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.")))))..;
87b20 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
87b40 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
87b60 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
87b80 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
87ba0 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
87bc0 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
87be0 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
87c00 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
87c20 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
87c40 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
87c60 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)..
87c80 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
87ca0 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.
87cc0 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.
87ce0 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
87d00 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
87d20 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))...........
87d40 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
87d60 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
87d80 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)))
87da0 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
87dc0 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)...
87de0 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-
87e00 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
87e20 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
87e40 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
87e60 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.\"%
87e80 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
87ea0 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
87ec0 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
87ee0 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.
87f00 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.
87f20 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
87f40 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.
87f60 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.
87f80 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
87fa0 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)..............
87fc0 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.......
87fe0 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.................
88000 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)
88020 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
88040 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).....
88060 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
88080 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)))............
880a0 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..................(
880c0 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
880e0 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
88100 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
88120 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
88140 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.
88160 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.
88180 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)...
881a0 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
881c0 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
881e0 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
88200 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
88220 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.
88240 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
88260 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
88280 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
882a0 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.
882c0 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
882e0 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
88300 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))))..
88320 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-
88340 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
88360 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
88380 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
883a0 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
883c0 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)
883e0 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
88400 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
88420 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
88440 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,
88460 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
88480 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
884a0 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
884c0 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
884e0 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
88500 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
88520 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
88540 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.........
88560 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
88580 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
885a0 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.(
885c0 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.(
885e0 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
88600 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
88620 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).......
88640 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..
88660 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
88680 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
886a0 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).......(
886c0 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
886e0 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
88700 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
88720 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
88740 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).....(
88760 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
88780 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).
887a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
887c0 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
887e0 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)..........................
88800 20 20 20 20 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
88820 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
88840 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
88860 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*.((
88880 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))).
888a0 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)))))..
888c0 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.
888e0 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
88900 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.
88920 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
88940 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
88960 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
88980 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
889a0 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
889c0 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
889e0 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
88a00 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-
88a20 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
88a40 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
88a60 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...........;
88a80 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......
88aa0 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
88ac0 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
88ae0 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
88b00 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
88b20 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))).....(
88b40 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
88b60 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."))))..
88b80 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
88ba0 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)
88bc0 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
88be0 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
88c00 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."...
88c20 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
88c40 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
88c60 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
88c80 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
88ca0 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
88cc0 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
88ce0 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
88d00 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
88d20 29 0a 20 20 20 20 20 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
88d40 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
88d60 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
88d80 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
88da0 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
88dc0 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
88de0 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
88e00 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.
88e20 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
88e40 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
88e60 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
88e80 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).(
88ea0 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....
88ec0 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
88ee0 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)).........
88f00 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))....
88f20 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
88f40 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
88f60 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
88f80 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).............
88fa0 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
88fc0 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)..................
88fe0 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
89000 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
89020 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
89040 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
89060 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
89080 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
890a0 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,.
890c0 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
890e0 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.".
89100 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.
89120 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
89140 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......
89160 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
89180 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
891a0 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
891c0 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
891e0 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
89200 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....
89220 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.............
89240 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.
89260 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
89280 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
892a0 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
892c0 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
892e0 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...............
89300 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.
89320 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))....
89340 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
89360 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))....
89380 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...............
893a0 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
893c0 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
893e0 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
89400 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)
89420 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).........
89440 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--
89460 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)))))............(
89480 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
894a0 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......
894c0 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)).......
894e0 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.
89500 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-
89520 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....
89540 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:]]
89560 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
89580 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-
895a0 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))........................
895c0 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
895e0 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)))).......................
89600 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
89620 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
89640 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)
89660 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.
89680 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"))))).
896a0 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
896c0 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
896e0 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,.
89700 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
89720 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
89740 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
89760 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
89780 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
897a0 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
897c0 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
897e0 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
89800 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
89820 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
89840 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
89860 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
89880 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
898a0 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
898c0 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
898e0 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
89900 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
89920 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
89940 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
89960 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
89980 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
899a0 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-
899c0 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.
899e0 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.....
89a00 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
89a20 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.
89a40 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
89a60 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.")))..(
89a80 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.(
89aa0 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.
89ac0 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.
89ae0 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.
89b00 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
89b20 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
89b40 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
89b60 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.
89b80 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))................
89ba0 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)))
89bc0 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
89be0 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
89c00 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
89c20 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
89c40 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))...............
89c60 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
89c80 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
89ca0 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.
89cc0 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
89ce0 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
89d00 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
89d20 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
89d40 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
89d60 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
89d80 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.(
89da0 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)..............
89dc0 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.
89de0 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.
89e00 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.(
89e20 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......
89e40 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...............
89e60 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
89e80 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))..............
89ea0 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)....
89ec0 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.
89ee0 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..............
89f00 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
89f20 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
89f40 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
89f60 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
89f80 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
89fa0 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
89fc0 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.(
89fe0 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
8a000 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
8a020 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-
8a040 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\
8a060 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.
8a080 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.............
8a0a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
8a0c0 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)).....
8a0e0 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
8a100 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*.(
8a120 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)).
8a140 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
8a160 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
8a180 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
8a1a0 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
8a1c0 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
8a1e0 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
8a200 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
8a220 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
8a240 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
8a260 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)...........................
8a280 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
8a2a0 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
8a2c0 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
8a2e0 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)))).............;;.
8a300 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.
8a320 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.
8a340 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
8a360 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
8a380 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
8a3a0 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.......
8a3c0 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.
8a3e0 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.(=
8a400 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
8a420 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...............
8a440 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"))..............
8a460 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
8a480 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
8a4a0 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).........
8a4c0 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
8a4e0 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
8a500 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
8a520 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)............
8a540 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
8a560 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"))))...........(
8a580 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.
8a5a0 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
8a5c0 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
8a5e0 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
8a600 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
8a620 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.
8a640 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.
8a660 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
8a680 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.
8a6a0 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
8a6c0 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--
8a6e0 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....
8a700 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
8a720 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
8a740 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-
8a760 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
8a780 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
8a7a0 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)).........
8a7c0 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
8a7e0 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
8a800 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
8a820 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
8a840 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
8a860 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)
8a880 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)...
8a8a0 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
8a8c0 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
8a8e0 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"))............
8a900 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...............(
8a920 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).........
8a940 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)))))..
8a960 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
8a980 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
8a9a0 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-
8a9c0 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..
8a9e0 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.
8aa00 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
8aa20 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
8aa40 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
8aa60 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
8aa80 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
8aaa0 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
8aac0 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".
8aae0 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
8ab00 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
8ab20 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
8ab40 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
8ab60 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
8ab80 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
8aba0 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
8abc0 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.(&
8abe0 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
8ac00 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
8ac20 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
8ac40 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
8ac60 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
8ac80 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
8aca0 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).......
8acc0 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........
8ace0 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...
8ad00 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..............
8ad20 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
8ad40 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,."......
8ad60 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]
8ad80 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
8ada0 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,."..............."\\[
8adc0 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,."..
8ade0 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
8ae00 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,."...............
8ae20 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,
8ae40 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
8ae60 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
8ae80 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-
8aea0 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.(
8aec0 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).............
8aee0 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)...........
8af00 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
8af20 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)...................
8af40 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)...............
8af60 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
8af80 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)...................
8afa0 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).....
8afc0 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
8afe0 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....................
8b000 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-
8b020 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))..
8b040 20 20 20 20 20 20 20 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
8b060 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
8b080 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))))................
8b0a0 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
8b0c0 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)
8b0e0 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"..........................
8b100 20 20 20 20 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
8b120 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).............
8b140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
8b160 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))...................
8b180 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))........
8b1a0 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-
8b1c0 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.......................
8b1e0 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)
8b200 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)).......
8b220 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").
8b240 20 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
8b260 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)))....
8b280 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
8b2a0 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)..
8b2c0 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-
8b2e0 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)........
8b300 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
8b320 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)..................
8b340 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
8b360 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"))................
8b380 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.
8b3a0 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
8b3c0 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
8b3e0 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
8b400 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))........................
8b420 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))..
8b440 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
8b460 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
8b480 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))
8b4a0 29 0a 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
8b4c0 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...............
8b4e0 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
8b500 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
8b520 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)).............................
8b540 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))).
8b560 20 20 20 20 20 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
8b580 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
8b5a0 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...........................
8b5c0 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.........................
8b5e0 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
8b600 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)"...........
8b620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
8b640 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
8b660 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))))..................
8b680 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))
8b6a0 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.
8b6c0 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))....................
8b6e0 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")..................
8b700 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
8b720 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
8b740 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).
8b760 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
8b780 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)...........
8b7a0 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
8b7c0 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
8b7e0 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)."
8b800 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
8b820 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
8b840 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
8b860 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
8b880 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).............
8b8a0 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-
8b8c0 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
8b8e0 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..
8b900 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
8b920 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)............
8b940 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
8b960 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)...................
8b980 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
8b9a0 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
8b9c0 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..."
8b9e0 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
8ba00 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
8ba20 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
8ba40 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
8ba60 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
8ba80 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.()......
8baa0 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
8bac0 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.......
8bae0 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
8bb00 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))).........
8bb20 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..........
8bb40 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
8bb60 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))..................
8bb80 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
8bba0 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))))......
8bbc0 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....
8bbe0 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-
8bc00 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
8bc20 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.............
8bc40 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
8bc60 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.
8bc80 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
8bca0 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
8bcc0 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
8bce0 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
8bd00 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
8bd20 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
8bd40 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*.
8bd60 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
8bd80 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
8bda0 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).........
8bdc0 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
8bde0 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
8be00 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))).......
8be20 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
8be40 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
8be60 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
8be80 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
8bea0 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).............
8bec0 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
8bee0 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
8bf00 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
8bf20 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))..
8bf40 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
8bf60 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."
8bf80 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.
8bfa0 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
8bfc0 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.
8bfe0 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
8c000 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
8c020 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)))).....(
8c040 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
8c060 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.
8c080 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
8c0a0 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...
8c0c0 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
8c0e0 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-
8c100 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-
8c120 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
8c140 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
8c160 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)...
8c180 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)......
8c1a0 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
8c1c0 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
8c1e0 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
8c200 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
8c220 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
8c240 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
8c260 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.
8c280 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
8c2a0 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
8c2c0 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.............................
8c2e0 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
8c300 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
8c320 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
8c340 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
8c360 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))....
8c380 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
8c3a0 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.(
8c3c0 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
8c3e0 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
8c400 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
8c420 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
8c440 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.".
8c460 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
8c480 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)...........
8c4a0 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
8c4c0 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))......
8c4e0 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
8c500 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)..
8c520 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
8c540 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.
8c560 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)
8c580 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 )...............................
8c5a0 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
8c5c0 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
8c5e0 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
8c600 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
8c620 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-
8c640 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)..........
8c660 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)
8c680 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.
8c6a0 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)
8c6c0 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))).............
8c6e0 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-
8c700 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
8c720 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
8c740 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)....
8c760 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
8c780 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-
8c7a0 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
8c7c0 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
8c7e0 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
8c800 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).
8c820 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-
8c840 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
8c860 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
8c880 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
8c8a0 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
8c8c0 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
8c8e0 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
8c900 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
8c920 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
8c940 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
8c960 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
8c980 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
8c9a0 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
8c9c0 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....
8c9e0 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.....
8ca00 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....
8ca20 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.(
8ca40 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).............................
8ca60 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............................
8ca80 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
8caa0 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).................
8cac0 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
8cae0 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)))..................
8cb00 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
8cb20 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
8cb40 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
8cb60 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)
8cb80 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.
8cba0 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
8cbc0 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)
8cbe0 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).;;;.
8cc00 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......
8cc20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8cc40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8cc60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8cc80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8cca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8ccc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8cce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8cd00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8cd20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8cd40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8cd60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8cd80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8cda0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8cdc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8cde0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8ce00 67 70 74 65 6c 2d 30 2e 39 2e 38 2e 35 2f 4e 45 57 53 00 00 00 00 00 00 00 00 00 00 00 00 00 00 gptel-0.9.8.5/NEWS..............
8ce20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8ce40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8ce60 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
8ce80 30 30 33 34 36 31 30 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 32 31 35 30 00 20 30 00 00 00 0034610.00000000000.012150..0...
8cea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8cec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
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 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...................
8cf20 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...................
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 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 38 2e 35 20 #.-*-.mode:.org;.-*-..*.0.9.8.5.
8d020 32 30 32 35 2d 30 36 2d 31 31 0a 0a 2a 2a 20 42 72 65 61 6b 69 6e 67 20 63 68 61 6e 67 65 73 0a 2025-06-11..**.Breaking.changes.
8d040 0a 2d 20 7e 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 7e .-.~gptel-org-branching-context~
8d060 20 69 73 20 6e 6f 77 20 61 20 67 6c 6f 62 61 6c 20 76 61 72 69 61 62 6c 65 2e 20 20 49 74 20 77 .is.now.a.global.variable...It.w
8d080 61 73 0a 20 20 62 75 66 66 65 72 2d 6c 6f 63 61 6c 20 62 79 20 64 65 66 61 75 6c 74 20 69 6e 20 as...buffer-local.by.default.in.
8d0a0 70 61 73 74 20 72 65 6c 65 61 73 65 73 2e 0a 0a 2d 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 past.releases...-.The.following.
8d0c0 6d 6f 64 65 6c 73 20 68 61 76 65 20 62 65 65 6e 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d 20 74 68 models.have.been.removed.from.th
8d0e0 65 20 64 65 66 61 75 6c 74 20 43 68 61 74 47 50 54 20 62 61 63 6b 65 6e 64 3a 0a 20 20 2d 20 7e e.default.ChatGPT.backend:...-.~
8d100 6f 31 2d 70 72 65 76 69 65 77 7e 3a 20 75 73 65 20 7e 6f 31 7e 20 69 6e 73 74 65 61 64 2e 0a 20 o1-preview~:.use.~o1~.instead...
8d120 20 2d 20 7e 67 70 74 2d 34 2d 74 75 72 62 6f 2d 70 72 65 76 69 65 77 7e 3a 20 75 73 65 20 7e 67 .-.~gpt-4-turbo-preview~:.use.~g
8d140 70 74 2d 34 6f 7e 20 6f 72 20 7e 67 70 74 2d 34 2d 74 75 72 62 6f 7e 20 69 6e 73 74 65 61 64 2e pt-4o~.or.~gpt-4-turbo~.instead.
8d160 0a 20 20 2d 20 7e 67 70 74 2d 34 2d 33 32 6b 7e 2c 20 7e 67 70 74 2d 34 2d 30 31 32 35 2d 70 72 ...-.~gpt-4-32k~,.~gpt-4-0125-pr
8d180 65 76 69 65 77 7e 20 61 6e 64 20 7e 67 70 74 2d 34 2d 31 31 30 36 2d 70 72 65 76 69 65 77 7e 3a eview~.and.~gpt-4-1106-preview~:
8d1a0 20 75 73 65 0a 20 20 20 20 7e 67 70 74 2d 34 6f 7e 20 6f 72 20 7e 67 70 74 2d 34 7e 20 69 6e 73 .use.....~gpt-4o~.or.~gpt-4~.ins
8d1c0 74 65 61 64 2e 0a 20 20 41 6c 74 65 72 6e 61 74 69 76 65 6c 79 2c 20 79 6f 75 20 63 61 6e 20 61 tead....Alternatively,.you.can.a
8d1e0 64 64 20 74 68 65 73 65 20 6d 6f 64 65 6c 73 20 62 61 63 6b 20 74 6f 20 74 68 65 20 62 61 63 6b dd.these.models.back.to.the.back
8d200 65 6e 64 20 69 6e 20 79 6f 75 72 0a 20 20 70 65 72 73 6f 6e 61 6c 20 63 6f 6e 66 69 67 75 72 61 end.in.your...personal.configura
8d220 74 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 tion:...#+begin_src.emacs-lisp..
8d240 20 28 70 75 73 68 20 27 67 70 74 2d 34 2d 74 75 72 62 6f 2d 70 72 65 76 69 65 77 0a 20 20 20 20 .(push.'gpt-4-turbo-preview.....
8d260 20 20 20 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 6d 6f 64 65 6c 73 20 28 67 70 74 65 6c ....(gptel-backend-models.(gptel
8d280 2d 67 65 74 2d 62 61 63 6b 65 6e 64 20 22 43 68 61 74 47 50 54 22 29 29 29 0a 20 20 23 2b 65 6e -get-backend."ChatGPT")))...#+en
8d2a0 64 5f 73 72 63 0a 0a 2d 20 4f 6e 6c 79 20 72 65 6c 65 76 61 6e 74 20 69 66 20 79 6f 75 20 75 73 d_src..-.Only.relevant.if.you.us
8d2c0 65 20 7e 67 70 74 65 6c 2d 72 65 71 75 65 73 74 7e 20 69 6e 20 79 6f 75 72 20 65 6c 69 73 70 20 e.~gptel-request~.in.your.elisp.
8d2e0 63 6f 64 65 2c 0a 20 20 2f 69 6e 74 65 72 61 63 74 69 76 65 20 67 70 74 65 6c 20 75 73 61 67 65 code,.../interactive.gptel.usage
8d300 20 69 73 20 75 6e 61 66 66 65 63 74 65 64 2f 3a 20 7e 67 70 74 65 6c 2d 72 65 71 75 65 73 74 7e .is.unaffected/:.~gptel-request~
8d320 20 6e 6f 77 20 74 61 6b 65 73 20 61 0a 20 20 6e 65 77 2c 20 6f 70 74 69 6f 6e 61 6c 20 3d 3a 74 .now.takes.a...new,.optional.=:t
8d340 72 61 6e 73 66 6f 72 6d 73 3d 20 61 72 67 75 6d 65 6e 74 2e 20 20 41 6e 79 20 70 72 6f 6d 70 74 ransforms=.argument...Any.prompt
8d360 20 6d 6f 64 69 66 69 63 61 74 69 6f 6e 73 0a 20 20 28 6c 69 6b 65 20 61 64 64 69 6e 67 20 63 6f .modifications...(like.adding.co
8d380 6e 74 65 78 74 20 74 6f 20 72 65 71 75 65 73 74 73 29 20 6d 75 73 74 20 6e 6f 77 20 62 65 20 73 ntext.to.requests).must.now.be.s
8d3a0 70 65 63 69 66 69 65 64 20 76 69 61 20 74 68 69 73 0a 20 20 61 72 67 75 6d 65 6e 74 2e 20 20 53 pecified.via.this...argument...S
8d3c0 65 65 20 74 68 65 20 64 65 66 69 6e 69 74 69 6f 6e 20 6f 66 20 7e 67 70 74 65 6c 2d 73 65 6e 64 ee.the.definition.of.~gptel-send
8d3e0 7e 20 66 6f 72 20 61 6e 20 65 78 61 6d 70 6c 65 2e 0a 0a 2a 2a 20 4e 65 77 20 6d 6f 64 65 6c 73 ~.for.an.example...**.New.models
8d400 20 61 6e 64 20 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 .and.backends..-.Add.support.for
8d420 20 7e 67 70 74 2d 34 2e 31 7e 2c 20 7e 67 70 74 2d 34 2e 31 2d 6d 69 6e 69 7e 2c 20 7e 67 70 74 .~gpt-4.1~,.~gpt-4.1-mini~,.~gpt
8d440 2d 34 2e 31 2d 6e 61 6e 6f 7e 2c 20 7e 6f 33 7e 20 61 6e 64 0a 20 20 7e 6f 34 2d 6d 69 6e 69 7e -4.1-nano~,.~o3~.and...~o4-mini~
8d460 2e 0a 0a 2d 20 41 64 64 20 73 75 70 70 6f 72 74 20 66 6f 72 20 7e 67 65 6d 69 6e 69 2d 32 2e 35 ...-.Add.support.for.~gemini-2.5
8d480 2d 70 72 6f 2d 65 78 70 2d 30 33 2d 32 35 7e 2c 0a 20 20 7e 67 65 6d 69 6e 69 2d 32 2e 35 2d 66 -pro-exp-03-25~,...~gemini-2.5-f
8d4a0 6c 61 73 68 2d 70 72 65 76 69 65 77 2d 30 34 2d 31 37 7e 2c 20 7e 67 65 6d 69 6e 69 2d 32 2e 35 lash-preview-04-17~,.~gemini-2.5
8d4c0 2d 70 72 6f 2d 70 72 65 76 69 65 77 2d 30 35 2d 30 36 7e 20 61 6e 64 0a 20 20 7e 67 65 6d 69 6e -pro-preview-05-06~.and...~gemin
8d4e0 69 2d 32 2e 35 2d 70 72 6f 2d 70 72 65 76 69 65 77 2d 30 36 2d 30 35 7e 2e 0a 0a 2d 20 41 64 64 i-2.5-pro-preview-06-05~...-.Add
8d500 20 73 75 70 70 6f 72 74 20 66 6f 72 20 7e 63 6c 61 75 64 65 2d 73 6f 6e 6e 65 74 2d 34 2d 32 30 .support.for.~claude-sonnet-4-20
8d520 32 35 30 35 31 34 7e 20 61 6e 64 0a 20 20 7e 63 6c 61 75 64 65 2d 6f 70 75 73 2d 34 2d 32 30 32 250514~.and...~claude-opus-4-202
8d540 35 30 35 31 34 7e 2e 0a 0a 2d 20 41 64 64 20 73 75 70 70 6f 72 74 20 66 6f 72 20 41 57 53 20 42 50514~...-.Add.support.for.AWS.B
8d560 65 64 72 6f 63 6b 20 6d 6f 64 65 6c 73 2e 20 20 59 6f 75 20 63 61 6e 20 63 72 65 61 74 65 20 61 edrock.models...You.can.create.a
8d580 6e 20 41 57 53 20 42 65 64 72 6f 63 6b 0a 20 20 67 70 74 65 6c 20 62 61 63 6b 65 6e 64 20 77 69 n.AWS.Bedrock...gptel.backend.wi
8d5a0 74 68 20 7e 67 70 74 65 6c 2d 6d 61 6b 65 2d 62 65 64 72 6f 63 6b 7e 2c 20 77 68 69 63 68 20 73 th.~gptel-make-bedrock~,.which.s
8d5c0 65 65 2e 20 20 50 6c 65 61 73 65 20 6e 6f 74 65 3a 0a 20 20 41 57 53 20 42 65 64 72 6f 63 6b 20 ee...Please.note:...AWS.Bedrock.
8d5e0 73 75 70 70 6f 72 74 20 72 65 71 75 69 72 65 73 20 43 75 72 6c 20 38 2e 35 2e 30 20 6f 72 20 68 support.requires.Curl.8.5.0.or.h
8d600 69 67 68 65 72 2e 0a 0a 2d 20 59 6f 75 20 63 61 6e 20 6e 6f 77 20 63 72 65 61 74 65 20 61 6e 20 igher...-.You.can.now.create.an.
8d620 78 41 49 20 62 61 63 6b 65 6e 64 20 77 69 74 68 20 7e 67 70 74 65 6c 2d 6d 61 6b 65 2d 78 61 69 xAI.backend.with.~gptel-make-xai
8d640 7e 2c 20 77 68 69 63 68 20 73 65 65 2e 0a 20 20 28 78 41 49 20 77 61 73 20 73 75 70 70 6f 72 74 ~,.which.see....(xAI.was.support
8d660 65 64 20 62 65 66 6f 72 65 20 62 75 74 20 74 68 65 20 6d 6f 64 65 6c 20 63 6f 6e 66 69 67 75 72 ed.before.but.the.model.configur
8d680 61 74 69 6f 6e 20 69 73 20 6e 6f 77 20 68 61 6e 64 6c 65 64 0a 20 20 66 6f 72 20 79 6f 75 20 62 ation.is.now.handled...for.you.b
8d6a0 79 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 2e 29 0a 0a 2d 20 41 64 64 20 73 75 70 70 6f 72 74 y.this.function.)..-.Add.support
8d6c0 20 66 6f 72 20 47 69 74 48 75 62 20 43 6f 70 69 6c 6f 74 20 43 68 61 74 2e 20 20 53 65 65 20 74 .for.GitHub.Copilot.Chat...See.t
8d6e0 68 65 20 52 45 41 44 4d 45 20 61 6e 64 0a 20 20 7e 67 70 74 65 6c 2d 6d 61 6b 65 2d 67 68 2d 63 he.README.and...~gptel-make-gh-c
8d700 6f 70 69 6c 6f 74 7e 2e 20 20 50 6c 65 61 73 65 20 6e 6f 74 65 3a 20 74 68 69 73 20 69 73 20 6f opilot~...Please.note:.this.is.o
8d720 6e 6c 79 20 74 68 65 20 63 68 61 74 0a 20 20 63 6f 6d 70 6f 6e 65 6e 74 20 6f 66 20 47 69 74 48 nly.the.chat...component.of.GitH
8d740 75 62 20 43 6f 70 69 6c 6f 74 2e 20 20 43 6f 70 69 6c 6f 74 27 73 20 7e 63 6f 6d 70 6c 65 74 69 ub.Copilot...Copilot's.~completi
8d760 6f 6e 2d 61 74 2d 70 6f 69 6e 74 7e 0a 20 20 28 74 61 62 2d 63 6f 6d 70 6c 65 74 69 6f 6e 29 20 on-at-point~...(tab-completion).
8d780 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 20 69 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 65 64 20 62 functionality.is.not.supported.b
8d7a0 79 20 67 70 74 65 6c 2e 0a 0a 2d 20 41 64 64 20 73 75 70 70 6f 72 74 20 66 6f 72 20 53 61 6d 62 y.gptel...-.Add.support.for.Samb
8d7c0 61 6e 6f 76 61 2e 20 20 54 68 69 73 20 69 73 20 61 6e 20 4f 70 65 6e 41 49 2d 63 6f 6d 70 61 74 anova...This.is.an.OpenAI-compat
8d7e0 69 62 6c 65 20 41 50 49 20 73 6f 20 79 6f 75 0a 20 20 63 61 6e 20 63 72 65 61 74 65 20 61 20 62 ible.API.so.you...can.create.a.b
8d800 61 63 6b 65 6e 64 20 77 69 74 68 20 7e 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 7e 2c ackend.with.~gptel-make-openai~,
8d820 20 73 65 65 20 74 68 65 20 52 45 41 44 4d 45 20 66 6f 72 0a 20 20 64 65 74 61 69 6c 73 2e 0a 0a .see.the.README.for...details...
8d840 2d 20 41 64 64 20 73 75 70 70 6f 72 74 20 66 6f 72 20 4d 69 73 74 72 61 6c 20 4c 65 20 43 68 61 -.Add.support.for.Mistral.Le.Cha
8d860 74 2e 20 20 54 68 69 73 20 69 73 20 61 6e 20 61 6e 20 4f 70 65 6e 41 49 2d 63 6f 6d 70 61 74 69 t...This.is.an.an.OpenAI-compati
8d880 62 6c 65 0a 20 20 41 50 49 20 73 6f 20 79 6f 75 20 63 61 6e 20 63 72 65 61 74 65 20 61 20 62 61 ble...API.so.you.can.create.a.ba
8d8a0 63 6b 65 6e 64 20 77 69 74 68 20 7e 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 7e 2c 20 ckend.with.~gptel-make-openai~,.
8d8c0 73 65 65 20 74 68 65 0a 20 20 52 45 41 44 4d 45 20 66 6f 72 20 64 65 74 61 69 6c 73 2e 0a 0a 2a see.the...README.for.details...*
8d8e0 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 0a 0a 2d *.New.features.and.UI.changes..-
8d900 20 67 70 74 65 6c 20 6e 6f 77 20 73 75 70 70 6f 72 74 73 20 68 61 6e 64 6c 69 6e 67 20 72 65 61 .gptel.now.supports.handling.rea
8d920 73 6f 6e 69 6e 67 2f 74 68 69 6e 6b 69 6e 67 20 62 6c 6f 63 6b 73 20 69 6e 20 72 65 73 70 6f 6e soning/thinking.blocks.in.respon
8d940 73 65 73 0a 20 20 66 72 6f 6d 20 47 65 6d 69 6e 69 20 6d 6f 64 65 6c 73 2e 20 20 54 68 69 73 20 ses...from.Gemini.models...This.
8d960 69 73 20 63 6f 6e 74 72 6f 6c 6c 65 64 20 62 79 0a 20 20 7e 67 70 74 65 6c 2d 69 6e 63 6c 75 64 is.controlled.by...~gptel-includ
8d980 65 2d 72 65 61 73 6f 6e 69 6e 67 7e 2c 20 69 6e 20 74 68 65 20 73 61 6d 65 20 77 61 79 20 74 68 e-reasoning~,.in.the.same.way.th
8d9a0 61 74 20 69 74 20 68 61 6e 64 6c 65 73 20 6f 74 68 65 72 0a 20 20 41 50 49 73 2e 0a 0a 2d 20 54 at.it.handles.other...APIs...-.T
8d9c0 68 65 20 6e 65 77 20 6f 70 74 69 6f 6e 20 7e 67 70 74 65 6c 2d 63 75 72 6c 2d 65 78 74 72 61 2d he.new.option.~gptel-curl-extra-
8d9e0 61 72 67 73 7e 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 73 70 65 63 69 66 79 20 65 78 74 args~.can.be.used.to.specify.ext
8da00 72 61 0a 20 20 61 72 67 75 6d 65 6e 74 73 20 74 6f 20 74 68 65 20 43 75 72 6c 20 63 6f 6d 6d 61 ra...arguments.to.the.Curl.comma
8da20 6e 64 20 75 73 65 64 20 66 6f 72 20 74 68 65 20 72 65 71 75 65 73 74 2e 20 20 54 68 69 73 20 69 nd.used.for.the.request...This.i
8da40 73 20 74 68 65 0a 20 20 67 6c 6f 62 61 6c 20 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65 20 67 70 s.the...global.version.of.the.gp
8da60 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 73 70 65 63 69 66 69 63 20 7e 3a 63 75 72 6c 2d 61 72 67 73 tel-backend-specific.~:curl-args
8da80 7e 20 73 6c 6f 74 2c 0a 20 20 77 68 69 63 68 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 73 ~.slot,...which.can.be.used.to.s
8daa0 70 65 63 69 66 79 20 43 75 72 6c 20 61 72 67 75 6d 65 6e 74 73 20 77 68 65 6e 20 75 73 69 6e 67 pecify.Curl.arguments.when.using
8dac0 20 61 20 73 70 65 63 69 66 69 63 0a 20 20 62 61 63 6b 65 6e 64 2e 0a 0a 2d 20 54 6f 6f 6c 73 20 .a.specific...backend...-.Tools.
8dae0 6e 6f 77 20 72 75 6e 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 now.run.in.the.buffer.from.which
8db00 20 74 68 65 20 72 65 71 75 65 73 74 20 6f 72 69 67 69 6e 61 74 65 73 2e 20 20 54 68 69 73 0a 20 .the.request.originates...This..
8db20 20 63 61 6e 20 62 65 20 73 69 67 6e 69 66 69 63 61 6e 74 20 77 68 65 6e 20 74 6f 6f 6c 73 20 72 .can.be.significant.when.tools.r
8db40 65 61 64 20 6f 72 20 6d 61 6e 69 70 75 6c 61 74 65 20 45 6d 61 63 73 27 20 73 74 61 74 65 2e 0a ead.or.manipulate.Emacs'.state..
8db60 0a 2d 20 67 70 74 65 6c 20 63 61 6e 20 61 63 63 65 73 73 20 4d 43 50 20 73 65 72 76 65 72 20 74 .-.gptel.can.access.MCP.server.t
8db80 6f 6f 6c 73 20 62 79 20 69 6e 74 65 67 72 61 74 69 6e 67 20 77 69 74 68 20 74 68 65 20 6d 63 70 ools.by.integrating.with.the.mcp
8dba0 2e 65 6c 0a 20 20 70 61 63 6b 61 67 65 2c 20 77 68 69 63 68 20 69 73 20 61 74 20 68 74 74 70 73 .el...package,.which.is.at.https
8dbc0 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 2e 65 ://github.com/lizqwerscott/mcp.e
8dbe0 6c 2e 0a 20 20 28 6d 63 70 2e 65 6c 20 69 73 20 61 76 61 69 6c 61 62 6c 65 20 6f 6e 20 4d 45 4c l....(mcp.el.is.available.on.MEL
8dc00 50 41 2e 29 20 20 54 6f 20 68 65 6c 70 20 77 69 74 68 20 74 68 65 20 69 6e 74 65 67 72 61 74 69 PA.)..To.help.with.the.integrati
8dc20 6f 6e 2c 20 74 77 6f 0a 20 20 6e 65 77 20 63 6f 6d 6d 61 6e 64 73 20 61 72 65 20 70 72 6f 76 69 on,.two...new.commands.are.provi
8dc40 64 65 64 3a 20 7e 67 70 74 65 6c 2d 6d 63 70 2d 63 6f 6e 6e 65 63 74 7e 20 61 6e 64 0a 20 20 7e ded:.~gptel-mcp-connect~.and...~
8dc60 67 70 74 65 6c 2d 6d 63 70 2d 64 69 73 63 6f 6e 6e 65 63 74 7e 2e 20 20 59 6f 75 20 63 61 6e 20 gptel-mcp-disconnect~...You.can.
8dc80 75 73 65 20 74 68 65 73 65 20 74 6f 20 73 74 61 72 74 20 4d 43 50 20 73 65 72 76 65 72 73 0a 20 use.these.to.start.MCP.servers..
8dca0 20 73 65 6c 65 63 74 69 76 65 6c 79 20 61 6e 64 20 61 64 64 20 74 6f 6f 6c 73 20 74 6f 20 67 70 .selectively.and.add.tools.to.gp
8dcc0 74 65 6c 2e 20 20 54 68 65 73 65 20 63 6f 6d 6d 61 6e 64 73 20 61 72 65 20 61 6c 73 6f 0a 20 20 tel...These.commands.are.also...
8dce0 61 76 61 69 6c 61 62 6c 65 20 66 72 6f 6d 20 67 70 74 65 6c 27 73 20 74 6f 6f 6c 73 20 6d 65 6e available.from.gptel's.tools.men
8dd00 75 2e 0a 20 20 0a 20 20 54 68 65 73 65 20 63 6f 6d 6d 61 6e 64 73 20 61 72 65 20 63 75 72 72 65 u.......These.commands.are.curre
8dd20 6e 74 6c 79 20 6e 6f 74 20 61 75 74 6f 6c 6f 61 64 65 64 20 62 79 20 67 70 74 65 6c 2e 20 20 54 ntly.not.autoloaded.by.gptel...T
8dd40 6f 20 61 63 63 65 73 73 0a 20 20 74 68 65 6d 2c 20 72 65 71 75 69 72 65 20 74 68 65 20 7e 67 70 o.access...them,.require.the.~gp
8dd60 74 65 6c 2d 69 6e 74 65 67 72 61 74 69 6f 6e 73 7e 20 66 65 61 74 75 72 65 2e 0a 0a 2d 20 59 6f tel-integrations~.feature...-.Yo
8dd80 75 20 63 61 6e 20 6e 6f 77 20 64 65 66 69 6e 65 20 22 70 72 65 73 65 74 73 22 2c 20 77 68 69 63 u.can.now.define."presets",.whic
8dda0 68 20 61 72 65 20 61 20 62 75 6e 64 6c 65 20 6f 66 20 67 70 74 65 6c 20 6f 70 74 69 6f 6e 73 2c h.are.a.bundle.of.gptel.options,
8ddc0 0a 20 20 73 75 63 68 20 61 73 20 74 68 65 20 62 61 63 6b 65 6e 64 2c 20 6d 6f 64 65 6c 2c 20 73 ...such.as.the.backend,.model,.s
8dde0 79 73 74 65 6d 20 6d 65 73 73 61 67 65 2c 20 69 6e 63 6c 75 64 65 64 20 74 6f 6f 6c 73 2c 0a 20 ystem.message,.included.tools,..
8de00 20 74 65 6d 70 65 72 61 74 75 72 65 20 61 6e 64 20 73 6f 20 6f 6e 2e 20 20 54 68 69 73 20 73 65 .temperature.and.so.on...This.se
8de20 74 20 6f 66 20 6f 70 74 69 6f 6e 73 20 63 61 6e 20 62 65 20 61 70 70 6c 69 65 64 20 74 6f 67 65 t.of.options.can.be.applied.toge
8de40 74 68 65 72 2c 0a 20 20 6d 61 6b 69 6e 67 20 69 74 20 65 61 73 79 20 74 6f 20 73 77 69 74 63 68 ther,...making.it.easy.to.switch
8de60 20 62 65 74 77 65 65 6e 20 64 69 66 66 65 72 65 6e 74 20 74 61 73 6b 73 20 75 73 69 6e 67 20 67 .between.different.tasks.using.g
8de80 70 74 65 6c 2e 20 20 46 72 6f 6d 0a 20 20 67 70 74 65 6c 27 73 20 74 72 61 6e 73 69 65 6e 74 20 ptel...From...gptel's.transient.
8dea0 6d 65 6e 75 2c 20 79 6f 75 20 63 61 6e 20 73 61 76 65 20 74 68 65 20 63 75 72 72 65 6e 74 20 63 menu,.you.can.save.the.current.c
8dec0 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 61 73 20 61 0a 20 20 70 72 65 73 65 74 20 6f 72 20 61 70 onfiguration.as.a...preset.or.ap
8dee0 70 6c 79 20 61 6e 6f 74 68 65 72 20 6f 6e 65 2e 20 20 50 72 65 73 65 74 73 20 63 61 6e 20 62 65 ply.another.one...Presets.can.be
8df00 20 61 70 70 6c 69 65 64 20 67 6c 6f 62 61 6c 6c 79 2c 0a 20 20 62 75 66 66 65 72 2d 6c 6f 63 61 .applied.globally,...buffer-loca
8df20 6c 6c 79 20 6f 72 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 lly.or.for.the.next.request.only
8df40 2e 20 20 54 6f 20 70 65 72 73 69 73 74 20 70 72 65 73 65 74 73 0a 20 20 61 63 72 6f 73 73 20 45 ...To.persist.presets...across.E
8df60 6d 61 63 73 20 73 65 73 73 69 6f 6e 73 2c 20 64 65 66 69 6e 65 20 70 72 65 73 65 74 73 20 69 6e macs.sessions,.define.presets.in
8df80 20 79 6f 75 72 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 75 73 69 6e 67 0a 20 20 7e 67 70 74 .your.configuration.using...~gpt
8dfa0 65 6c 2d 6d 61 6b 65 2d 70 72 65 73 65 74 7e 2e 0a 0a 2d 20 57 68 65 6e 20 75 73 69 6e 67 20 7e el-make-preset~...-.When.using.~
8dfc0 67 70 74 65 6c 2d 73 65 6e 64 7e 20 66 72 6f 6d 20 61 6e 79 77 68 65 72 65 20 69 6e 20 45 6d 61 gptel-send~.from.anywhere.in.Ema
8dfe0 63 73 2c 20 79 6f 75 20 63 61 6e 20 6e 6f 77 20 69 6e 63 6c 75 64 65 0a 20 20 61 20 22 63 6f 6f cs,.you.can.now.include...a."coo
8e000 6b 69 65 22 20 6f 66 20 74 68 65 20 66 6f 72 6d 20 3d 40 70 72 65 73 65 74 2d 6e 61 6d 65 3d 20 kie".of.the.form.=@preset-name=.
8e020 69 6e 20 74 68 65 20 70 72 6f 6d 70 74 20 74 65 78 74 20 74 6f 20 61 70 70 6c 79 0a 20 20 74 68 in.the.prompt.text.to.apply...th
8e040 61 74 20 70 72 65 73 65 74 20 62 65 66 6f 72 65 20 73 65 6e 64 69 6e 67 2e 20 20 54 68 65 20 70 at.preset.before.sending...The.p
8e060 72 65 73 65 74 20 69 73 20 61 70 70 6c 69 65 64 20 66 6f 72 20 74 68 61 74 20 72 65 71 75 65 73 reset.is.applied.for.that.reques
8e080 74 0a 20 20 6f 6e 6c 79 2e 20 20 54 68 69 73 20 69 73 20 61 6e 20 65 61 73 79 20 77 61 79 20 74 t...only...This.is.an.easy.way.t
8e0a0 6f 20 73 70 65 63 69 66 79 20 6d 6f 64 65 6c 73 2c 20 74 6f 6f 6c 73 2c 20 73 79 73 74 65 6d 0a o.specify.models,.tools,.system.
8e0c0 20 20 6d 65 73 73 61 67 65 73 20 28 65 74 63 29 20 6f 6e 20 74 68 65 20 66 6c 79 2e 20 20 49 6e ..messages.(etc).on.the.fly...In
8e0e0 20 63 68 61 74 20 62 75 66 66 65 72 73 20 74 68 65 20 70 72 65 73 65 74 20 63 6f 6f 6b 69 65 20 .chat.buffers.the.preset.cookie.
8e100 69 73 0a 20 20 66 6f 6e 74 69 66 69 65 64 20 61 6e 64 20 61 76 61 69 6c 61 62 6c 65 20 66 6f 72 is...fontified.and.available.for
8e120 20 63 6f 6d 70 6c 65 74 69 6f 6e 20 76 69 61 20 7e 63 6f 6d 70 6c 65 74 69 6f 6e 2d 61 74 2d 70 .completion.via.~completion-at-p
8e140 6f 69 6e 74 7e 2e 0a 0a 2d 20 46 6f 72 20 73 63 72 69 70 74 69 6e 67 20 70 75 72 70 6f 73 65 73 oint~...-.For.scripting.purposes
8e160 2c 20 70 72 6f 76 69 64 65 20 61 20 7e 67 70 74 65 6c 2d 77 69 74 68 2d 70 72 65 73 65 74 7e 20 ,.provide.a.~gptel-with-preset~.
8e180 6d 61 63 72 6f 20 74 6f 0a 20 20 63 72 65 61 74 65 20 61 6e 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 macro.to...create.an.environment
8e1a0 20 77 69 74 68 20 61 20 70 72 65 73 65 74 20 61 70 70 6c 69 65 64 2e 0a 0a 2d 20 4c 69 6e 6b 73 .with.a.preset.applied...-.Links
8e1c0 20 74 6f 20 70 6c 61 69 6e 2d 74 65 78 74 20 66 69 6c 65 73 20 69 6e 20 63 68 61 74 20 62 75 66 .to.plain-text.files.in.chat.buf
8e1e0 66 65 72 73 20 63 61 6e 20 62 65 20 66 6f 6c 6c 6f 77 65 64 2c 20 61 6e 64 20 74 68 65 69 72 0a fers.can.be.followed,.and.their.
8e200 20 20 63 6f 6e 74 65 6e 74 73 20 69 6e 63 6c 75 64 65 64 20 77 69 74 68 20 74 68 65 20 72 65 71 ..contents.included.with.the.req
8e220 75 65 73 74 2e 20 20 55 73 69 6e 67 20 4f 72 67 20 6f 72 20 4d 61 72 6b 64 6f 77 6e 20 6c 69 6e uest...Using.Org.or.Markdown.lin
8e240 6b 73 20 69 73 0a 20 20 61 6e 20 65 61 73 79 2c 20 69 6e 74 75 69 74 69 76 65 2c 20 70 65 72 73 ks.is...an.easy,.intuitive,.pers
8e260 69 73 74 65 6e 74 20 61 6e 64 20 62 75 66 66 65 72 2d 6c 6f 63 61 6c 20 77 61 79 20 74 6f 20 73 istent.and.buffer-local.way.to.s
8e280 70 65 63 69 66 79 0a 20 20 63 6f 6e 74 65 78 74 2e 20 20 54 6f 20 65 6e 61 62 6c 65 20 74 68 69 pecify...context...To.enable.thi
8e2a0 73 20 62 65 68 61 76 69 6f 72 2c 20 74 75 72 6e 20 6f 6e 20 7e 67 70 74 65 6c 2d 74 72 61 63 6b s.behavior,.turn.on.~gptel-track
8e2c0 2d 6d 65 64 69 61 7e 2e 20 54 68 69 73 0a 20 20 69 73 20 61 20 70 72 65 2d 65 78 69 73 74 69 6e -media~..This...is.a.pre-existin
8e2e0 67 20 6f 70 74 69 6f 6e 20 74 68 61 74 20 61 6c 73 6f 20 63 6f 6e 74 72 6f 6c 73 20 77 68 65 74 g.option.that.also.controls.whet
8e300 68 65 72 20 69 6d 61 67 65 2f 64 6f 63 75 6d 65 6e 74 0a 20 20 6c 69 6e 6b 73 20 61 72 65 20 66 her.image/document...links.are.f
8e320 6f 6c 6c 6f 77 65 64 20 61 6e 64 20 73 65 6e 74 20 28 77 68 65 6e 20 74 68 65 20 6d 6f 64 65 6c ollowed.and.sent.(when.the.model
8e340 20 73 75 70 70 6f 72 74 73 20 69 74 29 2e 0a 0a 2d 20 41 20 6e 65 77 20 68 6f 6f 6b 20 7e 67 70 .supports.it)...-.A.new.hook.~gp
8e360 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 7e 20 tel-prompt-transform-functions~.
8e380 69 73 20 70 72 6f 76 69 64 65 64 20 66 6f 72 0a 20 20 61 72 62 69 74 72 61 72 79 20 74 72 61 6e is.provided.for...arbitrary.tran
8e3a0 73 66 6f 72 6d 61 74 69 6f 6e 73 20 6f 66 20 74 68 65 20 70 72 6f 6d 70 74 20 70 72 69 6f 72 20 sformations.of.the.prompt.prior.
8e3c0 74 6f 20 73 65 6e 64 69 6e 67 20 61 20 72 65 71 75 65 73 74 2e 0a 20 20 54 68 69 73 20 68 6f 6f to.sending.a.request....This.hoo
8e3e0 6b 20 72 75 6e 73 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 k.runs.in.a.temporary.buffer.con
8e400 74 61 69 6e 69 6e 67 20 74 68 65 20 74 65 78 74 20 74 6f 20 62 65 20 73 65 6e 74 2e 0a 20 20 41 taining.the.text.to.be.sent....A
8e420 6e 79 20 61 73 70 65 63 74 20 6f 66 20 74 68 65 20 72 65 71 75 65 73 74 20 28 74 68 65 20 74 65 ny.aspect.of.the.request.(the.te
8e440 78 74 2c 20 64 65 73 74 69 6e 61 74 69 6f 6e 2c 20 72 65 71 75 65 73 74 0a 20 20 70 61 72 61 6d xt,.destination,.request...param
8e460 65 74 65 72 73 2c 20 72 65 73 70 6f 6e 73 65 20 68 61 6e 64 6c 69 6e 67 20 70 72 65 66 65 72 65 eters,.response.handling.prefere
8e480 6e 63 65 73 29 20 63 61 6e 20 62 65 20 6d 6f 64 69 66 69 65 64 0a 20 20 62 75 66 66 65 72 2d 6c nces).can.be.modified...buffer-l
8e4a0 6f 63 61 6c 6c 79 20 68 65 72 65 2e 20 20 54 68 65 73 65 20 68 6f 6f 6b 20 66 75 6e 63 74 69 6f ocally.here...These.hook.functio
8e4c0 6e 73 20 63 61 6e 20 62 65 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 2e 0a 0a 2d 20 54 68 65 20 75 ns.can.be.asynchronous...-.The.u
8e4e0 73 65 72 20 6f 70 74 69 6f 6e 20 7e 67 70 74 65 6c 2d 75 73 65 2d 63 75 72 6c 7e 20 63 61 6e 20 ser.option.~gptel-use-curl~.can.
8e500 6e 6f 77 20 62 65 20 75 73 65 64 20 74 6f 20 73 70 65 63 69 66 79 20 61 20 43 75 72 6c 0a 20 20 now.be.used.to.specify.a.Curl...
8e520 70 61 74 68 2e 0a 0a 2d 20 54 68 65 20 63 75 72 72 65 6e 74 20 6b 69 6c 6c 20 63 61 6e 20 62 65 path...-.The.current.kill.can.be
8e540 20 61 64 64 65 64 20 74 6f 20 67 70 74 65 6c 27 73 20 63 6f 6e 74 65 78 74 2e 20 20 54 6f 20 65 .added.to.gptel's.context...To.e
8e560 6e 61 62 6c 65 20 74 68 69 73 2c 0a 20 20 74 75 72 6e 20 6f 6e 20 7e 67 70 74 65 6c 2d 65 78 70 nable.this,...turn.on.~gptel-exp
8e580 65 72 74 2d 63 6f 6d 6d 61 6e 64 73 7e 20 61 6e 64 20 75 73 65 20 67 70 74 65 6c 27 73 20 74 72 ert-commands~.and.use.gptel's.tr
8e5a0 61 6e 73 69 65 6e 74 20 6d 65 6e 75 2e 20 0a 0a 2d 20 54 68 65 20 74 6f 6f 6c 73 20 6d 65 6e 75 ansient.menu....-.The.tools.menu
8e5c0 20 28 7e 67 70 74 65 6c 2d 74 6f 6f 6c 73 7e 29 20 68 61 73 20 62 65 65 6e 20 72 65 64 65 73 69 .(~gptel-tools~).has.been.redesi
8e5e0 67 6e 65 64 2e 20 20 49 74 20 6e 6f 77 20 64 69 73 70 6c 61 79 73 0a 20 20 74 6f 6f 6c 20 63 61 gned...It.now.displays...tool.ca
8e600 74 65 67 6f 72 69 65 73 20 61 6e 64 20 61 73 73 6f 63 69 61 74 65 64 20 74 6f 6f 6c 73 20 69 6e tegories.and.associated.tools.in
8e620 20 74 77 6f 20 63 6f 6c 75 6d 6e 73 2c 20 61 6e 64 20 69 74 20 73 68 6f 75 6c 64 0a 20 20 73 63 .two.columns,.and.it.should...sc
8e640 61 6c 65 20 62 65 74 74 65 72 20 74 6f 20 61 6e 79 20 6e 75 6d 62 65 72 20 6f 66 20 74 6f 6f 6c ale.better.to.any.number.of.tool
8e660 73 2e 20 20 41 73 20 61 20 62 6f 6e 75 73 2c 20 74 68 65 20 6e 65 77 20 6d 65 6e 75 0a 20 20 72 s...As.a.bonus,.the.new.menu...r
8e680 65 71 75 69 72 65 73 20 68 61 6c 66 20 61 73 20 6d 61 6e 79 20 6b 65 79 73 74 72 6f 6b 65 73 20 equires.half.as.many.keystrokes.
8e6a0 61 73 20 62 65 66 6f 72 65 20 74 6f 20 65 6e 61 62 6c 65 20 69 6e 64 69 76 69 64 75 61 6c 0a 20 as.before.to.enable.individual..
8e6c0 20 74 6f 6f 6c 73 20 6f 72 20 74 6f 67 67 6c 65 20 63 61 74 65 67 6f 72 69 65 73 2e 0a 0a 2a 2a .tools.or.toggle.categories...**
8e6e0 20 4e 6f 74 61 62 6c 65 20 42 75 67 20 66 69 78 65 73 0a 0a 2d 20 46 69 78 20 6d 6f 72 65 20 4f .Notable.Bug.fixes..-.Fix.more.O
8e700 72 67 20 6d 61 72 6b 75 70 20 63 6f 6e 76 65 72 73 69 6f 6e 20 65 64 67 65 20 63 61 73 65 73 20 rg.markup.conversion.edge.cases.
8e720 69 6e 76 6f 6c 76 69 6e 67 20 6e 65 73 74 65 64 20 4d 61 72 6b 64 6f 77 6e 0a 20 20 64 65 6c 69 involving.nested.Markdown...deli
8e740 6d 69 74 65 72 73 2e 0a 0a 2a 20 30 2e 39 2e 38 20 32 30 32 35 2d 30 33 2d 31 33 0a 0a 56 65 72 miters...*.0.9.8.2025-03-13..Ver
8e760 73 69 6f 6e 20 30 2e 39 2e 38 20 61 64 64 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20 6e 65 77 20 sion.0.9.8.adds.support.for.new.
8e780 47 65 6d 69 6e 69 2c 20 41 6e 74 68 72 6f 70 69 63 2c 20 4f 70 65 6e 41 49 2c 0a 50 65 72 70 6c Gemini,.Anthropic,.OpenAI,.Perpl
8e7a0 65 78 69 74 79 2c 20 61 6e 64 20 44 65 65 70 53 65 65 6b 20 6d 6f 64 65 6c 73 2c 20 69 6e 74 72 exity,.and.DeepSeek.models,.intr
8e7c0 6f 64 75 63 65 73 20 4c 4c 4d 20 74 6f 6f 6c 20 75 73 65 2f 66 75 6e 63 74 69 6f 6e 0a 63 61 6c oduces.LLM.tool.use/function.cal
8e7e0 6c 69 6e 67 2c 20 61 20 72 65 64 65 73 69 67 6e 20 6f 66 20 7e 67 70 74 65 6c 2d 6d 65 6e 75 7e ling,.a.redesign.of.~gptel-menu~
8e800 2c 20 69 6e 63 6c 75 64 65 73 20 6e 65 77 20 63 75 73 74 6f 6d 69 7a 61 74 69 6f 6e 20 68 6f 6f ,.includes.new.customization.hoo
8e820 6b 73 2c 0a 64 72 79 2d 72 75 6e 20 6f 70 74 69 6f 6e 73 20 61 6e 64 20 72 65 66 69 6e 65 64 20 ks,.dry-run.options.and.refined.
8e840 73 65 74 74 69 6e 67 73 2c 20 69 6d 70 72 6f 76 65 6d 65 6e 74 73 20 74 6f 20 74 68 65 20 72 65 settings,.improvements.to.the.re
8e860 77 72 69 74 65 0a 66 65 61 74 75 72 65 20 61 6e 64 20 63 6f 6e 74 72 6f 6c 20 6f 66 20 4c 4c 4d write.feature.and.control.of.LLM
8e880 20 22 72 65 61 73 6f 6e 69 6e 67 22 20 63 6f 6e 74 65 6e 74 2e 0a 0a 2a 2a 20 42 72 65 61 6b 69 ."reasoning".content...**.Breaki
8e8a0 6e 67 20 63 68 61 6e 67 65 73 0a 0a 2d 20 7e 67 65 6d 69 6e 69 2d 70 72 6f 7e 20 68 61 73 20 62 ng.changes..-.~gemini-pro~.has.b
8e8c0 65 65 6e 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d 20 74 68 65 20 6c 69 73 74 20 6f 66 20 47 65 6d een.removed.from.the.list.of.Gem
8e8e0 69 6e 69 20 6d 6f 64 65 6c 73 2c 20 61 73 0a 20 20 74 68 69 73 20 6d 6f 64 65 6c 20 69 73 20 6e ini.models,.as...this.model.is.n
8e900 6f 20 6c 6f 6e 67 65 72 20 73 75 70 70 6f 72 74 65 64 20 62 79 20 74 68 65 20 47 65 6d 69 6e 69 o.longer.supported.by.the.Gemini
8e920 20 41 50 49 2e 0a 0a 2d 20 53 65 6e 64 69 6e 67 20 61 6e 20 61 63 74 69 76 65 20 72 65 67 69 6f .API...-.Sending.an.active.regio
8e940 6e 20 69 6e 20 4f 72 67 20 6d 6f 64 65 20 77 69 6c 6c 20 6e 6f 77 20 61 70 70 6c 79 20 4f 72 67 n.in.Org.mode.will.now.apply.Org
8e960 0a 20 20 6d 6f 64 65 2d 73 70 65 63 69 66 69 63 20 72 75 6c 65 73 20 74 6f 20 74 68 65 20 74 65 ...mode-specific.rules.to.the.te
8e980 78 74 2c 20 73 75 63 68 20 61 73 20 62 72 61 6e 63 68 69 6e 67 20 63 6f 6e 74 65 78 74 2e 0a 0a xt,.such.as.branching.context...
8e9a0 2d 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 6f 62 73 6f 6c 65 74 65 20 76 61 72 69 61 62 6c -.The.following.obsolete.variabl
8e9c0 65 73 20 61 6e 64 20 66 75 6e 63 74 69 6f 6e 73 20 68 61 76 65 20 62 65 65 6e 20 72 65 6d 6f 76 es.and.functions.have.been.remov
8e9e0 65 64 3a 0a 20 20 2d 20 7e 67 70 74 65 6c 2d 73 65 6e 64 2d 6d 65 6e 75 7e 3a 20 55 73 65 20 7e ed:...-.~gptel-send-menu~:.Use.~
8ea00 67 70 74 65 6c 2d 6d 65 6e 75 7e 20 69 6e 73 74 65 61 64 2e 0a 20 20 2d 20 7e 67 70 74 65 6c 2d gptel-menu~.instead....-.~gptel-
8ea20 68 6f 73 74 7e 3a 20 55 73 65 20 7e 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 7e 20 69 host~:.Use.~gptel-make-openai~.i
8ea40 6e 73 74 65 61 64 2e 0a 20 20 2d 20 7e 67 70 74 65 6c 2d 70 6c 61 79 62 61 63 6b 7e 3a 20 55 73 nstead....-.~gptel-playback~:.Us
8ea60 65 20 7e 67 70 74 65 6c 2d 73 74 72 65 61 6d 7e 20 69 6e 73 74 65 61 64 2e 0a 20 20 2d 20 7e 67 e.~gptel-stream~.instead....-.~g
8ea80 70 74 65 6c 2d 2d 64 65 62 75 67 7e 3a 20 55 73 65 20 7e 67 70 74 65 6c 2d 6c 6f 67 2d 6c 65 76 ptel--debug~:.Use.~gptel-log-lev
8eaa0 65 6c 7e 20 69 6e 73 74 65 61 64 2e 0a 0a 2a 2a 20 4e 65 77 20 6d 6f 64 65 6c 73 20 61 6e 64 20 el~.instead...**.New.models.and.
8eac0 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 73 65 76 65 backends..-.Add.support.for.seve
8eae0 72 61 6c 20 6e 65 77 20 47 65 6d 69 6e 69 20 6d 6f 64 65 6c 73 20 69 6e 63 6c 75 64 69 6e 67 0a ral.new.Gemini.models.including.
8eb00 20 20 7e 67 65 6d 69 6e 69 2d 32 2e 30 2d 66 6c 61 73 68 7e 2c 20 7e 67 65 6d 69 6e 69 2d 32 2e ..~gemini-2.0-flash~,.~gemini-2.
8eb20 30 2d 70 72 6f 2d 65 78 70 7e 20 61 6e 64 0a 20 20 7e 67 65 6d 69 6e 69 2d 32 2e 30 2d 66 6c 61 0-pro-exp~.and...~gemini-2.0-fla
8eb40 73 68 2d 74 68 69 6e 6b 69 6e 67 2d 65 78 70 7e 2c 20 61 6d 6f 6e 67 20 6f 74 68 65 72 73 2e 0a sh-thinking-exp~,.among.others..
8eb60 0a 2d 20 41 64 64 20 73 75 70 70 6f 72 74 20 66 6f 72 20 74 68 65 20 41 6e 74 68 72 6f 70 69 63 .-.Add.support.for.the.Anthropic
8eb80 20 6d 6f 64 65 6c 20 7e 63 6c 61 75 64 65 2d 33 2d 37 2d 73 6f 6e 6e 65 74 2d 32 30 32 35 30 32 .model.~claude-3-7-sonnet-202502
8eba0 31 39 7e 2c 0a 20 20 69 6e 63 6c 75 64 69 6e 67 20 69 74 73 20 22 72 65 61 73 6f 6e 69 6e 67 22 19~,...including.its."reasoning"
8ebc0 20 6f 75 74 70 75 74 2e 0a 0a 2d 20 41 64 64 20 73 75 70 70 6f 72 74 20 66 6f 72 20 4f 70 65 6e .output...-.Add.support.for.Open
8ebe0 41 49 27 73 20 7e 6f 31 7e 2c 20 7e 6f 33 2d 6d 69 6e 69 7e 20 61 6e 64 20 7e 67 70 74 2d 34 2e AI's.~o1~,.~o3-mini~.and.~gpt-4.
8ec00 35 2d 70 72 65 76 69 65 77 7e 0a 20 20 6d 6f 64 65 6c 73 2e 0a 0a 2d 20 41 64 64 20 73 75 70 70 5-preview~...models...-.Add.supp
8ec20 6f 72 74 20 66 6f 72 20 50 65 72 70 6c 65 78 69 74 79 2e 20 20 57 68 69 6c 65 20 67 70 74 65 6c ort.for.Perplexity...While.gptel
8ec40 20 73 75 70 70 6f 72 74 65 64 20 50 65 72 70 6c 65 78 69 74 79 20 69 6e 0a 20 20 65 61 72 6c 69 .supported.Perplexity.in...earli
8ec60 65 72 20 72 65 6c 65 61 73 65 73 20 62 79 20 72 65 75 73 69 6e 67 20 69 74 73 20 4f 70 65 6e 41 er.releases.by.reusing.its.OpenA
8ec80 49 20 73 75 70 70 6f 72 74 2c 20 74 68 65 72 65 20 69 73 20 6e 6f 77 20 66 69 72 73 74 0a 20 20 I.support,.there.is.now.first...
8eca0 63 6c 61 73 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20 74 68 65 20 50 65 72 70 6c 65 78 69 74 79 class.support.for.the.Perplexity
8ecc0 20 41 50 49 2c 20 69 6e 63 6c 75 64 69 6e 67 20 63 69 74 61 74 69 6f 6e 73 2e 0a 0a 2d 20 41 64 .API,.including.citations...-.Ad
8ece0 64 20 73 75 70 70 6f 72 74 20 66 6f 72 20 44 65 65 70 53 65 65 6b 2e 20 20 57 68 69 6c 65 20 67 d.support.for.DeepSeek...While.g
8ed00 70 74 65 6c 20 73 75 70 70 6f 72 74 65 64 20 44 65 65 70 53 65 65 6b 20 69 6e 20 65 61 72 6c 69 ptel.supported.DeepSeek.in.earli
8ed20 65 72 0a 20 20 72 65 6c 65 61 73 65 73 20 62 79 20 72 65 75 73 69 6e 67 20 69 74 73 20 4f 70 65 er...releases.by.reusing.its.Ope
8ed40 6e 41 49 20 73 75 70 70 6f 72 74 2c 20 74 68 65 72 65 20 69 73 20 6e 6f 77 20 66 69 72 73 74 20 nAI.support,.there.is.now.first.
8ed60 63 6c 61 73 73 0a 20 20 73 75 70 70 6f 72 74 20 66 6f 72 20 74 68 65 20 44 65 65 70 53 65 65 6b class...support.for.the.DeepSeek
8ed80 20 41 50 49 2c 20 69 6e 63 6c 75 64 69 6e 67 20 73 75 70 70 6f 72 74 20 66 6f 72 20 68 61 6e 64 .API,.including.support.for.hand
8eda0 6c 69 6e 67 0a 20 20 22 72 65 61 73 6f 6e 69 6e 67 22 20 6f 75 74 70 75 74 2e 0a 0a 2a 2a 20 4e ling..."reasoning".output...**.N
8edc0 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 0a 0a 2d 20 7e 67 ew.features.and.UI.changes..-.~g
8ede0 70 74 65 6c 2d 72 65 77 72 69 74 65 7e 20 6e 6f 77 20 73 75 70 70 6f 72 74 73 20 69 74 65 72 61 ptel-rewrite~.now.supports.itera
8ee00 74 69 6e 67 20 6f 6e 20 72 65 73 70 6f 6e 73 65 73 2e 0a 0a 2d 20 67 70 74 65 6c 20 73 75 70 70 ting.on.responses...-.gptel.supp
8ee20 6f 72 74 73 20 74 68 65 20 61 62 69 6c 69 74 79 20 74 6f 20 73 69 6d 75 6c 61 74 65 2f 64 72 79 orts.the.ability.to.simulate/dry
8ee40 2d 72 75 6e 20 72 65 71 75 65 73 74 73 20 73 6f 20 79 6f 75 20 63 61 6e 0a 20 20 73 65 65 20 65 -run.requests.so.you.can...see.e
8ee60 78 61 63 74 6c 79 20 77 68 61 74 20 77 69 6c 6c 20 62 65 20 73 65 6e 74 2e 20 20 54 68 69 73 20 xactly.what.will.be.sent...This.
8ee80 70 61 79 6c 6f 61 64 20 70 72 65 76 69 65 77 20 63 61 6e 20 6e 6f 77 20 62 65 0a 20 20 65 64 69 payload.preview.can.now.be...edi
8eea0 74 65 64 20 69 6e 20 70 6c 61 63 65 20 61 6e 64 20 74 68 65 20 72 65 71 75 65 73 74 20 63 6f 6e ted.in.place.and.the.request.con
8eec0 74 69 6e 75 65 64 2e 0a 0a 2d 20 44 69 72 65 63 74 6f 72 69 65 73 20 63 61 6e 20 6e 6f 77 20 62 tinued...-.Directories.can.now.b
8eee0 65 20 61 64 64 65 64 20 74 6f 20 67 70 74 65 6c 27 73 20 67 6c 6f 62 61 6c 20 63 6f 6e 74 65 78 e.added.to.gptel's.global.contex
8ef00 74 2e 20 20 44 6f 69 6e 67 20 73 6f 0a 20 20 77 69 6c 6c 20 61 64 64 20 61 6c 6c 20 66 69 6c 65 t...Doing.so...will.add.all.file
8ef20 73 20 69 6e 20 74 68 65 20 64 69 72 65 63 74 6f 72 79 20 72 65 63 75 72 73 69 76 65 6c 79 2e 0a s.in.the.directory.recursively..
8ef40 0a 2d 20 22 4f 6e 65 73 68 6f 74 22 20 73 65 74 74 69 6e 67 73 3a 20 77 68 65 6e 20 75 73 69 6e .-."Oneshot".settings:.when.usin
8ef60 67 20 67 70 74 65 6c 27 73 20 54 72 61 6e 73 69 65 6e 74 20 6d 65 6e 75 73 2c 20 72 65 71 75 65 g.gptel's.Transient.menus,.reque
8ef80 73 74 0a 20 20 70 61 72 61 6d 65 74 65 72 73 2c 20 64 69 72 65 63 74 69 76 65 73 20 61 6e 64 20 st...parameters,.directives.and.
8efa0 74 6f 6f 6c 73 20 63 61 6e 20 6e 6f 77 20 62 65 20 73 65 74 20 66 6f 72 20 74 68 65 20 6e 65 78 tools.can.now.be.set.for.the.nex
8efc0 74 20 72 65 71 75 65 73 74 0a 20 20 6f 6e 6c 79 20 69 6e 20 61 64 64 69 74 69 6f 6e 20 74 6f 20 t.request...only.in.addition.to.
8efe0 67 6c 6f 62 61 6c 6c 79 20 61 63 72 6f 73 73 20 74 68 65 20 45 6d 61 63 73 20 73 65 73 73 69 6f globally.across.the.Emacs.sessio
8f000 6e 20 61 6e 64 0a 20 20 62 75 66 66 65 72 2d 6c 6f 63 61 6c 6c 79 2e 20 20 54 68 69 73 20 69 73 n.and...buffer-locally...This.is
8f020 20 75 73 65 66 75 6c 20 66 6f 72 20 6d 61 6b 69 6e 67 20 6f 6e 65 2d 6f 66 66 20 72 65 71 75 65 .useful.for.making.one-off.reque
8f040 73 74 73 20 77 69 74 68 0a 20 20 64 69 66 66 65 72 65 6e 74 20 73 65 74 74 69 6e 67 73 2e 0a 0a sts.with...different.settings...
8f060 2d 20 7e 67 70 74 65 6c 2d 6d 6f 64 65 7e 20 63 61 6e 20 6e 6f 77 20 62 65 20 75 73 65 64 20 69 -.~gptel-mode~.can.now.be.used.i
8f080 6e 20 61 6c 6c 20 6d 6f 64 65 73 20 64 65 72 69 76 65 64 20 66 72 6f 6d 20 7e 74 65 78 74 2d 6d n.all.modes.derived.from.~text-m
8f0a0 6f 64 65 7e 2e 0a 0a 2d 20 67 70 74 65 6c 20 6e 6f 77 20 74 72 69 65 73 20 74 6f 20 68 61 6e 64 ode~...-.gptel.now.tries.to.hand
8f0c0 6c 65 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 73 20 74 68 61 74 20 61 72 65 20 69 6e 20 6d 69 78 le.LLM.responses.that.are.in.mix
8f0e0 65 64 0a 20 20 4f 72 67 2f 4d 61 72 6b 64 6f 77 6e 20 6d 61 72 6b 75 70 20 63 6f 72 72 65 63 74 ed...Org/Markdown.markup.correct
8f100 6c 79 2e 0a 0a 2d 20 41 64 64 20 7e 67 70 74 65 6c 2d 6f 72 67 2d 63 6f 6e 76 65 72 74 2d 72 65 ly...-.Add.~gptel-org-convert-re
8f120 73 70 6f 6e 73 65 7e 20 74 6f 20 74 6f 67 67 6c 65 20 74 68 65 20 61 75 74 6f 6d 61 74 69 63 20 sponse~.to.toggle.the.automatic.
8f140 63 6f 6e 76 65 72 73 69 6f 6e 0a 20 20 6f 66 20 28 70 6f 73 73 69 62 6c 79 29 20 4d 61 72 6b 64 conversion...of.(possibly).Markd
8f160 6f 77 6e 2d 66 6f 72 6d 61 74 74 65 64 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 73 20 74 6f 20 4f own-formatted.LLM.responses.to.O
8f180 72 67 20 6d 61 72 6b 75 70 20 77 68 65 72 65 0a 20 20 61 70 70 72 6f 70 72 69 61 74 65 2e 0a 0a rg.markup.where...appropriate...
8f1a0 2d 20 59 6f 75 20 63 61 6e 20 6e 6f 77 20 6c 6f 6f 6b 20 75 70 20 72 65 67 69 73 74 65 72 65 64 -.You.can.now.look.up.registered
8f1c0 20 67 70 74 65 6c 20 62 61 63 6b 65 6e 64 73 20 75 73 69 6e 67 20 74 68 65 0a 20 20 7e 67 70 74 .gptel.backends.using.the...~gpt
8f1e0 65 6c 2d 67 65 74 2d 62 61 63 6b 65 6e 64 7e 20 66 75 6e 63 74 69 6f 6e 2e 20 20 54 68 69 73 20 el-get-backend~.function...This.
8f200 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 6e 67 0a 20 20 is.intended.to.make.scripting...
8f220 61 6e 64 20 63 6f 6e 66 69 67 75 72 69 6e 67 20 67 70 74 65 6c 20 65 61 73 69 65 72 2e 20 20 7e and.configuring.gptel.easier...~
8f240 67 70 74 65 6c 2d 67 65 74 2d 62 61 63 6b 65 6e 64 7e 20 69 73 20 61 20 67 65 6e 65 72 61 6c 69 gptel-get-backend~.is.a.generali
8f260 7a 65 64 0a 20 20 76 61 72 69 61 62 6c 65 20 73 6f 20 79 6f 75 20 63 61 6e 20 28 75 6e 29 73 65 zed...variable.so.you.can.(un)se
8f280 74 20 62 61 63 6b 65 6e 64 73 20 77 69 74 68 20 7e 73 65 74 66 7e 2e 0a 0a 2d 20 54 6f 6f 6c 20 t.backends.with.~setf~...-.Tool.
8f2a0 75 73 65 3a 20 67 70 74 65 6c 20 6e 6f 77 20 73 75 70 70 6f 72 74 73 20 4c 4c 4d 20 74 6f 6f 6c use:.gptel.now.supports.LLM.tool
8f2c0 20 75 73 65 2c 20 6f 72 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 69 6e 67 2e 0a 20 20 45 73 73 .use,.or.function.calling....Ess
8f2e0 65 6e 74 69 61 6c 6c 79 20 79 6f 75 20 63 61 6e 20 65 71 75 69 70 20 74 68 65 20 4c 4c 4d 20 77 entially.you.can.equip.the.LLM.w
8f300 69 74 68 20 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 73 75 63 68 20 61 73 0a 20 20 66 69 6c 65 ith.capabilities.(such.as...file
8f320 73 79 73 74 65 6d 20 61 63 63 65 73 73 2c 20 77 65 62 20 73 65 61 72 63 68 2c 20 63 6f 6e 74 72 system.access,.web.search,.contr
8f340 6f 6c 20 6f 66 20 45 6d 61 63 73 20 6f 72 20 69 6e 74 72 6f 73 70 65 63 74 69 6f 6e 20 6f 66 0a ol.of.Emacs.or.introspection.of.
8f360 20 20 45 6d 61 63 73 27 20 73 74 61 74 65 20 61 6e 64 20 6d 6f 72 65 29 20 74 68 61 74 20 69 74 ..Emacs'.state.and.more).that.it
8f380 20 63 61 6e 20 75 73 65 20 74 6f 20 70 65 72 66 6f 72 6d 20 74 61 73 6b 73 20 66 6f 72 20 79 6f .can.use.to.perform.tasks.for.yo
8f3a0 75 2e 0a 20 20 67 70 74 65 6c 20 72 75 6e 73 20 74 68 65 73 65 20 74 6f 6f 6c 73 20 75 73 69 6e u....gptel.runs.these.tools.usin
8f3c0 67 20 61 72 67 75 6d 65 6e 74 20 76 61 6c 75 65 73 20 70 72 6f 76 69 64 65 64 20 62 79 20 74 68 g.argument.values.provided.by.th
8f3e0 65 20 4c 4c 4d 73 2e 0a 20 20 54 68 69 73 20 72 65 71 75 69 72 65 73 20 73 70 65 63 69 66 79 69 e.LLMs....This.requires.specifyi
8f400 6e 67 20 74 6f 6f 6c 73 2c 20 77 68 69 63 68 20 61 72 65 20 65 6c 69 73 70 20 66 75 6e 63 74 69 ng.tools,.which.are.elisp.functi
8f420 6f 6e 73 20 77 69 74 68 20 70 6c 61 69 6e 0a 20 20 74 65 78 74 20 64 65 73 63 72 69 70 74 69 6f ons.with.plain...text.descriptio
8f440 6e 73 20 6f 66 20 74 68 65 69 72 20 61 72 67 75 6d 65 6e 74 73 20 61 6e 64 20 72 65 73 75 6c 74 ns.of.their.arguments.and.result
8f460 73 2e 20 20 67 70 74 65 6c 20 64 6f 65 73 20 6e 6f 74 0a 20 20 69 6e 63 6c 75 64 65 20 61 6e 79 s...gptel.does.not...include.any
8f480 20 74 6f 6f 6c 73 20 6f 75 74 20 6f 66 20 74 68 65 20 62 6f 78 20 79 65 74 2e 0a 0a 2d 20 59 6f .tools.out.of.the.box.yet...-.Yo
8f4a0 75 20 63 61 6e 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 74 u.can.look.up.registered.gptel.t
8f4c0 6f 6f 6c 73 20 75 73 69 6e 67 20 74 68 65 20 7e 67 70 74 65 6c 2d 67 65 74 2d 74 6f 6f 6c 7e 0a ools.using.the.~gptel-get-tool~.
8f4e0 20 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 6f ..function...This.is.intended.to
8f500 20 6d 61 6b 65 20 73 63 72 69 70 74 69 6e 67 20 61 6e 64 20 63 6f 6e 66 69 67 75 72 69 6e 67 20 .make.scripting.and.configuring.
8f520 67 70 74 65 6c 0a 20 20 65 61 73 69 65 72 2e 20 20 7e 67 70 74 65 6c 2d 67 65 74 2d 74 6f 6f 6c gptel...easier...~gptel-get-tool
8f540 7e 20 69 73 20 61 20 67 65 6e 65 72 61 6c 69 7a 65 64 20 76 61 72 69 61 62 6c 65 20 73 6f 20 79 ~.is.a.generalized.variable.so.y
8f560 6f 75 20 63 61 6e 0a 20 20 28 75 6e 29 73 65 74 20 74 6f 6f 6c 73 20 77 69 74 68 20 7e 73 65 74 ou.can...(un)set.tools.with.~set
8f580 66 7e 2e 0a 0a 2d 20 4e 65 77 20 68 6f 6f 6b 73 20 66 6f 72 20 63 75 73 74 6f 6d 69 7a 61 74 69 f~...-.New.hooks.for.customizati
8f5a0 6f 6e 3a 0a 20 20 2b 20 7e 67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 66 69 6c 74 65 72 2d 68 6f 6f on:...+.~gptel-prompt-filter-hoo
8f5c0 6b 7e 20 72 75 6e 73 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 k~.runs.in.a.temporary.buffer.co
8f5e0 6e 74 61 69 6e 69 6e 67 0a 20 20 20 20 74 68 65 20 74 65 78 74 20 74 6f 20 62 65 20 73 65 6e 74 ntaining.....the.text.to.be.sent
8f600 2c 20 62 65 66 6f 72 65 20 74 68 65 20 66 75 6c 6c 20 71 75 65 72 79 20 69 73 20 63 72 65 61 74 ,.before.the.full.query.is.creat
8f620 65 64 2e 20 20 49 74 20 63 61 6e 20 62 65 0a 20 20 20 20 75 73 65 64 20 66 6f 72 20 61 72 62 69 ed...It.can.be.....used.for.arbi
8f640 74 72 61 72 79 20 74 65 78 74 20 74 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 73 20 74 6f 20 74 68 trary.text.transformations.to.th
8f660 65 20 73 6f 75 72 63 65 20 74 65 78 74 2e 0a 20 20 2b 20 7e 67 70 74 65 6c 2d 70 6f 73 74 2d 72 e.source.text....+.~gptel-post-r
8f680 65 71 75 65 73 74 2d 68 6f 6f 6b 7e 20 72 75 6e 73 20 61 66 74 65 72 20 74 68 65 20 72 65 71 75 equest-hook~.runs.after.the.requ
8f6a0 65 73 74 20 69 73 20 73 65 6e 74 2c 20 61 6e 64 0a 20 20 20 20 28 70 6f 73 73 69 62 6c 79 29 20 est.is.sent,.and.....(possibly).
8f6c0 62 65 66 6f 72 65 20 61 6e 79 20 72 65 73 70 6f 6e 73 65 20 69 73 20 72 65 63 65 69 76 65 64 2e before.any.response.is.received.
8f6e0 20 20 54 68 69 73 20 69 73 20 69 6e 74 65 6e 64 65 64 20 66 6f 72 0a 20 20 20 20 70 72 65 70 61 ..This.is.intended.for.....prepa
8f700 72 61 74 6f 72 79 2f 72 65 73 65 74 20 63 6f 64 65 2e 0a 20 20 2b 20 7e 67 70 74 65 6c 2d 70 6f ratory/reset.code....+.~gptel-po
8f720 73 74 2d 72 65 77 72 69 74 65 2d 68 6f 6f 6b 7e 20 72 75 6e 73 20 61 66 74 65 72 20 61 20 7e 67 st-rewrite-hook~.runs.after.a.~g
8f740 70 74 65 6c 2d 72 65 77 72 69 74 65 7e 20 72 65 71 75 65 73 74 20 69 73 0a 20 20 20 20 73 75 63 ptel-rewrite~.request.is.....suc
8f760 63 65 73 73 66 75 6c 6c 79 20 61 6e 64 20 66 75 6c 6c 79 20 72 65 63 65 69 76 65 64 2e 0a 0a 2d cessfully.and.fully.received...-
8f780 20 7e 67 70 74 65 6c 2d 6d 65 6e 75 7e 20 68 61 73 20 62 65 65 6e 20 72 65 64 65 73 69 67 6e 65 .~gptel-menu~.has.been.redesigne
8f7a0 64 2e 20 20 49 74 20 6e 6f 77 20 73 68 6f 77 73 20 61 20 76 65 72 62 6f 73 65 0a 20 20 64 65 73 d...It.now.shows.a.verbose...des
8f7c0 63 72 69 70 74 69 6f 6e 20 6f 66 20 77 68 61 74 20 77 69 6c 6c 20 62 65 20 73 65 6e 74 20 61 6e cription.of.what.will.be.sent.an
8f7e0 64 20 77 68 65 72 65 20 74 68 65 20 6f 75 74 70 75 74 20 77 69 6c 6c 20 67 6f 2e 20 20 54 68 69 d.where.the.output.will.go...Thi
8f800 73 0a 20 20 69 73 20 69 6e 74 65 6e 64 65 64 20 74 6f 20 70 72 6f 76 69 64 65 20 63 6c 61 72 69 s...is.intended.to.provide.clari
8f820 74 79 20 6f 6e 20 67 70 74 65 6c 27 73 20 64 65 66 61 75 6c 74 20 70 72 6f 6d 70 74 69 6e 67 0a ty.on.gptel's.default.prompting.
8f840 20 20 62 65 68 61 76 69 6f 72 2c 20 61 73 20 77 65 6c 6c 20 61 73 20 74 68 65 20 65 66 66 65 63 ..behavior,.as.well.as.the.effec
8f860 74 20 6f 66 20 74 68 65 20 76 61 72 69 6f 75 73 20 70 72 6f 6d 70 74 2f 72 65 73 70 6f 6e 73 65 t.of.the.various.prompt/response
8f880 0a 20 20 72 65 64 69 72 65 63 74 69 6f 6e 20 69 74 20 70 72 6f 76 69 64 65 73 2e 20 20 49 6e 63 ...redirection.it.provides...Inc
8f8a0 6f 6d 70 61 74 69 62 6c 65 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 73 20 6f 66 20 6f 70 74 69 6f 6e ompatible.combinations.of.option
8f8c0 73 20 61 72 65 0a 20 20 6e 6f 77 20 64 69 73 61 6c 6c 6f 77 65 64 2e 0a 0a 2d 20 54 68 65 20 73 s.are...now.disallowed...-.The.s
8f8e0 70 61 63 69 6e 67 20 62 65 74 77 65 65 6e 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20 70 72 pacing.between.the.end.of.the.pr
8f900 6f 6d 70 74 20 61 6e 64 20 74 68 65 20 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20 74 68 65 0a 20 20 ompt.and.the.beginning.of.the...
8f920 72 65 73 70 6f 6e 73 65 20 69 6e 20 62 75 66 66 65 72 73 20 69 73 20 6e 6f 77 20 63 75 73 74 6f response.in.buffers.is.now.custo
8f940 6d 69 7a 61 62 6c 65 20 76 69 61 0a 20 20 7e 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 73 65 mizable.via...~gptel-response-se
8f960 70 61 72 61 74 6f 72 7e 2c 20 61 6e 64 20 63 61 6e 20 62 65 20 61 6e 79 20 73 74 72 69 6e 67 2e parator~,.and.can.be.any.string.
8f980 0a 0a 2d 20 7e 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 72 65 6d 6f 76 65 2d 61 6c 6c 7e 20 69 ..-.~gptel-context-remove-all~.i
8f9a0 73 20 6e 6f 77 20 61 6e 20 69 6e 74 65 72 61 63 74 69 76 65 20 63 6f 6d 6d 61 6e 64 2e 0a 0a 2d s.now.an.interactive.command...-
8f9c0 20 67 70 74 65 6c 20 6e 6f 77 20 68 61 6e 64 6c 65 73 20 22 72 65 61 73 6f 6e 69 6e 67 22 20 63 .gptel.now.handles."reasoning".c
8f9e0 6f 6e 74 65 6e 74 20 70 72 6f 64 75 63 65 64 20 62 79 20 4c 4c 4d 73 2e 20 20 53 6f 6d 65 20 4c ontent.produced.by.LLMs...Some.L
8fa00 4c 4d 73 0a 20 20 69 6e 63 6c 75 64 65 20 69 6e 20 74 68 65 69 72 20 72 65 73 70 6f 6e 73 65 20 LMs...include.in.their.response.
8fa20 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 22 20 73 65 63 74 a."thinking".or."reasoning".sect
8fa40 69 6f 6e 2e 20 20 54 68 69 73 0a 20 20 74 65 78 74 20 69 6d 70 72 6f 76 65 73 20 74 68 65 20 71 ion...This...text.improves.the.q
8fa60 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 74 70 uality.of.the.LLM...s.final.outp
8fa80 75 74 2c 20 62 75 74 20 6d 61 79 20 6e 6f 74 20 62 65 0a 20 20 69 6e 74 65 72 65 73 74 69 6e 67 ut,.but.may.not.be...interesting
8faa0 20 74 6f 20 79 6f 75 20 62 79 20 69 74 73 65 6c 66 2e 20 20 54 68 65 20 6e 65 77 20 75 73 65 72 .to.you.by.itself...The.new.user
8fac0 20 6f 70 74 69 6f 6e 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 .option...~gptel-include-reasoni
8fae0 6e 67 7e 20 63 6f 6e 74 72 6f 6c 73 20 77 68 65 74 68 65 72 20 61 6e 64 20 68 6f 77 20 67 70 74 ng~.controls.whether.and.how.gpt
8fb00 65 6c 20 64 69 73 70 6c 61 79 73 0a 20 20 74 68 69 73 20 63 6f 6e 74 65 6e 74 2e 0a 0a 2d 20 28 el.displays...this.content...-.(
8fb20 41 6e 74 68 72 6f 70 69 63 20 41 50 49 20 6f 6e 6c 79 29 20 53 6f 6d 65 20 4c 4c 4d 20 62 61 63 Anthropic.API.only).Some.LLM.bac
8fb40 6b 65 6e 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 kends.can.cache.content.sent.to.
8fb60 69 74 0a 20 20 62 79 20 67 70 74 65 6c 2c 20 73 6f 20 74 68 61 74 20 6f 6e 6c 79 20 74 68 65 20 it...by.gptel,.so.that.only.the.
8fb80 6e 65 77 6c 79 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 newly.included.part.of.the.text.
8fba0 6e 65 65 64 73 20 74 6f 0a 20 20 62 65 20 70 72 6f 63 65 73 73 65 64 20 6f 6e 20 73 75 62 73 65 needs.to...be.processed.on.subse
8fbc0 71 75 65 6e 74 20 63 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 quent.conversation.turns...This.
8fbe0 72 65 73 75 6c 74 73 20 69 6e 0a 20 20 66 61 73 74 65 72 20 61 6e 64 20 73 69 67 6e 69 66 69 63 results.in...faster.and.signific
8fc00 61 6e 74 6c 79 20 63 68 65 61 70 65 72 20 70 72 6f 63 65 73 73 69 6e 67 2e 20 54 68 65 20 6e 65 antly.cheaper.processing..The.ne
8fc20 77 20 75 73 65 72 20 6f 70 74 69 6f 6e 0a 20 20 7e 67 70 74 65 6c 2d 63 61 63 68 65 7e 20 63 61 w.user.option...~gptel-cache~.ca
8fc40 6e 20 62 65 20 75 73 65 64 20 74 6f 20 73 70 65 63 69 66 79 20 63 61 63 68 69 6e 67 20 70 72 65 n.be.used.to.specify.caching.pre
8fc60 66 65 72 65 6e 63 65 73 20 66 6f 72 0a 20 20 70 72 6f 6d 70 74 73 2c 20 74 68 65 20 73 79 73 74 ferences.for...prompts,.the.syst
8fc80 65 6d 20 6d 65 73 73 61 67 65 20 61 6e 64 2f 6f 72 20 74 6f 6f 6c 20 64 65 66 69 6e 69 74 69 6f em.message.and/or.tool.definitio
8fca0 6e 73 2e 20 20 54 68 69 73 20 69 73 0a 20 20 73 75 70 70 6f 72 74 65 64 20 6f 6e 6c 79 20 62 79 ns...This.is...supported.only.by
8fcc0 20 74 68 65 20 41 6e 74 68 72 6f 70 69 63 20 41 50 49 20 72 69 67 68 74 20 6e 6f 77 2e 0a 0a 2d .the.Anthropic.API.right.now...-
8fce0 20 28 4f 72 67 20 6d 6f 64 65 29 20 4f 72 67 20 70 72 6f 70 65 72 74 79 20 64 72 61 77 65 72 73 .(Org.mode).Org.property.drawers
8fd00 20 61 72 65 20 6e 6f 77 20 73 74 72 69 70 70 65 64 20 66 72 6f 6d 20 74 68 65 20 70 72 6f 6d 70 .are.now.stripped.from.the.promp
8fd20 74 0a 20 20 74 65 78 74 20 62 65 66 6f 72 65 20 73 65 6e 64 69 6e 67 20 71 75 65 72 69 65 73 2e t...text.before.sending.queries.
8fd40 20 20 59 6f 75 20 63 61 6e 20 63 6f 6e 74 72 6f 6c 20 74 68 69 73 20 62 65 68 61 76 69 6f 72 20 ..You.can.control.this.behavior.
8fd60 6f 72 0a 20 20 73 70 65 63 69 66 79 20 61 64 64 69 74 69 6f 6e 61 6c 20 4f 72 67 20 65 6c 65 6d or...specify.additional.Org.elem
8fd80 65 6e 74 73 20 74 6f 20 69 67 6e 6f 72 65 20 76 69 61 0a 20 20 7e 67 70 74 65 6c 2d 6f 72 67 2d ents.to.ignore.via...~gptel-org-
8fda0 69 67 6e 6f 72 65 2d 65 6c 65 6d 65 6e 74 73 7e 2e 20 20 28 46 6f 72 20 6d 6f 72 65 20 63 6f 6d ignore-elements~...(For.more.com
8fdc0 70 6c 65 78 20 70 72 65 2d 70 72 6f 63 65 73 73 69 6e 67 20 79 6f 75 0a 20 20 63 61 6e 20 75 73 plex.pre-processing.you...can.us
8fde0 65 20 7e 67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 66 69 6c 74 65 72 2d 68 6f 6f 6b 7e 2e 29 0a 0a e.~gptel-prompt-filter-hook~.)..
8fe00 2a 2a 20 4e 6f 74 61 62 6c 65 20 42 75 67 20 66 69 78 65 73 0a 0a 2d 20 46 69 78 20 72 65 73 70 **.Notable.Bug.fixes..-.Fix.resp
8fe20 6f 6e 73 65 20 6d 69 78 2d 75 70 20 77 68 65 6e 20 72 75 6e 6e 69 6e 67 20 63 6f 6e 63 75 72 72 onse.mix-up.when.running.concurr
8fe40 65 6e 74 20 72 65 71 75 65 73 74 73 20 69 6e 20 4f 72 67 20 6d 6f 64 65 0a 20 20 62 75 66 66 65 ent.requests.in.Org.mode...buffe
8fe60 72 73 2e 0a 2d 20 67 70 74 65 6c 20 6e 6f 77 20 77 6f 72 6b 73 20 61 72 6f 75 6e 64 20 61 6e 20 rs..-.gptel.now.works.around.an.
8fe80 4f 72 67 20 66 6f 6e 74 69 66 69 63 61 74 69 6f 6e 20 62 75 67 20 77 68 65 72 65 20 73 74 72 65 Org.fontification.bug.where.stre
8fea0 61 6d 69 6e 67 0a 20 20 72 65 73 70 6f 6e 73 65 73 20 69 6e 20 4f 72 67 20 6d 6f 64 65 20 62 75 aming...responses.in.Org.mode.bu
8fec0 66 66 65 72 73 20 73 6f 6d 65 74 69 6d 65 73 20 63 61 75 73 65 64 20 73 6f 75 72 63 65 20 63 6f ffers.sometimes.caused.source.co
8fee0 64 65 20 62 6c 6f 63 6b 73 20 74 6f 0a 20 20 72 65 6d 61 69 6e 20 75 6e 66 6f 6e 74 69 66 69 65 de.blocks.to...remain.unfontifie
8ff00 64 2e 0a 0a 2a 20 30 2e 39 2e 37 20 32 30 32 34 2d 31 32 2d 30 34 0a 0a 56 65 72 73 69 6f 6e 20 d...*.0.9.7.2024-12-04..Version.
8ff20 30 2e 39 2e 37 20 61 64 64 73 20 64 79 6e 61 6d 69 63 20 64 69 72 65 63 74 69 76 65 73 2c 20 61 0.9.7.adds.dynamic.directives,.a
8ff40 20 62 65 74 74 65 72 20 72 65 77 72 69 74 65 20 69 6e 74 65 72 66 61 63 65 2c 0a 73 74 72 65 61 .better.rewrite.interface,.strea
8ff60 6d 69 6e 67 20 73 75 70 70 6f 72 74 20 74 6f 20 74 68 65 20 67 70 74 65 6c 20 72 65 71 75 65 73 ming.support.to.the.gptel.reques
8ff80 74 20 41 50 49 2c 20 61 6e 64 20 6d 6f 72 65 20 66 6c 65 78 69 62 6c 65 0a 6d 6f 64 65 6c 2f 62 t.API,.and.more.flexible.model/b
8ffa0 61 63 6b 65 6e 64 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 0a 0a 2a 2a 20 42 72 65 61 6b 69 ackend.configuration...**.Breaki
8ffc0 6e 67 20 63 68 61 6e 67 65 73 0a 7e 67 70 74 65 6c 2d 72 65 77 72 69 74 65 2d 6d 65 6e 75 7e 20 ng.changes.~gptel-rewrite-menu~.
8ffe0 68 61 73 20 62 65 65 6e 20 6f 62 73 6f 6c 65 74 65 64 2e 20 20 55 73 65 20 7e 67 70 74 65 6c 2d has.been.obsoleted...Use.~gptel-
90000 72 65 77 72 69 74 65 7e 20 69 6e 73 74 65 61 64 2e 0a 0a 2a 2a 20 42 61 63 6b 65 6e 64 73 0a 2d rewrite~.instead...**.Backends.-
90020 20 41 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 2d 70 72 .Add.support.for.OpenAI's.~o1-pr
90040 65 76 69 65 77 7e 20 61 6e 64 20 7e 6f 31 2d 6d 69 6e 69 7e 2e 0a 0a 2d 20 41 64 64 20 73 75 70 eview~.and.~o1-mini~...-.Add.sup
90060 70 6f 72 74 20 66 6f 72 20 41 6e 74 68 72 6f 70 69 63 27 73 20 43 6c 61 75 64 65 20 33 2e 35 20 port.for.Anthropic's.Claude.3.5.
90080 48 61 69 6b 75 2e 0a 0a 2d 20 41 64 64 20 73 75 70 70 6f 72 74 20 66 6f 72 20 78 41 49 2e 0a 0a Haiku...-.Add.support.for.xAI...
900a0 2d 20 41 64 64 20 73 75 70 70 6f 72 74 20 66 6f 72 20 4e 6f 76 69 74 61 20 41 49 2e 0a 0a 2a 2a -.Add.support.for.Novita.AI...**
900c0 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 0a 0a 2d 20 .New.features.and.UI.changes..-.
900e0 67 70 74 65 6c 27 73 20 64 69 72 65 63 74 69 76 65 73 20 28 73 65 65 20 7e 67 70 74 65 6c 2d 64 gptel's.directives.(see.~gptel-d
90100 69 72 65 63 74 69 76 65 73 7e 29 20 63 61 6e 20 6e 6f 77 20 62 65 20 64 79 6e 61 6d 69 63 2c 20 irectives~).can.now.be.dynamic,.
90120 61 6e 64 0a 20 20 69 6e 63 6c 75 64 65 20 6d 6f 72 65 20 74 68 61 6e 20 74 68 65 20 73 79 73 74 and...include.more.than.the.syst
90140 65 6d 20 6d 65 73 73 61 67 65 2e 20 20 59 6f 75 20 63 61 6e 20 22 70 72 65 2d 66 69 6c 6c 22 20 em.message...You.can."pre-fill".
90160 61 0a 20 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 20 77 69 74 68 20 63 61 6e 6e 65 64 20 75 73 65 a...conversation.with.canned.use
90180 72 2f 4c 4c 4d 20 6d 65 73 73 61 67 65 73 2e 20 20 44 69 72 65 63 74 69 76 65 73 20 63 61 6e 20 r/LLM.messages...Directives.can.
901a0 6e 6f 77 20 62 65 0a 20 20 66 75 6e 63 74 69 6f 6e 73 20 74 68 61 74 20 64 79 6e 61 6d 69 63 61 now.be...functions.that.dynamica
901c0 6c 6c 79 20 67 65 6e 65 72 61 74 65 20 74 68 65 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 20 lly.generate.the.system.message.
901e0 61 6e 64 0a 20 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 20 68 69 73 74 6f 72 79 20 62 61 73 65 64 and...conversation.history.based
90200 20 6f 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20 63 6f 6e 74 65 78 74 2e 20 20 54 68 69 73 20 70 .on.the.current.context...This.p
90220 61 76 65 73 20 74 68 65 0a 20 20 77 61 79 20 66 6f 72 20 66 75 6c 6c 79 20 66 6c 65 78 69 62 6c aves.the...way.for.fully.flexibl
90240 65 20 74 61 73 6b 2d 73 70 65 63 69 66 69 63 20 74 65 6d 70 6c 61 74 65 73 2c 20 77 68 69 63 68 e.task-specific.templates,.which
90260 20 74 68 65 20 55 49 20 64 6f 65 73 0a 20 20 6e 6f 74 20 79 65 74 20 73 75 70 70 6f 72 74 20 69 .the.UI.does...not.yet.support.i
90280 6e 20 66 75 6c 6c 2e 0a 0a 2d 20 67 70 74 65 6c 27 73 20 72 65 77 72 69 74 65 20 69 6e 74 65 72 n.full...-.gptel's.rewrite.inter
902a0 66 61 63 65 20 68 61 73 20 62 65 65 6e 20 72 65 77 6f 72 6b 65 64 2e 20 20 49 66 20 75 73 69 6e face.has.been.reworked...If.usin
902c0 67 20 61 20 73 74 72 65 61 6d 69 6e 67 0a 20 20 65 6e 64 70 6f 69 6e 74 2c 20 74 68 65 20 72 65 g.a.streaming...endpoint,.the.re
902e0 77 72 69 74 74 65 6e 20 74 65 78 74 20 69 73 20 73 74 72 65 61 6d 65 64 20 69 6e 20 61 73 20 61 written.text.is.streamed.in.as.a
90300 20 70 72 65 76 69 65 77 20 70 6c 61 63 65 64 20 6f 76 65 72 0a 20 20 74 68 65 20 6f 72 69 67 69 .preview.placed.over...the.origi
90320 6e 61 6c 2e 20 20 49 6e 20 61 6c 6c 20 63 61 73 65 73 2c 20 63 6c 69 63 6b 69 6e 67 20 6f 6e 20 nal...In.all.cases,.clicking.on.
90340 74 68 65 20 70 72 65 76 69 65 77 20 62 72 69 6e 67 73 20 75 70 20 61 0a 20 20 64 69 73 70 61 74 the.preview.brings.up.a...dispat
90360 63 68 20 79 6f 75 20 63 61 6e 20 75 73 65 20 74 6f 20 65 61 73 69 6c 79 20 64 69 66 66 2c 20 65 ch.you.can.use.to.easily.diff,.e
90380 64 69 66 66 2c 20 6d 65 72 67 65 2c 20 61 63 63 65 70 74 20 6f 72 20 72 65 6a 65 63 74 0a 20 20 diff,.merge,.accept.or.reject...
903a0 74 68 65 20 63 68 61 6e 67 65 73 20 28 34 61 65 39 63 31 62 32 29 2c 20 61 6e 64 20 79 6f 75 20 the.changes.(4ae9c1b2),.and.you.
903c0 63 61 6e 20 63 6f 6e 66 69 67 75 72 65 20 67 70 74 65 6c 20 74 6f 20 72 75 6e 20 6f 6e 65 20 6f can.configure.gptel.to.run.one.o
903e0 66 0a 20 20 74 68 65 73 65 20 61 63 74 69 6f 6e 73 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2e f...these.actions.automatically.
90400 20 20 53 65 65 20 74 68 65 20 52 45 41 44 4d 45 20 66 6f 72 20 65 78 61 6d 70 6c 65 73 2e 0a 0a ..See.the.README.for.examples...
90420 2d 20 7e 67 70 74 65 6c 2d 61 62 6f 72 74 7e 2c 20 75 73 65 64 20 74 6f 20 63 61 6e 63 65 6c 20 -.~gptel-abort~,.used.to.cancel.
90440 72 65 71 75 65 73 74 73 20 69 6e 20 70 72 6f 67 72 65 73 73 2c 20 6e 6f 77 20 77 6f 72 6b 73 20 requests.in.progress,.now.works.
90460 61 63 72 6f 73 73 0a 20 20 74 68 65 20 62 6f 61 72 64 2c 20 69 6e 63 6c 75 64 69 6e 67 20 77 68 across...the.board,.including.wh
90480 65 6e 20 6e 6f 74 20 75 73 69 6e 67 20 43 75 72 6c 20 6f 72 20 77 69 74 68 20 7e 67 70 74 65 6c en.not.using.Curl.or.with.~gptel
904a0 2d 72 65 77 72 69 74 65 7e 2e 0a 0a 2d 20 54 68 65 20 7e 67 70 74 65 6c 2d 72 65 71 75 65 73 74 -rewrite~...-.The.~gptel-request
904c0 7e 20 41 50 49 20 6e 6f 77 20 65 78 70 6c 69 63 69 74 6c 79 20 73 75 70 70 6f 72 74 73 20 73 74 ~.API.now.explicitly.supports.st
904e0 72 65 61 6d 69 6e 67 20 72 65 73 70 6f 6e 73 65 73 0a 20 20 2c 20 6d 61 6b 69 6e 67 20 69 74 20 reaming.responses...,.making.it.
90500 65 61 73 79 20 74 6f 20 77 72 69 74 65 20 79 6f 75 72 20 6f 77 6e 20 68 65 6c 70 65 72 73 20 6f easy.to.write.your.own.helpers.o
90520 72 20 66 65 61 74 75 72 65 73 20 77 69 74 68 0a 20 20 73 74 72 65 61 6d 69 6e 67 20 73 75 70 70 r.features.with...streaming.supp
90540 6f 72 74 2e 20 20 54 68 65 20 41 50 49 20 61 6c 73 6f 20 73 75 70 70 6f 72 74 73 20 7e 67 70 74 ort...The.API.also.supports.~gpt
90560 65 6c 2d 61 62 6f 72 74 7e 20 74 6f 20 73 74 6f 70 20 61 6e 64 0a 20 20 63 6c 65 61 6e 20 75 70 el-abort~.to.stop.and...clean.up
90580 20 72 65 73 70 6f 6e 73 65 73 2e 0a 0a 2d 20 59 6f 75 20 63 61 6e 20 6e 6f 77 20 75 6e 73 65 74 .responses...-.You.can.now.unset
905a0 20 74 68 65 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 20 2d 2d 20 64 69 66 66 65 72 65 6e 74 .the.system.message.--.different
905c0 20 66 72 6f 6d 20 73 65 74 74 69 6e 67 20 69 74 20 74 6f 0a 20 20 61 6e 20 65 6d 70 74 79 20 73 .from.setting.it.to...an.empty.s
905e0 74 72 69 6e 67 2e 20 20 67 70 74 65 6c 20 77 69 6c 6c 20 61 6c 73 6f 20 61 75 74 6f 6d 61 74 69 tring...gptel.will.also.automati
90600 63 61 6c 6c 79 20 64 69 73 61 62 6c 65 20 74 68 65 20 73 79 73 74 65 6d 0a 20 20 6d 65 73 73 61 cally.disable.the.system...messa
90620 67 65 20 77 68 65 6e 20 75 73 69 6e 67 20 6d 6f 64 65 6c 73 20 74 68 61 74 20 64 6f 6e 27 74 20 ge.when.using.models.that.don't.
90640 73 75 70 70 6f 72 74 20 69 74 2e 0a 0a 2d 20 53 75 70 70 6f 72 74 20 66 6f 72 20 69 6e 63 6c 75 support.it...-.Support.for.inclu
90660 64 69 6e 67 20 50 44 46 73 20 77 69 74 68 20 72 65 71 75 65 73 74 73 20 74 6f 20 41 6e 74 68 72 ding.PDFs.with.requests.to.Anthr
90680 6f 70 69 63 20 6d 6f 64 65 6c 73 20 68 61 73 0a 20 20 62 65 65 6e 20 61 64 64 65 64 2e 20 20 28 opic.models.has...been.added...(
906a0 54 68 65 73 65 20 71 75 65 72 69 65 73 20 61 72 65 20 63 61 63 68 65 64 2c 20 73 6f 20 79 6f 75 These.queries.are.cached,.so.you
906c0 20 70 61 79 20 6f 6e 6c 79 20 31 30 25 20 6f 66 20 74 68 65 0a 20 20 74 6f 6b 65 6e 20 63 6f 73 .pay.only.10%.of.the...token.cos
906e0 74 20 6f 66 20 74 68 65 20 50 44 46 20 69 6e 20 66 6f 6c 6c 6f 77 2d 75 70 20 71 75 65 72 69 65 t.of.the.PDF.in.follow-up.querie
90700 73 2e 29 20 20 4e 6f 74 65 20 74 68 61 74 20 64 6f 63 75 6d 65 6e 74 0a 20 20 73 75 70 70 6f 72 s.)..Note.that.document...suppor
90720 74 20 28 50 44 46 73 20 65 74 63 29 20 66 6f 72 20 47 65 6d 69 6e 69 20 6d 6f 64 65 6c 73 20 68 t.(PDFs.etc).for.Gemini.models.h
90740 61 73 20 62 65 65 6e 20 61 76 61 69 6c 61 62 6c 65 20 73 69 6e 63 65 0a 20 20 76 30 2e 39 2e 35 as.been.available.since...v0.9.5
90760 2e 0a 0a 2d 20 57 68 65 6e 20 64 65 66 69 6e 69 6e 67 20 61 20 67 70 74 65 6c 20 6d 6f 64 65 6c ...-.When.defining.a.gptel.model
90780 20 6f 72 20 62 61 63 6b 65 6e 64 2c 20 79 6f 75 20 63 61 6e 20 73 70 65 63 69 66 79 20 61 72 62 .or.backend,.you.can.specify.arb
907a0 69 74 72 61 72 79 0a 20 20 70 61 72 61 6d 65 74 65 72 73 20 74 6f 20 62 65 20 73 65 6e 74 20 77 itrary...parameters.to.be.sent.w
907c0 69 74 68 20 65 61 63 68 20 72 65 71 75 65 73 74 2e 20 20 54 68 69 73 20 69 6e 63 6c 75 64 65 73 ith.each.request...This.includes
907e0 20 74 68 65 20 28 6d 61 6e 79 29 0a 20 20 41 50 49 20 6f 70 74 69 6f 6e 73 20 61 63 72 6f 73 73 .the.(many)...API.options.across
90800 20 61 6c 6c 20 41 50 49 73 20 74 68 61 74 20 67 70 74 65 6c 20 64 6f 65 73 20 6e 6f 74 20 79 65 .all.APIs.that.gptel.does.not.ye
90820 74 20 70 72 6f 76 69 64 65 20 65 78 70 6c 69 63 69 74 0a 20 20 73 75 70 70 6f 72 74 20 66 6f 72 t.provide.explicit...support.for
90840 2e 0a 0a 2d 20 4e 65 77 20 74 72 61 6e 73 69 65 6e 74 20 63 6f 6d 6d 61 6e 64 20 6f 70 74 69 6f ...-.New.transient.command.optio
90860 6e 20 74 6f 20 65 61 73 69 6c 79 20 72 65 6d 6f 76 65 20 61 6c 6c 20 69 6e 63 6c 75 64 65 64 20 n.to.easily.remove.all.included.
90880 63 6f 6e 74 65 78 74 0a 20 20 63 68 75 6e 6b 73 2e 0a 0a 2a 2a 20 4e 6f 74 61 62 6c 65 20 42 75 context...chunks...**.Notable.Bu
908a0 67 20 66 69 78 65 73 0a 2d 20 50 72 65 73 73 69 6e 67 20 7e 52 45 54 7e 20 6f 6e 20 69 6e 63 6c g.fixes.-.Pressing.~RET~.on.incl
908c0 75 64 65 64 20 66 69 6c 65 73 20 69 6e 20 74 68 65 20 63 6f 6e 74 65 78 74 20 69 6e 73 70 65 63 uded.files.in.the.context.inspec
908e0 74 6f 72 20 62 75 66 66 65 72 20 6e 6f 77 0a 20 20 70 6f 70 73 20 75 70 20 74 68 65 20 66 69 6c tor.buffer.now...pops.up.the.fil
90900 65 20 63 6f 72 72 65 63 74 6c 79 2e 0a 2d 20 41 50 49 20 6b 65 79 73 20 61 72 65 20 73 74 72 69 e.correctly..-.API.keys.are.stri
90920 70 70 65 64 20 6f 66 20 77 68 69 74 65 73 70 61 63 65 20 62 65 66 6f 72 65 20 73 65 6e 64 69 6e pped.of.whitespace.before.sendin
90940 67 2e 0a 2d 20 4d 75 6c 74 69 70 6c 65 20 55 49 2c 20 62 61 63 6b 65 6e 64 20 61 6e 64 20 70 72 g..-.Multiple.UI,.backend.and.pr
90960 6f 6d 70 74 20 63 6f 6e 73 74 72 75 63 74 69 6f 6e 20 62 75 67 73 20 68 61 76 65 20 62 65 65 6e ompt.construction.bugs.have.been
90980 20 66 69 78 65 64 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 00 .fixed..........................
909a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
909c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
909e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
90a00 67 70 74 65 6c 2d 30 2e 39 2e 38 2e 35 2f 67 70 74 65 6c 2d 72 65 77 72 69 74 65 2e 65 6c 00 00 gptel-0.9.8.5/gptel-rewrite.el..
90a20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
90a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
90a60 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
90a80 30 30 37 32 32 31 32 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 34 35 36 35 00 20 30 00 00 00 0072212.00000000000.014565..0...
90aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
90ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
90ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
90b00 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...................
90b20 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...................
90b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
90b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
90b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
90ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
90bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
90be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
90c00 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
90c20 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
90c40 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
90c60 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
90c80 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
90ca0 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>
90cc0 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
90ce0 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
90d00 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
90d20 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
90d40 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
90d60 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.;;
90d80 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
90da0 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,.
90dc0 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
90de0 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
90e00 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
90e20 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
90e40 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
90e60 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
90e80 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
90ea0 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.
90ec0 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.
90ee0 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.
90f00 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
90f20 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
90f40 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
90f60 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
90f80 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
90fa0 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)..(
90fc0 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
90fe0 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
91000 73 29 0a 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 64 69 66 66 2d 6e 6f 2d 73 65 s)..(declare-function.diff-no-se
91020 6c 65 63 74 20 22 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 72 lect."diff").(declare-function.r
91040 6d 63 2d 2d 61 64 64 2d 6b 65 79 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 22 72 6d 63 22 29 0a 0a mc--add-key-description."rmc")..
91060 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 6d 20 67 70 ;;.*.User.options..(defcustom.gp
91080 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 6e 69 6c 0a tel-rewrite-directives-hook.nil.
910a0 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 6c 27 73 20 .."Hook.run.to.generate.gptel's.
910c0 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 0a 45 61 63 default.rewrite.directives...Eac
910e0 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 61 6c 6c 65 h.function.in.this.hook.is.calle
91100 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 65 0a 72 65 d.with.no.arguments.until.one.re
91120 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 61 73 65 20 turns.a.non-nil.value,.the.base.
91140 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 20 69 6e 73 string.to.use.as.the.rewrite.ins
91160 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 74 61 69 6c truction...Use.this.hook.to.tail
91180 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 64 69 72 65 or.context-specific.rewrite.dire
911a0 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 20 73 70 65 ctives..For.example,.you.can.spe
911c0 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 64 69 72 65 cialize.the.default.rewrite.dire
911e0 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 2d 6d 6f 64 ctive.for.a.particular.major-mod
91200 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 65 6c 0a 20 e.or.project."...:group.'gptel..
91220 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 2d .:type.'hook)..(defcustom.gptel-
91240 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 20 22 41 62 post-rewrite-functions.nil..."Ab
91260 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 65 6c 2d 72 normal.hook.run.after.a.`gptel-r
91280 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 73 20 63 61 ewrite'.action...This.hook.is.ca
912a0 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 66 6f 72 20 lled.after.the.LLM.response.for.
912c0 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 66 75 6c 6c the.rewrite.action.has.been.full
912e0 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 66 66 65 72 y.received.in.a.temporary.buffer
91300 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 69 74 68 20 ...Each.function.is.called.with.
91320 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 62 65 67 69 two.arguments:.the.response.begi
91340 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 74 65 3a 20 nning.and.end.positions...Note:.
91360 74 68 69 73 20 68 6f 6f 6b 20 6f 6e 6c 79 20 72 75 6e 73 20 69 66 20 74 68 65 20 72 65 77 72 69 this.hook.only.runs.if.the.rewri
91380 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 65 20 27 68 te.request.succeeds."...:type.'h
913a0 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 73 74 6f 6d ook...:group.'gptel)..(defcustom
913c0 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 6e 20 6e 69 .gptel-rewrite-default-action.ni
913e0 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 72 69 74 69 l..."Action.to.take.when.rewriti
91400 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 2e 0a 0a 57 ng.a.text.region.using.gptel...W
91420 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 65 20 72 65 hen.the.LLM.response.with.the.re
91440 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 75 20 63 61 written.text.is.received,.you.ca
91460 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 74 20 72 65 n.-.merge.it.with.the.current.re
91480 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 72 67 65 20 gion,.possibly.creating.a.merge.
914a0 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 61 69 6e 73 conflict,.-.diff.or.ediff.agains
914c0 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 61 63 63 65 t.the.original.region,.-.or.acce
914e0 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 65 20 6f 72 pt.it.in.place,.replacing.the.or
91500 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 69 73 70 61 iginal.region..-.display.a.dispa
91520 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 63 65 73 2e tch.menu.with.the.above.choices.
91540 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 20 64 65 66 ..If.this.option.is.nil.(the.def
91560 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 70 6c 69 63 ault),.gptel.waits.for.an.explic
91580 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 79 6d 62 6f it.command...Set.it.to.the.symbo
915a0 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 60 61 63 63 l.`merge',.`diff',.`ediff',.`acc
915c0 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 74 69 63 61 ept'.or.`dispatch'.to.automatica
915e0 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 6e 73 74 65 lly.do.one.of.these.things.inste
91600 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 61 20 66 75 ad...You.can.also.set.it.to.a.fu
91620 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 61 20 63 75 nction.of.your.choosing.for.a.cu
91640 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 72 65 63 65 stom.action...This.function.rece
91660 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 74 65 0a 6f ives.one.argument,.the.rewrite.o
91680 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 74 79 70 65 verlay."...:group.'gptel...:type
916a0 20 27 28 63 68 6f 69 63 65 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 20 .'(choice...........(const.:tag.
916c0 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 20 3a 74 61 "Wait".nil)...........(const.:ta
916e0 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 22 20 6d 65 g."Merge.with.current.region".me
91700 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 22 44 69 66 rge)...........(const.:tag.."Dif
91720 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 66 66 29 0a f.against.current.region".diff).
91740 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 20 61 67 61 ..........(const.:tag."Ediff.aga
91760 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 20 20 20 20 inst.current.region".ediff).....
91780 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 77 72 69 74 ......(const.:tag."Accept.rewrit
917a0 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 3a 74 61 67 e".accept)...........(const.:tag
917c0 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 20 20 20 20 ."Dispatch".dispatch)...........
917e0 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 6e 22 29 29 (function.:tag."Custom.action"))
91800 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 67 68 6c 69 )..(defface.gptel-rewrite-highli
91820 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 20 28 6d 69 ght-face...'((((class.color).(mi
91840 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 6b 29 29 0a n-colors.88).(background.dark)).
91860 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 65 78 74 65 .....:background."#041714".:exte
91880 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 28 28 63 6c nd.t.:inherit.default).....(((cl
918a0 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 62 61 63 6b ass.color).(min-colors.88).(back
918c0 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 75 6e 64 20 ground.light))......:background.
918e0 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 74 65 6e 64 "light.goldenrod.yellow".:extend
91900 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 3a 69 6e 68 .t.:inherit.default).....(t.:inh
91920 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 20 22 46 61 erit.secondary-selection))..."Fa
91940 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 77 69 74 68 ce.for.highlighting.regions.with
91960 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 20 27 67 70 .pending.rewrites."...:group.'gp
91980 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 72 2d 6b 65 tel)..;;.*.Variables..(defvar-ke
919a0 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 70 0a 20 ymap.gptel-rewrite-actions-map..
919c0 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 69 74 65 20 .:doc."Keymap.for.gptel.rewrite.
919e0 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 27 67 70 74 actions.at.point."..."RET".#'gpt
91a00 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 73 65 2d 31 el--rewrite-dispatch..."<mouse-1
91a20 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 0a 20 20 22 >".#'gptel--rewrite-dispatch..."
91a40 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 63 65 70 74 C-c.C-a".#'gptel--rewrite-accept
91a60 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 65 2d 69 74 ..."C-c.C-r".#'gptel--rewrite-it
91a80 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 65 77 72 69 erate..."C-c.C-k".#'gptel--rewri
91aa0 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 6c 2d 2d 72 te-reject..."C-c.C-d".#'gptel--r
91ac0 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 74 65 6c 2d ewrite-diff..."C-c.C-e".#'gptel-
91ae0 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 27 67 70 74 -rewrite-ediff..."C-c.C-n".#'gpt
91b00 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 20 23 27 67 el--rewrite-next..."C-c.C-p".#'g
91b20 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 63 20 43 2d ptel--rewrite-previous..."C-c.C-
91b40 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 28 64 65 66 m".#'gptel--rewrite-merge)..(def
91b60 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 72 6c 61 79 var-local.gptel--rewrite-overlay
91b80 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 69 74 65 20 s.nil..."List.of.active.rewrite.
91ba0 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 64 65 66 76 overlays.in.the.buffer.")..(defv
91bc0 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 61 67 65 20 ar-local.gptel--rewrite-message.
91be0 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 72 75 63 74 nil..."Request-specific.instruct
91c00 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 69 6f 6e 2e ions.for.a.gptel-rewrite.action.
91c20 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 74 69 76 65 ")..;;.Add.the.rewrite.directive
91c40 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 73 73 20 28 .to.`gptel-directives'.(unless.(
91c60 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 65 63 74 69 alist-get.'rewrite.gptel-directi
91c80 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 69 72 65 63 ves)...(add-to-list.'gptel-direc
91ca0 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 72 65 77 72 tives.`(rewrite...,#'gptel--rewr
91cc0 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 65 66 76 61 ite-directive-default)))..(defva
91ce0 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 20 28 6f 72 r.gptel--rewrite-directive...(or
91d00 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 65 63 .(alist-get.'rewrite.gptel-direc
91d20 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 65 2d 64 69 tives).......#'gptel--rewrite-di
91d40 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 79 73 74 65 rective-default)..."Active.syste
91d60 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 73 2e 0a 0a m.message.for.rewrite.actions...
91d80 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 20 75 73 This.variable.is.for.internal.us
91da0 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 77 72 69 74 e.only...To.customize.the.rewrit
91dc0 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 65 6d 20 6d e.system.message,.set.a.system.m
91de0 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 65 72 61 74 essage.(or.function.that.generat
91e00 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 65 20 76 61 es.the.system.message).as.the.va
91e20 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 60 67 70 74 lue.of.the.`rewrite'.key.in.`gpt
91e40 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 73 74 2d 67 el-directives':...(setf.(alist-g
91e60 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 76 65 73 29 et.\\='rewrite.gptel-directives)
91e80 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 61 67 65 2d ........#\\='my-rewrite-message-
91ea0 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 74 6f 6d 69 generator)..You.can.also.customi
91ec0 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 2d 68 6f 6f ze.`gptel-rewrite-directives-hoo
91ee0 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 65 77 72 69 k'.to.dynamically.inject.a.rewri
91f00 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 29 0a 0a 28 te-specific.system.message.")..(
91f20 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 76 65 2d 64 defun.gptel--rewrite-directive-d
91f40 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 76 65 20 66 efault.()..."Generic.directive.f
91f60 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 0a 0a 54 68 or.rewriting.or.refactoring...Th
91f80 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 63 69 66 69 ese.are.instructions.not.specifi
91fa0 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 0a 63 68 61 c.to.any.particular.required.cha
91fc0 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 20 69 6e 74 nge...The.returned.string.is.int
91fe0 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 67 65 20 66 erpreted.as.the.system.message.f
92000 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 75 73 65 20 or.the.rewrite.request...To.use.
92020 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 72 65 63 74 your.own,.add.a.different.direct
92040 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 72 20 61 64 ive.to.`gptel-directives',.or.ad
92060 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 65 73 2d 68 d.to.`gptel-rewrite-directives-h
92080 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 65 2d 6d 61 ook',.which.see."...(or.(save-ma
920a0 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 6e 2d 68 6f rk-and-excursion.........(run-ho
920c0 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 20 20 20 20 ok-with-args-until-success......
920e0 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 73 2d 68 6f ....'gptel-rewrite-directives-ho
92100 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 6e 63 61 73 ok)).......(let*.((lang.(downcas
92120 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 6d 61 6a 6f e.(gptel--strip-mode-suffix.majo
92140 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 63 6c 65 20 r-mode)))..............(article.
92160 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 6d 70 74 79 (if.(and.lang.(not.(string-empty
92180 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 20 20 20 20 -p.lang)).......................
921a0 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 20 27 28 3f .........(memq.(aref.lang.0).'(?
921c0 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 20 20 20 20 a.?e.?i.?o.?u)))................
921e0 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 20 20 20 28 ..........."an"."a"))).........(
92200 69 66 20 28 64 65 72 69 76 65 64 2d 6d 6f 64 65 2d 70 20 27 70 72 6f 67 2d 6d 6f 64 65 29 0a 20 if.(derived-mode-p.'prog-mode)..
92220 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 59 6f 75 20 ...........(format.(concat."You.
92240 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 20 20 20 20 are.%s.%s.programmer..."........
92260 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 20 6d 79 20 ....................."Follow.my.
92280 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 20 63 6f 64 instructions.and.refactor.%s.cod
922a0 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 20 20 20 20 e.I.provide.\n".................
922c0 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 20 25 73 20 ............"-.Generate.ONLY.%s.
922e0 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 20 20 20 20 code.as.output,.without.".......
92300 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 78 70 6c 61 ......................"any.expla
92320 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 65 73 2e 5c nation.or.markdown.code.fences.\
92340 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 20 20 20 22 n"............................."
92360 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 6e 6f 74 20 -.Generate.code.in.full,.do.not.
92380 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 20 20 20 20 abbreviate.or.omit.code.\n".....
923a0 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 6f 20 6e 6f ........................"-.Do.no
923c0 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 69 6f 6e 2c t.ask.for.further.clarification,
923e0 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 20 20 20 20 .and.make.".....................
92400 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 20 6e 65 65 ........"any.assumptions.you.nee
92420 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 20 20 20 20 d.to.follow.instructions.").....
92440 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 20 6c 61 6e ................article.lang.lan
92460 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 20 20 20 20 g.lang)...........(concat.......
92480 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 67 29 0a 20 .....(if.(string-empty-p.lang)..
924a0 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 69 74 6f 72 .............."You.are.an.editor
924c0 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 20 61 72 65 ."..............(format."You.are
924e0 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 29 29 0a 20 .%s.%s.editor.".article.lang))..
92500 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 75 63 74 69 .........."..Follow.my.instructi
92520 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 68 65 20 74 ons.and.improve.or.rewrite.the.t
92540 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 20 20 47 65 ext.I.provide."............"..Ge
92560 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 74 65 78 74 nerate.ONLY.the.replacement.text
92580 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 65 78 70 6c ,"............".without.any.expl
925a0 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 65 73 2e anation.or.markdown.code.fences.
925c0 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 73 0a 0a 28 ")))))..;;.*.Helper.functions..(
925e0 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 70 20 28 63 defun.gptel--rewrite-key-help.(c
92600 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 69 6f 6e 20 allback)..."Eldoc.documentation.
92620 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 63 74 69 6f function.for.gptel.rewrite.actio
92640 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 20 45 6c 64 ns...CALLBACK.is.supplied.by.Eld
92660 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 2d 66 75 6e oc,.see.`eldoc-documentation-fun
92680 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 2d 2d 72 65 ctions'."...(when.(and.gptel--re
926a0 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 28 67 65 74 write-overlays..............(get
926c0 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 2d 72 65 -char-property.(point).'gptel-re
926e0 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 61 63 6b 0a write)).......(funcall.callback.
92700 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 74 69 74 75 ...............(format.(substitu
92720 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 61 76 61 69 te-command-keys."%s.rewrite.avai
92740 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 69 74 65 2d lable:.accept.\\[gptel--rewrite-
92760 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 65 77 72 69 accept],.iterate.\\[gptel--rewri
92780 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 2d 72 65 77 te-iterate],.clear.\\[gptel--rew
927a0 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 2d 2d 72 65 rite-reject],.merge.\\[gptel--re
927c0 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 2d 72 65 77 write-merge],.diff.\\[gptel--rew
927e0 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 2d 2d 72 65 rite-diff].or.ediff.\\[gptel--re
92800 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 20 20 20 20 write-ediff]")..................
92820 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 64 65 6c 2d ......(propertize.(gptel--model-
92840 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 65 2d 6c 69 name.gptel-model).'face.'mode-li
92860 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 65 6c 2d 2d ne-emphasis)))))..(defun.gptel--
92880 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 20 22 4d 6f rewrite-move.(search-func)..."Mo
928a0 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 72 65 77 72 ve.directionally.to.a.gptel.rewr
928c0 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 4e 43 2e 22 ite.location.using.SEARCH-FUNC."
928e0 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 2d 70 72 6f ...(let*.((ov.(cdr.(get-char-pro
92900 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 70 74 65 6c perty-and-overlay.(point).'gptel
92920 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 76 65 2d 65 -rewrite)))..........(pt.(save-e
92940 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 6f 76 0a 20 xcursion................(if.ov..
92960 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 0a 20 20 20 ..................(goto-char....
92980 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 61 72 63 68 .................(funcall.search
929a0 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 74 65 6c 2d -func.(overlay-start.ov).'gptel-
929c0 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 67 6f 74 6f rewrite))..................(goto
929e0 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 20 28 31 2d -char...................(max.(1-
92a00 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 29 20 27 67 .(funcall.search-func.(point).'g
92a20 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 20 20 20 20 ptel-rewrite))..................
92a40 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 20 20 20 20 ......(point-min))))............
92a60 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 69 6e 74 29 ....(funcall.search-func.(point)
92a80 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 28 67 65 74 .'gptel-rewrite)))).....(if.(get
92aa0 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 72 69 74 65 -char-property.pt.'gptel-rewrite
92ac0 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 20 20 20 28 ).........(goto-char.pt).......(
92ae0 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 74 65 20 72 user-error."No.further.rewrite.r
92b00 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 72 65 77 72 egions!"))))..(defun.gptel--rewr
92b20 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 6e 64 69 6e ite-next.()..."Go.to.next.pendin
92b40 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 6f 6e 65 20 g.LLM.rewrite.in.buffer,.if.one.
92b60 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 67 70 74 65 exists."...(interactive)...(gpte
92b80 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 65 2d 63 68 l--rewrite-move.#'next-single-ch
92ba0 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 20 67 70 74 ar-property-change))..(defun.gpt
92bc0 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 6f 20 74 6f el--rewrite-previous.()..."Go.to
92be0 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 65 20 69 6e .previous.pending.LLM.rewrite.in
92c00 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 69 6e 74 65 .buffer,.if.one.exists."...(inte
92c20 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 6f 76 65 20 ractive)...(gptel--rewrite-move.
92c40 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 72 74 79 2d #'previous-single-char-property-
92c60 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 69 74 65 2d change))..(defun.gptel--rewrite-
92c80 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 22 43 68 65 overlay-at.(&optional.pt)..."Che
92ca0 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 61 79 20 61 ck.for.a.gptel.rewrite.overlay.a
92cc0 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 75 69 74 61 t.PT.and.return.it...If.no.suita
92ce0 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 61 6e 20 65 ble.overlay.is.found,.raise.an.e
92d00 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 70 6f 6e 73 rror."...(pcase-let.((`(,respons
92d20 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 2d 63 68 61 e...,ov)................(get-cha
92d40 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 74 20 28 70 r-property-and-overlay.(or.pt.(p
92d60 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 20 20 20 20 oint)).'gptel-rewrite)).........
92d80 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 69 6c 29 29 ......(diff-entire-buffers.nil))
92da0 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 22 43 6f 75 .....(unless.ov.(user-error."Cou
92dc0 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 72 69 74 74 ld.not.find.region.being.rewritt
92de0 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 28 75 73 65 en.")).....(unless.response.(use
92e00 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 61 62 6c 65 r-error."No.LLM.output.available
92e20 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 29 29 0a 0a .for.this.rewrite.")).....ov))..
92e40 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 65 2d 62 75 (defun.gptel--rewrite-prepare-bu
92e60 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 50 72 65 70 ffer.(ovs.&optional.buf)..."Prep
92e80 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 67 65 73 20 are.new.buffer.with.LLM.changes.
92ea0 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 20 69 73 20 applied.and.return.it...This.is.
92ec0 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 52 45 53 50 used.for.(e)diff.purposes...RESP
92ee0 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 56 53 20 61 ONSE.is.the.LLM.response...OVS.a
92f00 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 68 65 20 63 re.the.overlays.specifying.the.c
92f20 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 63 75 72 72 hanged.regions..BUF.is.the.(curr
92f40 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 72 20 62 75 ent).buffer."...(setq.buf.(or.bu
92f60 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 61 66 65 20 f.(overlay-buffer.(or.(car-safe.
92f80 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 2d 62 75 66 ovs).ovs))))...(with-current-buf
92fa0 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 6e 74 2d 6d fer.buf.....(let.((pmin.(point-m
92fc0 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 6d 61 78 29 in))...........(pmax.(point-max)
92fe0 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 20 20 20 20 )...........(pt...(point))......
93000 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 20 20 20 20 .....;;.(mode.major-mode).......
93020 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 74 65 20 22 ....(newbuf.(get-buffer-create."
93040 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 6e 68 69 62 *gptel-diff*"))...........(inhib
93060 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 6e 68 69 62 it-read-only.t)...........(inhib
93080 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 65 73 74 72 it-message.t)).......(save-restr
930a0 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 20 20 20 28 iction.........(widen).........(
930c0 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 20 20 20 20 with-current-buffer.newbuf......
930e0 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 20 20 28 69 .....(erase-buffer)...........(i
93100 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 29 0a 20 20 nsert-buffer-substring.buf)))...
93120 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 62 75 66 0a ....(with-current-buffer.newbuf.
93140 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 69 6e 20 70 ........(narrow-to-region.pmin.p
93160 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 20 20 20 20 max).........(goto-char.pt).....
93180 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 6f 6e 74 2d ....;;.We.mostly.just.want.font-
931a0 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 64 65 2d 68 locking.........;;.(delay-mode-h
931c0 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 20 3b 3b 20 ooks.(funcall.mode)).........;;.
931e0 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 20 62 75 66 Apply.the.changes.to.the.new.buf
93200 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 20 20 20 20 fer.........(save-excursion.....
93220 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 20 6f 76 73 ......(gptel--rewrite-accept.ovs
93240 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 3b 3b 20 2a .newbuf))).......newbuf)))..;;.*
93260 20 52 65 77 72 69 74 65 20 61 63 74 69 6f 6e 20 66 75 6e 63 74 69 6f 6e 73 0a 0a 28 64 65 66 75 .Rewrite.action.functions..(defu
93280 6e 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 72 65 6a 65 63 74 20 28 26 6f 70 74 69 6f 6e n.gptel--rewrite-reject.(&option
932a0 61 6c 20 6f 76 73 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 73 al.ovs)..."Clear.pending.LLM.res
932c0 70 6f 6e 73 65 73 20 69 6e 20 4f 56 53 20 6f 72 20 61 74 20 70 6f 69 6e 74 2e 22 0a 20 20 28 69 ponses.in.OVS.or.at.point."...(i
932e0 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
93300 2d 6f 76 65 72 6c 61 79 2d 61 74 29 29 29 0a 20 20 28 64 6f 6c 69 73 74 20 28 6f 76 20 28 65 6e -overlay-at)))...(dolist.(ov.(en
93320 73 75 72 65 2d 6c 69 73 74 20 6f 76 73 29 29 0a 20 20 20 20 28 73 65 74 71 20 67 70 74 65 6c 2d sure-list.ovs)).....(setq.gptel-
93340 2d 72 65 77 72 69 74 65 2d 6f 76 65 72 6c 61 79 73 20 28 64 65 6c 71 20 6f 76 20 67 70 74 65 6c -rewrite-overlays.(delq.ov.gptel
93360 2d 2d 72 65 77 72 69 74 65 2d 6f 76 65 72 6c 61 79 73 29 29 0a 20 20 20 20 28 64 65 6c 65 74 65 --rewrite-overlays)).....(delete
93380 2d 6f 76 65 72 6c 61 79 20 6f 76 29 29 0a 20 20 28 75 6e 6c 65 73 73 20 67 70 74 65 6c 2d 2d 72 -overlay.ov))...(unless.gptel--r
933a0 65 77 72 69 74 65 2d 6f 76 65 72 6c 61 79 73 0a 20 20 20 20 28 72 65 6d 6f 76 65 2d 68 6f 6f 6b ewrite-overlays.....(remove-hook
933c0 20 27 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 69 6f 6e 73 20 .'eldoc-documentation-functions.
933e0 27 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6b 65 79 2d 68 65 6c 70 20 27 6c 6f 63 61 6c 29 'gptel--rewrite-key-help.'local)
93400 29 0a 20 20 28 6d 65 73 73 61 67 65 20 22 43 6c 65 61 72 65 64 20 70 65 6e 64 69 6e 67 20 4c 4c )...(message."Cleared.pending.LL
93420 4d 20 72 65 73 70 6f 6e 73 65 28 73 29 2e 22 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d M.response(s)."))..(defun.gptel-
93440 2d 72 65 77 72 69 74 65 2d 61 63 63 65 70 74 20 28 26 6f 70 74 69 6f 6e 61 6c 20 6f 76 73 20 62 -rewrite-accept.(&optional.ovs.b
93460 75 66 29 0a 20 20 22 41 70 70 6c 79 20 70 65 6e 64 69 6e 67 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 uf)..."Apply.pending.LLM.respons
93480 65 73 20 69 6e 20 4f 56 53 20 6f 72 20 61 74 20 70 6f 69 6e 74 2e 0a 0a 42 55 46 20 69 73 20 74 es.in.OVS.or.at.point...BUF.is.t
934a0 68 65 20 62 75 66 66 65 72 20 74 6f 20 6d 6f 64 69 66 79 2c 20 64 65 66 61 75 6c 74 73 20 74 6f he.buffer.to.modify,.defaults.to
934c0 20 74 68 65 20 6f 76 65 72 6c 61 79 20 62 75 66 66 65 72 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 .the.overlay.buffer."...(interac
934e0 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 2d 6f 76 65 72 6c tive.(list.(gptel--rewrite-overl
93500 61 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 ay-at)))...(when-let*.((ov-buf.(
93520 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 61 66 65 20 6f 76 73 overlay-buffer.(or.(car-safe.ovs
93540 29 20 6f 76 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 20 28 6f 72 20 ).ovs)))...............(buf.(or.
93560 62 75 66 20 6f 76 2d 62 75 66 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 62 75 66 buf.ov-buf))...............((buf
93580 66 65 72 2d 6c 69 76 65 2d 70 20 62 75 66 29 29 29 0a 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 fer-live-p.buf))).....(with-curr
935a0 65 6e 74 2d 62 75 66 66 65 72 20 6f 76 2d 62 75 66 0a 20 20 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 ent-buffer.ov-buf.......(cl-loop
935c0 20 66 6f 72 20 6f 76 20 69 6e 20 28 65 6e 73 75 72 65 2d 6c 69 73 74 20 6f 76 73 29 0a 20 20 20 .for.ov.in.(ensure-list.ovs)....
935e0 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 6f 76 2d 62 65 67 20 3d 20 28 6f 76 65 72 6c 61 ............for.ov-beg.=.(overla
93600 79 2d 73 74 61 72 74 20 6f 76 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 6f y-start.ov)................for.o
93620 76 2d 65 6e 64 20 3d 20 28 6f 76 65 72 6c 61 79 2d 65 6e 64 20 6f 76 29 0a 20 20 20 20 20 20 20 v-end.=.(overlay-end.ov)........
93640 20 20 20 20 20 20 20 20 66 6f 72 20 72 65 73 70 6f 6e 73 65 20 3d 20 28 6f 76 65 72 6c 61 79 2d ........for.response.=.(overlay-
93660 67 65 74 20 6f 76 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 get.ov.'gptel-rewrite)..........
93680 20 20 20 20 20 20 64 6f 20 28 6f 76 65 72 6c 61 79 2d 70 75 74 20 6f 76 20 27 62 65 66 6f 72 65 ......do.(overlay-put.ov.'before
936a0 2d 73 74 72 69 6e 67 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 69 74 -string.nil)................(wit
936c0 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 62 75 66 0a 20 20 20 20 20 20 20 20 20 20 20 h-current-buffer.buf............
936e0 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 6f 76 2d 62 65 67 29 0a 20 20 20 20 20 20 20 ......(goto-char.ov-beg)........
93700 20 20 20 20 20 20 20 20 20 20 28 64 65 6c 65 74 65 2d 72 65 67 69 6f 6e 20 6f 76 2d 62 65 67 20 ..........(delete-region.ov-beg.
93720 6f 76 2d 65 6e 64 29 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 ov-end)..................(insert
93740 20 72 65 73 70 6f 6e 73 65 29 29 29 29 0a 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 52 65 70 6c .response)))).....(message."Repl
93760 61 63 65 64 20 72 65 67 69 6f 6e 28 73 29 20 77 69 74 68 20 4c 4c 4d 20 6f 75 74 70 75 74 20 69 aced.region(s).with.LLM.output.i
93780 6e 20 62 75 66 66 65 72 3a 20 25 73 2e 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 n.buffer:.%s."..............(buf
937a0 66 65 72 2d 6e 61 6d 65 20 6f 76 2d 62 75 66 29 29 29 29 0a 0a 28 64 65 66 61 6c 69 61 73 20 27 fer-name.ov-buf))))..(defalias.'
937c0 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 69 74 65 72 61 74 65 20 27 67 70 74 65 6c 2d 72 65 gptel--rewrite-iterate.'gptel-re
937e0 77 72 69 74 65 0a 20 20 22 49 74 65 72 61 74 65 20 6f 6e 20 70 65 6e 64 69 6e 67 20 4c 4c 4d 20 write..."Iterate.on.pending.LLM.
93800 72 65 73 70 6f 6e 73 65 20 61 74 20 70 6f 69 6e 74 2e 22 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 response.at.point.")..(defun.gpt
93820 65 6c 2d 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 6f 76 73 20 el--rewrite-diff.(&optional.ovs.
93840 73 77 69 74 63 68 65 73 29 0a 20 20 22 44 69 66 66 20 70 65 6e 64 69 6e 67 20 4c 4c 4d 20 72 65 switches)..."Diff.pending.LLM.re
93860 73 70 6f 6e 73 65 73 20 69 6e 20 4f 56 53 20 6f 72 20 61 74 20 70 6f 69 6e 74 2e 22 0a 20 20 28 sponses.in.OVS.or.at.point."...(
93880 69 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 interactive.(list.(gptel--rewrit
938a0 65 2d 6f 76 65 72 6c 61 79 2d 61 74 29 29 29 0a 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 6f e-overlay-at)))...(when-let*.((o
938c0 76 2d 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 v-buf.(overlay-buffer.(or.(car-s
938e0 61 66 65 20 6f 76 73 29 20 6f 76 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 afe.ovs).ovs)))...............((
93900 62 75 66 66 65 72 2d 6c 69 76 65 2d 70 20 6f 76 2d 62 75 66 29 29 29 0a 20 20 20 20 28 72 65 71 buffer-live-p.ov-buf))).....(req
93920 75 69 72 65 20 27 64 69 66 66 29 0a 20 20 20 20 28 6c 65 74 2a 20 28 28 6e 65 77 62 75 66 20 28 uire.'diff).....(let*.((newbuf.(
93940 67 70 74 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 gptel--rewrite-prepare-buffer.ov
93960 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 64 69 66 66 2d 62 75 66 20 28 64 69 66 66 2d 6e s))............(diff-buf.(diff-n
93980 6f 2d 73 65 6c 65 63 74 20 6f 76 2d 62 75 66 20 6e 65 77 62 75 66 20 73 77 69 74 63 68 65 73 29 o-select.ov-buf.newbuf.switches)
939a0 29 29 0a 20 20 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 64 69 )).......(with-current-buffer.di
939c0 66 66 2d 62 75 66 0a 20 20 20 20 20 20 20 20 28 73 65 74 71 2d 6c 6f 63 61 6c 20 64 69 66 66 2d ff-buf.........(setq-local.diff-
939e0 6a 75 6d 70 2d 74 6f 2d 6f 6c 64 2d 66 69 6c 65 20 74 29 29 0a 20 20 20 20 20 20 28 64 69 73 70 jump-to-old-file.t)).......(disp
93a00 6c 61 79 2d 62 75 66 66 65 72 20 64 69 66 66 2d 62 75 66 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 lay-buffer.diff-buf))))..(defun.
93a20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 65 64 69 66 66 20 28 26 6f 70 74 69 6f 6e 61 6c 20 gptel--rewrite-ediff.(&optional.
93a40 6f 76 73 29 0a 20 20 22 45 64 69 66 66 20 70 65 6e 64 69 6e 67 20 4c 4c 4d 20 72 65 73 70 6f 6e ovs)..."Ediff.pending.LLM.respon
93a60 73 65 73 20 69 6e 20 4f 56 53 20 6f 72 20 61 74 20 70 6f 69 6e 74 2e 22 0a 20 20 28 69 6e 74 65 ses.in.OVS.or.at.point."...(inte
93a80 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 2d 6f 76 ractive.(list.(gptel--rewrite-ov
93aa0 65 72 6c 61 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 erlay-at)))...(when-let*.((ov-bu
93ac0 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 61 66 65 20 f.(overlay-buffer.(or.(car-safe.
93ae0 6f 76 73 29 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 ovs).ovs)))...............((buff
93b00 65 72 2d 6c 69 76 65 2d 70 20 6f 76 2d 62 75 66 29 29 29 0a 20 20 20 20 28 6c 65 74 72 65 63 20 er-live-p.ov-buf))).....(letrec.
93b20 28 28 6e 65 77 62 75 66 20 28 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 70 72 65 70 61 72 65 ((newbuf.(gptel--rewrite-prepare
93b40 2d 62 75 66 66 65 72 20 6f 76 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 77 63 20 -buffer.ovs))..............(cwc.
93b60 28 63 75 72 72 65 6e 74 2d 77 69 6e 64 6f 77 2d 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 29 29 0a (current-window-configuration)).
93b80 20 20 20 20 20 20 20 20 20 20 20 20 20 28 68 69 64 65 73 68 6f 77 0a 20 20 20 20 20 20 20 20 20 .............(hideshow..........
93ba0 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 26 6f 70 74 69 6f 6e 61 6c 20 72 65 73 74 6f 72 65 29 .....(lambda.(&optional.restore)
93bc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 6f 6c 69 73 74 20 28 6f 76 20 28 65 6e .................(dolist.(ov.(en
93be0 73 75 72 65 2d 6c 69 73 74 20 6f 76 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 sure-list.ovs)).................
93c00 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 6f 76 65 72 6c 61 79 2d 62 75 66 66 65 72 20 6f 76 ..(when-let*.((overlay-buffer.ov
93c20 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 64 69 )).....................(let.((di
93c40 73 70 20 28 6f 76 65 72 6c 61 79 2d 67 65 74 20 6f 76 20 27 64 69 73 70 6c 61 79 29 29 0a 20 20 sp.(overlay-get.ov.'display))...
93c60 20 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 6f 72 65 64 20 ........................(stored.
93c80 28 6f 76 65 72 6c 61 79 2d 67 65 74 20 6f 76 20 27 67 70 74 65 6c 2d 2d 65 64 69 66 66 29 29 29 (overlay-get.ov.'gptel--ediff)))
93ca0 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 76 65 72 6c 61 79 2d .......................(overlay-
93cc0 70 75 74 20 6f 76 20 27 64 69 73 70 6c 61 79 20 28 61 6e 64 20 72 65 73 74 6f 72 65 20 73 74 6f put.ov.'display.(and.restore.sto
93ce0 72 65 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 28 6f 76 65 red)).......................(ove
93d00 72 6c 61 79 2d 70 75 74 20 6f 76 20 27 67 70 74 65 6c 2d 2d 65 64 69 66 66 20 28 75 6e 6c 65 73 rlay-put.ov.'gptel--ediff.(unles
93d20 73 20 72 65 73 74 6f 72 65 20 64 69 73 70 29 29 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 s.restore.disp)))))))...........
93d40 20 20 20 28 67 70 74 65 6c 2d 2d 65 64 69 66 66 2d 72 65 73 74 6f 72 65 0a 20 20 20 20 20 20 20 ...(gptel--ediff-restore........
93d60 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.()...............
93d80 20 20 28 77 68 65 6e 20 28 77 69 6e 64 6f 77 2d 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2d 70 20 ..(when.(window-configuration-p.
93da0 63 77 63 29 0a 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 64 cwc)...................(set-wind
93dc0 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 20 ow-configuration.cwc))..........
93de0 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 68 69 64 65 73 68 6f 77 20 27 72 65 73 74 6f 72 .......(funcall.hideshow.'restor
93e00 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 6d 6f 76 65 2d 68 6f 6f 6b 20 e).................(remove-hook.
93e20 27 65 64 69 66 66 2d 71 75 69 74 2d 68 6f 6f 6b 20 67 70 74 65 6c 2d 2d 65 64 69 66 66 2d 72 65 'ediff-quit-hook.gptel--ediff-re
93e40 73 74 6f 72 65 29 29 29 29 0a 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 68 69 64 65 73 68 6f store)))).......(funcall.hidesho
93e60 77 29 0a 20 20 20 20 20 20 28 61 64 64 2d 68 6f 6f 6b 20 27 65 64 69 66 66 2d 71 75 69 74 2d 68 w).......(add-hook.'ediff-quit-h
93e80 6f 6f 6b 20 67 70 74 65 6c 2d 2d 65 64 69 66 66 2d 72 65 73 74 6f 72 65 29 0a 20 20 20 20 20 20 ook.gptel--ediff-restore).......
93ea0 28 65 64 69 66 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 (ediff-buffers.ov-buf.newbuf))))
93ec0 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6d 65 72 67 65 20 28 26 ..(defun.gptel--rewrite-merge.(&
93ee0 6f 70 74 69 6f 6e 61 6c 20 6f 76 73 29 0a 20 20 22 49 6e 73 65 72 74 20 70 65 6e 64 69 6e 67 20 optional.ovs)..."Insert.pending.
93f00 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 73 20 69 6e 20 4f 56 53 20 61 73 20 6d 65 72 67 65 20 63 6f LLM.responses.in.OVS.as.merge.co
93f20 6e 66 6c 69 63 74 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 nflicts."...(interactive.(list.(
93f40 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 20 28 gptel--rewrite-overlay-at)))...(
93f60 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 66 66 when-let*.((ov-buf.(overlay-buff
93f80 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 20 20 er.(or.(car-safe.ovs).ovs)))....
93fa0 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 62 75 ...........((buffer-live-p.ov-bu
93fc0 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
93fe0 2d 62 75 66 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 63 68 61 6e 67 65 64 29 29 0a 20 20 20 20 -buf.......(let.((changed)).....
94000 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
94020 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 ))...........(save-excursion....
94040 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 6e 65 77 2d 73 74 72 20 28 6f .........(when-let*.((new-str.(o
94060 76 65 72 6c 61 79 2d 67 65 74 20 6f 76 20 27 67 70 74 65 6c 2d 72 65 77 72 69 74 65 29 29 29 0a verlay-get.ov.'gptel-rewrite))).
94080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 49 6e 73 65 72 74 20 6d 65 72 67 65 0a 20 20 ..............;;.Insert.merge...
940a0 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 76 65 72 6c 61 79 2d ............(goto-char.(overlay-
940c0 73 74 61 72 74 20 6f 76 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 start.ov))...............(unless
940e0 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 20 20 20 20 20 20 20 .(bolp).(insert."\n"))..........
94100 20 20 20 20 20 28 69 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 .....(insert-before-markers."<<<
94120 3c 3c 3c 3c 20 6f 72 69 67 69 6e 61 6c 5c 6e 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 <<<<.original\n")...............
94140 28 67 6f 74 6f 2d 63 68 61 72 20 28 6f 76 65 72 6c 61 79 2d 65 6e 64 20 6f 76 29 29 0a 20 20 20 (goto-char.(overlay-end.ov))....
94160 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 62 6f 6c 70 29 20 28 69 6e 73 65 72 ...........(unless.(bolp).(inser
94180 74 20 22 5c 6e 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 0a 20 t."\n"))...............(insert..
941a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 3d 3d 3d 3d 3d 3d 3d 5c 6e 22 20 6e 65 77 2d 73 74 .............."=======\n".new-st
941c0 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 5c 6e 3e 3e 3e 3e 3e 3e 3e 20 22 20 28 67 r................"\n>>>>>>>.".(g
941e0 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)
94200 20 22 5c 6e 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 63 68 61 6e 67 ."\n")...............(setq.chang
94220 65 64 20 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 63 68 61 6e 67 65 64 20 28 ed.t)))).........(when.changed.(
94240 73 6d 65 72 67 65 2d 6d 6f 64 65 20 31 29 29 29 0a 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 72 smerge-mode.1))).......(gptel--r
94260 65 77 72 69 74 65 2d 72 65 6a 65 63 74 20 6f 76 73 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 ewrite-reject.ovs))))..(defun.gp
94280 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 64 69 73 70 61 74 63 68 20 28 26 6f 70 74 69 6f 6e 61 6c tel--rewrite-dispatch.(&optional
942a0 20 6f 76 20 63 69 29 0a 20 20 22 44 69 73 70 61 74 63 68 20 61 63 74 69 6f 6e 73 20 66 6f 72 20 .ov.ci)..."Dispatch.actions.for.
942c0 67 70 74 65 6c 20 72 65 77 72 69 74 65 73 2e 0a 0a 4f 56 20 69 73 20 74 68 65 20 72 65 77 72 69 gptel.rewrites...OV.is.the.rewri
942e0 74 65 20 6f 76 65 72 6c 61 79 2c 20 43 49 20 69 73 20 74 72 75 65 20 66 6f 72 20 69 6e 74 65 72 te.overlay,.CI.is.true.for.inter
94300 61 63 74 69 76 65 20 63 61 6c 6c 73 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 20 28 6c active.calls."...(interactive.(l
94320 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 20 ist.(gptel--rewrite-overlay-at).
94340 74 29 29 0a 20 20 28 6c 65 74 20 28 28 63 68 6f 69 63 65 29 29 0a 20 20 20 20 28 75 6e 77 69 6e t))...(let.((choice)).....(unwin
94360 64 2d 70 72 6f 74 65 63 74 0a 20 20 20 20 20 20 20 20 28 70 63 61 73 65 2d 6c 65 74 20 28 28 63 d-protect.........(pcase-let.((c
94380 68 6f 69 63 65 73 20 27 28 28 3f 61 20 22 61 63 63 65 70 74 22 29 20 28 3f 6b 20 22 72 65 6a 65 hoices.'((?a."accept").(?k."reje
943a0 63 74 22 29 20 28 3f 72 20 22 69 74 65 72 61 74 65 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 ct").(?r."iterate").............
943c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 3f 6d 20 22 6d 65 72 67 65 22 29 20 ...................(?m."merge").
943e0 28 3f 64 20 22 64 69 66 66 22 29 20 28 3f 65 20 22 65 64 69 66 66 22 29 29 29 0a 20 20 20 20 20 (?d."diff").(?e."ediff")))......
94400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 68 69 6e 74 2d 73 74 72 20 28 63 6f 6e 63 61 74 ...............(hint-str.(concat
94420 20 22 5b 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 2d 6d 6f ."[".(gptel--model-name.gptel-mo
94440 64 65 6c 29 20 22 5d 5c 6e 22 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 6f 76 65 72 6c 61 79 del)."]\n")))...........(overlay
94460 2d 70 75 74 0a 20 20 20 20 20 20 20 20 20 20 20 6f 76 20 27 62 65 66 6f 72 65 2d 73 74 72 69 6e -put............ov.'before-strin
94480 67 0a 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 g............(concat............
944a0 20 28 75 6e 6c 65 73 73 20 28 65 71 20 28 63 68 61 72 2d 62 65 66 6f 72 65 20 28 6f 76 65 72 6c .(unless.(eq.(char-before.(overl
944c0 61 79 2d 73 74 61 72 74 20 6f 76 29 29 20 3f 5c 6e 29 20 22 5c 6e 22 29 0a 20 20 20 20 20 20 20 ay-start.ov)).?\n)."\n")........
944e0 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 52 45 57 52 49 54 45 20 52 45 41 44 59 3a .....(propertize."REWRITE.READY:
94500 20 22 20 27 66 61 63 65 20 27 73 75 63 63 65 73 73 29 0a 09 20 20 20 20 28 77 68 65 6e 20 28 66 .".'face.'success)......(when.(f
94520 62 6f 75 6e 64 70 20 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 boundp.#'rmc--add-key-descriptio
94540 6e 29 20 20 3b 20 69 6e 74 72 6f 64 75 63 65 64 20 69 6e 20 45 6d 61 63 73 20 32 39 0a 20 20 20 n)..;.introduced.in.Emacs.29....
94560 20 20 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 65 ...........(mapconcat.(lambda.(e
94580 29 20 28 63 64 72 20 65 29 29 20 28 6d 61 70 63 61 72 20 23 27 72 6d 63 2d 2d 61 64 64 2d 6b 65 ).(cdr.e)).(mapcar.#'rmc--add-ke
945a0 79 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 63 68 6f 69 63 65 73 29 20 22 2c 20 22 29 29 0a 20 20 y-description.choices).",."))...
945c0 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 0a 20 20 20 20 20 20 20 20 20 20 ..........(propertize...........
945e0 20 20 20 22 20 22 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 ...".".'display.`(space.:align-t
94600 6f 20 28 2d 20 72 69 67 68 74 20 2c 28 31 2b 20 28 6c 65 6e 67 74 68 20 68 69 6e 74 2d 73 74 72 o.(-.right.,(1+.(length.hint-str
94620 29 29 29 29 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 68 69 ))))).............(propertize.hi
94640 6e 74 2d 73 74 72 20 27 66 61 63 65 20 27 73 75 63 63 65 73 73 29 29 29 0a 20 20 20 20 20 20 20 nt-str.'face.'success)))........
94660 20 20 20 28 73 65 74 71 20 63 68 6f 69 63 65 20 28 72 65 61 64 2d 6d 75 6c 74 69 70 6c 65 2d 63 ...(setq.choice.(read-multiple-c
94680 68 6f 69 63 65 20 22 41 63 74 69 6f 6e 3a 20 22 20 63 68 6f 69 63 65 73 29 29 29 0a 20 20 20 20 hoice."Action:.".choices))).....
946a0 20 20 28 6f 76 65 72 6c 61 79 2d 70 75 74 20 6f 76 20 27 62 65 66 6f 72 65 2d 73 74 72 69 6e 67 ..(overlay-put.ov.'before-string
946c0 20 6e 69 6c 29 29 0a 20 20 20 20 28 69 66 20 63 69 0a 20 20 20 20 20 20 20 20 28 63 61 6c 6c 2d .nil)).....(if.ci.........(call-
946e0 69 6e 74 65 72 61 63 74 69 76 65 6c 79 20 28 69 6e 74 65 72 6e 20 28 63 6f 6e 63 61 74 20 22 67 interactively.(intern.(concat."g
94700 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 22 20 28 63 61 64 72 20 63 68 6f 69 63 65 29 29 29 29 ptel--rewrite-".(cadr.choice))))
94720 0a 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 28 69 6e 74 65 72 6e 20 28 63 6f 6e 63 61 74 20 .......(funcall.(intern.(concat.
94740 22 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 22 20 28 63 61 64 72 20 63 68 6f 69 63 65 29 29 "gptel--rewrite-".(cadr.choice))
94760 29 20 6f 76 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 65 2d ).ov))))..(defun.gptel--rewrite-
94780 63 61 6c 6c 62 61 63 6b 20 28 72 65 73 70 6f 6e 73 65 20 69 6e 66 6f 29 0a 20 20 22 43 61 6c 6c callback.(response.info)..."Call
947a0 62 61 63 6b 20 66 6f 72 20 67 70 74 65 6c 20 72 65 77 72 69 74 65 20 61 63 74 69 6f 6e 73 2e 0a back.for.gptel.rewrite.actions..
947c0 0a 53 68 6f 77 20 74 68 65 20 72 65 77 72 69 74 65 20 72 65 73 75 6c 74 20 69 6e 20 61 6e 20 6f .Show.the.rewrite.result.in.an.o
947e0 76 65 72 6c 61 79 20 6f 76 65 72 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 74 65 78 74 2c 20 61 verlay.over.the.original.text,.a
94800 6e 64 0a 73 65 74 20 75 70 20 64 69 73 70 61 74 63 68 20 61 63 74 69 6f 6e 73 2e 0a 0a 52 45 53 nd.set.up.dispatch.actions...RES
94820 50 4f 4e 53 45 20 69 73 20 74 68 65 20 72 65 73 70 6f 6e 73 65 20 72 65 63 65 69 76 65 64 2e 20 PONSE.is.the.response.received..
94840 20 49 74 20 6d 61 79 20 61 6c 73 6f 20 62 65 20 74 20 28 74 6f 20 69 6e 64 69 63 61 74 65 0a 73 .It.may.also.be.t.(to.indicate.s
94860 75 63 63 65 73 73 29 20 6e 69 6c 20 28 74 6f 20 69 6e 64 69 63 61 74 65 20 66 61 69 6c 75 72 65 uccess).nil.(to.indicate.failure
94880 29 2c 20 6f 72 20 74 68 65 20 73 79 6d 62 6f 6c 20 60 61 62 6f 72 74 27 2e 0a 0a 49 4e 46 4f 20 ),.or.the.symbol.`abort'...INFO.
948a0 69 73 20 74 68 65 20 61 73 79 6e 63 20 63 6f 6d 6d 75 6e 69 63 61 74 69 6f 6e 20 63 68 61 6e 6e is.the.async.communication.chann
948c0 65 6c 20 66 6f 72 20 74 68 65 20 72 65 77 72 69 74 65 20 72 65 71 75 65 73 74 2e 22 0a 20 20 28 el.for.the.rewrite.request."...(
948e0 77 68 65 6e 2d 6c 65 74 2a 20 28 28 6f 76 2d 61 6e 64 2d 62 75 66 20 28 70 6c 69 73 74 2d 67 65 when-let*.((ov-and-buf.(plist-ge
94900 74 20 69 6e 66 6f 20 3a 63 6f 6e 74 65 78 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 t.info.:context))...............
94920 28 6f 76 20 28 63 61 72 20 6f 76 2d 61 6e 64 2d 62 75 66 29 29 0a 20 20 20 20 20 20 20 20 20 20 (ov.(car.ov-and-buf))...........
94940 20 20 20 20 28 70 72 6f 63 2d 62 75 66 20 28 63 64 72 20 6f 76 2d 61 6e 64 2d 62 75 66 29 29 0a ....(proc-buf.(cdr.ov-and-buf)).
94960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 20 28 6f 76 65 72 6c 61 79 2d 62 75 66 66 ..............(buf.(overlay-buff
94980 65 72 20 6f 76 29 29 29 0a 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 28 28 73 74 72 69 6e 67 er.ov))).....(cond......((string
949a0 70 20 72 65 73 70 6f 6e 73 65 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 70 61 72 74 p.response)................;part
949c0 69 61 6c 20 6f 72 20 66 75 6c 6c 79 20 73 75 63 63 65 73 73 66 75 6c 20 72 65 73 75 6c 74 0a 20 ial.or.fully.successful.result..
949e0 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 70 72 6f 63 2d 62 .....(with-current-buffer.proc-b
94a00 75 66 20 20 20 20 20 3b 61 75 78 69 6c 69 61 72 79 20 62 75 66 66 65 72 2c 20 69 6e 73 65 72 74 uf.....;auxiliary.buffer,.insert
94a20 20 74 65 78 74 20 68 65 72 65 20 61 6e 64 20 63 6f 70 79 20 74 6f 20 6f 76 65 72 6c 61 79 0a 20 .text.here.and.copy.to.overlay..
94a40 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 69 6e 68 69 62 69 74 2d 6d 6f 64 69 66 69 63 61 74 69 .......(let.((inhibit-modificati
94a60 6f 6e 2d 68 6f 6f 6b 73 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 68 on-hooks.nil)...............(inh
94a80 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 28 77 68 ibit-read-only.t))...........(wh
94aa0 65 6e 20 28 3d 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 20 en.(=.(buffer-size).0)..........
94ac0 20 20 20 28 62 75 66 66 65 72 2d 64 69 73 61 62 6c 65 2d 75 6e 64 6f 29 0a 20 20 20 20 20 20 20 ...(buffer-disable-undo)........
94ae0 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 72 65 77 72 .....(overlay-put.ov.'gptel-rewr
94b00 69 74 65 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 2d 62 75 66 ite.nil).............(insert-buf
94b20 66 65 72 2d 73 75 62 73 74 72 69 6e 67 20 62 75 66 20 28 6f 76 65 72 6c 61 79 2d 73 74 61 72 74 fer-substring.buf.(overlay-start
94b40 20 6f 76 29 20 28 6f 76 65 72 6c 61 79 2d 65 6e 64 20 6f 76 29 29 0a 20 20 20 20 20 20 20 20 20 .ov).(overlay-end.ov))..........
94b60 20 20 20 28 77 68 65 6e 20 28 65 71 20 28 63 68 61 72 2d 62 65 66 6f 72 65 20 28 70 6f 69 6e 74 ...(when.(eq.(char-before.(point
94b80 2d 6d 61 78 29 29 20 3f 5c 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 -max)).?\n)...............(plist
94ba0 2d 70 75 74 20 69 6e 66 6f 20 3a 6e 65 77 6c 69 6e 65 20 74 29 29 0a 20 20 20 20 20 20 20 20 20 -put.info.:newline.t))..........
94bc0 20 20 20 28 73 65 74 71 20 6d 61 6a 6f 72 2d 6d 6f 64 65 20 28 62 75 66 66 65 72 2d 6c 6f 63 61 ...(setq.major-mode.(buffer-loca
94be0 6c 2d 76 61 6c 75 65 20 27 6d 61 6a 6f 72 2d 6d 6f 64 65 20 62 75 66 29 29 20 3b 44 6f 6e 27 74 l-value.'major-mode.buf)).;Don't
94c00 20 74 75 72 6e 20 6f 6e 20 6d 61 6a 6f 72 2d 6d 6f 64 65 20 28 23 37 33 30 2c 20 23 37 32 32 29 .turn.on.major-mode.(#730,.#722)
94c20 0a 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 .............(add-text-propertie
94c40 73 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28 70 6f 69 6e 74 2d 6d 61 78 29 20 27 28 66 61 63 65 s.(point-min).(point-max).'(face
94c60 20 73 68 61 64 6f 77 20 66 6f 6e 74 2d 6c 6f 63 6b 2d 66 61 63 65 20 73 68 61 64 6f 77 29 29 0a .shadow.font-lock-face.shadow)).
94c80 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 69 ............(goto-char.(point-mi
94ca0 6e 29 29 29 0a 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 n)))...........(insert.response)
94cc0 0a 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 65 6f 62 70 29 20 28 69 67 6e 6f 72 ...........(unless.(eobp).(ignor
94ce0 65 2d 65 72 72 6f 72 73 20 28 64 65 6c 65 74 65 2d 63 68 61 72 20 28 6c 65 6e 67 74 68 20 72 65 e-errors.(delete-char.(length.re
94d00 73 70 6f 6e 73 65 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 66 6f 6e 74 2d 6c 6f 63 6b 2d sponse))))...........(font-lock-
94d20 65 6e 73 75 72 65 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 ensure)...........(overlay-put.o
94d40 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 29 29 29 29 0a 20 20 v.'display.(buffer-string))))...
94d60 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 3a 73 74 72 ....(unless.(plist-get.info.:str
94d80 65 61 6d 29 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 74 20 eam).(gptel--rewrite-callback.t.
94da0 69 6e 66 6f 29 29 29 0a 20 20 20 20 20 28 28 65 71 20 72 65 73 70 6f 6e 73 65 20 27 61 62 6f 72 info)))......((eq.response.'abor
94dc0 74 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 72 65 71 75 65 73 74 20 61 62 6f 72 74 65 64 t)..............;request.aborted
94de0 0a 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 70 72 6f 63 2d 62 75 66 20 28 63 64 .......(when-let*.((proc-buf.(cd
94e00 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 74 65 78 74 29 r-safe.(plist-get.info.:context)
94e20 29 29 29 0a 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 ))).........(kill-buffer.proc-bu
94e40 66 29 29 0a 20 20 20 20 20 20 28 64 65 6c 65 74 65 2d 6f 76 65 72 6c 61 79 20 6f 76 29 29 0a 20 f)).......(delete-overlay.ov))..
94e60 20 20 20 20 28 28 6e 75 6c 6c 20 72 65 73 70 6f 6e 73 65 29 20 20 20 20 20 20 20 20 20 20 20 20 ....((null.response)............
94e80 20 20 20 20 20 20 20 3b 66 69 6e 69 73 68 65 64 20 77 69 74 68 20 65 72 72 6f 72 0a 20 20 20 20 .......;finished.with.error.....
94ea0 20 20 28 6d 65 73 73 61 67 65 20 28 63 6f 6e 63 61 74 20 22 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 ..(message.(concat."LLM.response
94ec0 20 65 72 72 6f 72 3a 20 25 73 2e 20 52 65 77 72 69 74 65 20 69 6e 20 62 75 66 66 65 72 20 25 73 .error:.%s..Rewrite.in.buffer.%s
94ee0 20 63 61 6e 63 65 6c 65 64 2e 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 .canceled.")................(pli
94f00 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 73 74 61 74 75 73 29 20 28 70 6c 69 73 74 2d 67 65 74 20 st-get.info.:status).(plist-get.
94f20 69 6e 66 6f 20 3a 62 75 66 66 65 72 29 29 0a 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 72 65 77 info.:buffer)).......(gptel--rew
94f40 72 69 74 65 2d 63 61 6c 6c 62 61 63 6b 20 27 61 62 6f 72 74 20 69 6e 66 6f 29 29 0a 20 20 20 20 rite-callback.'abort.info)).....
94f60 20 28 28 63 6f 6e 73 70 20 72 65 73 70 6f 6e 73 65 29 29 20 3b 72 65 61 73 6f 6e 69 6e 67 20 6f .((consp.response)).;reasoning.o
94f80 72 20 74 6f 6f 6c 20 63 61 6c 6c 73 20 2d 2d 20 64 6f 6e 27 74 20 63 61 72 65 20 61 6e 64 20 6e r.tool.calls.--.don't.care.and.n
94fa0 6f 74 20 69 6d 70 6c 65 6d 65 6e 74 65 64 2c 20 72 65 73 70 65 63 74 69 76 65 6c 79 0a 20 20 20 ot.implemented,.respectively....
94fc0 20 20 28 74 20 28 6c 65 74 20 28 28 70 72 6f 63 2d 62 75 66 20 28 63 64 72 2d 73 61 66 65 20 28 ..(t.(let.((proc-buf.(cdr-safe.(
94fe0 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 29 20 3b 66 69 6e 69 plist-get.info.:context))).;fini
95000 73 68 65 64 20 73 75 63 63 65 73 73 66 75 6c 6c 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 shed.successfully...............
95020 28 6d 6b 62 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 3c 6d 6f 75 73 65 2d 31 3e 22 20 27 66 61 (mkb.(propertize."<mouse-1>".'fa
95040 63 65 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 ce.'help-key-binding))).........
95060 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 0a ..(with-current-buffer.proc-buf.
95080 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 69 6e 68 69 62 69 74 2d 72 65 61 64 2d ............(let.((inhibit-read-
950a0 6f 6e 6c 79 20 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 65 6c 65 74 65 2d 72 only.t))...............(delete-r
950c0 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 29 0a 20 20 20 20 20 egion.(point).(point-max))......
950e0 20 20 20 20 20 20 20 20 20 3b 3b 20 52 75 6e 20 70 6f 73 74 2d 72 65 77 72 69 74 65 2d 66 75 6e .........;;.Run.post-rewrite-fun
95100 63 74 69 6f 6e 73 20 6f 6e 20 72 65 77 72 69 74 74 65 6e 20 74 65 78 74 20 69 6e 20 69 74 73 20 ctions.on.rewritten.text.in.its.
95120 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 2d 64 65 6d 6f 74 buffer...............(with-demot
95140 65 64 2d 65 72 72 6f 72 73 20 22 67 70 74 65 6c 2d 70 6f 73 74 2d 72 65 77 72 69 74 65 2d 66 75 ed-errors."gptel-post-rewrite-fu
95160 6e 63 74 69 6f 6e 73 3a 20 25 53 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 75 nctions:.%S".................(ru
95180 6e 2d 68 6f 6f 6b 2d 77 69 74 68 2d 61 72 67 73 20 27 67 70 74 65 6c 2d 70 6f 73 74 2d 72 65 77 n-hook-with-args.'gptel-post-rew
951a0 72 69 74 65 2d 66 75 6e 63 74 69 6f 6e 73 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28 70 6f 69 6e rite-functions.(point-min).(poin
951c0 74 2d 6d 61 78 29 29 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 t-max)))...............(when.(an
951e0 64 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 6e 65 77 6c 69 6e 65 29 0a 20 20 20 20 d.(plist-get.info.:newline).....
95200 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 20 28 63 .....................(not.(eq.(c
95220 68 61 72 2d 62 65 66 6f 72 65 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 20 3f 5c 6e 29 29 29 0a 20 har-before.(point-max)).?\n)))..
95240 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 29 0a 20 20 ...............(insert."\n"))...
95260 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 6e 74 2d 6c 6f 63 6b 2d 65 6e 73 75 72 65 29 29 0a ............(font-lock-ensure)).
95280 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 64 69 73 ............(overlay-put.ov.'dis
952a0 70 6c 61 79 20 28 62 75 66 66 65 72 2d 73 74 72 69 6e 67 29 29 0a 20 20 20 20 20 20 20 20 20 20 play.(buffer-string))...........
952c0 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 72 65 77 72 69 74 65 ..(overlay-put.ov.'gptel-rewrite
952e0 20 28 62 75 66 66 65 72 2d 73 74 72 69 6e 67 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6b .(buffer-string)).............(k
95300 69 6c 6c 2d 62 75 66 66 65 72 20 70 72 6f 63 2d 62 75 66 29 29 0a 20 20 20 20 20 20 20 20 20 20 ill-buffer.proc-buf))...........
95320 28 77 68 65 6e 20 28 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 (when.(buffer-live-p.buf).......
95340 20 20 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 62 75 66 0a 20 ......(with-current-buffer.buf..
95360 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 6c 73 65 2d 6d 6f 6d 65 6e 74 61 72 79 2d 68 69 .............(pulse-momentary-hi
95380 67 68 6c 69 67 68 74 2d 72 65 67 69 6f 6e 20 28 6f 76 65 72 6c 61 79 2d 73 74 61 72 74 20 6f 76 ghlight-region.(overlay-start.ov
953a0 29 20 28 6f 76 65 72 6c 61 79 2d 65 6e 64 20 6f 76 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 ).(overlay-end.ov)).............
953c0 20 20 28 61 64 64 2d 68 6f 6f 6b 20 27 65 6c 64 6f 63 2d 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e ..(add-hook.'eldoc-documentation
953e0 2d 66 75 6e 63 74 69 6f 6e 73 20 23 27 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6b 65 79 2d -functions.#'gptel--rewrite-key-
95400 68 65 6c 70 20 6e 69 6c 20 27 6c 6f 63 61 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b help.nil.'local)...............;
95420 3b 20 28 6f 76 65 72 6c 61 79 2d 70 75 74 20 6f 76 20 27 67 70 74 65 6c 2d 72 65 77 72 69 74 65 ;.(overlay-put.ov.'gptel-rewrite
95440 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 6f 76 65 72 6c 61 .response)...............(overla
95460 79 2d 70 75 74 20 6f 76 20 27 66 61 63 65 20 27 67 70 74 65 6c 2d 72 65 77 72 69 74 65 2d 68 69 y-put.ov.'face.'gptel-rewrite-hi
95480 67 68 6c 69 67 68 74 2d 66 61 63 65 29 0a 09 20 20 20 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75 ghlight-face)........(overlay-pu
954a0 74 20 6f 76 20 27 70 72 69 6f 72 69 74 79 20 32 30 30 30 29 0a 20 20 20 20 20 20 20 20 20 20 20 t.ov.'priority.2000)............
954c0 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75 74 20 6f 76 20 27 6b 65 79 6d 61 70 20 67 70 74 65 6c ...(overlay-put.ov.'keymap.gptel
954e0 2d 72 65 77 72 69 74 65 2d 61 63 74 69 6f 6e 73 2d 6d 61 70 29 0a 20 20 20 20 20 20 20 20 20 20 -rewrite-actions-map)...........
95500 20 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75 74 20 6f 76 20 27 6d 6f 75 73 65 2d 66 61 63 65 20 ....(overlay-put.ov.'mouse-face.
95520 27 68 69 67 68 6c 69 67 68 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 76 65 72 6c 'highlight)...............(overl
95540 61 79 2d 70 75 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 76 20 27 68 65 6c 70 2d 65 ay-put................ov.'help-e
95560 63 68 6f 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 63 6f 6e 63 cho................(format.(conc
95580 61 74 20 22 25 73 20 72 65 77 72 69 74 65 20 61 76 61 69 6c 61 62 6c 65 3a 20 25 73 20 6f 72 20 at."%s.rewrite.available:.%s.or.
955a0 5c 5c 5b 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 64 69 73 70 61 74 63 68 5d 20 66 6f 72 20 \\[gptel--rewrite-dispatch].for.
955c0 6f 70 74 69 6f 6e 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 20 options").......................
955e0 20 28 63 6f 6e 63 61 74 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 20 67 70 74 .(concat.(gptel-backend-name.gpt
95600 65 6c 2d 62 61 63 6b 65 6e 64 29 20 22 3a 22 20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 6e 61 el-backend).":".(gptel--model-na
95620 6d 65 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 me.gptel-model))................
95640 20 20 20 20 20 20 20 20 6d 6b 62 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 ........mkb))...............(pus
95660 68 20 6f 76 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 0a 20 h.ov.gptel--rewrite-overlays))..
95680 20 20 20 20 20 20 20 20 20 20 20 28 69 66 2d 6c 65 74 2a 20 28 28 73 79 6d 20 67 70 74 65 6c 2d ...........(if-let*.((sym.gptel-
956a0 72 65 77 72 69 74 65 2d 64 65 66 61 75 6c 74 2d 61 63 74 69 6f 6e 29 29 0a 20 20 20 20 20 20 20 rewrite-default-action))........
956c0 20 20 20 20 20 20 20 20 20 28 69 66 2d 6c 65 74 2a 20 28 28 61 63 74 69 6f 6e 20 28 69 6e 74 65 .........(if-let*.((action.(inte
956e0 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 73 79 rn.(concat."gptel--rewrite-".(sy
95700 6d 62 6f 6c 2d 6e 61 6d 65 20 73 79 6d 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 mbol-name.sym))))...............
95720 20 20 20 20 20 20 20 20 20 20 20 20 28 28 66 75 6e 63 74 69 6f 6e 70 20 61 63 74 69 6f 6e 29 29 ............((functionp.action))
95740 29 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 61 ).....................(funcall.a
95760 63 74 69 6f 6e 20 6f 76 29 20 28 66 75 6e 63 61 6c 6c 20 73 79 6d 20 6f 76 29 29 0a 20 20 20 20 ction.ov).(funcall.sym.ov)).....
95780 20 20 20 20 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 28 63 6f 6e 63 61 74 0a 20 20 20 20 20 ..........(message.(concat......
957a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4c 4c 4d 20 72 65 77 72 69 74 65 20 ..................."LLM.rewrite.
957c0 6f 75 74 70 75 74 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 output".........................
957e0 28 75 6e 6c 65 73 73 20 28 65 71 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 20 62 75 66 (unless.(eq.(current-buffer).buf
95800 29 0a 20 20 20 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 )...........................(for
95820 6d 61 74 20 22 20 69 6e 20 62 75 66 66 65 72 20 25 73 20 22 20 28 62 75 66 66 65 72 2d 6e 61 6d mat.".in.buffer.%s.".(buffer-nam
95840 65 20 62 75 66 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 e.buf)))........................
95860 20 28 63 6f 6e 63 61 74 20 22 20 72 65 61 64 79 3a 20 22 20 6d 6b 62 20 22 2c 20 22 20 28 70 72 .(concat.".ready:.".mkb.",.".(pr
95880 6f 70 65 72 74 69 7a 65 20 22 52 45 54 22 20 27 66 61 63 65 20 27 68 65 6c 70 2d 6b 65 79 2d 62 opertize."RET".'face.'help-key-b
958a0 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 20 20 20 inding).........................
958c0 20 20 20 20 20 20 20 20 22 20 6f 72 20 22 20 28 73 75 62 73 74 69 74 75 74 65 2d 63 6f 6d 6d 61 ........".or.".(substitute-comma
958e0 6e 64 2d 6b 65 79 73 20 22 5c 5c 5b 67 70 74 65 6c 2d 72 65 77 72 69 74 65 5d 20 74 6f 20 63 6f nd-keys."\\[gptel-rewrite].to.co
95900 6e 74 69 6e 75 65 2e 22 29 29 29 29 29 29 29 29 29 29 29 0a 0a 3b 3b 20 2a 20 54 72 61 6e 73 69 ntinue.")))))))))))..;;.*.Transi
95920 65 6e 74 20 50 72 65 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 ent.Prefixes.for.rewriting..(tra
95940 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 2d 72 65 77 72 nsient-define-prefix.gptel--rewr
95960 69 74 65 2d 64 69 72 65 63 74 69 76 65 2d 6d 65 6e 75 20 28 29 0a 20 20 22 53 65 74 20 74 68 65 ite-directive-menu.()..."Set.the
95980 20 64 69 72 65 63 74 69 76 65 20 28 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 29 20 66 6f 72 20 .directive.(system.message).for.
959a0 72 65 77 72 69 74 65 20 61 63 74 69 6f 6e 73 2e 0a 0a 42 79 20 64 65 66 61 75 6c 74 2c 20 67 70 rewrite.actions...By.default,.gp
959c0 74 65 6c 20 75 73 65 73 20 74 68 65 20 64 69 72 65 63 74 69 76 65 20 61 73 73 6f 63 69 61 74 65 tel.uses.the.directive.associate
959e0 64 20 77 69 74 68 20 74 68 65 20 60 72 65 77 72 69 74 65 27 0a 20 6b 65 79 20 69 6e 20 60 67 70 d.with.the.`rewrite'..key.in.`gp
95a00 74 65 6c 2d 64 69 72 65 63 74 69 76 65 73 27 2e 20 20 59 6f 75 20 63 61 6e 20 61 64 64 20 6d 6f tel-directives'...You.can.add.mo
95a20 72 65 20 72 65 77 72 69 74 65 2d 73 70 65 63 69 66 69 63 0a 20 64 69 72 65 63 74 69 76 65 73 20 re.rewrite-specific..directives.
95a40 74 6f 20 60 67 70 74 65 6c 2d 64 69 72 65 63 74 69 76 65 73 27 20 61 6e 64 20 70 69 63 6b 20 6f to.`gptel-directives'.and.pick.o
95a60 6e 65 20 66 72 6f 6d 20 68 65 72 65 2e 22 0a 20 20 5b 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 67 ne.from.here."...[:description.g
95a80 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 5b 28 ptel-system-prompt--format....[(
95aa0 67 70 74 65 6c 2d 2d 73 75 66 66 69 78 2d 72 65 77 72 69 74 65 2d 64 69 72 65 63 74 69 76 65 29 gptel--suffix-rewrite-directive)
95ac0 5d 0a 20 20 20 5b 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 ]....[(gptel--infix-variable-sco
95ae0 70 65 29 5d 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 pe)]]....[:class.transient-colum
95b00 6e 0a 20 20 20 20 3a 73 65 74 75 70 2d 63 68 69 6c 64 72 65 6e 0a 20 20 20 20 28 6c 61 6d 62 64 n.....:setup-children.....(lambd
95b20 61 20 28 5f 29 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 a.(_).(transient-parse-suffixes.
95b40 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 72 65 ............'gptel--rewrite-dire
95b60 63 74 69 76 65 2d 6d 65 6e 75 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 73 ctive-menu.............(gptel--s
95b80 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 20 20 20 20 20 etup-directive-menu.............
95ba0 20 27 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 22 52 65 77 72 .'gptel--rewrite-directive."Rewr
95bc0 69 74 65 20 64 69 72 65 63 74 69 76 65 22 29 29 29 0a 20 20 20 20 3a 70 61 64 2d 6b 65 79 73 20 ite.directive"))).....:pad-keys.
95be0 74 5d 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 t])..(define-obsolete-function-a
95c00 6c 69 61 73 20 27 67 70 74 65 6c 2d 72 65 77 72 69 74 65 2d 6d 65 6e 75 20 27 67 70 74 65 6c 2d lias.'gptel-rewrite-menu.'gptel-
95c20 72 65 77 72 69 74 65 20 22 30 2e 39 2e 36 22 29 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 rewrite."0.9.6")..;;;###autoload
95c40 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
95c60 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
95c80 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
95ca0 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
95cc0 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....
95ce0 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
95d00 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-
95d20 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)
95d40 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
95d60 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
95d80 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
95da0 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)....................(
95dc0 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
95de0 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....
95e00 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
95e20 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
95e40 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)................
95e60 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))))
95e80 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
95ea0 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)...
95ec0 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)]]
95ee0 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
95f00 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.
95f20 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.
95f40 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
95f60 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"
95f80 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--
95fa0 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."-
95fc0 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
95fe0 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")
96000 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
96020 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
96040 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.
96060 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"."
96080 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")).....("-
960a0 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"......
960c0 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"))
960e0 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"........
96100 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
96120 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
96140 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
96160 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--
96180 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
961a0 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--
961c0 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
961e0 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
96200 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
96220 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
96240 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)
96260 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
96280 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
962a0 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"
962c0 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
962e0 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
96300 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
96320 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
96340 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
96360 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
96380 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).............
963a0 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
963c0 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)...........
963e0 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))))..
96400 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)"..
96420 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
96440 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.
96460 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
96480 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
964a0 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..
964c0 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
964e0 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)))).....(
96500 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)"......
96520 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
96540 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
96560 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)..
96580 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)...
965a0 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......
965c0 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-
965e0 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
96600 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-
96620 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 75 -rewrite-sanitize-overlays)...(u
96640 6e 6c 65 73 73 20 28 6f 72 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6f 76 65 72 6c 61 79 nless.(or.gptel--rewrite-overlay
96660 73 20 28 75 73 65 2d 72 65 67 69 6f 6e 2d 70 29 29 0a 20 20 20 20 28 75 73 65 72 2d 65 72 72 6f s.(use-region-p)).....(user-erro
96680 72 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 61 r."`gptel-rewrite'.requires.an.a
966a0 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 72 ctive.region.or.rewrite.in.progr
966c0 65 73 73 2e 22 29 29 0a 20 20 28 75 6e 6c 65 73 73 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 ess."))...(unless.gptel--rewrite
966e0 2d 6d 65 73 73 61 67 65 0a 20 20 20 20 28 73 65 74 71 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 -message.....(setq.gptel--rewrit
96700 65 2d 6d 65 73 73 61 67 65 20 22 52 65 77 72 69 74 65 3a 20 22 29 29 0a 20 20 28 74 72 61 6e 73 e-message."Rewrite:."))...(trans
96720 69 65 6e 74 2d 73 65 74 75 70 20 27 67 70 74 65 6c 2d 72 65 77 72 69 74 65 29 29 0a 0a 3b 3b 20 ient-setup.'gptel-rewrite))..;;.
96740 2a 20 54 72 61 6e 73 69 65 6e 74 20 69 6e 66 69 78 65 73 20 66 6f 72 20 72 65 77 72 69 74 69 6e *.Transient.infixes.for.rewritin
96760 67 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 g..(transient-define-infix.gptel
96780 2d 2d 69 6e 66 69 78 2d 72 65 77 72 69 74 65 2d 65 78 74 72 61 20 28 29 0a 20 20 22 43 68 61 74 --infix-rewrite-extra.()..."Chat
967a0 20 64 69 72 65 63 74 69 76 65 20 28 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 29 20 74 6f 20 75 .directive.(system.message).to.u
967c0 73 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 se.for.rewriting.or.refactoring.
967e0 22 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 52 65 77 72 69 74 65 20 69 6e 73 74 72 75 "...:description."Rewrite.instru
96800 63 74 69 6f 6e 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 ction"...:class.'gptel-lisp-vari
96820 61 62 6c 65 0a 20 20 3a 76 61 72 69 61 62 6c 65 20 27 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 able...:variable.'gptel--rewrite
96840 2d 6d 65 73 73 61 67 65 0a 20 20 3a 73 65 74 2d 76 61 6c 75 65 20 23 27 67 70 74 65 6c 2d 2d 73 -message...:set-value.#'gptel--s
96860 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 28 4e et-with-scope...:display-nil."(N
96880 6f 6e 65 29 22 0a 20 20 3a 6b 65 79 20 22 64 22 0a 20 20 3a 66 6f 72 6d 61 74 20 22 20 25 6b 20 one)"...:key."d"...:format.".%k.
968a0 25 64 20 25 76 22 0a 20 20 3a 70 72 6f 6d 70 74 20 28 63 6f 6e 63 61 74 20 22 49 6e 73 74 72 75 %d.%v"...:prompt.(concat."Instru
968c0 63 74 69 6f 6e 73 20 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 ctions.".gptel--read-with-prefix
968e0 2d 68 65 6c 70 29 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 -help)...:reader.(lambda.(prompt
96900 20 5f 20 68 69 73 74 6f 72 79 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 ._.history).............(let*.((
96920 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 20 20 20 20 rewrite-directive...............
96940 20 20 20 20 20 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 ......(car-safe.(gptel--parse-di
96960 72 65 63 74 69 76 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 rective.gptel--rewrite-directive
96980 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
969a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 72 61 77 29 29 29 0a 20 .......................'raw)))..
969c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 62 20 28 63 75 72 72 65 6e 74 2d 62 ..................(cb.(current-b
969e0 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 28 63 79 63 6c uffer))....................(cycl
96a00 65 2d 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 28 6c 61 e-prefix.....................(la
96a20 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 20 mbda.().(interactive)...........
96a40 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 2d 70 72 ............(gptel--read-with-pr
96a60 65 66 69 78 20 72 65 77 72 69 74 65 2d 64 69 72 65 63 74 69 76 65 29 29 29 0a 20 20 20 20 20 20 efix.rewrite-directive))).......
96a80 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 64 69 74 2d 69 6e 2d 62 75 66 66 65 72 0a 20 20 20 .............(edit-in-buffer....
96aa0 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 29 20 28 69 6e 74 .................(lambda.().(int
96ac0 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 20 eractive).......................
96ae0 28 6c 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 (let.((offset.(-.(point).(minibu
96b00 66 66 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 ffer-prompt-end)))).............
96b20 20 20 20 20 20 20 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 ............(gptel--edit-directi
96b40 76 65 20 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 20 20 20 ve.'gptel--rewrite-message......
96b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 70 72 6f 6d 70 74 20 72 65 77 .....................:prompt.rew
96b80 72 69 74 65 2d 64 69 72 65 63 74 69 76 65 20 3a 69 6e 69 74 69 61 6c 20 28 6d 69 6e 69 62 75 66 rite-directive.:initial.(minibuf
96ba0 66 65 72 2d 63 6f 6e 74 65 6e 74 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 fer-contents)...................
96bc0 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
96be0 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
96c00 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 20 20 20 20 r.offset))).....................
96c20 20 20 20 20 20 20 3a 63 61 6c 6c 62 61 63 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ......:callback.................
96c40 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 ..........(lambda.()............
96c60 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 20 30 20 .................(run-at-time.0.
96c80 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 2d 72 65 77 nil.#'transient-setup.'gptel-rew
96ca0 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 20 20 20 20 20 20 20 rite)...........................
96cc0 20 20 28 70 75 73 68 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 ..(push.(buffer-local-value.'gpt
96ce0 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6d 65 73 73 61 67 65 20 63 62 29 0a 20 20 20 20 20 20 20 20 el--rewrite-message.cb).........
96d00 20 20 20 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 6c 69 73 74 ..........................(alist
96d20 2d 67 65 74 20 27 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 -get.'gptel--infix-rewrite-extra
96d40 20 74 72 61 6e 73 69 65 6e 74 2d 68 69 73 74 6f 72 79 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 .transient-history))............
96d60 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 66 .................(when.(minibuff
96d80 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 2d erp).(minibuffer-quit-recursive-
96da0 65 64 69 74 29 29 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 28 edit)))))))....................(
96dc0 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 20 20 20 20 20 20 minibuffer-local-map............
96de0 20 20 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 20 28 .........(make-composed-keymap.(
96e00 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 20 20 20 20 20 20 define-keymap...................
96e20 20 20 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 42 22 20 .........................."TAB".
96e40 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 65 66 69 cycle-prefix."<tab>".cycle-prefi
96e60 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 20 20 20 x...............................
96e80 20 20 20 20 20 20 20 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 .............."C-c.C-e".edit-in-
96ea0 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 20 20 20 20 20 20 buffer).........................
96ec0 20 20 20 20 20 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 ..................minibuffer-loc
96ee0 61 6c 2d 6d 61 70 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 69 6e 69 62 75 66 al-map)))...............(minibuf
96f00 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 72 65 66 69 78 fer-with-setup-hook.cycle-prefix
96f20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 61 64 2d 73 74 72 69 6e 67 0a 20 20 .................(read-string...
96f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 6d 70 74 20 28 6f 72 20 67 70 74 65 6c 2d ...............prompt.(or.gptel-
96f60 2d 72 65 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 -rewrite-message."Rewrite:.")...
96f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 69 73 74 6f 72 79 29 29 29 29 29 0a 0a 28 74 72 ...............history)))))..(tr
96fa0 61 6e 73 69 65 6e 74 2d 64 65 66 69 6e 65 2d 61 72 67 75 6d 65 6e 74 20 67 70 74 65 6c 2d 2d 69 ansient-define-argument.gptel--i
96fc0 6e 66 69 78 2d 72 65 77 72 69 74 65 2d 64 69 66 66 3a 2d 55 20 28 29 0a 20 20 3a 64 65 73 63 72 nfix-rewrite-diff:-U.()...:descr
96fe0 69 70 74 69 6f 6e 20 22 43 6f 6e 74 65 78 74 20 6c 69 6e 65 73 22 0a 20 20 3a 63 6c 61 73 73 20 iption."Context.lines"...:class.
97000 27 74 72 61 6e 73 69 65 6e 74 2d 6f 70 74 69 6f 6e 0a 20 20 3a 61 72 67 75 6d 65 6e 74 20 22 2d 'transient-option...:argument."-
97020 55 22 0a 20 20 3a 72 65 61 64 65 72 20 23 27 74 72 61 6e 73 69 65 6e 74 2d 72 65 61 64 2d 6e 75 U"...:reader.#'transient-read-nu
97040 6d 62 65 72 2d 4e 30 29 0a 0a 3b 3b 20 2a 20 54 72 61 6e 73 69 65 6e 74 20 73 75 66 66 69 78 65 mber-N0)..;;.*.Transient.suffixe
97060 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 69 s.for.rewriting..(transient-defi
97080 6e 65 2d 73 75 66 66 69 78 20 67 70 74 65 6c 2d 2d 73 75 66 66 69 78 2d 72 65 77 72 69 74 65 2d ne-suffix.gptel--suffix-rewrite-
970a0 64 69 72 65 63 74 69 76 65 20 28 26 6f 70 74 69 6f 6e 61 6c 20 63 61 6e 63 65 6c 29 0a 20 20 22 directive.(&optional.cancel)..."
970c0 45 64 69 74 20 52 65 77 72 69 74 65 20 64 69 72 65 63 74 69 76 65 2e 0a 0a 43 41 4e 43 45 4c 20 Edit.Rewrite.directive...CANCEL.
970e0 69 73 20 75 73 65 64 20 74 6f 20 61 76 6f 69 64 20 74 6f 75 63 68 69 6e 67 20 64 79 6e 61 6d 69 is.used.to.avoid.touching.dynami
97100 63 20 72 65 77 72 69 74 65 20 64 69 72 65 63 74 69 76 65 73 2c 0a 67 65 6e 65 72 61 74 65 64 20 c.rewrite.directives,.generated.
97120 66 72 6f 6d 20 66 75 6e 63 74 69 6f 6e 73 2e 22 0a 20 20 3a 74 72 61 6e 73 69 65 6e 74 20 27 74 from.functions."...:transient.'t
97140 72 61 6e 73 69 65 6e 74 2d 2d 64 6f 2d 65 78 69 74 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e ransient--do-exit...:description
97160 20 22 45 64 69 74 20 66 75 6c 6c 20 72 65 77 72 69 74 65 20 64 69 72 65 63 74 69 76 65 22 0a 20 ."Edit.full.rewrite.directive"..
97180 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 69 73 .:key."s"...(interactive....(lis
971a0 74 20 28 61 6e 64 0a 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 74 69 6f 6e 70 20 67 70 74 65 t.(and...........(functionp.gpte
971c0 6c 2d 2d 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 20 l--rewrite-directive)...........
971e0 28 6e 6f 74 20 28 79 2d 6f 72 2d 6e 2d 70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 (not.(y-or-n-p................."
97200 52 65 77 72 69 74 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 Rewrite.directive.is.dynamically
97220 20 67 65 6e 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 .generated:.Edit.its.current.val
97240 75 65 20 69 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 ue.instead?")))))...(if.cancel.(
97260 70 72 6f 67 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 progn.(message."Edit.canceled").
97280 20 20 20 20 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 ....................(call-intera
972a0 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 28 67 ctively.#'gptel-rewrite)).....(g
972c0 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 65 77 ptel--edit-directive.'gptel--rew
972e0 72 69 74 65 2d 64 69 72 65 63 74 69 76 65 0a 20 20 20 20 20 20 3a 63 61 6c 6c 62 61 63 6b 20 23 rite-directive.......:callback.#
97300 27 67 70 74 65 6c 2d 72 65 77 72 69 74 65 20 3a 73 65 74 75 70 20 23 27 61 63 74 69 76 61 74 65 'gptel-rewrite.:setup.#'activate
97320 2d 6d 61 72 6b 29 29 29 0a 0a 28 74 72 61 6e 73 69 65 6e 74 2d 64 65 66 69 6e 65 2d 73 75 66 66 -mark)))..(transient-define-suff
97340 69 78 20 67 70 74 65 6c 2d 2d 73 75 66 66 69 78 2d 72 65 77 72 69 74 65 20 28 26 6f 70 74 69 6f ix.gptel--suffix-rewrite.(&optio
97360 6e 61 6c 20 72 65 77 72 69 74 65 2d 6d 65 73 73 61 67 65 20 64 72 79 2d 72 75 6e 29 0a 20 20 22 nal.rewrite-message.dry-run)..."
97380 52 65 77 72 69 74 65 20 6f 72 20 72 65 66 61 63 74 6f 72 20 72 65 67 69 6f 6e 20 63 6f 6e 74 65 Rewrite.or.refactor.region.conte
973a0 6e 74 73 2e 22 0a 20 20 3a 6b 65 79 20 22 72 22 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 nts."...:key."r"...:description.
973c0 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 65 72 74 (lambda.().(if.(get-char-propert
973e0 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 20 22 49 74 65 72 61 y.(point).'gptel-rewrite)."Itera
97400 74 65 22 20 22 52 65 77 72 69 74 65 22 29 29 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 20 28 te"."Rewrite"))...(interactive.(
97420 6c 69 73 74 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 list.gptel--rewrite-message))...
97440 28 6c 65 74 2a 20 28 28 6e 6f 73 79 73 74 65 6d 20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 63 (let*.((nosystem.(gptel--model-c
97460 61 70 61 62 6c 65 2d 70 20 27 6e 6f 73 79 73 74 65 6d 29 29 0a 20 20 20 20 20 20 20 20 20 3b 3b apable-p.'nosystem))..........;;
97480 20 54 72 79 20 74 6f 20 73 65 6e 64 20 63 6f 6e 74 65 78 74 20 77 69 74 68 20 73 79 73 74 65 6d .Try.to.send.context.with.system
974a0 20 6d 65 73 73 61 67 65 0a 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 75 73 65 2d 63 6f 6e .message..........(gptel-use-con
974c0 74 65 78 74 0a 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 67 70 74 65 6c 2d 75 73 65 2d 63 6f text...........(and.gptel-use-co
974e0 6e 74 65 78 74 20 28 69 66 20 6e 6f 73 79 73 74 65 6d 20 27 75 73 65 72 20 27 73 79 73 74 65 6d ntext.(if.nosystem.'user.'system
97500 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 70 72 6f 6d 70 74 20 28 6c 69 73 74 20 28 6f 72 20 28 )))..........(prompt.(list.(or.(
97520 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
97540 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 20 20 20 -rewrite).......................
97560 20 20 20 20 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72 .....(buffer-substring-no-proper
97580 74 69 65 73 20 28 72 65 67 69 6f 6e 2d 62 65 67 69 6e 6e 69 6e 67 29 20 28 72 65 67 69 6f 6e 2d ties.(region-beginning).(region-
975a0 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 20 20 20 22 57 end)))........................"W
975c0 68 61 74 20 69 73 20 74 68 65 20 72 65 71 75 69 72 65 64 20 63 68 61 6e 67 65 3f 22 0a 20 20 20 hat.is.the.required.change?"....
975e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 20 72 65 77 72 69 74 65 2d ....................(or.rewrite-
97600 6d 65 73 73 61 67 65 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6d 65 73 73 61 67 65 29 29 message.gptel--rewrite-message))
97620 29 29 0a 20 20 20 20 28 77 68 65 6e 20 6e 6f 73 79 73 74 65 6d 0a 20 20 20 20 20 20 28 73 65 74 )).....(when.nosystem.......(set
97640 63 61 72 20 70 72 6f 6d 70 74 20 28 63 6f 6e 63 61 74 20 28 63 61 72 2d 73 61 66 65 20 28 67 70 car.prompt.(concat.(car-safe.(gp
97660 74 65 6c 2d 2d 70 61 72 73 65 2d 64 69 72 65 63 74 69 76 65 0a 20 20 20 20 20 20 20 20 20 20 20 tel--parse-directive............
97680 20 20 20 20 20 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
976a0 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 29 0a 20 20 20 el--rewrite-directive.'raw))....
976c0 20 20 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 5c 6e 22 .........................."\n\n"
976e0 20 28 63 61 72 20 70 72 6f 6d 70 74 29 29 29 29 0a 20 20 20 20 28 70 72 6f 67 31 20 28 67 70 74 .(car.prompt)))).....(prog1.(gpt
97700 65 6c 2d 72 65 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 el-request.prompt..............:
97720 64 72 79 2d 72 75 6e 20 64 72 79 2d 72 75 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 73 79 dry-run.dry-run..............:sy
97740 73 74 65 6d 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 20 stem.gptel--rewrite-directive...
97760 20 20 20 20 20 20 20 20 20 20 20 3a 73 74 72 65 61 6d 20 67 70 74 65 6c 2d 73 74 72 65 61 6d 0a ...........:stream.gptel-stream.
97780 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 0a 20 20 20 20 20 20 20 20 20 20 .............:context...........
977a0 20 20 20 28 6c 65 74 20 28 28 6f 76 20 28 6f 72 20 28 63 64 72 2d 73 61 66 65 20 28 67 65 74 2d ...(let.((ov.(or.(cdr-safe.(get-
977c0 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 70 6f 69 6e 74 char-property-and-overlay.(point
977e0 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))..............
97800 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 28 72 65 67 ..............(make-overlay.(reg
97820 69 6f 6e 2d 62 65 67 69 6e 6e 69 6e 67 29 20 28 72 65 67 69 6f 6e 2d 65 6e 64 29 20 6e 69 6c 20 ion-beginning).(region-end).nil.
97840 74 29 29 29 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 70 75 t))))................(overlay-pu
97860 74 20 6f 76 20 27 63 61 74 65 67 6f 72 79 20 27 67 70 74 65 6c 29 0a 20 20 20 20 20 20 20 20 20 t.ov.'category.'gptel)..........
97880 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 72 61 74 65 ......(overlay-put.ov.'evaporate
978a0 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 4e 4f 54 45 3a 20 53 77 69 74 .t)................;;.NOTE:.Swit
978c0 63 68 20 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 ch.to.`generate-new-buffer'.afte
978e0 72 20 77 65 20 64 72 6f 70 20 45 6d 61 63 73 20 32 37 2e 31 20 28 23 37 32 34 29 0a 20 20 20 20 r.we.drop.Emacs.27.1.(#724).....
97900 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 20 6f 76 20 28 67 70 74 65 6c 2d 2d 74 65 6d 70 ...........(cons.ov.(gptel--temp
97920 2d 62 75 66 66 65 72 20 22 20 2a 67 70 74 65 6c 2d 72 65 77 72 69 74 65 2a 22 29 29 29 0a 20 20 -buffer.".*gptel-rewrite*")))...
97940 20 20 20 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 ...........:transforms.gptel-pro
97960 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 20 20 20 mpt-transform-functions.........
97980 20 20 20 20 20 3a 63 61 6c 6c 62 61 63 6b 20 23 27 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d .....:callback.#'gptel--rewrite-
979a0 63 61 6c 6c 62 61 63 6b 29 0a 20 20 20 20 20 20 3b 3b 20 4d 6f 76 65 20 62 61 63 6b 20 73 6f 20 callback).......;;.Move.back.so.
979c0 74 68 61 74 20 74 68 65 20 63 75 72 73 6f 72 20 69 73 20 6f 6e 20 74 68 65 20 6f 76 65 72 6c 61 that.the.cursor.is.on.the.overla
979e0 79 20 77 68 65 6e 20 64 6f 6e 65 2e 0a 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 67 65 74 2d y.when.done........(unless.(get-
97a00 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 2d 72 65 77 char-property.(point).'gptel-rew
97a20 72 69 74 65 29 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 3d 20 28 70 6f 69 6e 74 29 20 28 rite).........(when.(=.(point).(
97a40 72 65 67 69 6f 6e 2d 65 6e 64 29 29 20 28 62 61 63 6b 77 61 72 64 2d 63 68 61 72 20 31 29 29 29 region-end)).(backward-char.1)))
97a60 0a 20 20 20 20 20 20 28 64 65 61 63 74 69 76 61 74 65 2d 6d 61 72 6b 29 29 29 29 0a 0a 3b 3b 20 .......(deactivate-mark))))..;;.
97a80 41 6c 6c 6f 77 20 74 68 69 73 20 74 6f 20 62 65 20 63 61 6c 6c 65 64 20 6e 6f 6e 2d 69 6e 74 65 Allow.this.to.be.called.non-inte
97aa0 72 61 63 74 69 76 65 6c 79 20 66 6f 72 20 64 72 79 20 72 75 6e 73 0a 28 70 75 74 20 27 67 70 74 ractively.for.dry.runs.(put.'gpt
97ac0 65 6c 2d 2d 73 75 66 66 69 78 2d 72 65 77 72 69 74 65 20 27 69 6e 74 65 72 61 63 74 69 76 65 2d el--suffix-rewrite.'interactive-
97ae0 6f 6e 6c 79 20 6e 69 6c 29 0a 0a 28 74 72 61 6e 73 69 65 6e 74 2d 64 65 66 69 6e 65 2d 73 75 66 only.nil)..(transient-define-suf
97b00 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 64 69 66 66 20 28 fix.gptel--suffix-rewrite-diff.(
97b20 26 6f 70 74 69 6f 6e 61 6c 20 73 77 69 74 63 68 65 73 29 0a 20 20 22 44 69 66 66 20 4c 4c 4d 20 &optional.switches)..."Diff.LLM.
97b40 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 66 20 28 6c output.against.buffer."...:if.(l
97b60 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 73 ambda.().gptel--rewrite-overlays
97b80 29 0a 20 20 3a 6b 65 79 20 22 44 22 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 44 69 66 )...:key."D"...:description."Dif
97ba0 66 20 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 69 76 65 20 f..LLM.rewrites"...(interactive.
97bc0 28 6c 69 73 74 20 28 74 72 61 6e 73 69 65 6e 74 2d 61 72 67 73 20 74 72 61 6e 73 69 65 6e 74 2d (list.(transient-args.transient-
97be0 63 75 72 72 65 6e 74 2d 63 6f 6d 6d 61 6e 64 29 29 29 0a 20 20 28 67 70 74 65 6c 2d 2d 72 65 77 current-command)))...(gptel--rew
97c00 72 69 74 65 2d 64 69 66 66 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6f 76 65 72 6c 61 79 rite-diff.gptel--rewrite-overlay
97c20 73 20 73 77 69 74 63 68 65 73 29 29 0a 0a 28 74 72 61 6e 73 69 65 6e 74 2d 64 65 66 69 6e 65 2d s.switches))..(transient-define-
97c40 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 65 64 69 suffix.gptel--suffix-rewrite-edi
97c60 66 66 20 28 29 0a 20 20 22 45 64 69 66 66 20 4c 4c 4d 20 6f 75 74 70 75 74 20 61 67 61 69 6e 73 ff.()..."Ediff.LLM.output.agains
97c80 74 20 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 t.buffer."...:if.(lambda.().gpte
97ca0 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 79 20 22 45 22 0a l--rewrite-overlays)...:key."E".
97cc0 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 45 64 69 66 66 20 4c 4c 4d 20 72 65 77 72 69 74 ..:description."Ediff.LLM.rewrit
97ce0 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
97d00 77 72 69 74 65 2d 65 64 69 66 66 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6f 76 65 72 6c write-ediff.gptel--rewrite-overl
97d20 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 73 75 66 66 69 78 20 ays))..(transient-define-suffix.
97d40 67 70 74 65 6c 2d 2d 73 75 66 66 69 78 2d 72 65 77 72 69 74 65 2d 6d 65 72 67 65 20 28 29 0a 20 gptel--suffix-rewrite-merge.()..
97d60 20 22 49 6e 73 65 72 74 20 4c 4c 4d 20 6f 75 74 70 75 74 20 61 73 20 6d 65 72 67 65 20 63 6f 6e ."Insert.LLM.output.as.merge.con
97d80 66 6c 69 63 74 73 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 flicts"...:if.(lambda.().gptel--
97da0 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 4d 22 0a 20 20 3a rewrite-overlays)...:key."M"...:
97dc0 64 65 73 63 72 69 70 74 69 6f 6e 20 22 4d 65 72 67 65 20 77 69 74 68 20 63 6f 6e 66 6c 69 63 74 description."Merge.with.conflict
97de0 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 77 s"...(interactive)...(gptel--rew
97e00 72 69 74 65 2d 6d 65 72 67 65 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6f 76 65 72 6c 61 rite-merge.gptel--rewrite-overla
97e20 79 73 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 ys))..(transient-define-suffix.g
97e40 70 74 65 6c 2d 2d 73 75 66 66 69 78 2d 72 65 77 72 69 74 65 2d 61 63 63 65 70 74 20 28 29 0a 20 ptel--suffix-rewrite-accept.()..
97e60 20 22 41 63 63 65 70 74 20 70 65 6e 64 69 6e 67 20 4c 4c 4d 20 72 65 77 72 69 74 65 73 2e 22 0a ."Accept.pending.LLM.rewrites.".
97e80 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 69 74 65 2d ..:if.(lambda.().gptel--rewrite-
97ea0 6f 76 65 72 6c 61 79 73 29 0a 20 20 3a 6b 65 79 20 22 41 22 0a 20 20 3a 64 65 73 63 72 69 70 74 overlays)...:key."A"...:descript
97ec0 69 6f 6e 20 22 41 63 63 65 70 74 20 61 6e 64 20 72 65 70 6c 61 63 65 22 0a 20 20 28 69 6e 74 65 ion."Accept.and.replace"...(inte
97ee0 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 61 63 63 65 70 ractive)...(gptel--rewrite-accep
97f00 74 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 0a 0a 28 74 72 t.gptel--rewrite-overlays))..(tr
97f20 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
97f40 66 69 78 2d 72 65 77 72 69 74 65 2d 72 65 6a 65 63 74 20 28 29 0a 20 20 22 43 6c 65 61 72 20 70 fix-rewrite-reject.()..."Clear.p
97f60 65 6e 64 69 6e 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 ending.LLM.rewrites."...:if.(lam
97f80 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 0a bda.().gptel--rewrite-overlays).
97fa0 20 20 3a 6b 65 79 20 22 4b 22 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 43 6c 65 61 72 ..:key."K"...:description."Clear
97fc0 20 70 65 6e 64 69 6e 67 20 72 65 77 72 69 74 65 73 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 .pending.rewrites"...(interactiv
97fe0 65 29 0a 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 67 70 74 65 e)...(gptel--rewrite-reject.gpte
98000 6c 2d 2d 72 65 77 72 69 74 65 2d 6f 76 65 72 6c 61 79 73 29 29 0a 0a 28 70 72 6f 76 69 64 65 20 l--rewrite-overlays))..(provide.
98020 27 67 70 74 65 6c 2d 72 65 77 72 69 74 65 29 0a 3b 3b 3b 20 67 70 74 65 6c 2d 72 65 77 72 69 74 'gptel-rewrite).;;;.gptel-rewrit
98040 65 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 e.el.ends.here..;;.Local.Variabl
98060 65 73 3a 0a 3b 3b 20 6f 75 74 6c 69 6e 65 2d 72 65 67 65 78 70 3a 20 22 5e 3b 3b 20 5c 5c 2a 2b es:.;;.outline-regexp:."^;;.\\*+
98080 22 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 00 00 00 ".;;.End:.......................
980a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
980c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
980e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
98100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
98120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
98140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
98160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
98180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
981a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
981c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
981e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
98200 67 70 74 65 6c 2d 30 2e 39 2e 38 2e 35 2f 67 70 74 65 6c 2d 6f 70 65 6e 61 69 2e 65 6c 00 00 00 gptel-0.9.8.5/gptel-openai.el...
98220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
98240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
98260 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
98280 30 30 37 30 34 33 30 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 34 33 35 37 00 20 30 00 00 00 0070430.00000000000.014357..0...
982a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
982c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
982e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
98300 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...................
98320 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...................
98340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
98360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
98380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
983a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
983c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
983e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
98400 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
98420 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
98440 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.(
98460 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
98480 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
984a0 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>
984c0 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
984e0 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/
98500 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.
98520 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
98540 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
98560 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
98580 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
985a0 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...;
985c0 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
985e0 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
98600 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
98620 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
98640 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
98660 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
98680 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
986a0 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
986c0 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.
986e0 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
98700 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,.
98720 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
98740 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
98760 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
98780 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
987a0 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
987c0 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.
987e0 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
98800 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-
98820 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)
98840 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
98860 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
98880 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
988a0 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
988c0 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)
988e0 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
98900 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
98920 65 6c 2d 74 6f 6f 6c 73 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 67 70 74 65 el-tools).(declare-function.gpte
98940 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 70 74 65 6c 2d l-context--collect-media."gptel-
98960 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 20 67 70 74 65 context").(declare-function.gpte
98980 6c 2d 2d 62 61 73 65 36 34 2d 65 6e 63 6f 64 65 20 22 67 70 74 65 6c 22 29 0a 28 64 65 63 6c 61 l--base64-encode."gptel").(decla
989a0 72 65 2d 66 75 6e 63 74 69 6f 6e 20 67 70 74 65 6c 2d 2d 74 72 69 6d 2d 70 72 65 66 69 78 65 73 re-function.gptel--trim-prefixes
989c0 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 65 ."gptel").(declare-function.gpte
989e0 6c 2d 2d 70 61 72 73 65 2d 6d 65 64 69 61 2d 6c 69 6e 6b 73 20 22 67 70 74 65 6c 22 29 0a 28 64 l--parse-media-links."gptel").(d
98a00 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 63 61 70 eclare-function.gptel--model-cap
98a20 61 62 6c 65 2d 70 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 able-p."gptel").(declare-functio
98a40 6e 20 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 6e 61 6d 65 20 22 67 70 74 65 6c 22 29 0a 28 64 65 n.gptel--model-name."gptel").(de
98a60 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 67 70 74 65 6c 2d 2d 67 65 74 2d 61 70 69 2d 6b 65 clare-function.gptel--get-api-ke
98a80 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 69 6f 6e 20 70 72 6f y."gptel").(declare-function.pro
98aa0 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 73 65 61 p-match-value."text-property-sea
98ac0 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 70 72 6f rch").(declare-function.text-pro
98ae0 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 72 6f 70 perty-search-backward."text-prop
98b00 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 20 erty-search").(declare-function.
98b20 6a 73 6f 6e 2d 72 65 61 64 20 22 6a 73 6f 6e 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 json-read."json").(declare-funct
98b40 69 6f 6e 20 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 20 22 ion.gptel-prompt-prefix-string."
98b60 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 2d gptel").(declare-function.gptel-
98b80 72 65 73 70 6f 6e 73 65 2d 70 72 65 66 69 78 2d 73 74 72 69 6e 67 20 22 67 70 74 65 6c 22 29 0a response-prefix-string."gptel").
98ba0 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 65 72 67 65 2d 70 (declare-function.gptel--merge-p
98bc0 6c 69 73 74 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 6f 6e lists."gptel").(declare-function
98be0 20 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 22 67 70 .gptel--model-request-params."gp
98c00 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 63 6f tel").(declare-function.gptel-co
98c20 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 28 64 65 ntext--wrap."gptel-context").(de
98c40 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 67 70 74 65 6c 2d 2d 69 6e 6a 65 63 74 2d 70 72 6f clare-function.gptel--inject-pro
98c60 6d 70 74 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 mpt."gptel").(declare-function.g
98c80 70 74 65 6c 2d 2d 70 61 72 73 65 2d 74 6f 6f 6c 73 20 22 67 70 74 65 6c 22 29 0a 0a 3b 3b 20 4a ptel--parse-tools."gptel")..;;.J
98ca0 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 65 64 20 62 79 SON.conversion.semantics.used.by
98cc0 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 20 3d 3e 20 65 .gptel.;;.empty.object."{}".=>.e
98ce0 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 6c 20 20 20 20 mpty.list.'().==.nil.;;.null....
98d00 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 20 20 20 20 20 ..........=>.:null.;;.false.....
98d20 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 54 4f 44 4f 28 ........=>.:json-false..;;.TODO(
98d40 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 53 4f 4e 20 66 tool).Except.when.reading.JSON.f
98d60 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 20 6e 69 6c 0a rom.a.string,.where.null.=>.nil.
98d80 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 20 28 29 0a 20 .(defmacro.gptel--json-read.()..
98da0 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 75 66 66 65 72 .(if.(fboundp.'json-parse-buffer
98dc0 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 0a 20 20 20 20 ).......`(json-parse-buffer.....
98de0 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 20 20 20 20 20 ....:object-type.'plist.........
98e00 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 3a 66 61 6c 73 :null-object.:null.........:fals
98e20 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 72 65 71 75 69 e-object.:json-false).....(requi
98e40 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 6f 62 6a 65 63 re.'json).....(defvar.json-objec
98e60 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 6c 6c 29 0a 20 t-type).....(defvar.json-null)..
98e80 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 65 61 64 20 22 ...(declare-function.json-read."
98ea0 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 6f 62 6a 65 63 json".()).....`(let.((json-objec
98ec0 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 6a 73 6f 6e 2d t-type.'plist)............(json-
98ee0 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 61 64 29 29 29 null.:null)).......(json-read)))
98f00 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 61 64 2d 73 74 )..(defmacro.gptel--json-read-st
98f20 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 6a 73 6f 6e 2d ring.(str)...(if.(fboundp.'json-
98f40 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 70 61 72 73 65 parse-string).......`(json-parse
98f60 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 74 2d 74 79 70 -string.,str.........:object-typ
98f80 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 63 74 20 6e 69 e.'plist.........:null-object.ni
98fa0 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 6f 6e 2d 66 61 l.........:false-object.:json-fa
98fc0 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 20 20 28 64 65 lse).....(require.'json).....(de
98fe0 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 28 64 65 63 6c fvar.json-object-type).....(decl
99000 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 2d 73 74 72 69 are-function.json-read-from-stri
99020 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 73 6f 6e 2d 6f ng."json".()).....`(let.((json-o
99040 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 6a 73 6f 6e 2d bject-type.'plist)).......(json-
99060 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 28 64 65 66 6d read-from-string.,str))))..(defm
99080 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 6a 65 63 74 29 acro.gptel--json-encode.(object)
990a0 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 6c 69 7a 65 29 ...(if.(fboundp.'json-serialize)
990c0 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 6a 65 63 74 0a .......`(json-serialize.,object.
990e0 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 20 20 20 20 20 ........:null-object.:null......
99100 20 20 20 3a 66 61 6c 73 65 2d 6f 62 6a 65 63 74 20 3a 6a 73 6f 6e 2d 66 61 6c 73 65 29 0a 20 20 ...:false-object.:json-false)...
99120 20 20 28 72 65 71 75 69 72 65 20 27 6a 73 6f 6e 29 0a 20 20 20 20 28 64 65 66 76 61 72 20 6a 73 ..(require.'json).....(defvar.js
99140 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 6e 75 6c 6c 29 on-false).....(defvar.json-null)
99160 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 65 6e 63 6f .....(declare-function.json-enco
99180 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 65 74 20 28 28 de."json".(object)).....`(let.((
991a0 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 20 20 20 20 20 json-false.:json-false).........
991c0 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 20 20 28 6a 73 ...(json-null..:null)).......(js
991e0 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 75 6e 20 67 70 on-encode.,object))))..(defun.gp
99200 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 29 0a 20 20 22 tel--process-models.(models)..."
99220 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 73 79 6d 62 6f Convert.items.in.MODELS.to.symbo
99240 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 69 65 73 2e 22 ls.with.appropriate.properties."
99260 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 29 0a 20 20 20 ...(let.((models-processed))....
99280 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 20 20 20 28 63 .(dolist.(model.models).......(c
992a0 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 73 74 72 69 6e l-etypecase.model.........(strin
992c0 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 6c 73 2d 70 72 g.(push.(intern.model).models-pr
992e0 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 70 75 73 68 20 ocessed)).........(symbol.(push.
99300 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 20 20 20 20 20 model.models-processed))........
99320 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 74 75 72 69 6e .(cons..........(cl-destructurin
99340 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 0a 20 20 20 20 g-bind.(name...props).model.....
99360 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 6e 61 6d 65 29 .......(setf.(symbol-plist.name)
99380 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 20 4d 65 72 67 ..................;;.MAYBE:.Merg
993a0 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 69 73 20 73 61 ing.existing.symbol.plists.is.sa
993c0 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 20 20 20 20 20 fer,.but.makes.it...............
993e0 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 73 79 6d 62 6f ...;;.difficult.to.reset.a.symbo
99400 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 73 20 66 72 6f l.plist,.since.removing.keys.fro
99420 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 73 20 6f 70 70 m..................;;.it.(as.opp
99440 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 29 20 69 73 20 osed.to.setting.them.to.nil).is.
99460 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 20 3b 3b 0a 20 more.work...................;;..
99480 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 67 65 20 27 70 ................;;.(map-merge.'p
994a0 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 6f 70 73 29 0a list.(symbol-plist.name).props).
994c0 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 20 20 20 20 20 .................props).........
994e0 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 73 65 64 29 29 ...(push.name.models-processed))
99500 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 6f 63 65 73 73 ))).....(nreverse.models-process
99520 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 74 72 75 63 74 ed)))..;;;.Common.backend.struct
99540 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 74 65 6c 2d 2d .for.LLM.support.(defvar.gptel--
99560 6b 6e 6f 77 6e 2d 62 61 63 6b 65 6e 64 73 20 6e 69 6c 0a 20 20 22 41 6c 69 73 74 20 6f 66 20 4c known-backends.nil..."Alist.of.L
99580 4c 4d 20 62 61 63 6b 65 6e 64 73 20 6b 6e 6f 77 6e 20 74 6f 20 67 70 74 65 6c 2e 0a 0a 54 68 69 LM.backends.known.to.gptel...Thi
995a0 73 20 69 73 20 61 6e 20 61 6c 69 73 74 20 6d 61 70 70 69 6e 67 20 75 73 65 72 2d 70 72 6f 76 69 s.is.an.alist.mapping.user-provi
995c0 64 65 64 20 6e 61 6d 65 73 20 74 6f 20 62 61 63 6b 65 6e 64 20 73 74 72 75 63 74 73 2c 0a 73 65 ded.names.to.backend.structs,.se
995e0 65 20 60 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 27 2e 0a 0a 59 6f 75 20 63 61 6e 20 68 61 76 65 e.`gptel-backend'...You.can.have
99600 20 6d 6f 72 65 20 74 68 61 6e 20 6f 6e 65 20 62 61 63 6b 65 6e 64 20 70 6f 69 6e 74 69 6e 67 20 .more.than.one.backend.pointing.
99620 74 6f 20 74 68 65 20 73 61 6d 65 20 72 65 73 6f 75 72 63 65 0a 77 69 74 68 20 64 69 66 66 65 72 to.the.same.resource.with.differ
99640 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 65 6c 2d 67 65 ing.settings.")..(defun.gptel-ge
99660 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 67 70 74 65 6c t-backend.(name)..."Return.gptel
99680 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 61 6e 20 65 72 .backend.with.NAME...Throw.an.er
996a0 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 20 20 28 6f 72 ror.if.there.is.no.match."...(or
996c0 20 28 61 6c 69 73 74 2d 67 65 74 20 6e 61 6d 65 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 62 61 .(alist-get.name.gptel--known-ba
996e0 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 20 20 20 28 75 ckends.nil.nil.#'equal).......(u
99700 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 74 20 6b 6e 6f ser-error."Backend.%s.is.not.kno
99720 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 20 20 20 20 20 wn.to.be.defined"...............
99740 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 74 65 72 20 67 ....name)))..(gv-define-setter.g
99760 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 0a 20 20 60 28 ptel-get-backend.(val.name)...`(
99780 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 2d 2d 6b 6e 6f setf.(alist-get.,name.gptel--kno
997a0 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 20 23 27 65 71 wn-backends...........nil.t.#'eq
997c0 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 75 63 74 0a 20 ual).....,val))..(cl-defstruct..
997e0 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 63 74 6f 72 20 ...(gptel-backend.(:constructor.
99800 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 20 20 20 20 20 gptel--make-backend)............
99820 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 79 2d 62 61 63 ........(:copier.gptel--copy-bac
99840 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 72 6f 74 6f 63 kend))...name.host.header.protoc
99860 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 64 65 6c 73 20 ol.stream...endpoint.key.models.
99880 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 72 67 73 0a 20 url.request-params...curl-args..
998a0 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 6e 74 61 74 69 .(coding-system.nil.:documentati
998c0 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 69 66 20 74 68 on."Can.be.set.to.`binary'.if.th
998e0 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 20 6f 75 74 70 e.backend.expects.non.UTF-8.outp
99900 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 29 0a 28 63 6c ut."))..;;;.OpenAI.(ChatGPT).(cl
99920 2d 64 65 66 73 74 72 75 63 74 20 28 67 70 74 65 6c 2d 6f 70 65 6e 61 69 20 28 3a 63 6f 6e 73 74 -defstruct.(gptel-openai.(:const
99940 72 75 63 74 6f 72 20 67 70 74 65 6c 2d 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 29 0a 20 20 20 20 20 ructor.gptel--make-openai)......
99960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 3a 63 6f 70 69 65 72 20 .......................(:copier.
99980 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 nil)............................
999a0 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 3b 3b 20 .(:include.gptel-backend)))..;;.
999c0 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 77 6f 72 6b 73 How.the.following.function.works
999e0 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 72 6e 73 20 61 :.;;.;;.The.OpenAI.API.returns.a
99a00 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 63 68 20 64 61 .stream.of.data.chunks...Each.da
99a20 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 20 74 68 61 74 ta.chunk.has.a.;;.component.that
99a40 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 73 69 64 65 73 .can.be.parsed.as.JSON...Besides
99a60 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 3b 20 65 69 74 .metadata,.each.chunk.has.;;.eit
99a80 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 74 6f 6f 6c 20 her.some.text.or.part.of.a.tool.
99aa0 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 2c 20 77 65 20 call..;;.;;.If.we.find.text,.we.
99ac0 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 74 20 74 68 65 collect.it.in.a.list,.concat.the
99ae0 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 69 74 2e 0a 3b m.at.the.end.and.return.;;.it..;
99b00 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 6f 6f 6c 20 63 ;.;;.If.we.find.part.of.a.tool.c
99b20 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 65 20 70 69 65 all,.we.begin.collecting.the.pie
99b40 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 2e 0a 3b 3b 0a ces.in.;;.INFO.->.:tool-use..;;.
99b60 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 74 68 65 6d 73 ;;.Tool.call.arguments.are.thems
99b80 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 63 61 6e 20 62 elves.JSON.encoded.strings.can.b
99ba0 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 20 57 65 20 63 e.spread.across.;;.chunks...We.c
99bc0 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 74 69 61 6c 5f ollect.them.in.INFO.->.:partial_
99be0 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 6c 6c 0a 3b 3b json...The.end.of.a.tool.call.;;
99c00 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 69 6e 6e 69 6e .chunk.is.marked.by.the.beginnin
99c20 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 20 6f 66 20 74 g.of.another,.or.by.the.end.of.t
99c40 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 73 65 20 77 65 he.stream...In.;;.either.case.we
99c60 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 65 20 68 61 76 .flaten.the.:partial_json.we.hav
99c80 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 6f 6f 6c 0a 3b e.thus.far,.add.it.to.the.tool.;
99ca0 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 64 20 72 65 73 ;.call.spec.in.:tool-use.and.res
99cc0 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 68 65 20 74 6f et.it...Finally.we.append.the.to
99ce0 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 20 3a 64 61 74 ol.calls.to.the.;;.(INFO.->.:dat
99d00 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 6d 70 74 73 2e a.->.:messages).list.of.prompts.
99d20 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 2d 70 61 72 73 ..(cl-defmethod.gptel-curl--pars
99d40 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 70 65 6e 61 69 e-stream.((_backend.gptel-openai
99d60 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 41 50 49 20 64 ).info)..."Parse.an.OpenAI.API.d
99d80 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 74 20 72 65 73 ata.stream...Return.the.text.res
99da0 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 20 6c 61 73 74 ponse.accumulated.since.the.last
99dc0 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 64 69 74 69 6f .call.to.this.function...Additio
99de0 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 20 61 64 64 20 nally,.mutate.state.INFO.to.add.
99e00 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 20 73 74 72 65 tool-use.information.if.the.stre
99e20 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 63 6f 6e 74 65 am.contains.it."...(let*.((conte
99e40 6e 74 2d 73 74 72 73 29 29 0a 20 20 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20 6e 69 nt-strs)).....(condition-case.ni
99e60 6c 0a 20 20 20 20 20 20 20 20 28 77 68 69 6c 65 20 28 72 65 2d 73 65 61 72 63 68 2d 66 6f 72 77 l.........(while.(re-search-forw
99e80 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 20 20 20 28 73 ard."^data:".nil.t)...........(s
99ea0 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 28 69 66 20 28 ave-match-data.............(if.(
99ec0 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 20 20 20 20 20 looking-at.".*\\[DONE\\]")......
99ee0 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 73 20 65 6e 64 ...........;;.The.stream.has.end
99f00 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 74 68 69 6e 67 ed,.so.we.do.the.following.thing
99f20 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 20 20 20 20 20 .(if.we.found.tool.calls).......
99f40 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 6c 6c 73 20 69 ..........;;.-.pack.tool.calls.i
99f60 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 73 74 20 74 6f nto.the.messages.prompts.list.to
99f80 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 73 73 61 67 65 .send.(INFO.->.:data.->.:message
99fa0 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 6c 65 63 74 20 s).................;;.-.collect.
99fc0 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 72 65 6e 74 6c tool.calls.(formatted.differentl
99fe0 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 0a 20 20 20 20 y).into.(INFO.->.:tool-use).....
9a000 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 6f 6c 2d 75 73 ............(when-let*.((tool-us
9a020 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 29 29 0a 20 20 e.(plist-get.info.:tool-use))...
9a040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 72 67 73 20 ..........................(args.
9a060 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 70 6c 69 73 74 (apply.#'concat.(nreverse.(plist
9a080 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 0a 20 20 20 20 -get.info.:partial_json)))).....
9a0a0 20 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 20 28 70 ........................(func.(p
9a0c0 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 6e 63 74 69 6f list-get.(car.tool-use).:functio
9a0e0 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 73 74 2d 70 75 n)))...................(plist-pu
9a100 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 64 61 74 65 20 t.func.:arguments.args).;Update.
9a120 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 20 74 6f 6f 6c arguments.for.last.recorded.tool
9a140 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 69 6e 6a 65 63 ...................(gptel--injec
9a160 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 20 28 70 6c 69 t-prompt....................(pli
9a180 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 74 2d 67 65 74 st-get.info.:backend).(plist-get
9a1a0 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 20 20 20 20 20 .info.:data)....................
9a1c0 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 74 20 3a 6e 75 `(:role."assistant".:content.:nu
9a1e0 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 6f 6c 2d 75 73 ll.:tool_calls.,(vconcat.tool-us
9a200 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 20 20 20 20 20 e))).;.:refusal.:null...........
9a220 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 20 ........(cl-loop................
9a240 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 73 65 20 3b 20 ....for.tool-call.in.tool-use.;.
9a260 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 72 20 72 75 6e Construct.the.call.specs.for.run
9a280 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 20 20 20 20 20 ning.the.function.calls.........
9a2a0 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 74 2d 67 65 74 ...........for.spec.=.(plist-get
9a2c0 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 20 20 20 20 20 .tool-call.:function)...........
9a2e0 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 28 70 6c 69 73 .........collect.(list.:id.(plis
9a300 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 20 20 20 20 20 t-get.tool-call.:id)............
9a320 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 28 70 6c 69 ......................:name.(pli
9a340 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 20 20 20 20 20 st-get.spec.:name)..............
9a360 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 69 67 6e 6f 72 ....................:args.(ignor
9a380 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 73 74 72 69 6e e-errors.(gptel--json-read-strin
9a3a0 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 20 g...............................
9a3c0 20 20 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-
9a3e0 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 20 20 20 20 20 get.spec.:arguments)))).........
9a400 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 20 20 20 20 20 ...........into.call-specs......
9a420 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 74 2d 70 75 74 ..............finally.(plist-put
9a440 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 29 29 0a 20 20 .info.:tool-use.call-specs)))...
9a460 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 73 70 6f 6e 73 ............(when-let*.((respons
9a480 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 20 20 20 20 20 e.(gptel--json-read))...........
9a4a0 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 2d 6e 65 73 74 ................(delta.(map-nest
9a4c0 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 30 20 3a 64 65 ed-elt.response.'(:choices.0.:de
9a4e0 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 2d 6c 65 74 2a lta)))).................(if-let*
9a500 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 20 3a 63 6f 6e .((content.(plist-get.delta.:con
9a520 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 20 20 20 20 20 tent))..........................
9a540 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 6c 29 20 28 73 .((not.(or.(eq.content.:null).(s
9a560 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 20 20 20 20 20 tring-empty-p.content)))))......
9a580 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 74 20 63 6f 6e ...............(push.content.con
9a5a0 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 20 20 3b 3b 20 tent-strs)...................;;.
9a5c0 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 72 20 74 6f 6f No.text.content,.so.look.for.too
9a5e0 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 77 68 65 6e 2d l.calls...................(when-
9a600 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 64 2d 65 6c 74 let*.((tool-call.(map-nested-elt
9a620 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 20 20 20 20 20 .delta.'(:tool_calls.0))).......
9a640 20 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 20 28 70 ........................(func.(p
9a660 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 6e 29 29 29 0a list-get.tool-call.:function))).
9a680 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 70 6c 69 73 74 2d 67 ....................(if.(plist-g
9a6a0 65 74 20 66 75 6e 63 20 3a 6e 61 6d 65 29 20 3b 6e 65 77 20 74 6f 6f 6c 20 62 6c 6f 63 6b 20 62 et.func.:name).;new.tool.block.b
9a6c0 65 67 69 6e 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 egins.........................(p
9a6e0 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 20 20 20 20 28 rogn...........................(
9a700 77 68 65 6e 2d 6c 65 74 2a 20 28 28 70 61 72 74 69 61 6c 20 28 70 6c 69 73 74 2d 67 65 74 20 69 when-let*.((partial.(plist-get.i
9a720 6e 66 6f 20 3a 70 61 72 74 69 61 6c 5f 6a 73 6f 6e 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 nfo.:partial_json)))............
9a740 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 70 72 65 76 2d 74 6f .................(let*.((prev-to
9a760 6f 6c 2d 63 61 6c 6c 20 28 63 61 72 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 74 6f ol-call.(car.(plist-get.info.:to
9a780 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 20 20 20 20 ol-use))).......................
9a7a0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 65 76 2d 66 75 6e 63 20 28 70 6c 69 73 74 2d 67 .............(prev-func.(plist-g
9a7c0 65 74 20 70 72 65 76 2d 74 6f 6f 6c 2d 63 61 6c 6c 20 3a 66 75 6e 63 74 69 6f 6e 29 29 29 0a 20 et.prev-tool-call.:function)))..
9a7e0 20 20 20 20 20 20 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 .............................(pl
9a800 69 73 74 2d 70 75 74 20 70 72 65 76 2d 66 75 6e 63 20 3a 61 72 67 75 6d 65 6e 74 73 20 3b 75 70 ist-put.prev-func.:arguments.;up
9a820 64 61 74 65 20 61 72 67 73 20 66 6f 72 20 6f 6c 64 20 74 6f 6f 6c 20 62 6c 6f 63 6b 0a 20 20 20 date.args.for.old.tool.block....
9a840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
9a860 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 65 72 73 65 20 ......(apply.#'concat.(nreverse.
9a880 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 6e 29 29 29 (plist-get.info.:partial_json)))
9a8a0 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 )).............................(
9a8c0 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 73 6f 6e 20 6e 69 6c plist-put.info.:partial_json.nil
9a8e0 29 29 20 3b 63 6c 65 61 72 20 6f 75 74 20 66 69 6e 69 73 68 65 64 20 63 68 61 69 6e 20 6f 66 20 )).;clear.out.finished.chain.of.
9a900 70 61 72 74 69 61 6c 20 61 72 67 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 partial.args....................
9a920 20 20 20 20 20 20 20 3b 3b 20 53 74 61 72 74 20 6e 65 77 20 63 68 61 69 6e 20 6f 66 20 70 61 72 .......;;.Start.new.chain.of.par
9a940 74 69 61 6c 20 61 72 67 75 6d 65 6e 74 20 73 74 72 69 6e 67 73 0a 20 20 20 20 20 20 20 20 20 20 tial.argument.strings...........
9a960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 ................(plist-put.info.
9a980 3a 70 61 72 74 69 61 6c 5f 6a 73 6f 6e 20 28 6c 69 73 74 20 28 70 6c 69 73 74 2d 67 65 74 20 66 :partial_json.(list.(plist-get.f
9a9a0 75 6e 63 20 3a 61 72 67 75 6d 65 6e 74 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 unc.:arguments)))...............
9a9c0 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 4e 4f 54 45 3a 20 44 6f 20 4e 4f 54 20 75 73 65 20 ............;;.NOTE:.Do.NOT.use.
9a9e0 60 70 75 73 68 27 20 66 6f 72 20 74 68 69 73 2c 20 69 74 20 70 72 65 70 65 6e 64 73 20 61 6e 64 `push'.for.this,.it.prepends.and
9aa00 20 77 65 20 6c 6f 73 65 20 74 68 65 20 72 65 66 65 72 65 6e 63 65 0a 20 20 20 20 20 20 20 20 20 .we.lose.the.reference..........
9aa20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f .................(plist-put.info
9aa40 20 3a 74 6f 6f 6c 2d 75 73 65 20 28 63 6f 6e 73 20 74 6f 6f 6c 2d 63 61 6c 6c 20 28 70 6c 69 73 .:tool-use.(cons.tool-call.(plis
9aa60 74 2d 67 65 74 20 69 6e 66 6f 20 3a 74 6f 6f 6c 2d 75 73 65 29 29 29 29 0a 20 20 20 20 20 20 20 t-get.info.:tool-use))))........
9aa80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 6f 6c 64 20 74 6f 6f 6c 20 62 6c 6f 63 6b ...............;;.old.tool.block
9aaa0 20 63 6f 6e 74 69 6e 75 65 73 2c 20 73 6f 20 63 6f 6e 74 69 6e 75 65 20 63 6f 6c 6c 65 63 74 69 .continues,.so.continue.collecti
9aac0 6e 67 20 61 72 67 75 6d 65 6e 74 73 20 69 6e 20 3a 70 61 72 74 69 61 6c 5f 6a 73 6f 6e 20 0a 20 ng.arguments.in.:partial_json...
9aae0 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 70 6c 69 73 .....................(push.(plis
9ab00 74 2d 67 65 74 20 66 75 6e 63 20 3a 61 72 67 75 6d 65 6e 74 73 29 20 28 70 6c 69 73 74 2d 67 65 t-get.func.:arguments).(plist-ge
9ab20 74 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 t.info.:partial_json))))).......
9ab40 20 20 20 20 20 20 20 20 20 20 3b 3b 20 43 68 65 63 6b 20 66 6f 72 20 72 65 61 73 6f 6e 69 6e 67 ..........;;.Check.for.reasoning
9ab60 20 62 6c 6f 63 6b 73 2c 20 63 75 72 72 65 6e 74 6c 79 20 6f 6e 6c 79 20 75 73 65 64 20 62 79 20 .blocks,.currently.only.used.by.
9ab80 4f 70 65 6e 72 6f 75 74 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 4d 41 Openrouter.................;;.MA
9aba0 59 42 45 3a 20 53 68 6f 75 6c 64 20 74 68 69 73 20 62 65 20 6d 6f 76 65 64 20 74 6f 20 61 20 64 YBE:.Should.this.be.moved.to.a.d
9abc0 65 64 69 63 61 74 65 64 20 4f 70 65 6e 72 6f 75 74 65 72 20 62 61 63 6b 65 6e 64 3f 0a 20 20 20 edicated.Openrouter.backend?....
9abe0 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 65 71 20 28 70 6c .............(unless.(or.(eq.(pl
9ac00 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).'
9ac20 64 6f 6e 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 done)...........................
9ac40 20 20 28 6e 6f 74 20 28 70 6c 69 73 74 2d 6d 65 6d 62 65 72 20 64 65 6c 74 61 20 3a 72 65 61 73 ..(not.(plist-member.delta.:reas
9ac60 6f 6e 69 6e 67 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 2d 6c oning)))...................(if-l
9ac80 65 74 2a 20 28 28 72 65 61 73 6f 6e 69 6e 67 2d 63 68 75 6e 6b 20 28 70 6c 69 73 74 2d 67 65 74 et*.((reasoning-chunk.(plist-get
9aca0 20 64 65 6c 74 61 20 3a 72 65 61 73 6f 6e 69 6e 67 29 29 20 3b 66 6f 72 20 6f 70 65 6e 72 6f 75 .delta.:reasoning)).;for.openrou
9acc0 74 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 ter.............................
9ace0 28 28 6e 6f 74 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 ((not.(eq.reasoning-chunk.:null)
9ad00 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
9ad20 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............
9ad40 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
9ad60 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 72 65 61 73 6f 6e list-get.info.:reasoning).reason
9ad80 69 6e 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 ing-chunk)).....................
9ada0 3b 3b 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 ;;.Done.with.reasoning.if.we.get
9adc0 20 6e 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 .non-empty.content..............
9ade0 20 20 20 20 20 20 20 28 69 66 2d 6c 65 74 2a 20 28 28 63 20 28 70 6c 69 73 74 2d 67 65 74 20 64 .......(if-let*.((c.(plist-get.d
9ae00 65 6c 74 61 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 elta.:content)).................
9ae20 20 20 20 20 20 20 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 ..............((not.(or.(eq.c.:n
9ae40 75 6c 6c 29 20 28 73 74 72 69 6e 67 2d 65 6d 70 74 79 2d 70 20 63 29 29 29 29 29 0a 20 20 20 20 ull).(string-empty-p.c))))).....
9ae60 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 70 6c 69 73 74 2d 6d ....................(if.(plist-m
9ae80 65 6d 62 65 72 20 69 6e 66 6f 20 3a 72 65 61 73 6f 6e 69 6e 67 29 20 3b 49 73 20 74 68 69 73 20 ember.info.:reasoning).;Is.this.
9aea0 61 20 72 65 61 73 6f 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 a.reasoning.model?..............
9aec0 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.:
9aee0 72 65 61 73 6f 6e 69 6e 67 2d 62 6c 6f 63 6b 20 74 29 20 3b 45 6e 64 20 6f 66 20 73 74 72 65 61 reasoning-block.t).;End.of.strea
9af00 6d 69 6e 67 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 20 20 20 ming.reasoning.block............
9af20 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.:
9af40 72 65 61 73 6f 6e 69 6e 67 2d 62 6c 6f 63 6b 20 27 64 6f 6e 65 29 29 29 29 29 29 29 29 29 20 3b reasoning-block.'done))))))))).;
9af60 4e 6f 74 20 75 73 69 6e 67 20 61 20 72 65 61 73 6f 6e 69 6e 67 20 6d 6f 64 65 6c 0a 20 20 20 20 Not.using.a.reasoning.model.....
9af80 20 20 28 65 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 ..(error.(goto-char.(match-begin
9afa0 6e 69 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 ning.0)))).....(apply.#'concat.(
9afc0 6e 72 65 76 65 72 73 65 20 63 6f 6e 74 65 6e 74 2d 73 74 72 73 29 29 29 29 0a 0a 28 63 6c 2d 64 nreverse.content-strs))))..(cl-d
9afe0 65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 72 65 73 70 6f 6e 73 65 20 28 efmethod.gptel--parse-response.(
9b000 28 5f 62 61 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 (_backend.gptel-openai).response
9b020 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 28 6e 6f 6e 2d 73 .info)..."Parse.an.OpenAI.(non-s
9b040 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 75 72 6e 20 72 65 treaming).RESPONSE.and.return.re
9b060 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 20 49 4e 46 4f 20 sponse.text...Mutate.state.INFO.
9b080 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 20 28 6c 65 74 2a with.response.metadata."...(let*
9b0a0 20 28 28 63 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 .((choice0.(map-nested-elt.respo
9b0c0 6e 73 65 20 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 nse.'(:choices.0)))..........(me
9b0e0 73 73 61 67 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 ssage.(plist-get.choice0.:messag
9b100 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 67 65 74 e))..........(content.(plist-get
9b120 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 70 6c 69 73 74 2d .message.:content))).....(plist-
9b140 70 75 74 20 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 put.info.:stop-reason...........
9b160 20 20 20 20 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 .....(plist-get.choice0.:finish_
9b180 72 65 61 73 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 reason)).....(plist-put.info.:ou
9b1a0 74 70 75 74 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 tput-tokens................(map-
9b1c0 6e 65 73 74 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 nested-elt.response.'(:usage.:co
9b1e0 6d 70 6c 65 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 mpletion_tokens))).....;;.OpenAI
9b200 20 72 65 74 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 .returns.either.non-blank.text.c
9b220 6f 6e 74 65 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 ontent.or.a.tool.call,.not.both.
9b240 0a 20 20 20 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 .....;;.However.OpenAI-compatibl
9b260 65 20 41 50 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 e.APIs.like.llama.cpp.can.includ
9b280 65 20 62 6f 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 e.both.(#819),.so.....;;.we.chec
9b2a0 6b 20 66 6f 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 k.for.both.tool.calls.and.respon
9b2c0 73 65 73 20 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 ses.independently......(when-let
9b2e0 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 65 73 73 61 67 *.((tool-calls.(plist-get.messag
9b300 65 20 3a 74 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 e.:tool_calls)).................
9b320 28 28 6e 6f 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 ((not.(eq.tool-calls.:null))))..
9b340 20 20 20 20 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 .....(gptel--inject-prompt......
9b360 20 20 3b 20 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 ..;.First.add.the.tool.call.to.t
9b380 68 65 20 70 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 he.prompts.list........(plist-ge
9b3a0 74 20 69 6e 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 t.info.:backend).(plist-get.info
9b3c0 20 3a 64 61 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 .:data).message).......(cl-loop.
9b3e0 20 20 20 20 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 ............;Then.capture.the.to
9b400 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 68 65 20 74 6f 6f ol.call.data.for.running.the.too
9b420 6c 0a 20 20 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 l........for.tool-call.across.to
9b440 6f 6c 2d 63 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 ol-calls..;replace.":arguments".
9b460 77 69 74 68 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 with.":args"........for.call-spe
9b480 63 20 3d 20 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 c.=.(copy-sequence.(plist-get.to
9b4a0 6f 6c 2d 63 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 ol-call.:function))........do.(i
9b4c0 67 6e 6f 72 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 gnore-errors.(plist-put.call-spe
9b4e0 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 20 20 20 20 20 20 20 c.:args.........................
9b500 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 6a 73 6f 6e 2d 72 65 61 64 2d 73 74 ............(gptel--json-read-st
9b520 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 20 ring............................
9b540 20 20 20 20 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 ..........(plist-get.call-spec.:
9b560 61 72 67 75 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 arguments))))........(plist-put.
9b580 63 61 6c 6c 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 call-spec.:arguments.nil).......
9b5a0 20 28 70 6c 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 .(plist-put.call-spec.:id.(plist
9b5c0 2d 67 65 74 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 -get.tool-call.:id))........coll
9b5e0 65 63 74 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 ect.call-spec.into.tool-use.....
9b600 20 20 20 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 ...finally.(plist-put.info.:tool
9b620 2d 75 73 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 -use.tool-use))).....(when.(and.
9b640 63 6f 6e 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 content.(not.(or.(eq.content.:nu
9b660 6c 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 0a ll).(string-empty-p.content)))).
9b680 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 28 70 6c ......(when-let*.((reasoning.(pl
9b6a0 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 29 20 3b 6c 6f ist-get.message.:reasoning)).;lo
9b6c0 6f 6b 20 66 6f 72 20 72 65 61 73 6f 6e 69 6e 67 20 62 6c 6f 63 6b 73 0a 20 20 20 20 20 20 20 20 ok.for.reasoning.blocks.........
9b6e0 20 20 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 ..........((and.(stringp.reasoni
9b700 6e 67 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 ng).(not.(string-empty-p.reasoni
9b720 6e 67 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 ng))))).........(plist-put.info.
9b740 3a 72 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 :reasoning.reasoning)).......con
9b760 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 65 6c 2d 2d 72 65 tent)))..(cl-defmethod.gptel--re
9b780 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 6f 70 65 6e 61 quest-data.((backend.gptel-opena
9b7a0 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 50 52 4f 4d 50 i).prompts)..."JSON.encode.PROMP
9b7c0 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 77 TS.for.sending.to.ChatGPT."...(w
9b7e0 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 20 20 20 28 70 hen.gptel--system-message.....(p
9b800 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 20 20 20 20 20 ush.(list.:role."system"........
9b820 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 73 74 65 6d 2d .........:content.gptel--system-
9b840 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 29 0a 20 20 28 message)...........prompts))...(
9b860 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..........`(:
9b880 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-
9b8a0 6d 6f 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 model)............:messages.[,@p
9b8c0 72 6f 6d 70 74 73 5d 0a 20 20 20 20 20 20 20 20 20 20 20 3a 73 74 72 65 61 6d 20 2c 28 6f 72 20 rompts]............:stream.,(or.
9b8e0 67 70 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 gptel-stream.:json-false))).....
9b900 20 20 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 ....(reasoning-model-p.;.TODO:.E
9b920 6d 62 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 mbed.this.capability.in.the.mode
9b940 6c 27 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 l's.properties..........(memq.gp
9b960 74 65 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 tel-model.'(o1.o1-preview.o1-min
9b980 69 20 6f 33 2d 6d 69 6e 69 20 6f 33 20 6f 34 2d 6d 69 6e 69 29 29 29 29 0a 20 20 20 20 28 77 68 i.o3-mini.o3.o4-mini)))).....(wh
9b9a0 65 6e 20 28 61 6e 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 en.(and.gptel-temperature.(not.r
9b9c0 65 61 73 6f 6e 69 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 easoning-model-p)).......(plist-
9b9e0 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 20 67 put.prompts-plist.:temperature.g
9ba00 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 70 74 ptel-temperature)).....(when.gpt
9ba20 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 70 74 el-use-tools.......(when.(eq.gpt
9ba40 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 70 6c el-use-tools.'force).........(pl
9ba60 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 6f 69 ist-put.prompts-plist.:tool_choi
9ba80 63 65 20 22 72 65 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 ce."required")).......(when.gpte
9baa0 6c 2d 74 6f 6f 6c 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 l-tools.........(plist-put.promp
9bac0 74 73 2d 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 ts-plist.:tools.................
9bae0 20 20 20 28 67 70 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 ...(gptel--parse-tools.backend.g
9bb00 70 74 65 6c 2d 74 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 ptel-tools)).........(unless.rea
9bb20 73 6f 6e 69 6e 67 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 soning-model-p...........(plist-
9bb40 70 75 74 20 70 72 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 put.prompts-plist.:parallel_tool
9bb60 5f 63 61 6c 6c 73 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 _calls.t)))).....(when.gptel-max
9bb80 2d 74 6f 6b 65 6e 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 -tokens.......;;.HACK:.The.OpenA
9bba0 49 20 41 50 49 20 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 I.API.has.deprecated.max_tokens,
9bbc0 20 62 75 74 20 77 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 .but.we.still.need.it.......;;.f
9bbe0 6f 72 20 4f 70 65 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 or.OpenAI-compatible.APIs.like.G
9bc00 50 54 34 41 6c 6c 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 PT4All.(#485).......(plist-put.p
9bc20 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 28 69 rompts-plist..................(i
9bc40 66 20 72 65 61 73 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 f.reasoning-model-p.:max_complet
9bc60 69 6f 6e 5f 74 6f 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 ion_tokens.:max_tokens).........
9bc80 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 6d 61 78 2d 74 6f 6b 65 6e 73 29 29 0a 20 20 20 20 .........gptel-max-tokens)).....
9bca0 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 64 ;;.Merge.request.params.with.mod
9bcc0 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 65 el.and.backend.params......(gpte
9bce0 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 69 l--merge-plists......prompts-pli
9bd00 73 74 0a 20 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 st......(gptel-backend-request-p
9bd20 61 72 61 6d 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 arams.gptel-backend)......(gptel
9bd40 2d 2d 6d 6f 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 --model-request-params..gptel-mo
9bd60 64 65 6c 29 29 29 29 0a 0a 3b 3b 20 4e 4f 54 45 3a 20 4e 6f 20 60 67 70 74 65 6c 2d 2d 70 61 72 del))))..;;.NOTE:.No.`gptel--par
9bd80 73 65 2d 74 6f 6f 6c 73 27 20 6d 65 74 68 6f 64 20 72 65 71 75 69 72 65 64 20 66 6f 72 20 67 70 se-tools'.method.required.for.gp
9bda0 74 65 6c 2d 6f 70 65 6e 61 69 2c 20 73 69 6e 63 65 20 74 68 69 73 20 69 73 0a 3b 3b 20 68 61 6e tel-openai,.since.this.is.;;.han
9bdc0 64 6c 65 64 20 62 79 20 69 74 73 20 64 65 66 67 65 6e 65 72 69 63 20 69 6d 70 6c 65 6d 65 6e 74 dled.by.its.defgeneric.implement
9bde0 61 74 69 6f 6e 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 ation..(cl-defmethod.gptel--pars
9be00 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 67 70 74 65 6c 2d e-tool-results.((_backend.gptel-
9be20 6f 70 65 6e 61 69 29 20 74 6f 6f 6c 2d 75 73 65 29 0a 20 20 22 52 65 74 75 72 6e 20 61 20 70 72 openai).tool-use)..."Return.a.pr
9be40 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 6c 74 ompt.containing.tool.call.result
9be60 73 20 69 6e 20 54 4f 4f 4c 2d 55 53 45 2e 22 0a 20 20 3b 3b 20 28 64 65 63 6c 61 72 65 20 28 73 s.in.TOOL-USE."...;;.(declare.(s
9be80 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 6d 61 70 63 61 72 0a 20 20 ide-effect-free.t))...(mapcar...
9bea0 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 28 6c 69 73 74 0a .(lambda.(tool-call)......(list.
9bec0 20 20 20 20 20 20 3a 72 6f 6c 65 20 22 74 6f 6f 6c 22 0a 20 20 20 20 20 20 3a 74 6f 6f 6c 5f 63 ......:role."tool".......:tool_c
9bee0 61 6c 6c 5f 69 64 20 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 all_id.(plist-get.tool-call.:id)
9bf00 0a 20 20 20 20 20 20 3a 63 6f 6e 74 65 6e 74 20 28 70 6c 69 73 74 2d 67 65 74 20 74 6f 6f 6c 2d .......:content.(plist-get.tool-
9bf20 63 61 6c 6c 20 3a 72 65 73 75 6c 74 29 29 29 0a 20 20 20 74 6f 6f 6c 2d 75 73 65 29 29 0a 0a 3b call.:result)))....tool-use))..;
9bf40 3b 20 54 4f 44 4f 3a 20 52 65 6d 6f 76 65 20 74 68 65 73 65 20 66 75 6e 63 74 69 6f 6e 73 20 28 ;.TODO:.Remove.these.functions.(
9bf60 23 37 39 32 29 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 6f 70 65 6e 61 69 2d 66 6f 72 6d 61 #792).(defun.gptel--openai-forma
9bf80 74 2d 74 6f 6f 6c 2d 69 64 20 28 74 6f 6f 6c 2d 69 64 29 0a 20 20 22 46 6f 72 6d 61 74 20 54 4f t-tool-id.(tool-id)..."Format.TO
9bfa0 4f 4c 2d 49 44 20 66 6f 72 20 4f 70 65 6e 41 49 2e 0a 0a 49 66 20 74 68 65 20 49 44 20 68 61 73 OL-ID.for.OpenAI...If.the.ID.has
9bfc0 20 74 68 65 20 66 6f 72 6d 61 74 20 75 73 65 64 20 62 79 20 61 20 64 69 66 66 65 72 65 6e 74 20 .the.format.used.by.a.different.
9bfe0 62 61 63 6b 65 6e 64 2c 20 75 73 65 20 61 73 2d 69 73 2e 22 0a 20 20 28 75 6e 6c 65 73 73 20 74 backend,.use.as-is."...(unless.t
9c000 6f 6f 6c 2d 69 64 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 ool-id.....(setq.tool-id.(substr
9c020 69 6e 67 0a 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 ing....................(md5.(for
9c040 6d 61 74 20 22 25 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 mat."%s%s".(random).(float-time)
9c060 29 29 0a 20 20 20 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 ))....................nil.24))).
9c080 20 20 28 69 66 20 28 6f 72 20 28 73 74 72 69 6e 67 2d 70 72 65 66 69 78 2d 70 20 22 74 6f 6f 6c ..(if.(or.(string-prefix-p."tool
9c0a0 75 5f 22 20 74 6f 6f 6c 2d 69 64 29 20 3b 23 37 34 37 0a 20 20 20 20 20 20 20 20 20 20 28 73 74 u_".tool-id).;#747...........(st
9c0c0 72 69 6e 67 2d 70 72 65 66 69 78 2d 70 20 22 63 61 6c 6c 5f 22 20 20 74 6f 6f 6c 2d 69 64 29 29 ring-prefix-p."call_"..tool-id))
9c0e0 0a 20 20 20 20 20 20 74 6f 6f 6c 2d 69 64 0a 20 20 20 20 28 66 6f 72 6d 61 74 20 22 63 61 6c 6c .......tool-id.....(format."call
9c100 5f 25 73 22 20 74 6f 6f 6c 2d 69 64 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 6f _%s".tool-id)))..(defun.gptel--o
9c120 70 65 6e 61 69 2d 75 6e 66 6f 72 6d 61 74 2d 74 6f 6f 6c 2d 69 64 20 28 74 6f 6f 6c 2d 69 64 29 penai-unformat-tool-id.(tool-id)
9c140 0a 20 20 28 6f 72 20 28 61 6e 64 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 20 22 63 61 6c 6c 5f ...(or.(and.(string-match."call_
9c160 5c 5c 28 2e 2b 5c 5c 29 22 20 74 6f 6f 6c 2d 69 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 6d \\(.+\\)".tool-id)............(m
9c180 61 74 63 68 2d 73 74 72 69 6e 67 20 31 20 74 6f 6f 6c 2d 69 64 29 29 0a 20 20 20 20 20 20 74 6f atch-string.1.tool-id)).......to
9c1a0 6f 6c 2d 69 64 29 29 0a 0a 3b 3b 20 4e 4f 54 45 3a 20 4e 6f 20 60 67 70 74 65 6c 2d 2d 69 6e 6a ol-id))..;;.NOTE:.No.`gptel--inj
9c1c0 65 63 74 2d 70 72 6f 6d 70 74 27 20 6d 65 74 68 6f 64 20 72 65 71 75 69 72 65 64 20 66 6f 72 20 ect-prompt'.method.required.for.
9c1e0 67 70 74 65 6c 2d 6f 70 65 6e 61 69 2c 20 73 69 6e 63 65 20 74 68 69 73 0a 3b 3b 20 69 73 20 68 gptel-openai,.since.this.;;.is.h
9c200 61 6e 64 6c 65 64 20 62 79 20 69 74 73 20 64 65 66 67 65 6e 65 72 69 63 20 69 6d 70 6c 65 6d 65 andled.by.its.defgeneric.impleme
9c220 6e 74 61 74 69 6f 6e 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 ntation..(cl-defmethod.gptel--pa
9c240 72 73 65 2d 6c 69 73 74 20 28 28 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 6f 70 65 6e 61 69 29 rse-list.((backend.gptel-openai)
9c260 20 70 72 6f 6d 70 74 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 .prompt-list)...(if.(consp.(car.
9c280 70 72 6f 6d 70 74 2d 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 prompt-list)).......(let.((full-
9c2a0 70 72 6f 6d 70 74 29 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 prompt))..............;.Advanced
9c2c0 20 66 6f 72 6d 61 74 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 .format,.list.of.lists.........(
9c2e0 64 6f 6c 69 73 74 20 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 dolist.(entry.prompt-list)......
9c300 20 20 20 20 20 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 28 60 .....(pcase.entry.............(`
9c320 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 28 70 75 (prompt...,msg)..............(pu
9c340 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 28 sh.(list.:role."user".:content.(
9c360 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 6c 2d 70 72 6f or.(car-safe.msg).msg)).full-pro
9c380 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 6e 73 65 20 2e 20 mpt)).............(`(response...
9c3a0 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 74 20 3a ,msg)..............(push.(list.:
9c3c0 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 28 6f 72 20 28 63 role."assistant".:content.(or.(c
9c3e0 61 72 2d 73 61 66 65 20 6d 73 67 29 20 6d 73 67 29 29 20 66 75 6c 6c 2d 70 72 6f 6d 70 74 29 29 ar-safe.msg).msg)).full-prompt))
9c400 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 20 .............(`(tool...,call)...
9c420 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 20 63 61 ...........(unless.(plist-get.ca
9c440 6c 6c 20 3a 69 64 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 ll.:id)................(plist-pu
9c460 74 20 63 61 6c 6c 20 3a 69 64 20 28 67 70 74 65 6c 2d 2d 6f 70 65 6e 61 69 2d 66 6f 72 6d 61 74 t.call.:id.(gptel--openai-format
9c480 2d 74 6f 6f 6c 2d 69 64 20 6e 69 6c 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 -tool-id.nil)))..............(pu
9c4a0 73 68 0a 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 sh...............(list..........
9c4c0 20 20 20 20 20 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 ......:role."assistant".........
9c4e0 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 20 20 20 20 20 20 .......:tool_calls..............
9c500 20 20 28 76 65 63 74 6f 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 ..(vector.................(list.
9c520 3a 74 79 70 65 20 22 66 75 6e 63 74 69 6f 6e 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :type."function"................
9c540 20 20 20 20 20 20 20 3a 69 64 20 28 70 6c 69 73 74 2d 67 65 74 20 63 61 6c 6c 20 3a 69 64 29 0a .......:id.(plist-get.call.:id).
9c560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 66 75 6e 63 74 69 6f 6e 20 ......................:function.
9c580 60 28 20 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 `(.:name.,(plist-get.call.:name)
9c5a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
9c5c0 20 20 20 20 3a 61 72 67 75 6d 65 6e 74 73 20 2c 28 67 70 74 65 6c 2d 2d 6a 73 6f 6e 2d 65 6e 63 ....:arguments.,(gptel--json-enc
9c5e0 6f 64 65 20 28 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 29 0a ode.(plist-get.call.:args)))))).
9c600 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 0a 20 20 20 20 20 ..............full-prompt)......
9c620 20 20 20 20 20 20 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 ........(push.(car.(gptel--parse
9c640 2d 74 6f 6f 6c 2d 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 -tool-results.backend.(list.(cdr
9c660 20 65 6e 74 72 79 29 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 .entry)))).full-prompt))))......
9c680 20 20 20 28 6e 72 65 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 ...(nreverse.full-prompt)).....(
9c6a0 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 2d 6c 69 73 74 20 cl-loop.for.text.in.prompt-list.
9c6c0 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 20 73 74 72 69 ...;.Simple.format,.list.of.stri
9c6e0 6e 67 73 0a 20 20 20 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 ngs..............for.role.=.t.th
9c700 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 20 20 69 66 20 74 65 en.(not.role)..............if.te
9c720 78 74 20 63 6f 6c 6c 65 63 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 3a 72 xt.collect..............(list.:r
9c740 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 22 29 ole.(if.role."user"."assistant")
9c760 20 3a 63 6f 6e 74 65 6e 74 20 74 65 78 74 29 29 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f .:content.text))))..(cl-defmetho
9c780 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 6b 65 6e 64 20 d.gptel--parse-buffer.((backend.
9c7a0 67 70 74 65 6c 2d 6f 70 65 6e 61 69 29 20 26 6f 70 74 69 6f 6e 61 6c 20 6d 61 78 2d 65 6e 74 72 gptel-openai).&optional.max-entr
9c7c0 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 76 2d 70 74 20 ies)...(let.((prompts).(prev-pt.
9c7e0 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 2d 6d 6f 64 65 (point))).....(if.(or.gptel-mode
9c800 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 20 20 20 20 28 .gptel-track-response).........(
9c820 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 72 69 65 73 29 while.(and.(or.(not.max-entries)
9c840 20 28 3e 3d 20 6d 61 78 2d 65 6e 74 72 69 65 73 20 30 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 .(>=.max-entries.0))............
9c860 20 20 20 20 20 20 20 20 20 28 2f 3d 20 70 72 65 76 2d 70 74 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 .........(/=.prev-pt.(point-min)
9c880 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 68 61 72 ).....................(goto-char
9c8a0 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 61 6e 67 .(previous-single-property-chang
9c8c0 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...............................
9c8e0 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 69 6e 29 ..(point).'gptel.nil.(point-min)
9c900 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 63 68 61 72 2d 70 )))...........(pcase.(get-char-p
9c920 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 20 20 20 20 20 20 roperty.(point).'gptel).........
9c940 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 28 77 68 65 ....('response..............(whe
9c960 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 72 69 6d 2d 70 72 n-let*.((content.(gptel--trim-pr
9c980 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 20 20 20 efixes..........................
9c9a0 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
9c9c0 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 29 29 29 0a 20 20 roperties.(point).prev-pt))))...
9c9e0 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 22 .............(push.(list.:role."
9ca00 61 73 73 69 73 74 61 6e 74 22 20 3a 63 6f 6e 74 65 6e 74 20 63 6f 6e 74 65 6e 74 29 20 70 72 6f assistant".:content.content).pro
9ca20 6d 70 74 73 29 29 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 69 mpts))).............(`(tool...,i
9ca40 64 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 0a d)..............(save-excursion.
9ca60 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 6e ...............(condition-case.n
9ca80 69 6c 0a 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 74 6f il....................(let*.((to
9caa0 6f 6c 2d 63 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 ol-call.(read.(current-buffer)))
9cac0 0a 20 20 20 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 61 6d 65 ...........................(name
9cae0 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 0a 20 20 .(plist-get.tool-call.:name))...
9cb00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 72 67 75 6d 65 6e ........................(argumen
9cb20 74 73 20 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 ts.(gptel--json-encode.(plist-ge
9cb40 74 20 74 6f 6f 6c 2d 63 61 6c 6c 20 3a 61 72 67 73 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 t.tool-call.:args))))...........
9cb60 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.
9cb80 3a 69 64 20 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 28 70 6c :id.id)......................(pl
9cba0 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 20 20 20 20 20 ist-put.tool-call.:result.......
9cbc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e ..........................(strin
9cbe0 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 2d 70 72 6f 70 g-trim.(buffer-substring-no-prop
9cc00 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 20 erties..........................
9cc20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6f 69 6e 74 29 20 70 72 65 .....................(point).pre
9cc40 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 20 20 28 70 75 v-pt)))......................(pu
9cc60 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 75 6c sh.(car.(gptel--parse-tool-resul
9cc80 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 29 0a 20 20 ts.backend.(list.tool-call)))...
9cca0 20 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 74 73 .........................prompts
9ccc0 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 6c 69 )......................(push.(li
9cce0 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 20 20 st.:role."assistant"............
9cd00 20 20 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 5f 63 61 6c 6c ......................:tool_call
9cd20 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 20 s...............................
9cd40 20 20 20 28 76 65 63 74 6f 72 20 28 6c 69 73 74 20 3a 74 79 70 65 20 22 66 75 6e 63 74 69 6f 6e ...(vector.(list.:type."function
9cd60 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 "...............................
9cd80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 69 64 20 69 64 0a 20 20 20 20 20 20 20 20 .................:id.id.........
9cda0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
9cdc0 20 20 20 20 20 20 20 3a 66 75 6e 63 74 69 6f 6e 20 60 28 20 3a 6e 61 6d 65 20 2c 6e 61 6d 65 0a .......:function.`(.:name.,name.
9cde0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
9ce00 20 20 20 20 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 ............................:arg
9ce20 75 6d 65 6e 74 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 uments.,arguments))))...........
9ce40 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 20 20 20 .................prompts))......
9ce60 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 76 61 6c 69 ............((end-of-file.invali
9ce80 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 20 20 20 20 d-read-syntax)..................
9cea0 20 28 6d 65 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 .(message.(format."Could.not.par
9cec0 73 65 20 74 6f 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 se.tool-call.%s.on.line.%s".....
9cee0 20 20 20 20 20 20 20 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 ...............................i
9cf00 64 20 28 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 d.(line-number-at-pos.(point))))
9cf20 29 29 29 29 0a 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 )))).............('ignore)......
9cf40 20 20 20 20 20 20 20 28 27 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 6d .......('nil..............(and.m
9cf60 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 29 ax-entries.(cl-decf.max-entries)
9cf80 29 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 6d )..............(if.gptel-track-m
9cfa0 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 2a edia..................(when-let*
9cfc0 20 28 28 63 6f 6e 74 65 6e 74 20 28 67 70 74 65 6c 2d 2d 6f 70 65 6e 61 69 2d 70 61 72 73 65 2d .((content.(gptel--openai-parse-
9cfe0 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 20 multipart.......................
9d000 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 6d .................(gptel--parse-m
9d020 65 64 69 61 2d 6c 69 6e 6b 73 20 6d 61 6a 6f 72 2d 6d 6f 64 65 0a 20 20 20 20 20 20 20 20 20 20 edia-links.major-mode...........
9d040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
9d060 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 29 20 70 .......................(point).p
9d080 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
9d0a0 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)......
9d0c0 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
9d0e0 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
9d100 74 73 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 ts)))................(when-let*.
9d120 28 28 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 20 ((content.(gptel--trim-prefixes.
9d140 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.
9d160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
9d180 20 20 20 20 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
9d1a0 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 20 20 20 20 20 t).prev-pt))))..................
9d1c0 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 3a 63 6f 6e 74 65 6e (push.(list.:role."user".:conten
9d1e0 74 20 63 6f 6e 74 65 6e 74 29 20 70 72 6f 6d 70 74 73 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 t.content).prompts))))).........
9d200 20 20 28 73 65 74 71 20 70 72 65 76 2d 70 74 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 20 20 ..(setq.prev-pt.(point))).......
9d220 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 28 62 75 66 (let.((content.(string-trim.(buf
9d240 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.....
9d260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
9d280 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 20 20 20 (point-min).(point-max))))).....
9d2a0 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 3a 63 6f ....(push.(list.:role."user".:co
9d2c0 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 20 70 72 ntent.content).prompts))).....pr
9d2e0 6f 6d 70 74 73 29 29 0a 0a 3b 3b 20 54 4f 44 4f 20 54 68 69 73 20 63 6f 75 6c 64 20 62 65 20 61 ompts))..;;.TODO.This.could.be.a
9d300 20 67 65 6e 65 72 69 63 20 66 75 6e 63 74 69 6f 6e 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d .generic.function.(defun.gptel--
9d320 6f 70 65 6e 61 69 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 openai-parse-multipart.(parts)..
9d340 20 22 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 ."Convert.a.multipart.prompt.PAR
9d360 54 53 20 74 6f 20 74 68 65 20 4f 70 65 6e 41 49 20 41 50 49 20 66 6f 72 6d 61 74 2e 0a 0a 54 68 TS.to.the.OpenAI.API.format...Th
9d380 65 20 69 6e 70 75 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 e.input.is.an.alist.of.the.form.
9d3a0 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
9d3c0 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.\
9d3e0 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
9d400 78 74 5c 22 29 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 xt\"))...The.output.is.a.vector.
9d420 6f 66 20 65 6e 74 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 of.entries.in.a.backend-appropri
9d440 61 74 65 0a 66 6f 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 ate.format."...(cl-loop....for.p
9d460 61 72 74 20 69 6e 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 art.in.parts....for.n.upfrom.1..
9d480 20 20 77 69 74 68 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 ..with.last.=.(length.parts)....
9d4a0 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 65 78 74 for.text.=.(plist-get.part.:text
9d4c0 29 0a 20 20 20 66 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 )....for.media.=.(plist-get.part
9d4e0 20 3a 6d 65 64 69 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 .:media)....if.text.do....(and.(
9d500 6f 72 20 28 3d 20 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 or.(=.n.1).(=.n.last)).(setq.tex
9d520 74 20 28 67 70 74 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 0a t.(gptel--trim-prefixes.text))).
9d540 20 20 20 61 6e 64 20 69 66 20 74 65 78 74 0a 20 20 20 63 6f 6c 6c 65 63 74 20 60 28 3a 74 79 70 ...and.if.text....collect.`(:typ
9d560 65 20 22 74 65 78 74 22 20 3a 74 65 78 74 20 2c 74 65 78 74 29 20 69 6e 74 6f 20 70 61 72 74 73 e."text".:text.,text).into.parts
9d580 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 20 63 6f 6c 6c -array.end....else.if.media.coll
9d5a0 65 63 74 0a 20 20 20 60 28 3a 74 79 70 65 20 22 69 6d 61 67 65 5f 75 72 6c 22 0a 20 20 20 20 20 ect....`(:type."image_url"......
9d5c0 3a 69 6d 61 67 65 5f 75 72 6c 20 28 3a 75 72 6c 20 2c 28 63 6f 6e 63 61 74 20 22 64 61 74 61 3a :image_url.(:url.,(concat."data:
9d5e0 22 20 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 20 20 20 ".(plist-get.part.:mime)........
9d600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 3b 62 61 73 65 36 34 2c 22 20 28 67 70 74 .................";base64,".(gpt
9d620 65 6c 2d 2d 62 61 73 65 36 34 2d 65 6e 63 6f 64 65 20 6d 65 64 69 61 29 29 29 29 0a 20 20 20 69 el--base64-encode.media))))....i
9d640 6e 74 6f 20 70 61 72 74 73 2d 61 72 72 61 79 0a 20 20 20 65 6c 73 65 20 69 66 20 28 70 6c 69 73 nto.parts-array....else.if.(plis
9d660 74 2d 67 65 74 20 70 61 72 74 20 3a 74 65 78 74 66 69 6c 65 29 20 63 6f 6c 6c 65 63 74 0a 20 20 t-get.part.:textfile).collect...
9d680 20 60 28 3a 74 79 70 65 20 22 74 65 78 74 22 0a 20 20 20 20 20 3a 74 65 78 74 20 2c 28 77 69 74 .`(:type."text"......:text.,(wit
9d6a0 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 20 20 28 67 70 74 h-temp-buffer...............(gpt
9d6c0 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 69 73 74 2d 67 65 el--insert-file-string.(plist-ge
9d6e0 74 20 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 t.part.:textfile))..............
9d700 20 28 62 75 66 66 65 72 2d 73 74 72 69 6e 67 29 29 29 0a 20 20 20 69 6e 74 6f 20 70 61 72 74 73 .(buffer-string)))....into.parts
9d720 2d 61 72 72 61 79 20 65 6e 64 20 61 6e 64 0a 20 20 20 69 66 20 28 70 6c 69 73 74 2d 67 65 74 20 -array.end.and....if.(plist-get.
9d740 70 61 72 74 20 3a 75 72 6c 29 0a 20 20 20 63 6f 6c 6c 65 63 74 0a 20 20 20 60 28 3a 74 79 70 65 part.:url)....collect....`(:type
9d760 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 6c 20 28 3a 75 ."image_url"......:image_url.(:u
9d780 72 6c 20 2c 28 70 6c 69 73 74 2d 67 65 74 20 70 61 72 74 20 3a 75 72 6c 29 29 29 0a 20 20 20 69 rl.,(plist-get.part.:url)))....i
9d7a0 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 74 75 72 nto.parts-array....finally.retur
9d7c0 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 3b 3b 20 54 4f n.(vconcat.parts-array)))..;;.TO
9d7e0 44 4f 3a 20 44 6f 65 73 20 74 68 69 73 20 6e 65 65 64 20 74 6f 20 62 65 20 61 20 67 65 6e 65 72 DO:.Does.this.need.to.be.a.gener
9d800 69 63 20 66 75 6e 63 74 69 6f 6e 3f 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c ic.function?.(cl-defmethod.gptel
9d820 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 67 70 --wrap-user-prompt.((_backend.gp
9d840 74 65 6c 2d 6f 70 65 6e 61 69 29 20 70 72 6f 6d 70 74 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 tel-openai).prompts.............
9d860 20 20 20 20 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 ...........................&opti
9d880 6f 6e 61 6c 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 onal.inject-media)..."Wrap.the.l
9d8a0 61 73 74 20 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 ast.user.prompt.in.PROMPTS.with.
9d8c0 74 68 65 20 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 the.context.string...If.INJECT-M
9d8e0 45 44 49 41 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 EDIA.is.non-nil.wrap.it.with.bas
9d900 65 36 34 2d 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 e64-encoded.media.files.in.the.c
9d920 6f 6e 74 65 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 ontext."...(if.inject-media.....
9d940 20 20 3b 3b 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 ..;;.Wrap.the.first.user.prompt.
9d960 77 69 74 68 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 with.included.media.files/contex
9d980 74 73 0a 20 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 ts.......(when-let*.((media-list
9d9a0 20 28 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 29 29 .(gptel-context--collect-media))
9d9c0 29 0a 20 20 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 ).........(cl-callf.(lambda.(cur
9d9e0 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 28 76 63 6f 6e 63 rent).....................(vconc
9da00 61 74 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 2d at......................(gptel--
9da20 6f 70 65 6e 61 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 openai-parse-multipart.media-lis
9da40 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 63 6c 2d 74 79 70 65 t)......................(cl-type
9da60 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 20 20 case.current....................
9da80 20 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 ....(string.`((:type."text".:tex
9daa0 74 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 t.,current)))...................
9dac0 20 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 .....(vector.current)...........
9dae0 20 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 .............(t.current)))).....
9db00 20 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 ........(plist-get.(car.prompts)
9db20 20 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 .:content))).....;;.Wrap.the.las
9db40 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 74 65 78 74 t.user.prompt.with.included.text
9db60 20 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 .contexts.....(cl-callf.(lambda.
9db80 28 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 (current).................(cl-et
9dba0 79 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 ypecase.current.................
9dbc0 20 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 ..(string.(gptel-context--wrap.c
9dbe0 75 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 urrent))...................(vect
9dc00 6f 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 or.(if-let*.((wrapped.(gptel-con
9dc20 74 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 text--wrap.nil)))...............
9dc40 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 60 28 28 3a 74 79 70 ................(vconcat.`((:typ
9dc60 65 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 e."text".:text.,wrapped)).......
9dc80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
9dca0 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 20 20 20 .current).......................
9dcc0 20 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 ......current)))).........(plist
9dce0 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
9dd00 6e 74 29 29 29 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 nt))))..;;;###autoload.(cl-defun
9dd20 20 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 0a 20 20 20 20 28 6e 61 6d 65 20 26 6b 65 .gptel-make-openai.....(name.&ke
9dd40 79 20 63 75 72 6c 2d 61 72 67 73 20 6d 6f 64 65 6c 73 20 73 74 72 65 61 6d 20 6b 65 79 20 72 65 y.curl-args.models.stream.key.re
9dd60 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 65 61 64 65 72 0a 20 quest-params...........(header..
9dd80 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 65 74 2a 20 ..........(lambda.().(when-let*.
9dda0 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 0a 20 20 20 ((key.(gptel--get-api-key)))....
9ddc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 60 28 28 22 41 75 74 68 6f 72 69 7a 61 74 69 6f ................`(("Authorizatio
9dde0 6e 22 20 2e 20 2c 28 63 6f 6e 63 61 74 20 22 42 65 61 72 65 72 20 22 20 6b 65 79 29 29 29 29 29 n"...,(concat."Bearer.".key)))))
9de00 29 0a 20 20 20 20 20 20 20 20 20 20 28 68 6f 73 74 20 22 61 70 69 2e 6f 70 65 6e 61 69 2e 63 6f )...........(host."api.openai.co
9de20 6d 22 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 74 6f 63 6f 6c 20 22 68 74 74 70 73 22 29 m")...........(protocol."https")
9de40 0a 20 20 20 20 20 20 20 20 20 20 28 65 6e 64 70 6f 69 6e 74 20 22 2f 76 31 2f 63 68 61 74 2f 63 ...........(endpoint."/v1/chat/c
9de60 6f 6d 70 6c 65 74 69 6f 6e 73 22 29 29 0a 20 20 22 52 65 67 69 73 74 65 72 20 61 6e 20 4f 70 65 ompletions"))..."Register.an.Ope
9de80 6e 41 49 20 41 50 49 2d 63 6f 6d 70 61 74 69 62 6c 65 20 62 61 63 6b 65 6e 64 20 66 6f 72 20 67 nAI.API-compatible.backend.for.g
9dea0 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 6e ptel.with.NAME...Keyword.argumen
9dec0 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 6c ts:..CURL-ARGS.(optional).is.a.l
9dee0 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 73 ist.of.additional.Curl.arguments
9df00 2e 0a 0a 48 4f 53 54 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 74 68 65 20 41 50 49 20 68 6f ...HOST.(optional).is.the.API.ho
9df20 73 74 2c 20 74 79 70 69 63 61 6c 6c 79 20 5c 22 61 70 69 2e 6f 70 65 6e 61 69 2e 63 6f 6d 5c 22 st,.typically.\"api.openai.com\"
9df40 2e 0a 0a 4d 4f 44 45 4c 53 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 61 76 61 69 6c 61 62 6c 65 ...MODELS.is.a.list.of.available
9df60 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 74 69 .model.names,.as.symbols..Additi
9df80 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 74 65 onally,.you.can.specify.supporte
9dfa0 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 20 6f d.LLM.capabilities.like.vision.o
9dfc0 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 74 20 r.tool-use.by.appending.a.plist.
9dfe0 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 74 69 to.the.model.with.more.informati
9e000 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 2e 20 on,.in.the.form...(model-name...
9e020 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 79 20 plist)..For.a.list.of.currently.
9e040 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 74 65 recognized.plist.keys,.see.`gpte
9e060 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 20 6f l--openai-models'...An.example.o
9e080 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 69 6e f.a.model.specification.includin
9e0a0 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 73 0a g.both.kinds.of.specs:..:models.
9e0c0 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 20 20 \\='(gpt-3.5-turbo..............
9e0e0 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 2d 34 ...........;Simple.specs...gpt-4
9e100 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 20 20 -turbo...(gpt-4o-mini...........
9e120 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 64 65 ...............;Full.spec....:de
9e140 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 69 6e scription....\"Affordable.and.in
9e160 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 74 77 telligent.small.model.for.lightw
9e180 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 20 28 eight.tasks\"....:capabilities.(
9e1a0 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 74 79 media.tool.json.url)....:mime-ty
9e1c0 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 2f 70 pes....(\"image/jpeg\".\"image/p
9e1e0 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 70 5c ng\".\"image/gif\".\"image/webp\
9e200 22 29 29 29 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 ")))..STREAM.is.a.boolean.to.tog
9e220 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 61 75 6c 74 gle.streaming.responses,.default
9e240 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 6e 61 6c 29 s.to.false...PROTOCOL.(optional)
9e260 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 70 73 20 62 .specifies.the.protocol,.https.b
9e280 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 61 6c 29 20 y.default...ENDPOINT.(optional).
9e2a0 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 6c 65 74 69 is.the.API.endpoint.for.completi
9e2c0 6f 6e 73 2c 20 64 65 66 61 75 6c 74 73 20 74 6f 0a 5c 22 2f 76 31 2f 63 68 61 74 2f 63 6f 6d 70 ons,.defaults.to.\"/v1/chat/comp
9e2e0 6c 65 74 69 6f 6e 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 letions\"...HEADER.(optional).is
9e300 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 68 65 61 64 65 72 73 20 74 6f 20 73 65 6e 64 20 .for.additional.headers.to.send.
9e320 77 69 74 68 20 65 61 63 68 0a 72 65 71 75 65 73 74 2e 20 20 49 74 20 73 68 6f 75 6c 64 20 62 65 with.each.request...It.should.be
9e340 20 61 6e 20 61 6c 69 73 74 20 6f 72 20 61 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 72 65 74 .an.alist.or.a.function.that.ret
9e360 75 72 6e 73 20 61 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 urns.an.alist,.like:..((\"Conten
9e380 74 2d 54 79 70 65 5c 22 20 2e 20 5c 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 6a 73 6f 6e 5c 22 29 t-Type\"...\"application/json\")
9e3a0 29 0a 0a 4b 45 59 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 61 20 76 61 72 69 61 62 6c 65 20 )..KEY.(optional).is.a.variable.
9e3c0 77 68 6f 73 65 20 76 61 6c 75 65 20 69 73 20 74 68 65 20 41 50 49 20 6b 65 79 2c 20 6f 72 0a 66 whose.value.is.the.API.key,.or.f
9e3e0 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 72 65 74 75 72 6e 73 20 74 68 65 20 6b 65 79 2e 0a 0a 52 unction.that.returns.the.key...R
9e400 45 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 EQUEST-PARAMS.(optional).is.a.pl
9e420 69 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 ist.of.additional.HTTP.request.p
9e440 61 72 61 6d 65 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 arameters.(as.plist.keys).and.va
9e460 6c 75 65 73 20 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 lues.supported.by.the.API...Use.
9e480 74 68 65 73 65 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 these.to.set.parameters.that.gpt
9e4a0 65 6c 20 64 6f 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 el.does.not.provide.user.options
9e4c0 0a 66 6f 72 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 69 6e 64 65 6e 74 20 31 29 29 0a 20 20 .for."...(declare.(indent.1))...
9e4e0 28 6c 65 74 20 28 28 62 61 63 6b 65 6e 64 20 28 67 70 74 65 6c 2d 2d 6d 61 6b 65 2d 6f 70 65 6e (let.((backend.(gptel--make-open
9e500 61 69 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 75 72 6c 2d 61 72 67 73 20 ai...................:curl-args.
9e520 63 75 72 6c 2d 61 72 67 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6e 61 6d curl-args...................:nam
9e540 65 20 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 68 6f 73 74 20 68 e.name...................:host.h
9e560 6f 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 68 65 61 64 65 72 20 68 65 ost...................:header.he
9e580 61 64 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6b 65 79 20 6b 65 79 0a ader...................:key.key.
9e5a0 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 28 67 70 74 65 6c ..................:models.(gptel
9e5c0 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 20 20 20 20 20 20 --process-models.models)........
9e5e0 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...
9e600 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
9e620 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
9e640 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
9e660 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............
9e680 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........
9e6a0 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
9e6c0 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).......
9e6e0 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.
9e700 65 6e 64 70 6f 69 6e 74 29 29 29 29 29 0a 20 20 20 20 28 70 72 6f 67 31 20 62 61 63 6b 65 6e 64 endpoint))))).....(prog1.backend
9e720 0a 20 20 20 20 20 20 28 73 65 74 66 20 28 61 6c 69 73 74 2d 67 65 74 20 6e 61 6d 65 20 67 70 74 .......(setf.(alist-get.name.gpt
9e740 65 6c 2d 2d 6b 6e 6f 77 6e 2d 62 61 63 6b 65 6e 64 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 el--known-backends..............
9e760 20 20 20 20 20 20 20 20 20 20 6e 69 6c 20 6e 69 6c 20 23 27 65 71 75 61 6c 29 0a 20 20 20 20 20 ..........nil.nil.#'equal)......
9e780 20 20 20 20 20 20 20 20 20 20 20 20 20 62 61 63 6b 65 6e 64 29 29 29 29 0a 0a 3b 3b 3b 20 41 7a .............backend))))..;;;.Az
9e7a0 75 72 65 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 ure.;;;###autoload.(cl-defun.gpt
9e7c0 65 6c 2d 6d 61 6b 65 2d 61 7a 75 72 65 0a 20 20 20 20 28 6e 61 6d 65 20 26 6b 65 79 20 63 75 72 el-make-azure.....(name.&key.cur
9e7e0 6c 2d 61 72 67 73 20 68 6f 73 74 0a 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 74 6f 63 6f 6c 20 l-args.host...........(protocol.
9e800 22 68 74 74 70 73 22 29 0a 20 20 20 20 20 20 20 20 20 20 28 68 65 61 64 65 72 20 28 6c 61 6d 62 "https")...........(header.(lamb
9e820 64 61 20 28 29 20 60 28 28 22 61 70 69 2d 6b 65 79 22 20 2e 20 2c 28 67 70 74 65 6c 2d 2d 67 65 da.().`(("api-key"...,(gptel--ge
9e840 74 2d 61 70 69 2d 6b 65 79 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 6b 65 79 20 27 67 t-api-key)))))...........(key.'g
9e860 70 74 65 6c 2d 61 70 69 2d 6b 65 79 29 0a 20 20 20 20 20 20 20 20 20 20 6d 6f 64 65 6c 73 20 73 ptel-api-key)...........models.s
9e880 74 72 65 61 6d 20 65 6e 64 70 6f 69 6e 74 20 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 29 0a 20 tream.endpoint.request-params)..
9e8a0 20 22 52 65 67 69 73 74 65 72 20 61 6e 20 41 7a 75 72 65 20 62 61 63 6b 65 6e 64 20 66 6f 72 20 ."Register.an.Azure.backend.for.
9e8c0 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
9e8e0 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.
9e900 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
9e920 73 2e 0a 0a 48 4f 53 54 20 69 73 20 74 68 65 20 41 50 49 20 68 6f 73 74 2e 0a 0a 4d 4f 44 45 4c s...HOST.is.the.API.host...MODEL
9e940 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 6f 64 65 6c 20 6e S.is.a.list.of.available.model.n
9e960 61 6d 65 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 ames,.as.symbols...STREAM.is.a.b
9e980 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 70 6f oolean.to.toggle.streaming.respo
9e9a0 6e 73 65 73 2c 20 64 65 66 61 75 6c 74 73 20 74 6f 0a 66 61 6c 73 65 2e 0a 0a 50 52 4f 54 4f 43 nses,.defaults.to.false...PROTOC
9e9c0 4f 4c 20 28 6f 70 74 69 6f 6e 61 6c 29 20 73 70 65 63 69 66 69 65 73 20 74 68 65 20 70 72 6f 74 OL.(optional).specifies.the.prot
9e9e0 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 49 4e ocol,.https.by.default...ENDPOIN
9ea00 54 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 6c 65 T.is.the.API.endpoint.for.comple
9ea20 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 6f 72 tions...HEADER.(optional).is.for
9ea40 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 68 .additional.headers.to.send.with
9ea60 20 65 61 63 68 0a 72 65 71 75 65 73 74 2e 20 20 49 74 20 73 68 6f 75 6c 64 20 62 65 20 61 6e 20 .each.request...It.should.be.an.
9ea80 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.
9eaa0 61 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 an.alist,.like:..((\"Content-Typ
9eac0 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 45 e\"...\"application/json\"))..KE
9eae0 59 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 61 20 76 61 72 69 61 62 6c 65 20 77 68 6f 73 65 Y.(optional).is.a.variable.whose
9eb00 20 76 61 6c 75 65 20 69 73 20 74 68 65 20 41 50 49 20 6b 65 79 2c 20 6f 72 0a 66 75 6e 63 74 69 .value.is.the.API.key,.or.functi
9eb20 6f 6e 20 74 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 on.that.returns.the.key...REQUES
9eb40 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
9eb60 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
9eb80 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.
9eba0 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
9ebc0 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
9ebe0 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.
9ec00 0a 0a 45 78 61 6d 70 6c 65 3a 0a 2d 2d 2d 2d 2d 2d 2d 0a 0a 20 28 67 70 74 65 6c 2d 6d 61 6b 65 ..Example:.-------...(gptel-make
9ec20 2d 61 7a 75 72 65 0a 20 20 5c 22 41 7a 75 72 65 2d 31 5c 22 0a 20 20 3a 70 72 6f 74 6f 63 6f 6c -azure...\"Azure-1\"...:protocol
9ec40 20 5c 22 68 74 74 70 73 5c 22 0a 20 20 3a 68 6f 73 74 20 5c 22 52 45 53 4f 55 52 43 45 5f 4e 41 .\"https\"...:host.\"RESOURCE_NA
9ec60 4d 45 2e 6f 70 65 6e 61 69 2e 61 7a 75 72 65 2e 63 6f 6d 5c 22 0a 20 20 3a 65 6e 64 70 6f 69 6e ME.openai.azure.com\"...:endpoin
9ec80 74 0a 20 20 5c 22 2f 6f 70 65 6e 61 69 2f 64 65 70 6c 6f 79 6d 65 6e 74 73 2f 44 45 50 4c 4f 59 t...\"/openai/deployments/DEPLOY
9eca0 4d 45 4e 54 5f 4e 41 4d 45 2f 63 6f 6d 70 6c 65 74 69 6f 6e 73 3f 61 70 69 2d 76 65 72 73 69 6f MENT_NAME/completions?api-versio
9ecc0 6e 3d 32 30 32 33 2d 30 35 2d 31 35 5c 22 0a 20 20 3a 73 74 72 65 61 6d 20 74 0a 20 20 3a 6d 6f n=2023-05-15\"...:stream.t...:mo
9ece0 64 65 6c 73 20 5c 5c 3d 27 28 67 70 74 2d 33 2e 35 2d 74 75 72 62 6f 20 67 70 74 2d 34 29 29 22 dels.\\='(gpt-3.5-turbo.gpt-4))"
9ed00 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 28 ...(declare.(indent.1))...(let.(
9ed20 28 62 61 63 6b 65 6e 64 20 28 67 70 74 65 6c 2d 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 0a 20 20 20 (backend.(gptel--make-openai....
9ed40 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 61 ...............:curl-args.curl-a
9ed60 72 67 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6e 61 6d 65 20 6e 61 6d 65 rgs...................:name.name
9ed80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 68 6f 73 74 20 68 6f 73 74 0a 20 20 ...................:host.host...
9eda0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 68 65 61 64 65 72 20 68 65 61 64 65 72 0a 20 ................:header.header..
9edc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6b 65 79 20 6b 65 79 0a 20 20 20 20 20 20 .................:key.key.......
9ede0 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 70 72 6f 63 ............:models.(gptel--proc
9ee00 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 20 20 20 20 ess-models.models)..............
9ee20 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 20 20 20 20 .....:protocol.protocol.........
9ee40 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 0a 20 20 20 ..........:endpoint.endpoint....
9ee60 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 6d 0a 20 20 ...............:stream.stream...
9ee80 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 61 6d 73 20 ................:request-params.
9eea0 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 20 20 20 20 request-params..................
9eec0 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 20 20 20 20 .:url.(if.protocol..............
9eee0 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 6f 6c 20 22 ..............(concat.protocol."
9ef00 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 20 20 20 20 ://".host.endpoint).............
9ef20 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 64 70 6f 69 .............(concat.host.endpoi
9ef40 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 20 20 20 20 nt))))).....(prog1.backend......
9ef60 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 2d 2d 6b 6e .(setf.(alist-get.name.gptel--kn
9ef80 6f 77 6e 2d 62 61 63 6b 65 6e 64 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 own-backends....................
9efa0 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 20 20 20 20 ....nil.nil.#'equal)............
9efc0 20 62 61 63 6b 65 6e 64 29 29 29 29 0a 0a 3b 3b 20 47 50 54 34 41 6c 6c 0a 3b 3b 3b 23 23 23 61 .backend))))..;;.GPT4All.;;;###a
9efe0 75 74 6f 6c 6f 61 64 0a 28 64 65 66 61 6c 69 61 73 20 27 67 70 74 65 6c 2d 6d 61 6b 65 2d 67 70 utoload.(defalias.'gptel-make-gp
9f000 74 34 61 6c 6c 20 27 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 0a 20 20 22 52 65 67 69 t4all.'gptel-make-openai..."Regi
9f020 73 74 65 72 20 61 20 47 50 54 34 41 6c 6c 20 62 61 63 6b 65 6e 64 20 66 6f 72 20 67 70 74 65 6c ster.a.GPT4All.backend.for.gptel
9f040 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 3a 0a .with.NAME...Keyword.arguments:.
9f060 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 74 20 .CURL-ARGS.(optional).is.a.list.
9f080 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 0a 48 of.additional.Curl.arguments...H
9f0a0 4f 53 54 20 69 73 20 77 68 65 72 65 20 47 50 54 34 41 6c 6c 20 72 75 6e 73 20 28 77 69 74 68 20 OST.is.where.GPT4All.runs.(with.
9f0c0 70 6f 72 74 29 2c 20 74 79 70 69 63 61 6c 6c 79 20 6c 6f 63 61 6c 68 6f 73 74 3a 34 38 39 31 0a port),.typically.localhost:4891.
9f0e0 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
9f100 6f 64 65 6c 20 6e 61 6d 65 73 2c 20 61 73 20 73 79 6d 62 6f 6c 73 2e 0a 0a 53 54 52 45 41 4d 20 odel.names,.as.symbols...STREAM.
9f120 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
9f140 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 0a 0a .responses,.defaults.to.false...
9f160 50 52 4f 54 4f 43 4f 4c 20 73 70 65 63 69 66 69 65 73 20 74 68 65 20 70 72 6f 74 6f 63 6f 6c 2c PROTOCOL.specifies.the.protocol,
9f180 20 68 74 74 70 73 20 62 79 20 64 65 66 61 75 6c 74 2e 0a 0a 45 4e 44 50 4f 49 4e 54 20 28 6f 70 .https.by.default...ENDPOINT.(op
9f1a0 74 69 6f 6e 61 6c 29 20 69 73 20 74 68 65 20 41 50 49 20 65 6e 64 70 6f 69 6e 74 20 66 6f 72 20 tional).is.the.API.endpoint.for.
9f1c0 63 6f 6d 70 6c 65 74 69 6f 6e 73 2c 20 64 65 66 61 75 6c 74 73 20 74 6f 0a 5c 22 2f 61 70 69 2f completions,.defaults.to.\"/api/
9f1e0 76 31 2f 63 6f 6d 70 6c 65 74 69 6f 6e 73 5c 22 0a 0a 48 45 41 44 45 52 20 28 6f 70 74 69 6f 6e v1/completions\"..HEADER.(option
9f200 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 6f al).is.for.additional.headers.to
9f220 20 73 65 6e 64 20 77 69 74 68 20 65 61 63 68 0a 72 65 71 75 65 73 74 2e 20 49 74 20 73 68 6f 75 .send.with.each.request..It.shou
9f240 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 68 61 ld.be.an.alist.or.a.function.tha
9f260 74 20 72 65 74 75 6e 73 20 61 6e 0a 61 6c 69 73 74 2c 20 6c 69 6b 65 3a 0a 28 28 5c 22 43 6f 6e t.retuns.an.alist,.like:.((\"Con
9f280 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 73 6f 6e tent-Type\"...\"application/json
9f2a0 5c 22 29 29 0a 0a 4b 45 59 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 61 20 76 61 72 69 61 62 \"))..KEY.(optional).is.a.variab
9f2c0 6c 65 20 77 68 6f 73 65 20 76 61 6c 75 65 20 69 73 20 74 68 65 20 41 50 49 20 6b 65 79 2c 20 6f le.whose.value.is.the.API.key,.o
9f2e0 72 0a 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 72 65 74 75 72 6e 73 20 74 68 65 20 6b 65 79 2e r.function.that.returns.the.key.
9f300 20 54 68 69 73 20 69 73 20 74 79 70 69 63 61 6c 6c 79 20 6e 6f 74 20 72 65 71 75 69 72 65 64 20 .This.is.typically.not.required.
9f320 66 6f 72 0a 6c 6f 63 61 6c 20 6d 6f 64 65 6c 73 20 6c 69 6b 65 20 47 50 54 34 41 6c 6c 2e 0a 0a for.local.models.like.GPT4All...
9f340 52 45 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 REQUEST-PARAMS.(optional).is.a.p
9f360 6c 69 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 list.of.additional.HTTP.request.
9f380 70 61 72 61 6d 65 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 parameters.(as.plist.keys).and.v
9f3a0 61 6c 75 65 73 20 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 alues.supported.by.the.API...Use
9f3c0 0a 74 68 65 73 65 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 .these.to.set.parameters.that.gp
9f3e0 74 65 6c 20 64 6f 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 tel.does.not.provide.user.option
9f400 73 0a 66 6f 72 2e 0a 0a 45 78 61 6d 70 6c 65 3a 0a 2d 2d 2d 2d 2d 2d 2d 0a 0a 28 67 70 74 65 6c s.for...Example:.-------..(gptel
9f420 2d 6d 61 6b 65 2d 67 70 74 34 61 6c 6c 0a 20 5c 22 47 50 54 34 41 6c 6c 5c 22 0a 20 3a 70 72 6f -make-gpt4all..\"GPT4All\"..:pro
9f440 74 6f 63 6f 6c 20 5c 22 68 74 74 70 5c 22 0a 20 3a 68 6f 73 74 20 5c 22 6c 6f 63 61 6c 68 6f 73 tocol.\"http\"..:host.\"localhos
9f460 74 3a 34 38 39 31 5c 22 0a 20 3a 6d 6f 64 65 6c 73 20 5c 5c 3d 27 28 6d 69 73 74 72 61 6c 2d 37 t:4891\"..:models.\\='(mistral-7
9f480 62 2d 6f 70 65 6e 6f 72 63 61 2e 51 34 5f 30 2e 67 67 75 66 29 29 22 29 0a 0a 28 70 72 6f 76 69 b-openorca.Q4_0.gguf))")..(provi
9f4a0 64 65 20 27 67 70 74 65 6c 2d 6f 70 65 6e 61 69 29 0a 3b 3b 3b 20 67 70 74 65 6c 2d 6f 70 65 6e de.'gptel-openai).;;;.gptel-open
9f4c0 61 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 61 72 69 61 62 ai.el.ends.here..;;.Local.Variab
9f4e0 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 73 3a 20 28 les:.;;.byte-compile-warnings:.(
9f500 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 00 00 00 00 00 not.docstrings).;;.End:.........
9f520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9f540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9f560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9f580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9f5a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9f5c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9f5e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9f600 67 70 74 65 6c 2d 30 2e 39 2e 38 2e 35 2f 2e 64 69 72 2d 6c 6f 63 61 6c 73 2e 65 6c 00 00 00 00 gptel-0.9.8.5/.dir-locals.el....
9f620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9f640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9f660 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
9f680 30 30 30 30 32 32 34 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 34 30 37 34 00 20 30 00 00 00 0000224.00000000000.014074..0...
9f6a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9f6c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9f6e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9f700 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...................
9f720 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...................
9f740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9f760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9f780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9f7a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9f7c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9f7e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9f800 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
9f820 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..
9f840 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.
9f860 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
9f880 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")))).............
9f8a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9f8c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9f8e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9f900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9f920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9f940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9f960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9f980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9f9a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9f9c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9f9e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9fa00 67 70 74 65 6c 2d 30 2e 39 2e 38 2e 35 2f 67 70 74 65 6c 2d 6f 72 67 2e 65 6c 00 00 00 00 00 00 gptel-0.9.8.5/gptel-org.el......
9fa20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9fa40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9fa60 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
9fa80 30 31 30 31 30 34 32 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 33 36 36 35 00 20 30 00 00 00 0101042.00000000000.013665..0...
9faa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9fac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9fae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9fb00 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...................
9fb20 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...................
9fb40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9fb60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9fb80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9fba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9fbc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9fbe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9fc00 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
9fc20 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
9fc40 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.(
9fc60 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..;;
9fc80 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
9fca0 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
9fcc0 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
9fce0 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
9fd00 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
9fd20 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
9fd40 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
9fd60 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
9fd80 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.;
9fda0 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
9fdc0 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
9fde0 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
9fe00 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
9fe20 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.
9fe40 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
9fe60 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
9fe80 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
9fea0 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...;;
9fec0 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
9fee0 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
9ff00 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...
9ff20 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
9ff40 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:..;
9ff60 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.
9ff80 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
9ffa0 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
9ffc0 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
9ffe0 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
a0000 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--
a0020 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
a0040 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)
a0060 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.
a0080 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
a00a0 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
a00c0 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
a00e0 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).
a0100 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
a0120 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
a0140 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-
a0160 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
a0180 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
a01a0 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--
a01c0 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
a01e0 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
a0200 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
a0220 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-
a0240 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
a0260 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
a0280 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
a02a0 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").
a02c0 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-
a02e0 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.
a0300 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
a0320 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
a0340 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
a0360 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").(
a0380 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
a03a0 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
a03c0 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"
a03e0 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
a0400 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
a0420 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
a0440 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
a0460 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
a0480 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
a04a0 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
a04c0 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")
a04e0 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
a0500 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
a0520 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
a0540 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")..;
a0560 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
a0580 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
a05a0 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
a05c0 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
a05e0 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
a0600 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
a0620 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")...........
a0640 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
a0660 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
a0680 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
a06a0 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
a06c0 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
a06e0 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
a0700 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
a0720 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
a0740 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
a0760 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
a0780 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
a07a0 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
a07c0 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
a07e0 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
a0800 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
a0820 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
a0840 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
a0860 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)
a0880 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..
a08a0 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.............(
a08c0 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
a08e0 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)).............
a0900 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))...
a0920 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
a0940 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.:
a0960 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)..............
a0980 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))))..
a09a0 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
a09c0 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
a09e0 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
a0a00 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
a0a20 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."
a0a40 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
a0a60 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
a0a80 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 69 g-element")..............(defali
a0aa0 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 72 as.'gptel-org--element-begin.'or
a0ac0 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 64 g-element-begin)..............(d
a0ae0 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 20 efalias.'gptel-org--element-end.
a0b00 27 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 65 6e 64 29 29 0a 20 20 20 20 28 64 65 66 75 6e 20 67 70 'org-element-end)).....(defun.gp
a0b20 74 65 6c 2d 6f 72 67 2d 2d 65 6c 65 6d 65 6e 74 2d 62 65 67 69 6e 20 28 6e 6f 64 65 29 0a 20 20 tel-org--element-begin.(node)...
a0b40 20 20 20 20 22 47 65 74 20 60 3a 62 65 67 69 6e 27 20 70 72 6f 70 65 72 74 79 20 6f 66 20 4e 4f ...."Get.`:begin'.property.of.NO
a0b60 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 6f 70 65 72 74 79 DE.".......(org-element-property
a0b80 20 3a 62 65 67 69 6e 20 6e 6f 64 65 29 29 0a 20 20 20 20 28 64 65 66 75 6e 20 67 70 74 65 6c 2d .:begin.node)).....(defun.gptel-
a0ba0 6f 72 67 2d 2d 65 6c 65 6d 65 6e 74 2d 65 6e 64 20 28 6e 6f 64 65 29 0a 20 20 20 20 20 20 22 47 org--element-end.(node)......."G
a0bc0 65 74 20 60 3a 65 6e 64 27 20 70 72 6f 70 65 72 74 79 20 6f 66 20 4e 4f 44 45 2e 22 0a 20 20 20 et.`:end'.property.of.NODE."....
a0be0 20 20 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 6e 6f ...(org-element-property.:end.no
a0c00 64 65 29 29 29 29 0a 0a 0c 0a 3b 3b 3b 20 55 73 65 72 20 6f 70 74 69 6f 6e 73 0a 28 64 65 66 63 de))))....;;;.User.options.(defc
a0c20 75 73 74 6f 6d 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 ustom.gptel-org-branching-contex
a0c40 74 20 6e 69 6c 0a 20 20 22 55 73 65 20 74 68 65 20 6c 69 6e 65 61 67 65 20 6f 66 20 74 68 65 20 t.nil..."Use.the.lineage.of.the.
a0c60 63 75 72 72 65 6e 74 20 68 65 61 64 69 6e 67 20 61 73 20 74 68 65 20 63 6f 6e 74 65 78 74 20 66 current.heading.as.the.context.f
a0c80 6f 72 20 67 70 74 65 6c 20 69 6e 20 4f 72 67 20 62 75 66 66 65 72 73 2e 0a 0a 54 68 69 73 20 6d or.gptel.in.Org.buffers...This.m
a0ca0 61 6b 65 73 20 65 61 63 68 20 73 61 6d 65 20 6c 65 76 65 6c 20 68 65 61 64 69 6e 67 20 61 20 73 akes.each.same.level.heading.a.s
a0cc0 65 70 61 72 61 74 65 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 0a 62 72 61 6e 63 68 2e 0a 0a 42 79 eparate.conversation.branch...By
a0ce0 20 64 65 66 61 75 6c 74 2c 20 67 70 74 65 6c 20 75 73 65 73 20 61 20 6c 69 6e 65 61 72 20 63 6f .default,.gptel.uses.a.linear.co
a0d00 6e 74 65 78 74 3a 20 61 6c 6c 20 74 68 65 20 74 65 78 74 20 75 70 20 74 6f 20 74 68 65 0a 63 75 ntext:.all.the.text.up.to.the.cu
a0d20 72 73 6f 72 20 69 73 20 73 65 6e 74 20 74 6f 20 74 68 65 20 4c 4c 4d 2e 20 20 45 6e 61 62 6c 69 rsor.is.sent.to.the.LLM...Enabli
a0d40 6e 67 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 6d 61 6b 65 73 20 74 68 65 0a 63 6f 6e 74 65 78 74 ng.this.option.makes.the.context
a0d60 20 74 68 65 20 68 69 65 72 61 72 63 68 69 63 61 6c 20 6c 69 6e 65 61 67 65 20 6f 66 20 74 68 65 .the.hierarchical.lineage.of.the
a0d80 20 63 75 72 72 65 6e 74 20 4f 72 67 20 68 65 61 64 69 6e 67 2e 20 20 49 6e 0a 74 68 69 73 20 65 .current.Org.heading...In.this.e
a0da0 78 61 6d 70 6c 65 3a 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 xample:..-----.Top.level.text..*
a0dc0 20 48 65 61 64 69 6e 67 20 31 0a 68 65 61 64 69 6e 67 20 31 20 74 65 78 74 0a 0a 2a 20 48 65 61 .Heading.1.heading.1.text..*.Hea
a0de0 64 69 6e 67 20 32 0a 68 65 61 64 69 6e 67 20 32 20 74 65 78 74 0a 0a 2a 2a 20 48 65 61 64 69 6e ding.2.heading.2.text..**.Headin
a0e00 67 20 32 2e 31 0a 68 65 61 64 69 6e 67 20 32 2e 31 20 74 65 78 74 0a 2a 2a 20 48 65 61 64 69 6e g.2.1.heading.2.1.text.**.Headin
a0e20 67 20 32 2e 32 0a 68 65 61 64 69 6e 67 20 32 2e 32 20 74 65 78 74 0a 2d 2d 2d 2d 2d 0a 0a 57 69 g.2.2.heading.2.2.text.-----..Wi
a0e40 74 68 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 th.the.cursor.at.the.end.of.the.
a0e60 62 75 66 66 65 72 2c 20 74 68 65 20 74 65 78 74 20 73 65 6e 74 20 74 6f 20 74 68 65 0a 4c 4c 4d buffer,.the.text.sent.to.the.LLM
a0e80 20 77 69 6c 6c 20 62 65 20 6c 69 6d 69 74 65 64 20 74 6f 0a 0a 2d 2d 2d 2d 2d 0a 54 6f 70 20 6c .will.be.limited.to..-----.Top.l
a0ea0 65 76 65 6c 20 74 65 78 74 0a 0a 2a 20 48 65 61 64 69 6e 67 20 32 0a 68 65 61 64 69 6e 67 20 32 evel.text..*.Heading.2.heading.2
a0ec0 20 74 65 78 74 0a 0a 2a 2a 20 48 65 61 64 69 6e 67 20 32 2e 32 0a 68 65 61 64 69 6e 67 20 32 2e .text..**.Heading.2.2.heading.2.
a0ee0 32 20 74 65 78 74 0a 2d 2d 2d 2d 2d 0a 0a 54 68 69 73 20 6d 61 6b 65 73 20 69 74 20 66 65 61 73 2.text.-----..This.makes.it.feas
a0f00 69 62 6c 65 20 74 6f 20 68 61 76 65 20 6d 75 6c 74 69 70 6c 65 20 63 6f 6e 76 65 72 73 61 74 69 ible.to.have.multiple.conversati
a0f20 6f 6e 20 62 72 61 6e 63 68 65 73 2e 22 0a 20 20 3a 74 79 70 65 20 27 62 6f 6f 6c 65 61 6e 0a 20 on.branches."...:type.'boolean..
a0f40 20 3a 67 72 6f 75 70 20 27 67 70 74 65 6c 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 .:group.'gptel)..(defcustom.gpte
a0f60 6c 2d 6f 72 67 2d 69 67 6e 6f 72 65 2d 65 6c 65 6d 65 6e 74 73 20 27 28 70 72 6f 70 65 72 74 79 l-org-ignore-elements.'(property
a0f80 2d 64 72 61 77 65 72 29 0a 20 20 22 4c 69 73 74 20 6f 66 20 4f 72 67 20 65 6c 65 6d 65 6e 74 73 -drawer)..."List.of.Org.elements
a0fa0 20 74 68 61 74 20 73 68 6f 75 6c 64 20 62 65 20 73 74 72 69 70 70 65 64 20 66 72 6f 6d 20 74 68 .that.should.be.stripped.from.th
a0fc0 65 20 70 72 6f 6d 70 74 0a 62 65 66 6f 72 65 20 73 65 6e 64 69 6e 67 20 69 74 2e 0a 0a 42 79 20 e.prompt.before.sending.it...By.
a0fe0 64 65 66 61 75 6c 74 20 67 70 74 65 6c 20 77 69 6c 6c 20 72 65 6d 6f 76 65 20 4f 72 67 20 70 72 default.gptel.will.remove.Org.pr
a1000 6f 70 65 72 74 79 20 64 72 61 77 65 72 73 20 66 72 6f 6d 20 74 68 65 0a 70 72 6f 6d 70 74 2e 20 operty.drawers.from.the.prompt..
a1020 20 46 6f 72 20 74 68 65 20 66 75 6c 6c 20 6c 69 73 74 20 6f 66 20 61 76 61 69 6c 61 62 6c 65 20 .For.the.full.list.of.available.
a1040 65 6c 65 6d 65 6e 74 73 2c 20 70 6c 65 61 73 65 20 73 65 65 0a 60 6f 72 67 2d 65 6c 65 6d 65 6e elements,.please.see.`org-elemen
a1060 74 2d 61 6c 6c 2d 65 6c 65 6d 65 6e 74 73 27 2e 0a 0a 50 6c 65 61 73 65 20 6e 6f 74 65 3a 20 52 t-all-elements'...Please.note:.R
a1080 65 6d 6f 76 69 6e 67 20 70 72 6f 70 65 72 74 79 2d 64 72 61 77 65 72 20 65 6c 65 6d 65 6e 74 73 emoving.property-drawer.elements
a10a0 20 69 73 20 66 61 73 74 2c 20 62 75 74 0a 61 64 64 69 6e 67 20 65 6c 65 6d 65 6e 74 73 20 74 6f .is.fast,.but.adding.elements.to
a10c0 20 74 68 69 73 20 6c 69 73 74 20 63 61 6e 20 73 69 67 6e 69 66 69 63 61 6e 74 6c 79 20 73 6c 6f .this.list.can.significantly.slo
a10e0 77 20 64 6f 77 6e 0a 60 67 70 74 65 6c 2d 73 65 6e 64 27 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 w.down.`gptel-send'."...:group.'
a1100 67 70 74 65 6c 0a 20 20 3a 74 79 70 65 20 27 28 72 65 70 65 61 74 20 73 79 6d 62 6f 6c 29 29 0a gptel...:type.'(repeat.symbol)).
a1120 0a 0c 0a 3b 3b 3b 20 53 65 74 74 69 6e 67 20 63 6f 6e 74 65 78 74 20 61 6e 64 20 63 72 65 61 74 ...;;;.Setting.context.and.creat
a1140 69 6e 67 20 71 75 65 72 69 65 73 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 6f 72 67 2d 2d 67 65 ing.queries.(defun.gptel-org--ge
a1160 74 2d 74 6f 70 69 63 2d 73 74 61 72 74 20 28 29 0a 20 20 22 49 66 20 61 20 63 6f 6e 76 65 72 73 t-topic-start.()..."If.a.convers
a1180 61 74 69 6f 6e 20 74 6f 70 69 63 20 69 73 20 73 65 74 2c 20 72 65 74 75 72 6e 20 69 74 2e 22 0a ation.topic.is.set,.return.it.".
a11a0 20 20 28 77 68 65 6e 20 28 6f 72 67 2d 65 6e 74 72 79 2d 67 65 74 20 28 70 6f 69 6e 74 29 20 22 ..(when.(org-entry-get.(point)."
a11c0 47 50 54 45 4c 5f 54 4f 50 49 43 22 20 27 69 6e 68 65 72 69 74 29 0a 20 20 20 20 28 6d 61 72 6b GPTEL_TOPIC".'inherit).....(mark
a11e0 65 72 2d 70 6f 73 69 74 69 6f 6e 20 6f 72 67 2d 65 6e 74 72 79 2d 70 72 6f 70 65 72 74 79 2d 69 er-position.org-entry-property-i
a1200 6e 68 65 72 69 74 65 64 2d 66 72 6f 6d 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 6f nherited-from)))..(defun.gptel-o
a1220 72 67 2d 73 65 74 2d 74 6f 70 69 63 20 28 74 6f 70 69 63 29 0a 20 20 22 53 65 74 20 61 20 54 4f rg-set-topic.(topic)..."Set.a.TO
a1240 50 49 43 20 61 6e 64 20 6c 69 6d 69 74 20 74 68 69 73 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 20 PIC.and.limit.this.conversation.
a1260 74 6f 20 74 68 65 20 63 75 72 72 65 6e 74 20 68 65 61 64 69 6e 67 2e 0a 0a 54 68 69 73 20 6c 69 to.the.current.heading...This.li
a1280 6d 69 74 73 20 74 68 65 20 63 6f 6e 74 65 78 74 20 73 65 6e 74 20 74 6f 20 74 68 65 20 4c 4c 4d mits.the.context.sent.to.the.LLM
a12a0 20 74 6f 20 74 68 65 20 74 65 78 74 20 62 65 74 77 65 65 6e 20 74 68 65 0a 63 75 72 72 65 6e 74 .to.the.text.between.the.current
a12c0 20 68 65 61 64 69 6e 67 20 61 6e 64 20 74 68 65 20 63 75 72 73 6f 72 20 70 6f 73 69 74 69 6f 6e .heading.and.the.cursor.position
a12e0 2e 22 0a 20 20 28 69 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 ."...(interactive....(list.....(
a1300 70 72 6f 67 6e 0a 20 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 progn.......(or.(derived-mode-p.
a1320 27 6f 72 67 2d 6d 6f 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 'org-mode)...........(user-error
a1340 20 22 53 75 70 70 6f 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 ."Support.for.multiple.topics.pe
a1360 72 20 62 75 66 66 65 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 r.buffer.is.only.implemented.for
a1380 20 60 6f 72 67 2d 6d 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 .`org-mode'")).......(completing
a13a0 2d 72 65 61 64 20 22 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 -read."Set.topic.as:."..........
a13c0 20 20 20 20 20 20 20 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 ..............(org-property-valu
a13e0 65 73 20 22 47 50 54 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 es."GPTEL_TOPIC")...............
a1400 20 20 20 20 20 20 20 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 .........nil.nil.(downcase......
a1420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 72 75 6e ...........................(trun
a1440 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 20 20 20 cate-string-to-width............
a1460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 75 62 73 74 72 69 6e 67 ......................(substring
a1480 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..................
a14a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 70 6c 61 63 65 2d 72 65 67 65 78 70 .................(replace-regexp
a14c0 2d 69 6e 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 -in-string......................
a14e0 20 20 20 20 20 20 20 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 .............."\\s-+"."-".......
a1500 20 20 20 20 20 20 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 .............................(or
a1520 67 2d 65 6e 74 72 79 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 g-entry-get.nil."ITEM"))).......
a1540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 35 30 29 29 29 ...........................50)))
a1560 29 29 29 0a 20 20 28 77 68 65 6e 20 28 73 74 72 69 6e 67 70 20 74 6f 70 69 63 29 20 28 6f 72 67 )))...(when.(stringp.topic).(org
a1580 2d 73 65 74 2d 70 72 6f 70 65 72 74 79 20 22 47 50 54 45 4c 5f 54 4f 50 49 43 22 20 74 6f 70 69 -set-property."GPTEL_TOPIC".topi
a15a0 63 29 29 29 0a 0a 3b 3b 20 4e 4f 54 45 3a 20 54 68 69 73 20 63 61 6e 20 62 65 20 63 6f 6e 76 65 c)))..;;.NOTE:.This.can.be.conve
a15c0 72 74 65 64 20 74 6f 20 61 20 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 66 6f 72 0a 3b 3b 20 60 67 rted.to.a.cl-defmethod.for.;;.`g
a15e0 70 74 65 6c 2d 2d 63 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 ptel--create-prompt-buffer'.(con
a1600 63 65 70 74 75 61 6c 6c 79 20 63 6c 65 61 6e 65 72 29 2c 20 62 75 74 20 77 69 6c 6c 20 63 61 75 ceptually.cleaner),.but.will.cau
a1620 73 65 0a 3b 3b 20 6c 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 se.;;.load-order.issues.in.gptel
a1640 2e 65 6c 20 61 6e 64 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 .el.and.might.be.harder.to.debug
a1660 2e 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 6f 72 67 2d 2d 63 72 65 61 74 65 2d 70 72 6f 6d 70 ..(defun.gptel-org--create-promp
a1680 74 2d 62 75 66 66 65 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 t-buffer.(&optional.prompt-end).
a16a0 20 20 22 52 65 74 75 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 .."Return.a.buffer.with.the.conv
a16c0 65 72 73 61 74 69 6f 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 ersation.prompt.to.be.sent...If.
a16e0 74 68 65 20 72 65 67 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 the.region.is.active.limit.the.p
a1700 72 6f 6d 70 74 20 74 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 rompt.text.to.the.region.content
a1720 73 2e 0a 4f 74 68 65 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 s..Otherwise.the.prompt.text.is.
a1740 63 6f 6e 73 74 72 75 63 74 65 64 20 66 72 6f 6d 20 74 68 65 20 63 6f 6e 74 65 6e 74 73 20 6f 66 constructed.from.the.contents.of
a1760 20 74 68 65 0a 63 75 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 .the.current.buffer.up.to.point,
a1780 20 6f 72 20 50 52 4f 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 .or.PROMPT-END.if.provided...Its
a17a0 20 63 6f 6e 74 65 6e 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 .contents.depend.on.the.value.of
a17c0 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 2c 20 .`gptel-org-branching-context',.
a17e0 77 68 69 63 68 20 73 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 which.see."...(when.(use-region-
a1800 70 29 0a 20 20 20 20 28 6e 61 72 72 6f 77 2d 74 6f 2d 72 65 67 69 6f 6e 20 28 72 65 67 69 6f 6e p).....(narrow-to-region.(region
a1820 2d 62 65 67 69 6e 6e 69 6e 67 29 20 28 72 65 67 69 6f 6e 2d 65 6e 64 29 29 29 0a 20 20 28 69 66 -beginning).(region-end)))...(if
a1840 20 70 72 6f 6d 70 74 2d 65 6e 64 0a 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 70 72 6f .prompt-end.......(goto-char.pro
a1860 6d 70 74 2d 65 6e 64 29 0a 20 20 20 20 28 73 65 74 71 20 70 72 6f 6d 70 74 2d 65 6e 64 20 28 70 mpt-end).....(setq.prompt-end.(p
a1880 6f 69 6e 74 29 29 29 0a 20 20 28 6c 65 74 20 28 28 74 6f 70 69 63 2d 73 74 61 72 74 20 28 67 70 oint)))...(let.((topic-start.(gp
a18a0 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 29 0a 20 20 20 20 tel-org--get-topic-start))).....
a18c0 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 20 6e 61 72 72 6f (when.topic-start.......;;.narro
a18e0 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 73 63 6f 70 65 0a w.to.GPTEL_TOPIC.property.scope.
a1900 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 70 69 63 2d 73 74 ......(narrow-to-region.topic-st
a1920 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 61 6e 64 20 67 70 art.prompt-end)).....(if.(and.gp
a1940 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 20 20 20 20 20 20 tel-org-branching-context.......
a1960 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 6c 65 6d 65 6e 74 .......(or.(fboundp.'org-element
a1980 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 20 20 20 20 20 28 -lineage-map)..................(
a19a0 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 20 20 20 28 64 69 prog1.nil....................(di
a19c0 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 20 20 20 20 20 20 splay-warning...................
a19e0 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 20 20 20 20 20 20 ..'(gptel.org)..................
a1a00 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 68 69 6e 67 2d 63 ..."Using.`gptel-org-branching-c
a1a20 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 6f 6e 20 39 2e 37 ontext'.requires.Org.version.9.7
a1a40 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 6f 72 65 64 2e 22 .or.higher,.it.will.be.ignored."
a1a60 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 6d 70 74 20 66 72 )))).........;;.Create.prompt.fr
a1a80 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 6e 74 0a 20 20 20 om.direct.ancestors.of.point....
a1aa0 20 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 28 .....(save-excursion...........(
a1ac0 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 66 66 65 72 29 29 let*.((org-buf.(current-buffer))
a1ae0 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 63 74 20 61 6c 6c ..................;;.Collect.all
a1b00 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 6e 20 74 68 65 20 .heading.start.positions.in.the.
a1b20 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 66 75 6c 6c 2d 62 lineage..................(full-b
a1b40 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 6c 69 6e 65 61 67 ounds.(gptel-org--element-lineag
a1b60 65 2d 6d 61 70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 e-map...........................
a1b80 20 20 20 20 20 20 20 20 28 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 61 74 2d 70 6f 69 6e 74 29 20 23 ........(org-element-at-point).#
a1ba0 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 20 20 20 20 20 20 'gptel-org--element-begin.......
a1bc0 20 20 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 28 68 65 61 64 ..........................'(head
a1be0 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 20 20 20 20 20 20 line).'with-self).).............
a1c00 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 73 20 74 68 65 20 .....;;.lineage-map.returns.the.
a1c20 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 6f 77 65 64 0a 20 full.lineage.in.the.unnarrowed..
a1c40 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 20 20 52 65 6d 6f ................;;.buffer...Remo
a1c60 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 20 62 65 66 6f 72 ve.heading.start.positions.befor
a1c80 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 20 20 20 20 20 3b e.(point-min)..................;
a1ca0 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 6e 61 72 72 6f 77 ;.that.are.invalid.due.to.narrow
a1cc0 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 66 0a 20 20 20 20 ing,.and.add.(point-min).if.....
a1ce0 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 6c 72 65 61 64 79 .............;;.it's.not.already
a1d00 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 20 20 20 20 20 20 .included.in.the.lineage........
a1d20 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 20 20 20 20 20 20 ..........(start-bounds.........
a1d40 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 65 2d 69 66 20 28 ..........(nconc.(cl-delete-if.(
a1d60 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 29 29 29 0a 20 20 lambda.(p).(<.p.(point-min)))...
a1d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
a1da0 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 20 20 20 20 20 20 .....full-bounds)...............
a1dc0 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 78 63 75 72 73 69 ...........(unless.(save-excursi
a1de0 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 0a 20 20 20 20 20 on.(goto-char.(point-min))......
a1e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
a1e20 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 6f 75 74 6c 69 6e ............(looking-at-p.outlin
a1e40 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 20 20 20 20 20 20 e-regexp))......................
a1e60 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 29 0a 20 20 20 20 ......(list.(point-min))))).....
a1e80 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 20 20 20 20 20 20 .............(end-bounds........
a1ea0 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 20 20 ...........(cl-loop.............
a1ec0 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 73 29 20 69 73 20 .......;;.(car.start-bounds).is.
a1ee0 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 74 20 65 6c 65 6d the.begining.of.the.current.elem
a1f00 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 20 6e 6f 74 20 72 ent,....................;;.not.r
a1f20 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 20 66 6f 72 20 70 elevant....................for.p
a1f40 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 20 20 20 20 20 20 os.in.(cdr.start-bounds)........
a1f60 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 70 6f 73 29 20 28 ............do.(goto-char.pos).(
a1f80 6f 75 74 6c 69 6e 65 2d 6e 65 78 74 2d 68 65 61 64 69 6e 67 29 0a 20 20 20 20 20 20 20 20 20 20 outline-next-heading)...........
a1fa0 20 20 20 20 20 20 20 20 20 63 6f 6c 6c 65 63 74 20 28 70 6f 69 6e 74 29 20 69 6e 74 6f 20 65 6e .........collect.(point).into.en
a1fc0 64 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 20 72 65 ds....................finally.re
a1fe0 74 75 72 6e 20 28 63 6f 6e 73 20 70 72 6f 6d 70 74 2d 65 6e 64 20 65 6e 64 73 29 29 29 29 0a 20 turn.(cons.prompt-end.ends))))..
a2000 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 63 ...........(gptel--with-buffer-c
a2020 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 20 20 20 20 20 20 opy.org-buf.nil.nil.............
a2040 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 73 74 61 72 74 20 69 6e 20 73 74 61 72 74 2d 62 6f ..(cl-loop.for.start.in.start-bo
a2060 75 6e 64 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 unds........................for.
a2080 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 20 20 20 20 20 20 end.in.end-bounds...............
a20a0 20 20 20 20 20 20 20 20 20 64 6f 20 28 69 6e 73 65 72 74 2d 62 75 66 66 65 72 2d 73 75 62 73 74 .........do.(insert-buffer-subst
a20c0 72 69 6e 67 20 6f 72 67 2d 62 75 66 20 73 74 61 72 74 20 65 6e 64 29 0a 20 20 20 20 20 20 20 20 ring.org-buf.start.end).........
a20e0 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
a2100 2d 6d 69 6e 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 -min)))...............(goto-char
a2120 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 .(point-max))...............(gpt
a2140 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 6c 74 73 29 0a 20 el-org--unescape-tool-results)..
a2160 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 74 72 69 70 2d 62 .............(gptel-org--strip-b
a2180 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 20 20 28 77 68 65 lock-headers)...............(whe
a21a0 6e 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 20 28 67 70 74 n.gptel-org-ignore-elements.(gpt
a21c0 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 20 20 el-org--strip-elements))........
a21e0 20 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 .......(current-buffer))))......
a2200 20 3b 3b 20 43 72 65 61 74 65 20 70 72 6f 6d 70 74 20 74 68 65 20 75 73 75 61 6c 20 77 61 79 0a .;;.Create.prompt.the.usual.way.
a2220 20 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 ......(let.((org-buf.(current-bu
a2240 66 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 ffer)).............(beg.(point-m
a2260 69 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 in))).........(gptel--with-buffe
a2280 72 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 r-copy.org-buf.beg.prompt-end...
a22a0 20 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 ........(gptel-org--unescape-too
a22c0 6c 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 l-results)...........(gptel-org-
a22e0 2d 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 -strip-block-headers)...........
a2300 28 77 68 65 6e 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 20 (when.gptel-org-ignore-elements.
a2320 28 67 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 (gptel-org--strip-elements))....
a2340 20 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 29 29 0a 0a 28 64 .......(current-buffer))))))..(d
a2360 65 66 75 6e 20 67 70 74 65 6c 2d 6f 72 67 2d 2d 73 74 72 69 70 2d 65 6c 65 6d 65 6e 74 73 20 28 efun.gptel-org--strip-elements.(
a2380 29 0a 20 20 22 52 65 6d 6f 76 65 20 61 6c 6c 20 65 6c 65 6d 65 6e 74 73 20 69 6e 20 60 67 70 74 )..."Remove.all.elements.in.`gpt
a23a0 65 6c 2d 6f 72 67 2d 69 67 6e 6f 72 65 2d 65 6c 65 6d 65 6e 74 73 27 20 66 72 6f 6d 20 74 68 65 el-org-ignore-elements'.from.the
a23c0 0a 70 72 6f 6d 70 74 2e 22 0a 20 20 28 6c 65 74 20 28 28 6d 61 6a 6f 72 2d 6d 6f 64 65 20 27 6f .prompt."...(let.((major-mode.'o
a23e0 72 67 2d 6d 6f 64 65 29 20 65 6c 65 6d 65 6e 74 2d 6d 61 72 6b 65 72 73 29 0a 20 20 20 20 28 69 rg-mode).element-markers).....(i
a2400 66 20 28 65 71 75 61 6c 20 27 28 70 72 6f 70 65 72 74 79 2d 64 72 61 77 65 72 29 20 67 70 74 65 f.(equal.'(property-drawer).gpte
a2420 6c 2d 6f 72 67 2d 69 67 6e 6f 72 65 2d 65 6c 65 6d 65 6e 74 73 29 0a 20 20 20 20 20 20 20 20 28 l-org-ignore-elements).........(
a2440 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 save-excursion...........(goto-c
a2460 68 61 72 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 69 6c har.(point-min))...........(whil
a2480 65 20 28 72 65 2d 73 65 61 72 63 68 2d 66 6f 72 77 61 72 64 20 6f 72 67 2d 70 72 6f 70 65 72 74 e.(re-search-forward.org-propert
a24a0 79 2d 64 72 61 77 65 72 2d 72 65 20 6e 69 6c 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b y-drawer-re.nil.t).............;
a24c0 3b 20 3b 3b 20 53 6c 6f 77 65 72 20 62 75 74 20 61 63 63 75 72 61 74 65 0a 20 20 20 20 20 20 20 ;.;;.Slower.but.accurate........
a24e0 20 20 20 20 20 3b 3b 20 28 6c 65 74 20 28 28 64 72 61 77 65 72 20 28 6f 72 67 2d 65 6c 65 6d 65 .....;;.(let.((drawer.(org-eleme
a2500 6e 74 2d 61 74 2d 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 20 20 nt-at-point))).............;;...
a2520 28 77 68 65 6e 20 28 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 74 79 70 65 2d 70 20 64 72 61 77 65 72 (when.(org-element-type-p.drawer
a2540 20 27 70 72 6f 70 65 72 74 79 2d 64 72 61 77 65 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b .'property-drawer).............;
a2560 3b 20 20 20 20 20 28 64 65 6c 65 74 65 2d 72 65 67 69 6f 6e 20 28 6f 72 67 2d 65 6c 65 6d 65 6e ;.....(delete-region.(org-elemen
a2580 74 2d 62 65 67 69 6e 20 64 72 61 77 65 72 29 20 28 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 65 6e 64 t-begin.drawer).(org-element-end
a25a0 20 64 72 61 77 65 72 29 29 29 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 46 61 73 74 .drawer))))..............;;.Fast
a25c0 20 62 75 74 20 69 6e 65 78 61 63 74 2c 20 63 61 6e 20 68 61 76 65 20 66 61 6c 73 65 20 70 6f 73 .but.inexact,.can.have.false.pos
a25e0 69 74 69 76 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 64 65 6c 65 74 65 2d 72 65 67 69 6f itives.............(delete-regio
a2600 6e 20 28 6d 61 74 63 68 2d 62 65 67 69 6e 6e 69 6e 67 20 30 29 20 28 6d 61 74 63 68 2d 65 6e 64 n.(match-beginning.0).(match-end
a2620 20 30 29 29 29 29 0a 20 20 20 20 20 20 3b 3b 20 4e 4f 54 45 3a 20 50 61 72 73 69 6e 67 20 74 68 .0)))).......;;.NOTE:.Parsing.th
a2640 65 20 62 75 66 66 65 72 20 69 73 20 65 78 74 72 65 6d 65 6c 79 20 73 6c 6f 77 2e 20 20 41 76 6f e.buffer.is.extremely.slow...Avo
a2660 69 64 20 74 68 69 73 20 70 61 74 68 20 75 6e 6c 65 73 73 0a 20 20 20 20 20 20 3b 3b 20 72 65 71 id.this.path.unless.......;;.req
a2680 75 69 72 65 64 2e 0a 20 20 20 20 20 20 3b 3b 20 4e 4f 54 45 3a 20 60 6f 72 67 2d 65 6c 65 6d 65 uired........;;.NOTE:.`org-eleme
a26a0 6e 74 2d 6d 61 70 27 20 74 61 6b 65 73 20 61 20 74 68 69 72 64 20 4b 45 45 50 2d 44 45 46 45 52 nt-map'.takes.a.third.KEEP-DEFER
a26c0 52 45 44 20 61 72 67 75 6d 65 6e 74 20 69 6e 20 6e 65 77 65 72 0a 20 20 20 20 20 20 3b 3b 20 4f RED.argument.in.newer.......;;.O
a26e0 72 67 20 76 65 72 73 69 6f 6e 73 0a 20 20 20 20 20 20 28 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 6d rg.versions.......(org-element-m
a2700 61 70 20 28 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 70 61 72 73 65 2d 62 75 66 66 65 72 20 27 65 6c ap.(org-element-parse-buffer.'el
a2720 65 6d 65 6e 74 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 6f 72 67 2d 69 ement.nil)...........gptel-org-i
a2740 67 6e 6f 72 65 2d 65 6c 65 6d 65 6e 74 73 0a 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 gnore-elements.........(lambda.(
a2760 6e 6f 64 65 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 6c 69 73 74 20 28 67 70 74 node)...........(push.(list.(gpt
a2780 65 6c 2d 6f 72 67 2d 2d 65 6c 65 6d 65 6e 74 2d 62 65 67 69 6e 20 6e 6f 64 65 29 0a 20 20 20 20 el-org--element-begin.node).....
a27a0 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 2d 2d 65 6c ..................(gptel-org--el
a27c0 65 6d 65 6e 74 2d 65 6e 64 20 6e 6f 64 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ement-end.node))................
a27e0 20 65 6c 65 6d 65 6e 74 2d 6d 61 72 6b 65 72 73 29 29 29 0a 20 20 20 20 20 20 28 64 6f 6c 69 73 .element-markers))).......(dolis
a2800 74 20 28 62 6f 75 6e 64 73 20 65 6c 65 6d 65 6e 74 2d 6d 61 72 6b 65 72 73 29 0a 20 20 20 20 20 t.(bounds.element-markers)......
a2820 20 20 20 28 61 70 70 6c 79 20 23 27 64 65 6c 65 74 65 2d 72 65 67 69 6f 6e 20 62 6f 75 6e 64 73 ...(apply.#'delete-region.bounds
a2840 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 73 74 72 69 70 2d 62 )))))..(defun.gptel-org--strip-b
a2860 6c 6f 63 6b 2d 68 65 61 64 65 72 73 20 28 29 0a 20 20 22 52 65 6d 6f 76 65 20 61 6c 6c 20 67 70 lock-headers.()..."Remove.all.gp
a2880 74 65 6c 2d 73 70 65 63 69 66 69 63 20 62 6c 6f 63 6b 20 68 65 61 64 65 72 73 20 61 6e 64 20 66 tel-specific.block.headers.and.f
a28a0 6f 6f 74 65 72 73 2e 0a 45 76 65 72 79 20 6c 69 6e 65 20 74 68 61 74 20 6d 61 74 63 68 65 73 20 ooters..Every.line.that.matches.
a28c0 77 69 6c 6c 20 62 65 20 72 65 6d 6f 76 65 64 20 65 6e 74 69 72 65 6c 79 2e 0a 0a 54 68 69 73 20 will.be.removed.entirely...This.
a28e0 72 65 6d 6f 76 61 6c 20 69 73 20 6e 65 63 65 73 73 61 72 79 20 74 6f 20 61 76 6f 69 64 20 61 75 removal.is.necessary.to.avoid.au
a2900 74 6f 2d 6d 69 6d 69 63 72 79 20 62 79 20 4c 4c 4d 73 2e 22 0a 20 20 28 73 61 76 65 2d 65 78 63 to-mimicry.by.LLMs."...(save-exc
a2920 75 72 73 69 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 69 6e ursion.....(goto-char.(point-min
a2940 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
a2960 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 72 78 20 6c 69 6e 65 2d 73 74 61 72 74 20 28 6c 69 74 .............(rx.line-start.(lit
a2980 65 72 61 6c 20 22 23 2b 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 20 28 eral."#+").................(or.(
a29a0 6c 69 74 65 72 61 6c 20 22 62 65 67 69 6e 22 29 20 28 6c 69 74 65 72 61 6c 20 22 65 6e 64 22 29 literal."begin").(literal."end")
a29c0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 20 28 6c 69 74 65 72 61 6c 20 22 ).................(or.(literal."
a29e0 5f 74 6f 6f 6c 22 29 20 28 6c 69 74 65 72 61 6c 20 22 5f 72 65 61 73 6f 6e 69 6e 67 22 29 29 29 _tool").(literal."_reasoning")))
a2a00 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 69 6c 20 74 29 0a 20 20 20 20 20 20 28 64 65 6c 65 74 .............nil.t).......(delet
a2a20 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 0a 20 20 20 e-region.(match-beginning.0)....
a2a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 69 6e 20 28 70 6f 69 6e 74 2d 6d 61 ..................(min.(point-ma
a2a60 78 29 20 28 31 2b 20 28 6c 69 6e 65 2d 65 6e 64 2d 70 6f 73 69 74 69 6f 6e 29 29 29 29 29 29 29 x).(1+.(line-end-position)))))))
a2a80 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 6f 72 67 2d 2d 75 6e 65 73 63 61 70 65 2d 74 6f 6f ..(defun.gptel-org--unescape-too
a2aa0 6c 2d 72 65 73 75 6c 74 73 20 28 29 0a 20 20 22 55 6e 64 6f 20 65 73 63 61 70 65 73 20 64 6f 6e l-results.()..."Undo.escapes.don
a2ac0 65 20 74 6f 20 6b 65 65 70 20 72 65 73 75 6c 74 73 20 66 72 6f 6d 20 65 73 63 61 70 69 6e 67 20 e.to.keep.results.from.escaping.
a2ae0 62 6c 6f 63 6b 73 2e 0a 53 63 61 6e 73 20 62 61 63 6b 77 61 72 64 20 66 6f 72 20 67 70 74 65 6c blocks..Scans.backward.for.gptel
a2b00 20 74 6f 6f 6c 20 74 65 78 74 20 70 72 6f 70 65 72 74 79 2c 20 72 65 61 64 73 20 74 68 65 20 61 .tool.text.property,.reads.the.a
a2b20 72 67 75 6d 65 6e 74 73 2c 20 74 68 65 6e 0a 75 6e 65 73 63 61 70 65 73 20 74 68 65 20 72 65 6d rguments,.then.unescapes.the.rem
a2b40 61 69 6e 64 65 72 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 28 ainder."...(save-excursion.....(
a2b60 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 0a 20 20 20 20 28 6c 65 74 20 goto-char.(point-max)).....(let.
a2b80 28 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 28 77 68 69 6c 65 ((prev-pt.(point))).......(while
a2ba0 20 28 3e 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))........
a2bc0 20 28 67 6f 74 6f 2d 63 68 61 72 0a 20 20 20 20 20 20 20 20 20 28 70 72 65 76 69 6f 75 73 2d 73 .(goto-char..........(previous-s
a2be0 69 6e 67 6c 65 2d 63 68 61 72 2d 70 72 6f 70 65 72 74 79 2d 63 68 61 6e 67 65 20 28 70 6f 69 6e ingle-char-property-change.(poin
a2c00 74 29 20 27 67 70 74 65 6c 29 29 0a 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 70 72 6f 70 20 t).'gptel)).........(let.((prop.
a2c20 28 67 65 74 2d 74 65 78 74 2d 70 72 6f 70 65 72 74 79 20 28 70 6f 69 6e 74 29 20 27 67 70 74 65 (get-text-property.(point).'gpte
a2c40 6c 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 61 63 6b 77 61 72 64 2d 70 72 6f 67 l))...............(backward-prog
a2c60 72 65 73 73 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 ress.(point)))...........(when.(
a2c80 65 71 20 28 63 61 72 2d 73 61 66 65 20 70 72 6f 70 29 20 27 74 6f 6f 6c 29 0a 20 20 20 20 20 20 eq.(car-safe.prop).'tool).......
a2ca0 20 20 20 20 20 20 3b 3b 20 55 73 65 72 20 65 64 69 74 73 20 74 6f 20 63 6c 65 61 6e 20 75 70 20 ......;;.User.edits.to.clean.up.
a2cc0 63 61 6e 20 70 6f 74 65 6e 74 69 61 6c 6c 79 20 69 6e 73 65 72 74 20 61 20 74 6f 6f 6c 2d 63 61 can.potentially.insert.a.tool-ca
a2ce0 6c 6c 20 68 65 61 64 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 74 68 61 74 20 69 73 ll.header.............;;.that.is
a2d00 20 70 72 6f 70 65 72 74 69 7a 65 64 2e 20 20 54 6f 6f 6c 20 63 61 6c 6c 20 68 65 61 64 65 72 73 .propertized...Tool.call.headers
a2d20 20 73 68 6f 75 6c 64 20 6e 6f 74 20 62 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 70 72 .should.not.be.............;;.pr
a2d40 6f 70 65 72 74 69 7a 65 64 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 6c 6f opertized..............(when.(lo
a2d60 6f 6b 69 6e 67 2d 61 74 2d 70 20 22 5b 5b 3a 73 70 61 63 65 3a 5d 5d 2a 23 5c 5c 2b 62 65 67 69 oking-at-p."[[:space:]]*#\\+begi
a2d80 6e 5f 74 6f 6f 6c 22 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 n_tool")...............(goto-cha
a2da0 72 20 28 6d 61 74 63 68 2d 65 6e 64 20 30 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 63 r.(match-end.0))).............(c
a2dc0 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ondition-case.nil...............
a2de0 20 20 28 72 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 ..(read.(current-buffer)).......
a2e00 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
a2e20 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 28 6d 65 73 73 61 ad-syntax)................(messa
a2e40 67 65 20 22 43 6f 75 6c 64 20 6e 6f 74 20 72 65 61 64 20 74 6f 6f 6c 20 61 72 67 75 6d 65 6e 74 ge."Could.not.read.tool.argument
a2e60 73 22 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 54 4f 44 4f 20 74 68 69 73 20 63 s"))).............;;.TODO.this.c
a2e80 6f 64 65 20 69 73 20 61 62 6c 65 20 74 6f 20 70 75 74 20 74 68 65 20 70 6f 69 6e 74 20 62 65 68 ode.is.able.to.put.the.point.beh
a2ea0 69 6e 64 20 70 72 65 76 2d 70 74 2c 20 77 68 69 63 68 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b ind.prev-pt,.which.............;
a2ec0 3b 20 6d 61 6b 65 73 20 74 68 65 20 72 65 67 69 6f 6e 20 69 6e 76 65 72 74 65 64 2e 20 20 54 68 ;.makes.the.region.inverted...Th
a2ee0 65 20 60 6d 61 78 27 20 63 61 74 63 68 65 73 20 74 68 69 73 2c 20 62 75 74 20 72 65 61 6c 6c 79 e.`max'.catches.this,.but.really
a2f00 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 60 72 65 61 64 27 20 61 6e 64 20 60 6c 6f 6f 6b .............;;.`read'.and.`look
a2f20 69 6e 67 2d 61 74 27 20 61 72 65 20 74 68 65 20 63 75 6c 70 72 69 74 73 2e 20 20 42 61 64 6c 79 ing-at'.are.the.culprits...Badly
a2f40 20 66 6f 72 6d 65 64 20 74 6f 6f 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 62 6c 6f 63 .formed.tool.............;;.bloc
a2f60 6b 73 20 63 61 6e 20 6c 65 61 64 20 74 6f 20 74 68 69 73 20 62 65 69 6e 67 20 6e 65 63 65 73 73 ks.can.lead.to.this.being.necess
a2f80 61 72 79 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 67 2d 75 6e 65 73 63 61 70 65 2d 63 ary..............(org-unescape-c
a2fa0 6f 64 65 2d 69 6e 2d 72 65 67 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 69 6e 20 ode-in-region..............(min.
a2fc0 70 72 65 76 2d 70 74 20 28 70 6f 69 6e 74 29 29 20 70 72 65 76 2d 70 74 29 29 0a 20 20 20 20 20 prev-pt.(point)).prev-pt))......
a2fe0 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 73 65 74 71 20 70 72 65 76 2d 70 74 20 62 61 .....(goto-char.(setq.prev-pt.ba
a3000 63 6b 77 61 72 64 2d 70 72 6f 67 72 65 73 73 29 29 29 29 29 29 29 0a 0a 3b 3b 20 48 61 6e 64 6c ckward-progress)))))))..;;.Handl
a3020 65 20 6d 65 64 69 61 20 6c 69 6e 6b 73 20 69 6e 20 74 68 65 20 62 75 66 66 65 72 0a 28 63 6c 2d e.media.links.in.the.buffer.(cl-
a3040 64 65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 6d 65 64 69 61 2d 6c 69 6e defmethod.gptel--parse-media-lin
a3060 6b 73 20 28 28 5f 6d 6f 64 65 20 28 65 71 6c 20 27 6f 72 67 2d 6d 6f 64 65 29 29 20 62 65 67 20 ks.((_mode.(eql.'org-mode)).beg.
a3080 65 6e 64 29 0a 20 20 22 50 61 72 73 65 20 74 65 78 74 20 61 6e 64 20 61 63 74 69 6f 6e 61 62 6c end)..."Parse.text.and.actionabl
a30a0 65 20 6c 69 6e 6b 73 20 62 65 74 77 65 65 6e 20 42 45 47 20 61 6e 64 20 45 4e 44 2e 0a 0a 52 65 e.links.between.BEG.and.END...Re
a30c0 74 75 72 6e 20 61 20 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 turn.a.list.of.the.form..((:text
a30e0 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 61 74 .\"some.text\")...(:media.\"/pat
a3100 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 2f 70 h/to/media.png\".:mime.\"image/p
a3120 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 0a 66 ng\")...(:text.\"More.text\")).f
a3140 6f 72 20 69 6e 63 6c 75 73 69 6f 6e 20 69 6e 74 6f 20 74 68 65 20 75 73 65 72 20 70 72 6f 6d 70 or.inclusion.into.the.user.promp
a3160 74 20 66 6f 72 20 74 68 65 20 67 70 74 65 6c 20 72 65 71 75 65 73 74 2e 22 0a 20 20 28 72 65 71 t.for.the.gptel.request."...(req
a3180 75 69 72 65 20 27 6d 61 69 6c 63 61 70 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 uire.'mailcap)..................
a31a0 20 20 3b 46 49 58 4d 45 20 41 76 6f 69 64 20 74 68 69 73 20 73 6f 6d 65 68 6f 77 0a 20 20 28 6c ..;FIXME.Avoid.this.somehow...(l
a31c0 65 74 20 28 28 70 61 72 74 73 29 20 28 66 72 6f 6d 2d 70 74 29 20 28 6d 69 6d 65 29 0a 20 20 20 et.((parts).(from-pt).(mime)....
a31e0 20 20 20 20 20 28 6c 69 6e 6b 2d 72 65 67 65 78 20 28 63 6f 6e 63 61 74 20 22 5c 5c 28 3f 3a 22 .....(link-regex.(concat."\\(?:"
a3200 20 6f 72 67 2d 6c 69 6e 6b 2d 62 72 61 63 6b 65 74 2d 72 65 20 22 5c 5c 7c 22 0a 20 20 20 20 20 .org-link-bracket-re."\\|"......
a3220 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 6c 69 6e 6b 2d .......................org-link-
a3240 61 6e 67 6c 65 2d 72 65 20 22 5c 5c 29 22 29 29 29 0a 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 angle-re."\\)"))).....(save-excu
a3260 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-
a3280 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
a32a0 63 68 2d 66 6f 72 77 61 72 64 20 6c 69 6e 6b 2d 72 65 67 65 78 20 65 6e 64 20 74 29 0a 20 20 20 ch-forward.link-regex.end.t)....
a32c0 20 20 20 20 20 28 73 65 74 71 20 6d 69 6d 65 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 28 77 68 .....(setq.mime.nil).........(wh
a32e0 65 6e 2d 6c 65 74 2a 20 28 28 6c 69 6e 6b 20 28 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 63 6f 6e 74 en-let*.((link.(org-element-cont
a3300 65 78 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 28 67 70 74 65 ext)).....................((gpte
a3320 6c 2d 6f 72 67 2d 2d 6c 69 6e 6b 2d 73 74 61 6e 64 61 6c 6f 6e 65 2d 70 20 6c 69 6e 6b 29 29 0a l-org--link-standalone-p.link)).
a3340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 61 77 2d 6c 69 6e 6b 20 28 6f ....................(raw-link.(o
a3360 72 67 2d 65 6c 65 6d 65 6e 74 2d 70 72 6f 70 65 72 74 79 20 3a 72 61 77 2d 6c 69 6e 6b 20 6c 69 rg-element-property.:raw-link.li
a3380 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 70 61 74 68 20 28 nk)).....................(path.(
a33a0 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 70 72 6f 70 65 72 74 79 20 3a 70 61 74 68 20 6c 69 6e 6b 29 org-element-property.:path.link)
a33c0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 79 70 65 20 28 6f 72 67 ).....................(type.(org
a33e0 2d 65 6c 65 6d 65 6e 74 2d 70 72 6f 70 65 72 74 79 20 3a 74 79 70 65 20 6c 69 6e 6b 29 29 0a 20 -element-property.:type.link))..
a3400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 46 49 58 4d 45 20 54 68 69 73 ...................;;.FIXME.This
a3420 20 69 73 20 6e 6f 74 20 61 20 67 6f 6f 64 20 70 6c 61 63 65 20 74 6f 20 63 68 65 63 6b 20 66 6f .is.not.a.good.place.to.check.fo
a3440 72 20 75 72 6c 20 63 61 70 61 62 69 6c 69 74 79 21 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 r.url.capability!...............
a3460 20 20 20 20 20 20 28 28 6d 65 6d 62 65 72 20 74 79 70 65 20 60 28 22 61 74 74 61 63 68 6d 65 6e ......((member.type.`("attachmen
a3480 74 22 20 22 66 69 6c 65 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 t"."file".......................
a34a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2c 40 28 61 6e 64 20 28 67 70 74 65 6c 2d 2d 6d 6f 64 ..............,@(and.(gptel--mod
a34c0 65 6c 2d 63 61 70 61 62 6c 65 2d 70 20 27 75 72 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 el-capable-p.'url)..............
a34e0 20 20 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 28 22 68 74 74 ..........................'("htt
a3500 70 22 20 22 68 74 74 70 73 22 20 22 66 74 70 22 29 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 p"."https"."ftp"))))))..........
a3520 20 28 63 6f 6e 64 0a 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 .(cond............((member.type.
a3540 27 28 22 66 69 6c 65 22 20 22 61 74 74 61 63 68 6d 65 6e 74 22 29 29 0a 20 20 20 20 20 20 20 20 '("file"."attachment")).........
a3560 20 20 20 20 28 69 66 20 28 66 69 6c 65 2d 72 65 61 64 61 62 6c 65 2d 70 20 70 61 74 68 29 0a 20 ....(if.(file-readable-p.path)..
a3580 20 20 20 20 20 20 20 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 .............(if.(or.(not.(gptel
a35a0 2d 2d 66 69 6c 65 2d 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 --file-binary-p.path))..........
a35c0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 28 73 65 74 71 20 6d 69 6d 65 20 28 6d 61 .............(and.(setq.mime.(ma
a35e0 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 70 61 74 ilcap-file-name-to-mime-type.pat
a3600 68 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 h))............................(
a3620 67 70 74 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 gptel--model-mime-capable-p.mime
a3640 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 67 6e 20 20 20 20 )))...................(progn....
a3660 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 74 65 78 74 20 66 69 6c 65 20 6f 72 20 73 75 70 70 6f ............;.text.file.or.suppo
a3680 72 74 65 64 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 20 rted.binary.file................
a36a0 20 20 20 20 20 3b 3b 20 63 6f 6c 6c 65 63 74 20 74 65 78 74 20 75 70 20 74 6f 20 6c 69 6e 6b 0a .....;;.collect.text.up.to.link.
a36c0 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 28 ....................(when-let*.(
a36e0 28 74 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 (text.(buffer-substring-no-prope
a3700 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...........................
a3720 20 20 20 20 20 20 20 20 20 20 20 20 20 66 72 6f 6d 2d 70 74 20 28 67 70 74 65 6c 2d 6f 72 67 2d .............from-pt.(gptel-org-
a3740 2d 65 6c 65 6d 65 6e 74 2d 62 65 67 69 6e 20 6c 69 6e 6b 29 29 29 29 0a 20 20 20 20 20 20 20 20 -element-begin.link)))).........
a3760 20 20 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 ..............(unless.(string-bl
a3780 61 6e 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 ank-p.text).(push.(list.:text.te
a37a0 78 74 29 20 70 61 72 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 xt).parts)))....................
a37c0 20 3b 3b 20 63 6f 6c 6c 65 63 74 20 6c 69 6e 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .;;.collect.link................
a37e0 20 20 20 20 20 28 70 75 73 68 20 28 69 66 20 6d 69 6d 65 20 28 6c 69 73 74 20 3a 6d 65 64 69 61 .....(push.(if.mime.(list.:media
a3800 20 70 61 74 68 20 3a 6d 69 6d 65 20 6d 69 6d 65 29 20 28 6c 69 73 74 20 3a 74 65 78 74 66 69 6c .path.:mime.mime).(list.:textfil
a3820 65 20 70 61 74 68 29 29 20 70 61 72 74 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 e.path)).parts).................
a3840 20 20 20 20 28 73 65 74 71 20 66 72 6f 6d 2d 70 74 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 ....(setq.from-pt.(point))).....
a3860 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 72 69 6e 67 20 75 ............(message."Ignoring.u
a3880 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 73 5c 22 2e 22 20 nsupported.binary.file.\"%s\".".
a38a0 70 61 74 68 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 22 49 path))...............(message."I
a38c0 67 6e 6f 72 69 6e 67 20 69 6e 61 63 63 65 73 73 69 62 6c 65 20 66 69 6c 65 20 5c 22 25 73 5c 22 gnoring.inaccessible.file.\"%s\"
a38e0 2e 22 20 70 61 74 68 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 28 61 6e 64 20 28 6d 65 6d .".path)))............((and.(mem
a3900 62 65 72 20 74 79 70 65 20 27 28 22 68 74 74 70 22 20 22 68 74 74 70 73 22 20 22 66 74 70 22 29 ber.type.'("http"."https"."ftp")
a3920 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 6d 69 6d 65 20 28 6d )..................(setq.mime.(m
a3940 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 70 61 ailcap-file-name-to-mime-type.pa
a3960 74 68 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 2d 6d 6f th))..................(gptel--mo
a3980 64 65 6c 2d 63 61 70 61 62 6c 65 2d 70 20 6d 69 6d 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 del-capable-p.mime))............
a39a0 20 3b 3b 20 43 6f 6c 6c 65 63 74 20 74 65 78 74 20 75 70 20 74 6f 20 74 68 69 73 20 69 6d 61 67 .;;.Collect.text.up.to.this.imag
a39c0 65 2c 20 61 6e 64 20 63 6f 6c 6c 65 63 74 20 74 68 69 73 20 69 6d 61 67 65 20 75 72 6c 0a 20 20 e,.and.collect.this.image.url...
a39e0 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 74 65 78 74 20 28 62 75 66 ..........(when-let*.((text.(buf
a3a00 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.....
a3a20 20 20 20 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 72 6f 6d 2d ...........................from-
a3a40 70 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 6c 69 6e pt.(gptel-org--element-begin.lin
a3a60 6b 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 73 74 72 k))))...............(unless.(str
a3a80 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 3a 74 ing-blank-p.text).(push.(list.:t
a3aa0 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 20 28 ext.text).parts))).............(
a3ac0 70 75 73 68 20 28 6c 69 73 74 20 3a 75 72 6c 20 72 61 77 2d 6c 69 6e 6b 20 3a 6d 69 6d 65 20 6d push.(list.:url.raw-link.:mime.m
a3ae0 69 6d 65 29 20 70 61 72 74 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 66 72 ime).parts).............(setq.fr
a3b00 6f 6d 2d 70 74 20 28 70 6f 69 6e 74 29 29 29 29 29 29 0a 20 20 20 20 20 20 28 75 6e 6c 65 73 73 om-pt.(point)))))).......(unless
a3b20 20 28 3d 20 66 72 6f 6d 2d 70 74 20 65 6e 64 29 0a 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 .(=.from-pt.end).........(push.(
a3b40 6c 69 73 74 20 3a 74 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 list.:text.(buffer-substring-no-
a3b60 70 72 6f 70 65 72 74 69 65 73 20 66 72 6f 6d 2d 70 74 20 65 6e 64 29 29 20 70 61 72 74 73 29 29 properties.from-pt.end)).parts))
a3b80 29 0a 20 20 20 20 28 6e 72 65 76 65 72 73 65 20 70 61 72 74 73 29 29 29 0a 0a 28 64 65 66 75 6e ).....(nreverse.parts)))..(defun
a3ba0 20 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 20 28 6f .gptel-org--link-standalone-p.(o
a3bc0 62 6a 65 63 74 29 0a 20 20 22 43 68 65 63 6b 20 69 66 20 6c 69 6e 6b 20 4f 42 4a 45 43 54 20 69 bject)..."Check.if.link.OBJECT.i
a3be0 73 20 6f 6e 20 61 20 6c 69 6e 65 20 62 79 20 69 74 73 65 6c 66 2e 22 0a 20 20 3b 3b 20 53 70 65 s.on.a.line.by.itself."...;;.Spe
a3c00 63 69 66 79 20 61 6e 63 65 73 74 6f 72 20 54 59 50 45 53 20 61 73 20 6c 69 73 74 20 28 23 32 34 cify.ancestor.TYPES.as.list.(#24
a3c20 35 29 0a 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 70 61 72 20 28 6f 72 67 2d 65 6c 65 6d 65 5)...(when-let*.((par.(org-eleme
a3c40 6e 74 2d 6c 69 6e 65 61 67 65 20 6f 62 6a 65 63 74 20 27 28 70 61 72 61 67 72 61 70 68 29 29 29 nt-lineage.object.'(paragraph)))
a3c60 29 0a 20 20 20 20 28 61 6e 64 20 28 3d 20 28 67 70 74 65 6c 2d 6f 72 67 2d 2d 65 6c 65 6d 65 6e ).....(and.(=.(gptel-org--elemen
a3c80 74 2d 62 65 67 69 6e 20 6f 62 6a 65 63 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 73 61 76 t-begin.object).............(sav
a3ca0 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 67 6f 74 6f 2d e-excursion...............(goto-
a3cc0 63 68 61 72 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 6f 6e 74 char.(org-element-property.:cont
a3ce0 65 6e 74 73 2d 62 65 67 69 6e 20 70 61 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 ents-begin.par))...............(
a3d00 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 20 20 20 skip-chars-forward."\t.").......
a3d20 20 20 20 20 20 20 20 20 28 70 6f 69 6e 74 29 29 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ........(point)))...............
a3d40 20 20 3b 61 63 63 6f 75 6e 74 20 66 6f 72 20 6c 65 61 64 69 6e 67 20 73 70 61 63 65 20 62 65 66 ..;account.for.leading.space.bef
a3d60 6f 72 65 20 6f 62 6a 65 63 74 0a 20 20 20 20 20 20 20 20 20 28 3c 3d 20 28 2d 20 28 6f 72 67 2d ore.object..........(<=.(-.(org-
a3d80 65 6c 65 6d 65 6e 74 2d 70 72 6f 70 65 72 74 79 20 3a 63 6f 6e 74 65 6e 74 73 2d 65 6e 64 20 70 element-property.:contents-end.p
a3da0 61 72 29 0a 20 20 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 ar).................(org-element
a3dc0 2d 70 72 6f 70 65 72 74 79 20 3a 65 6e 64 20 6f 62 6a 65 63 74 29 29 0a 20 20 20 20 20 20 20 20 -property.:end.object)).........
a3de0 20 20 20 20 20 31 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 65 .....1))))..(defun.gptel-org--se
a3e00 6e 64 2d 77 69 74 68 2d 70 72 6f 70 73 20 28 73 65 6e 64 2d 66 75 6e 20 26 72 65 73 74 20 61 72 nd-with-props.(send-fun.&rest.ar
a3e20 67 73 29 0a 20 20 22 43 6f 6e 64 69 74 69 6f 6e 61 6c 6c 79 20 6d 6f 64 69 66 79 20 53 45 4e 44 gs)..."Conditionally.modify.SEND
a3e40 2d 46 55 4e 27 73 20 63 61 6c 6c 69 6e 67 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 2e 0a 0a 49 66 20 -FUN's.calling.environment...If.
a3e60 69 6e 20 61 6e 20 4f 72 67 20 62 75 66 66 65 72 20 75 6e 64 65 72 20 61 20 68 65 61 64 69 6e 67 in.an.Org.buffer.under.a.heading
a3e80 20 63 6f 6e 74 61 69 6e 69 6e 67 20 61 20 73 74 6f 72 65 64 20 67 70 74 65 6c 0a 63 6f 6e 66 69 .containing.a.stored.gptel.confi
a3ea0 67 75 72 61 74 69 6f 6e 2c 20 75 73 65 20 74 68 61 74 20 66 6f 72 20 72 65 71 75 65 73 74 73 20 guration,.use.that.for.requests.
a3ec0 69 6e 73 74 65 61 64 2e 20 20 54 68 69 73 20 69 6e 63 6c 75 64 65 73 20 74 68 65 0a 73 79 73 74 instead...This.includes.the.syst
a3ee0 65 6d 20 6d 65 73 73 61 67 65 2c 20 6d 6f 64 65 6c 20 61 6e 64 20 70 72 6f 76 69 64 65 72 20 28 em.message,.model.and.provider.(
a3f00 62 61 63 6b 65 6e 64 29 2c 20 61 6d 6f 6e 67 20 6f 74 68 65 72 0a 70 61 72 61 6d 65 74 65 72 73 backend),.among.other.parameters
a3f20 2e 0a 0a 41 52 47 53 20 61 72 65 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 66 75 6e 63 74 69 6f ...ARGS.are.the.original.functio
a3f40 6e 20 63 61 6c 6c 20 61 72 67 75 6d 65 6e 74 73 2e 22 0a 20 20 28 69 66 20 28 64 65 72 69 76 65 n.call.arguments."...(if.(derive
a3f60 64 2d 6d 6f 64 65 2d 70 20 27 6f 72 67 2d 6d 6f 64 65 29 0a 20 20 20 20 20 20 28 70 63 61 73 65 d-mode-p.'org-mode).......(pcase
a3f80 2d 6c 65 74 20 28 28 60 28 2c 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 20 -let.((`(,gptel--system-message.
a3fa0 2c 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 2c 67 70 74 65 6c 2d 6d 6f 64 65 6c 0a 20 20 20 20 ,gptel-backend.,gptel-model.....
a3fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2c 67 70 74 65 6c 2d 74 65 6d 70 65 72 61 74 .................,gptel-temperat
a3fe0 75 72 65 20 2c 67 70 74 65 6c 2d 6d 61 78 2d 74 6f 6b 65 6e 73 29 0a 20 20 20 20 20 20 20 20 20 ure.,gptel-max-tokens)..........
a4000 20 20 20 20 20 20 20 20 20 20 28 73 65 71 2d 6d 61 70 6e 20 28 6c 61 6d 62 64 61 20 28 61 20 62 ..........(seq-mapn.(lambda.(a.b
a4020 29 20 28 6f 72 20 61 20 62 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ).(or.a.b)).....................
a4040 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 6f 72 67 2d 2d 65 6e 74 72 79 2d 70 72 6f 70 65 .........(gptel-org--entry-prope
a4060 72 74 69 65 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rties)..........................
a4080 20 20 20 20 28 6c 69 73 74 20 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 20 ....(list.gptel--system-message.
a40a0 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 0a 20 20 20 20 20 20 gptel-backend.gptel-model.......
a40c0 20 20 20 20 20 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
a40e0 65 6c 2d 74 65 6d 70 65 72 61 74 75 72 65 20 67 70 74 65 6c 2d 6d 61 78 2d 74 6f 6b 65 6e 73 29 el-temperature.gptel-max-tokens)
a4100 29 29 29 0a 20 20 20 20 20 20 20 20 28 61 70 70 6c 79 20 73 65 6e 64 2d 66 75 6e 20 61 72 67 73 ))).........(apply.send-fun.args
a4120 29 29 0a 20 20 20 20 28 61 70 70 6c 79 20 73 65 6e 64 2d 66 75 6e 20 61 72 67 73 29 29 29 0a 0a )).....(apply.send-fun.args)))..
a4140 28 61 64 76 69 63 65 2d 61 64 64 20 27 67 70 74 65 6c 2d 73 65 6e 64 20 3a 61 72 6f 75 6e 64 20 (advice-add.'gptel-send.:around.
a4160 23 27 67 70 74 65 6c 2d 6f 72 67 2d 2d 73 65 6e 64 2d 77 69 74 68 2d 70 72 6f 70 73 29 0a 28 61 #'gptel-org--send-with-props).(a
a4180 64 76 69 63 65 2d 61 64 64 20 27 67 70 74 65 6c 2d 2d 73 75 66 66 69 78 2d 73 65 6e 64 20 3a 61 dvice-add.'gptel--suffix-send.:a
a41a0 72 6f 75 6e 64 20 23 27 67 70 74 65 6c 2d 6f 72 67 2d 2d 73 65 6e 64 2d 77 69 74 68 2d 70 72 6f round.#'gptel-org--send-with-pro
a41c0 70 73 29 0a 0a 3b 3b 20 3b 3b 20 4e 4f 54 45 3a 20 42 61 73 69 63 20 75 73 65 73 20 69 6e 20 6f ps)..;;.;;.NOTE:.Basic.uses.in.o
a41e0 72 67 2d 6d 6f 64 65 20 61 72 65 20 63 6f 76 65 72 65 64 20 62 79 20 61 64 76 69 73 69 6e 67 20 rg-mode.are.covered.by.advising.
a4200 67 70 74 65 6c 2d 73 65 6e 64 20 61 6e 64 0a 3b 3b 20 3b 3b 20 67 70 74 65 6c 2d 2d 73 75 66 66 gptel-send.and.;;.;;.gptel--suff
a4220 69 78 2d 73 65 6e 64 2e 20 20 46 6f 72 20 63 75 73 74 6f 6d 20 63 6f 6d 6d 61 6e 64 73 20 69 74 ix-send...For.custom.commands.it
a4240 20 6d 69 67 68 74 20 62 65 20 6e 65 63 65 73 73 61 72 79 20 74 6f 20 61 64 76 69 73 65 0a 3b 3b .might.be.necessary.to.advise.;;
a4260 20 3b 3b 20 67 70 74 65 6c 2d 72 65 71 75 65 73 74 20 69 6e 73 74 65 61 64 2e 0a 3b 3b 20 28 61 .;;.gptel-request.instead..;;.(a
a4280 64 76 69 63 65 2d 61 64 64 20 27 67 70 74 65 6c 2d 72 65 71 75 65 73 74 20 3a 61 72 6f 75 6e 64 dvice-add.'gptel-request.:around
a42a0 20 23 27 67 70 74 65 6c 2d 6f 72 67 2d 2d 73 65 6e 64 2d 77 69 74 68 2d 70 72 6f 70 73 29 0a 0a .#'gptel-org--send-with-props)..
a42c0 0c 0a 3b 3b 3b 20 53 61 76 69 6e 67 20 61 6e 64 20 72 65 73 74 6f 72 69 6e 67 20 73 74 61 74 65 ..;;;.Saving.and.restoring.state
a42e0 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 6f 72 67 2d 2d 65 6e 74 72 79 2d 70 72 6f 70 65 72 74 .(defun.gptel-org--entry-propert
a4300 69 65 73 20 28 26 6f 70 74 69 6f 6e 61 6c 20 70 74 29 0a 20 20 22 46 69 6e 64 20 67 70 74 65 6c ies.(&optional.pt)..."Find.gptel
a4320 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 70 72 6f 70 65 72 74 69 65 73 20 73 74 6f 72 65 64 .configuration.properties.stored
a4340 20 61 74 20 50 54 2e 22 0a 20 20 28 70 63 61 73 65 2d 6c 65 74 0a 20 20 20 20 20 20 28 28 60 28 .at.PT."...(pcase-let.......((`(
a4360 2c 73 79 73 74 65 6d 20 2c 62 61 63 6b 65 6e 64 20 2c 6d 6f 64 65 6c 20 2c 74 65 6d 70 65 72 61 ,system.,backend.,model.,tempera
a4380 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 20 28 6d 61 70 ture.,tokens.,num)..........(map
a43a0 63 61 72 0a 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 70 72 6f 70 29 20 28 6f 72 car...........(lambda.(prop).(or
a43c0 67 2d 65 6e 74 72 79 2d 67 65 74 20 28 6f 72 20 70 74 20 28 70 6f 69 6e 74 29 29 20 70 72 6f 70 g-entry-get.(or.pt.(point)).prop
a43e0 20 27 73 65 6c 65 63 74 69 76 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 27 28 22 47 50 54 45 4c .'selective))...........'("GPTEL
a4400 5f 53 59 53 54 45 4d 22 20 22 47 50 54 45 4c 5f 42 41 43 4b 45 4e 44 22 20 22 47 50 54 45 4c 5f _SYSTEM"."GPTEL_BACKEND"."GPTEL_
a4420 4d 4f 44 45 4c 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 47 50 54 45 4c 5f 54 45 4d 50 45 52 MODEL"............."GPTEL_TEMPER
a4440 41 54 55 52 45 22 20 22 47 50 54 45 4c 5f 4d 41 58 5f 54 4f 4b 45 4e 53 22 0a 20 20 20 20 20 20 ATURE"."GPTEL_MAX_TOKENS".......
a4460 20 20 20 20 20 20 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 ......"GPTEL_NUM_MESSAGES_TO_SEN
a4480 44 22 29 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 73 79 73 74 65 6d 0a 20 20 20 20 20 20 28 73 D")))).....(when.system.......(s
a44a0 65 74 71 20 73 79 73 74 65 6d 20 28 73 74 72 69 6e 67 2d 72 65 70 6c 61 63 65 20 22 5c 5c 6e 22 etq.system.(string-replace."\\n"
a44c0 20 22 5c 6e 22 20 73 79 73 74 65 6d 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 62 61 63 6b 65 6e ."\n".system))).....(when.backen
a44e0 64 0a 20 20 20 20 20 20 28 73 65 74 71 20 62 61 63 6b 65 6e 64 20 28 61 6c 69 73 74 2d 67 65 74 d.......(setq.backend.(alist-get
a4500 20 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 62 61 63 6b 65 6e 64 73 0a 20 .backend.gptel--known-backends..
a4520 20 20 20 20 20 20 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 ..............................ni
a4540 6c 20 6e 69 6c 20 23 27 65 71 75 61 6c 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 6d 6f 64 65 6c l.nil.#'equal))).....(when.model
a4560 20 28 73 65 74 71 20 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 .(setq.model.(gptel--intern.mode
a4580 6c 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 74 65 6d 70 65 72 61 74 75 72 65 0a 20 20 20 20 20 l))).....(when.temperature......
a45a0 20 28 73 65 74 71 20 74 65 6d 70 65 72 61 74 75 72 65 20 28 67 70 74 65 6c 2d 2d 74 6f 2d 6e 75 .(setq.temperature.(gptel--to-nu
a45c0 6d 62 65 72 20 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 74 6f mber.temperature))).....(when.to
a45e0 6b 65 6e 73 20 28 73 65 74 71 20 74 6f 6b 65 6e 73 20 28 67 70 74 65 6c 2d 2d 74 6f 2d 6e 75 6d kens.(setq.tokens.(gptel--to-num
a4600 62 65 72 20 74 6f 6b 65 6e 73 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 6e 75 6d 20 28 73 65 74 ber.tokens))).....(when.num.(set
a4620 71 20 6e 75 6d 20 28 67 70 74 65 6c 2d 2d 74 6f 2d 6e 75 6d 62 65 72 20 6e 75 6d 29 29 29 0a 20 q.num.(gptel--to-number.num)))..
a4640 20 20 20 28 6c 69 73 74 20 73 79 73 74 65 6d 20 62 61 63 6b 65 6e 64 20 6d 6f 64 65 6c 20 74 65 ...(list.system.backend.model.te
a4660 6d 70 65 72 61 74 75 72 65 20 74 6f 6b 65 6e 73 20 6e 75 6d 29 29 29 0a 0a 28 64 65 66 75 6e 20 mperature.tokens.num)))..(defun.
a4680 67 70 74 65 6c 2d 6f 72 67 2d 2d 72 65 73 74 6f 72 65 2d 73 74 61 74 65 20 28 29 0a 20 20 22 52 gptel-org--restore-state.()..."R
a46a0 65 73 74 6f 72 65 20 67 70 74 65 6c 20 73 74 61 74 65 20 66 6f 72 20 4f 72 67 20 62 75 66 66 65 estore.gptel.state.for.Org.buffe
a46c0 72 73 20 77 68 65 6e 20 74 75 72 6e 69 6e 67 20 6f 6e 20 60 67 70 74 65 6c 2d 6d 6f 64 65 27 2e rs.when.turning.on.`gptel-mode'.
a46e0 22 0a 20 20 28 73 61 76 65 2d 72 65 73 74 72 69 63 74 69 6f 6e 0a 20 20 20 20 28 6c 65 74 20 28 "...(save-restriction.....(let.(
a4700 28 6d 6f 64 69 66 69 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 (modified.(buffer-modified-p))).
a4720 20 20 20 20 20 20 28 77 69 64 65 6e 29 0a 20 20 20 20 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 ......(widen).......(condition-c
a4740 61 73 65 20 73 74 61 74 75 73 0a 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 67 6e 0a 20 20 20 20 ase.status...........(progn.....
a4760 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 73 20 28 6f 72 67 ........(when-let*.((bounds.(org
a4780 2d 65 6e 74 72 79 2d 67 65 74 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 22 47 50 54 45 4c 5f 42 4f -entry-get.(point-min)."GPTEL_BO
a47a0 55 4e 44 53 22 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 72 UNDS")))...............(gptel--r
a47c0 65 73 74 6f 72 65 2d 70 72 6f 70 73 20 28 72 65 61 64 20 62 6f 75 6e 64 73 29 29 29 0a 20 20 20 estore-props.(read.bounds)))....
a47e0 20 20 20 20 20 20 20 20 20 28 70 63 61 73 65 2d 6c 65 74 20 28 28 60 28 2c 73 79 73 74 65 6d 20 .........(pcase-let.((`(,system.
a4800 2c 62 61 63 6b 65 6e 64 20 2c 6d 6f 64 65 6c 20 2c 74 65 6d 70 65 72 61 74 75 72 65 20 2c 74 6f ,backend.,model.,temperature.,to
a4820 6b 65 6e 73 20 2c 6e 75 6d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 kens.,num)......................
a4840 20 20 20 20 28 67 70 74 65 6c 2d 6f 72 67 2d 2d 65 6e 74 72 79 2d 70 72 6f 70 65 72 74 69 65 73 ....(gptel-org--entry-properties
a4860 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 .(point-min))))...............(w
a4880 68 65 6e 20 73 79 73 74 65 6d 20 28 73 65 74 71 2d 6c 6f 63 61 6c 20 67 70 74 65 6c 2d 2d 73 79 hen.system.(setq-local.gptel--sy
a48a0 73 74 65 6d 2d 6d 65 73 73 61 67 65 20 73 79 73 74 65 6d 29 29 0a 20 20 20 20 20 20 20 20 20 20 stem-message.system))...........
a48c0 20 20 20 20 28 69 66 20 62 61 63 6b 65 6e 64 20 28 73 65 74 71 2d 6c 6f 63 61 6c 20 67 70 74 65 ....(if.backend.(setq-local.gpte
a48e0 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 20 l-backend.backend)..............
a4900 20 20 20 28 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 28 73 75 ...(message..................(su
a4920 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 20 20 20 20 20 20 bstitute-command-keys...........
a4940 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 20 20 20 ........(concat.................
a4960 20 20 20 22 43 6f 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 ..."Could.not.activate.gptel.bac
a4980 6b 65 6e 64 20 5c 22 25 73 5c 22 21 20 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 kend.\"%s\"!..".................
a49a0 20 20 20 22 53 77 69 74 63 68 20 62 61 63 6b 65 6e 64 73 20 77 69 74 68 20 5c 5c 5b 75 6e 69 76 ..."Switch.backends.with.\\[univ
a49c0 65 72 73 61 6c 2d 61 72 67 75 6d 65 6e 74 5d 20 5c 5c 5b 67 70 74 65 6c 2d 73 65 6e 64 5d 22 0a ersal-argument].\\[gptel-send]".
a49e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 20 62 65 66 6f 72 65 20 75 73 69 6e ...................".before.usin
a4a00 67 20 67 70 74 65 6c 2e 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 61 63 g.gptel."))..................bac
a4a20 6b 65 6e 64 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 6d 6f 64 65 6c kend))...............(when.model
a4a40 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 6d 6f 64 65 6c 29 29 .(setq-local.gptel-model.model))
a4a60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 74 65 6d 70 65 72 61 74 75 72 65 ...............(when.temperature
a4a80 20 28 73 65 74 71 2d 6c 6f 63 61 6c 20 67 70 74 65 6c 2d 74 65 6d 70 65 72 61 74 75 72 65 20 74 .(setq-local.gptel-temperature.t
a4aa0 65 6d 70 65 72 61 74 75 72 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e emperature))...............(when
a4ac0 20 74 6f 6b 65 6e 73 20 28 73 65 74 71 2d 6c 6f 63 61 6c 20 67 70 74 65 6c 2d 6d 61 78 2d 74 6f .tokens.(setq-local.gptel-max-to
a4ae0 6b 65 6e 73 20 74 6f 6b 65 6e 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 kens.tokens))...............(whe
a4b00 6e 20 6e 75 6d 20 28 73 65 74 71 2d 6c 6f 63 61 6c 20 67 70 74 65 6c 2d 2d 6e 75 6d 2d 6d 65 73 n.num.(setq-local.gptel--num-mes
a4b20 73 61 67 65 73 2d 74 6f 2d 73 65 6e 64 20 6e 75 6d 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 3a sages-to-send.num)))).........(:
a4b40 73 75 63 63 65 73 73 20 28 6d 65 73 73 61 67 65 20 22 67 70 74 65 6c 20 63 68 61 74 20 72 65 73 success.(message."gptel.chat.res
a4b60 74 6f 72 65 64 2e 22 29 29 0a 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 20 28 6d 65 73 73 61 67 tored.")).........(error.(messag
a4b80 65 20 22 43 6f 75 6c 64 20 6e 6f 74 20 72 65 73 74 6f 72 65 20 67 70 74 65 6c 20 73 74 61 74 65 e."Could.not.restore.gptel.state
a4ba0 2c 20 73 6f 72 72 79 21 20 45 72 72 6f 72 3a 20 25 73 22 20 73 74 61 74 75 73 29 29 29 0a 20 20 ,.sorry!.Error:.%s".status)))...
a4bc0 20 20 20 20 28 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 ....(set-buffer-modified-p.modif
a4be0 69 65 64 29 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 70 72 ied))))..(defun.gptel-org-set-pr
a4c00 6f 70 65 72 74 69 65 73 20 28 70 74 20 26 6f 70 74 69 6f 6e 61 6c 20 6d 73 67 29 0a 20 20 22 53 operties.(pt.&optional.msg)..."S
a4c20 74 6f 72 65 20 74 68 65 20 61 63 74 69 76 65 20 67 70 74 65 6c 20 63 6f 6e 66 69 67 75 72 61 74 tore.the.active.gptel.configurat
a4c40 69 6f 6e 20 75 6e 64 65 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 68 65 61 64 69 6e 67 2e 0a 0a ion.under.the.current.heading...
a4c60 54 68 65 20 61 63 74 69 76 65 20 67 70 74 65 6c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 69 The.active.gptel.configuration.i
a4c80 6e 63 6c 75 64 65 73 20 74 68 65 20 63 75 72 72 65 6e 74 20 73 79 73 74 65 6d 0a 6d 65 73 73 61 ncludes.the.current.system.messa
a4ca0 67 65 2c 20 6c 61 6e 67 75 61 67 65 20 6d 6f 64 65 6c 20 61 6e 64 20 70 72 6f 76 69 64 65 72 20 ge,.language.model.and.provider.
a4cc0 28 62 61 63 6b 65 6e 64 29 2c 20 61 6e 64 20 61 64 64 69 74 69 6f 6e 61 6c 0a 73 65 74 74 69 6e (backend),.and.additional.settin
a4ce0 67 73 20 77 68 65 6e 20 61 70 70 6c 69 63 61 62 6c 65 2e 0a 0a 50 54 20 69 73 20 74 68 65 20 63 gs.when.applicable...PT.is.the.c
a4d00 75 72 73 6f 72 20 70 6f 73 69 74 69 6f 6e 20 62 79 20 64 65 66 61 75 6c 74 2e 20 20 49 66 20 4d ursor.position.by.default...If.M
a4d20 53 47 20 69 73 0a 6e 6f 6e 2d 6e 69 6c 20 28 64 65 66 61 75 6c 74 29 2c 20 64 69 73 70 6c 61 79 SG.is.non-nil.(default),.display
a4d40 20 61 20 6d 65 73 73 61 67 65 20 61 66 74 65 72 77 61 72 64 73 2e 22 0a 20 20 28 69 6e 74 65 72 .a.message.afterwards."...(inter
a4d60 61 63 74 69 76 65 20 28 6c 69 73 74 20 28 70 6f 69 6e 74 29 20 74 29 29 0a 20 20 28 6f 72 67 2d active.(list.(point).t))...(org-
a4d80 65 6e 74 72 79 2d 70 75 74 20 70 74 20 22 47 50 54 45 4c 5f 4d 4f 44 45 4c 22 20 28 67 70 74 65 entry-put.pt."GPTEL_MODEL".(gpte
a4da0 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 28 6f l--model-name.gptel-model))...(o
a4dc0 72 67 2d 65 6e 74 72 79 2d 70 75 74 20 70 74 20 22 47 50 54 45 4c 5f 42 41 43 4b 45 4e 44 22 20 rg-entry-put.pt."GPTEL_BACKEND".
a4de0 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e (gptel-backend-name.gptel-backen
a4e00 64 29 29 0a 20 20 28 75 6e 6c 65 73 73 20 28 65 71 75 61 6c 20 28 64 65 66 61 75 6c 74 2d 76 61 d))...(unless.(equal.(default-va
a4e20 6c 75 65 20 27 67 70 74 65 6c 2d 74 65 6d 70 65 72 61 74 75 72 65 29 20 67 70 74 65 6c 2d 74 65 lue.'gptel-temperature).gptel-te
a4e40 6d 70 65 72 61 74 75 72 65 29 0a 20 20 20 20 28 6f 72 67 2d 65 6e 74 72 79 2d 70 75 74 20 70 74 mperature).....(org-entry-put.pt
a4e60 20 22 47 50 54 45 4c 5f 54 45 4d 50 45 52 41 54 55 52 45 22 0a 20 20 20 20 20 20 20 20 20 20 20 ."GPTEL_TEMPERATURE"............
a4e80 20 20 20 20 20 20 20 20 28 6e 75 6d 62 65 72 2d 74 6f 2d 73 74 72 69 6e 67 20 67 70 74 65 6c 2d ........(number-to-string.gptel-
a4ea0 74 65 6d 70 65 72 61 74 75 72 65 29 29 29 0a 20 20 28 77 68 65 6e 20 28 6e 61 74 6e 75 6d 70 20 temperature)))...(when.(natnump.
a4ec0 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 0a 20 20 20 gptel--num-messages-to-send)....
a4ee0 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 4e 55 4d 5f 4d 45 .(org-entry-put.pt."GPTEL_NUM_ME
a4f00 53 53 41 47 45 53 5f 54 4f 5f 53 45 4e 44 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 SSAGES_TO_SEND".................
a4f20 20 20 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 2d 6e 75 6d 2d ...(number-to-string.gptel--num-
a4f40 6d 65 73 73 61 67 65 73 2d 74 6f 2d 73 65 6e 64 29 29 29 0a 20 20 28 6f 72 67 2d 65 6e 74 72 79 messages-to-send)))...(org-entry
a4f60 2d 70 75 74 20 70 74 20 22 47 50 54 45 4c 5f 53 59 53 54 45 4d 22 0a 20 20 20 20 20 20 20 20 20 -put.pt."GPTEL_SYSTEM"..........
a4f80 20 20 20 20 20 20 20 20 28 61 6e 64 2d 6c 65 74 2a 20 28 28 6d 73 67 20 28 63 61 72 2d 73 61 66 ........(and-let*.((msg.(car-saf
a4fa0 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...............................
a4fc0 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 0a 20 20 20 20 ....(gptel--parse-directive.....
a4fe0 20 20 20 20 20 20 20 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
a5000 70 74 65 6c 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 20 20 20 ptel--system-message))))........
a5020 20 20 20 20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 2d 72 65 70 6c 61 63 65 20 22 5c 6e 22 ............(string-replace."\n"
a5040 20 22 5c 5c 6e 22 20 6d 73 67 29 29 29 0a 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 6d 61 78 2d ."\\n".msg)))...(when.gptel-max-
a5060 74 6f 6b 65 6e 73 0a 20 20 20 20 28 6f 72 67 2d 65 6e 74 72 79 2d 70 75 74 0a 20 20 20 20 20 70 tokens.....(org-entry-put......p
a5080 74 20 22 47 50 54 45 4c 5f 4d 41 58 5f 54 4f 4b 45 4e 53 22 20 28 6e 75 6d 62 65 72 2d 74 6f 2d t."GPTEL_MAX_TOKENS".(number-to-
a50a0 73 74 72 69 6e 67 20 67 70 74 65 6c 2d 6d 61 78 2d 74 6f 6b 65 6e 73 29 29 29 0a 20 20 28 77 68 string.gptel-max-tokens)))...(wh
a50c0 65 6e 20 6d 73 67 0a 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 41 64 64 65 64 20 67 70 74 65 6c en.msg.....(message."Added.gptel
a50e0 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 74 6f 20 63 75 72 72 65 6e 74 20 68 65 61 64 6c 69 .configuration.to.current.headli
a5100 6e 65 2e 22 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 6f 72 67 2d 2d 73 61 76 65 2d ne.")))..(defun.gptel-org--save-
a5120 73 74 61 74 65 20 28 29 0a 20 20 22 57 72 69 74 65 20 74 68 65 20 67 70 74 65 6c 20 73 74 61 74 state.()..."Write.the.gptel.stat
a5140 65 20 74 6f 20 74 68 65 20 4f 72 67 20 62 75 66 66 65 72 20 61 73 20 4f 72 67 20 70 72 6f 70 65 e.to.the.Org.buffer.as.Org.prope
a5160 72 74 69 65 73 2e 22 0a 20 20 28 6f 72 67 2d 77 69 74 68 2d 77 69 64 65 2d 62 75 66 66 65 72 0a rties."...(org-with-wide-buffer.
a5180 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 28 77 ...(goto-char.(point-min))....(w
a51a0 68 65 6e 20 28 6f 72 67 2d 61 74 2d 68 65 61 64 69 6e 67 2d 70 29 0a 20 20 20 20 20 28 6f 72 67 hen.(org-at-heading-p)......(org
a51c0 2d 6f 70 65 6e 2d 6c 69 6e 65 20 31 29 29 0a 20 20 20 28 67 70 74 65 6c 2d 6f 72 67 2d 73 65 74 -open-line.1))....(gptel-org-set
a51e0 2d 70 72 6f 70 65 72 74 69 65 73 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 0a 20 20 20 3b 3b 20 53 -properties.(point-min))....;;.S
a5200 61 76 65 20 72 65 73 70 6f 6e 73 65 20 62 6f 75 6e 64 61 72 69 65 73 0a 20 20 20 28 6c 65 74 72 ave.response.boundaries....(letr
a5220 65 63 20 28 28 77 72 69 74 65 2d 62 6f 75 6e 64 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 ec.((write-bounds..............(
a5240 6c 61 6d 62 64 61 20 28 61 74 74 65 6d 70 74 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 lambda.(attempts)...............
a5260 20 28 6c 65 74 2a 20 28 28 62 6f 75 6e 64 73 20 28 67 70 74 65 6c 2d 2d 67 65 74 2d 62 75 66 66 .(let*.((bounds.(gptel--get-buff
a5280 65 72 2d 62 6f 75 6e 64 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 er-bounds)).....................
a52a0 20 20 3b 3b 20 66 69 72 73 74 20 76 61 6c 75 65 20 6f 66 20 28 28 70 72 6f 70 20 2e 20 28 28 62 ..;;.first.value.of.((prop...((b
a52c0 65 67 20 65 6e 64 20 76 61 6c 29 2e 2e 2e 29 29 2e 2e 2e 29 0a 20 20 20 20 20 20 20 20 20 20 20 eg.end.val)...))...)............
a52e0 20 20 20 20 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 ...........(offset.(caadar.bound
a5300 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 66 66 73 65 s)).......................(offse
a5320 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 65 t-marker.(set-marker.(make-marke
a5340 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 6f r).offset)))..................(o
a5360 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 5f rg-entry-put.(point-min)."GPTEL_
a5380 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 20 BOUNDS".........................
a53a0 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 2d ........(prin1-to-string.(gptel-
a53c0 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 20 -get-buffer-bounds)))...........
a53e0 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 65 .......(when.(and.(not.(=.(marke
a5400 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 74 r-position.offset-marker).offset
a5420 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 )).............................(
a5440 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 20 >.attempts.0))..................
a5460 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 65 ..(funcall.write-bounds.(1-.atte
a5480 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 2d mpts)))))))......(funcall.write-
a54a0 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 67 bounds.6))))....;;;.Transforming
a54c0 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 6e .responses.;;;###autoload.(defun
a54e0 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 73 .gptel--convert-markdown->org.(s
a5500 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 6d tr)..."Convert.string.STR.from.m
a5520 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 20 arkdown.to.org.markup...This.is.
a5540 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 64 a.very.basic.converter.that.hand
a5560 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 22 les.only.a.few.markup.elements."
a5580 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 74 ...(with-temp-buffer.....(insert
a55a0 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 29 .str).....(goto-char.(point-min)
a55c0 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 20 ).....(while.(re-search-forward.
a55e0 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 69 "`+\\|\\*\\{1,2\\}\\|_\\|^#+".ni
a5600 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 20 l.t).......(pcase.(match-string.
a5620 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 20 0).........;;.Handle.backticks..
a5640 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 65 .......((and.(guard.(eq.(char-be
a5660 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 65 fore).?`)).ticks)..........(gpte
a5680 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 68 l--replace-source-marker.(length
a56a0 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 61 .ticks))..........(save-match-da
a56c0 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 0a ta............(catch.'block-end.
a56e0 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 77 .............(while.(search-forw
a5700 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 20 ard.ticks.nil.t)................
a5720 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 61 (unless.(or.(eq.(char-before.(ma
a5740 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 20 tch-beginning.0)).?`)...........
a5760 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 72 .................(eq.(char-after
a5780 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 2d ).?`))..................(gptel--
a57a0 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 69 replace-source-marker.(length.ti
a57c0 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 72 cks).'end)..................(thr
a57e0 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 20 ow.'block-end.nil)))))).........
a5800 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 64 ;;.Handle.headings.........((and
a5820 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 68 .(guard.(eq.(char-before).?#)).h
a5840 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 20 eading)..........(cond..........
a5860 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 3b .((looking-at."[[:space:]]")...;
a5880 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 65 Handle.headings............(dele
a58a0 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 69 te-region.(line-beginning-positi
a58c0 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 20 on).(point))............(insert.
a58e0 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 2a (make-string.(length.heading).?*
a5900 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 62 )))...........((looking-at."\\+b
a5920 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 68 egin_src").;Overeager.LLM.switch
a5940 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 20 ed.to.using.Org.src.blocks......
a5960 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 63 ......(save-match-data.(re-searc
a5980 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 29 h-forward."^#\\+end_src".nil.t))
a59a0 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 20 ))).........;;.Handle.emphasis..
a59c0 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 20 .......("**".(cond..............
a59e0 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 6f ..;;.((looking-at."\\*\\(?:[[:wo
a5a00 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 3b rd:]]\\|\s\\)")................;
a5a20 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 20 ;..(delete-char.1)).............
a5a40 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 3a ...((looking-back."\\(?:[[:word:
a5a60 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 22 ][:punct:]\n]\\|\s\\)\\*\\{2\\}"
a5a80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 ...............................(
a5aa0 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 0a max.(-.(point).3).(point-min))).
a5ac0 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 29 ................(delete-char.-1)
a5ae0 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 0a ))).........("*"..........(cond.
a5b00 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 20 ..........((save-match-data.....
a5b20 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 0a .........(and.(or.(=.(point).2).
a5b40 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 62 ......................(looking-b
a5b60 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 28 ack."\\(?:[[:space:]]\\|\s\\)\\(
a5b80 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 ?:_\\|\\*\\)"...................
a5ba0 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 74 ..................(max.(-.(point
a5bc0 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 20 ).2).(point-min)))).............
a5be0 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 65 ......(not.(looking-at."[[:space
a5c00 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 73 :]]\\|\s"))))............;;.Poss
a5c20 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 20 ible.beginning.of.emphasis......
a5c40 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 63 ......(and.............(save-exc
a5c60 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 20 ursion...............(when.(and.
a5c80 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 65 (re-search-forward.(regexp-quote
a5ca0 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 20 .(match-string.0))..............
a5cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 ...............................(
a5ce0 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 20 line-end-position).t)...........
a5d00 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 73 ...............(looking-at."[[:s
a5d20 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 20 pace:][:punct:]]\\|\s").........
a5d40 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 62 .................(not.(looking-b
a5d60 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 3f ack."\\(?:[[:space]]\\|\s\\)\\(?
a5d80 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 20 :_\\|\\*\\)"....................
a5da0 20 20 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 .........................(max.(-
a5dc0 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 20 .(point).2).(point-min))))).....
a5de0 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 6e ............(delete-char.-1).(in
a5e00 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 6e sert."/").t)).............(progn
a5e20 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 29 .(delete-char.-1).(insert."/")))
a5e40 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 20 )...........((save-excursion....
a5e60 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 61 ..........(ignore-errors.(backwa
a5e80 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 6e rd-char.2))..............(or.(an
a5ea0 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 63 d.(bobp).(looking-at."\\*[[:spac
a5ec0 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 6e e:]]"))..................(lookin
a5ee0 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 61 g-at."\\(?:$\\|\\`\\)\n\\*[[:spa
a5f00 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 70 ce:]]")))............;;.Bullet.p
a5f20 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 20 oint,.replace.with.hyphen.......
a5f40 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 2d .....(delete-char.-1).(insert."-
a5f60 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 28 ")))))).....(buffer-string)))..(
a5f80 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 6b defun.gptel--replace-source-mark
a5fa0 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 22 er.(num-ticks.&optional.end)..."
a5fc0 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 73 Replace.markdown.style.backticks
a5fe0 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 4b .with.Org.equivalents...NUM-TICK
a6000 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 69 S.is.the.number.of.backticks.bei
a6020 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 65 ng.replaced...If.END.is.true.the
a6040 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 68 se.are.\"ending\".backticks...Th
a6060 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 61 is.is.intended.for.use.in.the.ma
a6080 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 22 rkdown.to.org.stream.converter."
a60a0 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 20 ...(let.((from.(match-beginning.
a60c0 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 6f 0))).....(delete-region.from.(po
a60e0 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 20 int)).....(if.(and.(=.num-ticks.
a6100 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 20 3)..............(save-excursion.
a6120 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 20 (beginning-of-line).............
a6140 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 72 .................(skip-chars-for
a6160 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 20 ward.".\t").....................
a6180 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 20 .........(eq.(point).from)))....
a61a0 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 22 .....(insert.(if.end."#+end_src"
a61c0 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 20 ."#+begin_src.")).......(insert.
a61e0 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 67 "="))))..;;;###autoload.(defun.g
a6200 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 6f ptel--stream-convert-markdown->o
a6220 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 61 rg.(start-marker)..."Return.a.Ma
a6240 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 66 rkdown.to.Org.converter...This.f
a6260 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 64 unction.parses.a.stream.of.Markd
a6280 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 65 own.text.to.Org.continuously.whe
a62a0 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 63 n.it.is.called.with.successive.c
a62c0 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 54 hunks.of.the.text.stream...START
a62e0 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 20 -MARKER.is.used.to.identify.the.
a6300 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 6e corresponding.process.when.clean
a6320 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 72 ing.up.after."...(letrec.((in-sr
a6340 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 74 c-block.nil)...........;explicit
a6360 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 20 .nil.to.address.BUG.#183........
a6380 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 20 ....(in-org-src-block.nil)......
a63a0 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 74 ......(temp-buf.;.NOTE:.Switch.t
a63c0 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 65 o.`generate-new-buffer'.after.we
a63e0 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 70 .drop.Emacs.27.1.............(gp
a6400 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 22 tel--temp-buffer.".*gptel-temp*"
a6420 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 61 ))............(start-pt.(make-ma
a6440 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 30 rker))............(ticks-total.0
a6460 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 64 )......;MAYBE.should.we.let-bind
a6480 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 20 .case-fold-search.here?.........
a64a0 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 62 ...(cleanup-fn.............(lamb
a64c0 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 28 da.(beg._)...............(when.(
a64e0 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 20 and.(equal.beg.(marker-position.
a6500 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 20 start-marker))..................
a6520 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 61 ........(eq.(current-buffer).(ma
a6540 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 20 rker-buffer.start-marker))).....
a6560 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 70 ............(when.(buffer-live-p
a6580 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 20 .(get-buffer.temp-buf)).........
a65a0 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 6e ..........(set-marker.start-pt.n
a65c0 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 66 il)...................(kill-buff
a65e0 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 72 er.temp-buf)).................(r
a6600 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 2d emove-hook.'gptel-post-response-
a6620 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 61 functions.cleanup-fn))))).....(a
a6640 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 6e dd-hook.'gptel-post-response-fun
a6660 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 28 ctions.cleanup-fn).....(lambda.(
a6680 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 73 str).......(let.((noop-p).(ticks
a66a0 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 65 .0)).........(with-current-buffe
a66c0 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 20 r.(get-buffer.temp-buf).........
a66e0 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 6f ..(save-excursion.(goto-char.(po
a6700 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 20 int-max)).(insert.str)).........
a6720 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 70 ..(when.(marker-position.start-p
a6740 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 20 t).(goto-char.start-pt))........
a6760 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 6b ...(when.in-src-block.(setq.tick
a6780 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 2d s.ticks-total))...........(save-
a67a0 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 65 excursion.............(while.(re
a67c0 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 5c -search-forward."`\\|\\*\\{1,2\\
a67e0 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 20 }\\|_\\|^#+".nil.t).............
a6800 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 20 ..(pcase.(match-string.0).......
a6820 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 20 ..........("`"..................
a6840 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 62 ;;.Count.number.of.consecutive.b
a6860 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 77 ackticks..................(backw
a6880 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 6c ard-char)..................(whil
a68a0 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 66 e.(and.(char-after).(eq.(char-af
a68c0 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 6f ter).?`))....................(fo
a68e0 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 28 rward-char)....................(
a6900 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 20 if.in-src-block.(cl-decf.ticks).
a6920 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 20 (cl-incf.ticks)))...............
a6940 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 20 ...;;.Set.the.verbatim.state.of.
a6960 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 20 the.parser..................(if.
a6980 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 20 (and.(eobp).....................
a69a0 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 3a ......;;.Special.case.heuristic:
a69c0 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 20 .If.the.response.ends.with......
a69e0 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 20 .....................;;.^```.we.
a6a00 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 20 don't.wait.for.more.input.......
a6a20 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 54 .....................;;.FIXME:.T
a6a40 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 20 his.can.have.false.positives....
a6a60 20 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 61 ........................(not.(sa
a6a80 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 29 ve-excursion.(beginning-of-line)
a6aa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
a6ac0 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 60 ................(looking-at."^``
a6ae0 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 20 `$"))))......................;;.
a6b00 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 6d End.of.input.=>.there.could.be.m
a6b20 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 20 ore.backticks.coming,...........
a6b40 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 72 ...........;;.so.we.wait.for.mor
a6b60 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 72 e.input......................(pr
a6b80 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 20 ogn.(setq.noop-p.t).(set-marker.
a6ba0 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 20 start-pt.(match-beginning.0)))..
a6bc0 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 20 ..................;;.We.reached.
a6be0 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 63 a.character.other.than.a.backtic
a6c00 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 20 k....................(cond......
a6c20 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 64 ...............;;.Ticks.balanced
a6c40 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 20 ,.end.src.block.................
a6c60 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 20 ....((=.ticks.0)................
a6c80 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 20 ......(progn.(setq.in-src-block.
a6ca0 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 nil)............................
a6cc0 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 74 .(gptel--replace-source-marker.t
a6ce0 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 20 icks-total.'end)))..............
a6d00 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 63 .......;;.Positive.number.of.tic
a6d20 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 20 ks,.start.an.src.block..........
a6d40 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 6f ...........((and.(>.ticks.0).(no
a6d60 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 20 t.in-src-block))................
a6d80 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 20 ......(setq.ticks-total.ticks...
a6da0 20 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 2d .........................in-src-
a6dc0 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 67 block.t)......................(g
a6de0 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 6b ptel--replace-source-marker.tick
a6e00 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 3b s-total)).....................;;
a6e20 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 20 .Negative.number.of.ticks.or.in.
a6e40 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 20 a.src.block.already,............
a6e60 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 20 .........;;.reset.ticks.........
a6e80 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 73 ............(t.(setq.ticks.ticks
a6ea0 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 48 -total))))).................;;.H
a6ec0 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 62 andle.headings.and.misguided.#+b
a6ee0 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 28 egin_src.text.................((
a6f00 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 65 and.(guard.(and.(eq.(char-before
a6f20 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 2d ).?#).(or.(not.in-src-block).in-
a6f40 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 20 org-src-block)))................
a6f60 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 20 .......heading).................
a6f80 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 20 .(if.in-org-src-block...........
a6fa0 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 61 ...........;;.If.we.are.inside.a
a6fc0 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 20 n.Org-style.src.block,.look.for.
a6fe0 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 28 #+end_src......................(
a7000 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 28 cond.......................((<.(
a7020 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 65 -.(point-max).(point)).8).;not.e
a7040 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 73 nough.information.to.close.Org.s
a7060 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 20 rc.block........................
a7080 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 72 (setq.noop-p.t).(set-marker.star
a70a0 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 20 t-pt.(match-beginning.0)))......
a70c0 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 5c .................((looking-at."\
a70e0 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 6b \+end_src").;Close.Org.src.block
a7100 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 6e ........................(setq.in
a7120 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 20 -src-block.nil.in-org-src-block.
a7140 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 68 nil)))....................;;.Oth
a7160 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 6e erwise.check.for.Markdown.headin
a7180 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 20 gs,.or.for.#+begin_src..........
a71a0 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 20 ..........(cond.................
a71c0 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 69 ....((eobp).......;.Not.enough.i
a71e0 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 74 nformation.about.the.heading.yet
a7200 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 70 ......................(setq.noop
a7220 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 63 -p.t).(set-marker.start-pt.(matc
a7240 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 20 h-beginning.0)))................
a7260 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 29 .....((looking-at."[[:space:]]")
a7280 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 4f .;.Convert.markdown.heading.to.O
a72a0 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 20 rg.heading......................
a72c0 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 70 (delete-region.(line-beginning-p
a72e0 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 20 osition).(point))...............
a7300 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 6e .......(insert.(make-string.(len
a7320 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 20 gth.heading).?*)))..............
a7340 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 74 .......((<.(-.(point-max).(point
a7360 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 74 )).11).;Not.enough.information.t
a7380 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 20 o.check.if.Org.src.block........
a73a0 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 73 ..............(setq.noop-p.t).(s
a73c0 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 6e et-marker.start-pt.(match-beginn
a73e0 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 6c ing.0))).....................((l
a7400 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 72 ooking-at."\\+begin_src.").;Over
a7420 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 20 eager.LLM.switched.to.using.Org.
a7440 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 20 src.blocks......................
a7460 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 2d (setq.in-src-block.t.in-org-src-
a7480 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 20 block.t))))).................;;.
a74a0 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 6f Handle.other.chars:.emphasis,.bo
a74c0 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 20 ld.and.bullet.items.............
a74e0 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 72 ....((and."**".(guard.(not.in-sr
a7500 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 6e c-block)))..................(con
a7520 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 20 d...................;;.TODO.Not.
a7540 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 0a sure.why.this.branch.was.needed.
a7560 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 61 ..................;;.((looking-a
a7580 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 20 t."\\*\\(?:[[:word:]]\\|\s\\)").
a75a0 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 20 (delete-char.1))................
a75c0 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 20 ....;;.Looking.back.at."w**".or.
a75e0 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 6e ".**"...................((lookin
a7600 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 5c g-back."\\(?:[[:word:][:punct:]\
a7620 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 20 n]\\|\s\\)\\*\\{2\\}"...........
a7640 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 28 .......................(max.(-.(
a7660 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 20 point).3).(point-min))).........
a7680 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 20 ...........(delete-char.-1))))..
a76a0 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 20 ...............((and."*".(guard.
a76c0 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 20 (not.in-src-block)))............
a76e0 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 20 ......(if.(eobp)................
a7700 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 20 ......;;.Not.enough.information.
a7720 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 20 about.the."*".yet...............
a7740 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 73 .......(progn.(setq.noop-p.t).(s
a7760 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 6e et-marker.start-pt.(match-beginn
a7780 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 22 ing.0)))....................;;."
a77a0 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 65 *".is.either.emphasis.or.a.bulle
a77c0 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 65 t.point....................(save
a77e0 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 20 -match-data.....................
a7800 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 20 .(save-excursion................
a7820 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 64 ........(ignore-errors.(backward
a7840 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 20 -char.2)).......................
a7860 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 28 .(cond.........................(
a7880 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 73 (and.....;.At.bob,.underscore/as
a78a0 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 20 terisk.followed.by.word.........
a78c0 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 70 ..................(or.(and.(bobp
a78e0 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 5c ).(looking-at."\\(?:_\\|\\*\\)\\
a7900 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 29 ([^[:space:][:punct:]]\\|$\\)"))
a7920 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 ...............................(
a7940 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 6e looking-at.;.word.followed.by.un
a7960 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 20 derscore/asterisk...............
a7980 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 5d ................."[^[:space:]\n]
a79a0 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 3a \\(?:_\\|\\*\\)\\(?:[[:space:][:
a79c0 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 20 punct:]]\\|$\\)")...............
a79e0 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 6e ................(looking-at.;.un
a7a00 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 6f derscore/asterisk.followed.by.wo
a7a20 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 20 rd..............................
a7a40 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 5c .."\\(?:[[:space:]]\\)\\(?:_\\|\
a7a60 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 20 \*\\)\\([^[:space:]]\\|$\\)"))..
a7a80 20 20 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 6c .........................(not.(l
a7aa0 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 5c ooking-at."[[:punct:]]\\(?:_\\|\
a7ac0 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 20 \*\\)[[:punct:]]")))............
a7ae0 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 61 ..............;;.Emphasis,.repla
a7b00 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 20 ce.with.slashes.................
a7b20 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 70 .........(forward-char.(if.(bobp
a7b40 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 74 ).1.2)).(delete-char.-1).(insert
a7b60 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 28 ."/")).........................(
a7b80 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 2a (or.(and.(bobp).(looking-at."\\*
a7ba0 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 20 [[:space:]]"))..................
a7bc0 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 5c ............(looking-at."\\(?:$\
a7be0 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 20 \|\\`\\)\n\\*[[:space:]]")).....
a7c00 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 70 .....................;;.Bullet.p
a7c20 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 20 oint,.replace.with.hyphen.......
a7c40 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 72 ...................(forward-char
a7c60 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 2d .(if.(bobp).1.2)).(delete-char.-
a7c80 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 20 1).(insert."-"))))))))))........
a7ca0 20 20 20 28 69 66 20 6e 6f 6f 70 2d 70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 ...(if.noop-p...............(buf
a7cc0 66 65 72 2d 73 75 62 73 74 72 69 6e 67 20 28 70 6f 69 6e 74 29 20 73 74 61 72 74 2d 70 74 29 0a fer-substring.(point).start-pt).
a7ce0 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 67 31 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 ............(prog1.(buffer-subst
a7d00 72 69 6e 67 20 28 70 6f 69 6e 74 29 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 0a 20 20 20 20 20 20 ring.(point).(point-max)).......
a7d20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 2d 6d 61 72 6b 65 72 20 73 74 61 72 74 2d 70 .............(set-marker.start-p
a7d40 74 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 29 29 29 29 29 29 29 0a 0a 28 70 72 6f 76 69 64 65 20 t.(point-max)))))))))..(provide.
a7d60 27 67 70 74 65 6c 2d 6f 72 67 29 0a 3b 3b 3b 20 67 70 74 65 6c 2d 6f 72 67 2e 65 6c 20 65 6e 64 'gptel-org).;;;.gptel-org.el.end
a7d80 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 75 s.here..;;.Silence.warnings.abou
a7da0 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 2d t.`org-element-type-p'.and.`org-
a7dc0 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 6f element-parent',.see.#294..;;.Lo
a7de0 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 77 cal.Variables:.;;.byte-compile-w
a7e00 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 64 arnings:.(not.unresolved).;;.End
a7e20 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 00 :...............................
a7e40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a7e60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a7e80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a7ea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a7ec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a7ee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a7f00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a7f20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a7f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a7f60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a7f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a7fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a7fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a7fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a80a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a80c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a80e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a81a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a81c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a81e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a82a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a82c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a82e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a83a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a83c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a83e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a84a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a84c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a84e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a85a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a85c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a85e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a86a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a86c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a86e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a87a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a87c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a87e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a88a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a88c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a88e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a89a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a89c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a89e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8a00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8a20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8a60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8a80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8b00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8b20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8c00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8c20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8c60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8c80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8d00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8d20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8e00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8e20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
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 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
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 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
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 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
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 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
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 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
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 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
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 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
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 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a96a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a96c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a96e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a97a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a97c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a97e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a98a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a98c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a98e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a99a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a99c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a99e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9a00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9a20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9a60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9a80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9b00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9b20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9c00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9c20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9c60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9c80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9d00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9d20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9e00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9e20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9e40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9e60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9e80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9ea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9ec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9ee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9f00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9f20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9f60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................