summaryrefslogtreecommitdiff
path: root/.localrepo/gptel-0.9.8.tar
blob: 0797bd4c72adcbf903e36564485ab27d5611ef9f (plain)
ofshex dumpascii
0000 67 70 74 65 6c 2d 30 2e 39 2e 38 2f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 gptel-0.9.8/....................
0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0060 00 00 00 00 30 30 30 30 37 35 35 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 ....0000755.0000000.0000000.0000
0080 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 31 33 30 32 00 20 35 00 00 00 0000000.00000000000.011302..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 2f 52 45 41 44 4d 45 2e 6f 72 67 00 00 00 00 00 00 00 00 00 00 gptel-0.9.8/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 31 30 33 30 33 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 32 37 34 37 00 20 30 00 00 00 0210303.00000000000.012747..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 20 5b 5b 68 74 74 70 73 3a 2f 2f 73 74 61 62 6c 65 2e 6d 65 6c gptel.svg]].[[https://stable.mel
04a0 70 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 73 74 61 pa.org/#/gptel][file:https://sta
04c0 62 6c 65 2e 6d 65 6c 70 61 2e 6f 72 67 2f 70 61 63 6b 61 67 65 73 2f 67 70 74 65 6c 2d 62 61 64 ble.melpa.org/packages/gptel-bad
04e0 67 65 2e 73 76 67 5d 5d 20 5b 5b 68 74 74 70 73 3a 2f 2f 6d 65 6c 70 61 2e 6f 72 67 2f 23 2f 67 ge.svg]].[[https://melpa.org/#/g
0500 70 74 65 6c 5d 5b 66 69 6c 65 3a 68 74 74 70 73 3a 2f 2f 6d 65 6c 70 61 2e 6f 72 67 2f 70 61 63 ptel][file:https://melpa.org/pac
0520 6b 61 67 65 73 2f 67 70 74 65 6c 2d 62 61 64 67 65 2e 73 76 67 5d 5d 0a 0a 67 70 74 65 6c 20 69 kages/gptel-badge.svg]]..gptel.i
0540 73 20 61 20 73 69 6d 70 6c 65 20 4c 61 72 67 65 20 4c 61 6e 67 75 61 67 65 20 4d 6f 64 65 6c 20 s.a.simple.Large.Language.Model.
0560 63 68 61 74 20 63 6c 69 65 6e 74 20 66 6f 72 20 45 6d 61 63 73 2c 20 77 69 74 68 20 73 75 70 70 chat.client.for.Emacs,.with.supp
0580 6f 72 74 20 66 6f 72 20 6d 75 6c 74 69 70 6c 65 20 6d 6f 64 65 6c 73 20 61 6e 64 20 62 61 63 6b ort.for.multiple.models.and.back
05a0 65 6e 64 73 2e 20 20 49 74 20 77 6f 72 6b 73 20 69 6e 20 74 68 65 20 73 70 69 72 69 74 20 6f 66 ends...It.works.in.the.spirit.of
05c0 20 45 6d 61 63 73 2c 20 61 76 61 69 6c 61 62 6c 65 20 61 74 20 61 6e 79 20 74 69 6d 65 20 61 6e .Emacs,.available.at.any.time.an
05e0 64 20 75 6e 69 66 6f 72 6d 6c 79 20 69 6e 20 61 6e 79 20 62 75 66 66 65 72 2e 0a 0a 23 2b 68 74 d.uniformly.in.any.buffer...#+ht
0600 6d 6c 3a 20 3c 64 69 76 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 0a 7c 20 4c 4c 4d 20 42 ml:.<div.align="center">.|.LLM.B
0620 61 63 6b 65 6e 64 20 20 20 20 20 20 20 20 7c 20 53 75 70 70 6f 72 74 73 20 7c 20 52 65 71 75 69 ackend........|.Supports.|.Requi
0640 72 65 73 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 res...................|.|-------
0660 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d 2d -------------+----------+-------
0680 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 43 68 61 74 47 50 54 ---------------------|.|.ChatGPT
06a0 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 74 74 ............|............|.[[htt
06c0 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 61 63 63 6f 75 6e 74 ps://platform.openai.com/account
06e0 2f 61 70 69 2d 6b 65 79 73 5d 5b 41 50 49 20 6b 65 79 5d 5d 20 20 20 20 20 20 20 20 20 20 20 20 /api-keys][API.key]]............
0700 20 20 20 20 20 20 20 20 7c 0a 7c 20 41 6e 74 68 72 6f 70 69 63 20 28 43 6c 61 75 64 65 29 20 7c ........|.|.Anthropic.(Claude).|
0720 20 e2 9c 93 20 20 20 20 20 20 20 20 7c 20 5b 5b 68 74 74 70 73 3a 2f 2f 77 77 77 2e 61 6e 74 68 ............|.[[https://www.anth
0740 72 6f 70 69 63 2e 63 6f 6d 2f 61 70 69 5d 5b 41 50 49 20 6b 65 79 5d 5d 20 20 20 20 20 20 20 20 ropic.com/api][API.key]]........
0760 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 7c 20 47 65 6d 69 6e 69 20 20 20 20 20 20 20 20 20 20 ............|.|.Gemini..........
0780 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 6d 61 6b 65 ...|............|.[[https://make
07a0 72 73 75 69 74 65 2e 67 6f 6f 67 6c 65 2e 63 6f 6d 2f 61 70 70 2f 61 70 69 6b 65 79 5d 5b 41 50 rsuite.google.com/app/apikey][AP
07c0 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 4f I.key]]....................|.|.O
07e0 6c 6c 61 6d 61 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 llama.............|............|
0800 20 5b 5b 68 74 74 70 73 3a 2f 2f 6f 6c 6c 61 6d 61 2e 61 69 2f 5d 5b 4f 6c 6c 61 6d 61 20 72 75 .[[https://ollama.ai/][Ollama.ru
0820 6e 6e 69 6e 67 20 6c 6f 63 61 6c 6c 79 5d 5d 20 20 20 20 20 7c 0a 7c 20 4c 6c 61 6d 61 2e 63 70 nning.locally]].....|.|.Llama.cp
0840 70 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 p..........|............|.[[http
0860 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 67 65 72 67 61 6e 6f 76 2f 6c 6c 61 6d 61 2e 63 s://github.com/ggerganov/llama.c
0880 70 70 2f 74 72 65 65 2f 6d 61 73 74 65 72 2f 65 78 61 6d 70 6c 65 73 2f 73 65 72 76 65 72 23 71 pp/tree/master/examples/server#q
08a0 75 69 63 6b 2d 73 74 61 72 74 5d 5b 4c 6c 61 6d 61 2e 63 70 70 20 72 75 6e 6e 69 6e 67 20 6c 6f uick-start][Llama.cpp.running.lo
08c0 63 61 6c 6c 79 5d 5d 20 20 7c 0a 7c 20 4c 6c 61 6d 61 66 69 6c 65 20 20 20 20 20 20 20 20 20 20 cally]]..|.|.Llamafile..........
08e0 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 62 2e |............|.[[https://github.
0900 63 6f 6d 2f 4d 6f 7a 69 6c 6c 61 2d 4f 63 68 6f 2f 6c 6c 61 6d 61 66 69 6c 65 23 71 75 69 63 6b com/Mozilla-Ocho/llamafile#quick
0920 73 74 61 72 74 5d 5b 4c 6f 63 61 6c 20 4c 6c 61 6d 61 66 69 6c 65 20 73 65 72 76 65 72 5d 5d 20 start][Local.Llamafile.server]].
0940 20 20 20 20 7c 0a 7c 20 47 50 54 34 41 6c 6c 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 e2 9c 93 ....|.|.GPT4All............|....
0960 20 20 20 20 20 20 20 20 7c 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 70 74 34 61 6c 6c 2e 69 6f 2f 69 ........|.[[https://gpt4all.io/i
0980 6e 64 65 78 2e 68 74 6d 6c 5d 5b 47 50 54 34 41 6c 6c 20 72 75 6e 6e 69 6e 67 20 6c 6f 63 61 6c ndex.html][GPT4All.running.local
09a0 6c 79 5d 5d 20 20 20 20 7c 0a 7c 20 4b 61 67 69 20 46 61 73 74 47 50 54 20 20 20 20 20 20 20 7c ly]]....|.|.Kagi.FastGPT.......|
09c0 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 6d ............|.[[https://kagi.com
09e0 2f 73 65 74 74 69 6e 67 73 3f 70 3d 61 70 69 5d 5b 41 50 49 20 6b 65 79 5d 5d 20 20 20 20 20 20 /settings?p=api][API.key]]......
0a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 7c 20 4b 61 67 69 20 53 75 6d 6d 61 72 69 7a 65 ..............|.|.Kagi.Summarize
0a20 72 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 6b 61 r....|............|.[[https://ka
0a40 67 69 2e 63 6f 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 gi.com/settings?p=api][API.key]]
0a60 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 7a 75 72 65 20 20 20 ....................|.|.Azure...
0a80 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 44 65 70 6c 6f 79 ...........|............|.Deploy
0aa0 6d 65 6e 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 ment.and.API.key.....|.|.Groq...
0ac0 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 74 74 ............|............|.[[htt
0ae0 70 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 ps://console.groq.com/keys][API.
0b00 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 50 65 72 key]]....................|.|.Per
0b20 70 6c 65 78 69 74 79 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 plexity.........|............|.[
0b40 5b 68 74 74 70 73 3a 2f 2f 64 6f 63 73 2e 70 65 72 70 6c 65 78 69 74 79 2e 61 69 2f 64 6f 63 73 [https://docs.perplexity.ai/docs
0b60 2f 67 65 74 74 69 6e 67 2d 73 74 61 72 74 65 64 5d 5b 41 50 49 20 6b 65 79 5d 5d 20 20 20 20 20 /getting-started][API.key]].....
0b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 7c 20 4f 70 65 6e 52 6f 75 74 65 72 20 20 20 ...............|.|.OpenRouter...
0ba0 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 6f ......|............|.[[https://o
0bc0 70 65 6e 72 6f 75 74 65 72 2e 61 69 2f 6b 65 79 73 5d 5b 41 50 49 20 6b 65 79 5d 5d 20 20 20 20 penrouter.ai/keys][API.key]]....
0be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 7c 20 74 6f 67 65 74 68 65 72 2e 61 69 20 ................|.|.together.ai.
0c00 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://
0c20 61 70 69 2e 74 6f 67 65 74 68 65 72 2e 78 79 7a 2f 73 65 74 74 69 6e 67 73 2f 61 70 69 2d 6b 65 api.together.xyz/settings/api-ke
0c40 79 73 5d 5b 41 50 49 20 6b 65 79 5d 5d 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ys][API.key]]...................
0c60 20 7c 0a 7c 20 41 6e 79 73 63 61 6c 65 20 20 20 20 20 20 20 20 20 20 20 7c 20 e2 9c 93 20 20 20 .|.|.Anyscale...........|.......
0c80 20 20 20 20 20 7c 20 5b 5b 68 74 74 70 73 3a 2f 2f 64 6f 63 73 2e 65 6e 64 70 6f 69 6e 74 73 2e .....|.[[https://docs.endpoints.
0ca0 61 6e 79 73 63 61 6c 65 2e 63 6f 6d 2f 5d 5b 41 50 49 20 6b 65 79 5d 5d 20 20 20 20 20 20 20 20 anyscale.com/][API.key]]........
0cc0 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 7c 20 50 72 69 76 61 74 65 47 50 54 20 20 20 20 20 20 ............|.|.PrivateGPT......
0ce0 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 67 69 74 68 ...|............|.[[https://gith
0d00 75 62 2e 63 6f 6d 2f 7a 79 6c 6f 6e 2d 61 69 2f 70 72 69 76 61 74 65 2d 67 70 74 23 2d 64 6f 63 ub.com/zylon-ai/private-gpt#-doc
0d20 75 6d 65 6e 74 61 74 69 6f 6e 5d 5b 50 72 69 76 61 74 65 47 50 54 20 72 75 6e 6e 69 6e 67 20 6c umentation][PrivateGPT.running.l
0d40 6f 63 61 6c 6c 79 5d 5d 20 7c 0a 7c 20 44 65 65 70 53 65 65 6b 20 20 20 20 20 20 20 20 20 20 20 ocally]].|.|.DeepSeek...........
0d60 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 70 6c 61 74 66 6f 72 |............|.[[https://platfor
0d80 6d 2e 64 65 65 70 73 65 65 6b 2e 63 6f 6d 2f 61 70 69 5f 6b 65 79 73 5d 5b 41 50 49 20 6b 65 79 m.deepseek.com/api_keys][API.key
0da0 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 43 65 72 65 62 72 ]]....................|.|.Cerebr
0dc0 61 73 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 as...........|............|.[[ht
0de0 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 65 tps://cloud.cerebras.ai/][API.ke
0e00 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 75 y]]....................|.|.Githu
0e20 62 20 4d 6f 64 65 6c 73 20 20 20 20 20 20 7c 20 e2 9c 93 20 20 20 20 20 20 20 20 7c 20 5b 5b 68 b.Models......|............|.[[h
0e40 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 6b 65 6e ttps://github.com/settings/token
0e60 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 20 20 20 s][Token]]......................
0e80 7c 0a 7c 20 4e 6f 76 69 74 61 20 41 49 20 20 20 20 20 20 20 20 20 20 7c 20 e2 9c 93 20 20 20 20 |.|.Novita.AI..........|........
0ea0 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 6f 64 65 6c 2d ....|.[[https://novita.ai/model-
0ec0 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 72 63 65 3d 67 api/product/llm-api?utm_source=g
0ee0 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 75 62 5f 72 65 ithub_gptel&utm_medium=github_re
0f00 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 65 6e 5d 5d 20 adme&utm_campaign=link][Token]].
0f20 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 49 20 20 20 20 .....................|.|.xAI....
0f40 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 74 74 ............|............|.[[htt
0f60 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 72 63 65 3d 67 69 74 ps://console.x.ai?utm_source=git
0f80 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 75 62 5f 72 65 61 64 hub_gptel&utm_medium=github_read
0fa0 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 20 6b 65 79 5d 5d 20 me&utm_campaign=link][API.key]].
0fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 ...................|.#+html:.</d
0fe0 69 76 3e 0a 0a 2a 47 65 6e 65 72 61 6c 20 75 73 61 67 65 2a 3a 20 28 5b 5b 68 74 74 70 73 3a 2f iv>..*General.usage*:.([[https:/
1000 2f 77 77 77 2e 79 6f 75 74 75 62 65 2e 63 6f 6d 2f 77 61 74 63 68 3f 76 3d 62 73 52 6e 68 5f 62 /www.youtube.com/watch?v=bsRnh_b
1020 72 67 67 4d 5d 5b 59 6f 75 54 75 62 65 20 44 65 6d 6f 5d 5d 29 0a 0a 68 74 74 70 73 3a 2f 2f 75 rggM][YouTube.Demo]])..https://u
1040 73 65 72 2d 69 6d 61 67 65 73 2e 67 69 74 68 75 62 75 73 65 72 63 6f 6e 74 65 6e 74 2e 63 6f 6d ser-images.githubusercontent.com
1060 2f 38 36 30 37 35 33 32 2f 32 33 30 35 31 36 38 31 32 2d 38 36 35 31 30 61 30 39 2d 61 32 66 62 /8607532/230516812-86510a09-a2fb
1080 2d 34 63 62 64 2d 62 35 33 66 2d 63 63 32 35 32 32 64 30 35 61 31 33 2e 6d 70 34 0a 0a 68 74 74 -4cbd-b53f-cc2522d05a13.mp4..htt
10a0 70 73 3a 2f 2f 75 73 65 72 2d 69 6d 61 67 65 73 2e 67 69 74 68 75 62 75 73 65 72 63 6f 6e 74 65 ps://user-images.githubuserconte
10c0 6e 74 2e 63 6f 6d 2f 38 36 30 37 35 33 32 2f 32 33 30 35 31 36 38 31 36 2d 61 65 34 61 36 31 33 nt.com/8607532/230516816-ae4a613
10e0 61 2d 34 64 30 31 2d 34 30 37 33 2d 61 64 33 66 2d 62 36 36 66 61 37 33 63 36 65 34 35 2e 6d 70 a-4d01-4073-ad3f-b66fa73c6e45.mp
1100 34 0a 0a 2a 49 6e 2d 70 6c 61 63 65 20 75 73 61 67 65 2a 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 70 20 4..*In-place.usage*..#+html:.<p.
1120 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 0a 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 align="center">.https://github.c
1140 6f 6d 2f 75 73 65 72 2d 61 74 74 61 63 68 6d 65 6e 74 73 2f 61 73 73 65 74 73 2f 63 65 63 31 31 om/user-attachments/assets/cec11
1160 61 65 63 2d 35 32 66 36 2d 34 31 32 65 2d 39 65 37 61 2d 39 33 35 38 65 38 62 39 62 31 62 66 0a aec-52f6-412e-9e7a-9358e8b9b1bf.
1180 23 2b 68 74 6d 6c 3a 20 3c 2f 70 3e 0a 0a 2a 54 6f 6f 6c 20 75 73 65 2a 20 28 65 78 70 65 72 69 #+html:.</p>..*Tool.use*.(experi
11a0 6d 65 6e 74 61 6c 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 mental)..#+html:.<p.align="cente
11c0 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 61 r">.https://github.com/user-atta
11e0 63 68 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 chments/assets/5f993659-4cfd-49f
1200 61 2d 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 a-b5cd-19c55766b9b2.#+html:.</p>
1220 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
1240 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
1260 2f 61 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 /assets/8f57c20b-e1b0-4d86-b972-
1280 66 34 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 f46fb90ae1e7.#+html:.</p>..See.a
12a0 6c 73 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 lso.[[https://youtu.be/g1VMGhC5g
12c0 52 55 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 RU][this.youtube.demo.(2.minutes
12e0 29 5d 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 )]].by.Armin.Darvish...#.*Media.
1300 73 75 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 support*..#.#+html:.<p.align="ce
1320 6e 74 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 nter">.#.https://github.com/user
1340 2d 61 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 -attachments/assets/1fd947e1-226
1360 62 2d 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 b-4be2-bc68-7b22b2e3215f.#.#+htm
1380 6c 3a 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 l:.</p>..#.*Multi-LLM.support.de
13a0 6d 6f 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 mo*:..#.https://github-productio
13c0 6e 2d 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 n-user-asset-6210df.s3.amazonaws
13e0 2e 63 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 .com/8607532/278854024-ae1336c4-
1400 35 62 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 5b87-41f2-83e9-e415349d6a43.mp4.
1420 0a 2d 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 .------..-.gptel.is.async.and.fa
1440 73 74 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 st,.streams.responses..-.Interac
1460 74 20 77 69 74 68 20 4c 4c 4d 73 20 66 72 6f 6d 20 61 6e 79 77 68 65 72 65 20 69 6e 20 45 6d 61 t.with.LLMs.from.anywhere.in.Ema
1480 63 73 20 28 61 6e 79 20 62 75 66 66 65 72 2c 20 73 68 65 6c 6c 2c 20 6d 69 6e 69 62 75 66 66 65 cs.(any.buffer,.shell,.minibuffe
14a0 72 2c 20 77 68 65 72 65 76 65 72 29 2e 0a 2d 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 73 20 61 72 r,.wherever)..-.LLM.responses.ar
14c0 65 20 69 6e 20 4d 61 72 6b 64 6f 77 6e 20 6f 72 20 4f 72 67 20 6d 61 72 6b 75 70 2e 0a 2d 20 53 e.in.Markdown.or.Org.markup..-.S
14e0 75 70 70 6f 72 74 73 20 6d 75 6c 74 69 70 6c 65 20 69 6e 64 65 70 65 6e 64 65 6e 74 20 63 6f 6e upports.multiple.independent.con
1500 76 65 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 versations.and.one-off.ad.hoc.in
1520 74 65 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 teractions..-.Supports.tool-use.
1540 74 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 to.equip.LLMs.with.agentic.capab
1560 69 6c 69 74 69 65 73 20 28 65 78 70 65 72 69 6d 65 6e 74 61 6c 20 66 65 61 74 75 72 65 29 2e 0a ilities.(experimental.feature)..
1580 2d 20 53 75 70 70 6f 72 74 73 20 6d 75 6c 74 69 2d 6d 6f 64 61 6c 20 69 6e 70 75 74 20 28 69 6e -.Supports.multi-modal.input.(in
15a0 63 6c 75 64 65 20 69 6d 61 67 65 73 2c 20 64 6f 63 75 6d 65 6e 74 73 29 2e 0a 2d 20 53 61 76 65 clude.images,.documents)..-.Save
15c0 20 63 68 61 74 73 20 61 73 20 72 65 67 75 6c 61 72 20 4d 61 72 6b 64 6f 77 6e 2f 4f 72 67 2f 54 .chats.as.regular.Markdown/Org/T
15e0 65 78 74 20 66 69 6c 65 73 20 61 6e 64 20 72 65 73 75 6d 65 20 74 68 65 6d 20 6c 61 74 65 72 2e ext.files.and.resume.them.later.
1600 0a 2d 20 45 64 69 74 20 79 6f 75 72 20 70 72 65 76 69 6f 75 73 20 70 72 6f 6d 70 74 73 20 6f 72 .-.Edit.your.previous.prompts.or
1620 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 73 20 77 68 65 6e 20 63 6f 6e 74 69 6e 75 69 6e 67 20 61 .LLM.responses.when.continuing.a
1640 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 2e 20 54 68 65 73 65 20 77 69 6c 6c 20 62 65 20 66 65 64 .conversation..These.will.be.fed
1660 20 62 61 63 6b 20 74 6f 20 74 68 65 20 6d 6f 64 65 6c 2e 0a 2d 20 53 75 70 70 6f 72 74 73 20 69 .back.to.the.model..-.Supports.i
1680 6e 74 72 6f 73 70 65 63 74 69 6f 6e 2c 20 73 6f 20 79 6f 75 20 63 61 6e 20 73 65 65 20 2f 65 78 ntrospection,.so.you.can.see./ex
16a0 61 63 74 6c 79 2f 20 77 68 61 74 20 77 69 6c 6c 20 62 65 20 73 65 6e 74 2e 20 20 49 6e 73 70 65 actly/.what.will.be.sent...Inspe
16c0 63 74 20 61 6e 64 20 6d 6f 64 69 66 79 20 71 75 65 72 69 65 73 20 62 65 66 6f 72 65 20 73 65 6e ct.and.modify.queries.before.sen
16e0 64 69 6e 67 20 74 68 65 6d 2e 0a 2d 20 50 61 75 73 65 20 6d 75 6c 74 69 2d 73 74 61 67 65 20 72 ding.them..-.Pause.multi-stage.r
1700 65 71 75 65 73 74 73 20 61 74 20 61 6e 20 69 6e 74 65 72 6d 65 64 69 61 74 65 20 73 74 61 67 65 equests.at.an.intermediate.stage
1720 20 61 6e 64 20 72 65 73 75 6d 65 20 74 68 65 6d 20 6c 61 74 65 72 2e 0a 2d 20 44 6f 6e 27 74 20 .and.resume.them.later..-.Don't.
1740 6c 69 6b 65 20 67 70 74 65 6c 27 73 20 77 6f 72 6b 66 6c 6f 77 3f 20 55 73 65 20 69 74 20 74 6f like.gptel's.workflow?.Use.it.to
1760 20 63 72 65 61 74 65 20 79 6f 75 72 20 6f 77 6e 20 66 6f 72 20 61 6e 79 20 73 75 70 70 6f 72 74 .create.your.own.for.any.support
1780 65 64 20 6d 6f 64 65 6c 2f 62 61 63 6b 65 6e 64 20 77 69 74 68 20 61 20 5b 5b 68 74 74 70 73 3a ed.model/backend.with.a.[[https:
17a0 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6b 61 72 74 68 69 6e 6b 2f 67 70 74 65 6c 2f 77 69 6b 69 //github.com/karthink/gptel/wiki
17c0 2f 44 65 66 69 6e 69 6e 67 2d 63 75 73 74 6f 6d 2d 67 70 74 65 6c 2d 63 6f 6d 6d 61 6e 64 73 5d /Defining-custom-gptel-commands]
17e0 5b 73 69 6d 70 6c 65 20 41 50 49 5d 5d 2e 0a 0a 67 70 74 65 6c 20 75 73 65 73 20 43 75 72 6c 20 [simple.API]]...gptel.uses.Curl.
1800 69 66 20 61 76 61 69 6c 61 62 6c 65 2c 20 62 75 74 20 66 61 6c 6c 73 20 62 61 63 6b 20 74 6f 20 if.available,.but.falls.back.to.
1820 74 68 65 20 62 75 69 6c 74 2d 69 6e 20 75 72 6c 2d 72 65 74 72 69 65 76 65 20 74 6f 20 77 6f 72 the.built-in.url-retrieve.to.wor
1840 6b 20 77 69 74 68 6f 75 74 20 65 78 74 65 72 6e 61 6c 20 64 65 70 65 6e 64 65 6e 63 69 65 73 2e k.without.external.dependencies.
1860 0a 0a 2a 2a 20 43 6f 6e 74 65 6e 74 73 20 3a 74 6f 63 3a 0a 20 20 2d 20 5b 5b 23 62 72 65 61 6b ..**.Contents.:toc:...-.[[#break
1880 69 6e 67 2d 63 68 61 6e 67 65 73 5d 5b 42 72 65 61 6b 69 6e 67 20 63 68 61 6e 67 65 73 21 5d 5d ing-changes][Breaking.changes!]]
18a0 0a 20 20 2d 20 5b 5b 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 ...-.[[#installation][Installati
18c0 6f 6e 5d 5d 0a 20 20 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 on]].......-.[[#straight][Straig
18e0 68 74 5d 5d 0a 20 20 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 ht]].......-.[[#manual][Manual]]
1900 0a 20 20 20 20 20 20 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 .......-.[[#doom-emacs][Doom.Ema
1920 63 73 5d 5d 0a 20 20 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 cs]].......-.[[#spacemacs][Space
1940 6d 61 63 73 5d 5d 0a 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 macs]]...-.[[#setup][Setup]]....
1960 20 2d 20 5b 5b 23 63 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 .-.[[#chatgpt][ChatGPT]].....-.[
1980 5b 23 6f 74 68 65 72 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 [#other-llm-backends][Other.LLM.
19a0 62 61 63 6b 65 6e 64 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 backends]].......-.[[#azure][Azu
19c0 72 65 5d 5d 0a 20 20 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 re]].......-.[[#gpt4all][GPT4All
19e0 5d 5d 0a 20 20 20 20 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 ]].......-.[[#ollama][Ollama]]..
1a00 20 20 20 20 20 2d 20 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 .....-.[[#gemini][Gemini]]......
1a20 20 2d 20 5b 5b 23 6c 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 .-.[[#llamacpp-or-llamafile][Lla
1a40 6d 61 2e 63 70 70 20 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 ma.cpp.or.Llamafile]].......-.[[
1a60 23 6b 61 67 69 2d 66 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 #kagi-fastgpt--summarizer][Kagi.
1a80 28 46 61 73 74 47 50 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 (FastGPT.&.Summarizer)]].......-
1aa0 20 5b 5b 23 74 6f 67 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 .[[#togetherai][together.ai]]...
1ac0 20 20 20 20 2d 20 5b 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 ....-.[[#anyscale][Anyscale]]...
1ae0 20 20 20 20 2d 20 5b 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 ....-.[[#perplexity][Perplexity]
1b00 5d 0a 20 20 20 20 20 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 ].......-.[[#anthropic-claude][A
1b20 6e 74 68 72 6f 70 69 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 nthropic.(Claude)]].......-.[[#g
1b40 72 6f 71 5d 5b 47 72 6f 71 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b 23 6f 70 65 6e 72 6f 75 74 65 roq][Groq]].......-.[[#openroute
1b60 72 5d 5b 4f 70 65 6e 52 6f 75 74 65 72 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b 23 70 72 69 76 61 r][OpenRouter]].......-.[[#priva
1b80 74 65 67 70 74 5d 5b 50 72 69 76 61 74 65 47 50 54 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b 23 64 tegpt][PrivateGPT]].......-.[[#d
1ba0 65 65 70 73 65 65 6b 5d 5b 44 65 65 70 53 65 65 6b 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b 23 63 eepseek][DeepSeek]].......-.[[#c
1bc0 65 72 65 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 erebras][Cerebras]].......-.[[#g
1be0 69 74 68 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 ithub-models][Github.Models]]...
1c00 20 20 20 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 ....-.[[#novita-ai][Novita.AI]].
1c20 20 20 20 20 20 20 2d 20 5b 5b 23 78 61 69 5d 5b 78 41 49 5d 5d 0a 20 20 2d 20 5b 5b 23 75 73 61 ......-.[[#xai][xAI]]...-.[[#usa
1c40 67 65 5d 5b 55 73 61 67 65 5d 5d 0a 20 20 20 20 2d 20 5b 5b 23 69 6e 2d 61 6e 79 2d 62 75 66 66 ge][Usage]].....-.[[#in-any-buff
1c60 65 72 5d 5b 49 6e 20 61 6e 79 20 62 75 66 66 65 72 3a 5d 5d 0a 20 20 20 20 2d 20 5b 5b 23 69 6e er][In.any.buffer:]].....-.[[#in
1c80 2d 61 2d 64 65 64 69 63 61 74 65 64 2d 63 68 61 74 2d 62 75 66 66 65 72 5d 5b 49 6e 20 61 20 64 -a-dedicated-chat-buffer][In.a.d
1ca0 65 64 69 63 61 74 65 64 20 63 68 61 74 20 62 75 66 66 65 72 3a 5d 5d 0a 20 20 20 20 20 20 2d 20 edicated.chat.buffer:]].......-.
1cc0 5b 5b 23 69 6e 63 6c 75 64 69 6e 67 2d 6d 65 64 69 61 2d 69 6d 61 67 65 73 2d 64 6f 63 75 6d 65 [[#including-media-images-docume
1ce0 6e 74 73 2d 77 69 74 68 2d 72 65 71 75 65 73 74 73 5d 5b 49 6e 63 6c 75 64 69 6e 67 20 6d 65 64 nts-with-requests][Including.med
1d00 69 61 20 28 69 6d 61 67 65 73 2c 20 64 6f 63 75 6d 65 6e 74 73 29 20 77 69 74 68 20 72 65 71 75 ia.(images,.documents).with.requ
1d20 65 73 74 73 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b 23 73 61 76 65 2d 61 6e 64 2d 72 65 73 74 6f ests]].......-.[[#save-and-resto
1d40 72 65 2d 79 6f 75 72 2d 63 68 61 74 2d 73 65 73 73 69 6f 6e 73 5d 5b 53 61 76 65 20 61 6e 64 20 re-your-chat-sessions][Save.and.
1d60 72 65 73 74 6f 72 65 20 79 6f 75 72 20 63 68 61 74 20 73 65 73 73 69 6f 6e 73 5d 5d 0a 20 20 20 restore.your.chat.sessions]]....
1d80 20 2d 20 5b 5b 23 73 65 74 74 69 6e 67 2d 6f 70 74 69 6f 6e 73 2d 62 61 63 6b 65 6e 64 2d 6d 6f .-.[[#setting-options-backend-mo
1da0 64 65 6c 2d 72 65 71 75 65 73 74 2d 70 61 72 61 6d 65 74 65 72 73 2d 73 79 73 74 65 6d 2d 70 72 del-request-parameters-system-pr
1dc0 6f 6d 70 74 73 2d 61 6e 64 2d 6d 6f 72 65 5d 5b 53 65 74 74 69 6e 67 20 6f 70 74 69 6f 6e 73 20 ompts-and-more][Setting.options.
1de0 28 62 61 63 6b 65 6e 64 2c 20 6d 6f 64 65 6c 2c 20 72 65 71 75 65 73 74 20 70 61 72 61 6d 65 74 (backend,.model,.request.paramet
1e00 65 72 73 2c 20 73 79 73 74 65 6d 20 70 72 6f 6d 70 74 73 20 61 6e 64 20 6d 6f 72 65 29 5d 5d 0a ers,.system.prompts.and.more)]].
1e20 20 20 20 20 2d 20 5b 5b 23 69 6e 63 6c 75 64 65 2d 6d 6f 72 65 2d 63 6f 6e 74 65 78 74 2d 77 69 ....-.[[#include-more-context-wi
1e40 74 68 2d 72 65 71 75 65 73 74 73 5d 5b 49 6e 63 6c 75 64 65 20 6d 6f 72 65 20 63 6f 6e 74 65 78 th-requests][Include.more.contex
1e60 74 20 77 69 74 68 20 72 65 71 75 65 73 74 73 5d 5d 0a 20 20 20 20 2d 20 5b 5b 23 68 61 6e 64 6c t.with.requests]].....-.[[#handl
1e80 65 2d 72 65 61 73 6f 6e 69 6e 67 2d 63 6f 6e 74 65 6e 74 5d 5b 48 61 6e 64 6c 65 20 22 72 65 61 e-reasoning-content][Handle."rea
1ea0 73 6f 6e 69 6e 67 22 20 63 6f 6e 74 65 6e 74 5d 5d 0a 20 20 20 20 2d 20 5b 5b 23 74 6f 6f 6c 2d soning".content]].....-.[[#tool-
1ec0 75 73 65 2d 65 78 70 65 72 69 6d 65 6e 74 61 6c 5d 5b 54 6f 6f 6c 20 75 73 65 20 28 65 78 70 65 use-experimental][Tool.use.(expe
1ee0 72 69 6d 65 6e 74 61 6c 29 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b 23 64 65 66 69 6e 69 6e 67 2d rimental)]].......-.[[#defining-
1f00 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 6f 6f 6c gptel-tools][Defining.gptel.tool
1f20 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 73 5d 5b s]].......-.[[#selecting-tools][
1f40 53 65 6c 65 63 74 69 6e 67 20 74 6f 6f 6c 73 5d 5d 0a 20 20 20 20 2d 20 5b 5b 23 72 65 77 72 69 Selecting.tools]].....-.[[#rewri
1f60 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 5d te-refactor-or-fill-in-a-region]
1f80 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 20 [Rewrite,.refactor.or.fill.in.a.
1fa0 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 65 region]].....-.[[#extra-org-mode
1fc0 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 6f -conveniences][Extra.Org.mode.co
1fe0 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 20 nveniences]]...-.[[#faq][FAQ]]..
2000 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 66 ...-.[[#chat-buffer-ui][Chat.buf
2020 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 77 fer.UI]].......-.[[#i-want-the-w
2040 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 73 indow-to-scroll-automatically-as
2060 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 6e -the-response-is-inserted][I.wan
2080 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 63 t.the.window.to.scroll.automatic
20a0 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 64 ally.as.the.response.is.inserted
20c0 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 2d ]].......-.[[#i-want-the-cursor-
20e0 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 72 to-move-to-the-next-prompt-after
2100 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 6e -the-response-is-inserted][I.wan
2120 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 74 t.the.cursor.to.move.to.the.next
2140 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 6e .prompt.after.the.response.is.in
2160 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 68 serted]].......-.[[#i-want-to-ch
2180 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 70 ange-the-formatting-of-the-promp
21a0 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 68 t-and-llm-response][I.want.to.ch
21c0 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 70 ange.the.formatting.of.the.promp
21e0 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 23 t.and.LLM.response]].......-.[[#
2200 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 65 how-does-gptel-distinguish-betwe
2220 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 65 en-user-prompts-and-llm-response
2240 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 65 s][How.does.gptel.distinguish.be
2260 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 6f tween.user.prompts.and.LLM.respo
2280 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 2d nses?]].....-.[[#transient-menu-
22a0 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 6f behavior][Transient.menu.behavio
22c0 72 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 74 72 61 6e 73 69 r]].......-.[[#i-want-the-transi
22e0 65 6e 74 2d 6d 65 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 ent-menu-options-to-be-saved-so-
2300 69 2d 6f 6e 6c 79 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 i-only-need-to-set-them-once][I.
2320 77 61 6e 74 20 74 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 want.the.transient.menu.options.
2340 74 6f 20 62 65 20 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 to.be.saved.so.I.only.need.to.se
2360 74 20 74 68 65 6d 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 t.them.once]].......-.[[#using-t
2380 68 65 2d 74 72 61 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 he-transient-menu-leaves-behind-
23a0 65 78 74 72 61 2d 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 extra-windows][Using.the.transie
23c0 6e 74 20 6d 65 6e 75 20 6c 65 61 76 65 73 20 62 65 68 69 6e 64 20 65 78 74 72 61 20 77 69 6e 64 nt.menu.leaves.behind.extra.wind
23e0 6f 77 73 5d 5d 0a 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 ows]].......-.[[#can-i-change-th
2400 65 2d 74 72 61 6e 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 e-transient-menu-key-bindings][C
2420 61 6e 20 49 20 63 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 an.I.change.the.transient.menu.k
2440 65 79 20 62 69 6e 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 ey.bindings?]].......-.[[#doom-e
2460 6d 61 63 73 2d 73 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 macs-sending-a-query-from-the-gp
2480 74 65 6c 2d 6d 65 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 tel-menu-fails-because-of-a-key-
24a0 63 6f 6e 66 6c 69 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 conflict-with-org-mode][(Doom.Em
24c0 61 63 73 29 20 53 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 acs).Sending.a.query.from.the.gp
24e0 74 65 6c 20 6d 65 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 tel.menu.fails.because.of.a.key.
2500 63 6f 6e 66 6c 69 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 conflict.with.Org.mode]].....-.[
2520 5b 23 6d 69 73 63 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 [#miscellaneous][Miscellaneous]]
2540 0a 20 20 20 20 20 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 .......-.[[#i-want-to-use-gptel-
2560 69 6e 2d 61 2d 77 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 in-a-way-thats-not-supported-by-
2580 67 70 74 65 6c 2d 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 gptel-send-or-the-options-menu][
25a0 49 20 77 61 6e 74 20 74 6f 20 75 73 65 20 67 70 74 65 6c 20 69 6e 20 61 20 77 61 79 20 74 68 61 I.want.to.use.gptel.in.a.way.tha
25c0 74 27 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 65 64 20 62 79 20 3d 67 70 74 65 6c 2d 73 65 6e 64 t's.not.supported.by.=gptel-send
25e0 3d 20 6f 72 20 74 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 =.or.the.options.menu]].......-.
2600 5b 5b 23 63 68 61 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 [[#chatgpt-i-get-the-error-http2
2620 2d 34 32 39 2d 79 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 -429-you-exceeded-your-current-q
2640 75 6f 74 61 5d 5b 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 uota][(ChatGPT).I.get.the.error.
2660 22 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 72 20 "(HTTP/2.429).You.exceeded.your.
2680 63 75 72 72 65 6e 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 current.quota"]].......-.[[#why-
26a0 61 6e 6f 74 68 65 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 another-llm-client][Why.another.
26c0 4c 4c 4d 20 63 6c 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 LLM.client?]]...-.[[#additional-
26e0 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 67 configuration][Additional.Config
2700 75 72 61 74 69 6f 6e 5d 5d 0a 20 20 2d 20 5b 5b 23 61 6c 74 65 72 6e 61 74 69 76 65 73 5d 5b 41 uration]]...-.[[#alternatives][A
2720 6c 74 65 72 6e 61 74 69 76 65 73 5d 5d 0a 20 20 20 20 2d 20 5b 5b 23 70 61 63 6b 61 67 65 73 2d lternatives]].....-.[[#packages-
2740 75 73 69 6e 67 2d 67 70 74 65 6c 5d 5b 50 61 63 6b 61 67 65 73 20 75 73 69 6e 67 20 67 70 74 65 using-gptel][Packages.using.gpte
2760 6c 5d 5d 0a 20 20 2d 20 5b 5b 23 61 63 6b 6e 6f 77 6c 65 64 67 6d 65 6e 74 73 5d 5b 41 63 6b 6e l]]...-.[[#acknowledgments][Ackn
2780 6f 77 6c 65 64 67 6d 65 6e 74 73 5d 5d 0a 0a 2a 2a 20 42 72 65 61 6b 69 6e 67 20 63 68 61 6e 67 owledgments]]..**.Breaking.chang
27a0 65 73 21 0a 0a 2d 20 3d 67 70 74 65 6c 2d 6d 6f 64 65 6c 3d 20 69 73 20 6e 6f 77 20 65 78 70 65 es!..-.=gptel-model=.is.now.expe
27c0 63 74 65 64 20 74 6f 20 62 65 20 61 20 73 79 6d 62 6f 6c 2c 20 6e 6f 74 20 61 20 73 74 72 69 6e cted.to.be.a.symbol,.not.a.strin
27e0 67 2e 20 20 50 6c 65 61 73 65 20 75 70 64 61 74 65 20 79 6f 75 72 20 63 6f 6e 66 69 67 75 72 61 g...Please.update.your.configura
2800 74 69 6f 6e 2e 0a 0a 2a 2a 20 49 6e 73 74 61 6c 6c 61 74 69 6f 6e 0a 0a 67 70 74 65 6c 20 63 61 tion...**.Installation..gptel.ca
2820 6e 20 62 65 20 69 6e 73 74 61 6c 6c 65 64 20 69 6e 20 45 6d 61 63 73 20 6f 75 74 20 6f 66 20 74 n.be.installed.in.Emacs.out.of.t
2840 68 65 20 62 6f 78 20 77 69 74 68 20 3d 4d 2d 78 20 70 61 63 6b 61 67 65 2d 69 6e 73 74 61 6c 6c he.box.with.=M-x.package-install
2860 3d 20 e2 8f 8e 20 3d 67 70 74 65 6c 3d 2e 20 20 54 68 69 73 20 69 6e 73 74 61 6c 6c 73 20 74 68 =.....=gptel=...This.installs.th
2880 65 20 6c 61 74 65 73 74 20 63 6f 6d 6d 69 74 2e 0a 0a 49 66 20 79 6f 75 20 77 61 6e 74 20 74 68 e.latest.commit...If.you.want.th
28a0 65 20 73 74 61 62 6c 65 20 76 65 72 73 69 6f 6e 20 69 6e 73 74 65 61 64 2c 20 61 64 64 20 4e 6f e.stable.version.instead,.add.No
28c0 6e 47 4e 55 2d 64 65 76 65 6c 20 45 4c 50 41 20 6f 72 20 4d 45 4c 50 41 2d 73 74 61 62 6c 65 20 nGNU-devel.ELPA.or.MELPA-stable.
28e0 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 73 20 to.your.list.of.package.sources.
2900 28 3d 70 61 63 6b 61 67 65 2d 61 72 63 68 69 76 65 73 3d 29 2c 20 74 68 65 6e 20 69 6e 73 74 61 (=package-archives=),.then.insta
2920 6c 6c 20 67 70 74 65 6c 20 77 69 74 68 20 3d 4d 2d 78 20 70 61 63 6b 61 67 65 2d 69 6e 73 74 61 ll.gptel.with.=M-x.package-insta
2940 6c 6c e2 8f 8e 3d 20 3d 67 70 74 65 6c 3d 20 66 72 6f 6d 20 74 68 65 73 65 20 73 6f 75 72 63 65 ll...=.=gptel=.from.these.source
2960 73 2e 0a 0a 28 4f 70 74 69 6f 6e 61 6c 3a 20 49 6e 73 74 61 6c 6c 20 3d 6d 61 72 6b 64 6f 77 6e s...(Optional:.Install.=markdown
2980 2d 6d 6f 64 65 3d 2e 29 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 74 61 69 6c 73 3e 3c 73 75 6d 6d -mode=.)..#+html:.<details><summ
29a0 61 72 79 3e 0a 2a 2a 2a 2a 20 53 74 72 61 69 67 68 74 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d ary>.****.Straight.#+html:.</sum
29c0 6d 61 72 79 3e 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 28 mary>.#+begin_src.emacs-lisp...(
29e0 73 74 72 61 69 67 68 74 2d 75 73 65 2d 70 61 63 6b 61 67 65 20 27 67 70 74 65 6c 29 0a 23 2b 65 straight-use-package.'gptel).#+e
2a00 6e 64 5f 73 72 63 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 nd_src.#+html:.</details>.#+html
2a20 3a 20 3c 64 65 74 61 69 6c 73 3e 3c 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 4d 61 6e 75 61 6c :.<details><summary>.****.Manual
2a40 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 43 6c 6f 6e 65 20 6f 72 20 64 6f 77 .#+html:.</summary>.Clone.or.dow
2a60 6e 6c 6f 61 64 20 74 68 69 73 20 72 65 70 6f 73 69 74 6f 72 79 20 61 6e 64 20 72 75 6e 20 3d 4d nload.this.repository.and.run.=M
2a80 2d 78 20 70 61 63 6b 61 67 65 2d 69 6e 73 74 61 6c 6c 2d 66 69 6c 65 e2 8f 8e 3d 20 6f 6e 20 74 -x.package-install-file...=.on.t
2aa0 68 65 20 72 65 70 6f 73 69 74 6f 72 79 20 64 69 72 65 63 74 6f 72 79 2e 0a 23 2b 68 74 6d 6c 3a he.repository.directory..#+html:
2ac0 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
2ae0 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 44 6f 6f 6d 20 45 6d 61 63 73 0a 23 2b 68 74 6d 6c 3a 20 3c mmary>.****.Doom.Emacs.#+html:.<
2b00 2f 73 75 6d 6d 61 72 79 3e 0a 49 6e 20 3d 70 61 63 6b 61 67 65 73 2e 65 6c 3d 0a 23 2b 62 65 67 /summary>.In.=packages.el=.#+beg
2b20 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 28 70 61 63 6b 61 67 65 21 20 67 70 74 65 in_src.emacs-lisp.(package!.gpte
2b40 6c 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 49 6e 20 3d 63 6f 6e 66 69 67 2e 65 6c 3d 0a 23 2b 62 l).#+end_src..In.=config.el=.#+b
2b60 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 28 75 73 65 2d 70 61 63 6b 61 67 65 egin_src.emacs-lisp.(use-package
2b80 21 20 67 70 74 65 6c 0a 20 3a 63 6f 6e 66 69 67 0a 20 28 73 65 74 71 21 20 67 70 74 65 6c 2d 61 !.gptel..:config..(setq!.gptel-a
2ba0 70 69 2d 6b 65 79 20 22 79 6f 75 72 20 6b 65 79 22 29 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 22 79 pi-key."your.key")).#+end_src."y
2bc0 6f 75 72 20 6b 65 79 22 20 63 61 6e 20 62 65 20 74 68 65 20 41 50 49 20 6b 65 79 20 69 74 73 65 our.key".can.be.the.API.key.itse
2be0 6c 66 2c 20 6f 72 20 28 73 61 66 65 72 29 20 61 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 72 lf,.or.(safer).a.function.that.r
2c00 65 74 75 72 6e 73 20 74 68 65 20 6b 65 79 2e 20 20 53 65 74 74 69 6e 67 20 3d 67 70 74 65 6c 2d eturns.the.key...Setting.=gptel-
2c20 61 70 69 2d 6b 65 79 3d 20 69 73 20 6f 70 74 69 6f 6e 61 6c 2c 20 79 6f 75 20 77 69 6c 6c 20 62 api-key=.is.optional,.you.will.b
2c40 65 20 61 73 6b 65 64 20 66 6f 72 20 61 20 6b 65 79 20 69 66 20 69 74 27 73 20 6e 6f 74 20 66 6f e.asked.for.a.key.if.it's.not.fo
2c60 75 6e 64 2e 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 23 2b 68 74 6d 6c 3a und...#+html:.</details>.#+html:
2c80 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 53 70 61 63 65 6d 61 .<details><summary>.****.Spacema
2ca0 63 73 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 49 6e 20 79 6f 75 72 20 3d 2e cs.#+html:.</summary>.In.your.=.
2cc0 73 70 61 63 65 6d 61 63 73 3d 20 66 69 6c 65 2c 20 61 64 64 20 3d 6c 6c 6d 2d 63 6c 69 65 6e 74 spacemacs=.file,.add.=llm-client
2ce0 3d 20 74 6f 20 3d 64 6f 74 73 70 61 63 65 6d 61 63 73 2d 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e =.to.=dotspacemacs-configuration
2d00 2d 6c 61 79 65 72 73 3d 2e 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 -layers=..#+begin_src.emacs-lisp
2d20 0a 28 6c 6c 6d 2d 63 6c 69 65 6e 74 20 3a 76 61 72 69 61 62 6c 65 73 0a 20 20 20 20 20 20 20 20 .(llm-client.:variables.........
2d40 20 20 20 20 6c 6c 6d 2d 63 6c 69 65 6e 74 2d 65 6e 61 62 6c 65 2d 67 70 74 65 6c 20 74 29 0a 23 ....llm-client-enable-gptel.t).#
2d60 2b 65 6e 64 5f 73 72 63 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 2a 2a 20 53 +end_src.#+html:.</details>.**.S
2d80 65 74 75 70 0a 2a 2a 2a 20 43 68 61 74 47 50 54 0a 50 72 6f 63 75 72 65 20 61 6e 20 5b 5b 68 74 etup.***.ChatGPT.Procure.an.[[ht
2da0 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 61 63 63 6f 75 6e tps://platform.openai.com/accoun
2dc0 74 2f 61 70 69 2d 6b 65 79 73 5d 5b 4f 70 65 6e 41 49 20 41 50 49 20 6b 65 79 5d 5d 2e 0a 0a 4f t/api-keys][OpenAI.API.key]]...O
2de0 70 74 69 6f 6e 61 6c 3a 20 53 65 74 20 3d 67 70 74 65 6c 2d 61 70 69 2d 6b 65 79 3d 20 74 6f 20 ptional:.Set.=gptel-api-key=.to.
2e00 74 68 65 20 6b 65 79 2e 20 41 6c 74 65 72 6e 61 74 69 76 65 6c 79 2c 20 79 6f 75 20 6d 61 79 20 the.key..Alternatively,.you.may.
2e20 63 68 6f 6f 73 65 20 61 20 6d 6f 72 65 20 73 65 63 75 72 65 20 6d 65 74 68 6f 64 20 73 75 63 68 choose.a.more.secure.method.such
2e40 20 61 73 3a 0a 0a 2d 20 53 74 6f 72 69 6e 67 20 69 6e 20 3d 7e 2f 2e 61 75 74 68 69 6e 66 6f 3d .as:..-.Storing.in.=~/.authinfo=
2e60 2e 20 42 79 20 64 65 66 61 75 6c 74 2c 20 22 61 70 69 2e 6f 70 65 6e 61 69 2e 63 6f 6d 22 20 69 ..By.default,."api.openai.com".i
2e80 73 20 75 73 65 64 20 61 73 20 48 4f 53 54 20 61 6e 64 20 22 61 70 69 6b 65 79 22 20 61 73 20 55 s.used.as.HOST.and."apikey".as.U
2ea0 53 45 52 2e 0a 20 20 23 2b 62 65 67 69 6e 5f 73 72 63 20 61 75 74 68 69 6e 66 6f 0a 6d 61 63 68 SER....#+begin_src.authinfo.mach
2ec0 69 6e 65 20 61 70 69 2e 6f 70 65 6e 61 69 2e 63 6f 6d 20 6c 6f 67 69 6e 20 61 70 69 6b 65 79 20 ine.api.openai.com.login.apikey.
2ee0 70 61 73 73 77 6f 72 64 20 54 4f 4b 45 4e 0a 20 20 23 2b 65 6e 64 5f 73 72 63 0a 2d 20 53 65 74 password.TOKEN...#+end_src.-.Set
2f00 74 69 6e 67 20 69 74 20 74 6f 20 61 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 72 65 74 75 72 ting.it.to.a.function.that.retur
2f20 6e 73 20 74 68 65 20 6b 65 79 2e 0a 0a 2a 2a 2a 20 4f 74 68 65 72 20 4c 4c 4d 20 62 61 63 6b 65 ns.the.key...***.Other.LLM.backe
2f40 6e 64 73 0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 74 61 69 6c 73 3e 3c 73 75 6d 6d 61 72 79 3e 0a 2a nds.#+html:.<details><summary>.*
2f60 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 3e 0a 0a 52 65 ***.Azure.#+html:.</summary>..Re
2f80 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 5f 73 72 gister.a.backend.with.#+begin_sr
2fa0 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 75 72 65 20 22 c.emacs-lisp.(gptel-make-azure."
2fc0 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 20 77 68 61 74 Azure-1".............;Name,.what
2fe0 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 20 22 68 74 74 ever.you'd.like...:protocol."htt
3000 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 74 69 6f 6e 61 ps".....................;Optiona
3020 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 20 3a 68 6f 73 l.--.https.is.the.default...:hos
3040 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 69 2e 61 7a 75 t."YOUR_RESOURCE_NAME.openai.azu
3060 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 69 2f 64 65 70 re.com"...:endpoint."/openai/dep
3080 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 4d 45 2f 63 68 loyments/YOUR_DEPLOYMENT_NAME/ch
30a0 61 74 2f 63 6f 6d 70 6c 65 74 69 6f 6e 73 3f 61 70 69 2d 76 65 72 73 69 6f 6e 3d 32 30 32 33 2d at/completions?api-version=2023-
30c0 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 72 65 61 6d 20 05-15".;or.equivalent...:stream.
30e0 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 20 3b 45 t.............................;E
3100 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 20 3a 6b 65 79 nable.streaming.responses...:key
3120 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 27 28 67 70 74 .#'gptel-api-key...:models.'(gpt
3140 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 63 0a 52 65 66 -3.5-turbo.gpt-4)).#+end_src.Ref
3160 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 67 70 74 65 er.to.the.documentation.of.=gpte
3180 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 61 72 61 6d 65 l-make-azure=.to.set.more.parame
31a0 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 63 6b 65 6e 64 ters...You.can.pick.this.backend
31c0 20 66 72 6f 6d 20 74 68 65 20 6d 65 6e 75 20 77 68 65 6e 20 75 73 69 6e 67 20 67 70 74 65 6c 2e .from.the.menu.when.using.gptel.
31e0 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 2a .(see.[[#usage][Usage]])...*****
3200 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
3220 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
3240 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
3260 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
3280 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
32a0 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
32c0 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.
32e0 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
3300 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
3320 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 62 6f 0a 20 67 q..gptel-model.'gpt-3.5-turbo..g
3340 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 75 72 65 20 22 ptel-backend.(gptel-make-azure."
3360 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 70 72 6f 74 6f Azure-1"..................:proto
3380 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 20 20 3a 68 6f col."https"..................:ho
33a0 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 69 2e 61 7a st."YOUR_RESOURCE_NAME.openai.az
33c0 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 65 6e 64 70 6f ure.com"..................:endpo
33e0 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 55 52 5f 44 45 int."/openai/deployments/YOUR_DE
3400 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 6f 6e 73 3f 61 PLOYMENT_NAME/chat/completions?a
3420 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 20 20 20 20 20 pi-version=2023-05-15"..........
3440 20 20 20 20 20 20 20 20 3a 73 74 72 65 61 6d 20 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ........:stream.t...............
3460 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 20 20 20 20 20 ...:key.#'gptel-api-key.........
3480 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 74 75 72 62 6f .........:models.'(gpt-3.5-turbo
34a0 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 20 3c 2f 64 65 .gpt-4))).#+end_src.#+html:.</de
34c0 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 6d 61 72 tails>..#+html:.<details><summar
34e0 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 75 6d 6d 61 72 y>.****.GPT4All.#+html:.</summar
3500 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 65 y>..Register.a.backend.with.#+be
3520 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 67 gin_src.emacs-lisp.(gptel-make-g
3540 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 3b 4e 61 6d 65 pt4all."GPT4All"...........;Name
3560 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 6c 20 22 68 74 .of.your.choosing..:protocol."ht
3580 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 20 20 20 20 20 tp"..:host."localhost:4891".....
35a0 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 6e 69 6e 67 0a ............;Where.it's.running.
35c0 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 72 63 61 2e 51 .:models.'(mistral-7b-openorca.Q
35e0 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 73 0a 23 2b 65 4_0.gguf)).;Available.models.#+e
3600 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 65 64 20 70 61 nd_src.These.are.the.required.pa
3620 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 6d 65 6e 74 61 rameters,.refer.to.the.documenta
3640 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 3d 20 66 6f 72 tion.of.=gptel-make-gpt4all=.for
3660 20 6d 6f 72 65 2e 0a 0a 59 6f 75 20 63 61 6e 20 70 69 63 6b 20 74 68 69 73 20 62 61 63 6b 65 6e .more...You.can.pick.this.backen
3680 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 6c d.from.the.menu.when.using.gptel
36a0 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 2a .(see.[[#usage][Usage]])...*****
36c0 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
36e0 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
3700 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
3720 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
3740 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
3760 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
3780 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.
37a0 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 75 20 6d 61 79 the.above...Additionally.you.may
37c0 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 6e 73 65 20 74 .want.to.increase.the.response.t
37e0 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 73 20 76 65 72 oken.size.since.GPT4All.uses.ver
3800 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 65 73 70 6f 6e y.short.(often.truncated).respon
3820 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 20 65 6d 61 63 ses.by.default..#+begin_src.emac
3840 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
3860 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 30 0a 20 67 70 .(setq..gptel-max-tokens.500..gp
3880 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 72 63 61 2e 51 tel-model.'mistral-7b-openorca.Q
38a0 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 74 65 6c 2d 6d 4_0.gguf..gptel-backend.(gptel-m
38c0 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 20 20 20 20 20 ake-gpt4all."GPT4All"...........
38e0 20 20 20 20 20 20 20 3a 70 72 6f 74 6f 63 6f 6c 20 22 68 74 74 70 22 0a 20 20 20 20 20 20 20 20 .......:protocol."http".........
3900 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 38 39 31 22 0a .........:host."localhost:4891".
3920 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 6d 69 73 74 72 .................:models.'(mistr
3940 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 0a 23 2b 65 6e al-7b-openorca.Q4_0.gguf))).#+en
3960 64 5f 73 72 63 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 0a 23 2b 68 74 6d d_src..#+html:.</details>..#+htm
3980 6c 3a 20 3c 64 65 74 61 69 6c 73 3e 3c 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 4f 6c 6c 61 6d l:.<details><summary>.****.Ollam
39a0 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 74 65 72 20 61 a.#+html:.</summary>..Register.a
39c0 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 2d .backend.with.#+begin_src.emacs-
39e0 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 6c 61 6d 61 22 lisp.(gptel-make-ollama."Ollama"
3a00 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 6f 75 72 20 63 .............;Any.name.of.your.c
3a20 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 31 31 34 33 34 hoosing...:host."localhost:11434
3a40 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 20 72 75 6e 6e "...............;Where.it's.runn
3a60 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 20 20 20 20 20 ing...:stream.t.................
3a80 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 65 73 0a 20 20 ............;Stream.responses...
3aa0 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 20 20 20 20 20 :models.'(mistral:latest))......
3ac0 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 72 63 0a 54 68 ....;List.of.models.#+end_src.Th
3ae0 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,
3b00 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.=
3b20 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 2e 0a 0a 59 6f gptel-make-ollama=.for.more...Yo
3b40 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
3b60 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
3b80 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)
3ba0 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
3bc0 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
3be0 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
3c00 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
3c20 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
3c40 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=..
3c60 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..
3c80 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
3ca0 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
3cc0 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 62 61 63 6b 65 del.'mistral:latest..gptel-backe
3ce0 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 6d 61 22 0a 20 nd.(gptel-make-ollama."Ollama"..
3d00 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 6c 68 6f 73 74 ................:host."localhost
3d20 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 74 72 65 61 6d :11434"..................:stream
3d40 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 20 27 28 6d 69 .t..................:models.'(mi
3d60 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 23 2b 68 74 6d stral:latest))).#+end_src..#+htm
3d80 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 73 3e l:.</details>..#+html:.<details>
3da0 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 6c 3a 20 3c 2f <summary>.****.Gemini.#+html:.</
3dc0 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 74 summary>..Register.a.backend.wit
3de0 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 3a 6b 65 79 h.#+begin_src.emacs-lisp.;;.:key
3e00 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 75 72 6e 73 20 .can.be.a.function.that.returns.
3e20 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 6d 69 6e 69 20 the.API.key..(gptel-make-gemini.
3e40 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 41 50 49 5f 4b "Gemini".:key."YOUR_GEMINI_API_K
3e60 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 65 73 65 20 61 EY".:stream.t).#+end_src.These.a
3e80 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 20 72 65 66 65 re.the.required.parameters,.refe
3ea0 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 67 70 74 65 6c r.to.the.documentation.of.=gptel
3ec0 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 75 20 63 61 6e -make-gemini=.for.more...You.can
3ee0 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 75 .pick.this.backend.from.the.menu
3f00 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 5d .when.using.gptel.(see.[[#usage]
3f20 5b 55 73 61 67 65 5d 5d 29 0a 0a 2a 2a 2a 2a 2a 20 28 4f 70 74 69 6f 6e 61 6c 29 20 53 65 74 20 [Usage]])..*****.(Optional).Set.
3f40 61 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 67 70 74 65 6c 20 62 61 63 6b 65 6e 64 0a 0a 54 68 as.the.default.gptel.backend..Th
3f60 65 20 61 62 6f 76 65 20 63 6f 64 65 20 6d 61 6b 65 73 20 74 68 65 20 62 61 63 6b 65 6e 64 20 61 e.above.code.makes.the.backend.a
3f80 76 61 69 6c 61 62 6c 65 20 74 6f 20 73 65 6c 65 63 74 2e 20 20 49 66 20 79 6f 75 20 77 61 6e 74 vailable.to.select...If.you.want
3fa0 20 69 74 20 74 6f 20 62 65 20 74 68 65 20 64 65 66 61 75 6c 74 20 62 61 63 6b 65 6e 64 20 66 6f .it.to.be.the.default.backend.fo
3fc0 72 20 67 70 74 65 6c 2c 20 79 6f 75 20 63 61 6e 20 73 65 74 20 74 68 69 73 20 61 73 20 74 68 65 r.gptel,.you.can.set.this.as.the
3fe0 20 76 61 6c 75 65 20 6f 66 20 3d 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 3d 2e 20 20 55 73 65 20 .value.of.=gptel-backend=...Use.
4000 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 23 2b 62 65 67 this.instead.of.the.above..#+beg
4020 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 3b 3b 20 4f 50 54 49 4f 4e 41 4c 20 63 6f in_src.emacs-lisp.;;.OPTIONAL.co
4040 6e 66 69 67 75 72 61 74 69 6f 6e 0a 28 73 65 74 71 0a 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 20 27 nfiguration.(setq..gptel-model.'
4060 67 65 6d 69 6e 69 2d 70 72 6f 0a 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 28 67 70 74 65 6c gemini-pro..gptel-backend.(gptel
4080 2d 6d 61 6b 65 2d 67 65 6d 69 6e 69 20 22 47 65 6d 69 6e 69 22 0a 20 20 20 20 20 20 20 20 20 20 -make-gemini."Gemini"...........
40a0 20 20 20 20 20 20 20 3a 6b 65 79 20 22 59 4f 55 52 5f 47 45 4d 49 4e 49 5f 41 50 49 5f 4b 45 59 .......:key."YOUR_GEMINI_API_KEY
40c0 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 73 74 72 65 61 6d 20 74 29 29 0a 23 "..................:stream.t)).#
40e0 2b 65 6e 64 5f 73 72 63 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 0a 23 2b +end_src..#+html:.</details>..#+
4100 68 74 6d 6c 3a 20 3c 64 65 74 61 69 6c 73 3e 0a 23 2b 68 74 6d 6c 3a 20 3c 73 75 6d 6d 61 72 79 html:.<details>.#+html:.<summary
4120 3e 0a 2a 2a 2a 2a 20 4c 6c 61 6d 61 2e 63 70 70 20 6f 72 20 4c 6c 61 6d 61 66 69 6c 65 0a 23 2b >.****.Llama.cpp.or.Llamafile.#+
4140 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a 28 49 66 20 75 73 69 6e 67 20 61 20 6c 6c html:.</summary>..(If.using.a.ll
4160 61 6d 61 66 69 6c 65 2c 20 72 75 6e 20 61 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e amafile,.run.a.[[https://github.
4180 63 6f 6d 2f 4d 6f 7a 69 6c 6c 61 2d 4f 63 68 6f 2f 6c 6c 61 6d 61 66 69 6c 65 23 6f 74 68 65 72 com/Mozilla-Ocho/llamafile#other
41a0 2d 65 78 61 6d 70 6c 65 2d 6c 6c 61 6d 61 66 69 6c 65 73 5d 5b 73 65 72 76 65 72 20 6c 6c 61 6d -example-llamafiles][server.llam
41c0 61 66 69 6c 65 5d 5d 20 69 6e 73 74 65 61 64 20 6f 66 20 61 20 22 63 6f 6d 6d 61 6e 64 2d 6c 69 afile]].instead.of.a."command-li
41e0 6e 65 20 6c 6c 61 6d 61 66 69 6c 65 22 2c 20 61 6e 64 20 61 20 6d 6f 64 65 6c 20 74 68 61 74 20 ne.llamafile",.and.a.model.that.
4200 73 75 70 70 6f 72 74 73 20 74 65 78 74 20 67 65 6e 65 72 61 74 69 6f 6e 2e 29 0a 0a 52 65 67 69 supports.text.generation.)..Regi
4220 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 5f 73 72 63 20 ster.a.backend.with.#+begin_src.
4240 65 6d 61 63 73 2d 6c 69 73 70 0a 3b 3b 20 4c 6c 61 6d 61 2e 63 70 70 20 6f 66 66 65 72 73 20 61 emacs-lisp.;;.Llama.cpp.offers.a
4260 6e 20 4f 70 65 6e 41 49 20 63 6f 6d 70 61 74 69 62 6c 65 20 41 50 49 0a 28 67 70 74 65 6c 2d 6d n.OpenAI.compatible.API.(gptel-m
4280 61 6b 65 2d 6f 70 65 6e 61 69 20 22 6c 6c 61 6d 61 2d 63 70 70 22 20 20 20 20 20 20 20 20 20 20 ake-openai."llama-cpp"..........
42a0 3b 41 6e 79 20 6e 61 6d 65 0a 20 20 3a 73 74 72 65 61 6d 20 74 20 20 20 20 20 20 20 20 20 20 20 ;Any.name...:stream.t...........
42c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 53 74 72 65 61 6d 20 72 65 73 70 6f 6e ..................;Stream.respon
42e0 73 65 73 0a 20 20 3a 70 72 6f 74 6f 63 6f 6c 20 22 68 74 74 70 22 0a 20 20 3a 68 6f 73 74 20 22 ses...:protocol."http"...:host."
4300 6c 6f 63 61 6c 68 6f 73 74 3a 38 30 30 30 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b localhost:8000"................;
4320 4c 6c 61 6d 61 2e 63 70 70 20 73 65 72 76 65 72 20 6c 6f 63 61 74 69 6f 6e 0a 20 20 3a 6d 6f 64 Llama.cpp.server.location...:mod
4340 65 6c 73 20 27 28 74 65 73 74 29 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 els.'(test))....................
4360 3b 41 6e 79 20 6e 61 6d 65 73 2c 20 64 6f 65 73 6e 27 74 20 6d 61 74 74 65 72 20 66 6f 72 20 4c ;Any.names,.doesn't.matter.for.L
4380 6c 61 6d 61 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 lama.#+end_src.These.are.the.req
43a0 75 69 72 65 64 20 70 61 72 61 6d 65 74 65 72 73 2c 20 72 65 66 65 72 20 74 6f 20 74 68 65 20 64 uired.parameters,.refer.to.the.d
43c0 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 3d 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e ocumentation.of.=gptel-make-open
43e0 61 69 3d 20 66 6f 72 20 6d 6f 72 65 2e 0a 0a 59 6f 75 20 63 61 6e 20 70 69 63 6b 20 74 68 69 73 ai=.for.more...You.can.pick.this
4400 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
4420 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]]).
4440 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
4460 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
4480 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
44a0 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.
44c0 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
44e0 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.
4500 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
4520 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
4540 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
4560 6e 0a 28 73 65 74 71 0a 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 20 20 20 27 74 65 73 74 0a 20 67 70 n.(setq..gptel-model...'test..gp
4580 74 65 6c 2d 62 61 63 6b 65 6e 64 20 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 20 22 tel-backend.(gptel-make-openai."
45a0 6c 6c 61 6d 61 2d 63 70 70 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 73 74 72 llama-cpp"..................:str
45c0 65 61 6d 20 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 70 72 6f 74 6f 63 6f 6c eam.t..................:protocol
45e0 20 22 68 74 74 70 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 68 6f 73 74 20 22 ."http"..................:host."
4600 6c 6f 63 61 6c 68 6f 73 74 3a 38 30 30 30 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 localhost:8000".................
4620 20 3a 6d 6f 64 65 6c 73 20 27 28 74 65 73 74 29 29 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 23 2b .:models.'(test))).#+end_src..#+
4640 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
4660 73 3e 3c 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 4b 61 67 69 20 28 46 61 73 74 47 50 54 20 26 s><summary>.****.Kagi.(FastGPT.&
4680 20 53 75 6d 6d 61 72 69 7a 65 72 29 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a .Summarizer).#+html:.</summary>.
46a0 0a 4b 61 67 69 27 73 20 46 61 73 74 47 50 54 20 6d 6f 64 65 6c 20 61 6e 64 20 74 68 65 20 55 6e .Kagi's.FastGPT.model.and.the.Un
46c0 69 76 65 72 73 61 6c 20 53 75 6d 6d 61 72 69 7a 65 72 20 61 72 65 20 62 6f 74 68 20 73 75 70 70 iversal.Summarizer.are.both.supp
46e0 6f 72 74 65 64 2e 20 20 41 20 63 6f 75 70 6c 65 20 6f 66 20 6e 6f 74 65 73 3a 0a 0a 31 2e 20 55 orted...A.couple.of.notes:..1..U
4700 6e 69 76 65 72 73 61 6c 20 53 75 6d 6d 61 72 69 7a 65 72 3a 20 49 66 20 74 68 65 72 65 20 69 73 niversal.Summarizer:.If.there.is
4720 20 61 20 55 52 4c 20 61 74 20 70 6f 69 6e 74 2c 20 74 68 65 20 73 75 6d 6d 61 72 69 7a 65 72 20 .a.URL.at.point,.the.summarizer.
4740 77 69 6c 6c 20 73 75 6d 6d 61 72 69 7a 65 20 74 68 65 20 63 6f 6e 74 65 6e 74 73 20 6f 66 20 74 will.summarize.the.contents.of.t
4760 68 65 20 55 52 4c 2e 20 20 4f 74 68 65 72 77 69 73 65 20 74 68 65 20 63 6f 6e 74 65 78 74 20 73 he.URL...Otherwise.the.context.s
4780 65 6e 74 20 74 6f 20 74 68 65 20 6d 6f 64 65 6c 20 69 73 20 74 68 65 20 73 61 6d 65 20 61 73 20 ent.to.the.model.is.the.same.as.
47a0 61 6c 77 61 79 73 3a 20 74 68 65 20 62 75 66 66 65 72 20 74 65 78 74 20 75 70 74 6f 20 70 6f 69 always:.the.buffer.text.upto.poi
47c0 6e 74 2c 20 6f 72 20 74 68 65 20 63 6f 6e 74 65 6e 74 73 20 6f 66 20 74 68 65 20 72 65 67 69 6f nt,.or.the.contents.of.the.regio
47e0 6e 20 69 66 20 74 68 65 20 72 65 67 69 6f 6e 20 69 73 20 61 63 74 69 76 65 2e 0a 0a 32 2e 20 4b n.if.the.region.is.active...2..K
4800 61 67 69 20 6d 6f 64 65 6c 73 20 64 6f 20 6e 6f 74 20 73 75 70 70 6f 72 74 20 6d 75 6c 74 69 2d agi.models.do.not.support.multi-
4820 74 75 72 6e 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 73 2c 20 69 6e 74 65 72 61 63 74 69 6f 6e 73 turn.conversations,.interactions
4840 20 61 72 65 20 22 6f 6e 65 2d 73 68 6f 74 22 2e 20 20 54 68 65 79 20 61 6c 73 6f 20 64 6f 20 6e .are."one-shot"...They.also.do.n
4860 6f 74 20 73 75 70 70 6f 72 74 20 73 74 72 65 61 6d 69 6e 67 20 72 65 73 70 6f 6e 73 65 73 2e 0a ot.support.streaming.responses..
4880 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
48a0 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 6b 61 67 69 _src.emacs-lisp.(gptel-make-kagi
48c0 20 22 4b 61 67 69 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 61 6e 79 20 ."Kagi"....................;any.
48e0 6e 61 6d 65 0a 20 20 3a 6b 65 79 20 22 59 4f 55 52 5f 4b 41 47 49 5f 41 50 49 5f 4b 45 59 22 29 name...:key."YOUR_KAGI_API_KEY")
4900 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 74 69 ................;can.be.a.functi
4920 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 2b 65 6e 64 5f 73 72 on.that.returns.the.key.#+end_sr
4940 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
4960 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.
4980 6f 66 20 3d 67 70 74 65 6c 2d 6d 61 6b 65 2d 6b 61 67 69 3d 20 66 6f 72 20 6d 6f 72 65 2e 0a 0a of.=gptel-make-kagi=.for.more...
49a0 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 61 6e 64 20 74 68 You.can.pick.this.backend.and.th
49c0 65 20 6d 6f 64 65 6c 20 28 66 61 73 74 67 70 74 2f 73 75 6d 6d 61 72 69 7a 65 72 29 20 66 72 6f e.model.(fastgpt/summarizer).fro
49e0 6d 20 74 68 65 20 74 72 61 6e 73 69 65 6e 74 20 6d 65 6e 75 20 77 68 65 6e 20 75 73 69 6e 67 20 m.the.transient.menu.when.using.
4a00 67 70 74 65 6c 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 gptel...*****.(Optional).Set.as.
4a20 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
4a40 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
4a60 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
4a80 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
4aa0 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
4ac0 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
4ae0 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_
4b00 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
4b20 67 75 72 61 74 69 6f 6e 0a 28 73 65 74 71 0a 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 20 27 66 61 73 guration.(setq..gptel-model.'fas
4b40 74 67 70 74 0a 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 28 67 70 74 65 6c 2d 6d 61 6b 65 2d tgpt..gptel-backend.(gptel-make-
4b60 6b 61 67 69 20 22 4b 61 67 69 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6b 65 kagi."Kagi"..................:ke
4b80 79 20 22 59 4f 55 52 5f 4b 41 47 49 5f 41 50 49 5f 4b 45 59 22 29 29 0a 23 2b 65 6e 64 5f 73 72 y."YOUR_KAGI_API_KEY")).#+end_sr
4ba0 63 0a 0a 54 68 65 20 61 6c 74 65 72 6e 61 74 69 76 65 73 20 74 6f 20 3d 66 61 73 74 67 70 74 3d c..The.alternatives.to.=fastgpt=
4bc0 20 69 6e 63 6c 75 64 65 20 3d 73 75 6d 6d 61 72 69 7a 65 3a 63 65 63 69 6c 3d 2c 20 3d 73 75 6d .include.=summarize:cecil=,.=sum
4be0 6d 61 72 69 7a 65 3a 61 67 6e 65 73 3d 2c 20 3d 73 75 6d 6d 61 72 69 7a 65 3a 64 61 70 68 6e 65 marize:agnes=,.=summarize:daphne
4c00 3d 20 61 6e 64 20 3d 73 75 6d 6d 61 72 69 7a 65 3a 6d 75 72 69 65 6c 3d 2e 20 20 54 68 65 20 64 =.and.=summarize:muriel=...The.d
4c20 69 66 66 65 72 65 6e 63 65 20 62 65 74 77 65 65 6e 20 74 68 65 20 73 75 6d 6d 61 72 69 7a 65 72 ifference.between.the.summarizer
4c40 20 65 6e 67 69 6e 65 73 20 69 73 20 5b 5b 68 74 74 70 73 3a 2f 2f 68 65 6c 70 2e 6b 61 67 69 2e .engines.is.[[https://help.kagi.
4c60 63 6f 6d 2f 6b 61 67 69 2f 61 70 69 2f 73 75 6d 6d 61 72 69 7a 65 72 2e 68 74 6d 6c 23 73 75 6d com/kagi/api/summarizer.html#sum
4c80 6d 61 72 69 7a 61 74 69 6f 6e 2d 65 6e 67 69 6e 65 73 5d 5b 64 6f 63 75 6d 65 6e 74 65 64 20 68 marization-engines][documented.h
4ca0 65 72 65 5d 5d 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 ere]]...#+html:.</details>.#+htm
4cc0 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 74 6f 67 65 74 l:.<details><summary>.****.toget
4ce0 68 65 72 2e 61 69 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 her.ai.#+html:.</summary>..Regis
4d00 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
4d20 6d 61 63 73 2d 6c 69 73 70 0a 3b 3b 20 54 6f 67 65 74 68 65 72 2e 61 69 20 6f 66 66 65 72 73 20 macs-lisp.;;.Together.ai.offers.
4d40 61 6e 20 4f 70 65 6e 41 49 20 63 6f 6d 70 61 74 69 62 6c 65 20 41 50 49 0a 28 67 70 74 65 6c 2d an.OpenAI.compatible.API.(gptel-
4d60 6d 61 6b 65 2d 6f 70 65 6e 61 69 20 22 54 6f 67 65 74 68 65 72 41 49 22 20 20 20 20 20 20 20 20 make-openai."TogetherAI"........
4d80 20 3b 41 6e 79 20 6e 61 6d 65 20 79 6f 75 20 77 61 6e 74 0a 20 20 3a 68 6f 73 74 20 22 61 70 69 .;Any.name.you.want...:host."api
4da0 2e 74 6f 67 65 74 68 65 72 2e 78 79 7a 22 0a 20 20 3a 6b 65 79 20 22 79 6f 75 72 2d 61 70 69 2d .together.xyz"...:key."your-api-
4dc0 6b 65 79 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 63 61 6e 20 62 65 20 61 key"...................;can.be.a
4de0 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 20 .function.that.returns.the.key..
4e00 20 3a 73 74 72 65 61 6d 20 74 0a 20 20 3a 6d 6f 64 65 6c 73 20 27 28 3b 3b 20 68 61 73 20 6d 61 .:stream.t...:models.'(;;.has.ma
4e20 6e 79 20 6d 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 ny.more,.check.together.ai......
4e40 20 20 20 20 20 20 20 6d 69 73 74 72 61 6c 61 69 2f 4d 69 78 74 72 61 6c 2d 38 78 37 42 2d 49 6e .......mistralai/Mixtral-8x7B-In
4e60 73 74 72 75 63 74 2d 76 30 2e 31 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 64 65 6c 6c 61 6d struct-v0.1.............codellam
4e80 61 2f 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 a/CodeLlama-13b-Instruct-hf.....
4ea0 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 33 34 62 2d ........codellama/CodeLlama-34b-
4ec0 49 6e 73 74 72 75 63 74 2d 68 66 29 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 59 6f 75 20 63 61 6e Instruct-hf)).#+end_src..You.can
4ee0 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 75 .pick.this.backend.from.the.menu
4f00 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 5d .when.using.gptel.(see.[[#usage]
4f20 5b 55 73 61 67 65 5d 5d 29 0a 0a 2a 2a 2a 2a 2a 20 28 4f 70 74 69 6f 6e 61 6c 29 20 53 65 74 20 [Usage]])..*****.(Optional).Set.
4f40 61 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 67 70 74 65 6c 20 62 61 63 6b 65 6e 64 0a 0a 54 68 as.the.default.gptel.backend..Th
4f60 65 20 61 62 6f 76 65 20 63 6f 64 65 20 6d 61 6b 65 73 20 74 68 65 20 62 61 63 6b 65 6e 64 20 61 e.above.code.makes.the.backend.a
4f80 76 61 69 6c 61 62 6c 65 20 74 6f 20 73 65 6c 65 63 74 2e 20 20 49 66 20 79 6f 75 20 77 61 6e 74 vailable.to.select...If.you.want
4fa0 20 69 74 20 74 6f 20 62 65 20 74 68 65 20 64 65 66 61 75 6c 74 20 62 61 63 6b 65 6e 64 20 66 6f .it.to.be.the.default.backend.fo
4fc0 72 20 67 70 74 65 6c 2c 20 79 6f 75 20 63 61 6e 20 73 65 74 20 74 68 69 73 20 61 73 20 74 68 65 r.gptel,.you.can.set.this.as.the
4fe0 20 76 61 6c 75 65 20 6f 66 20 3d 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 3d 2e 20 20 55 73 65 20 .value.of.=gptel-backend=...Use.
5000 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 23 2b 62 65 67 this.instead.of.the.above..#+beg
5020 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 3b 3b 20 4f 50 54 49 4f 4e 41 4c 20 63 6f in_src.emacs-lisp.;;.OPTIONAL.co
5040 6e 66 69 67 75 72 61 74 69 6f 6e 0a 28 73 65 74 71 0a 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 20 20 nfiguration.(setq..gptel-model..
5060 20 27 6d 69 73 74 72 61 6c 61 69 2f 4d 69 78 74 72 61 6c 2d 38 78 37 42 2d 49 6e 73 74 72 75 63 .'mistralai/Mixtral-8x7B-Instruc
5080 74 2d 76 30 2e 31 0a 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 0a 20 28 67 70 74 65 6c 2d 6d 61 t-v0.1..gptel-backend..(gptel-ma
50a0 6b 65 2d 6f 70 65 6e 61 69 20 22 54 6f 67 65 74 68 65 72 41 49 22 20 20 20 20 20 20 20 20 20 0a ke-openai."TogetherAI"..........
50c0 20 20 20 3a 68 6f 73 74 20 22 61 70 69 2e 74 6f 67 65 74 68 65 72 2e 78 79 7a 22 0a 20 20 20 3a ...:host."api.together.xyz"....:
50e0 6b 65 79 20 22 79 6f 75 72 2d 61 70 69 2d 6b 65 79 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 key."your-api-key"..............
5100 20 20 20 20 20 0a 20 20 20 3a 73 74 72 65 61 6d 20 74 0a 20 20 20 3a 6d 6f 64 65 6c 73 20 27 28 .........:stream.t....:models.'(
5120 3b 3b 20 68 61 73 20 6d 61 6e 79 20 6d 6f 72 65 2c 20 63 68 65 63 6b 20 74 6f 67 65 74 68 65 72 ;;.has.many.more,.check.together
5140 2e 61 69 0a 20 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 .ai..............mistralai/Mixtr
5160 61 6c 2d 38 78 37 42 2d 49 6e 73 74 72 75 63 74 2d 76 30 2e 31 0a 20 20 20 20 20 20 20 20 20 20 al-8x7B-Instruct-v0.1...........
5180 20 20 20 63 6f 64 65 6c 6c 61 6d 61 2f 43 6f 64 65 4c 6c 61 6d 61 2d 31 33 62 2d 49 6e 73 74 72 ...codellama/CodeLlama-13b-Instr
51a0 75 63 74 2d 68 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 64 65 6c 6c 61 6d 61 2f 43 6f uct-hf..............codellama/Co
51c0 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 29 0a 23 2b 65 6e 64 deLlama-34b-Instruct-hf))).#+end
51e0 5f 73 72 63 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 23 2b 68 74 6d 6c 3a _src..#+html:.</details>.#+html:
5200 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 6e 79 73 63 61 6c .<details><summary>.****.Anyscal
5220 65 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 e.#+html:.</summary>..Register.a
5240 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 2d .backend.with.#+begin_src.emacs-
5260 6c 69 73 70 0a 3b 3b 20 41 6e 79 73 63 61 6c 65 20 6f 66 66 65 72 73 20 61 6e 20 4f 70 65 6e 41 lisp.;;.Anyscale.offers.an.OpenA
5280 49 20 63 6f 6d 70 61 74 69 62 6c 65 20 41 50 49 0a 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 I.compatible.API.(gptel-make-ope
52a0 6e 61 69 20 22 41 6e 79 73 63 61 6c 65 22 20 20 20 20 20 20 20 20 20 20 20 3b 41 6e 79 20 6e 61 nai."Anyscale"...........;Any.na
52c0 6d 65 20 79 6f 75 20 77 61 6e 74 0a 20 20 3a 68 6f 73 74 20 22 61 70 69 2e 65 6e 64 70 6f 69 6e me.you.want...:host."api.endpoin
52e0 74 73 2e 61 6e 79 73 63 61 6c 65 2e 63 6f 6d 22 0a 20 20 3a 6b 65 79 20 22 79 6f 75 72 2d 61 70 ts.anyscale.com"...:key."your-ap
5300 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 65 i-key"...................;can.be
5320 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
5340 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 6f 72 65 2c 20 63 ...:models.'(;;.has.many.more,.c
5360 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 6d 69 73 74 72 61 heck.anyscale.............mistra
5380 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 29 29 lai/Mixtral-8x7B-Instruct-v0.1))
53a0 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
53c0 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
53e0 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]])..**
5400 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
5420 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.
5440 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
5460 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
5480 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.
54a0 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
54c0 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.
54e0 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-
5500 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.(
5520 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
5540 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
5560 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 41 6e -backend..(gptel-make-openai."An
5580 79 73 63 61 6c 65 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 yscale"..................:host."
55a0 61 70 69 2e 65 6e 64 70 6f 69 6e 74 73 2e 61 6e 79 73 63 61 6c 65 2e 63 6f 6d 22 0a 20 20 20 20 api.endpoints.anyscale.com".....
55c0 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6b 65 79 20 22 79 6f 75 72 2d 61 70 69 2d 6b 65 79 22 .............:key."your-api-key"
55e0 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 3b 3b 20 68 ..................:models.'(;;.h
5600 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 0a 20 20 20 as.many.more,.check.anyscale....
5620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 69 73 74 72 61 6c 61 ........................mistrala
5640 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 29 29 29 0a i/Mixtral-8x7B-Instruct-v0.1))).
5660 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 23 2b #+end_src..#+html:.</details>.#+
5680 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 50 65 html:.<details><summary>.****.Pe
56a0 72 70 6c 65 78 69 74 79 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a 52 65 67 rplexity.#+html:.</summary>..Reg
56c0 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 5f 73 72 63 ister.a.backend.with.#+begin_src
56e0 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 65 72 70 6c 65 78 69 .emacs-lisp.(gptel-make-perplexi
5700 74 79 20 22 50 65 72 70 6c 65 78 69 74 79 22 20 20 20 20 20 3b 41 6e 79 20 6e 61 6d 65 20 79 6f ty."Perplexity".....;Any.name.yo
5720 75 20 77 61 6e 74 0a 20 20 3a 6b 65 79 20 22 79 6f 75 72 2d 61 70 69 2d 6b 65 79 22 20 20 20 20 u.want...:key."your-api-key"....
5740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 63 61 6e 20 62 65 20 61 20 66 75 6e 63 74 69 6f ...............;can.be.a.functio
5760 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 72 65 61 6d n.that.returns.the.key...:stream
5780 20 74 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b .t)............................;
57a0 49 66 20 79 6f 75 20 77 61 6e 74 20 72 65 73 70 6f 6e 73 65 73 20 74 6f 20 62 65 20 73 74 72 65 If.you.want.responses.to.be.stre
57c0 61 6d 65 64 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 amed.#+end_src..You.can.pick.thi
57e0 73 20 62 61 63 6b 65 6e 64 20 66 72 6f 6d 20 74 68 65 20 6d 65 6e 75 20 77 68 65 6e 20 75 73 69 s.backend.from.the.menu.when.usi
5800 6e 67 20 67 70 74 65 6c 20 28 73 65 65 20 5b 5b 23 75 73 61 67 65 5d 5b 55 73 61 67 65 5d 5d 29 ng.gptel.(see.[[#usage][Usage]])
5820 0a 0a 2a 2a 2a 2a 2a 20 28 4f 70 74 69 6f 6e 61 6c 29 20 53 65 74 20 61 73 20 74 68 65 20 64 65 ..*****.(Optional).Set.as.the.de
5840 66 61 75 6c 74 20 67 70 74 65 6c 20 62 61 63 6b 65 6e 64 0a 0a 54 68 65 20 61 62 6f 76 65 20 63 fault.gptel.backend..The.above.c
5860 6f 64 65 20 6d 61 6b 65 73 20 74 68 65 20 62 61 63 6b 65 6e 64 20 61 76 61 69 6c 61 62 6c 65 20 ode.makes.the.backend.available.
5880 74 6f 20 73 65 6c 65 63 74 2e 20 20 49 66 20 79 6f 75 20 77 61 6e 74 20 69 74 20 74 6f 20 62 65 to.select...If.you.want.it.to.be
58a0 20 74 68 65 20 64 65 66 61 75 6c 74 20 62 61 63 6b 65 6e 64 20 66 6f 72 20 67 70 74 65 6c 2c 20 .the.default.backend.for.gptel,.
58c0 79 6f 75 20 63 61 6e 20 73 65 74 20 74 68 69 73 20 61 73 20 74 68 65 20 76 61 6c 75 65 20 6f 66 you.can.set.this.as.the.value.of
58e0 20 3d 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 3d 2e 20 20 55 73 65 20 74 68 69 73 20 69 6e 73 74 .=gptel-backend=...Use.this.inst
5900 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 20 65 6d ead.of.the.above..#+begin_src.em
5920 61 63 73 2d 6c 69 73 70 0a 3b 3b 20 4f 50 54 49 4f 4e 41 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 acs-lisp.;;.OPTIONAL.configurati
5940 6f 6e 0a 28 73 65 74 71 0a 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 20 20 20 27 73 6f 6e 61 72 0a 20 on.(setq..gptel-model...'sonar..
5960 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 70 65 72 70 6c 65 gptel-backend.(gptel-make-perple
5980 78 69 74 79 20 22 50 65 72 70 6c 65 78 69 74 79 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 xity."Perplexity"...............
59a0 20 20 20 3a 6b 65 79 20 22 79 6f 75 72 2d 61 70 69 2d 6b 65 79 22 20 3a 73 74 72 65 61 6d 20 74 ...:key."your-api-key".:stream.t
59c0 29 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e )).#+end_src..#+html:.</details>
59e0 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>.****
5a00 20 41 6e 74 68 72 6f 70 69 63 20 28 43 6c 61 75 64 65 29 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 .Anthropic.(Claude).#+html:.</su
5a20 6d 6d 61 72 79 3e 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 mmary>.Register.a.backend.with.#
5a40 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 28 67 70 74 65 6c 2d 6d 61 6b +begin_src.emacs-lisp.(gptel-mak
5a60 65 2d 61 6e 74 68 72 6f 70 69 63 20 22 43 6c 61 75 64 65 22 20 20 20 20 20 20 20 20 20 20 3b 41 e-anthropic."Claude"..........;A
5a80 6e 79 20 6e 61 6d 65 20 79 6f 75 20 77 61 6e 74 0a 20 20 3a 73 74 72 65 61 6d 20 74 20 20 20 20 ny.name.you.want...:stream.t....
5aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 53 74 72 65 61 6d .........................;Stream
5ac0 69 6e 67 20 72 65 73 70 6f 6e 73 65 73 0a 20 20 3a 6b 65 79 20 22 79 6f 75 72 2d 61 70 69 2d 6b ing.responses...:key."your-api-k
5ae0 65 79 22 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 54 68 65 20 3d 3a 6b 65 79 3d 20 63 61 6e 20 62 65 ey").#+end_src.The.=:key=.can.be
5b00 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
5b20 20 28 6d 6f 72 65 20 73 65 63 75 72 65 29 2e 0a 0a 59 6f 75 20 63 61 6e 20 70 69 63 6b 20 74 68 .(more.secure)...You.can.pick.th
5b40 69 73 20 62 61 63 6b 65 6e 64 20 66 72 6f 6d 20 74 68 65 20 6d 65 6e 75 20 77 68 65 6e 20 75 73 is.backend.from.the.menu.when.us
5b60 69 6e 67 20 67 70 74 65 6c 20 28 73 65 65 20 5b 5b 23 75 73 61 67 65 5d 5b 55 73 61 67 65 5d 5d ing.gptel.(see.[[#usage][Usage]]
5b80 29 2e 0a 0a 2a 2a 2a 2a 2a 20 28 4f 70 74 69 6f 6e 61 6c 29 20 53 65 74 20 61 73 20 74 68 65 20 )...*****.(Optional).Set.as.the.
5ba0 64 65 66 61 75 6c 74 20 67 70 74 65 6c 20 62 61 63 6b 65 6e 64 0a 0a 54 68 65 20 61 62 6f 76 65 default.gptel.backend..The.above
5bc0 20 63 6f 64 65 20 6d 61 6b 65 73 20 74 68 65 20 62 61 63 6b 65 6e 64 20 61 76 61 69 6c 61 62 6c .code.makes.the.backend.availabl
5be0 65 20 74 6f 20 73 65 6c 65 63 74 2e 20 20 49 66 20 79 6f 75 20 77 61 6e 74 20 69 74 20 74 6f 20 e.to.select...If.you.want.it.to.
5c00 62 65 20 74 68 65 20 64 65 66 61 75 6c 74 20 62 61 63 6b 65 6e 64 20 66 6f 72 20 67 70 74 65 6c be.the.default.backend.for.gptel
5c20 2c 20 79 6f 75 20 63 61 6e 20 73 65 74 20 74 68 69 73 20 61 73 20 74 68 65 20 76 61 6c 75 65 20 ,.you.can.set.this.as.the.value.
5c40 6f 66 20 3d 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 3d 2e 20 20 55 73 65 20 74 68 69 73 20 69 6e of.=gptel-backend=...Use.this.in
5c60 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 20 stead.of.the.above..#+begin_src.
5c80 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 61 emacs-lisp.;;.OPTIONAL.configura
5ca0 74 69 6f 6e 0a 28 73 65 74 71 0a 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 20 27 63 6c 61 75 64 65 2d tion.(setq..gptel-model.'claude-
5cc0 33 2d 73 6f 6e 6e 65 74 2d 32 30 32 34 30 32 32 39 20 3b 20 20 22 63 6c 61 75 64 65 2d 33 2d 6f 3-sonnet-20240229.;.."claude-3-o
5ce0 70 75 73 2d 32 30 32 34 30 32 32 39 22 20 61 6c 73 6f 20 61 76 61 69 6c 61 62 6c 65 0a 20 67 70 pus-20240229".also.available..gp
5d00 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 6e 74 68 72 6f 70 69 tel-backend.(gptel-make-anthropi
5d20 63 20 22 43 6c 61 75 64 65 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 73 74 72 c."Claude"..................:str
5d40 65 61 6d 20 74 20 3a 6b 65 79 20 22 79 6f 75 72 2d 61 70 69 2d 6b 65 79 22 29 29 0a 23 2b 65 6e eam.t.:key."your-api-key")).#+en
5d60 64 5f 73 72 63 0a 0a 2a 2a 2a 2a 2a 20 28 4f 70 74 69 6f 6e 61 6c 29 20 49 6e 74 65 72 69 6d 20 d_src..*****.(Optional).Interim.
5d80 73 75 70 70 6f 72 74 20 66 6f 72 20 43 6c 61 75 64 65 20 33 2e 37 20 53 6f 6e 6e 65 74 0a 0a 67 support.for.Claude.3.7.Sonnet..g
5da0 70 74 65 6c 20 64 6f 65 73 20 6e 6f 74 20 79 65 74 20 73 75 70 70 6f 72 74 20 73 70 65 63 69 66 ptel.does.not.yet.support.specif
5dc0 79 69 6e 67 20 4c 4c 4d 20 22 72 65 61 73 6f 6e 69 6e 67 22 2f 22 74 68 69 6e 6b 69 6e 67 22 20 ying.LLM."reasoning"/"thinking".
5de0 62 65 68 61 76 69 6f 72 73 20 64 79 6e 61 6d 69 63 61 6c 6c 79 20 74 68 72 6f 75 67 68 20 69 74 behaviors.dynamically.through.it
5e00 73 20 69 6e 74 65 72 66 61 63 65 2e 20 20 54 68 69 73 20 65 66 66 6f 72 74 20 69 73 20 6f 6e 67 s.interface...This.effort.is.ong
5e20 6f 69 6e 67 2c 20 62 75 74 20 69 6e 20 74 68 65 20 6d 65 61 6e 74 69 6d 65 20 79 6f 75 20 75 73 oing,.but.in.the.meantime.you.us
5e40 65 20 74 68 65 20 43 6c 61 75 64 65 20 33 2e 37 20 53 6f 6e 6e 65 74 20 6d 6f 64 65 6c 20 69 6e e.the.Claude.3.7.Sonnet.model.in
5e60 20 69 74 73 20 22 74 68 69 6e 6b 69 6e 67 22 20 6d 6f 64 65 20 62 79 20 64 65 66 69 6e 69 6e 67 .its."thinking".mode.by.defining
5e80 20 61 20 73 65 63 6f 6e 64 20 43 6c 61 75 64 65 20 62 61 63 6b 65 6e 64 20 61 6e 64 20 73 65 6c .a.second.Claude.backend.and.sel
5ea0 65 63 74 69 6e 67 20 69 74 20 69 6e 20 76 69 61 20 74 68 65 20 55 49 20 6f 72 20 65 6c 69 73 70 ecting.it.in.via.the.UI.or.elisp
5ec0 3a 0a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 28 67 70 74 65 6c :..#+begin_src.emacs-lisp.(gptel
5ee0 2d 6d 61 6b 65 2d 61 6e 74 68 72 6f 70 69 63 20 22 43 6c 61 75 64 65 2d 74 68 69 6e 6b 69 6e 67 -make-anthropic."Claude-thinking
5f00 22 20 3b 41 6e 79 20 6e 61 6d 65 20 79 6f 75 20 77 61 6e 74 0a 20 20 3a 6b 65 79 20 22 79 6f 75 ".;Any.name.you.want...:key."you
5f20 72 2d 41 50 49 2d 6b 65 79 22 0a 20 20 3a 73 74 72 65 61 6d 20 74 0a 20 20 3a 6d 6f 64 65 6c 73 r-API-key"...:stream.t...:models
5f40 20 27 28 63 6c 61 75 64 65 2d 33 2d 37 2d 73 6f 6e 6e 65 74 2d 32 30 32 35 30 32 31 39 29 0a 20 .'(claude-3-7-sonnet-20250219)..
5f60 20 3a 68 65 61 64 65 72 20 28 6c 61 6d 62 64 61 20 28 29 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 .:header.(lambda.().(when-let*.(
5f80 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 20 (key.(gptel--get-api-key))).....
5fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 60 28 28 22 78 2d 61 70 69 2d 6b 65 79 22 20 2e 20 2c ..............`(("x-api-key"...,
5fc0 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 28 22 61 6e 74 68 72 key).....................("anthr
5fe0 6f 70 69 63 2d 76 65 72 73 69 6f 6e 22 20 2e 20 22 32 30 32 33 2d 30 36 2d 30 31 22 29 0a 20 20 opic-version"..."2023-06-01")...
6000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 22 61 6e 74 68 72 6f 70 69 63 2d 62 65 ..................("anthropic-be
6020 74 61 22 20 2e 20 22 70 64 66 73 2d 32 30 32 34 2d 30 39 2d 32 35 22 29 0a 20 20 20 20 20 20 20 ta"..."pdfs-2024-09-25")........
6040 20 20 20 20 20 20 20 20 20 20 20 20 20 28 22 61 6e 74 68 72 6f 70 69 63 2d 62 65 74 61 22 20 2e .............("anthropic-beta"..
6060 20 22 6f 75 74 70 75 74 2d 31 32 38 6b 2d 32 30 32 35 2d 30 32 2d 31 39 22 29 0a 20 20 20 20 20 ."output-128k-2025-02-19")......
6080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 22 61 6e 74 68 72 6f 70 69 63 2d 62 65 74 61 22 ...............("anthropic-beta"
60a0 20 2e 20 22 70 72 6f 6d 70 74 2d 63 61 63 68 69 6e 67 2d 32 30 32 34 2d 30 37 2d 33 31 22 29 29 ..."prompt-caching-2024-07-31"))
60c0 29 29 0a 20 20 3a 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 20 27 28 3a 74 68 69 6e 6b 69 6e 67 ))...:request-params.'(:thinking
60e0 20 28 3a 74 79 70 65 20 22 65 6e 61 62 6c 65 64 22 20 3a 62 75 64 67 65 74 5f 74 6f 6b 65 6e 73 .(:type."enabled".:budget_tokens
6100 20 32 30 34 38 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6d 61 78 5f .2048).....................:max_
6120 74 6f 6b 65 6e 73 20 34 30 39 36 29 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 59 6f 75 20 63 61 6e tokens.4096)).#+end_src..You.can
6140 20 73 65 74 20 74 68 65 20 72 65 61 73 6f 6e 69 6e 67 20 62 75 64 67 65 74 20 74 6f 6b 65 6e 73 .set.the.reasoning.budget.tokens
6160 20 61 6e 64 20 6d 61 78 20 74 6f 6b 65 6e 73 20 66 6f 72 20 74 68 69 73 20 75 73 61 67 65 20 76 .and.max.tokens.for.this.usage.v
6180 69 61 20 74 68 65 20 3d 3a 62 75 64 67 65 74 5f 74 6f 6b 65 6e 73 3d 20 61 6e 64 20 3d 3a 6d 61 ia.the.=:budget_tokens=.and.=:ma
61a0 78 5f 74 6f 6b 65 6e 73 3d 20 6b 65 79 73 20 68 65 72 65 2c 20 72 65 73 70 65 63 74 69 76 65 6c x_tokens=.keys.here,.respectivel
61c0 79 2e 0a 0a 4f 6e 63 65 20 70 72 6f 70 65 72 20 73 75 70 70 6f 72 74 20 66 6f 72 20 73 70 65 63 y...Once.proper.support.for.spec
61e0 69 66 79 69 6e 67 20 72 65 61 73 6f 6e 69 6e 67 20 62 65 68 61 76 69 6f 72 73 20 69 73 20 61 64 ifying.reasoning.behaviors.is.ad
6200 64 65 64 20 74 6f 20 67 70 74 65 6c 27 73 20 55 49 20 74 68 69 73 20 77 69 6c 6c 20 62 65 20 75 ded.to.gptel's.UI.this.will.be.u
6220 6e 6e 65 63 65 73 73 61 72 79 2e 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a nnecessary...#+html:.</details>.
6240 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>.****.
6260 47 72 6f 71 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a 52 65 67 69 73 74 65 Groq.#+html:.</summary>..Registe
6280 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
62a0 63 73 2d 6c 69 73 70 0a 3b 3b 20 47 72 6f 71 20 6f 66 66 65 72 73 20 61 6e 20 4f 70 65 6e 41 49 cs-lisp.;;.Groq.offers.an.OpenAI
62c0 20 63 6f 6d 70 61 74 69 62 6c 65 20 41 50 49 0a 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e .compatible.API.(gptel-make-open
62e0 61 69 20 22 47 72 6f 71 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 41 6e 79 20 6e 61 6d ai."Groq"...............;Any.nam
6300 65 20 79 6f 75 20 77 61 6e 74 0a 20 20 3a 68 6f 73 74 20 22 61 70 69 2e 67 72 6f 71 2e 63 6f 6d e.you.want...:host."api.groq.com
6320 22 0a 20 20 3a 65 6e 64 70 6f 69 6e 74 20 22 2f 6f 70 65 6e 61 69 2f 76 31 2f 63 68 61 74 2f 63 "...:endpoint."/openai/v1/chat/c
6340 6f 6d 70 6c 65 74 69 6f 6e 73 22 0a 20 20 3a 73 74 72 65 61 6d 20 74 0a 20 20 3a 6b 65 79 20 22 ompletions"...:stream.t...:key."
6360 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 20 your-api-key"...................
6380 3b 63 61 6e 20 62 65 20 61 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 72 65 74 75 72 6e 73 20 ;can.be.a.function.that.returns.
63a0 74 68 65 20 6b 65 79 0a 20 20 3a 6d 6f 64 65 6c 73 20 27 28 6c 6c 61 6d 61 2d 33 2e 31 2d 37 30 the.key...:models.'(llama-3.1-70
63c0 62 2d 76 65 72 73 61 74 69 6c 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6c 61 6d 61 2d 33 2e b-versatile.............llama-3.
63e0 31 2d 38 62 2d 69 6e 73 74 61 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6c 61 6d 61 33 2d 1-8b-instant.............llama3-
6400 37 30 62 2d 38 31 39 32 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6c 61 6d 61 33 2d 38 62 2d 38 70b-8192.............llama3-8b-8
6420 31 39 32 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d 69 78 74 72 61 6c 2d 38 78 37 62 2d 33 32 37 192.............mixtral-8x7b-327
6440 36 38 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 6d 6d 61 2d 37 62 2d 69 74 29 29 0a 23 2b 65 68.............gemma-7b-it)).#+e
6460 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 6e nd_src..You.can.pick.this.backen
6480 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 6c d.from.the.menu.when.using.gptel
64a0 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 20 20 4e 6f 74 65 20 .(see.[[#usage][Usage]])...Note.
64c0 74 68 61 74 20 47 72 6f 71 20 69 73 20 66 61 73 74 20 65 6e 6f 75 67 68 20 74 68 61 74 20 79 6f that.Groq.is.fast.enough.that.yo
64e0 75 20 63 6f 75 6c 64 20 65 61 73 69 6c 79 20 73 65 74 20 3d 3a 73 74 72 65 61 6d 20 6e 69 6c 3d u.could.easily.set.=:stream.nil=
6500 20 61 6e 64 20 73 74 69 6c 6c 20 67 65 74 20 6e 65 61 72 2d 69 6e 73 74 61 6e 74 20 72 65 73 70 .and.still.get.near-instant.resp
6520 6f 6e 73 65 73 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 onses...*****.(Optional).Set.as.
6540 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
6560 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
6580 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
65a0 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
65c0 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
65e0 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
6600 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_
6620 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
6640 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 6d 69 guration.(setq.gptel-model...'mi
6660 78 74 72 61 6c 2d 38 78 37 62 2d 33 32 37 36 38 0a 20 20 20 20 20 20 67 70 74 65 6c 2d 62 61 63 xtral-8x7b-32768.......gptel-bac
6680 6b 65 6e 64 0a 20 20 20 20 20 20 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 20 22 47 kend.......(gptel-make-openai."G
66a0 72 6f 71 22 0a 20 20 20 20 20 20 20 20 3a 68 6f 73 74 20 22 61 70 69 2e 67 72 6f 71 2e 63 6f 6d roq".........:host."api.groq.com
66c0 22 0a 20 20 20 20 20 20 20 20 3a 65 6e 64 70 6f 69 6e 74 20 22 2f 6f 70 65 6e 61 69 2f 76 31 2f ".........:endpoint."/openai/v1/
66e0 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 74 72 65 61 chat/completions".........:strea
6700 6d 20 74 0a 20 20 20 20 20 20 20 20 3a 6b 65 79 20 22 79 6f 75 72 2d 61 70 69 2d 6b 65 79 22 0a m.t.........:key."your-api-key".
6720 20 20 20 20 20 20 20 20 3a 6d 6f 64 65 6c 73 20 27 28 6c 6c 61 6d 61 2d 33 2e 31 2d 37 30 62 2d ........:models.'(llama-3.1-70b-
6740 76 65 72 73 61 74 69 6c 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6c 61 6d versatile...................llam
6760 61 2d 33 2e 31 2d 38 62 2d 69 6e 73 74 61 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 a-3.1-8b-instant................
6780 20 20 20 6c 6c 61 6d 61 33 2d 37 30 62 2d 38 31 39 32 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ...llama3-70b-8192..............
67a0 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 20 20 .....llama3-8b-8192.............
67c0 20 20 20 20 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 ......mixtral-8x7b-32768........
67e0 20 20 20 20 20 20 20 20 20 20 20 67 65 6d 6d 61 2d 37 62 2d 69 74 29 29 29 0a 23 2b 65 6e 64 5f ...........gemma-7b-it))).#+end_
6800 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:
6820 20 3c 64 65 74 61 69 6c 73 3e 3c 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 4f 70 65 6e 52 6f 75 .<details><summary>.****.OpenRou
6840 74 65 72 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a 52 65 67 69 73 74 65 72 ter.#+html:.</summary>..Register
6860 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
6880 73 2d 6c 69 73 70 0a 3b 3b 20 4f 70 65 6e 52 6f 75 74 65 72 20 6f 66 66 65 72 73 20 61 6e 20 4f s-lisp.;;.OpenRouter.offers.an.O
68a0 70 65 6e 41 49 20 63 6f 6d 70 61 74 69 62 6c 65 20 41 50 49 0a 28 67 70 74 65 6c 2d 6d 61 6b 65 penAI.compatible.API.(gptel-make
68c0 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"............
68e0 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 74 20 22 6f ...;Any.name.you.want...:host."o
6900 70 65 6e 72 6f 75 74 65 72 2e 61 69 22 0a 20 20 3a 65 6e 64 70 6f 69 6e 74 20 22 2f 61 70 69 2f penrouter.ai"...:endpoint."/api/
6920 76 31 2f 63 68 61 74 2f 63 6f 6d 70 6c 65 74 69 6f 6e 73 22 0a 20 20 3a 73 74 72 65 61 6d 20 74 v1/chat/completions"...:stream.t
6940 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 20 ...:key."your-api-key"..........
6960 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 74 .........;can.be.a.function.that
6980 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 6f 70 65 .returns.the.key...:models.'(ope
69a0 6e 61 69 2f 67 70 74 2d 33 2e 35 2d 74 75 72 62 6f 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d 69 nai/gpt-3.5-turbo.............mi
69c0 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 74 0a 20 20 stralai/mixtral-8x7b-instruct...
69e0 20 20 20 20 20 20 20 20 20 20 6d 65 74 61 2d 6c 6c 61 6d 61 2f 63 6f 64 65 6c 6c 61 6d 61 2d 33 ..........meta-llama/codellama-3
6a00 34 62 2d 69 6e 73 74 72 75 63 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 64 65 6c 6c 61 6d 4b-instruct.............codellam
6a20 61 2f 63 6f 64 65 6c 6c 61 6d 61 2d 37 30 62 2d 69 6e 73 74 72 75 63 74 0a 20 20 20 20 20 20 20 a/codellama-70b-instruct........
6a40 20 20 20 20 20 67 6f 6f 67 6c 65 2f 70 61 6c 6d 2d 32 2d 63 6f 64 65 63 68 61 74 2d 62 69 73 6f .....google/palm-2-codechat-biso
6a60 6e 2d 33 32 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 6f 6f 67 6c 65 2f 67 65 6d 69 6e 69 2d n-32k.............google/gemini-
6a80 70 72 6f 29 29 0a 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 59 6f 75 20 63 61 6e 20 70 69 63 6b 20 74 pro))..#+end_src..You.can.pick.t
6aa0 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
6ac0 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]
6ae0 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
6b00 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
6b20 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
6b40 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
6b60 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
6b80 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
6ba0 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
6bc0 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
6be0 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
6c00 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 6d 69 78 74 72 ation.(setq.gptel-model...'mixtr
6c20 61 6c 2d 38 78 37 62 2d 33 32 37 36 38 0a 20 20 20 20 20 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e al-8x7b-32768.......gptel-backen
6c40 64 0a 20 20 20 20 20 20 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 20 22 4f 70 65 6e d.......(gptel-make-openai."Open
6c60 52 6f 75 74 65 72 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 41 6e 79 20 6e 61 6d 65 20 Router"...............;Any.name.
6c80 79 6f 75 20 77 61 6e 74 0a 20 20 20 20 20 20 20 20 3a 68 6f 73 74 20 22 6f 70 65 6e 72 6f 75 74 you.want.........:host."openrout
6ca0 65 72 2e 61 69 22 0a 20 20 20 20 20 20 20 20 3a 65 6e 64 70 6f 69 6e 74 20 22 2f 61 70 69 2f 76 er.ai".........:endpoint."/api/v
6cc0 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 74 72 1/chat/completions".........:str
6ce0 65 61 6d 20 74 0a 20 20 20 20 20 20 20 20 3a 6b 65 79 20 22 79 6f 75 72 2d 61 70 69 2d 6b 65 79 eam.t.........:key."your-api-key
6d00 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 66 75 "...................;can.be.a.fu
6d20 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 20 20 nction.that.returns.the.key.....
6d40 20 20 20 20 3a 6d 6f 64 65 6c 73 20 27 28 6f 70 65 6e 61 69 2f 67 70 74 2d 33 2e 35 2d 74 75 72 ....:models.'(openai/gpt-3.5-tur
6d60 62 6f 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 69 73 74 72 61 6c 61 69 2f 6d bo...................mistralai/m
6d80 69 78 74 72 61 6c 2d 38 78 37 62 2d 69 6e 73 74 72 75 63 74 0a 20 20 20 20 20 20 20 20 20 20 20 ixtral-8x7b-instruct............
6da0 20 20 20 20 20 20 20 6d 65 74 61 2d 6c 6c 61 6d 61 2f 63 6f 64 65 6c 6c 61 6d 61 2d 33 34 62 2d .......meta-llama/codellama-34b-
6dc0 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 63 6f 64 65 6c instruct...................codel
6de0 6c 61 6d 61 2f 63 6f 64 65 6c 6c 61 6d 61 2d 37 30 62 2d 69 6e 73 74 72 75 63 74 0a 20 20 20 20 lama/codellama-70b-instruct.....
6e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 6f 6f 67 6c 65 2f 70 61 6c 6d 2d 32 2d 63 6f 64 65 ..............google/palm-2-code
6e20 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 20 20 20 20 20 chat-bison-32k..................
6e40 20 67 6f 6f 67 6c 65 2f 67 65 6d 69 6e 69 2d 70 72 6f 29 29 29 0a 0a 23 2b 65 6e 64 5f 73 72 63 .google/gemini-pro)))..#+end_src
6e60 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
6e80 74 61 69 6c 73 3e 3c 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 50 72 69 76 61 74 65 47 50 54 0a tails><summary>.****.PrivateGPT.
6ea0 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a 52 65 67 69 73 74 65 72 20 61 20 62 #+html:.</summary>..Register.a.b
6ec0 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
6ee0 73 70 0a 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 70 72 69 76 61 74 65 67 70 74 20 22 70 72 69 76 61 sp.(gptel-make-privategpt."priva
6f00 74 65 47 50 54 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 41 6e 79 20 6e 61 6d 65 20 79 teGPT"...............;Any.name.y
6f20 6f 75 20 77 61 6e 74 0a 20 20 3a 70 72 6f 74 6f 63 6f 6c 20 22 68 74 74 70 22 0a 20 20 3a 68 6f ou.want...:protocol."http"...:ho
6f40 73 74 20 22 6c 6f 63 61 6c 68 6f 73 74 3a 38 30 30 31 22 0a 20 20 3a 73 74 72 65 61 6d 20 74 0a st."localhost:8001"...:stream.t.
6f60 20 20 3a 63 6f 6e 74 65 78 74 20 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..:context.t....................
6f80 20 20 20 20 20 20 20 20 3b 55 73 65 20 63 6f 6e 74 65 78 74 20 70 72 6f 76 69 64 65 64 20 62 79 ........;Use.context.provided.by
6fa0 20 65 6d 62 65 64 64 69 6e 67 73 0a 20 20 3a 73 6f 75 72 63 65 73 20 74 20 20 20 20 20 20 20 20 .embeddings...:sources.t........
6fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 52 65 74 75 72 6e 20 69 6e 66 6f ....................;Return.info
6fe0 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 73 6f 75 72 63 65 20 64 6f 63 75 6d 65 6e 74 73 0a 20 rmation.about.source.documents..
7000 20 3a 6d 6f 64 65 6c 73 20 27 28 70 72 69 76 61 74 65 2d 67 70 74 29 29 0a 0a 23 2b 65 6e 64 5f .:models.'(private-gpt))..#+end_
7020 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
7040 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
7060 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
7080 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
70a0 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.
70c0 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.
70e0 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
7100 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
7120 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
7140 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
7160 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.;
7180 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
71a0 70 74 65 6c 2d 6d 6f 64 65 6c 20 20 20 27 70 72 69 76 61 74 65 2d 67 70 74 0a 20 20 20 20 20 20 ptel-model...'private-gpt.......
71c0 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 0a 20 20 20 20 20 20 28 67 70 74 65 6c 2d 6d 61 6b 65 2d gptel-backend.......(gptel-make-
71e0 70 72 69 76 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 privategpt."privateGPT".........
7200 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 20 20 20 20 20 ......;Any.name.you.want........
7220 20 3a 70 72 6f 74 6f 63 6f 6c 20 22 68 74 74 70 22 0a 20 20 20 20 20 20 20 20 3a 68 6f 73 74 20 .:protocol."http".........:host.
7240 22 6c 6f 63 61 6c 68 6f 73 74 3a 38 30 30 31 22 0a 20 20 20 20 20 20 20 20 3a 73 74 72 65 61 6d "localhost:8001".........:stream
7260 20 74 0a 20 20 20 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 20 74 20 20 20 20 20 20 20 20 20 20 20 .t.........:context.t...........
7280 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 74 20 70 72 .................;Use.context.pr
72a0 6f 76 69 64 65 64 20 62 79 20 65 6d 62 65 64 64 69 6e 67 73 0a 20 20 20 20 20 20 20 20 3a 73 6f ovided.by.embeddings.........:so
72c0 75 72 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 urces.t.........................
72e0 20 20 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 ...;Return.information.about.sou
7300 72 63 65 20 64 6f 63 75 6d 65 6e 74 73 0a 20 20 20 20 20 20 20 20 3a 6d 6f 64 65 6c 73 20 27 28 rce.documents.........:models.'(
7320 70 72 69 76 61 74 65 2d 67 70 74 29 29 29 0a 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 23 2b 68 74 6d private-gpt)))..#+end_src..#+htm
7340 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><
7360 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 44 65 65 70 53 65 65 6b 0a 23 2b 68 74 6d 6c 3a 20 3c summary>.****.DeepSeek.#+html:.<
7380 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
73a0 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 67 70 74 65 6c th.#+begin_src.emacs-lisp.(gptel
73c0 2d 6d 61 6b 65 2d 64 65 65 70 73 65 65 6b 20 22 44 65 65 70 53 65 65 6b 22 20 20 20 20 20 20 20 -make-deepseek."DeepSeek".......
73e0 3b 41 6e 79 20 6e 61 6d 65 20 79 6f 75 20 77 61 6e 74 0a 20 20 3a 73 74 72 65 61 6d 20 74 20 20 ;Any.name.you.want...:stream.t..
7400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 66 6f 72 20 73 74 .........................;for.st
7420 72 65 61 6d 69 6e 67 20 72 65 73 70 6f 6e 73 65 73 0a 20 20 3a 6b 65 79 20 22 79 6f 75 72 2d 61 reaming.responses...:key."your-a
7440 70 69 2d 6b 65 79 22 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 63 61 6e 20 62 65 20 61 pi-key")...............;can.be.a
7460 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.#
7480 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
74a0 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
74c0 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]])...***
74e0 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
7500 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
7520 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
7540 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.
7560 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
7580 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
75a0 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
75c0 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
75e0 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
7600 65 74 71 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 20 20 20 27 64 65 65 70 73 65 65 6b 2d 72 65 61 73 etq.gptel-model...'deepseek-reas
7620 6f 6e 65 72 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 oner.......gptel-backend.(gptel-
7640 6d 61 6b 65 2d 64 65 65 70 73 65 65 6b 20 22 44 65 65 70 53 65 65 6b 22 0a 20 20 20 20 20 20 20 make-deepseek."DeepSeek"........
7660 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........
7680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6b 65 79 20 22 79 6f 75 72 2d 61 70 69 2d 6b 65 ...............:key."your-api-ke
76a0 79 22 29 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c y")).#+end_src..#+html:.</detail
76c0 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 2a s>.#+html:.<details><summary>.**
76e0 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 0a 0a **.Cerebras.#+html:.</summary>..
7700 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 5f Register.a.backend.with.#+begin_
7720 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 65 72 src.emacs-lisp.;;.Cerebras.offer
7740 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 20 41 s.an.instant.OpenAI.compatible.A
7760 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 73 22 PI.(gptel-make-openai."Cerebras"
7780 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 65 6e ...:host."api.cerebras.ai"...:en
77a0 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 20 20 dpoint."/v1/chat/completions"...
77c0 3a 73 74 72 65 61 6d 20 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :stream.t.......................
77e0 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 72 61 ......;optionally.nil.as.Cerebra
7800 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 70 69 s.is.instant.AI...:key."your-api
7820 2d 6b 65 79 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 63 61 6e 20 62 65 20 -key"...................;can.be.
7840 61 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 72 65 74 75 72 6e 73 20 74 68 65 20 6b 65 79 0a a.function.that.returns.the.key.
7860 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 20 20 ..:models.'(llama3.1-70b........
7880 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 59 6f .....llama3.1-8b)).#+end_src..Yo
78a0 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
78c0 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
78e0 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 6c sage][Usage]])...*****.(Optional
7900 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
7920 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
7940 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
7960 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
7980 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.
79a0 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=.
79c0 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.
79e0 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
7a00 4e 41 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0a 28 73 65 74 71 20 67 70 74 65 6c 2d 6d 6f NAL.configuration.(setq.gptel-mo
7a20 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 2d 62 del...'llama3.1-8b.......gptel-b
7a40 61 63 6b 65 6e 64 0a 20 20 20 20 20 20 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 20 ackend.......(gptel-make-openai.
7a60 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 63 65 "Cerebras".........:host."api.ce
7a80 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 2f 76 rebras.ai".........:endpoint."/v
7aa0 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 74 72 1/chat/completions".........:str
7ac0 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 2d 6b eam.nil.........:key."your-api-k
7ae0 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 2d 37 ey".........:models.'(llama3.1-7
7b00 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 38 62 0b...................llama3.1-8b
7b20 29 29 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 ))).#+end_src..#+html:.</details
7b40 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>.***
7b60 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 61 72 *.Github.Models.#+html:.</summar
7b80 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 65 y>..Register.a.backend.with.#+be
7ba0 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 68 75 62 20 4d gin_src.emacs-lisp...;;.Github.M
7bc0 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 61 74 69 62 6c odels.offers.an.OpenAI.compatibl
7be0 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 22 47 69 74 68 e.API...(gptel-make-openai."Gith
7c00 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...
7c20 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 69 2e 61 7a 75 ..:host."models.inference.ai.azu
7c40 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 74 2f 63 6f 6d re.com".....:endpoint."/chat/com
7c60 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 35 2d 30 31 2d pletions?api-version=2024-05-01-
7c80 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 3a 6b 65 79 20 preview".....:stream.t.....:key.
7ca0 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 64 65 6c 73 20 "your-github-token".....:models.
7cc0 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 69 6c 6c 20 6e '(gpt-4o)).#+end_src..You.will.n
7ce0 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 74 70 73 3a 2f eed.to.create.a.github.[[https:/
7d00 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 61 6c 2d 61 63 /github.com/settings/personal-ac
7d20 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 61 6c 6c 20 74 cess-tokens][token]]...For.all.t
7d40 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 74 68 65 20 5b he.available.models,.check.the.[
7d60 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 6c 61 63 65 2f [https://github.com/marketplace/
7d80 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 20 63 61 6e 20 models][marketplace]]...You.can.
7da0 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 75 20 pick.this.backend.from.the.menu.
7dc0 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 73 61 67 65 5d when.using.(see.[[#usage][Usage]
7de0 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
7e00 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
7e20 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
7e40 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
7e60 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
7e80 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
7ea0 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
7ec0 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
7ee0 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 6f 6e 66 69 67 .emacs-lisp...;;.OPTIONAL.config
7f00 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 20 20 27 67 70 uration...(setq.gptel-model..'gp
7f20 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 20 20 20 20 20 t-4o.........gptel-backend......
7f40 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 75 62 20 4d 6f ...(gptel-make-openai."Github.Mo
7f60 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 20 20 20 20 20 dels".;Any.name.you.want........
7f80 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 69 2e 61 7a ...:host."models.inference.ai.az
7fa0 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 74 20 22 2f 63 ure.com"...........:endpoint."/c
7fc0 68 61 74 2f 63 6f 6d 70 6c 65 74 69 6f 6e 73 3f 61 70 69 2d 76 65 72 73 69 6f 6e 3d 32 30 32 34 hat/completions?api-version=2024
7fe0 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 73 74 72 65 61 -05-01-preview"...........:strea
8000 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 74 68 75 62 2d m.t...........:key."your-github-
8020 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 67 70 74 2d 34 token"...........:models.'(gpt-4
8040 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 74 61 69 6c 73 o)).#+end_src..#+html:.</details
8060 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>.***
8080 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 72 79 3e 0a 0a *.Novita.AI.#+html:.</summary>..
80a0 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 5f Register.a.backend.with.#+begin_
80c0 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 20 6f 66 66 65 src.emacs-lisp.;;.Novita.AI.offe
80e0 72 73 20 61 6e 20 4f 70 65 6e 41 49 20 63 6f 6d 70 61 74 69 62 6c 65 20 41 50 49 0a 28 67 70 74 rs.an.OpenAI.compatible.API.(gpt
8100 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 20 20 20 el-make-openai."NovitaAI".......
8120 20 20 3b 41 6e 79 20 6e 61 6d 65 20 79 6f 75 20 77 61 6e 74 0a 20 20 3a 68 6f 73 74 20 22 61 70 ..;Any.name.you.want...:host."ap
8140 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 76 33 2f 6f 70 i.novita.ai"...:endpoint."/v3/op
8160 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 20 20 20 20 20 enai"...:key."your-api-key".....
8180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 63 61 6e 20 62 65 20 61 20 66 75 6e 63 74 69 6f 6e ..............;can.be.a.function
81a0 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 72 65 61 6d 20 .that.returns.the.key...:stream.
81c0 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 6f 72 65 2c 20 t...:models.'(;;.has.many.more,.
81e0 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 2d 61 70 69 0a check.https://novita.ai/llm-api.
8200 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 2d 6c 32 2d 31 ............gryphe/mythomax-l2-1
8220 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 6c 61 6d 61 2d 3b.............meta-llama/llama-
8240 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 6d 65 74 61 2d 3-70b-instruct.............meta-
8260 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 0a 23 llama/llama-3.1-70b-instruct)).#
8280 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
82a0 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
82c0 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]])..****
82e0 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.
8300 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
8320 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
8340 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
8360 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
8380 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
83a0 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
83c0 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
83e0 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 65 sp.;;.OPTIONAL.configuration.(se
8400 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 79 74 68 6f 6d tq..gptel-model...'gryphe/mythom
8420 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 67 70 74 65 6c ax-l2-13b..gptel-backend..(gptel
8440 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 20 20 20 20 20 -make-openai."NovitaAI".........
8460 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 20 20 3a 65 6e ....:host."api.novita.ai"....:en
8480 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 20 22 79 6f 75 dpoint."/v3/openai"....:key."you
84a0 72 2d 61 70 69 2d 6b 65 79 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 r-api-key"......................
84c0 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 68 61 73 20 6d .:stream.t....:models.'(;;.has.m
84e0 61 6e 79 20 6d 6f 72 65 2c 20 63 68 65 63 6b 20 68 74 74 70 73 3a 2f 2f 6e 6f 76 69 74 61 2e 61 any.more,.check.https://novita.a
8500 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 72 61 6c 61 69 i/llm-api..............mistralai
8520 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 20 20 20 /Mixtral-8x7B-Instruct-v0.1.....
8540 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 2d 37 30 62 2d .........meta-llama/llama-3-70b-
8560 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 6c 6c 61 6d 61 instruct..............meta-llama
8580 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 23 2b 65 6e 64 /llama-3.1-70b-instruct))).#+end
85a0 5f 73 72 63 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 0a 23 2b 68 74 6d 6c _src..#+html:.</details>..#+html
85c0 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 41 49 0a 23 2b :.<details><summary>.****.xAI.#+
85e0 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a 52 65 67 69 73 74 65 72 20 61 20 62 61 63 html:.</summary>..Register.a.bac
8600 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 73 70 kend.with.#+begin_src.emacs-lisp
8620 0a 3b 3b 20 78 41 49 20 6f 66 66 65 72 73 20 61 6e 20 4f 70 65 6e 41 49 20 63 6f 6d 70 61 74 69 .;;.xAI.offers.an.OpenAI.compati
8640 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 78 41 49 22 ble.API.(gptel-make-openai."xAI"
8660 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 20 ...........;Any.name.you.want...
8680 3a 68 6f 73 74 20 22 61 70 69 2e 78 2e 61 69 22 0a 20 20 3a 6b 65 79 20 22 79 6f 75 72 2d 61 70 :host."api.x.ai"...:key."your-ap
86a0 69 2d 6b 65 79 22 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 i-key"..............;can.be.a.fu
86c0 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 65 nction.that.returns.the.key...:e
86e0 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 20 ndpoint."/v1/chat/completions"..
8700 20 3a 73 74 72 65 61 6d 20 74 0a 20 20 3a 6d 6f 64 65 6c 73 20 27 28 3b 3b 20 78 41 49 20 6e 6f .:stream.t...:models.'(;;.xAI.no
8720 77 20 6f 6e 6c 79 20 6f 66 66 65 72 73 20 60 67 72 6f 6b 2d 62 65 74 61 60 20 61 73 20 6f 66 20 w.only.offers.`grok-beta`.as.of.
8740 74 68 65 20 74 69 6d 65 20 6f 66 20 74 68 69 73 20 77 72 69 74 69 6e 67 0a 20 20 20 20 20 20 20 the.time.of.this.writing........
8760 20 20 20 20 20 67 72 6f 6b 2d 62 65 74 61 29 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 59 6f 75 20 .....grok-beta)).#+end_src..You.
8780 63 61 6e 20 70 69 63 6b 20 74 68 69 73 20 62 61 63 6b 65 6e 64 20 66 72 6f 6d 20 74 68 65 20 6d can.pick.this.backend.from.the.m
87a0 65 6e 75 20 77 68 65 6e 20 75 73 69 6e 67 20 67 70 74 65 6c 20 28 73 65 65 20 5b 5b 23 75 73 61 enu.when.using.gptel.(see.[[#usa
87c0 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 20 53 ge][Usage]])..*****.(Optional).S
87e0 65 74 20 61 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 67 70 74 65 6c 20 62 61 63 6b 65 6e 64 0a et.as.the.default.gptel.backend.
8800 0a 54 68 65 20 61 62 6f 76 65 20 63 6f 64 65 20 6d 61 6b 65 73 20 74 68 65 20 62 61 63 6b 65 6e .The.above.code.makes.the.backen
8820 64 20 61 76 61 69 6c 61 62 6c 65 20 74 6f 20 73 65 6c 65 63 74 2e 20 20 49 66 20 79 6f 75 20 77 d.available.to.select...If.you.w
8840 61 6e 74 20 69 74 20 74 6f 20 62 65 20 74 68 65 20 64 65 66 61 75 6c 74 20 62 61 63 6b 65 6e 64 ant.it.to.be.the.default.backend
8860 20 66 6f 72 20 67 70 74 65 6c 2c 20 79 6f 75 20 63 61 6e 20 73 65 74 20 74 68 69 73 20 61 73 20 .for.gptel,.you.can.set.this.as.
8880 74 68 65 20 76 61 6c 75 65 20 6f 66 20 3d 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 3d 2e 20 20 55 the.value.of.=gptel-backend=...U
88a0 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 23 2b se.this.instead.of.the.above..#+
88c0 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 3b 3b 20 4f 50 54 49 4f 4e 41 4c begin_src.emacs-lisp.;;.OPTIONAL
88e0 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 64 65 .configuration.(setq..gptel-mode
8900 6c 20 20 20 27 67 72 6f 6b 2d 62 65 74 61 0a 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 0a 20 28 l...'grok-beta..gptel-backend..(
8920 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 20 22 78 41 49 22 20 20 20 20 20 20 20 20 20 gptel-make-openai."xAI".........
8940 20 20 3b 41 6e 79 20 6e 61 6d 65 20 79 6f 75 20 77 61 6e 74 0a 20 20 20 3a 68 6f 73 74 20 22 61 ..;Any.name.you.want....:host."a
8960 70 69 2e 78 2e 61 69 22 0a 20 20 20 3a 6b 65 79 20 22 79 6f 75 72 2d 61 70 69 2d 6b 65 79 22 20 pi.x.ai"....:key."your-api-key".
8980 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 63 61 6e 20 62 65 20 61 20 66 75 6e 63 74 69 6f 6e 20 .............;can.be.a.function.
89a0 74 68 61 74 20 72 65 74 75 72 6e 73 20 74 68 65 20 6b 65 79 0a 20 20 20 3a 65 6e 64 70 6f 69 6e that.returns.the.key....:endpoin
89c0 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 20 3a 73 74 72 t."/v1/chat/completions"....:str
89e0 65 61 6d 20 74 0a 20 20 20 3a 6d 6f 64 65 6c 73 20 27 28 3b 3b 20 78 41 49 20 6e 6f 77 20 6f 6e eam.t....:models.'(;;.xAI.now.on
8a00 6c 79 20 6f 66 66 65 72 73 20 60 67 72 6f 6b 2d 62 65 74 61 60 20 61 73 20 6f 66 20 74 68 65 20 ly.offers.`grok-beta`.as.of.the.
8a20 74 69 6d 65 20 6f 66 20 74 68 69 73 20 77 72 69 74 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 time.of.this.writing............
8a40 20 20 67 72 6f 6b 2d 62 65 74 61 29 29 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 23 2b 68 74 6d 6c ..grok-beta))).#+end_src..#+html
8a60 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 0a 2a 2a 20 55 73 61 67 65 0a 0a 67 70 74 65 6c 20 70 72 :.</details>..**.Usage..gptel.pr
8a80 6f 76 69 64 65 73 20 61 20 66 65 77 20 70 6f 77 65 72 66 75 6c 2c 20 67 65 6e 65 72 61 6c 20 70 ovides.a.few.powerful,.general.p
8aa0 75 72 70 6f 73 65 20 61 6e 64 20 66 6c 65 78 69 62 6c 65 20 63 6f 6d 6d 61 6e 64 73 2e 20 20 59 urpose.and.flexible.commands...Y
8ac0 6f 75 20 63 61 6e 20 64 79 6e 61 6d 69 63 61 6c 6c 79 20 74 77 65 61 6b 20 74 68 65 69 72 20 62 ou.can.dynamically.tweak.their.b
8ae0 65 68 61 76 69 6f 72 20 74 6f 20 74 68 65 20 6e 65 65 64 73 20 6f 66 20 79 6f 75 72 20 74 61 73 ehavior.to.the.needs.of.your.tas
8b00 6b 20 77 69 74 68 20 2f 64 69 72 65 63 74 69 76 65 73 2f 2c 20 72 65 64 69 72 65 63 74 69 6f 6e k.with./directives/,.redirection
8b20 20 6f 70 74 69 6f 6e 73 20 61 6e 64 20 6d 6f 72 65 2e 20 20 54 68 65 72 65 20 69 73 20 61 20 5b .options.and.more...There.is.a.[
8b40 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 74 63 68 3f 76 [https://www.youtube.com/watch?v
8b60 3d 62 73 52 6e 68 5f 62 72 67 67 4d 5d 5b 76 69 64 65 6f 20 64 65 6d 6f 5d 5d 20 73 68 6f 77 69 =bsRnh_brggM][video.demo]].showi
8b80 6e 67 20 76 61 72 69 6f 75 73 20 75 73 65 73 20 6f 66 20 67 70 74 65 6c 20 2d 2d 20 62 75 74 20 ng.various.uses.of.gptel.--.but.
8ba0 3d 67 70 74 65 6c 2d 73 65 6e 64 3d 20 6d 69 67 68 74 20 62 65 20 61 6c 6c 20 79 6f 75 20 6e 65 =gptel-send=.might.be.all.you.ne
8bc0 65 64 2e 0a 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 2d ed...|-------------------+------
8be0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
8c00 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
8c20 2d 2d 2d 2d 2d 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 -----------------------------|.|
8c40 20 2a 54 6f 20 73 65 6e 64 20 71 75 65 72 69 65 73 2a 20 7c 20 44 65 73 63 72 69 70 74 69 6f 6e .*To.send.queries*.|.Description
8c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
8c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
8ca0 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 .......................|.|------
8cc0 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 -------------+------------------
8ce0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
8d00 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
8d20 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 65 6e 64 -----------------|.|.=gptel-send
8d40 3d 20 20 20 20 20 20 7c 20 53 65 6e 64 20 61 6c 6c 20 74 65 78 74 20 75 70 20 74 6f 20 3d 28 70 =......|.Send.all.text.up.to.=(p
8d60 6f 69 6e 74 29 3d 2c 20 6f 72 20 74 68 65 20 73 65 6c 65 63 74 69 6f 6e 20 69 66 20 72 65 67 69 oint)=,.or.the.selection.if.regi
8d80 6f 6e 20 69 73 20 61 63 74 69 76 65 2e 20 20 57 6f 72 6b 73 20 61 6e 79 77 68 65 72 65 20 69 6e on.is.active...Works.anywhere.in
8da0 20 45 6d 61 63 73 2e 20 20 20 20 7c 0a 7c 20 3d 67 70 74 65 6c 3d 20 20 20 20 20 20 20 20 20 20 .Emacs.....|.|.=gptel=..........
8dc0 20 7c 20 43 72 65 61 74 65 20 61 20 6e 65 77 20 64 65 64 69 63 61 74 65 64 20 63 68 61 74 20 62 .|.Create.a.new.dedicated.chat.b
8de0 75 66 66 65 72 2e 20 20 4e 6f 74 20 72 65 71 75 69 72 65 64 20 74 6f 20 75 73 65 20 67 70 74 65 uffer...Not.required.to.use.gpte
8e00 6c 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 l...............................
8e20 20 20 20 20 20 7c 0a 7c 20 3d 67 70 74 65 6c 2d 72 65 77 72 69 74 65 3d 20 20 20 7c 20 52 65 77 .....|.|.=gptel-rewrite=...|.Rew
8e40 72 69 74 65 2c 20 72 65 66 61 63 74 6f 72 20 6f 72 20 63 68 61 6e 67 65 20 74 68 65 20 73 65 6c rite,.refactor.or.change.the.sel
8e60 65 63 74 65 64 20 72 65 67 69 6f 6e 2e 20 20 43 61 6e 20 64 69 66 66 2f 65 64 69 66 66 20 63 68 ected.region...Can.diff/ediff.ch
8e80 61 6e 67 65 73 20 62 65 66 6f 72 65 20 6d 65 72 67 69 6e 67 2f 61 70 70 6c 79 69 6e 67 2e 20 7c anges.before.merging/applying..|
8ea0 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 2d 2d 2d 2d 2d .|-------------------+----------
8ec0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
8ee0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
8f00 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 7c 0a 0a 7c 2d 2d 2d -------------------------|..|---
8f20 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 2d 2d 2d 2d ------------------+-------------
8f40 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
8f60 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 74 77 65 61 6b 20 ------------------|.|.*To.tweak.
8f80 62 65 68 61 76 69 6f 72 2a 20 7c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 behavior*.|.....................
8fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
8fc0 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 2d ..........|.|-------------------
8fe0 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 --+-----------------------------
9000 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
9020 2d 2d 7c 0a 7c 20 3d 43 2d 75 3d 20 3d 67 70 74 65 6c 2d 73 65 6e 64 3d 20 20 7c 20 54 72 61 6e --|.|.=C-u=.=gptel-send=..|.Tran
9040 73 69 65 6e 74 20 6d 65 6e 75 20 66 6f 72 20 70 72 65 66 65 72 65 6e 63 65 73 2c 20 69 6e 70 75 sient.menu.for.preferences,.inpu
9060 74 2f 6f 75 74 70 75 74 20 72 65 64 69 72 65 63 74 69 6f 6e 20 65 74 63 2e 20 7c 0a 7c 20 3d 67 t/output.redirection.etc..|.|.=g
9080 70 74 65 6c 2d 6d 65 6e 75 3d 20 20 20 20 20 20 20 20 7c 20 2f 28 53 61 6d 65 29 2f 20 20 20 20 ptel-menu=........|./(Same)/....
90a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
90c0 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 2d 2d ..................|.|-----------
90e0 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 ----------+---------------------
9100 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
9120 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 2d 2d ----------|..|------------------
9140 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d +-------------------------------
9160 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
9180 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
91a0 2d 2d 2d 2d 2d 2d 2d 2d 2d 7c 0a 7c 20 2a 54 6f 20 61 64 64 20 63 6f 6e 74 65 78 74 2a 20 7c 20 ---------|.|.*To.add.context*.|.
91c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
91e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
9200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
9220 20 20 20 20 20 20 20 7c 0a 7c 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 2d 2d 2d .......|.|------------------+---
9240 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
9260 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
9280 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
92a0 2d 2d 2d 2d 2d 7c 0a 7c 20 3d 67 70 74 65 6c 2d 61 64 64 3d 20 20 20 20 20 20 7c 20 41 64 64 2f -----|.|.=gptel-add=......|.Add/
92c0 72 65 6d 6f 76 65 20 61 20 72 65 67 69 6f 6e 20 6f 72 20 62 75 66 66 65 72 20 74 6f 20 67 70 74 remove.a.region.or.buffer.to.gpt
92e0 65 6c 27 73 20 63 6f 6e 74 65 78 74 2e 20 20 49 6e 20 44 69 72 65 64 2c 20 61 64 64 2f 72 65 6d el's.context...In.Dired,.add/rem
9300 6f 76 65 20 6d 61 72 6b 65 64 20 66 69 6c 65 73 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ove.marked.files................
9320 20 20 20 7c 0a 7c 20 3d 67 70 74 65 6c 2d 61 64 64 2d 66 69 6c 65 3d 20 7c 20 41 64 64 20 61 20 ...|.|.=gptel-add-file=.|.Add.a.
9340 66 69 6c 65 20 28 74 65 78 74 20 6f 72 20 73 75 70 70 6f 72 74 65 64 20 6d 65 64 69 61 20 74 79 file.(text.or.supported.media.ty
9360 70 65 29 20 74 6f 20 67 70 74 65 6c 27 73 20 63 6f 6e 74 65 78 74 2e 20 20 41 6c 73 6f 20 61 76 pe).to.gptel's.context...Also.av
9380 61 69 6c 61 62 6c 65 20 66 72 6f 6d 20 74 68 65 20 74 72 61 6e 73 69 65 6e 74 20 6d 65 6e 75 2e ailable.from.the.transient.menu.
93a0 20 7c 0a 7c 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d .|.|------------------+---------
93c0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
93e0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
9400 2d 2d 2d 2d 2d 2d 2d 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 -------------------------------|
9420 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 2b ..|----------------------------+
9440 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
9460 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
9480 2d 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 4f 72 -------------------------|.|.*Or
94a0 67 20 6d 6f 64 65 20 62 6f 6e 75 73 65 73 2a 20 20 20 20 20 20 20 20 20 7c 20 20 20 20 20 20 20 g.mode.bonuses*.........|.......
94c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
94e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
9500 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 2d 2d ..................|.|-----------
9520 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d -----------------+--------------
9540 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
9560 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
9580 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 7c 0a 7c 20 3d 67 70 74 65 6c 2d 6f 72 67 2d 73 65 74 2d 74 6f -----------|.|.=gptel-org-set-to
95a0 70 69 63 3d 20 20 20 20 20 20 7c 20 4c 69 6d 69 74 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 20 63 pic=......|.Limit.conversation.c
95c0 6f 6e 74 65 78 74 20 74 6f 20 61 6e 20 4f 72 67 20 68 65 61 64 69 6e 67 2e 20 20 28 46 6f 72 20 ontext.to.an.Org.heading...(For.
95e0 62 72 61 6e 63 68 69 6e 67 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 73 20 73 65 65 20 62 65 6c 6f branching.conversations.see.belo
9600 77 2e 29 20 7c 0a 7c 20 3d 67 70 74 65 6c 2d 6f 72 67 2d 73 65 74 2d 70 72 6f 70 65 72 74 69 65 w.).|.|.=gptel-org-set-propertie
9620 73 3d 20 7c 20 57 72 69 74 65 20 67 70 74 65 6c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 61 s=.|.Write.gptel.configuration.a
9640 73 20 4f 72 67 20 70 72 6f 70 65 72 74 69 65 73 2c 20 66 6f 72 20 70 65 72 2d 68 65 61 64 69 6e s.Org.properties,.for.per-headin
9660 67 20 63 68 61 74 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 20 20 20 20 20 20 20 20 7c 0a 7c g.chat.configuration.........|.|
9680 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 2d 2d 2d ----------------------------+---
96a0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
96c0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
96e0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 7c 0a 0a 2a 2a 2a 20 49 6e 20 ----------------------|..***.In.
9700 61 6e 79 20 62 75 66 66 65 72 3a 0a 0a 31 2e 20 43 61 6c 6c 20 3d 4d 2d 78 20 67 70 74 65 6c 2d any.buffer:..1..Call.=M-x.gptel-
9720 73 65 6e 64 3d 20 74 6f 20 73 65 6e 64 20 74 68 65 20 74 65 78 74 20 75 70 20 74 6f 20 74 68 65 send=.to.send.the.text.up.to.the
9740 20 63 75 72 73 6f 72 2e 20 54 68 65 20 72 65 73 70 6f 6e 73 65 20 77 69 6c 6c 20 62 65 20 69 6e .cursor..The.response.will.be.in
9760 73 65 72 74 65 64 20 62 65 6c 6f 77 2e 20 20 43 6f 6e 74 69 6e 75 65 20 74 68 65 20 63 6f 6e 76 serted.below...Continue.the.conv
9780 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 20 72 65 73 ersation.by.typing.below.the.res
97a0 70 6f 6e 73 65 2e 0a 0a 32 2e 20 49 66 20 61 20 72 65 67 69 6f 6e 20 69 73 20 73 65 6c 65 63 74 ponse...2..If.a.region.is.select
97c0 65 64 2c 20 74 68 65 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 6c 69 6d ed,.the.conversation.will.be.lim
97e0 69 74 65 64 20 74 6f 20 69 74 73 20 63 6f 6e 74 65 6e 74 73 2e 0a 0a 33 2e 20 43 61 6c 6c 20 3d ited.to.its.contents...3..Call.=
9800 4d 2d 78 20 67 70 74 65 6c 2d 73 65 6e 64 3d 20 77 69 74 68 20 61 20 70 72 65 66 69 78 20 61 72 M-x.gptel-send=.with.a.prefix.ar
9820 67 75 6d 65 6e 74 20 28 7e 43 2d 75 7e 29 0a 20 20 20 2d 20 74 6f 20 73 65 74 20 63 68 61 74 20 gument.(~C-u~)....-.to.set.chat.
9840 70 61 72 61 6d 65 74 65 72 73 20 28 6d 6f 64 65 6c 2c 20 62 61 63 6b 65 6e 64 2c 20 73 79 73 74 parameters.(model,.backend,.syst
9860 65 6d 20 6d 65 73 73 61 67 65 20 65 74 63 29 20 66 6f 72 20 74 68 69 73 20 62 75 66 66 65 72 2c em.message.etc).for.this.buffer,
9880 0a 20 20 20 2d 20 69 6e 63 6c 75 64 65 20 71 75 69 63 6b 20 69 6e 73 74 72 75 63 74 69 6f 6e 73 ....-.include.quick.instructions
98a0 20 66 6f 72 20 74 68 65 20 6e 65 78 74 20 72 65 71 75 65 73 74 20 6f 6e 6c 79 2c 0a 20 20 20 2d .for.the.next.request.only,....-
98c0 20 74 6f 20 61 64 64 20 61 64 64 69 74 69 6f 6e 61 6c 20 63 6f 6e 74 65 78 74 20 2d 2d 20 72 65 .to.add.additional.context.--.re
98e0 67 69 6f 6e 73 2c 20 62 75 66 66 65 72 73 20 6f 72 20 66 69 6c 65 73 20 2d 2d 20 74 6f 20 67 70 gions,.buffers.or.files.--.to.gp
9900 74 65 6c 2c 0a 20 20 20 2d 20 74 6f 20 72 65 61 64 20 74 68 65 20 70 72 6f 6d 70 74 20 66 72 6f tel,....-.to.read.the.prompt.fro
9920 6d 20 6f 72 20 72 65 64 69 72 65 63 74 20 74 68 65 20 72 65 73 70 6f 6e 73 65 20 65 6c 73 65 77 m.or.redirect.the.response.elsew
9940 68 65 72 65 2c 0a 20 20 20 2d 20 6f 72 20 74 6f 20 72 65 70 6c 61 63 65 20 74 68 65 20 70 72 6f here,....-.or.to.replace.the.pro
9960 6d 70 74 20 77 69 74 68 20 74 68 65 20 72 65 73 70 6f 6e 73 65 2e 0a 0a 23 2b 68 74 6d 6c 3a 20 mpt.with.the.response...#+html:.
9980 3c 69 6d 67 20 73 72 63 3d 22 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6b 61 72 <img.src="https://github.com/kar
99a0 74 68 69 6e 6b 2f 67 70 74 65 6c 2f 61 73 73 65 74 73 2f 38 36 30 37 35 33 32 2f 33 35 36 32 61 think/gptel/assets/8607532/3562a
99c0 36 65 32 2d 37 61 35 63 2d 34 66 37 65 2d 38 65 35 37 2d 62 66 33 63 31 31 35 38 39 63 37 33 22 6e2-7a5c-4f7e-8e57-bf3c11589c73"
99e0 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 20 61 6c 74 3d 22 49 6d 61 67 65 20 73 68 6f 77 69 .align="center".alt="Image.showi
9a00 6e 67 20 67 70 74 65 6c 27 73 20 6d 65 6e 75 20 77 69 74 68 20 73 6f 6d 65 20 6f 66 20 74 68 65 ng.gptel's.menu.with.some.of.the
9a20 20 61 76 61 69 6c 61 62 6c 65 20 71 75 65 72 79 20 6f 70 74 69 6f 6e 73 2e 22 3e 0a 0a 2a 2a 2a .available.query.options.">..***
9a40 20 49 6e 20 61 20 64 65 64 69 63 61 74 65 64 20 63 68 61 74 20 62 75 66 66 65 72 3a 0a 0a 2a 4e .In.a.dedicated.chat.buffer:..*N
9a60 6f 74 65 2a 3a 20 67 70 74 65 6c 20 77 6f 72 6b 73 20 61 6e 79 77 68 65 72 65 20 69 6e 20 45 6d ote*:.gptel.works.anywhere.in.Em
9a80 61 63 73 2e 20 20 54 68 65 20 64 65 64 69 63 61 74 65 64 20 63 68 61 74 20 62 75 66 66 65 72 20 acs...The.dedicated.chat.buffer.
9aa0 6f 6e 6c 79 20 61 64 64 73 20 73 6f 6d 65 20 63 6f 6e 76 65 6e 69 65 6e 63 65 73 2e 0a 0a 31 2e only.adds.some.conveniences...1.
9ac0 20 52 75 6e 20 3d 4d 2d 78 20 67 70 74 65 6c 3d 20 74 6f 20 73 74 61 72 74 20 6f 72 20 73 77 69 .Run.=M-x.gptel=.to.start.or.swi
9ae0 74 63 68 20 74 6f 20 74 68 65 20 63 68 61 74 20 62 75 66 66 65 72 2e 20 49 74 20 77 69 6c 6c 20 tch.to.the.chat.buffer..It.will.
9b00 61 73 6b 20 79 6f 75 20 66 6f 72 20 74 68 65 20 6b 65 79 20 69 66 20 79 6f 75 20 73 6b 69 70 70 ask.you.for.the.key.if.you.skipp
9b20 65 64 20 74 68 65 20 70 72 65 76 69 6f 75 73 20 73 74 65 70 2e 20 52 75 6e 20 69 74 20 77 69 74 ed.the.previous.step..Run.it.wit
9b40 68 20 61 20 70 72 65 66 69 78 2d 61 72 67 20 28 3d 43 2d 75 20 4d 2d 78 20 67 70 74 65 6c 3d 29 h.a.prefix-arg.(=C-u.M-x.gptel=)
9b60 20 74 6f 20 73 74 61 72 74 20 61 20 6e 65 77 20 73 65 73 73 69 6f 6e 2e 0a 0a 32 2e 20 49 6e 20 .to.start.a.new.session...2..In.
9b80 74 68 65 20 67 70 74 65 6c 20 62 75 66 66 65 72 2c 20 73 65 6e 64 20 79 6f 75 72 20 70 72 6f 6d the.gptel.buffer,.send.your.prom
9ba0 70 74 20 77 69 74 68 20 3d 4d 2d 78 20 67 70 74 65 6c 2d 73 65 6e 64 3d 2c 20 62 6f 75 6e 64 20 pt.with.=M-x.gptel-send=,.bound.
9bc0 74 6f 20 3d 43 2d 63 20 52 45 54 3d 2e 0a 0a 33 2e 20 53 65 74 20 63 68 61 74 20 70 61 72 61 6d to.=C-c.RET=...3..Set.chat.param
9be0 65 74 65 72 73 20 28 4c 4c 4d 20 70 72 6f 76 69 64 65 72 2c 20 6d 6f 64 65 6c 2c 20 64 69 72 65 eters.(LLM.provider,.model,.dire
9c00 63 74 69 76 65 73 20 65 74 63 29 20 66 6f 72 20 74 68 65 20 73 65 73 73 69 6f 6e 20 62 79 20 63 ctives.etc).for.the.session.by.c
9c20 61 6c 6c 69 6e 67 20 3d 67 70 74 65 6c 2d 73 65 6e 64 3d 20 77 69 74 68 20 61 20 70 72 65 66 69 alling.=gptel-send=.with.a.prefi
9c40 78 20 61 72 67 75 6d 65 6e 74 20 28 3d 43 2d 75 20 43 2d 63 20 52 45 54 3d 29 3a 0a 20 20 20 0a x.argument.(=C-u.C-c.RET=):.....
9c60 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 62 #+html:.<img.src="https://github
9c80 2e 63 6f 6d 2f 6b 61 72 74 68 69 6e 6b 2f 67 70 74 65 6c 2f 61 73 73 65 74 73 2f 38 36 30 37 35 .com/karthink/gptel/assets/86075
9ca0 33 32 2f 65 62 34 38 36 37 65 35 2d 33 30 61 63 2d 34 35 35 66 2d 39 39 39 66 2d 65 31 37 31 32 32/eb4867e5-30ac-455f-999f-e1712
9cc0 33 61 66 62 38 31 30 22 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 20 61 6c 74 3d 22 49 6d 61 3afb810".align="center".alt="Ima
9ce0 67 65 20 73 68 6f 77 69 6e 67 20 67 70 74 65 6c 27 73 20 6d 65 6e 75 20 77 69 74 68 20 73 6f 6d ge.showing.gptel's.menu.with.som
9d00 65 20 6f 66 20 74 68 65 20 61 76 61 69 6c 61 62 6c 65 20 71 75 65 72 79 20 6f 70 74 69 6f 6e 73 e.of.the.available.query.options
9d20 2e 22 3e 0a 0a 54 68 61 74 27 73 20 69 74 2e 20 59 6f 75 20 63 61 6e 20 67 6f 20 62 61 63 6b 20 .">..That's.it..You.can.go.back.
9d40 61 6e 64 20 65 64 69 74 20 70 72 65 76 69 6f 75 73 20 70 72 6f 6d 70 74 73 20 61 6e 64 20 72 65 and.edit.previous.prompts.and.re
9d60 73 70 6f 6e 73 65 73 20 69 66 20 79 6f 75 20 77 61 6e 74 2e 0a 0a 54 68 65 20 64 65 66 61 75 6c sponses.if.you.want...The.defaul
9d80 74 20 6d 6f 64 65 20 69 73 20 3d 6d 61 72 6b 64 6f 77 6e 2d 6d 6f 64 65 3d 20 69 66 20 61 76 61 t.mode.is.=markdown-mode=.if.ava
9da0 69 6c 61 62 6c 65 2c 20 65 6c 73 65 20 3d 74 65 78 74 2d 6d 6f 64 65 3d 2e 20 20 59 6f 75 20 63 ilable,.else.=text-mode=...You.c
9dc0 61 6e 20 73 65 74 20 3d 67 70 74 65 6c 2d 64 65 66 61 75 6c 74 2d 6d 6f 64 65 3d 20 74 6f 20 3d an.set.=gptel-default-mode=.to.=
9de0 6f 72 67 2d 6d 6f 64 65 3d 20 69 66 20 64 65 73 69 72 65 64 2e 0a 0a 23 2b 68 74 6d 6c 3a 20 3c org-mode=.if.desired...#+html:.<
9e00 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 75 64 69 6e 67 details><summary>.****.Including
9e20 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 29 20 77 69 74 68 20 .media.(images,.documents).with.
9e40 72 65 71 75 65 73 74 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 requests.#+html:.</summary>..gpt
9e60 65 6c 20 73 75 70 70 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 el.supports.sending.media.in.Mar
9e80 6b 64 6f 77 6e 20 61 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 kdown.and.Org.chat.buffers,.but.
9ea0 74 68 69 73 20 66 65 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 this.feature.is.disabled.by.defa
9ec0 75 6c 74 2e 0a 0a 2d 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 ult...-.You.can.enable.it.global
9ee0 6c 79 2c 20 66 6f 72 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 ly,.for.all.models.that.support.
9f00 69 74 2c 20 62 79 20 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 it,.by.setting.=gptel-track-medi
9f20 61 3d 2e 20 20 0a 2d 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 a=....-.Or.you.can.set.it.locall
9f40 79 2c 20 6a 75 73 74 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 y,.just.for.the.chat.buffer,.via
9f60 20 74 68 65 20 68 65 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 .the.header.line:..#+html:.<img.
9f80 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 74 74 src="https://github.com/user-att
9fa0 61 63 68 6d 65 6e 74 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 achments/assets/91f6aaab-2ea4-48
9fc0 30 36 2d 39 63 63 39 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 06-9cc9-39b4b46a8e6c".align="cen
9fe0 74 65 72 22 20 61 6c 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 ter".alt="Image.showing.a.gptel.
a000 63 68 61 74 20 62 75 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 chat.buffer's.header.line.with.t
a020 68 65 20 62 75 74 74 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 he.button.to.toggle.media.suppor
a040 74 22 3e 0a 0a 2d 2d 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 t">..-----..There.are.two.ways.t
a060 6f 20 69 6e 63 6c 75 64 65 20 6d 65 64 69 61 20 77 69 74 68 20 72 65 71 75 65 73 74 73 3a 0a 0a o.include.media.with.requests:..
a080 31 2e 20 41 64 64 69 6e 67 20 6d 65 64 69 61 20 66 69 6c 65 73 20 74 6f 20 74 68 65 20 63 6f 6e 1..Adding.media.files.to.the.con
a0a0 74 65 78 74 20 77 69 74 68 20 3d 67 70 74 65 6c 2d 61 64 64 2d 66 69 6c 65 3d 2c 20 64 65 73 63 text.with.=gptel-add-file=,.desc
a0c0 72 69 62 65 64 20 66 75 72 74 68 65 72 20 62 65 6c 6f 77 2e 0a 32 2e 20 49 6e 63 6c 75 64 69 6e ribed.further.below..2..Includin
a0e0 67 20 6c 69 6e 6b 73 20 74 6f 20 6d 65 64 69 61 20 69 6e 20 63 68 61 74 20 62 75 66 66 65 72 73 g.links.to.media.in.chat.buffers
a100 2c 20 64 65 73 63 72 69 62 65 64 20 68 65 72 65 3a 0a 0a 54 6f 20 73 65 6e 64 20 6d 65 64 69 61 ,.described.here:..To.send.media
a120 20 2d 2d 20 69 6d 61 67 65 73 20 6f 72 20 6f 74 68 65 72 20 73 75 70 70 6f 72 74 65 64 20 66 69 .--.images.or.other.supported.fi
a140 6c 65 20 74 79 70 65 73 20 2d 2d 20 77 69 74 68 20 72 65 71 75 65 73 74 73 20 69 6e 20 63 68 61 le.types.--.with.requests.in.cha
a160 74 20 62 75 66 66 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 t.buffers,.you.can.include.links
a180 20 74 6f 20 74 68 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 .to.them.in.the.chat.buffer...Su
a1a0 63 68 20 61 20 6c 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 ch.a.link.must.be."standalone",.
a1c0 69 2e 65 2e 20 6f 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 i.e..on.a.line.by.itself.surroun
a1e0 64 65 64 20 62 79 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 ded.by.whitespace...In.Org.mode,
a200 20 66 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 61 72 65 20 .for.example,.the.following.are.
a220 61 6c 6c 20 2a 76 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 all.*valid*.ways.of.including.an
a240 20 69 6d 61 67 65 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 .image.with.the.request:..-."Sta
a260 6e 64 61 6c 6f 6e 65 22 20 66 69 6c 65 20 6c 69 6e 6b 3a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 0a ndalone".file.link:.#+begin_src.
a280 44 65 73 63 72 69 62 65 20 74 68 69 73 20 70 69 63 74 75 72 65 0a 0a 5b 5b 66 69 6c 65 3a 2f 70 Describe.this.picture..[[file:/p
a2a0 61 74 68 2f 74 6f 2f 73 63 72 65 65 6e 73 68 6f 74 2e 70 6e 67 5d 5d 0a 0a 46 6f 63 75 73 20 73 ath/to/screenshot.png]]..Focus.s
a2c0 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 2e pecifically.on.the.text.content.
a2e0 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 20 66 69 6c 65 20 .#+end_src..-."Standalone".file.
a300 6c 69 6e 6b 20 77 69 74 68 20 64 65 73 63 72 69 70 74 69 6f 6e 3a 0a 23 2b 62 65 67 69 6e 5f 73 link.with.description:.#+begin_s
a320 72 63 20 0a 44 65 73 63 72 69 62 65 20 74 68 69 73 20 70 69 63 74 75 72 65 0a 0a 5b 5b 66 69 6c rc..Describe.this.picture..[[fil
a340 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 73 6f 6d 65 20 e:/path/to/screenshot.png][some.
a360 70 69 63 74 75 72 65 5d 5d 0a 0a 46 6f 63 75 73 20 73 70 65 63 69 66 69 63 61 6c 6c 79 20 6f 6e picture]]..Focus.specifically.on
a380 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 20 .the.text.content..#+end_src..-.
a3a0 22 53 74 61 6e 64 61 6c 6f 6e 65 22 2c 20 61 6e 67 6c 65 20 66 69 6c 65 20 6c 69 6e 6b 3a 0a 23 "Standalone",.angle.file.link:.#
a3c0 2b 62 65 67 69 6e 5f 73 72 63 20 0a 44 65 73 63 72 69 62 65 20 74 68 69 73 20 70 69 63 74 75 72 +begin_src..Describe.this.pictur
a3e0 65 0a 0a 3c 66 69 6c 65 3a 2f 70 61 74 68 2f 74 6f 2f 73 63 72 65 65 6e 73 68 6f 74 2e 70 6e 67 e..<file:/path/to/screenshot.png
a400 3e 0a 0a 46 6f 63 75 73 20 73 70 65 63 69 66 69 63 61 6c 6c 79 20 6f 6e 20 74 68 65 20 74 65 78 >..Focus.specifically.on.the.tex
a420 74 20 63 6f 6e 74 65 6e 74 2e 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 54 68 65 20 66 6f 6c 6c 6f 77 t.content..#+end_src..The.follow
a440 69 6e 67 20 6c 69 6e 6b 73 20 61 72 65 20 2a 6e 6f 74 20 76 61 6c 69 64 2a 2c 20 61 6e 64 20 74 ing.links.are.*not.valid*,.and.t
a460 68 65 20 74 65 78 74 20 6f 66 20 74 68 65 20 6c 69 6e 6b 20 77 69 6c 6c 20 62 65 20 73 65 6e 74 he.text.of.the.link.will.be.sent
a480 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20 66 69 6c 65 20 63 6f 6e 74 65 6e 74 73 3a 0a 0a .instead.of.the.file.contents:..
a4a0 2d 20 49 6e 6c 69 6e 65 20 6c 69 6e 6b 3a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 0a 44 65 73 63 -.Inline.link:.#+begin_src..Desc
a4c0 72 69 62 65 20 74 68 69 73 20 5b 5b 66 69 6c 65 3a 2f 70 61 74 68 2f 74 6f 2f 73 63 72 65 65 6e ribe.this.[[file:/path/to/screen
a4e0 73 68 6f 74 2e 70 6e 67 5d 5b 70 69 63 74 75 72 65 5d 5d 2e 0a 0a 46 6f 63 75 73 20 73 70 65 63 shot.png][picture]]...Focus.spec
a500 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..#+
a520 65 6e 64 5f 73 72 63 0a 0a 2d 20 4c 69 6e 6b 20 6e 6f 74 20 22 73 74 61 6e 64 61 6c 6f 6e 65 22 end_src..-.Link.not."standalone"
a540 3a 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 20 70 69 63 74 :.#+begin_src.Describe.this.pict
a560 75 72 65 3a 20 0a 5b 5b 66 69 6c 65 3a 2f 70 61 74 68 2f 74 6f 2f 73 63 72 65 65 6e 73 68 6f 74 ure:..[[file:/path/to/screenshot
a580 2e 70 6e 67 5d 5d 0a 46 6f 63 75 73 20 73 70 65 63 69 66 69 63 61 6c 6c 79 20 6f 6e 20 74 68 65 .png]].Focus.specifically.on.the
a5a0 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 4e 6f 74 20 .text.content..#+end_src..-.Not.
a5c0 61 20 76 61 6c 69 64 20 4f 72 67 20 6c 69 6e 6b 3a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 0a 44 a.valid.Org.link:.#+begin_src..D
a5e0 65 73 63 72 69 62 65 20 74 68 65 20 70 69 63 74 75 72 65 0a 0a 66 69 6c 65 3a 2f 70 61 74 68 2f escribe.the.picture..file:/path/
a600 74 6f 2f 73 63 72 65 65 6e 73 68 6f 74 2e 70 6e 67 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 53 69 6d to/screenshot.png.#+end_src..Sim
a620 69 6c 61 72 20 63 72 69 74 65 72 69 61 20 61 70 70 6c 79 20 74 6f 20 4d 61 72 6b 64 6f 77 6e 20 ilar.criteria.apply.to.Markdown.
a640 63 68 61 74 20 62 75 66 66 65 72 73 2e 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 chat.buffers...#+html:.</details
a660 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>.***
a680 2a 20 53 61 76 65 20 61 6e 64 20 72 65 73 74 6f 72 65 20 79 6f 75 72 20 63 68 61 74 20 73 65 73 *.Save.and.restore.your.chat.ses
a6a0 73 69 6f 6e 73 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a 53 61 76 69 6e 67 sions.#+html:.</summary>..Saving
a6c0 20 74 68 65 20 66 69 6c 65 20 77 69 6c 6c 20 73 61 76 65 20 74 68 65 20 73 74 61 74 65 20 6f 66 .the.file.will.save.the.state.of
a6e0 20 74 68 65 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 20 61 73 20 77 65 6c 6c 2e 20 20 54 6f 20 72 .the.conversation.as.well...To.r
a700 65 73 75 6d 65 20 74 68 65 20 63 68 61 74 2c 20 6f 70 65 6e 20 74 68 65 20 66 69 6c 65 20 61 6e esume.the.chat,.open.the.file.an
a720 64 20 74 75 72 6e 20 6f 6e 20 3d 67 70 74 65 6c 2d 6d 6f 64 65 3d 20 62 65 66 6f 72 65 20 65 64 d.turn.on.=gptel-mode=.before.ed
a740 69 74 69 6e 67 20 74 68 65 20 62 75 66 66 65 72 2e 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 iting.the.buffer...#+html:.</det
a760 61 69 6c 73 3e 0a 2a 2a 2a 20 53 65 74 74 69 6e 67 20 6f 70 74 69 6f 6e 73 20 28 62 61 63 6b 65 ails>.***.Setting.options.(backe
a780 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 72 73 2c 20 73 nd,.model,.request.parameters,.s
a7a0 79 73 74 65 6d 20 70 72 6f 6d 70 74 73 20 61 6e 64 20 6d 6f 72 65 29 0a 0a 4d 6f 73 74 20 67 70 ystem.prompts.and.more)..Most.gp
a7c0 74 65 6c 20 6f 70 74 69 6f 6e 73 20 63 61 6e 20 62 65 20 73 65 74 20 66 72 6f 6d 20 67 70 74 65 tel.options.can.be.set.from.gpte
a7e0 6c 27 73 20 74 72 61 6e 73 69 65 6e 74 20 6d 65 6e 75 2c 20 61 76 61 69 6c 61 62 6c 65 20 62 79 l's.transient.menu,.available.by
a800 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 68 20 61 20 70 72 65 .calling.=gptel-send=.with.a.pre
a820 66 69 78 2d 61 72 67 75 6d 65 6e 74 2c 20 6f 72 20 76 69 61 20 3d 67 70 74 65 6c 2d 6d 65 6e 75 fix-argument,.or.via.=gptel-menu
a840 3d 2e 20 20 54 6f 20 63 68 61 6e 67 65 20 74 68 65 69 72 20 64 65 66 61 75 6c 74 20 76 61 6c 75 =...To.change.their.default.valu
a860 65 73 20 69 6e 20 79 6f 75 72 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2c 20 73 65 65 20 5b 5b es.in.your.configuration,.see.[[
a880 23 61 64 64 69 74 69 6f 6e 61 6c 2d 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 5d 5b 41 64 64 69 74 #additional-configuration][Addit
a8a0 69 6f 6e 61 6c 20 43 6f 6e 66 69 67 75 72 61 74 69 6f 6e 5d 5d 2e 20 20 43 68 61 74 20 62 75 66 ional.Configuration]]...Chat.buf
a8c0 66 65 72 2d 73 70 65 63 69 66 69 63 20 6f 70 74 69 6f 6e 73 20 61 72 65 20 61 6c 73 6f 20 61 76 fer-specific.options.are.also.av
a8e0 61 69 6c 61 62 6c 65 20 76 69 61 20 74 68 65 20 68 65 61 64 65 72 2d 6c 69 6e 65 20 69 6e 20 63 ailable.via.the.header-line.in.c
a900 68 61 74 20 62 75 66 66 65 72 73 2e 0a 0a 23 20 54 4f 44 4f 20 52 65 6d 6f 76 65 20 74 68 69 73 hat.buffers...#.TODO.Remove.this
a920 20 77 68 65 6e 20 77 72 69 74 69 6e 67 20 74 68 65 20 6d 61 6e 75 61 6c 2e 0a 53 65 6c 65 63 74 .when.writing.the.manual..Select
a940 69 6e 67 20 61 20 6d 6f 64 65 6c 20 61 6e 64 20 62 61 63 6b 65 6e 64 20 63 61 6e 20 62 65 20 64 ing.a.model.and.backend.can.be.d
a960 6f 6e 65 20 69 6e 74 65 72 61 63 74 69 76 65 6c 79 20 76 69 61 20 74 68 65 20 3d 2d 6d 3d 20 63 one.interactively.via.the.=-m=.c
a980 6f 6d 6d 61 6e 64 20 6f 66 20 3d 67 70 74 65 6c 2d 6d 65 6e 75 3d 2e 20 20 41 76 61 69 6c 61 62 ommand.of.=gptel-menu=...Availab
a9a0 6c 65 20 72 65 67 69 73 74 65 72 65 64 20 6d 6f 64 65 6c 73 20 61 72 65 20 70 72 65 66 69 78 65 le.registered.models.are.prefixe
a9c0 64 20 62 79 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 69 72 20 62 61 63 6b 65 6e 64 20 77 d.by.the.name.of.their.backend.w
a9e0 69 74 68 20 61 20 73 74 72 69 6e 67 20 6c 69 6b 65 20 3d 43 68 61 74 47 50 54 3a 67 70 74 2d 34 ith.a.string.like.=ChatGPT:gpt-4
aa00 6f 2d 6d 69 6e 69 3d 2c 20 77 68 65 72 65 20 3d 43 68 61 74 47 50 54 3d 20 69 73 20 74 68 65 20 o-mini=,.where.=ChatGPT=.is.the.
aa20 62 61 63 6b 65 6e 64 20 6e 61 6d 65 20 79 6f 75 20 75 73 65 64 20 74 6f 20 72 65 67 69 73 74 65 backend.name.you.used.to.registe
aa40 72 20 69 74 20 61 6e 64 20 3d 67 70 74 2d 34 6f 2d 6d 69 6e 69 3d 20 69 73 20 74 68 65 20 6e 61 r.it.and.=gpt-4o-mini=.is.the.na
aa60 6d 65 20 6f 66 20 74 68 65 20 6d 6f 64 65 6c 2e 0a 0a 2a 2a 2a 20 49 6e 63 6c 75 64 65 20 6d 6f me.of.the.model...***.Include.mo
aa80 72 65 20 63 6f 6e 74 65 78 74 20 77 69 74 68 20 72 65 71 75 65 73 74 73 0a 0a 42 79 20 64 65 66 re.context.with.requests..By.def
aaa0 61 75 6c 74 2c 20 67 70 74 65 6c 20 77 69 6c 6c 20 71 75 65 72 79 20 74 68 65 20 4c 4c 4d 20 77 ault,.gptel.will.query.the.LLM.w
aac0 69 74 68 20 74 68 65 20 61 63 74 69 76 65 20 72 65 67 69 6f 6e 20 6f 72 20 74 68 65 20 62 75 66 ith.the.active.region.or.the.buf
aae0 66 65 72 20 63 6f 6e 74 65 6e 74 73 20 75 70 20 74 6f 20 74 68 65 20 63 75 72 73 6f 72 2e 20 20 fer.contents.up.to.the.cursor...
ab00 4f 66 74 65 6e 20 69 74 20 63 61 6e 20 62 65 20 68 65 6c 70 66 75 6c 20 74 6f 20 70 72 6f 76 69 Often.it.can.be.helpful.to.provi
ab20 64 65 20 74 68 65 20 4c 4c 4d 20 77 69 74 68 20 61 64 64 69 74 69 6f 6e 61 6c 20 63 6f 6e 74 65 de.the.LLM.with.additional.conte
ab40 78 74 20 66 72 6f 6d 20 6f 75 74 73 69 64 65 20 74 68 65 20 63 75 72 72 65 6e 74 20 62 75 66 66 xt.from.outside.the.current.buff
ab60 65 72 2e 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 77 68 65 6e 20 79 6f 75 27 72 65 20 69 6e 20 er..For.example,.when.you're.in.
ab80 61 20 63 68 61 74 20 62 75 66 66 65 72 20 62 75 74 20 77 61 6e 74 20 74 6f 20 61 73 6b 20 71 75 a.chat.buffer.but.want.to.ask.qu
aba0 65 73 74 69 6f 6e 73 20 61 62 6f 75 74 20 61 20 28 70 6f 73 73 69 62 6c 79 20 63 68 61 6e 67 69 estions.about.a.(possibly.changi
abc0 6e 67 29 20 63 6f 64 65 20 62 75 66 66 65 72 20 61 6e 64 20 61 75 78 69 6c 69 61 72 79 20 70 72 ng).code.buffer.and.auxiliary.pr
abe0 6f 6a 65 63 74 20 66 69 6c 65 73 2e 0a 0a 59 6f 75 20 63 61 6e 20 69 6e 63 6c 75 64 65 20 61 64 oject.files...You.can.include.ad
ac00 64 69 74 69 6f 6e 61 6c 20 74 65 78 74 20 72 65 67 69 6f 6e 73 2c 20 62 75 66 66 65 72 73 20 6f ditional.text.regions,.buffers.o
ac20 72 20 66 69 6c 65 73 20 77 69 74 68 20 67 70 74 65 6c 27 73 20 71 75 65 72 69 65 73 2e 20 20 54 r.files.with.gptel's.queries...T
ac40 68 69 73 20 61 64 64 69 74 69 6f 6e 61 6c 20 63 6f 6e 74 65 78 74 20 69 73 20 22 6c 69 76 65 22 his.additional.context.is."live"
ac60 20 61 6e 64 20 6e 6f 74 20 61 20 73 6e 61 70 73 68 6f 74 2e 20 20 4f 6e 63 65 20 61 64 64 65 64 .and.not.a.snapshot...Once.added
ac80 2c 20 74 68 65 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 ,.the.regions,.buffers.or.files.
aca0 61 72 65 20 73 63 61 6e 6e 65 64 20 61 6e 64 20 69 6e 63 6c 75 64 65 64 20 61 74 20 74 68 65 20 are.scanned.and.included.at.the.
acc0 74 69 6d 65 20 6f 66 20 65 61 63 68 20 71 75 65 72 79 2e 20 20 57 68 65 6e 20 75 73 69 6e 67 20 time.of.each.query...When.using.
ace0 6d 75 6c 74 69 2d 6d 6f 64 61 6c 20 6d 6f 64 65 6c 73 2c 20 61 64 64 65 64 20 66 69 6c 65 73 20 multi-modal.models,.added.files.
ad00 63 61 6e 20 62 65 20 6f 66 20 61 6e 79 20 73 75 70 70 6f 72 74 65 64 20 74 79 70 65 20 2d 2d 20 can.be.of.any.supported.type.--.
ad20 74 79 70 69 63 61 6c 6c 79 20 69 6d 61 67 65 73 2e 0a 0a 59 6f 75 20 63 61 6e 20 61 64 64 20 61 typically.images...You.can.add.a
ad40 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 20 66 69 6c 65 .selected.region,.buffer.or.file
ad60 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 65 20 6d 65 6e .to.gptel's.context.from.the.men
ad80 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 20 61 64 64 20 u,.or.call.=gptel-add=...To.add.
ada0 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 69 72 65 64 2c a.file.use.=gptel-add=.in.Dired,
adc0 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 6c 2d 61 64 64 .or.use.the.dedicated.=gptel-add
ade0 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 73 20 77 69 6c -file=.command...Directories.wil
ae00 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 63 75 72 73 69 l.have.their.files.added.recursi
ae20 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 6e 66 69 72 6d vely.after.prompting.for.confirm
ae40 61 74 69 6f 6e 2e 0a 0a 59 6f 75 20 63 61 6e 20 65 78 61 6d 69 6e 65 20 74 68 65 20 61 63 74 69 ation...You.can.examine.the.acti
ae60 76 65 20 63 6f 6e 74 65 78 74 20 66 72 6f 6d 20 74 68 65 20 6d 65 6e 75 3a 0a 23 2b 68 74 6d 6c ve.context.from.the.menu:.#+html
ae80 3a 20 3c 69 6d 67 20 73 72 63 3d 22 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6b :.<img.src="https://github.com/k
aea0 61 72 74 68 69 6e 6b 2f 67 70 74 65 6c 2f 61 73 73 65 74 73 2f 38 36 30 37 35 33 32 2f 36 33 63 arthink/gptel/assets/8607532/63c
aec0 64 37 66 63 38 2d 36 62 33 65 2d 34 32 61 65 2d 62 36 63 61 2d 30 36 66 66 39 33 35 62 61 65 39 d7fc8-6b3e-42ae-b6ca-06ff935bae9
aee0 63 22 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 20 61 6c 74 3d 22 49 6d 61 67 65 20 73 68 6f c".align="center".alt="Image.sho
af00 77 69 6e 67 20 67 70 74 65 6c 27 73 20 6d 65 6e 75 20 77 69 74 68 20 74 68 65 20 22 69 6e 73 70 wing.gptel's.menu.with.the."insp
af20 65 63 74 20 63 6f 6e 74 65 78 74 22 20 63 6f 6d 6d 61 6e 64 2e 22 3e 0a 0a 41 6e 64 20 74 68 65 ect.context".command.">..And.the
af40 6e 20 62 72 6f 77 73 65 20 74 68 72 6f 75 67 68 20 6f 72 20 72 65 6d 6f 76 65 20 63 6f 6e 74 65 n.browse.through.or.remove.conte
af60 78 74 20 66 72 6f 6d 20 74 68 65 20 63 6f 6e 74 65 78 74 20 62 75 66 66 65 72 3a 0a 23 2b 68 74 xt.from.the.context.buffer:.#+ht
af80 6d 6c 3a 20 3c 69 6d 67 20 73 72 63 3d 22 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d ml:.<img.src="https://github.com
afa0 2f 6b 61 72 74 68 69 6e 6b 2f 67 70 74 65 6c 2f 61 73 73 65 74 73 2f 38 36 30 37 35 33 32 2f 37 /karthink/gptel/assets/8607532/7
afc0 39 61 35 66 66 65 38 2d 33 64 36 33 2d 34 62 66 37 2d 39 62 66 36 2d 30 34 35 37 61 62 36 31 62 9a5ffe8-3d63-4bf7-9bf6-0457ab61b
afe0 66 32 61 22 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 20 61 6c 74 3d 22 49 6d 61 67 65 20 73 f2a".align="center".alt="Image.s
b000 68 6f 77 69 6e 67 20 67 70 74 65 6c 27 73 20 63 6f 6e 74 65 78 74 20 62 75 66 66 65 72 2e 22 3e howing.gptel's.context.buffer.">
b020 0a 0a 2a 2a 2a 20 48 61 6e 64 6c 65 20 22 72 65 61 73 6f 6e 69 6e 67 22 20 63 6f 6e 74 65 6e 74 ..***.Handle."reasoning".content
b040 0a 0a 53 6f 6d 65 20 4c 4c 4d 73 20 69 6e 63 6c 75 64 65 20 69 6e 20 74 68 65 69 72 20 72 65 73 ..Some.LLMs.include.in.their.res
b060 70 6f 6e 73 65 20 61 20 22 74 68 69 6e 6b 69 6e 67 22 20 6f 72 20 22 72 65 61 73 6f 6e 69 6e 67 ponse.a."thinking".or."reasoning
b080 22 20 62 6c 6f 63 6b 2e 20 20 54 68 69 73 20 74 65 78 74 20 69 6d 70 72 6f 76 65 73 20 74 68 65 ".block...This.text.improves.the
b0a0 20 71 75 61 6c 69 74 79 20 6f 66 20 74 68 65 20 4c 4c 4d e2 80 99 73 20 66 69 6e 61 6c 20 6f 75 .quality.of.the.LLM...s.final.ou
b0c0 74 70 75 74 2c 20 62 75 74 20 6d 61 79 20 6e 6f 74 20 62 65 20 69 6e 74 65 72 65 73 74 69 6e 67 tput,.but.may.not.be.interesting
b0e0 20 74 6f 20 79 6f 75 20 62 79 20 69 74 73 65 6c 66 2e 20 20 59 6f 75 20 63 61 6e 20 64 65 63 69 .to.you.by.itself...You.can.deci
b100 64 65 20 68 6f 77 20 79 6f 75 20 77 6f 75 6c 64 20 6c 69 6b 65 20 74 68 69 73 20 22 72 65 61 73 de.how.you.would.like.this."reas
b120 6f 6e 69 6e 67 22 20 63 6f 6e 74 65 6e 74 20 74 6f 20 62 65 20 68 61 6e 64 6c 65 64 20 62 79 20 oning".content.to.be.handled.by.
b140 67 70 74 65 6c 20 62 79 20 73 65 74 74 69 6e 67 20 74 68 65 20 75 73 65 72 20 6f 70 74 69 6f 6e gptel.by.setting.the.user.option
b160 20 3d 67 70 74 65 6c 2d 69 6e 63 6c 75 64 65 2d 72 65 61 73 6f 6e 69 6e 67 3d 2e 20 20 59 6f 75 .=gptel-include-reasoning=...You
b180 20 63 61 6e 20 69 6e 63 6c 75 64 65 20 69 74 20 69 6e 20 74 68 65 20 4c 4c 4d 20 72 65 73 70 6f .can.include.it.in.the.LLM.respo
b1a0 6e 73 65 20 28 74 68 65 20 64 65 66 61 75 6c 74 29 2c 20 6f 6d 69 74 20 69 74 20 65 6e 74 69 72 nse.(the.default),.omit.it.entir
b1c0 65 6c 79 2c 20 69 6e 63 6c 75 64 65 20 69 74 20 69 6e 20 74 68 65 20 62 75 66 66 65 72 20 62 75 ely,.include.it.in.the.buffer.bu
b1e0 74 20 69 67 6e 6f 72 65 20 69 74 20 6f 6e 20 73 75 62 73 65 71 75 65 6e 74 20 63 6f 6e 76 65 72 t.ignore.it.on.subsequent.conver
b200 73 61 74 69 6f 6e 20 74 75 72 6e 73 2c 20 6f 72 20 72 65 64 69 72 65 63 74 20 69 74 20 74 6f 20 sation.turns,.or.redirect.it.to.
b220 61 6e 6f 74 68 65 72 20 62 75 66 66 65 72 2e 20 20 41 73 20 77 69 74 68 20 6d 6f 73 74 20 6f 70 another.buffer...As.with.most.op
b240 74 69 6f 6e 73 2c 20 79 6f 75 20 63 61 6e 20 73 70 65 63 69 66 79 20 74 68 69 73 20 62 65 68 76 tions,.you.can.specify.this.behv
b260 61 69 6f 72 20 66 72 6f 6d 20 67 70 74 65 6c 27 73 20 74 72 61 6e 73 69 65 6e 74 20 6d 65 6e 75 aior.from.gptel's.transient.menu
b280 20 67 6c 6f 62 61 6c 6c 79 2c 20 62 75 66 66 65 72 2d 6c 6f 63 61 6c 6c 79 20 6f 72 20 66 6f 72 .globally,.buffer-locally.or.for
b2a0 20 74 68 65 20 6e 65 78 74 20 72 65 71 75 65 73 74 20 6f 6e 6c 79 2e 0a 0a 57 68 65 6e 20 69 6e .the.next.request.only...When.in
b2c0 63 6c 75 64 65 64 20 77 69 74 68 20 74 68 65 20 72 65 73 70 6f 6e 73 65 2c 20 72 65 61 73 6f 6e cluded.with.the.response,.reason
b2e0 69 6e 67 20 63 6f 6e 74 65 6e 74 20 77 69 6c 6c 20 62 65 20 64 65 6c 69 6d 69 74 65 64 20 62 79 ing.content.will.be.delimited.by
b300 20 4f 72 67 20 62 6c 6f 63 6b 73 20 6f 72 20 6d 61 72 6b 64 6f 77 6e 20 62 61 63 6b 74 69 63 6b .Org.blocks.or.markdown.backtick
b320 73 2e 0a 0a 2a 2a 2a 20 54 6f 6f 6c 20 75 73 65 20 28 65 78 70 65 72 69 6d 65 6e 74 61 6c 29 0a s...***.Tool.use.(experimental).
b340 0a 67 70 74 65 6c 20 63 61 6e 20 70 72 6f 76 69 64 65 20 74 68 65 20 4c 4c 4d 20 77 69 74 68 20 .gptel.can.provide.the.LLM.with.
b360 63 6c 69 65 6e 74 2d 73 69 64 65 20 65 6c 69 73 70 20 22 74 6f 6f 6c 73 22 2c 20 6f 72 20 66 75 client-side.elisp."tools",.or.fu
b380 6e 63 74 69 6f 6e 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e 73 2c 20 61 6c 6f 6e 67 20 77 69 74 nction.specifications,.along.wit
b3a0 68 20 74 68 65 20 72 65 71 75 65 73 74 2e 20 20 49 66 20 74 68 65 20 4c 4c 4d 20 64 65 63 69 64 h.the.request...If.the.LLM.decid
b3c0 65 73 20 74 6f 20 72 75 6e 20 74 68 65 20 74 6f 6f 6c 2c 20 69 74 20 73 75 70 70 6c 69 65 73 20 es.to.run.the.tool,.it.supplies.
b3e0 74 68 65 20 74 6f 6f 6c 20 63 61 6c 6c 20 61 72 67 75 6d 65 6e 74 73 2c 20 77 68 69 63 68 20 67 the.tool.call.arguments,.which.g
b400 70 74 65 6c 20 75 73 65 73 20 74 6f 20 72 75 6e 20 74 68 65 20 74 6f 6f 6c 20 69 6e 20 79 6f 75 ptel.uses.to.run.the.tool.in.you
b420 72 20 45 6d 61 63 73 20 73 65 73 73 69 6f 6e 2e 20 20 54 68 65 20 72 65 73 75 6c 74 20 69 73 20 r.Emacs.session...The.result.is.
b440 6f 70 74 69 6f 6e 61 6c 6c 79 20 72 65 74 75 72 6e 65 64 20 74 6f 20 74 68 65 20 4c 4c 4d 20 74 optionally.returned.to.the.LLM.t
b460 6f 20 63 6f 6d 70 6c 65 74 65 20 74 68 65 20 74 61 73 6b 2e 0a 0a 54 68 69 73 20 65 78 63 68 61 o.complete.the.task...This.excha
b480 6e 67 65 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 65 71 75 69 70 20 74 68 65 20 4c 4c 4d nge.can.be.used.to.equip.the.LLM
b4a0 20 77 69 74 68 20 63 61 70 61 62 69 6c 69 74 69 65 73 20 6f 72 20 6b 6e 6f 77 6c 65 64 67 65 20 .with.capabilities.or.knowledge.
b4c0 62 65 79 6f 6e 64 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 beyond.what.is.available.out.of.
b4e0 74 68 65 20 62 6f 78 20 2d 2d 20 66 6f 72 20 69 6e 73 74 61 6e 63 65 2c 20 79 6f 75 20 63 61 6e the.box.--.for.instance,.you.can
b500 20 67 65 74 20 74 68 65 20 4c 4c 4d 20 74 6f 20 63 6f 6e 74 72 6f 6c 20 79 6f 75 72 20 45 6d 61 .get.the.LLM.to.control.your.Ema
b520 63 73 20 66 72 61 6d 65 2c 20 63 72 65 61 74 65 20 6f 72 20 6d 6f 64 69 66 79 20 66 69 6c 65 73 cs.frame,.create.or.modify.files
b540 20 61 6e 64 20 64 69 72 65 63 74 6f 72 69 65 73 2c 20 6f 72 20 6c 6f 6f 6b 20 75 70 20 69 6e 66 .and.directories,.or.look.up.inf
b560 6f 72 6d 61 74 69 6f 6e 20 72 65 6c 65 76 61 6e 74 20 74 6f 20 79 6f 75 72 20 72 65 71 75 65 73 ormation.relevant.to.your.reques
b580 74 20 76 69 61 20 77 65 62 20 73 65 61 72 63 68 20 6f 72 20 69 6e 20 61 20 6c 6f 63 61 6c 20 64 t.via.web.search.or.in.a.local.d
b5a0 61 74 61 62 61 73 65 2e 20 20 48 65 72 65 20 69 73 20 61 20 76 65 72 79 20 73 69 6d 70 6c 65 20 atabase...Here.is.a.very.simple.
b5c0 65 78 61 6d 70 6c 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 example:..#+html:.<p.align="cent
b5e0 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
b600 61 63 68 6d 65 6e 74 73 2f 61 73 73 65 74 73 2f 64 31 66 38 65 32 61 63 2d 36 32 62 62 2d 34 39 achments/assets/d1f8e2ac-62bb-49
b620 62 63 2d 38 35 30 64 2d 30 61 36 37 61 61 30 63 64 34 63 33 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 70 bc-850d-0a67aa0cd4c3.#+html:.</p
b640 3e 0a 0a 54 68 69 73 20 66 65 61 74 75 72 65 20 69 73 20 63 75 72 72 65 6e 74 6c 79 20 65 78 70 >..This.feature.is.currently.exp
b660 65 72 69 6d 65 6e 74 61 6c 2e 0a 0a 54 6f 20 75 73 65 20 74 6f 6f 6c 73 20 69 6e 20 67 70 74 65 erimental...To.use.tools.in.gpte
b680 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 6f l,.you.need.-.a.model.that.suppo
b6a0 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 69 rts.this.usage...All.the.flagshi
b6c0 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 6f p.models.support.tool.use,.as.do
b6e0 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 73 .many.of.the.smaller.open.models
b700 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 74 ..-.Tool.specifications.that.gpt
b720 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 20 el.understands...gptel.does.not.
b740 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 20 currently.include.any.tools.out.
b760 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 73 of.the.box...#+html:.<details><s
b780 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 6c ummary>.****.Defining.gptel.tool
b7a0 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 61 s.#+html:.</summary>..Defining.a
b7c0 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 75 .gptel.tool.requires.an.elisp.fu
b7e0 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 20 nction.and.associated.metadata..
b800 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 69 .Here.are.two.simple.tool.defini
b820 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 66 tions:..*To.read.the.contents.of
b840 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 20 .an.Emacs.buffer*:..#+begin_src.
b860 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 61 emacs-lisp.(gptel-make-tool..:na
b880 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 20 me."read_buffer"................
b8a0 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 73 ....;.javascript-style.snake_cas
b8c0 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 65 e.name..:function.(lambda.(buffe
b8e0 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 69 r)..................;.the.functi
b900 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 75 on.that.will.run..............(u
b920 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 72 nless.(buffer-live-p.(get-buffer
b940 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 20 .buffer))................(error.
b960 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 20 "error:.buffer.%s.is.not.live.".
b980 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 72 buffer))..............(with-curr
b9a0 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 20 ent-buffer..buffer..............
b9c0 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 65 ..(buffer-substring-no-propertie
b9e0 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 64 s.(point-min).(point-max))))..:d
ba00 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 20 escription."return.the.contents.
ba20 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 74 of.an.emacs.buffer"..:args.(list
ba40 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 20 .'(:name."buffer"...............
ba60 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 65 .:type.string............;.:type
ba80 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 20 .value.must.be.a.symbol.........
baa0 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 66 .......:description."the.name.of
bac0 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 74 .the.buffer.whose.contents.are.t
bae0 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 6d o.be.retrieved"))..:category."em
bb00 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 61 acs").....................;.An.a
bb20 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 6e rbitrary.label.for.grouping.#+en
bb40 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 65 d_src..Besides.the.function.itse
bb60 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 6d lf,.which.can.be.named.or.anonym
bb80 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 69 ous.(as.above),.the.tool.specifi
bba0 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 73 cation.requires.a.=:name=,.=:des
bbc0 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 74 cription=.and.a.list.of.argument
bbe0 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 63 .specifications.in.=:args=...Eac
bc00 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 6c h.argument.specification.is.a.pl
bc20 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 65 ist.with.atleast.the.keys.=:name
bc40 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 0a =,.=:type=.and.=:description=...
bc60 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 69 *To.create.a.text.file*:..#+begi
bc80 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 6f n_src.emacs-lisp.(gptel-make-too
bca0 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 20 l..:name."create_file"..........
bcc0 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 6e ..........;.javascript-style..sn
bce0 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 61 ake_case.name..:function.(lambda
bd00 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 65 .(path.filename.content)...;.the
bd20 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 20 .function.that.runs.............
bd40 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 6e .(let.((full-path.(expand-file-n
bd60 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 20 ame.filename.path)))............
bd80 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 20 ....(with-temp-buffer...........
bda0 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 20 .......(insert.content).........
bdc0 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 29 .........(write-file.full-path))
bde0 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 64 ................(format."Created
be00 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 29 .file.%s.in.%s".filename.path)))
be20 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 6c ..:description."Create.a.new.fil
be40 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 3a e.with.the.specified.content"..:
be60 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 20 args.(list.'(:name."path".......
be80 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 69 ......;.a.list.of.argument.speci
bea0 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 09 fications.........:type.string..
bec0 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 6f .......:description."The.directo
bee0 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 20 ry.where.to.create.the.file")...
bf00 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 20 ...........'(:name."filename"...
bf20 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 63 ......:type.string.........:desc
bf40 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 6f ription."The.name.of.the.file.to
bf60 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 22 .create")..............'(:name."
bf80 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 20 content".........:type.string...
bfa0 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 20 ......:description."The.content.
bfc0 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 6f to.write.to.the.file"))..:catego
bfe0 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 20 ry."filesystem")................
c000 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 6e ;.An.arbitrary.label.for.groupin
c020 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 67 g.#+end_src..With.some.prompting
c040 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 68 ,.you.can.get.an.LLM.to.write.th
c060 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 6c ese.tools.for.you...Tools.can.al
c080 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 6c so.be.asynchronous,.use.optional
c0a0 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 6f .arguments.and.arguments.with.mo
c0c0 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 6a re.structure.(enums,.arrays,.obj
c0e0 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 6c ects.etc)...See.=gptel-make-tool
c100 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 6c =.for.details...#+html:.</detail
c120 73 3e 0a 2a 2a 2a 2a 20 53 65 6c 65 63 74 69 6e 67 20 74 6f 6f 6c 73 0a 0a 4f 6e 63 65 20 64 65 s>.****.Selecting.tools..Once.de
c140 66 69 6e 65 64 2c 20 74 6f 6f 6c 73 20 63 61 6e 20 62 65 20 73 65 6c 65 63 74 65 64 20 28 67 6c fined,.tools.can.be.selected.(gl
c160 6f 62 61 6c 6c 79 2c 20 62 75 66 66 65 72 2d 6c 6f 63 61 6c 6c 79 20 6f 72 20 66 6f 72 20 74 68 obally,.buffer-locally.or.for.th
c180 65 20 6e 65 78 74 20 72 65 71 75 65 73 74 20 6f 6e 6c 79 29 20 66 72 6f 6d 20 67 70 74 65 6c 27 e.next.request.only).from.gptel'
c1a0 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 3c 69 6d 67 20 s.transient.menu:..#+html:.<img.
c1c0 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 74 74 src="https://github.com/user-att
c1e0 61 63 68 6d 65 6e 74 73 2f 61 73 73 65 74 73 2f 66 64 38 37 38 35 39 36 2d 62 33 31 33 2d 34 33 achments/assets/fd878596-b313-43
c200 38 35 2d 62 36 37 35 2d 33 64 36 35 34 36 39 30 39 64 38 62 22 20 61 6c 69 67 6e 3d 22 63 65 6e 85-b675-3d6546909d8b".align="cen
c220 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 74 65 6c 27 73 20 ter".alt="Image.showing.gptel's.
c240 74 6f 6f 6c 20 73 65 6c 65 63 74 69 6f 6e 20 6d 65 6e 75 2e 22 3e 0a 0a 46 72 6f 6d 20 68 65 72 tool.selection.menu.">..From.her
c260 65 20 79 6f 75 20 63 61 6e 20 61 6c 73 6f 20 72 65 71 75 69 72 65 20 63 6f 6e 66 69 72 6d 61 74 e.you.can.also.require.confirmat
c280 69 6f 6e 20 66 6f 72 20 61 6c 6c 20 74 6f 6f 6c 20 63 61 6c 6c 73 2c 20 61 6e 64 20 64 65 63 69 ion.for.all.tool.calls,.and.deci
c2a0 64 65 20 69 66 20 74 6f 6f 6c 20 63 61 6c 6c 20 72 65 73 75 6c 74 73 20 73 68 6f 75 6c 64 20 62 de.if.tool.call.results.should.b
c2c0 65 20 69 6e 63 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 2e 20 e.included.in.the.LLM.response..
c2e0 20 53 65 65 20 5b 5b 23 61 64 64 69 74 69 6f 6e 61 6c 2d 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e .See.[[#additional-configuration
c300 5d 5b 41 64 64 69 74 69 6f 6e 61 6c 20 43 6f 6e 66 69 67 75 72 61 74 69 6f 6e 5d 5d 20 66 6f 72 ][Additional.Configuration]].for
c320 20 64 6f 69 6e 67 20 74 68 65 73 65 20 74 68 69 6e 67 73 20 76 69 61 20 65 6c 69 73 70 2e 0a 0a .doing.these.things.via.elisp...
c340 2a 2a 2a 20 52 65 77 72 69 74 65 2c 20 72 65 66 61 63 74 6f 72 20 6f 72 20 66 69 6c 6c 20 69 6e ***.Rewrite,.refactor.or.fill.in
c360 20 61 20 72 65 67 69 6f 6e 0a 0a 49 6e 20 61 6e 79 20 62 75 66 66 65 72 3a 20 77 69 74 68 20 61 .a.region..In.any.buffer:.with.a
c380 20 72 65 67 69 6f 6e 20 73 65 6c 65 63 74 65 64 2c 20 79 6f 75 20 63 61 6e 20 6d 6f 64 69 66 79 .region.selected,.you.can.modify
c3a0 20 74 65 78 74 2c 20 72 65 77 72 69 74 65 20 70 72 6f 73 65 20 6f 72 20 72 65 66 61 63 74 6f 72 .text,.rewrite.prose.or.refactor
c3c0 20 63 6f 64 65 20 77 69 74 68 20 3d 67 70 74 65 6c 2d 72 65 77 72 69 74 65 3d 2e 20 20 45 78 61 .code.with.=gptel-rewrite=...Exa
c3e0 6d 70 6c 65 20 77 69 74 68 20 70 72 6f 73 65 3a 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 70 20 61 6c 69 mple.with.prose:..#+html:.<p.ali
c400 67 6e 3d 22 63 65 6e 74 65 72 22 3e 0a 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f gn="center">.https://github.com/
c420 75 73 65 72 2d 61 74 74 61 63 68 6d 65 6e 74 73 2f 61 73 73 65 74 73 2f 65 33 62 34 33 36 62 33 user-attachments/assets/e3b436b3
c440 2d 39 62 64 65 2d 34 63 31 66 2d 62 32 63 65 2d 33 66 37 64 66 31 39 38 34 39 33 33 0a 23 2b 68 -9bde-4c1f-b2ce-3f7df1984933.#+h
c460 74 6d 6c 3a 20 3c 2f 70 3e 0a 0a 54 68 65 20 72 65 73 75 6c 74 20 69 73 20 70 72 65 76 69 65 77 tml:.</p>..The.result.is.preview
c480 65 64 20 6f 76 65 72 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 74 65 78 74 2e 20 20 42 79 20 64 ed.over.the.original.text...By.d
c4a0 65 66 61 75 6c 74 2c 20 74 68 65 20 62 75 66 66 65 72 20 69 73 20 6e 6f 74 20 6d 6f 64 69 66 69 efault,.the.buffer.is.not.modifi
c4c0 65 64 2e 0a 0a 50 72 65 73 73 69 6e 67 20 3d 52 45 54 3d 20 6f 72 20 63 6c 69 63 6b 69 6e 67 20 ed...Pressing.=RET=.or.clicking.
c4e0 69 6e 20 74 68 65 20 72 65 77 72 69 74 74 65 6e 20 72 65 67 69 6f 6e 20 73 68 6f 75 6c 64 20 67 in.the.rewritten.region.should.g
c500 69 76 65 20 79 6f 75 20 61 20 6c 69 73 74 20 6f 66 20 6f 70 74 69 6f 6e 73 3a 20 79 6f 75 20 63 ive.you.a.list.of.options:.you.c
c520 61 6e 20 2a 69 74 65 72 61 74 65 2a 20 6f 6e 2c 20 2a 64 69 66 66 2a 2c 20 2a 65 64 69 66 66 2a an.*iterate*.on,.*diff*,.*ediff*
c540 2c 20 2a 6d 65 72 67 65 2a 20 6f 72 20 2a 61 63 63 65 70 74 2a 20 74 68 65 20 72 65 70 6c 61 63 ,.*merge*.or.*accept*.the.replac
c560 65 6d 65 6e 74 2e 20 20 45 78 61 6d 70 6c 65 20 77 69 74 68 20 63 6f 64 65 3a 0a 0a 23 2b 68 74 ement...Example.with.code:..#+ht
c580 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 3a 2f 2f 67 ml:.<p.align="center">.https://g
c5a0 69 74 68 75 62 2e 63 6f 6d 2f 75 73 65 72 2d 61 74 74 61 63 68 6d 65 6e 74 73 2f 61 73 73 65 74 ithub.com/user-attachments/asset
c5c0 73 2f 34 30 36 37 66 64 62 38 2d 38 35 64 33 2d 34 32 36 34 2d 39 62 36 34 2d 64 37 32 37 33 35 s/4067fdb8-85d3-4264-9b64-d72735
c5e0 33 66 36 38 66 39 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 70 3e 0a 0a 2a 41 63 74 69 6e 67 20 6f 6e 20 3f68f9.#+html:.</p>..*Acting.on.
c600 74 68 65 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 2a 3a 0a 0a 49 66 20 79 6f 75 20 77 6f 75 6c 64 the.LLM.response*:..If.you.would
c620 20 6c 69 6b 65 20 6f 6e 65 20 6f 66 20 74 68 65 73 65 20 74 68 69 6e 67 73 20 74 6f 20 68 61 70 .like.one.of.these.things.to.hap
c640 70 65 6e 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2c 20 79 6f 75 20 63 61 6e 20 63 75 73 74 6f pen.automatically,.you.can.custo
c660 6d 69 7a 65 20 3d 67 70 74 65 6c 2d 72 65 77 72 69 74 65 2d 64 65 66 61 75 6c 74 2d 61 63 74 69 mize.=gptel-rewrite-default-acti
c680 6f 6e 3d 2e 0a 0a 54 68 65 73 65 20 6f 70 74 69 6f 6e 73 20 61 72 65 20 61 6c 73 6f 20 61 76 61 on=...These.options.are.also.ava
c6a0 69 6c 61 62 6c 65 20 66 72 6f 6d 20 3d 67 70 74 65 6c 2d 72 65 77 72 69 74 65 3d 3a 0a 0a 23 2b ilable.from.=gptel-rewrite=:..#+
c6c0 68 74 6d 6c 3a 20 3c 69 6d 67 20 73 72 63 3d 22 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 html:.<img.src="https://github.c
c6e0 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 35 38 39 37 38 om/user-attachments/assets/58978
c700 35 62 39 2d 61 61 33 66 2d 34 31 34 61 2d 39 38 64 64 2d 64 32 36 62 37 35 30 39 64 65 30 38 22 5b9-aa3f-414a-98dd-d26b7509de08"
c720 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 20 2f 3e 0a 0a 41 6e 64 20 79 6f 75 20 63 61 6e 20 .align="center"./>..And.you.can.
c740 63 61 6c 6c 20 74 68 65 6d 20 64 69 72 65 63 74 6c 79 20 77 68 65 6e 20 74 68 65 20 63 75 72 73 call.them.directly.when.the.curs
c760 6f 72 20 69 73 20 69 6e 20 74 68 65 20 72 65 77 72 69 74 74 65 6e 20 72 65 67 69 6f 6e 3a 0a 0a or.is.in.the.rewritten.region:..
c780 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 62 #+html:.<img.src="https://github
c7a0 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 35 62 .com/user-attachments/assets/f5b
c7c0 33 63 61 34 37 2d 65 31 34 36 2d 34 35 66 65 2d 38 35 38 34 2d 66 31 31 30 33 35 66 61 34 64 62 3ca47-e146-45fe-8584-f11035fa4db
c7e0 63 22 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 20 2f 3e 0a 0a 2a 2a 2a 20 45 78 74 72 61 20 c".align="center"./>..***.Extra.
c800 4f 72 67 20 6d 6f 64 65 20 63 6f 6e 76 65 6e 69 65 6e 63 65 73 0a 0a 67 70 74 65 6c 20 6f 66 66 Org.mode.conveniences..gptel.off
c820 65 72 73 20 61 20 66 65 77 20 65 78 74 72 61 20 63 6f 6e 76 65 6e 69 65 6e 63 65 73 20 69 6e 20 ers.a.few.extra.conveniences.in.
c840 4f 72 67 20 6d 6f 64 65 2e 0a 0a 2a 2a 2a 2a 2a 20 4c 69 6d 69 74 20 63 6f 6e 76 65 72 73 61 74 Org.mode...*****.Limit.conversat
c860 69 6f 6e 20 63 6f 6e 74 65 78 74 20 74 6f 20 61 6e 20 4f 72 67 20 68 65 61 64 69 6e 67 0a 0a 59 ion.context.to.an.Org.heading..Y
c880 6f 75 20 63 61 6e 20 6c 69 6d 69 74 20 74 68 65 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 20 63 6f ou.can.limit.the.conversation.co
c8a0 6e 74 65 78 74 20 74 6f 20 61 6e 20 4f 72 67 20 68 65 61 64 69 6e 67 20 77 69 74 68 20 74 68 65 ntext.to.an.Org.heading.with.the
c8c0 20 63 6f 6d 6d 61 6e 64 20 3d 67 70 74 65 6c 2d 6f 72 67 2d 73 65 74 2d 74 6f 70 69 63 3d 2e 0a .command.=gptel-org-set-topic=..
c8e0 0a 28 54 68 69 73 20 73 65 74 73 20 61 6e 20 4f 72 67 20 70 72 6f 70 65 72 74 79 20 28 3d 47 50 .(This.sets.an.Org.property.(=GP
c900 54 45 4c 5f 54 4f 50 49 43 3d 29 20 75 6e 64 65 72 20 74 68 65 20 68 65 61 64 69 6e 67 2e 20 20 TEL_TOPIC=).under.the.heading...
c920 59 6f 75 20 63 61 6e 20 61 6c 73 6f 20 61 64 64 20 74 68 69 73 20 70 72 6f 70 65 72 74 79 20 6d You.can.also.add.this.property.m
c940 61 6e 75 61 6c 6c 79 20 69 6e 73 74 65 61 64 2e 29 0a 20 20 0a 2a 2a 2a 2a 2a 20 55 73 65 20 62 anually.instead.)....*****.Use.b
c960 72 61 6e 63 68 69 6e 67 20 63 6f 6e 74 65 78 74 20 69 6e 20 4f 72 67 20 6d 6f 64 65 20 28 74 72 ranching.context.in.Org.mode.(tr
c980 65 65 20 6f 66 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 73 29 0a 0a 59 6f 75 20 63 61 6e 20 68 61 ee.of.conversations)..You.can.ha
c9a0 76 65 20 62 72 61 6e 63 68 69 6e 67 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 73 20 69 6e 20 4f 72 ve.branching.conversations.in.Or
c9c0 67 20 6d 6f 64 65 2c 20 77 68 65 72 65 20 65 61 63 68 20 68 69 65 72 61 72 63 68 69 63 61 6c 20 g.mode,.where.each.hierarchical.
c9e0 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 6e outline.path.through.the.documen
ca00 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 61 t.is.a.separate.conversation.bra
ca20 6e 63 68 2e 20 20 54 68 69 73 20 69 73 20 61 6c 73 6f 20 75 73 65 66 75 6c 20 66 6f 72 20 6c 69 nch...This.is.also.useful.for.li
ca40 6d 69 74 69 6e 67 20 74 68 65 20 63 6f 6e 74 65 78 74 20 73 69 7a 65 20 6f 66 20 65 61 63 68 20 miting.the.context.size.of.each.
ca60 71 75 65 72 79 2e 20 20 53 65 65 20 74 68 65 20 76 61 72 69 61 62 6c 65 20 3d 67 70 74 65 6c 2d query...See.the.variable.=gptel-
ca80 6f 72 67 2d 62 72 61 6e 63 68 69 6e 67 2d 63 6f 6e 74 65 78 74 3d 2e 0a 0a 49 66 20 74 68 69 73 org-branching-context=...If.this
caa0 20 76 61 72 69 61 62 6c 65 20 69 73 20 6e 6f 6e 2d 6e 69 6c 2c 20 79 6f 75 20 73 68 6f 75 6c 64 .variable.is.non-nil,.you.should
cac0 20 70 72 6f 62 61 62 6c 79 20 65 64 69 74 20 3d 67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 70 72 65 .probably.edit.=gptel-prompt-pre
cae0 66 69 78 2d 61 6c 69 73 74 3d 20 61 6e 64 20 3d 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 70 fix-alist=.and.=gptel-response-p
cb00 72 65 66 69 78 2d 61 6c 69 73 74 3d 20 73 6f 20 74 68 61 74 20 74 68 65 20 70 72 65 66 69 78 20 refix-alist=.so.that.the.prefix.
cb20 73 74 72 69 6e 67 73 20 66 6f 72 20 6f 72 67 2d 6d 6f 64 65 20 61 72 65 20 6e 6f 74 20 4f 72 67 strings.for.org-mode.are.not.Org
cb40 20 68 65 61 64 69 6e 67 73 2c 20 65 2e 67 2e 0a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 .headings,.e.g...#+begin_src.ema
cb60 63 73 2d 6c 69 73 70 0a 20 20 28 73 65 74 66 20 28 61 6c 69 73 74 2d 67 65 74 20 27 6f 72 67 2d cs-lisp...(setf.(alist-get.'org-
cb80 6d 6f 64 65 20 67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 70 72 65 66 69 78 2d 61 6c 69 73 74 29 20 mode.gptel-prompt-prefix-alist).
cba0 22 40 75 73 65 72 5c 6e 22 29 0a 20 20 28 73 65 74 66 20 28 61 6c 69 73 74 2d 67 65 74 20 27 6f "@user\n")...(setf.(alist-get.'o
cbc0 72 67 2d 6d 6f 64 65 20 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 70 72 65 66 69 78 2d 61 6c rg-mode.gptel-response-prefix-al
cbe0 69 73 74 29 20 22 40 61 73 73 69 73 74 61 6e 74 5c 6e 22 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a ist)."@assistant\n").#+end_src..
cc00 4f 74 68 65 72 77 69 73 65 2c 20 74 68 65 20 64 65 66 61 75 6c 74 20 70 72 6f 6d 70 74 20 70 72 Otherwise,.the.default.prompt.pr
cc20 65 66 69 78 20 77 69 6c 6c 20 6d 61 6b 65 20 73 75 63 63 65 73 73 69 76 65 20 70 72 6f 6d 70 74 efix.will.make.successive.prompt
cc40 73 20 73 69 62 6c 69 6e 67 20 68 65 61 64 69 6e 67 73 2c 20 61 6e 64 20 74 68 65 72 65 66 6f 72 s.sibling.headings,.and.therefor
cc60 65 20 6f 6e 20 64 69 66 66 65 72 65 6e 74 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 20 62 72 61 6e e.on.different.conversation.bran
cc80 63 68 65 73 2c 20 77 68 69 63 68 20 70 72 6f 62 61 62 6c 79 20 69 73 6e 27 74 20 77 68 61 74 20 ches,.which.probably.isn't.what.
cca0 79 6f 75 20 77 61 6e 74 2e 0a 0a 4e 6f 74 65 3a 20 75 73 69 6e 67 20 74 68 69 73 20 6f 70 74 69 you.want...Note:.using.this.opti
ccc0 6f 6e 20 72 65 71 75 69 72 65 73 20 4f 72 67 20 39 2e 37 20 6f 72 20 68 69 67 68 65 72 20 74 6f on.requires.Org.9.7.or.higher.to
cce0 20 62 65 20 61 76 61 69 6c 61 62 6c 65 2e 20 20 54 68 65 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 .be.available...The.[[https://gi
cd00 74 68 75 62 2e 63 6f 6d 2f 75 6c 74 72 6f 6e 6f 7a 6d 2f 61 69 2d 6f 72 67 2d 63 68 61 74 2e 65 thub.com/ultronozm/ai-org-chat.e
cd20 6c 5d 5b 61 69 2d 6f 72 67 2d 63 68 61 74 5d 5d 20 70 61 63 6b 61 67 65 20 75 73 65 73 20 67 70 l][ai-org-chat]].package.uses.gp
cd40 74 65 6c 20 74 6f 20 70 72 6f 76 69 64 65 20 74 68 69 73 20 62 72 61 6e 63 68 69 6e 67 20 63 6f tel.to.provide.this.branching.co
cd60 6e 76 65 72 73 61 74 69 6f 6e 20 62 65 68 61 76 69 6f 72 20 66 6f 72 20 6f 6c 64 65 72 20 76 65 nversation.behavior.for.older.ve
cd80 72 73 69 6f 6e 73 20 6f 66 20 4f 72 67 2e 0a 20 20 0a 2a 2a 2a 2a 2a 20 53 61 76 65 20 67 70 74 rsions.of.Org.....*****.Save.gpt
cda0 65 6c 20 70 61 72 61 6d 65 74 65 72 73 20 74 6f 20 4f 72 67 20 68 65 61 64 69 6e 67 73 20 28 72 el.parameters.to.Org.headings.(r
cdc0 65 70 72 6f 64 75 63 69 62 6c 65 20 63 68 61 74 73 29 0a 0a 59 6f 75 20 63 61 6e 20 64 65 63 6c eproducible.chats)..You.can.decl
cde0 61 72 65 20 74 68 65 20 67 70 74 65 6c 20 6d 6f 64 65 6c 2c 20 62 61 63 6b 65 6e 64 2c 20 74 65 are.the.gptel.model,.backend,.te
ce00 6d 70 65 72 61 74 75 72 65 2c 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 20 61 6e 64 20 6f 74 mperature,.system.message.and.ot
ce20 68 65 72 20 70 61 72 61 6d 65 74 65 72 73 20 61 73 20 4f 72 67 20 70 72 6f 70 65 72 74 69 65 73 her.parameters.as.Org.properties
ce40 20 77 69 74 68 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 3d 67 70 74 65 6c 2d 6f 72 67 2d 73 65 74 .with.the.command.=gptel-org-set
ce60 2d 70 72 6f 70 65 72 74 69 65 73 3d 2e 20 20 67 70 74 65 6c 20 71 75 65 72 69 65 73 20 75 6e 64 -properties=...gptel.queries.und
ce80 65 72 20 74 68 65 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 68 65 61 64 69 6e 67 20 77 69 6c er.the.corresponding.heading.wil
cea0 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 6c l.always.use.these.settings,.all
cec0 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 6f owing.you.to.create.mostly.repro
cee0 64 75 63 69 62 6c 65 20 4c 4c 4d 20 63 68 61 74 20 6e 6f 74 65 62 6f 6f 6b 73 2c 20 61 6e 64 20 ducible.LLM.chat.notebooks,.and.
cf00 74 6f 20 68 61 76 65 20 73 69 6d 75 6c 74 61 6e 65 6f 75 73 20 63 68 61 74 73 20 77 69 74 68 20 to.have.simultaneous.chats.with.
cf20 64 69 66 66 65 72 65 6e 74 20 6d 6f 64 65 6c 73 2c 20 6d 6f 64 65 6c 20 73 65 74 74 69 6e 67 73 different.models,.model.settings
cf40 20 61 6e 64 20 64 69 72 65 63 74 69 76 65 73 20 75 6e 64 65 72 20 64 69 66 66 65 72 65 6e 74 20 .and.directives.under.different.
cf60 4f 72 67 20 68 65 61 64 69 6e 67 73 2e 0a 0a 2a 2a 20 46 41 51 0a 2a 2a 2a 20 43 68 61 74 20 62 Org.headings...**.FAQ.***.Chat.b
cf80 75 66 66 65 72 20 55 49 0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 74 61 69 6c 73 3e 3c 73 75 6d 6d 61 uffer.UI.#+html:.<details><summa
cfa0 72 79 3e 0a 2a 2a 2a 2a 20 49 20 77 61 6e 74 20 74 68 65 20 77 69 6e 64 6f 77 20 74 6f 20 73 63 ry>.****.I.want.the.window.to.sc
cfc0 72 6f 6c 6c 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 61 73 20 74 68 65 20 72 65 73 70 6f 6e roll.automatically.as.the.respon
cfe0 73 65 20 69 73 20 69 6e 73 65 72 74 65 64 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 se.is.inserted.#+html:.</summary
d000 3e 0a 0a 54 6f 20 62 65 20 6d 69 6e 69 6d 61 6c 6c 79 20 61 6e 6e 6f 79 69 6e 67 2c 20 67 70 74 >..To.be.minimally.annoying,.gpt
d020 65 6c 20 64 6f 65 73 20 6e 6f 74 20 6d 6f 76 65 20 74 68 65 20 63 75 72 73 6f 72 20 62 79 20 64 el.does.not.move.the.cursor.by.d
d040 65 66 61 75 6c 74 2e 20 20 41 64 64 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 6f 20 79 6f efault...Add.the.following.to.yo
d060 75 72 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 74 6f 20 65 6e 61 62 6c 65 20 61 75 74 6f 2d ur.configuration.to.enable.auto-
d080 73 63 72 6f 6c 6c 69 6e 67 2e 0a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 scrolling...#+begin_src.emacs-li
d0a0 73 70 0a 28 61 64 64 2d 68 6f 6f 6b 20 27 67 70 74 65 6c 2d 70 6f 73 74 2d 73 74 72 65 61 6d 2d sp.(add-hook.'gptel-post-stream-
d0c0 68 6f 6f 6b 20 27 67 70 74 65 6c 2d 61 75 74 6f 2d 73 63 72 6f 6c 6c 29 0a 23 2b 65 6e 64 5f 73 hook.'gptel-auto-scroll).#+end_s
d0e0 72 63 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 23 2b 68 74 6d 6c 3a 20 3c rc..#+html:.</details>.#+html:.<
d100 64 65 74 61 69 6c 73 3e 3c 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 49 20 77 61 6e 74 20 74 68 details><summary>.****.I.want.th
d120 65 20 63 75 72 73 6f 72 20 74 6f 20 6d 6f 76 65 20 74 6f 20 74 68 65 20 6e 65 78 74 20 70 72 6f e.cursor.to.move.to.the.next.pro
d140 6d 70 74 20 61 66 74 65 72 20 74 68 65 20 72 65 73 70 6f 6e 73 65 20 69 73 20 69 6e 73 65 72 74 mpt.after.the.response.is.insert
d160 65 64 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a 54 6f 20 62 65 20 6d 69 6e ed.#+html:.</summary>..To.be.min
d180 69 6d 61 6c 6c 79 20 61 6e 6e 6f 79 69 6e 67 2c 20 67 70 74 65 6c 20 64 6f 65 73 20 6e 6f 74 20 imally.annoying,.gptel.does.not.
d1a0 6d 6f 76 65 20 74 68 65 20 63 75 72 73 6f 72 20 62 79 20 64 65 66 61 75 6c 74 2e 20 20 41 64 64 move.the.cursor.by.default...Add
d1c0 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 6f 20 79 6f 75 72 20 63 6f 6e 66 69 67 75 72 61 .the.following.to.your.configura
d1e0 74 69 6f 6e 20 74 6f 20 6d 6f 76 65 20 74 68 65 20 63 75 72 73 6f 72 3a 0a 0a 23 2b 62 65 67 69 tion.to.move.the.cursor:..#+begi
d200 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 28 61 64 64 2d 68 6f 6f 6b 20 27 67 70 74 65 n_src.emacs-lisp.(add-hook.'gpte
d220 6c 2d 70 6f 73 74 2d 72 65 73 70 6f 6e 73 65 2d 66 75 6e 63 74 69 6f 6e 73 20 27 67 70 74 65 6c l-post-response-functions.'gptel
d240 2d 65 6e 64 2d 6f 66 2d 72 65 73 70 6f 6e 73 65 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 59 6f 75 -end-of-response).#+end_src..You
d260 20 63 61 6e 20 61 6c 73 6f 20 63 61 6c 6c 20 3d 67 70 74 65 6c 2d 65 6e 64 2d 6f 66 2d 72 65 73 .can.also.call.=gptel-end-of-res
d280 70 6f 6e 73 65 3d 20 61 73 20 61 20 63 6f 6d 6d 61 6e 64 20 61 74 20 61 6e 79 20 74 69 6d 65 2e ponse=.as.a.command.at.any.time.
d2a0 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
d2c0 74 61 69 6c 73 3e 3c 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 49 20 77 61 6e 74 20 74 6f 20 63 tails><summary>.****.I.want.to.c
d2e0 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
d300 70 74 20 61 6e 64 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 pt.and.LLM.response.#+html:.</su
d320 6d 6d 61 72 79 3e 0a 0a 46 6f 72 20 64 65 64 69 63 61 74 65 64 20 63 68 61 74 20 62 75 66 66 65 mmary>..For.dedicated.chat.buffe
d340 72 73 3a 20 63 75 73 74 6f 6d 69 7a 65 20 3d 67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 70 72 65 66 rs:.customize.=gptel-prompt-pref
d360 69 78 2d 61 6c 69 73 74 3d 20 61 6e 64 20 3d 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 70 72 ix-alist=.and.=gptel-response-pr
d380 65 66 69 78 2d 61 6c 69 73 74 3d 2e 20 20 59 6f 75 20 63 61 6e 20 73 65 74 20 61 20 64 69 66 66 efix-alist=...You.can.set.a.diff
d3a0 65 72 65 6e 74 20 70 61 69 72 20 66 6f 72 20 65 61 63 68 20 6d 61 6a 6f 72 2d 6d 6f 64 65 2e 0a erent.pair.for.each.major-mode..
d3c0 0a 41 6e 79 77 68 65 72 65 20 69 6e 20 45 6d 61 63 73 3a 20 55 73 65 20 3d 67 70 74 65 6c 2d 70 .Anywhere.in.Emacs:.Use.=gptel-p
d3e0 72 65 2d 72 65 73 70 6f 6e 73 65 2d 68 6f 6f 6b 3d 20 61 6e 64 20 3d 67 70 74 65 6c 2d 70 6f 73 re-response-hook=.and.=gptel-pos
d400 74 2d 72 65 73 70 6f 6e 73 65 2d 66 75 6e 63 74 69 6f 6e 73 3d 2c 20 77 68 69 63 68 20 73 65 65 t-response-functions=,.which.see
d420 2e 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 23 2b 68 74 6d 6c 3a 20 3c 64 ...#+html:.</details>.#+html:.<d
d440 65 74 61 69 6c 73 3e 3c 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 48 6f 77 20 64 6f 65 73 20 67 etails><summary>.****.How.does.g
d460 70 74 65 6c 20 64 69 73 74 69 6e 67 75 69 73 68 20 62 65 74 77 65 65 6e 20 75 73 65 72 20 70 72 ptel.distinguish.between.user.pr
d480 6f 6d 70 74 73 20 61 6e 64 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 73 3f 0a 23 2b 68 74 6d 6c 3a ompts.and.LLM.responses?.#+html:
d4a0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a 67 70 74 65 6c 20 75 73 65 73 20 5b 5b 68 74 74 70 73 3a .</summary>..gptel.uses.[[https:
d4c0 2f 2f 77 77 77 2e 67 6e 75 2e 6f 72 67 2f 73 6f 66 74 77 61 72 65 2f 65 6d 61 63 73 2f 6d 61 6e //www.gnu.org/software/emacs/man
d4e0 75 61 6c 2f 68 74 6d 6c 5f 6e 6f 64 65 2f 65 6c 69 73 70 2f 54 65 78 74 2d 50 72 6f 70 65 72 74 ual/html_node/elisp/Text-Propert
d500 69 65 73 2e 68 74 6d 6c 5d 5b 74 65 78 74 2d 70 72 6f 70 65 72 74 69 65 73 5d 5d 20 74 6f 20 77 ies.html][text-properties]].to.w
d520 61 74 65 72 6d 61 72 6b 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 73 2e 20 20 54 68 75 73 20 74 68 atermark.LLM.responses...Thus.th
d540 69 73 20 74 65 78 74 20 69 73 20 69 6e 74 65 72 70 72 65 74 65 64 20 61 73 20 61 20 72 65 73 70 is.text.is.interpreted.as.a.resp
d560 6f 6e 73 65 20 65 76 65 6e 20 69 66 20 79 6f 75 20 63 6f 70 79 20 69 74 20 69 6e 74 6f 20 61 6e onse.even.if.you.copy.it.into.an
d580 6f 74 68 65 72 20 62 75 66 66 65 72 2e 20 20 49 6e 20 72 65 67 75 6c 61 72 20 62 75 66 66 65 72 other.buffer...In.regular.buffer
d5a0 73 20 28 62 75 66 66 65 72 73 20 77 69 74 68 6f 75 74 20 3d 67 70 74 65 6c 2d 6d 6f 64 65 3d 20 s.(buffers.without.=gptel-mode=.
d5c0 65 6e 61 62 6c 65 64 29 2c 20 79 6f 75 20 63 61 6e 20 74 75 72 6e 20 6f 66 66 20 74 68 69 73 20 enabled),.you.can.turn.off.this.
d5e0 74 72 61 63 6b 69 6e 67 20 62 79 20 75 6e 73 65 74 74 69 6e 67 20 3d 67 70 74 65 6c 2d 74 72 61 tracking.by.unsetting.=gptel-tra
d600 63 6b 2d 72 65 73 70 6f 6e 73 65 3d 2e 0a 0a 57 68 65 6e 20 72 65 73 74 6f 72 69 6e 67 20 61 20 ck-response=...When.restoring.a.
d620 63 68 61 74 20 73 74 61 74 65 20 66 72 6f 6d 20 61 20 66 69 6c 65 20 6f 6e 20 64 69 73 6b 2c 20 chat.state.from.a.file.on.disk,.
d640 67 70 74 65 6c 20 77 69 6c 6c 20 61 70 70 6c 79 20 74 68 65 73 65 20 70 72 6f 70 65 72 74 69 65 gptel.will.apply.these.propertie
d660 73 20 66 72 6f 6d 20 73 61 76 65 64 20 6d 65 74 61 64 61 74 61 20 69 6e 20 74 68 65 20 66 69 6c s.from.saved.metadata.in.the.fil
d680 65 20 77 68 65 6e 20 79 6f 75 20 74 75 72 6e 20 6f 6e 20 3d 67 70 74 65 6c 2d 6d 6f 64 65 3d 2e e.when.you.turn.on.=gptel-mode=.
d6a0 0a 0a 67 70 74 65 6c 20 64 6f 65 73 20 2f 6e 6f 74 2f 20 75 73 65 20 61 6e 79 20 70 72 65 66 69 ..gptel.does./not/.use.any.prefi
d6c0 78 20 6f 72 20 73 65 6d 61 6e 74 69 63 2f 73 79 6e 74 61 78 20 65 6c 65 6d 65 6e 74 20 69 6e 20 x.or.semantic/syntax.element.in.
d6e0 74 68 65 20 62 75 66 66 65 72 20 28 73 75 63 68 20 61 73 20 68 65 61 64 69 6e 67 73 29 20 74 6f the.buffer.(such.as.headings).to
d700 20 73 65 70 61 72 61 74 65 20 70 72 6f 6d 70 74 73 20 61 6e 64 20 72 65 73 70 6f 6e 73 65 73 2e .separate.prompts.and.responses.
d720 20 20 54 68 65 20 72 65 61 73 6f 6e 20 66 6f 72 20 74 68 69 73 20 69 73 20 74 68 61 74 20 67 70 ..The.reason.for.this.is.that.gp
d740 74 65 6c 20 61 69 6d 73 20 74 6f 20 69 6e 74 65 67 72 61 74 65 20 61 73 20 73 65 61 6d 6c 65 73 tel.aims.to.integrate.as.seamles
d760 73 6c 79 20 61 73 20 70 6f 73 73 69 62 6c 65 20 69 6e 74 6f 20 79 6f 75 72 20 72 65 67 75 6c 61 sly.as.possible.into.your.regula
d780 72 20 45 6d 61 63 73 20 75 73 61 67 65 3a 20 4c 4c 4d 20 69 6e 74 65 72 61 63 74 69 6f 6e 20 69 r.Emacs.usage:.LLM.interaction.i
d7a0 73 20 6e 6f 74 20 74 68 65 20 6f 62 6a 65 63 74 69 76 65 2c 20 69 74 27 73 20 6a 75 73 74 20 61 s.not.the.objective,.it's.just.a
d7c0 6e 6f 74 68 65 72 20 74 6f 6f 6c 20 61 74 20 79 6f 75 72 20 64 69 73 70 6f 73 61 6c 2e 20 20 53 nother.tool.at.your.disposal...S
d7e0 6f 20 72 65 71 75 69 72 69 6e 67 20 61 20 62 75 6e 63 68 20 6f 66 20 22 75 73 65 72 22 20 61 6e o.requiring.a.bunch.of."user".an
d800 64 20 22 61 73 73 69 73 74 61 6e 74 22 20 74 61 67 73 20 69 6e 20 74 68 65 20 62 75 66 66 65 72 d."assistant".tags.in.the.buffer
d820 20 69 73 20 6e 6f 69 73 79 20 61 6e 64 20 72 65 73 74 72 69 63 74 69 76 65 2e 20 49 66 20 79 6f .is.noisy.and.restrictive..If.yo
d840 75 20 77 61 6e 74 20 74 68 65 73 65 20 64 65 6d 61 72 63 61 74 69 6f 6e 73 2c 20 79 6f 75 20 63 u.want.these.demarcations,.you.c
d860 61 6e 20 63 75 73 74 6f 6d 69 7a 65 20 3d 67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 70 72 65 66 69 an.customize.=gptel-prompt-prefi
d880 78 2d 61 6c 69 73 74 3d 20 61 6e 64 20 3d 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 70 72 65 x-alist=.and.=gptel-response-pre
d8a0 66 69 78 2d 61 6c 69 73 74 3d 2e 20 20 4e 6f 74 65 20 74 68 61 74 20 74 68 65 73 65 20 70 72 65 fix-alist=...Note.that.these.pre
d8c0 66 69 78 65 73 20 61 72 65 20 66 6f 72 20 79 6f 75 72 20 72 65 61 64 61 62 69 6c 69 74 79 20 6f fixes.are.for.your.readability.o
d8e0 6e 6c 79 20 61 6e 64 20 70 75 72 65 6c 79 20 63 6f 73 6d 65 74 69 63 2e 0a 0a 23 2b 68 74 6d 6c nly.and.purely.cosmetic...#+html
d900 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 2a 2a 2a 20 54 72 61 6e 73 69 65 6e 74 20 6d 65 6e 75 20 :.</details>.***.Transient.menu.
d920 62 65 68 61 76 69 6f 72 0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 74 61 69 6c 73 3e 3c 73 75 6d 6d 61 behavior.#+html:.<details><summa
d940 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 65 6e 74 20 6d 65 ry>.****.I.want.the.transient.me
d960 6e 75 20 6f 70 74 69 6f 6e 73 20 74 6f 20 62 65 20 73 61 76 65 64 20 73 6f 20 49 20 6f 6e 6c 79 nu.options.to.be.saved.so.I.only
d980 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 74 6d 6c 3a 20 3c .need.to.set.them.once.#+html:.<
d9a0 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 6e 73 20 79 6f 75 /summary>..Any.model.options.you
d9c0 20 73 65 74 20 61 72 65 20 73 61 76 65 64 20 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 62 .set.are.saved.for.the.current.b
d9e0 75 66 66 65 72 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 uffer...But.the.redirection.opti
da00 6f 6e 73 20 69 6e 20 74 68 65 20 6d 65 6e 75 20 61 72 65 20 73 65 74 20 66 6f 72 20 74 68 65 20 ons.in.the.menu.are.set.for.the.
da20 6e 65 78 74 20 71 75 65 72 79 20 6f 6e 6c 79 3a 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 69 6d 67 20 73 next.query.only:..#+html:.<img.s
da40 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 2f rc="https://github.com/karthink/
da60 67 70 74 65 6c 2f 61 73 73 65 74 73 2f 38 36 30 37 35 33 32 2f 32 65 63 63 36 62 65 39 2d 61 61 gptel/assets/8607532/2ecc6be9-aa
da80 35 32 2d 34 32 38 37 2d 61 37 33 39 2d 62 61 30 36 65 31 33 36 39 65 63 32 22 20 61 6c 74 3d 22 52-4287-a739-ba06e1369ec2".alt="
daa0 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
dac0 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 2d 34 l/assets/8607532/2ecc6be9-aa52-4
dae0 32 38 37 2d 61 37 33 39 2d 62 61 30 36 65 31 33 36 39 65 63 32 22 3e 0a 0a 59 6f 75 20 63 61 6e 287-a739-ba06e1369ec2">..You.can
db00 20 6d 61 6b 65 20 74 68 65 6d 20 70 65 72 73 69 73 74 65 6e 74 20 61 63 72 6f 73 73 20 74 68 69 .make.them.persistent.across.thi
db20 73 20 45 6d 61 63 73 20 73 65 73 73 69 6f 6e 20 62 79 20 70 72 65 73 73 69 6e 67 20 7e 43 2d 78 s.Emacs.session.by.pressing.~C-x
db40 20 43 2d 73 7e 3a 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 69 6d 67 20 73 72 63 3d 22 68 74 74 70 73 3a .C-s~:..#+html:.<img.src="https:
db60 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 65 //github.com/karthink/gptel/asse
db80 74 73 2f 38 36 30 37 35 33 32 2f 62 38 62 63 62 36 61 64 2d 63 39 37 34 2d 34 31 65 31 2d 39 33 ts/8607532/b8bcb6ad-c974-41e1-93
dba0 33 36 2d 66 64 62 61 30 30 39 38 61 32 66 65 22 20 61 6c 74 3d 22 68 74 74 70 73 3a 2f 2f 67 69 36-fdba0098a2fe".alt="https://gi
dbc0 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 38 thub.com/karthink/gptel/assets/8
dbe0 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 2d 66 607532/b8bcb6ad-c974-41e1-9336-f
dc00 64 62 61 30 30 39 38 61 32 66 65 22 3e 0a 0a 28 59 6f 75 20 63 61 6e 20 61 6c 73 6f 20 63 79 63 dba0098a2fe">..(You.can.also.cyc
dc20 6c 65 20 74 68 72 6f 75 67 68 20 70 72 65 73 65 74 73 20 79 6f 75 27 76 65 20 73 61 76 65 64 20 le.through.presets.you've.saved.
dc40 77 69 74 68 20 7e 43 2d 78 20 70 7e 20 61 6e 64 20 7e 43 2d 78 20 6e 7e 2e 29 0a 0a 4e 6f 77 20 with.~C-x.p~.and.~C-x.n~.)..Now.
dc60 74 68 65 73 65 20 77 69 6c 6c 20 62 65 20 65 6e 61 62 6c 65 64 20 77 68 65 6e 65 76 65 72 20 79 these.will.be.enabled.whenever.y
dc80 6f 75 20 73 65 6e 64 20 61 20 71 75 65 72 79 20 66 72 6f 6d 20 74 68 65 20 74 72 61 6e 73 69 65 ou.send.a.query.from.the.transie
dca0 6e 74 20 6d 65 6e 75 2e 20 20 49 66 20 79 6f 75 20 77 61 6e 74 20 74 6f 20 75 73 65 20 74 68 65 nt.menu...If.you.want.to.use.the
dcc0 73 65 20 73 61 76 65 64 20 6f 70 74 69 6f 6e 73 20 77 69 74 68 6f 75 74 20 69 6e 76 6f 6b 69 6e se.saved.options.without.invokin
dce0 67 20 74 68 65 20 74 72 61 6e 73 69 65 6e 74 20 6d 65 6e 75 2c 20 79 6f 75 20 63 61 6e 20 75 73 g.the.transient.menu,.you.can.us
dd00 65 20 61 20 6b 65 79 62 6f 61 72 64 20 6d 61 63 72 6f 3a 0a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 e.a.keyboard.macro:..#+begin_src
dd20 20 65 6d 61 63 73 2d 6c 69 73 70 0a 3b 3b 20 52 65 70 6c 61 63 65 20 77 69 74 68 20 79 6f 75 72 .emacs-lisp.;;.Replace.with.your
dd40 20 6b 65 79 20 74 6f 20 69 6e 76 6f 6b 65 20 74 68 65 20 74 72 61 6e 73 69 65 6e 74 20 6d 65 6e .key.to.invoke.the.transient.men
dd60 75 3a 0a 28 6b 65 79 6d 61 70 2d 67 6c 6f 62 61 6c 2d 73 65 74 20 22 3c 66 36 3e 22 20 22 43 2d u:.(keymap-global-set."<f6>"."C-
dd80 75 20 43 2d 63 20 3c 72 65 74 75 72 6e 3e 20 3c 72 65 74 75 72 6e 3e 22 29 0a 23 2b 65 6e 64 5f u.C-c.<return>.<return>").#+end_
dda0 73 72 63 0a 0a 4f 72 20 73 65 65 20 74 68 69 73 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 src..Or.see.this.[[https://githu
ddc0 62 2e 63 6f 6d 2f 6b 61 72 74 68 69 6e 6b 2f 67 70 74 65 6c 2f 77 69 6b 69 2f 43 6f 6d 6d 6f 6e b.com/karthink/gptel/wiki/Common
dde0 6c 79 2d 72 65 71 75 65 73 74 65 64 2d 66 65 61 74 75 72 65 73 23 73 61 76 65 2d 74 72 61 6e 73 ly-requested-features#save-trans
de00 69 65 6e 74 2d 66 6c 61 67 73 5d 5b 77 69 6b 69 20 65 6e 74 72 79 5d 5d 2e 0a 0a 23 2b 68 74 6d ient-flags][wiki.entry]]...#+htm
de20 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><
de40 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 55 73 69 6e 67 20 74 68 65 20 74 72 61 6e 73 69 65 6e summary>.****.Using.the.transien
de60 74 20 6d 65 6e 75 20 6c 65 61 76 65 73 20 62 65 68 69 6e 64 20 65 78 74 72 61 20 77 69 6e 64 6f t.menu.leaves.behind.extra.windo
de80 77 73 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a 49 66 20 75 73 69 6e 67 20 ws.#+html:.</summary>..If.using.
dea0 67 70 74 65 6c 27 73 20 74 72 61 6e 73 69 65 6e 74 20 6d 65 6e 75 73 20 63 61 75 73 65 73 20 6e gptel's.transient.menus.causes.n
dec0 65 77 2f 65 78 74 72 61 20 77 69 6e 64 6f 77 20 73 70 6c 69 74 73 20 74 6f 20 62 65 20 63 72 65 ew/extra.window.splits.to.be.cre
dee0 61 74 65 64 2c 20 63 68 65 63 6b 20 79 6f 75 72 20 76 61 6c 75 65 20 6f 66 20 3d 74 72 61 6e 73 ated,.check.your.value.of.=trans
df00 69 65 6e 74 2d 64 69 73 70 6c 61 79 2d 62 75 66 66 65 72 2d 61 63 74 69 6f 6e 3d 2e 20 20 5b 5b ient-display-buffer-action=...[[
df20 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6d 61 67 69 74 2f 74 72 61 6e 73 69 65 https://github.com/magit/transie
df40 6e 74 2f 64 69 73 63 75 73 73 69 6f 6e 73 2f 33 35 38 5d 5b 53 65 65 20 74 68 69 73 20 64 69 73 nt/discussions/358][See.this.dis
df60 63 75 73 73 69 6f 6e 5d 5d 20 66 6f 72 20 6d 6f 72 65 20 63 6f 6e 74 65 78 74 2e 0a 0a 49 66 20 cussion]].for.more.context...If.
df80 79 6f 75 20 61 72 65 20 75 73 69 6e 67 20 48 65 6c 6d 2c 20 73 65 65 20 5b 5b 68 74 74 70 73 3a you.are.using.Helm,.see.[[https:
dfa0 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 2f 64 69 73 //github.com/magit/transient/dis
dfc0 63 75 73 73 69 6f 6e 73 2f 33 36 31 5d 5b 54 72 61 6e 73 69 65 6e 74 23 33 36 31 5d 5d 2e 0a 0a cussions/361][Transient#361]]...
dfe0 49 6e 20 67 65 6e 65 72 61 6c 2c 20 64 6f 20 6e 6f 74 20 63 75 73 74 6f 6d 69 7a 65 20 74 68 69 In.general,.do.not.customize.thi
e000 73 20 54 72 61 6e 73 69 65 6e 74 20 6f 70 74 69 6f 6e 20 75 6e 6c 65 73 73 20 79 6f 75 20 6b 6e s.Transient.option.unless.you.kn
e020 6f 77 20 77 68 61 74 20 79 6f 75 27 72 65 20 64 6f 69 6e 67 21 0a 0a 23 2b 68 74 6d 6c 3a 20 3c ow.what.you're.doing!..#+html:.<
e040 2f 64 65 74 61 69 6c 73 3e 0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 74 61 69 6c 73 3e 3c 73 75 6d 6d /details>.#+html:.<details><summ
e060 61 72 79 3e 0a 2a 2a 2a 2a 20 43 61 6e 20 49 20 63 68 61 6e 67 65 20 74 68 65 20 74 72 61 6e 73 ary>.****.Can.I.change.the.trans
e080 69 65 6e 74 20 6d 65 6e 75 20 6b 65 79 20 62 69 6e 64 69 6e 67 73 3f 0a 23 2b 68 74 6d 6c 3a 20 ient.menu.key.bindings?.#+html:.
e0a0 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a 59 65 73 2c 20 73 65 65 20 3d 74 72 61 6e 73 69 65 6e 74 2d </summary>..Yes,.see.=transient-
e0c0 73 75 66 66 69 78 2d 70 75 74 3d 2e 20 20 54 68 69 73 20 63 68 61 6e 67 65 73 20 74 68 65 20 6b suffix-put=...This.changes.the.k
e0e0 65 79 20 74 6f 20 73 65 6c 65 63 74 20 61 20 62 61 63 6b 65 6e 64 2f 6d 6f 64 65 6c 20 66 72 6f ey.to.select.a.backend/model.fro
e100 6d 20 22 2d 6d 22 20 74 6f 20 22 4d 22 20 69 6e 20 67 70 74 65 6c 27 73 20 6d 65 6e 75 3a 0a 23 m."-m".to."M".in.gptel's.menu:.#
e120 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 28 74 72 61 6e 73 69 65 6e 74 +begin_src.emacs-lisp.(transient
e140 2d 73 75 66 66 69 78 2d 70 75 74 20 27 67 70 74 65 6c 2d 6d 65 6e 75 20 28 6b 62 64 20 22 2d 6d -suffix-put.'gptel-menu.(kbd."-m
e160 22 29 20 3a 6b 65 79 20 22 4d 22 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 23 2b 68 74 6d 6c 3a 20 ").:key."M").#+end_src..#+html:.
e180 3c 2f 64 65 74 61 69 6c 73 3e 0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 74 61 69 6c 73 3e 3c 73 75 6d </details>.#+html:.<details><sum
e1a0 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 28 44 6f 6f 6d 20 45 6d 61 63 73 29 20 53 65 6e 64 69 6e 67 20 mary>.****.(Doom.Emacs).Sending.
e1c0 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 6e 75 20 66 61 69 6c a.query.from.the.gptel.menu.fail
e1e0 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 63 74 20 77 69 74 68 s.because.of.a.key.conflict.with
e200 20 4f 72 67 20 6d 6f 64 65 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a 44 6f .Org.mode.#+html:.</summary>..Do
e220 6f 6d 20 62 69 6e 64 73 20 7e 52 45 54 7e 20 69 6e 20 4f 72 67 20 6d 6f 64 65 20 74 6f 20 3d 2b om.binds.~RET~.in.Org.mode.to.=+
e240 6f 72 67 2f 64 77 69 6d 2d 61 74 2d 70 6f 69 6e 74 3d 2c 20 77 68 69 63 68 20 61 70 70 65 61 72 org/dwim-at-point=,.which.appear
e260 73 20 74 6f 20 63 6f 6e 66 6c 69 63 74 20 77 69 74 68 20 67 70 74 65 6c 27 73 20 74 72 61 6e 73 s.to.conflict.with.gptel's.trans
e280 69 65 6e 74 20 6d 65 6e 75 20 62 69 6e 64 69 6e 67 73 20 66 6f 72 20 73 6f 6d 65 20 72 65 61 73 ient.menu.bindings.for.some.reas
e2a0 6f 6e 2e 0a 0a 54 77 6f 20 73 6f 6c 75 74 69 6f 6e 73 3a 0a 2d 20 50 72 65 73 73 20 7e 43 2d 6d on...Two.solutions:.-.Press.~C-m
e2c0 7e 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20 72 65 74 75 72 6e 20 6b 65 79 2e 0a 2d 20 43 ~.instead.of.the.return.key..-.C
e2e0 68 61 6e 67 65 20 74 68 65 20 73 65 6e 64 20 6b 65 79 20 66 72 6f 6d 20 72 65 74 75 72 6e 20 74 hange.the.send.key.from.return.t
e300 6f 20 61 20 6b 65 79 20 6f 66 20 79 6f 75 72 20 63 68 6f 69 63 65 3a 0a 20 20 23 2b 62 65 67 69 o.a.key.of.your.choice:...#+begi
e320 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 20 20 28 74 72 61 6e 73 69 65 6e 74 2d 73 75 n_src.emacs-lisp...(transient-su
e340 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 52 45 54 22 29 ffix-put.'gptel-menu.(kbd."RET")
e360 20 3a 6b 65 79 20 22 3c 66 38 3e 22 29 0a 20 20 23 2b 65 6e 64 5f 73 72 63 0a 0a 23 2b 68 74 6d .:key."<f8>")...#+end_src..#+htm
e380 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 2a 2a 2a 20 4d 69 73 63 65 6c 6c 61 6e 65 6f 75 73 0a l:.</details>.***.Miscellaneous.
e3a0 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>.****.
e3c0 49 20 77 61 6e 74 20 74 6f 20 75 73 65 20 67 70 74 65 6c 20 69 6e 20 61 20 77 61 79 20 74 68 61 I.want.to.use.gptel.in.a.way.tha
e3e0 74 27 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 65 64 20 62 79 20 3d 67 70 74 65 6c 2d 73 65 6e 64 t's.not.supported.by.=gptel-send
e400 3d 20 6f 72 20 74 68 65 20 6f 70 74 69 6f 6e 73 20 6d 65 6e 75 0a 23 2b 68 74 6d 6c 3a 20 3c 2f =.or.the.options.menu.#+html:.</
e420 73 75 6d 6d 61 72 79 3e 0a 0a 67 70 74 65 6c 27 73 20 64 65 66 61 75 6c 74 20 75 73 61 67 65 20 summary>..gptel's.default.usage.
e440 70 61 74 74 65 72 6e 20 69 73 20 73 69 6d 70 6c 65 2c 20 61 6e 64 20 77 69 6c 6c 20 73 74 61 79 pattern.is.simple,.and.will.stay
e460 20 74 68 69 73 20 77 61 79 3a 20 52 65 61 64 20 69 6e 70 75 74 20 69 6e 20 61 6e 79 20 62 75 66 .this.way:.Read.input.in.any.buf
e480 66 65 72 20 61 6e 64 20 69 6e 73 65 72 74 20 74 68 65 20 72 65 73 70 6f 6e 73 65 20 62 65 6c 6f fer.and.insert.the.response.belo
e4a0 77 20 69 74 2e 20 20 53 6f 6d 65 20 63 75 73 74 6f 6d 20 62 65 68 61 76 69 6f 72 20 69 73 20 70 w.it...Some.custom.behavior.is.p
e4c0 6f 73 73 69 62 6c 65 20 77 69 74 68 20 74 68 65 20 74 72 61 6e 73 69 65 6e 74 20 6d 65 6e 75 20 ossible.with.the.transient.menu.
e4e0 28 3d 43 2d 75 20 4d 2d 78 20 67 70 74 65 6c 2d 73 65 6e 64 3d 29 2e 0a 0a 46 6f 72 20 6d 6f 72 (=C-u.M-x.gptel-send=)...For.mor
e500 65 20 70 72 6f 67 72 61 6d 6d 61 62 6c 65 20 75 73 61 67 65 2c 20 67 70 74 65 6c 20 70 72 6f 76 e.programmable.usage,.gptel.prov
e520 69 64 65 73 20 61 20 67 65 6e 65 72 61 6c 20 3d 67 70 74 65 6c 2d 72 65 71 75 65 73 74 3d 20 66 ides.a.general.=gptel-request=.f
e540 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 61 63 63 65 70 74 73 20 61 20 63 75 73 74 6f 6d 20 70 72 unction.that.accepts.a.custom.pr
e560 6f 6d 70 74 20 61 6e 64 20 61 20 63 61 6c 6c 62 61 63 6b 20 74 6f 20 61 63 74 20 6f 6e 20 74 68 ompt.and.a.callback.to.act.on.th
e580 65 20 72 65 73 70 6f 6e 73 65 2e 20 59 6f 75 20 63 61 6e 20 75 73 65 20 74 68 69 73 20 74 6f 20 e.response..You.can.use.this.to.
e5a0 62 75 69 6c 64 20 63 75 73 74 6f 6d 20 77 6f 72 6b 66 6c 6f 77 73 20 6e 6f 74 20 73 75 70 70 6f build.custom.workflows.not.suppo
e5c0 72 74 65 64 20 62 79 20 3d 67 70 74 65 6c 2d 73 65 6e 64 3d 2e 20 20 53 65 65 20 74 68 65 20 64 rted.by.=gptel-send=...See.the.d
e5e0 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 3d 67 70 74 65 6c 2d 72 65 71 75 65 73 74 3d 2c ocumentation.of.=gptel-request=,
e600 20 61 6e 64 20 74 68 65 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6b 61 .and.the.[[https://github.com/ka
e620 72 74 68 69 6e 6b 2f 67 70 74 65 6c 2f 77 69 6b 69 2f 44 65 66 69 6e 69 6e 67 2d 63 75 73 74 6f rthink/gptel/wiki/Defining-custo
e640 6d 2d 67 70 74 65 6c 2d 63 6f 6d 6d 61 6e 64 73 5d 5b 77 69 6b 69 5d 5d 20 66 6f 72 20 65 78 61 m-gptel-commands][wiki]].for.exa
e660 6d 70 6c 65 73 2e 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 23 2b 68 74 6d mples...#+html:.</details>.#+htm
e680 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 28 43 68 61 74 l:.<details><summary>.****.(Chat
e6a0 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 2f 32 20 34 32 GPT).I.get.the.error."(HTTP/2.42
e6c0 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 74 20 71 75 6f 9).You.exceeded.your.current.quo
e6e0 74 61 22 0a 23 2b 68 74 6d 6c 3a 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a 23 2b 62 65 67 69 6e 5f 71 ta".#+html:</summary>..#+begin_q
e700 75 6f 74 65 0a 28 48 54 54 50 2f 32 20 34 32 39 29 20 59 6f 75 20 65 78 63 65 65 64 65 64 20 79 uote.(HTTP/2.429).You.exceeded.y
e720 6f 75 72 20 63 75 72 72 65 6e 74 20 71 75 6f 74 61 2c 20 70 6c 65 61 73 65 20 63 68 65 63 6b 20 our.current.quota,.please.check.
e740 79 6f 75 72 20 70 6c 61 6e 20 61 6e 64 20 62 69 6c 6c 69 6e 67 20 64 65 74 61 69 6c 73 2e 0a 23 your.plan.and.billing.details..#
e760 2b 65 6e 64 5f 71 75 6f 74 65 0a 0a 55 73 69 6e 67 20 74 68 65 20 43 68 61 74 47 50 54 20 28 6f +end_quote..Using.the.ChatGPT.(o
e780 72 20 61 6e 79 20 4f 70 65 6e 41 49 29 20 41 50 49 20 72 65 71 75 69 72 65 73 20 5b 5b 68 74 74 r.any.OpenAI).API.requires.[[htt
e7a0 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 61 63 63 6f 75 6e 74 ps://platform.openai.com/account
e7c0 2f 62 69 6c 6c 69 6e 67 2f 6f 76 65 72 76 69 65 77 5d 5b 61 64 64 69 6e 67 20 63 72 65 64 69 74 /billing/overview][adding.credit
e7e0 20 74 6f 20 79 6f 75 72 20 61 63 63 6f 75 6e 74 5d 5d 2e 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 .to.your.account]]...#+html:.</d
e800 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
e820 79 3e 0a 2a 2a 2a 2a 20 57 68 79 20 61 6e 6f 74 68 65 72 20 4c 4c 4d 20 63 6c 69 65 6e 74 3f 0a y>.****.Why.another.LLM.client?.
e840 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a 4f 74 68 65 72 20 45 6d 61 63 73 20 #+html:.</summary>..Other.Emacs.
e860 63 6c 69 65 6e 74 73 20 66 6f 72 20 4c 4c 4d 73 20 70 72 65 73 63 72 69 62 65 20 74 68 65 20 66 clients.for.LLMs.prescribe.the.f
e880 6f 72 6d 61 74 20 6f 66 20 74 68 65 20 69 6e 74 65 72 61 63 74 69 6f 6e 20 28 61 20 63 6f 6d 69 ormat.of.the.interaction.(a.comi
e8a0 6e 74 20 73 68 65 6c 6c 2c 20 6f 72 67 2d 62 61 62 65 6c 20 62 6c 6f 63 6b 73 2c 20 65 74 63 29 nt.shell,.org-babel.blocks,.etc)
e8c0 2e 20 20 49 20 77 61 6e 74 65 64 3a 0a 0a 31 2e 20 53 6f 6d 65 74 68 69 6e 67 20 74 68 61 74 20 ...I.wanted:..1..Something.that.
e8e0 69 73 20 61 73 20 66 72 65 65 2d 66 6f 72 6d 20 61 73 20 70 6f 73 73 69 62 6c 65 3a 20 71 75 65 is.as.free-form.as.possible:.que
e900 72 79 20 74 68 65 20 6d 6f 64 65 6c 20 75 73 69 6e 67 20 61 6e 79 20 74 65 78 74 20 69 6e 20 61 ry.the.model.using.any.text.in.a
e920 6e 79 20 62 75 66 66 65 72 2c 20 61 6e 64 20 72 65 64 69 72 65 63 74 20 74 68 65 20 72 65 73 70 ny.buffer,.and.redirect.the.resp
e940 6f 6e 73 65 20 61 73 20 72 65 71 75 69 72 65 64 2e 20 20 55 73 69 6e 67 20 61 20 64 65 64 69 63 onse.as.required...Using.a.dedic
e960 61 74 65 64 20 3d 67 70 74 65 6c 3d 20 62 75 66 66 65 72 20 6a 75 73 74 20 61 64 64 73 20 73 6f ated.=gptel=.buffer.just.adds.so
e980 6d 65 20 76 69 73 75 61 6c 20 66 6c 61 69 72 20 74 6f 20 74 68 65 20 69 6e 74 65 72 61 63 74 69 me.visual.flair.to.the.interacti
e9a0 6f 6e 2e 0a 32 2e 20 49 6e 74 65 67 72 61 74 69 6f 6e 20 77 69 74 68 20 6f 72 67 2d 6d 6f 64 65 on..2..Integration.with.org-mode
e9c0 2c 20 6e 6f 74 20 75 73 69 6e 67 20 61 20 77 61 6c 6c 65 64 2d 6f 66 66 20 6f 72 67 2d 62 61 62 ,.not.using.a.walled-off.org-bab
e9e0 65 6c 20 62 6c 6f 63 6b 2c 20 62 75 74 20 61 73 20 72 65 67 75 6c 61 72 20 74 65 78 74 2e 20 20 el.block,.but.as.regular.text...
ea00 54 68 69 73 20 77 61 79 20 74 68 65 20 6d 6f 64 65 6c 20 63 61 6e 20 67 65 6e 65 72 61 74 65 20 This.way.the.model.can.generate.
ea20 63 6f 64 65 20 62 6c 6f 63 6b 73 20 74 68 61 74 20 49 20 63 61 6e 20 72 75 6e 2e 0a 0a 23 2b 68 code.blocks.that.I.can.run...#+h
ea40 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 0a 2a 2a 20 41 64 64 69 74 69 6f 6e 61 6c 20 43 tml:.</details>..**.Additional.C
ea60 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0a 3a 50 52 4f 50 45 52 54 49 45 53 3a 0a 3a 49 44 3a 20 20 onfiguration.:PROPERTIES:.:ID:..
ea80 20 20 20 20 20 66 38 38 35 61 64 61 63 2d 35 38 61 33 2d 34 65 62 61 2d 61 36 62 37 2d 39 31 65 .....f885adac-58a3-4eba-a6b7-91e
eaa0 39 65 37 61 31 37 38 32 39 0a 3a 45 4e 44 3a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 9e7a17829.:END:.#+html:.</summar
eac0 79 3e 0a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 20 3a 65 78 70 6f y>..#+begin_src.emacs-lisp.:expo
eae0 72 74 73 20 6e 6f 6e 65 20 3a 72 65 73 75 6c 74 73 20 6c 69 73 74 0a 28 6c 65 74 20 28 28 61 6c rts.none.:results.list.(let.((al
eb00 6c 29 29 0a 20 20 28 6d 61 70 61 74 6f 6d 73 20 28 6c 61 6d 62 64 61 20 28 73 79 6d 29 0a 20 20 l))...(mapatoms.(lambda.(sym)...
eb20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 61 6e 64 20 28 73 74 72 69 6e 67 2d 6d ............(when.(and.(string-m
eb40 61 74 63 68 2d 70 20 22 5e 67 70 74 65 6c 2d 5b 5e 2d 5d 22 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d atch-p."^gptel-[^-]".(symbol-nam
eb60 65 20 73 79 6d 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 e.sym)).........................
eb80 20 28 67 65 74 20 73 79 6d 20 27 76 61 72 69 61 62 6c 65 2d 64 6f 63 75 6d 65 6e 74 61 74 69 6f .(get.sym.'variable-documentatio
eba0 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 73 79 6d 20 61 6c n)).................(push.sym.al
ebc0 6c 29 29 29 29 0a 20 20 61 6c 6c 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 7c 2d 2d 2d 2d 2d 2d 2d l))))...all).#+end_src..|-------
ebe0 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 ---------------+----------------
ec00 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
ec20 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 43 6f 6e 6e 65 63 74 --------------------|.|.*Connect
ec40 69 6f 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 ion.options*.|..................
ec60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
ec80 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 2d 2d ..................|.|-----------
eca0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d -----------+--------------------
ecc0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
ece0 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 75 73 65 2d 63 ----------------|.|.=gptel-use-c
ed00 75 72 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 url=.....|.Use.Curl.(default),.f
ed20 61 6c 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 allback.to.Emacs'.built-in.=url=
ed40 2e 20 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 ..............|.|.=gptel-proxy=.
ed60 20 20 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 .......|.Proxy.server.for.reques
ed80 74 73 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 ts,.passed.to.curl.via.=--proxy=
eda0 2e 20 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 ............|.|.=gptel-api-key=.
edc0 20 20 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 .....|.Variable/function.that.re
ede0 74 75 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 turns.the.API.key.for.the.active
ee00 20 62 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 .backend..|.|-------------------
ee20 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 ---+----------------------------
ee40 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
ee60 2d 2d 2d 2d 2d 2d 2d 2d 7c 0a 0a 7c 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------|..|--------------------
ee80 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 ---+----------------------------
eea0 2d 2d 2d 2d 2d 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 -----------------------------|.|
eec0 20 2a 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 .*LLM.request.options*.|./(Note:
eee0 20 6e 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 .not.supported.uniformly.across.
ef00 4c 4c 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 LLMs)/...........|.|------------
ef20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d -----------+--------------------
ef40 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
ef60 2d 2d 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 -----|.|.=gptel-backend=.......|
ef80 20 44 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 .Default.LLM.Backend............
efa0 20 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 67 70 .........................|.|.=gp
efc0 74 65 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 tel-model=.........|.Default.mod
efe0 65 6c 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 el.to.use,.depends.on.the.backen
f000 64 2e 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 d............|.|.=gptel-stream=.
f020 20 20 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 .......|.Enable.streaming.respon
f040 73 65 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 ses,.if.the.backend.supports.it.
f060 20 7c 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 .|.|.=gptel-directives=....|.Ali
f080 73 74 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 st.of.system.directives,.can.swi
f0a0 74 63 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 tch.on.the.fly.......|.|.=gptel-
f0c0 6d 61 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 max-tokens=....|.Maximum.token.c
f0e0 6f 75 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 ount.(in.query.+.response)......
f100 20 20 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 .........|.|.=gptel-temperature=
f120 20 20 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 ...|.Randomness.in.response.text
f140 2c 20 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 ,.0.to.2.....................|.|
f160 20 3d 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 .=gptel-cache=.........|.Cache.p
f180 72 6f 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 rompts,.system.message.or.tools.
f1a0 28 41 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 (Anthropic.only).|.|.=gptel-use-
f1c0 63 6f 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 context=...|.How/whether.to.incl
f1e0 75 64 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 ude.additional.context..........
f200 20 20 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 .....|.|.=gptel-use-tools=.....|
f220 20 44 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 .Disable,.allow.or.force.LLM.too
f240 6c 2d 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 l-use....................|.|.=gp
f260 74 65 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 tel-tools=.........|.List.of.too
f280 6c 73 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 ls.to.include.with.requests.....
f2a0 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 2d 2d .............|.|----------------
f2c0 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 2d -------+------------------------
f2e0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
f300 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 2d 2d 2d -|..|---------------------------
f320 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----+---------------------------
f340 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
f360 2d 2d 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 -----|.|.*Chat.UI.options*......
f380 20 20 20 20 20 20 20 7c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .......|........................
f3a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
f3c0 20 20 20 20 20 20 20 20 7c 0a 7c 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ........|.|---------------------
f3e0 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 ----------+---------------------
f400 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
f420 2d 2d 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 -----------|.|.=gptel-default-mo
f440 64 65 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 de=..........|.Major.mode.for.de
f460 64 69 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 dicated.chat.buffers............
f480 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 70 72 6f 6d 70 74 2d ..............|.|.=gptel-prompt-
f4a0 70 72 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 prefix-alist=...|.Text.inserted.
f4c0 62 65 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 before.queries..................
f4e0 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 73 70 .................|.|.=gptel-resp
f500 6f 6e 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 onse-prefix-alist=.|.Text.insert
f520 65 64 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 ed.before.responses.............
f540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 7c 20 3d 67 70 74 65 6c 2d 74 ....................|.|.=gptel-t
f560 72 61 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 rack-response=........|.Distingu
f580 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 4c ish.between.user.messages.and.LL
f5a0 4d 20 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 M.responses?...........|.|.=gpte
f5c0 6c 2d 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 l-track-media=...........|.Send.
f5e0 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 69 6e 6b 73 images.or.other.media.from.links
f600 3f 20 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 67 ?.........................|.|.=g
f620 70 74 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 ptel-confirm-tool-calls=....|.Co
f640 6e 66 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 nfirm.all.tool.calls?...........
f660 20 20 20 20 20 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 .............................|.|
f680 20 3d 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 .=gptel-include-tool-results=..|
f6a0 20 49 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 .Include.tool.results.in.the.LLM
f6c0 20 72 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 .response?......................
f6e0 7c 0a 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 |.|.=gptel-use-header-line=.....
f700 20 20 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 ..|.Display.status.messages.in.h
f720 65 61 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 eader-line.(default).or.minibuff
f740 65 72 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 er.|.|.=gptel-display-buffer-act
f760 69 6f 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 ion=.|.Placement.of.the.gptel.ch
f780 61 74 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 at.buffer.......................
f7a0 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 ......|.|-----------------------
f7c0 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 --------+-----------------------
f7e0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
f800 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 2d 2d 2d ---------|..|-------------------
f820 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 ------------+-------------------
f840 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
f860 2d 2d 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 ----|.|.*Org.mode.UI.options*...
f880 20 20 20 20 20 20 7c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ......|.........................
f8a0 20 20 20 20 20 20 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 ..............................|.
f8c0 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 2d 2d |-------------------------------
f8e0 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d +-------------------------------
f900 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
f920 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 20 7c 20 4d 61 6b 65 el-org-branching-context=.|.Make
f940 20 65 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 .each.outline.path.a.separate.co
f960 6e 76 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 nversation.branch.|.|.=gptel-org
f980 2d 69 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 -ignore-elements=...|.Ignore.par
f9a0 74 73 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 ts.of.the.buffer.when.sending.a.
f9c0 71 75 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 query.......|.|-----------------
f9e0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------+-----------------
fa00 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
fa20 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 ------|..|----------------------
fa40 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d -----------+--------------------
fa60 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
fa80 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 7a ---------|.|.*Hooks.for.customiz
faa0 61 74 69 6f 6e 2a 20 20 20 20 20 20 20 7c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ation*.......|..................
fac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
fae0 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 ...........|.|------------------
fb00 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 ---------------+----------------
fb20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
fb40 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 61 76 65 2d 73 74 61 -------------|.|.=gptel-save-sta
fb60 74 65 2d 68 6f 6f 6b 3d 20 20 20 20 20 20 20 20 20 7c 20 52 75 6e 73 20 62 65 66 6f 72 65 20 73 te-hook=.........|.Runs.before.s
fb80 61 76 69 6e 67 20 74 68 65 20 63 68 61 74 20 73 74 61 74 65 20 74 6f 20 61 20 66 69 6c 65 20 6f aving.the.chat.state.to.a.file.o
fba0 6e 20 64 69 73 6b 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 n.disk.........|.|.=gptel-prompt
fbc0 2d 66 69 6c 74 65 72 2d 68 6f 6f 6b 3d 20 20 20 20 20 20 7c 20 52 75 6e 73 20 69 6e 20 61 20 74 -filter-hook=......|.Runs.in.a.t
fbe0 65 6d 70 20 62 75 66 66 65 72 20 74 6f 20 74 72 61 6e 73 66 6f 72 6d 20 74 65 78 74 20 62 65 66 emp.buffer.to.transform.text.bef
fc00 6f 72 65 20 73 65 6e 64 69 6e 67 20 20 20 20 20 20 7c 0a 7c 20 3d 67 70 74 65 6c 2d 70 6f 73 74 ore.sending......|.|.=gptel-post
fc20 2d 72 65 71 75 65 73 74 2d 68 6f 6f 6b 3d 20 20 20 20 20 20 20 7c 20 52 75 6e 73 20 69 6d 6d 65 -request-hook=.......|.Runs.imme
fc40 64 69 61 74 65 6c 79 20 61 66 74 65 72 20 64 69 73 70 61 74 63 68 69 6e 67 20 61 20 3d 67 70 74 diately.after.dispatching.a.=gpt
fc60 65 6c 2d 72 65 71 75 65 73 74 3d 2e 20 20 20 20 20 20 20 7c 0a 7c 20 3d 67 70 74 65 6c 2d 70 72 el-request=........|.|.=gptel-pr
fc80 65 2d 72 65 73 70 6f 6e 73 65 2d 68 6f 6f 6b 3d 20 20 20 20 20 20 20 7c 20 52 75 6e 73 20 62 65 e-response-hook=.......|.Runs.be
fca0 66 6f 72 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 fore.inserting.the.LLM.response.
fcc0 69 6e 74 6f 20 74 68 65 20 62 75 66 66 65 72 20 20 20 20 20 20 7c 0a 7c 20 3d 67 70 74 65 6c 2d into.the.buffer......|.|.=gptel-
fce0 70 6f 73 74 2d 72 65 73 70 6f 6e 73 65 2d 66 75 6e 63 74 69 6f 6e 73 3d 20 7c 20 52 75 6e 73 20 post-response-functions=.|.Runs.
fd00 61 66 74 65 72 20 69 6e 73 65 72 74 69 6e 67 20 74 68 65 20 66 75 6c 6c 20 4c 4c 4d 20 72 65 73 after.inserting.the.full.LLM.res
fd20 70 6f 6e 73 65 20 69 6e 74 6f 20 74 68 65 20 62 75 66 66 65 72 20 20 7c 0a 7c 20 3d 67 70 74 65 ponse.into.the.buffer..|.|.=gpte
fd40 6c 2d 70 6f 73 74 2d 73 74 72 65 61 6d 2d 68 6f 6f 6b 3d 20 20 20 20 20 20 20 20 7c 20 52 75 6e l-post-stream-hook=........|.Run
fd60 73 20 61 66 74 65 72 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 s.after.each.streaming.insertion
fd80 20 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 67 70 .........................|.|.=gp
fda0 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 77 72 61 70 2d 66 75 6e 63 74 69 6f 6e 3d 20 20 20 7c 20 54 tel-context-wrap-function=...|.T
fdc0 6f 20 69 6e 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 o.include.additional.context.for
fde0 6d 61 74 74 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 matted.your.way............|.|.=
fe00 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 3d 20 20 7c gptel-rewrite-default-action=..|
fe20 20 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 .Automatically.diff,.ediff,.merg
fe40 65 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 e.or.replace.refactored.text.|.|
fe60 20 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 .=gptel-post-rewrite-functions=.
fe80 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 3d 20 .|.Runs.after.a.=gptel-rewrite=.
fea0 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 20 7c request.succeeds...............|
fec0 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 2d .|------------------------------
fee0 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 ---+----------------------------
ff00 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
ff20 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 20 43 4f 4d 4d 45 -|..#+html:.</details>..**.COMME
ff40 4e 54 20 57 69 6c 6c 20 79 6f 75 20 61 64 64 20 66 65 61 74 75 72 65 20 58 3f 0a 0a 4d 61 79 62 NT.Will.you.add.feature.X?..Mayb
ff60 65 2c 20 49 27 64 20 6c 69 6b 65 20 74 6f 20 65 78 70 65 72 69 6d 65 6e 74 20 61 20 62 69 74 20 e,.I'd.like.to.experiment.a.bit.
ff80 6d 6f 72 65 20 66 69 72 73 74 2e 20 20 46 65 61 74 75 72 65 73 20 61 64 64 65 64 20 73 69 6e 63 more.first...Features.added.sinc
ffa0 65 20 74 68 65 20 69 6e 63 65 70 74 69 6f 6e 20 6f 66 20 74 68 69 73 20 70 61 63 6b 61 67 65 20 e.the.inception.of.this.package.
ffc0 69 6e 63 6c 75 64 65 0a 2d 20 43 75 72 6c 20 73 75 70 70 6f 72 74 20 28 3d 67 70 74 65 6c 2d 75 include.-.Curl.support.(=gptel-u
ffe0 73 65 2d 63 75 72 6c 3d 29 2e 0a 2d 20 53 74 72 65 61 6d 69 6e 67 20 72 65 73 70 6f 6e 73 65 73 se-curl=)..-.Streaming.responses
10000 20 28 3d 67 70 74 65 6c 2d 73 74 72 65 61 6d 3d 29 2e 0a 2d 20 43 61 6e 63 65 6c 6c 69 6e 67 20 .(=gptel-stream=)..-.Cancelling.
10020 72 65 71 75 65 73 74 73 20 69 6e 20 70 72 6f 67 72 65 73 73 20 28 3d 67 70 74 65 6c 2d 61 62 6f requests.in.progress.(=gptel-abo
10040 72 74 3d 29 0a 2d 20 47 65 6e 65 72 61 6c 20 41 50 49 20 66 6f 72 20 77 72 69 74 69 6e 67 20 79 rt=).-.General.API.for.writing.y
10060 6f 75 72 20 6f 77 6e 20 63 6f 6d 6d 61 6e 64 73 20 28 3d 67 70 74 65 6c 2d 72 65 71 75 65 73 74 our.own.commands.(=gptel-request
10080 3d 2c 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6b 61 72 74 68 69 6e 6b =,.[[https://github.com/karthink
100a0 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 67 70 74 65 /gptel/wiki/Defining-custom-gpte
100c0 6c 2d 63 6f 6d 6d 61 6e 64 73 5d 5b 77 69 6b 69 5d 5d 29 0a 2d 20 44 69 73 70 61 74 63 68 20 6d l-commands][wiki]]).-.Dispatch.m
100e0 65 6e 75 73 20 75 73 69 6e 67 20 54 72 61 6e 73 69 65 6e 74 20 28 3d 67 70 74 65 6c 2d 73 65 6e enus.using.Transient.(=gptel-sen
10100 64 3d 20 77 69 74 68 20 61 20 70 72 65 66 69 78 20 61 72 67 29 2e 0a 2d 20 53 70 65 63 69 66 79 d=.with.a.prefix.arg)..-.Specify
10120 69 6e 67 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 73 69 7a ing.the.conversation.context.siz
10140 65 2e 0a 2d 20 47 50 54 2d 34 20 73 75 70 70 6f 72 74 2e 0a 2d 20 52 65 73 70 6f 6e 73 65 20 72 e..-.GPT-4.support..-.Response.r
10160 65 64 69 72 65 63 74 69 6f 6e 20 28 74 6f 20 74 68 65 20 65 63 68 6f 20 61 72 65 61 2c 20 61 6e edirection.(to.the.echo.area,.an
10180 6f 74 68 65 72 20 62 75 66 66 65 72 2c 20 65 74 63 29 2e 0a 2d 20 41 20 62 75 69 6c 74 2d 69 6e other.buffer,.etc)..-.A.built-in
101a0 20 72 65 66 61 63 74 6f 72 2f 72 65 77 72 69 74 65 20 70 72 6f 6d 70 74 2e 0a 2d 20 4c 69 6d 69 .refactor/rewrite.prompt..-.Limi
101c0 74 69 6e 67 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 20 63 6f 6e 74 65 78 74 20 74 6f 20 4f 72 67 ting.conversation.context.to.Org
101e0 20 68 65 61 64 69 6e 67 73 20 75 73 69 6e 67 20 70 72 6f 70 65 72 74 69 65 73 20 28 23 35 38 29 .headings.using.properties.(#58)
10200 2e 0a 2d 20 53 61 76 69 6e 67 20 61 6e 64 20 72 65 73 74 6f 72 69 6e 67 20 63 68 61 74 73 20 28 ..-.Saving.and.restoring.chats.(
10220 23 31 37 29 2e 0a 2d 20 53 75 70 70 6f 72 74 20 66 6f 72 20 6c 6f 63 61 6c 20 4c 4c 4d 73 2e 0a #17)..-.Support.for.local.LLMs..
10240 0a 46 65 61 74 75 72 65 73 20 62 65 69 6e 67 20 63 6f 6e 73 69 64 65 72 65 64 20 6f 72 20 69 6e .Features.being.considered.or.in
10260 20 74 68 65 20 70 69 70 65 6c 69 6e 65 3a 0a 2d 20 46 75 6c 6c 79 20 73 74 61 74 65 6c 65 73 73 .the.pipeline:.-.Fully.stateless
10280 20 64 65 73 69 67 6e 20 28 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6b 61 .design.([[https://github.com/ka
102a0 72 74 68 69 6e 6b 2f 67 70 74 65 6c 2f 64 69 73 63 75 73 73 69 6f 6e 73 2f 31 31 39 5d 5b 64 69 rthink/gptel/discussions/119][di
102c0 73 63 75 73 73 69 6f 6e 20 23 31 31 39 5d 5d 29 2e 0a 0a 2a 2a 20 41 6c 74 65 72 6e 61 74 69 76 scussion.#119]])...**.Alternativ
102e0 65 73 0a 0a 4f 74 68 65 72 20 45 6d 61 63 73 20 63 6c 69 65 6e 74 73 20 66 6f 72 20 4c 4c 4d 73 es..Other.Emacs.clients.for.LLMs
10300 20 69 6e 63 6c 75 64 65 0a 0a 2d 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d .include..-.[[https://github.com
10320 2f 61 68 79 61 74 74 2f 6c 6c 6d 5d 5b 6c 6c 6d 5d 5d 3a 20 6c 6c 6d 20 70 72 6f 76 69 64 65 73 /ahyatt/llm][llm]]:.llm.provides
10340 20 61 20 75 6e 69 66 6f 72 6d 20 41 50 49 20 61 63 72 6f 73 73 20 6c 61 6e 67 75 61 67 65 20 6d .a.uniform.API.across.language.m
10360 6f 64 65 6c 20 70 72 6f 76 69 64 65 72 73 20 66 6f 72 20 62 75 69 6c 64 69 6e 67 20 4c 4c 4d 20 odel.providers.for.building.LLM.
10380 63 6c 69 65 6e 74 73 20 69 6e 20 45 6d 61 63 73 2c 20 61 6e 64 20 69 73 20 69 6e 74 65 6e 64 65 clients.in.Emacs,.and.is.intende
103a0 64 20 61 73 20 61 20 6c 69 62 72 61 72 79 20 66 6f 72 20 75 73 65 20 62 79 20 70 61 63 6b 61 67 d.as.a.library.for.use.by.packag
103c0 65 20 61 75 74 68 6f 72 73 2e 20 20 46 6f 72 20 73 69 6d 69 6c 61 72 20 73 63 72 69 70 74 69 6e e.authors...For.similar.scriptin
103e0 67 20 70 75 72 70 6f 73 65 73 2c 20 67 70 74 65 6c 20 70 72 6f 76 69 64 65 73 20 74 68 65 20 63 g.purposes,.gptel.provides.the.c
10400 6f 6d 6d 61 6e 64 20 3d 67 70 74 65 6c 2d 72 65 71 75 65 73 74 3d 2c 20 77 68 69 63 68 20 73 65 ommand.=gptel-request=,.which.se
10420 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 2f 73 2d 6b 6f 73 74 e..-.[[https://github.com/s-kost
10440 79 61 65 76 2f 65 6c 6c 61 6d 61 5d 5b 45 6c 6c 61 6d 61 5d 5d 3a 20 41 20 66 75 6c 6c 2d 66 6c yaev/ellama][Ellama]]:.A.full-fl
10460 65 64 67 65 64 20 4c 4c 4d 20 63 6c 69 65 6e 74 20 62 75 69 6c 74 20 6f 6e 20 6c 6c 6d 2c 20 74 edged.LLM.client.built.on.llm,.t
10480 68 61 74 20 73 75 70 70 6f 72 74 73 20 6d 61 6e 79 20 4c 4c 4d 20 70 72 6f 76 69 64 65 72 73 20 hat.supports.many.LLM.providers.
104a0 28 4f 6c 6c 61 6d 61 2c 20 4f 70 65 6e 20 41 49 2c 20 56 65 72 74 65 78 2c 20 47 50 54 34 41 6c (Ollama,.Open.AI,.Vertex,.GPT4Al
104c0 6c 20 61 6e 64 20 6d 6f 72 65 29 2e 20 20 49 74 73 20 75 73 61 67 65 20 64 69 66 66 65 72 73 20 l.and.more)...Its.usage.differs.
104e0 66 72 6f 6d 20 67 70 74 65 6c 20 69 6e 20 74 68 61 74 20 69 74 20 70 72 6f 76 69 64 65 73 20 73 from.gptel.in.that.it.provides.s
10500 65 70 61 72 61 74 65 20 63 6f 6d 6d 61 6e 64 73 20 66 6f 72 20 64 6f 7a 65 6e 73 20 6f 66 20 63 eparate.commands.for.dozens.of.c
10520 6f 6d 6d 6f 6e 20 74 61 73 6b 73 2c 20 6c 69 6b 65 20 67 65 6e 65 72 61 6c 20 63 68 61 74 2c 20 ommon.tasks,.like.general.chat,.
10540 73 75 6d 6d 61 72 69 7a 69 6e 67 20 63 6f 64 65 2f 74 65 78 74 2c 20 72 65 66 61 63 74 6f 72 69 summarizing.code/text,.refactori
10560 6e 67 20 63 6f 64 65 2c 20 69 6d 70 72 6f 76 69 6e 67 20 67 72 61 6d 6d 61 72 2c 20 74 72 61 6e ng.code,.improving.grammar,.tran
10580 73 6c 61 74 69 6f 6e 20 61 6e 64 20 73 6f 20 6f 6e 2e 0a 2d 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 slation.and.so.on..-.[[https://g
105a0 69 74 68 75 62 2e 63 6f 6d 2f 78 65 6e 6f 64 69 75 6d 2f 63 68 61 74 67 70 74 2d 73 68 65 6c 6c ithub.com/xenodium/chatgpt-shell
105c0 5d 5b 63 68 61 74 67 70 74 2d 73 68 65 6c 6c 5d 5d 3a 20 63 6f 6d 69 6e 74 2d 73 68 65 6c 6c 20 ][chatgpt-shell]]:.comint-shell.
105e0 62 61 73 65 64 20 69 6e 74 65 72 61 63 74 69 6f 6e 20 77 69 74 68 20 43 68 61 74 47 50 54 2e 20 based.interaction.with.ChatGPT..
10600 20 41 6c 73 6f 20 73 75 70 70 6f 72 74 73 20 44 41 4c 4c 2d 45 2c 20 65 78 65 63 75 74 61 62 6c .Also.supports.DALL-E,.executabl
10620 65 20 63 6f 64 65 20 62 6c 6f 63 6b 73 20 69 6e 20 74 68 65 20 72 65 73 70 6f 6e 73 65 73 2c 20 e.code.blocks.in.the.responses,.
10640 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
10660 2f 72 6b 73 6d 2f 6f 72 67 2d 61 69 5d 5b 6f 72 67 2d 61 69 5d 5d 3a 20 49 6e 74 65 72 61 63 74 /rksm/org-ai][org-ai]]:.Interact
10680 69 6f 6e 20 74 68 72 6f 75 67 68 20 73 70 65 63 69 61 6c 20 3d 23 2b 62 65 67 69 6e 5f 61 69 20 ion.through.special.=#+begin_ai.
106a0 2e 2e 2e 20 23 2b 65 6e 64 5f 61 69 3d 20 4f 72 67 2d 6d 6f 64 65 20 62 6c 6f 63 6b 73 2e 20 20 ....#+end_ai=.Org-mode.blocks...
106c0 41 6c 73 6f 20 73 75 70 70 6f 72 74 73 20 44 41 4c 4c 2d 45 2c 20 71 75 65 72 79 69 6e 67 20 43 Also.supports.DALL-E,.querying.C
106e0 68 61 74 47 50 54 20 77 69 74 68 20 74 68 65 20 63 6f 6e 74 65 6e 74 73 20 6f 66 20 70 72 6f 6a hatGPT.with.the.contents.of.proj
10700 65 63 74 20 66 69 6c 65 73 2c 20 61 6e 64 20 6d 6f 72 65 2e 0a 0a 54 68 65 72 65 20 61 72 65 20 ect.files,.and.more...There.are.
10720 73 65 76 65 72 61 6c 20 6d 6f 72 65 3a 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 several.more:.[[https://github.c
10740 6f 6d 2f 4d 69 63 68 61 65 6c 42 75 72 67 65 2f 6c 65 61 66 79 2d 6d 6f 64 65 5d 5b 6c 65 61 66 om/MichaelBurge/leafy-mode][leaf
10760 79 2d 6d 6f 64 65 5d 5d 2c 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 69 y-mode]],.[[https://github.com/i
10780 77 61 68 62 65 2f 63 68 61 74 2e 65 6c 5d 5b 63 68 61 74 2e 65 6c 5d 5d 2c 20 5b 5b 68 74 74 70 wahbe/chat.el][chat.el]],.[[http
107a0 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 73 74 75 68 6c 6d 75 65 6c 6c 65 72 2f 67 70 74 2e s://github.com/stuhlmueller/gpt.
107c0 65 6c 5d 5b 67 70 74 2e 65 6c 5d 5d 2c 20 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e el][gpt.el]],..[[https://github.
107e0 63 6f 6d 2f 41 6e 73 65 6c 6d 43 2f 6c 65 2d 67 70 74 2e 65 6c 5d 5b 6c 65 2d 67 70 74 5d 5d 2c com/AnselmC/le-gpt.el][le-gpt]],
10800 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 73 74 65 76 65 6d 6f 6c 69 74 .[[https://github.com/stevemolit
10820 6f 72 2f 72 6f 62 62 79 5d 5b 72 6f 62 62 79 5d 5d 2e 0a 0a 2a 2a 2a 20 50 61 63 6b 61 67 65 73 or/robby][robby]]...***.Packages
10840 20 75 73 69 6e 67 20 67 70 74 65 6c 0a 0a 67 70 74 65 6c 20 69 73 20 61 20 67 65 6e 65 72 61 6c .using.gptel..gptel.is.a.general
10860 2d 70 75 72 70 6f 73 65 20 70 61 63 6b 61 67 65 20 66 6f 72 20 63 68 61 74 20 61 6e 64 20 61 64 -purpose.package.for.chat.and.ad
10880 2d 68 6f 63 20 4c 4c 4d 20 69 6e 74 65 72 61 63 74 69 6f 6e 2e 20 20 54 68 65 20 66 6f 6c 6c 6f -hoc.LLM.interaction...The.follo
108a0 77 69 6e 67 20 70 61 63 6b 61 67 65 73 20 75 73 65 20 67 70 74 65 6c 20 74 6f 20 70 72 6f 76 69 wing.packages.use.gptel.to.provi
108c0 64 65 20 61 64 64 69 74 69 6f 6e 61 6c 20 6f 72 20 73 70 65 63 69 61 6c 69 7a 65 64 20 66 75 6e de.additional.or.specialized.fun
108e0 63 74 69 6f 6e 61 6c 69 74 79 3a 0a 0a 2d 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e ctionality:..-.[[https://github.
10900 63 6f 6d 2f 6b 61 72 74 68 69 6e 6b 2f 67 70 74 65 6c 2d 71 75 69 63 6b 5d 5b 67 70 74 65 6c 2d com/karthink/gptel-quick][gptel-
10920 71 75 69 63 6b 5d 5d 3a 20 51 75 69 63 6b 6c 79 20 6c 6f 6f 6b 20 75 70 20 74 68 65 20 72 65 67 quick]]:.Quickly.look.up.the.reg
10940 69 6f 6e 20 6f 72 20 74 65 78 74 20 61 74 20 70 6f 69 6e 74 2e 0a 2d 20 5b 5b 68 74 74 70 73 3a ion.or.text.at.point..-.[[https:
10960 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 64 61 65 64 73 69 64 6f 67 2f 65 76 65 64 65 6c 5d 5b 45 //github.com/daedsidog/evedel][E
10980 76 65 64 65 6c 5d 5d 3a 20 49 6e 73 74 72 75 63 74 65 64 20 4c 4c 4d 20 50 72 6f 67 72 61 6d 6d vedel]]:.Instructed.LLM.Programm
109a0 65 72 2f 41 73 73 69 73 74 61 6e 74 2e 0a 2d 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 er/Assistant..-.[[https://github
109c0 2e 63 6f 6d 2f 6c 61 6e 63 65 62 65 72 67 65 2f 65 6c 79 73 69 75 6d 5d 5b 45 6c 79 73 69 75 6d .com/lanceberge/elysium][Elysium
109e0 5d 5d 3a 20 41 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 61 70 70 6c 79 20 41 49 2d 67 65 6e 65 72 ]]:.Automatically.apply.AI-gener
10a00 61 74 65 64 20 63 68 61 6e 67 65 73 20 61 73 20 79 6f 75 20 63 6f 64 65 2e 0a 2d 20 5b 5b 68 74 ated.changes.as.you.code..-.[[ht
10a20 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6b 61 6d 75 73 68 61 64 65 6e 65 73 2f 61 69 tps://github.com/kamushadenes/ai
10a40 2d 62 6c 6f 67 2e 65 6c 5d 5b 61 69 2d 62 6c 6f 67 2e 65 6c 5d 5d 3a 20 53 74 72 65 61 6d 6c 69 -blog.el][ai-blog.el]]:.Streamli
10a60 6e 65 20 67 65 6e 65 72 61 74 69 6f 6e 20 6f 66 20 62 6c 6f 67 20 70 6f 73 74 73 20 69 6e 20 48 ne.generation.of.blog.posts.in.H
10a80 75 67 6f 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 6f 75 6f ugo..-.[[https://github.com/douo
10aa0 2f 6d 61 67 69 74 2d 67 70 74 63 6f 6d 6d 69 74 5d 5b 6d 61 67 69 74 2d 67 70 74 63 6f 6d 6d 69 /magit-gptcommit][magit-gptcommi
10ac0 74 5d 5d 3a 20 47 65 6e 65 72 61 74 65 20 43 6f 6d 6d 69 74 20 4d 65 73 73 61 67 65 73 20 77 69 t]]:.Generate.Commit.Messages.wi
10ae0 74 68 69 6e 20 6d 61 67 69 74 2d 73 74 61 74 75 73 20 42 75 66 66 65 72 20 75 73 69 6e 67 20 67 thin.magit-status.Buffer.using.g
10b00 70 74 65 6c 2e 0a 2d 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 61 72 6d ptel..-.[[https://github.com/arm
10b20 69 6e 64 61 72 76 69 73 68 2f 63 6f 6e 73 75 6c 74 2d 6f 6d 6e 69 5d 5b 63 6f 6e 73 75 6c 74 2d indarvish/consult-omni][consult-
10b40 6f 6d 6e 69 5d 5d 3a 20 56 65 72 73 61 74 69 6c 65 20 6d 75 6c 74 69 2d 73 6f 75 72 63 65 20 73 omni]]:.Versatile.multi-source.s
10b60 65 61 72 63 68 20 70 61 63 6b 61 67 65 2e 20 20 49 74 20 69 6e 63 6c 75 64 65 73 20 67 70 74 65 earch.package...It.includes.gpte
10b80 6c 20 61 73 20 6f 6e 65 20 6f 66 20 69 74 73 20 6d 61 6e 79 20 73 6f 75 72 63 65 73 2e 0a 2d 20 l.as.one.of.its.many.sources..-.
10ba0 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 75 6c 74 72 6f 6e 6f 7a 6d 2f 61 [[https://github.com/ultronozm/a
10bc0 69 2d 6f 72 67 2d 63 68 61 74 2e 65 6c 5d 5b 61 69 2d 6f 72 67 2d 63 68 61 74 5d 5d 3a 20 50 72 i-org-chat.el][ai-org-chat]]:.Pr
10be0 6f 76 69 64 65 73 20 62 72 61 6e 63 68 69 6e 67 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 73 20 69 ovides.branching.conversations.i
10c00 6e 20 4f 72 67 20 62 75 66 66 65 72 73 20 75 73 69 6e 67 20 67 70 74 65 6c 2e 20 20 28 4e 6f 74 n.Org.buffers.using.gptel...(Not
10c20 65 20 74 68 61 74 20 67 70 74 65 6c 20 69 6e 63 6c 75 64 65 73 20 74 68 69 73 20 66 65 61 74 75 e.that.gptel.includes.this.featu
10c40 72 65 20 61 73 20 77 65 6c 6c 20 28 73 65 65 20 3d 67 70 74 65 6c 2d 6f 72 67 2d 62 72 61 6e 63 re.as.well.(see.=gptel-org-branc
10c60 68 69 6e 67 2d 63 6f 6e 74 65 78 74 3d 29 2c 20 62 75 74 20 72 65 71 75 69 72 65 73 20 61 20 72 hing-context=),.but.requires.a.r
10c80 65 63 65 6e 74 20 76 65 72 73 69 6f 6e 20 6f 66 20 4f 72 67 20 6d 6f 64 65 20 39 2e 37 20 6f 72 ecent.version.of.Org.mode.9.7.or
10ca0 20 6c 61 74 65 72 20 74 6f 20 62 65 20 69 6e 73 74 61 6c 6c 65 64 2e 29 0a 2d 20 5b 5b 68 74 74 .later.to.be.installed.).-.[[htt
10cc0 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 72 6f 62 31 33 37 2f 43 6f 72 73 61 69 72 5d 5b ps://github.com/rob137/Corsair][
10ce0 43 6f 72 73 61 69 72 5d 5d 3a 20 48 65 6c 70 73 20 67 61 74 68 65 72 20 74 65 78 74 20 74 6f 20 Corsair]]:.Helps.gather.text.to.
10d00 70 6f 70 75 6c 61 74 65 20 4c 4c 4d 20 70 72 6f 6d 70 74 73 20 66 6f 72 20 67 70 74 65 6c 2e 0a populate.LLM.prompts.for.gptel..
10d20 0a 2a 2a 20 43 4f 4d 4d 45 4e 54 20 4f 6c 64 65 72 20 42 72 65 61 6b 69 6e 67 20 43 68 61 6e 67 .**.COMMENT.Older.Breaking.Chang
10d40 65 73 0a 0a 2d 20 3d 67 70 74 65 6c 2d 70 6f 73 74 2d 72 65 73 70 6f 6e 73 65 2d 68 6f 6f 6b 3d es..-.=gptel-post-response-hook=
10d60 20 68 61 73 20 62 65 65 6e 20 72 65 6e 61 6d 65 64 20 74 6f 20 3d 67 70 74 65 6c 2d 70 6f 73 74 .has.been.renamed.to.=gptel-post
10d80 2d 72 65 73 70 6f 6e 73 65 2d 66 75 6e 63 74 69 6f 6e 73 3d 2c 20 61 6e 64 20 66 75 6e 63 74 69 -response-functions=,.and.functi
10da0 6f 6e 73 20 69 6e 20 74 68 69 73 20 68 6f 6f 6b 20 61 72 65 20 6e 6f 77 20 63 61 6c 6c 65 64 20 ons.in.this.hook.are.now.called.
10dc0 77 69 74 68 20 74 77 6f 20 61 72 67 75 6d 65 6e 74 73 3a 20 74 68 65 20 73 74 61 72 74 20 61 6e with.two.arguments:.the.start.an
10de0 64 20 65 6e 64 20 62 75 66 66 65 72 20 70 6f 73 69 74 69 6f 6e 73 20 6f 66 20 74 68 65 20 72 65 d.end.buffer.positions.of.the.re
10e00 73 70 6f 6e 73 65 2e 20 20 54 68 69 73 20 73 68 6f 75 6c 64 20 6d 61 6b 65 20 69 74 20 65 61 73 sponse...This.should.make.it.eas
10e20 79 20 74 6f 20 61 63 74 20 6f 6e 20 74 68 65 20 72 65 73 70 6f 6e 73 65 20 74 65 78 74 20 77 69 y.to.act.on.the.response.text.wi
10e40 74 68 6f 75 74 20 68 61 76 69 6e 67 20 74 6f 20 6c 6f 63 61 74 65 20 69 74 20 66 69 72 73 74 2e thout.having.to.locate.it.first.
10e60 0a 0a 2d 20 50 6f 73 73 69 62 6c 65 20 62 72 65 61 6b 61 67 65 2c 20 73 65 65 20 23 31 32 30 3a ..-.Possible.breakage,.see.#120:
10e80 20 49 66 20 73 74 72 65 61 6d 69 6e 67 20 72 65 73 70 6f 6e 73 65 73 20 73 74 6f 70 20 77 6f 72 .If.streaming.responses.stop.wor
10ea0 6b 69 6e 67 20 66 6f 72 20 79 6f 75 20 61 66 74 65 72 20 75 70 67 72 61 64 69 6e 67 20 74 6f 20 king.for.you.after.upgrading.to.
10ec0 76 30 2e 35 2c 20 74 72 79 20 72 65 69 6e 73 74 61 6c 6c 69 6e 67 20 67 70 74 65 6c 20 61 6e 64 v0.5,.try.reinstalling.gptel.and
10ee0 20 64 65 6c 65 74 69 6e 67 20 69 74 73 20 6e 61 74 69 76 65 20 63 6f 6d 70 20 65 6c 6e 20 63 61 .deleting.its.native.comp.eln.ca
10f00 63 68 65 20 69 6e 20 3d 6e 61 74 69 76 65 2d 63 6f 6d 70 2d 65 6c 6e 2d 6c 6f 61 64 2d 70 61 74 che.in.=native-comp-eln-load-pat
10f20 68 3d 2e 0a 0a 2d 20 54 68 65 20 75 73 65 72 20 6f 70 74 69 6f 6e 20 3d 67 70 74 65 6c 2d 68 6f h=...-.The.user.option.=gptel-ho
10f40 73 74 3d 20 69 73 20 64 65 70 72 65 63 61 74 65 64 2e 20 20 49 66 20 74 68 65 20 64 65 66 61 75 st=.is.deprecated...If.the.defau
10f60 6c 74 73 20 64 6f 6e 27 74 20 77 6f 72 6b 20 66 6f 72 20 79 6f 75 2c 20 75 73 65 20 3d 67 70 74 lts.don't.work.for.you,.use.=gpt
10f80 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 3d 20 28 77 68 69 63 68 20 73 65 65 29 20 74 6f 20 63 el-make-openai=.(which.see).to.c
10fa0 75 73 74 6f 6d 69 7a 65 20 73 65 72 76 65 72 20 73 65 74 74 69 6e 67 73 2e 0a 0a 2d 20 3d 67 70 ustomize.server.settings...-.=gp
10fc0 74 65 6c 2d 61 70 69 2d 6b 65 79 2d 66 72 6f 6d 2d 61 75 74 68 2d 73 6f 75 72 63 65 3d 20 6e 6f tel-api-key-from-auth-source=.no
10fe0 77 20 73 65 61 72 63 68 65 73 20 66 6f 72 20 74 68 65 20 41 50 49 20 6b 65 79 20 75 73 69 6e 67 w.searches.for.the.API.key.using
11000 20 74 68 65 20 68 6f 73 74 20 61 64 64 72 65 73 73 20 66 6f 72 20 74 68 65 20 61 63 74 69 76 65 .the.host.address.for.the.active
11020 20 4c 4c 4d 20 62 61 63 6b 65 6e 64 2c 20 2f 69 2e 65 2e 2f 20 22 61 70 69 2e 6f 70 65 6e 61 69 .LLM.backend,./i.e./."api.openai
11040 2e 63 6f 6d 22 20 77 68 65 6e 20 75 73 69 6e 67 20 43 68 61 74 47 50 54 2e 20 20 59 6f 75 20 6d .com".when.using.ChatGPT...You.m
11060 61 79 20 6e 65 65 64 20 74 6f 20 75 70 64 61 74 65 20 79 6f 75 72 20 3d 7e 2f 2e 61 75 74 68 69 ay.need.to.update.your.=~/.authi
11080 6e 66 6f 3d 2e 0a 0a 2a 2a 20 41 63 6b 6e 6f 77 6c 65 64 67 6d 65 6e 74 73 0a 0a 2d 20 5b 5b 68 nfo=...**.Acknowledgments..-.[[h
110a0 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 20 ttps://github.com/pabl0][Henrik.
110c0 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 61 Ahlgren]].for.a.keen.eye.to.deta
110e0 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 73 il.and.polish.applied.to.gptel's
11100 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 6f 73 69 .UI..-.[[https://github.com/posi
11120 74 72 6f 6e 2d 73 6f 6c 75 74 69 6f 6e 73 2f 5d 5b 50 6f 73 69 74 72 6f 6e 20 53 6f 6c 75 74 69 tron-solutions/][Positron.Soluti
11140 6f 6e 73 5d 5d 20 66 6f 72 20 65 78 74 65 6e 73 69 76 65 20 74 65 73 74 69 6e 67 20 6f 66 20 74 ons]].for.extensive.testing.of.t
11160 68 65 20 74 6f 6f 6c 20 75 73 65 20 66 65 61 74 75 72 65 20 61 6e 64 20 74 68 65 20 64 65 73 69 he.tool.use.feature.and.the.desi
11180 67 6e 20 6f 66 20 67 70 74 65 6c 27 73 20 69 6e 2d 62 75 66 66 65 72 20 74 6f 6f 6c 20 75 73 65 gn.of.gptel's.in-buffer.tool.use
111a0 20 72 65 63 6f 72 64 73 2e 0a 2d 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d .records..-.[[https://github.com
111c0 2f 6a 64 74 73 6d 69 74 68 5d 5b 4a 44 20 53 6d 69 74 68 5d 5d 20 66 6f 72 20 66 65 65 64 62 61 /jdtsmith][JD.Smith]].for.feedba
111e0 63 6b 20 61 6e 64 20 63 6f 64 65 20 61 73 73 69 73 74 61 6e 63 65 20 77 69 74 68 20 67 70 74 65 ck.and.code.assistance.with.gpte
11200 6c 2d 6d 65 6e 75 27 73 20 72 65 64 65 73 69 67 6e 0a 2d 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 l-menu's.redesign.-.[[https://gi
11220 74 68 75 62 2e 63 6f 6d 2f 6d 65 61 69 6e 5d 5b 41 62 69 6e 20 53 69 6d 6f 6e 5d 5d 20 66 6f 72 thub.com/meain][Abin.Simon]].for
11240 20 65 78 74 65 6e 73 69 76 65 20 66 65 65 64 62 61 63 6b 20 6f 6e 20 69 6d 70 72 6f 76 69 6e 67 .extensive.feedback.on.improving
11260 20 67 70 74 65 6c 27 73 20 64 69 72 65 63 74 69 76 65 73 20 61 6e 64 20 55 49 2e 0a 2d 20 5b 5b .gptel's.directives.and.UI..-.[[
11280 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 61 6c 67 61 6c 5d 5b 41 6c 65 78 69 73 https://github.com/algal][Alexis
112a0 20 47 61 6c 6c 61 67 68 65 72 5d 5d 20 61 6e 64 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 .Gallagher]].and.[[https://githu
112c0 62 2e 63 6f 6d 2f 64 31 65 67 6f 61 7a 5d 5b 44 69 65 67 6f 20 41 6c 76 61 72 65 7a 5d 5d 20 66 b.com/d1egoaz][Diego.Alvarez]].f
112e0 6f 72 20 66 69 78 69 6e 67 20 61 20 6e 61 73 74 79 20 6d 75 6c 74 69 2d 62 79 74 65 20 62 75 67 or.fixing.a.nasty.multi-byte.bug
11300 20 77 69 74 68 20 3d 75 72 6c 2d 72 65 74 72 69 65 76 65 3d 2e 0a 2d 20 5b 5b 68 74 74 70 73 3a .with.=url-retrieve=..-.[[https:
11320 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 74 61 72 73 69 75 73 5d 5b 4a 6f 6e 61 73 20 42 65 72 6e //github.com/tarsius][Jonas.Bern
11340 6f 75 6c 6c 69 5d 5d 20 66 6f 72 20 74 68 65 20 54 72 61 6e 73 69 65 6e 74 20 6c 69 62 72 61 72 oulli]].for.the.Transient.librar
11360 79 2e 0a 2d 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 64 61 65 64 73 69 y..-.[[https://github.com/daedsi
11380 64 6f 67 5d 5b 64 61 65 64 73 69 64 6f 67 5d 5d 20 66 6f 72 20 61 64 64 69 6e 67 20 63 6f 6e 74 dog][daedsidog]].for.adding.cont
113a0 65 78 74 20 73 75 70 70 6f 72 74 20 74 6f 20 67 70 74 65 6c 2e 0a 2d 20 5b 5b 68 74 74 70 73 3a ext.support.to.gptel..-.[[https:
113c0 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 41 71 75 61 6e 31 34 31 32 5d 5b 41 71 75 61 6e 31 34 31 //github.com/Aquan1412][Aquan141
113e0 32 5d 5d 20 66 6f 72 20 61 64 64 69 6e 67 20 50 72 69 76 61 74 65 47 50 54 20 73 75 70 70 6f 72 2]].for.adding.PrivateGPT.suppor
11400 74 20 74 6f 20 67 70 74 65 6c 2e 0a 2d 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 t.to.gptel..-.[[https://github.c
11420 6f 6d 2f 72 30 6d 61 6e 5d 5b 72 30 6d 61 6e 5d 5d 20 66 6f 72 20 69 6d 70 72 6f 76 69 6e 67 20 om/r0man][r0man]].for.improving.
11440 67 70 74 65 6c 27 73 20 43 75 72 6c 20 69 6e 74 65 67 72 61 74 69 6f 6e 2e 0a 0a 23 20 4c 6f 63 gptel's.Curl.integration...#.Loc
11460 61 6c 20 56 61 72 69 61 62 6c 65 73 3a 0a 23 20 74 6f 63 2d 6f 72 67 2d 6d 61 78 2d 64 65 70 74 al.Variables:.#.toc-org-max-dept
11480 68 3a 20 34 0a 23 20 65 76 61 6c 3a 20 28 61 6e 64 20 28 66 62 6f 75 6e 64 70 20 27 74 6f 63 2d h:.4.#.eval:.(and.(fboundp.'toc-
114a0 6f 72 67 2d 6d 6f 64 65 29 20 28 74 6f 63 2d 6f 72 67 2d 6d 6f 64 65 20 31 29 29 0a 23 20 45 6e org-mode).(toc-org-mode.1)).#.En
114c0 64 3a 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d:..............................
114e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
115a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
115c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
115e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11600 67 70 74 65 6c 2d 30 2e 39 2e 38 2f 67 70 74 65 6c 2d 6b 61 67 69 2e 65 6c 00 00 00 00 00 00 00 gptel-0.9.8/gptel-kagi.el.......
11620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11660 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
11680 30 30 31 37 31 36 33 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 33 36 36 30 00 20 30 00 00 00 0017163.00000000000.013660..0...
116a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
116c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
116e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11700 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...................
11720 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...................
11740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
117a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
117c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
117e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11800 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
11820 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
11840 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
11860 30 32 33 20 20 4b 61 72 74 68 69 6b 20 43 68 69 6b 6d 61 67 61 6c 75 72 0a 0a 3b 3b 20 41 75 74 023..Karthik.Chikmagalur..;;.Aut
11880 68 6f 72 3a 20 4b 61 72 74 68 69 6b 20 43 68 69 6b 6d 61 67 61 6c 75 72 20 3c 6b 61 72 74 68 69 hor:.Karthik.Chikmagalur.<karthi
118a0 6b 63 68 69 6b 6d 61 67 61 6c 75 72 40 67 6d 61 69 6c 2e 63 6f 6d 3e 0a 3b 3b 20 4b 65 79 77 6f kchikmagalur@gmail.com>.;;.Keywo
118c0 72 64 73 3a 20 68 79 70 65 72 6d 65 64 69 61 0a 0a 3b 3b 20 54 68 69 73 20 70 72 6f 67 72 61 6d rds:.hypermedia..;;.This.program
118e0 20 69 73 20 66 72 65 65 20 73 6f 66 74 77 61 72 65 3b 20 79 6f 75 20 63 61 6e 20 72 65 64 69 73 .is.free.software;.you.can.redis
11900 74 72 69 62 75 74 65 20 69 74 20 61 6e 64 2f 6f 72 20 6d 6f 64 69 66 79 0a 3b 3b 20 69 74 20 75 tribute.it.and/or.modify.;;.it.u
11920 6e 64 65 72 20 74 68 65 20 74 65 72 6d 73 20 6f 66 20 74 68 65 20 47 4e 55 20 47 65 6e 65 72 61 nder.the.terms.of.the.GNU.Genera
11940 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 61 73 20 70 75 62 6c 69 73 68 65 64 20 62 79 l.Public.License.as.published.by
11960 0a 3b 3b 20 74 68 65 20 46 72 65 65 20 53 6f 66 74 77 61 72 65 20 46 6f 75 6e 64 61 74 69 6f 6e .;;.the.Free.Software.Foundation
11980 2c 20 65 69 74 68 65 72 20 76 65 72 73 69 6f 6e 20 33 20 6f 66 20 74 68 65 20 4c 69 63 65 6e 73 ,.either.version.3.of.the.Licens
119a0 65 2c 20 6f 72 0a 3b 3b 20 28 61 74 20 79 6f 75 72 20 6f 70 74 69 6f 6e 29 20 61 6e 79 20 6c 61 e,.or.;;.(at.your.option).any.la
119c0 74 65 72 20 76 65 72 73 69 6f 6e 2e 0a 0a 3b 3b 20 54 68 69 73 20 70 72 6f 67 72 61 6d 20 69 73 ter.version...;;.This.program.is
119e0 20 64 69 73 74 72 69 62 75 74 65 64 20 69 6e 20 74 68 65 20 68 6f 70 65 20 74 68 61 74 20 69 74 .distributed.in.the.hope.that.it
11a00 20 77 69 6c 6c 20 62 65 20 75 73 65 66 75 6c 2c 0a 3b 3b 20 62 75 74 20 57 49 54 48 4f 55 54 20 .will.be.useful,.;;.but.WITHOUT.
11a20 41 4e 59 20 57 41 52 52 41 4e 54 59 3b 20 77 69 74 68 6f 75 74 20 65 76 65 6e 20 74 68 65 20 69 ANY.WARRANTY;.without.even.the.i
11a40 6d 70 6c 69 65 64 20 77 61 72 72 61 6e 74 79 20 6f 66 0a 3b 3b 20 4d 45 52 43 48 41 4e 54 41 42 mplied.warranty.of.;;.MERCHANTAB
11a60 49 4c 49 54 59 20 6f 72 20 46 49 54 4e 45 53 53 20 46 4f 52 20 41 20 50 41 52 54 49 43 55 4c 41 ILITY.or.FITNESS.FOR.A.PARTICULA
11a80 52 20 50 55 52 50 4f 53 45 2e 20 20 53 65 65 20 74 68 65 0a 3b 3b 20 47 4e 55 20 47 65 6e 65 72 R.PURPOSE...See.the.;;.GNU.Gener
11aa0 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 66 6f 72 20 6d 6f 72 65 20 64 65 74 61 69 al.Public.License.for.more.detai
11ac0 6c 73 2e 0a 0a 3b 3b 20 59 6f 75 20 73 68 6f 75 6c 64 20 68 61 76 65 20 72 65 63 65 69 76 65 64 ls...;;.You.should.have.received
11ae0 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 .a.copy.of.the.GNU.General.Publi
11b00 63 20 4c 69 63 65 6e 73 65 0a 3b 3b 20 61 6c 6f 6e 67 20 77 69 74 68 20 74 68 69 73 20 70 72 6f c.License.;;.along.with.this.pro
11b20 67 72 61 6d 2e 20 20 49 66 20 6e 6f 74 2c 20 73 65 65 20 3c 68 74 74 70 73 3a 2f 2f 77 77 77 2e gram...If.not,.see.<https://www.
11b40 67 6e 75 2e 6f 72 67 2f 6c 69 63 65 6e 73 65 73 2f 3e 2e 0a 0a 3b 3b 3b 20 43 6f 6d 6d 65 6e 74 gnu.org/licenses/>...;;;.Comment
11b60 61 72 79 3a 0a 0a 3b 3b 20 54 68 69 73 20 66 69 6c 65 20 61 64 64 73 20 73 75 70 70 6f 72 74 20 ary:..;;.This.file.adds.support.
11b80 66 6f 72 20 74 68 65 20 4b 61 67 69 20 46 61 73 74 47 50 54 20 4c 4c 4d 20 41 50 49 20 74 6f 20 for.the.Kagi.FastGPT.LLM.API.to.
11ba0 67 70 74 65 6c 0a 0a 3b 3b 3b 20 43 6f 64 65 3a 0a 28 72 65 71 75 69 72 65 20 27 67 70 74 65 6c gptel..;;;.Code:.(require.'gptel
11bc0 29 0a 28 72 65 71 75 69 72 65 20 27 63 6c 2d 67 65 6e 65 72 69 63 29 0a 28 65 76 61 6c 2d 77 68 ).(require.'cl-generic).(eval-wh
11be0 65 6e 2d 63 6f 6d 70 69 6c 65 0a 20 20 28 72 65 71 75 69 72 65 20 27 63 6c 2d 6c 69 62 29 29 0a en-compile...(require.'cl-lib)).
11c00 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
11c20 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 3b 20 4b 61 67 --wrap."gptel-context")..;;;.Kag
11c40 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 20 28 3a 63 6f i.(cl-defstruct.(gptel-kagi.(:co
11c60 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 0a 20 20 20 20 nstructor.gptel--make-kagi).....
11c80 20 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 ........................(:copier
11ca0 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .nil)...........................
11cc0 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 28 63 ..(:include.gptel-backend)))..(c
11ce0 6c 2d 64 65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 72 65 73 70 6f 6e 73 l-defmethod.gptel--parse-respons
11d00 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 73 70 6f 6e 73 e.((_backend.gptel-kagi).respons
11d20 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 73 74 2d 67 65 e.info)...(let*.((data.(plist-ge
11d40 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 20 28 6f 75 74 t.response.:data))..........(out
11d60 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 29 29 0a 20 20 put.(plist-get.data.:output))...
11d80 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 65 74 20 64 61 .......(references.(plist-get.da
11da0 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 65 71 20 72 65 ta.:references))).....(if.(eq.re
11dc0 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 65 6e 63 65 73 ferences.:null).(setq.references
11de0 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 6e 75 6c 6c 29 .nil)).....(if.(eq.output.:null)
11e00 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 65 6e 20 72 65 .(setq.output.nil)).....(when.re
11e20 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 6e 63 65 73 0a ferences.......(setq.references.
11e40 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 69 6e 6b 65 72 ............(cl-loop.with.linker
11e60 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 61 73 65 20 28 .=......................(pcase.(
11e80 62 75 66 66 65 72 2d 6c 6f 63 61 6c 2d 76 61 6c 75 65 20 27 6d 61 6a 6f 72 2d 6d 6f 64 65 0a 20 buffer-local-value.'major-mode..
11ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
11ec0 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 3a ...............(plist-get.info.:
11ee0 62 75 66 66 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 buffer))........................
11f00 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 20 20 20 20 20 ('org-mode......................
11f20 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 20 20 20 20 20 ...(lambda.(text.url)...........
11f40 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 25 73 5d 5b 25 ................(format."[[%s][%
11f60 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 20 20 20 20 20 s]]".url.text)))................
11f80 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 20 20 20 20 20 ........('markdown-mode.........
11fa0 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 78 74 20 75 72 ................(lambda.(text.ur
11fc0 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 28 66 6f l)...........................(fo
11fe0 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 0a 20 20 20 20 rmat."[%s](%s)".text.url))).....
12000 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 64 61 20 28 74 ...................(_.(lambda.(t
12020 65 78 74 20 75 72 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ext.url)........................
12040 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 20 20 .....(buttonize.................
12060 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 64 61 74 61 29 .............text.(lambda.(data)
12080 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 20 20 20 20 20 .(browse-url.data)).............
120a0 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 20 20 20 20 20 .................url))))........
120c0 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 73 20 72 65 66 ..............for.ref.across.ref
120e0 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 20 20 66 6f 72 erences......................for
12100 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 74 6c 65 29 0a .title.=.(plist-get.ref.:title).
12120 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 69 70 70 65 74 .....................for.snippet
12140 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 0a 20 20 20 20 .=.(plist-get.ref.:snippet).....
12160 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 28 70 6c 69 73 .................for.url.=.(plis
12180 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 20 20 20 20 20 t-get.ref.:url).................
121a0 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 20 20 20 20 20 .....for.n.upfrom.1.............
121c0 20 20 20 20 20 20 20 20 20 63 6f 6c 6c 65 63 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .........collect................
121e0 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 20 22 20 6e 29 ......(concat.(format."[%d].".n)
12200 0a 20 20 20 20 20 20 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
12220 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 20 22 0a 20 20 uncall.linker.title.url).":."...
12240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 70 6c ...........................(repl
12260 61 63 65 2d 72 65 67 65 78 70 2d 69 6e 2d 73 74 72 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 ace-regexp-in-string............
12280 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 22 2a 22 20 73 ..................."</?b>"."*".s
122a0 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 20 20 20 69 6e nippet))......................in
122c0 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 20 20 20 20 20 to.ref-strings..................
122e0 20 20 20 20 66 69 6e 61 6c 6c 79 20 72 65 74 75 72 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ....finally.return..............
12300 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 63 6f 6e 63 61 ........(concat."\n\n".(mapconca
12320 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 6e 22 29 29 29 t.#'identity.ref-strings."\n")))
12340 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 65 6e 63 65 73 )).....(concat.output.references
12360 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 20 62 61 63 6b )))..;;.TODO:.Add.model.and.back
12380 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 20 73 75 70 70 end-specific.request-params.supp
123a0 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 71 75 65 73 74 ort.(cl-defmethod.gptel--request
123c0 2d 64 61 74 61 20 28 28 5f 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 6b 61 67 69 29 20 70 72 6f -data.((_backend.gptel-kagi).pro
123e0 6d 70 74 73 29 0a 20 20 22 4a 53 4f 4e 20 65 6e 63 6f 64 65 20 50 52 4f 4d 50 54 53 20 66 6f 72 mpts)..."JSON.encode.PROMPTS.for
12400 20 4b 61 67 69 2e 22 0a 20 20 28 70 63 61 73 65 2d 65 78 68 61 75 73 74 69 76 65 20 28 67 70 74 .Kagi."...(pcase-exhaustive.(gpt
12420 65 6c 2d 2d 6d 6f 64 65 6c 2d 6e 61 6d 65 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 29 0a 20 20 20 20 el--model-name.gptel-model).....
12440 28 22 66 61 73 74 67 70 74 22 0a 20 20 20 20 20 60 28 2c 40 70 72 6f 6d 70 74 73 20 3a 77 65 62 ("fastgpt"......`(,@prompts.:web
12460 5f 73 65 61 72 63 68 20 74 20 3a 63 61 63 68 65 20 74 29 29 0a 20 20 20 20 28 28 61 6e 64 20 6d _search.t.:cache.t)).....((and.m
12480 6f 64 65 6c 20 28 67 75 61 72 64 20 28 73 74 72 69 6e 67 2d 70 72 65 66 69 78 2d 70 20 22 73 75 odel.(guard.(string-prefix-p."su
124a0 6d 6d 61 72 69 7a 65 22 20 6d 6f 64 65 6c 29 29 29 0a 20 20 20 20 20 60 28 2c 40 70 72 6f 6d 70 mmarize".model)))......`(,@promp
124c0 74 73 20 3a 65 6e 67 69 6e 65 20 2c 28 73 75 62 73 74 72 69 6e 67 20 6d 6f 64 65 6c 20 31 30 29 ts.:engine.,(substring.model.10)
124e0 29 29 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 2d 70 61 72 73 65 ))))..(cl-defmethod.gptel--parse
12500 2d 62 75 66 66 65 72 20 28 28 5f 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 6b 61 67 69 29 20 26 -buffer.((_backend.gptel-kagi).&
12520 6f 70 74 69 6f 6e 61 6c 20 5f 6d 61 78 2d 65 6e 74 72 69 65 73 29 0a 20 20 28 6c 65 74 20 28 28 optional._max-entries)...(let.((
12540 75 72 6c 20 28 6f 72 20 28 74 68 69 6e 67 2d 61 74 2d 70 6f 69 6e 74 20 27 75 72 6c 29 0a 20 20 url.(or.(thing-at-point.'url)...
12560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 65 74 2d 74 65 78 74 2d 70 72 6f 70 65 72 74 ...............(get-text-propert
12580 79 20 28 70 6f 69 6e 74 29 20 27 73 68 72 2d 75 72 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 y.(point).'shr-url).............
125a0 20 20 20 20 20 28 67 65 74 2d 74 65 78 74 2d 70 72 6f 70 65 72 74 79 20 28 70 6f 69 6e 74 29 20 .....(get-text-property.(point).
125c0 27 69 6d 61 67 65 2d 75 72 6c 29 29 29 0a 20 20 20 20 20 20 20 20 3b 3b 20 28 66 69 6c 65 6e 61 'image-url))).........;;.(filena
125e0 6d 65 20 28 74 68 69 6e 67 2d 61 74 2d 70 6f 69 6e 74 20 27 65 78 69 73 74 69 6e 67 2d 66 69 6c me.(thing-at-point.'existing-fil
12600 65 6e 61 6d 65 29 29 20 3b 6e 6f 20 66 69 6c 65 20 75 70 6c 6f 61 64 20 73 75 70 70 6f 72 74 20 ename)).;no.file.upload.support.
12620 79 65 74 0a 20 20 20 20 20 20 20 20 28 70 72 6f 70 20 28 74 65 78 74 2d 70 72 6f 70 65 72 74 79 yet.........(prop.(text-property
12640 2d 73 65 61 72 63 68 2d 62 61 63 6b 77 61 72 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -search-backward................
12660 27 67 70 74 65 6c 20 27 72 65 73 70 6f 6e 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 'gptel.'response................
12680 28 77 68 65 6e 20 28 67 65 74 2d 63 68 61 72 2d 70 72 6f 70 65 72 74 79 20 28 6d 61 78 20 28 70 (when.(get-char-property.(max.(p
126a0 6f 69 6e 74 2d 6d 69 6e 29 20 28 31 2d 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 20 20 20 20 oint-min).(1-.(point))).........
126c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
126e0 27 67 70 74 65 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 29 29 29 29 0a 20 'gptel)..................t))))..
12700 20 20 20 28 69 66 20 28 61 6e 64 20 75 72 6c 20 28 73 74 72 69 6e 67 2d 70 72 65 66 69 78 2d 70 ...(if.(and.url.(string-prefix-p
12720 20 22 73 75 6d 6d 61 72 69 7a 65 22 20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 6e 61 6d 65 20 ."summarize".(gptel--model-name.
12740 67 70 74 65 6c 2d 6d 6f 64 65 6c 29 29 29 0a 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 3a 75 72 gptel-model))).........(list.:ur
12760 6c 20 75 72 6c 29 0a 20 20 20 20 20 20 28 69 66 20 28 61 6e 64 20 28 6f 72 20 67 70 74 65 6c 2d l.url).......(if.(and.(or.gptel-
12780 6d 6f 64 65 20 67 70 74 65 6c 2d 74 72 61 63 6b 2d 72 65 73 70 6f 6e 73 65 29 0a 20 20 20 20 20 mode.gptel-track-response)......
127a0 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 70 2d 6d 61 74 63 68 2d 70 20 70 72 6f 70 29 0a 20 20 ..........(prop-match-p.prop)...
127c0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 70 2d 6d 61 74 63 68 2d 76 61 6c 75 65 20 70 .............(prop-match-value.p
127e0 72 6f 70 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 75 73 65 72 2d 65 72 72 6f 72 20 22 4e 6f 20 rop))...........(user-error."No.
12800 75 73 65 72 20 70 72 6f 6d 70 74 20 66 6f 75 6e 64 21 22 29 0a 20 20 20 20 20 20 20 20 28 6c 65 user.prompt.found!").........(le
12820 74 20 28 28 70 72 6f 6d 70 74 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 t.((prompts................(if.(
12840 6f 72 20 67 70 74 65 6c 2d 6d 6f 64 65 20 67 70 74 65 6c 2d 74 72 61 63 6b 2d 72 65 73 70 6f 6e or.gptel-mode.gptel-track-respon
12860 73 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 20 28 67 70 74 65 se)....................(or.(gpte
12880 6c 2d 2d 74 72 69 6d 2d 70 72 65 66 69 78 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 l--trim-prefixes................
128a0 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
128c0 6f 70 65 72 74 69 65 73 20 28 70 72 6f 70 2d 6d 61 74 63 68 2d 62 65 67 69 6e 6e 69 6e 67 20 70 operties.(prop-match-beginning.p
128e0 72 6f 70 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rop)............................
12900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 .............................(pr
12920 6f 70 2d 6d 61 74 63 68 2d 65 6e 64 20 70 72 6f 70 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 op-match-end.prop)))............
12940 20 20 20 20 20 20 20 20 20 20 20 20 22 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ............"").................
12960 20 28 73 74 72 69 6e 67 2d 74 72 69 6d 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 2d .(string-trim.(buffer-substring-
12980 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28 70 6f 69 6e 74 no-properties.(point-min).(point
129a0 2d 6d 61 78 29 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 63 61 73 65 2d 65 78 68 61 -max))))))...........(pcase-exha
129c0 75 73 74 69 76 65 20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 6e 61 6d 65 20 67 70 74 65 6c 2d ustive.(gptel--model-name.gptel-
129e0 6d 6f 64 65 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 22 66 61 73 74 67 70 74 22 20 28 73 model).............("fastgpt".(s
12a00 65 74 71 20 70 72 6f 6d 70 74 73 20 28 6c 69 73 74 20 3a 71 75 65 72 79 20 28 69 66 20 28 70 72 etq.prompts.(list.:query.(if.(pr
12a20 6f 70 2d 6d 61 74 63 68 2d 70 20 70 72 6f 70 29 20 70 72 6f 6d 70 74 73 20 22 22 29 29 29 29 0a op-match-p.prop).prompts."")))).
12a40 20 20 20 20 20 20 20 20 20 20 20 20 28 28 61 6e 64 20 6d 6f 64 65 6c 20 28 67 75 61 72 64 20 28 ............((and.model.(guard.(
12a60 73 74 72 69 6e 67 2d 70 72 65 66 69 78 2d 70 20 22 73 75 6d 6d 61 72 69 7a 65 22 20 6d 6f 64 65 string-prefix-p."summarize".mode
12a80 6c 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 49 66 20 74 68 65 20 65 6e 74 69 l)))..............;;.If.the.enti
12aa0 72 65 20 63 6f 6e 74 65 6e 74 73 20 6f 66 20 74 68 65 20 70 72 6f 6d 70 74 20 6c 6f 6f 6b 73 20 re.contents.of.the.prompt.looks.
12ac0 6c 69 6b 65 20 61 20 75 72 6c 2c 20 73 65 6e 64 20 74 68 65 20 75 72 6c 0a 20 20 20 20 20 20 20 like.a.url,.send.the.url........
12ae0 20 20 20 20 20 20 3b 3b 20 45 6c 73 65 20 73 65 6e 64 20 74 68 65 20 74 65 78 74 20 6f 66 20 74 ......;;.Else.send.the.text.of.t
12b00 68 65 20 72 65 67 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 70 72 6f he.region..............(setq.pro
12b20 6d 70 74 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 2d 6c 65 74 2a mpts....................(if-let*
12b40 20 28 28 28 70 72 6f 70 2d 6d 61 74 63 68 2d 70 20 70 72 6f 70 29 29 0a 20 20 20 20 20 20 20 20 .(((prop-match-p.prop)).........
12b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6e 67 69 6e 65 20 28 73 75 .....................(engine.(su
12b80 62 73 74 72 69 6e 67 20 6d 6f 64 65 6c 20 31 30 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 bstring.model.10))).............
12ba0 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 49 74 27 73 20 61 20 72 65 67 69 6f 6e 20 6f 66 20 74 ...........;;.It's.a.region.of.t
12bc0 65 78 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 ext........................(list
12be0 20 3a 74 65 78 74 20 70 72 6f 6d 70 74 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .:text.prompts).................
12c00 20 20 20 20 20 22 22 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 70 72 6f 6d 70 74 73 29 29 29 .....""))))...........prompts)))
12c20 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 2d 77 72 61 70 2d 75 73 ))..(cl-defmethod.gptel--wrap-us
12c40 65 72 2d 70 72 6f 6d 70 74 20 28 28 5f 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 6b 61 67 69 29 er-prompt.((_backend.gptel-kagi)
12c60 20 70 72 6f 6d 70 74 73 29 0a 20 20 28 63 6f 6e 64 0a 20 20 20 28 28 70 6c 69 73 74 2d 67 65 74 .prompts)...(cond....((plist-get
12c80 20 70 72 6f 6d 70 74 73 20 3a 75 72 6c 29 0a 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 49 67 6e .prompts.:url).....(message."Ign
12ca0 6f 72 69 6e 67 20 67 70 74 65 6c 20 63 6f 6e 74 65 78 74 20 66 6f 72 20 55 52 4c 20 73 75 6d 6d oring.gptel.context.for.URL.summ
12cc0 61 72 79 20 72 65 71 75 65 73 74 2e 22 29 29 0a 20 20 20 28 28 70 6c 69 73 74 2d 67 65 74 20 70 ary.request."))....((plist-get.p
12ce0 72 6f 6d 70 74 73 20 3a 71 75 65 72 79 29 0a 20 20 20 20 28 63 6c 2d 63 61 6c 6c 66 20 67 70 74 rompts.:query).....(cl-callf.gpt
12d00 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 6f 6d el-context--wrap.(plist-get.prom
12d20 70 74 73 20 3a 71 75 65 72 79 29 29 29 0a 20 20 20 28 28 70 6c 69 73 74 2d 67 65 74 20 70 72 6f pts.:query)))....((plist-get.pro
12d40 6d 70 74 73 20 3a 74 65 78 74 29 0a 20 20 20 20 28 63 6c 2d 63 61 6c 6c 66 20 67 70 74 65 6c 2d mpts.:text).....(cl-callf.gptel-
12d60 63 6f 6e 74 65 78 74 2d 2d 77 72 61 70 20 28 70 6c 69 73 74 2d 67 65 74 20 70 72 6f 6d 70 74 73 context--wrap.(plist-get.prompts
12d80 20 3a 74 65 78 74 29 29 29 29 29 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a 28 63 6c 2d .:text)))))..;;;###autoload.(cl-
12da0 64 65 66 75 6e 20 67 70 74 65 6c 2d 6d 61 6b 65 2d 6b 61 67 69 0a 20 20 20 20 28 6e 61 6d 65 20 defun.gptel-make-kagi.....(name.
12dc0 26 6b 65 79 20 63 75 72 6c 2d 61 72 67 73 20 73 74 72 65 61 6d 20 6b 65 79 0a 20 20 20 20 20 20 &key.curl-args.stream.key.......
12de0 20 20 20 20 28 68 6f 73 74 20 22 6b 61 67 69 2e 63 6f 6d 22 29 0a 20 20 20 20 20 20 20 20 20 20 ....(host."kagi.com")...........
12e00 28 68 65 61 64 65 72 20 28 6c 61 6d 62 64 61 20 28 29 20 60 28 28 22 41 75 74 68 6f 72 69 7a 61 (header.(lambda.().`(("Authoriza
12e20 74 69 6f 6e 22 20 2e 20 2c 28 63 6f 6e 63 61 74 20 22 42 6f 74 20 22 20 28 67 70 74 65 6c 2d 2d tion"...,(concat."Bot.".(gptel--
12e40 67 65 74 2d 61 70 69 2d 6b 65 79 29 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 get-api-key))))))...........(mod
12e60 65 6c 73 20 27 28 28 66 61 73 74 67 70 74 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 6e 6f els.'((fastgpt.:capabilities.(no
12e80 73 79 73 74 65 6d 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 75 system)).....................(su
12ea0 6d 6d 61 72 69 7a 65 3a 63 65 63 69 6c 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 6e 6f 73 mmarize:cecil.:capabilities.(nos
12ec0 79 73 74 65 6d 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 75 6d ystem)).....................(sum
12ee0 6d 61 72 69 7a 65 3a 61 67 6e 65 73 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 6e 6f 73 79 marize:agnes.:capabilities.(nosy
12f00 73 74 65 6d 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 75 6d 6d stem)).....................(summ
12f20 61 72 69 7a 65 3a 64 61 70 68 6e 65 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 6e 6f 73 79 arize:daphne.:capabilities.(nosy
12f40 73 74 65 6d 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 75 6d 6d stem)).....................(summ
12f60 61 72 69 7a 65 3a 6d 75 72 69 65 6c 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 6e 6f 73 79 arize:muriel.:capabilities.(nosy
12f80 73 74 65 6d 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 74 6f 63 6f 6c 20 22 68 74 stem))))...........(protocol."ht
12fa0 74 70 73 22 29 0a 20 20 20 20 20 20 20 20 20 20 28 65 6e 64 70 6f 69 6e 74 20 22 2f 61 70 69 2f tps")...........(endpoint."/api/
12fc0 76 30 2f 22 29 29 0a 20 20 22 52 65 67 69 73 74 65 72 20 61 20 4b 61 67 69 20 46 61 73 74 47 50 v0/"))..."Register.a.Kagi.FastGP
12fe0 54 20 62 61 63 6b 65 6e 64 20 66 6f 72 20 67 70 74 65 6c 20 77 69 74 68 20 4e 41 4d 45 2e 0a 0a T.backend.for.gptel.with.NAME...
13000 4b 65 79 77 6f 72 64 20 61 72 67 75 6d 65 6e 74 73 3a 0a 0a 43 55 52 4c 2d 41 52 47 53 20 28 6f Keyword.arguments:..CURL-ARGS.(o
13020 70 74 69 6f 6e 61 6c 29 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 61 64 64 69 74 69 6f 6e 61 6c ptional).is.a.list.of.additional
13040 20 43 75 72 6c 20 61 72 67 75 6d 65 6e 74 73 2e 0a 0a 48 4f 53 54 20 69 73 20 74 68 65 20 4b 61 .Curl.arguments...HOST.is.the.Ka
13060 67 69 20 68 6f 73 74 20 28 77 69 74 68 20 70 6f 72 74 29 2c 20 64 65 66 61 75 6c 74 73 20 74 6f gi.host.(with.port),.defaults.to
13080 20 5c 22 6b 61 67 69 2e 63 6f 6d 5c 22 2e 0a 0a 4d 4f 44 45 4c 53 20 69 73 20 61 20 6c 69 73 74 .\"kagi.com\"...MODELS.is.a.list
130a0 20 6f 66 20 61 76 61 69 6c 61 62 6c 65 20 4b 61 67 69 20 6d 6f 64 65 6c 73 3a 20 6f 6e 6c 79 20 .of.available.Kagi.models:.only.
130c0 66 61 73 74 67 70 74 20 69 73 20 73 75 70 70 6f 72 74 65 64 2e 0a 0a 53 54 52 45 41 4d 20 69 73 fastgpt.is.supported...STREAM.is
130e0 20 61 20 62 6f 6f 6c 65 61 6e 20 74 6f 20 74 6f 67 67 6c 65 20 73 74 72 65 61 6d 69 6e 67 20 72 .a.boolean.to.toggle.streaming.r
13100 65 73 70 6f 6e 73 65 73 2c 20 64 65 66 61 75 6c 74 73 20 74 6f 0a 66 61 6c 73 65 2e 20 20 4b 61 esponses,.defaults.to.false...Ka
13120 67 69 20 64 6f 65 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 20 61 20 73 74 72 65 61 6d 69 6e 67 20 gi.does.not.support.a.streaming.
13140 41 50 49 20 79 65 74 2e 0a 0a 50 52 4f 54 4f 43 4f 4c 20 28 6f 70 74 69 6f 6e 61 6c 29 20 73 70 API.yet...PROTOCOL.(optional).sp
13160 65 63 69 66 69 65 73 20 74 68 65 20 70 72 6f 74 6f 63 6f 6c 2c 20 68 74 74 70 73 20 62 79 20 64 ecifies.the.protocol,.https.by.d
13180 65 66 61 75 6c 74 2e 0a 0a 45 4e 44 50 4f 49 4e 54 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 efault...ENDPOINT.(optional).is.
131a0 74 68 65 20 41 50 49 20 65 6e 64 70 6f 69 6e 74 20 66 6f 72 20 63 6f 6d 70 6c 65 74 69 6f 6e 73 the.API.endpoint.for.completions
131c0 2c 20 64 65 66 61 75 6c 74 73 20 74 6f 0a 5c 22 2f 61 70 69 2f 76 30 2f 66 61 73 74 67 70 74 5c ,.defaults.to.\"/api/v0/fastgpt\
131e0 22 2e 0a 0a 48 45 41 44 45 52 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 66 6f 72 20 61 64 64 "...HEADER.(optional).is.for.add
13200 69 74 69 6f 6e 61 6c 20 68 65 61 64 65 72 73 20 74 6f 20 73 65 6e 64 20 77 69 74 68 20 65 61 63 itional.headers.to.send.with.eac
13220 68 0a 72 65 71 75 65 73 74 2e 20 20 49 74 20 73 68 6f 75 6c 64 20 62 65 20 61 6e 20 61 6c 69 73 h.request...It.should.be.an.alis
13240 74 20 6f 72 20 61 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 72 65 74 75 6e 73 20 61 6e 0a 61 t.or.a.function.that.retuns.an.a
13260 6c 69 73 74 2c 20 6c 69 6b 65 3a 0a 20 28 28 5c 22 43 6f 6e 74 65 6e 74 2d 54 79 70 65 5c 22 20 list,.like:..((\"Content-Type\".
13280 2e 20 5c 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 6a 73 6f 6e 5c 22 29 29 0a 0a 4b 45 59 20 28 6f ..\"application/json\"))..KEY.(o
132a0 70 74 69 6f 6e 61 6c 29 20 69 73 20 61 20 76 61 72 69 61 62 6c 65 20 77 68 6f 73 65 20 76 61 6c ptional).is.a.variable.whose.val
132c0 75 65 20 69 73 20 74 68 65 20 41 50 49 20 6b 65 79 2c 20 6f 72 0a 66 75 6e 63 74 69 6f 6e 20 74 ue.is.the.API.key,.or.function.t
132e0 68 61 74 20 72 65 74 75 72 6e 73 20 74 68 65 20 6b 65 79 2e 0a 0a 45 78 61 6d 70 6c 65 3a 0a 2d hat.returns.the.key...Example:.-
13300 2d 2d 2d 2d 2d 2d 0a 0a 20 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 6b 61 67 69 20 5c 22 4b 61 67 69 ------...(gptel-make-kagi.\"Kagi
13320 5c 22 20 3a 6b 65 79 20 6d 79 2d 6b 61 67 69 2d 6b 65 79 29 22 0a 20 20 28 64 65 63 6c 61 72 65 \".:key.my-kagi-key)"...(declare
13340 20 28 69 6e 64 65 6e 74 20 31 29 29 0a 20 20 73 74 72 65 61 6d 20 20 20 20 20 20 20 20 20 20 20 .(indent.1))...stream...........
13360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 53 69 6c 65 6e 63 65 20 62 79 .....................;Silence.by
13380 74 65 2d 63 6f 6d 70 69 6c 65 72 0a 20 20 28 6c 65 74 20 28 28 62 61 63 6b 65 6e 64 20 28 67 70 te-compiler...(let.((backend.(gp
133a0 74 65 6c 2d 2d 6d 61 6b 65 2d 6b 61 67 69 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 tel--make-kagi..................
133c0 20 3a 63 75 72 6c 2d 61 72 67 73 20 63 75 72 6c 2d 61 72 67 73 0a 20 20 20 20 20 20 20 20 20 20 .:curl-args.curl-args...........
133e0 20 20 20 20 20 20 20 20 3a 6e 61 6d 65 20 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ........:name.name..............
13400 20 20 20 20 20 3a 68 6f 73 74 20 68 6f 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .....:host.host.................
13420 20 20 3a 68 65 61 64 65 72 20 68 65 61 64 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..:header.header................
13440 20 20 20 3a 6b 65 79 20 6b 65 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6d ...:key.key...................:m
13460 6f 64 65 6c 73 20 28 67 70 74 65 6c 2d 2d 70 72 6f 63 65 73 73 2d 6d 6f 64 65 6c 73 20 6d 6f 64 odels.(gptel--process-models.mod
13480 65 6c 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 70 72 6f 74 6f 63 6f 6c els)...................:protocol
134a0 20 70 72 6f 74 6f 63 6f 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 65 6e 64 .protocol...................:end
134c0 70 6f 69 6e 74 20 65 6e 64 70 6f 69 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 point.endpoint..................
134e0 20 3a 75 72 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 .:url...................(lambda.
13500 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 70 ().....................(concat.p
13520 72 6f 74 6f 63 6f 6c 20 22 3a 2f 2f 22 20 68 6f 73 74 20 65 6e 64 70 6f 69 6e 74 0a 20 20 20 20 rotocol."://".host.endpoint.....
13540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 65 71 75 ........................(if.(equ
13560 61 6c 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 20 27 66 61 73 74 67 70 74 29 0a 20 20 20 20 20 20 20 al.gptel-model.'fastgpt)........
13580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 66 61 73 74 67 70 ........................."fastgp
135a0 74 22 20 22 73 75 6d 6d 61 72 69 7a 65 22 29 29 29 29 29 29 0a 20 20 20 20 28 70 72 6f 67 31 20 t"."summarize")))))).....(prog1.
135c0 62 61 63 6b 65 6e 64 0a 20 20 20 20 20 20 28 73 65 74 66 20 28 61 6c 69 73 74 2d 67 65 74 20 6e backend.......(setf.(alist-get.n
135e0 61 6d 65 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 62 61 63 6b 65 6e 64 73 0a 20 20 20 20 20 20 ame.gptel--known-backends.......
13600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 69 6c 20 6e 69 6c 20 23 27 65 71 75 61 6c .................nil.nil.#'equal
13620 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 61 63 6b 65 6e 64 29 29 29 29 0a )...................backend)))).
13640 0a 28 70 72 6f 76 69 64 65 20 27 67 70 74 65 6c 2d 6b 61 67 69 29 0a 3b 3b 3b 20 67 70 74 65 6c .(provide.'gptel-kagi).;;;.gptel
13660 2d 6b 61 67 69 2e 65 6c 20 65 6e 64 73 20 68 65 72 65 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 -kagi.el.ends.here..............
13680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
136a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
136c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
136e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
137a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
137c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
137e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13800 67 70 74 65 6c 2d 30 2e 39 2e 38 2f 67 70 74 65 6c 2d 6f 6c 6c 61 6d 61 2e 65 6c 00 00 00 00 00 gptel-0.9.8/gptel-ollama.el.....
13820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13860 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
13880 30 30 33 32 30 31 31 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 34 31 37 37 00 20 30 00 00 00 0032011.00000000000.014177..0...
138a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
138c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
138e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13900 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...................
13920 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...................
13940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
139a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
139c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
139e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13a00 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
13a20 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
13a40 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.(
13a60 43 29 20 32 30 32 33 20 20 4b 61 72 74 68 69 6b 20 43 68 69 6b 6d 61 67 61 6c 75 72 0a 0a 3b 3b C).2023..Karthik.Chikmagalur..;;
13a80 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
13aa0 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
13ac0 65 79 77 6f 72 64 73 3a 20 68 79 70 65 72 6d 65 64 69 61 0a 0a 3b 3b 20 54 68 69 73 20 70 72 6f eywords:.hypermedia..;;.This.pro
13ae0 67 72 61 6d 20 69 73 20 66 72 65 65 20 73 6f 66 74 77 61 72 65 3b 20 79 6f 75 20 63 61 6e 20 72 gram.is.free.software;.you.can.r
13b00 65 64 69 73 74 72 69 62 75 74 65 20 69 74 20 61 6e 64 2f 6f 72 20 6d 6f 64 69 66 79 0a 3b 3b 20 edistribute.it.and/or.modify.;;.
13b20 69 74 20 75 6e 64 65 72 20 74 68 65 20 74 65 72 6d 73 20 6f 66 20 74 68 65 20 47 4e 55 20 47 65 it.under.the.terms.of.the.GNU.Ge
13b40 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 61 73 20 70 75 62 6c 69 73 68 65 neral.Public.License.as.publishe
13b60 64 20 62 79 0a 3b 3b 20 74 68 65 20 46 72 65 65 20 53 6f 66 74 77 61 72 65 20 46 6f 75 6e 64 61 d.by.;;.the.Free.Software.Founda
13b80 74 69 6f 6e 2c 20 65 69 74 68 65 72 20 76 65 72 73 69 6f 6e 20 33 20 6f 66 20 74 68 65 20 4c 69 tion,.either.version.3.of.the.Li
13ba0 63 65 6e 73 65 2c 20 6f 72 0a 3b 3b 20 28 61 74 20 79 6f 75 72 20 6f 70 74 69 6f 6e 29 20 61 6e cense,.or.;;.(at.your.option).an
13bc0 79 20 6c 61 74 65 72 20 76 65 72 73 69 6f 6e 2e 0a 0a 3b 3b 20 54 68 69 73 20 70 72 6f 67 72 61 y.later.version...;;.This.progra
13be0 6d 20 69 73 20 64 69 73 74 72 69 62 75 74 65 64 20 69 6e 20 74 68 65 20 68 6f 70 65 20 74 68 61 m.is.distributed.in.the.hope.tha
13c00 74 20 69 74 20 77 69 6c 6c 20 62 65 20 75 73 65 66 75 6c 2c 0a 3b 3b 20 62 75 74 20 57 49 54 48 t.it.will.be.useful,.;;.but.WITH
13c20 4f 55 54 20 41 4e 59 20 57 41 52 52 41 4e 54 59 3b 20 77 69 74 68 6f 75 74 20 65 76 65 6e 20 74 OUT.ANY.WARRANTY;.without.even.t
13c40 68 65 20 69 6d 70 6c 69 65 64 20 77 61 72 72 61 6e 74 79 20 6f 66 0a 3b 3b 20 4d 45 52 43 48 41 he.implied.warranty.of.;;.MERCHA
13c60 4e 54 41 42 49 4c 49 54 59 20 6f 72 20 46 49 54 4e 45 53 53 20 46 4f 52 20 41 20 50 41 52 54 49 NTABILITY.or.FITNESS.FOR.A.PARTI
13c80 43 55 4c 41 52 20 50 55 52 50 4f 53 45 2e 20 20 53 65 65 20 74 68 65 0a 3b 3b 20 47 4e 55 20 47 CULAR.PURPOSE...See.the.;;.GNU.G
13ca0 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 66 6f 72 20 6d 6f 72 65 20 64 eneral.Public.License.for.more.d
13cc0 65 74 61 69 6c 73 2e 0a 0a 3b 3b 20 59 6f 75 20 73 68 6f 75 6c 64 20 68 61 76 65 20 72 65 63 65 etails...;;.You.should.have.rece
13ce0 69 76 65 64 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 ived.a.copy.of.the.GNU.General.P
13d00 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 0a 3b 3b 20 61 6c 6f 6e 67 20 77 69 74 68 20 74 68 69 73 ublic.License.;;.along.with.this
13d20 20 70 72 6f 67 72 61 6d 2e 20 20 49 66 20 6e 6f 74 2c 20 73 65 65 20 3c 68 74 74 70 73 3a 2f 2f .program...If.not,.see.<https://
13d40 77 77 77 2e 67 6e 75 2e 6f 72 67 2f 6c 69 63 65 6e 73 65 73 2f 3e 2e 0a 0a 3b 3b 3b 20 43 6f 6d www.gnu.org/licenses/>...;;;.Com
13d60 6d 65 6e 74 61 72 79 3a 0a 0a 3b 3b 20 54 68 69 73 20 66 69 6c 65 20 61 64 64 73 20 73 75 70 70 mentary:..;;.This.file.adds.supp
13d80 6f 72 74 20 66 6f 72 20 74 68 65 20 4f 6c 6c 61 6d 61 20 4c 4c 4d 20 41 50 49 20 74 6f 20 67 70 ort.for.the.Ollama.LLM.API.to.gp
13da0 74 65 6c 0a 0a 3b 3b 3b 20 43 6f 64 65 3a 0a 28 72 65 71 75 69 72 65 20 27 67 70 74 65 6c 29 0a tel..;;;.Code:.(require.'gptel).
13dc0 28 72 65 71 75 69 72 65 20 27 63 6c 2d 67 65 6e 65 72 69 63 29 0a 0a 28 64 65 63 6c 61 72 65 2d (require.'cl-generic)..(declare-
13de0 66 75 6e 63 74 69 6f 6e 20 6a 73 6f 6e 2d 72 65 61 64 20 22 6a 73 6f 6e 22 20 28 29 29 0a 28 64 function.json-read."json".()).(d
13e00 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 77 eclare-function.gptel-context--w
13e20 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 72 65 2d 66 75 rap."gptel-context").(declare-fu
13e40 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 63 74 2d 6d 65 nction.gptel-context--collect-me
13e60 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 72 20 6a 73 6f dia."gptel-context").(defvar.jso
13e80 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 28 63 6c 2d 64 n-object-type)..;;;.Ollama.(cl-d
13ea0 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 6e 73 74 72 75 efstruct.(gptel-ollama.(:constru
13ec0 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 20 20 20 20 20 ctor.gptel--make-ollama)........
13ee0 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 6e 69 .....................(:copier.ni
13f00 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 28 l).............................(
13f20 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 46 49 :include.gptel-backend)))..;;.FI
13f40 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 6c 65 0a 28 64 XME(fsm).Remove.this.variable.(d
13f60 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 6f 6b 65 6e 2d efvar-local.gptel--ollama-token-
13f80 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 6f 6c 6c 61 6d count.0..."Token.count.for.ollam
13fa0 61 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 73 2e 0a 0a 54 68 69 73 20 76 61 72 69 61 62 6c 65 20 a.conversations...This.variable.
13fc0 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 20 66 6f 72 20 holds.the.total.token.count.for.
13fe0 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 6f 64 65 6c 73 conversations.with.Ollama.models
14000 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 65 20 6f 6e 6c ...Intended.for.internal.use.onl
14020 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 75 72 6c 2d 2d y.")..(cl-defmethod.gptel-curl--
14040 70 61 72 73 65 2d 73 74 72 65 61 6d 20 28 28 5f 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 6f 6c parse-stream.((_backend.gptel-ol
14060 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 73 65 20 73 74 lama).info)..."Parse.response.st
14080 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 20 28 77 68 65 ream.for.the.Ollama.API."...(whe
140a0 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 72 77 61 72 64 n.(and.(bobp).(re-search-forward
140c0 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 6c 69 6e 65 20 ."^{".nil.t)).....(forward-line.
140e0 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 20 28 63 6f 6e 0))...(let*.((content-strs).(con
14100 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 6e 64 69 74 69 tent).(pt.(point))).....(conditi
14120 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 73 65 74 71 on-case.nil.........(while.(setq
14140 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 29 0a 20 20 20 .content.(gptel--json-read))....
14160 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 20 20 20 20 20 .......(setq.pt.(point))........
14180 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 74 65 6e 74 20 ...(let.((done.(map-elt.content.
141a0 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 73 70 6f 6e 73 :done)).................(respons
141c0 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 28 3a 6d 65 73 e.(map-nested-elt.content.'(:mes
141e0 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 20 20 20 28 77 sage.:content)))).............(w
14200 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 72 65 73 70 6f hen.(and.response.(not.(eq.respo
14220 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 28 70 75 73 68 nse.:null)))...............(push
14240 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 20 20 20 20 20 .response.content-strs))........
14260 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 65 71 20 64 6f 6e 65 20 3a 6a 73 6f 6e 2d 66 61 6c 73 .....(unless.(eq.done.:json-fals
14280 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 e)...............(with-current-b
142a0 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)..
142c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 69 6e 63 66 20 67 70 74 65 6c 2d 2d 6f ...............(cl-incf.gptel--o
142e0 6c 6c 61 6d 61 2d 74 6f 6b 65 6e 2d 63 6f 75 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 llama-token-count...............
14300 20 20 20 20 20 20 20 20 20 20 20 28 2b 20 28 6f 72 20 28 6d 61 70 2d 65 6c 74 20 63 6f 6e 74 65 ...........(+.(or.(map-elt.conte
14320 6e 74 20 3a 70 72 6f 6d 70 74 5f 65 76 61 6c 5f 63 6f 75 6e 74 29 20 30 29 0a 20 20 20 20 20 20 nt.:prompt_eval_count).0).......
14340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 20 28 6d 61 70 2d 65 ......................(or.(map-e
14360 6c 74 20 63 6f 6e 74 65 6e 74 20 3a 65 76 61 6c 5f 63 6f 75 6e 74 29 20 30 29 29 29 29 0a 20 20 lt.content.:eval_count).0))))...
14380 20 20 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 61 ............(goto-char.(point-ma
143a0 78 29 29 29 29 29 0a 20 20 20 20 20 20 28 65 72 72 6f 72 20 28 67 6f 74 6f 2d 63 68 61 72 20 70 x))))).......(error.(goto-char.p
143c0 74 29 29 29 0a 20 20 20 20 28 61 70 70 6c 79 20 23 27 63 6f 6e 63 61 74 20 28 6e 72 65 76 65 72 t))).....(apply.#'concat.(nrever
143e0 73 65 20 63 6f 6e 74 65 6e 74 2d 73 74 72 73 29 29 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 se.content-strs))))..(cl-defmeth
14400 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
14420 65 6e 64 20 67 70 74 65 6c 2d 6f 6c 6c 61 6d 61 29 20 72 65 73 70 6f 6e 73 65 20 69 6e 66 6f 29 end.gptel-ollama).response.info)
14440 0a 20 20 22 50 61 72 73 65 20 61 20 6f 6e 65 2d 73 68 6f 74 20 52 45 53 50 4f 4e 53 45 20 66 72 ..."Parse.a.one-shot.RESPONSE.fr
14460 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 6e 20 74 65 78 om.the.Ollama.API.and.return.tex
14480 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 20 69 6e 20 73 t...Store.response.metadata.in.s
144a0 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 66 6f 20 3a 73 tate.INFO."...(plist-put.info.:s
144c0 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 65 20 3a top-reason.(plist-get.response.:
144e0 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 69 6e 66 6f 20 done_reason))...(plist-put.info.
14500 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 65 73 70 6f 6e :output-tokens.(plist-get.respon
14520 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 6d 65 73 73 61 se.:eval_count))...(let*.((messa
14540 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 73 61 67 65 29 ge.(plist-get.response.:message)
14560 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 20 6d )..........(content.(plist-get.m
14580 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 28 61 6e 64 20 essage.:content))).....(if.(and.
145a0 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
145c0 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)))).
145e0 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 31 20 6e 69 6c ........content.......(prog1.nil
14600 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 6f 6f 6b 20 66 ........................;.Look.f
14620 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 6e 74 65 6e 74 or.tool.calls.only.if.no.content
14640 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 63 61 6c 6c 73 .........(when-let*.((tool-calls
14660 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 61 6c 6c 73 29 .(plist-get.message.:tool_calls)
14680 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 68 65 20 74 6f ))...........;;.First.add.the.to
146a0 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 0a 20 20 20 20 ol.call.to.the.prompts.list.....
146c0 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 69 6e ......(let*.((data.(plist-get.in
146e0 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 20 28 70 72 6f fo.:data))..................(pro
14700 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 67 65 73 29 29 mpts.(plist-get.data.:messages))
14720 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 74 61 20 3a 6d ).............(plist-put.data.:m
14740 65 73 73 61 67 65 73 20 28 76 63 6f 6e 63 61 74 20 70 72 6f 6d 70 74 73 20 60 28 2c 6d 65 73 73 essages.(vconcat.prompts.`(,mess
14760 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 61 70 74 75 72 age))))...........;;.Then.captur
14780 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 67 e.the.tool.call.data.for.running
147a0 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 70 0a 20 20 20 .the.tool...........(cl-loop....
147c0 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 73 20 74 6f 6f ........for.tool-call.across.too
147e0 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 73 22 20 77 69 l-calls.;replace.":arguments".wi
14800 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 61 6c 6c 2d 73 th.":args"............for.call-s
14820 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 2d 67 65 74 20 pec.=.(copy-sequence.(plist-get.
14840 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 20 20 20 20 20 tool-call.:function))...........
14860 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 72 67 73 0a 20 .do.(plist-put.call-spec.:args..
14880 20 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
148a0 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 20 20 20 20 20 et.call-spec.:arguments)).......
148c0 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 61 72 67 75 6d .....(plist-put.call-spec.:argum
148e0 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 74 20 63 61 6c ents.nil)............collect.cal
14900 6c 2d 73 70 65 63 20 69 6e 74 6f 20 74 6f 6f 6c 2d 75 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 l-spec.into.tool-use............
14920 66 69 6e 61 6c 6c 79 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 74 6f 6f 6c 2d 75 73 finally.(plist-put.info.:tool-us
14940 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 65 74 68 6f 64 e.tool-use)))))))..(cl-defmethod
14960 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 65 6e 64 20 67 .gptel--request-data.((backend.g
14980 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 4f 4e 20 65 6e ptel-ollama).prompts)..."JSON.en
149a0 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 20 43 68 61 74 code.PROMPTS.for.sending.to.Chat
149c0 47 50 54 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 6d 65 73 73 GPT."...(when.gptel--system-mess
149e0 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 79 73 74 65 age.....(push.(list.:role."syste
14a00 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 67 70 74 65 m".................:content.gpte
14a20 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 70 72 6f l--system-message)...........pro
14a40 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 73 74 0a 20 mpts))...(let*.((prompts-plist..
14a60 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 73 0a 20 20 .........(gptel--merge-plists...
14a80 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 6f 64 65 6c .........`(:model.,(gptel--model
14aa0 2d 6e 61 6d 65 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 -name.gptel-model)..............
14ac0 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 20 20 20 20 :messages.[,@prompts]...........
14ae0 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 20 3a 6a 73 ...:stream.,(or.gptel-stream.:js
14b00 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 2d 62 61 63 on-false))............(gptel-bac
14b20 6b 65 6e 64 2d 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e kend-request-params.gptel-backen
14b40 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 72 65 71 75 d)............(gptel--model-requ
14b60 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 20 20 20 20 est-params..gptel-model)))......
14b80 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 69 66 20 61 ....;;.the.initial.options.(if.a
14ba0 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 20 20 20 20 ny).from.request.params.........
14bc0 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 72 6f 6d 70 .(options-plist.(plist-get.promp
14be0 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 68 65 6e 20 ts-plist.:options)))......(when.
14c00 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 6f 6f 6c 73 (and.gptel-use-tools.gptel-tools
14c20 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 6f 75 74 20 ).......;;.TODO(tool):.Find.out.
14c40 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 6c 61 6d 61 how.to.force.tool.use.for.Ollama
14c60 0a 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 70 72 6f 6d 70 74 73 2d 70 6c 69 73 74 20 .......(plist-put.prompts-plist.
14c80 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 65 6c 2d 2d :tools..................(gptel--
14ca0 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 6f 6c 73 29 parse-tools.backend.gptel-tools)
14cc0 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 6c 69 73 74 ).......(plist-put.prompts-plist
14ce0 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 3b 20 69 66 .:stream.:json-false)).....;;.if
14d00 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 65 6e 73 20 .the.temperature.and.max-tokens.
14d20 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 2f 6d 6f 64 aren't.set.as.....;;.backend/mod
14d40 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 73 65 74 74 el-specific,.use.the.global.sett
14d60 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 6d 70 65 72 ings.....(when.(and.gptel-temper
14d80 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 73 2d 70 6c ature.(not.(plist-get.options-pl
14da0 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 65 74 71 20 ist.:temperature))).......(setq.
14dc0 6f 70 74 69 6f 6e 73 2d 70 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 options-plist.............(plist
14de0 2d 70 75 74 20 6f 70 74 69 6f 6e 73 2d 70 6c 69 73 74 20 3a 74 65 6d 70 65 72 61 74 75 72 65 20 -put.options-plist.:temperature.
14e00 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 65 6e 20 28 gptel-temperature))).....(when.(
14e20 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 6c 69 73 74 and.gptel-max-tokens.(not.(plist
14e40 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 69 63 74 29 -get.options-plist.:num_predict)
14e60 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 0a 20 20 20 )).......(setq.options-plist....
14e80 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 70 6c 69 73 .........(plist-put.options-plis
14ea0 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 65 6e 73 29 t.:num_predict.gptel-max-tokens)
14ec0 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 69 73 74 20 )).....(plist-put.prompts-plist.
14ee0 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 3b 20 4e 4f :options.options-plist)))..;;.NO
14f00 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 6d 65 74 68 TE:.No.`gptel--parse-tools'.meth
14f20 6f 64 20 72 65 71 75 69 72 65 64 20 66 6f 72 20 67 70 74 65 6c 2d 6f 6c 6c 61 6d 61 2c 20 73 69 od.required.for.gptel-ollama,.si
14f40 6e 63 65 20 74 68 69 73 20 69 73 0a 3b 3b 20 68 61 6e 64 6c 65 64 20 62 79 20 69 74 73 20 64 65 nce.this.is.;;.handled.by.its.de
14f60 66 67 65 6e 65 72 69 63 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 0a 0a 28 63 6c 2d 64 65 66 fgeneric.implementation..(cl-def
14f80 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 75 6c 74 73 method.gptel--parse-tool-results
14fa0 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 6f 6c 2d 75 .((_backend.gptel-ollama).tool-u
14fc0 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 69 6e 69 6e se)..."Return.a.prompt.containin
14fe0 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 55 53 45 2e g.tool.call.results.in.TOOL-USE.
15000 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 6c 6c 29 0a "...(mapcar.(lambda.(tool-call).
15020 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 6c 22 20 3a ............(list.:role."tool".:
15040 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 20 3a 72 65 content.(plist-get.tool-call.:re
15060 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 0a 0a 3b 3b sult)))...........tool-use))..;;
15080 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 6d 70 74 27 .NOTE:.No.`gptel--inject-prompt'
150a0 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 6c 6c 61 6d .method.required.for.gptel-ollam
150c0 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 62 79 20 69 a,.since.this.is.;;.handled.by.i
150e0 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 0a 0a 28 63 ts.defgeneric.implementation..(c
15100 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 28 28 l-defmethod.gptel--parse-list.((
15120 5f 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 6f 6c 6c 61 6d 61 29 20 70 72 6f 6d 70 74 2d 6c 69 _backend.gptel-ollama).prompt-li
15140 73 74 29 0a 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 74 65 78 74 20 69 6e 20 70 72 6f 6d 70 st)...(cl-loop.for.text.in.promp
15160 74 2d 6c 69 73 74 0a 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 t-list............for.role.=.t.t
15180 68 65 6e 20 28 6e 6f 74 20 72 6f 6c 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 69 66 20 74 65 78 hen.(not.role)............if.tex
151a0 74 20 63 6f 6c 6c 65 63 74 0a 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 3a 72 6f 6c 65 t.collect............(list.:role
151c0 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 20 3a 63 .(if.role."user"."assistant").:c
151e0 6f 6e 74 65 6e 74 20 74 65 78 74 29 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 67 70 ontent.text)))..(cl-defmethod.gp
15200 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 67 70 74 65 tel--parse-buffer.((backend.gpte
15220 6c 2d 6f 6c 6c 61 6d 61 29 20 26 6f 70 74 69 6f 6e 61 6c 20 6d 61 78 2d 65 6e 74 72 69 65 73 29 l-ollama).&optional.max-entries)
15240 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 28 70 6f 69 ...(let.((prompts).(prev-pt.(poi
15260 6e 74 29 29 0a 20 20 20 20 20 20 20 20 28 69 6e 63 6c 75 64 65 2d 6d 65 64 69 61 20 28 61 6e 64 nt)).........(include-media.(and
15280 20 67 70 74 65 6c 2d 74 72 61 63 6b 2d 6d 65 64 69 61 20 28 6f 72 20 28 67 70 74 65 6c 2d 2d 6d .gptel-track-media.(or.(gptel--m
152a0 6f 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 odel-capable-p.'media)..........
152c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
152e0 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
15300 20 27 75 72 6c 29 29 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 .'url))))).....(if.(or.gptel-mod
15320 65 20 67 70 74 65 6c 2d 74 72 61 63 6b 2d 72 65 73 70 6f 6e 73 65 29 0a 20 20 20 20 20 20 20 20 e.gptel-track-response).........
15340 28 77 68 69 6c 65 20 28 61 6e 64 20 28 6f 72 20 28 6e 6f 74 20 6d 61 78 2d 65 6e 74 72 69 65 73 (while.(and.(or.(not.max-entries
15360 29 20 28 3e 3d 20 6d 61 78 2d 65 6e 74 72 69 65 73 20 30 29 29 0a 20 20 20 20 20 20 20 20 20 20 ).(>=.max-entries.0))...........
15380 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 72 65 76 69 6f 75 73 2d 73 ..........(goto-char.(previous-s
153a0 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 20 20 20 20 ingle-property-change...........
153c0 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 67 ......................(point).'g
153e0 70 74 65 6c 20 6e 69 6c 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 29 0a 20 20 20 20 20 20 20 20 20 ptel.nil.(point-min)))..........
15400 20 20 20 20 20 20 20 20 20 20 20 28 6e 6f 74 20 28 3d 20 28 70 6f 69 6e 74 29 20 70 72 65 76 2d ...........(not.(=.(point).prev-
15420 70 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 63 61 73 65 20 28 67 65 74 2d 63 68 61 72 pt)))...........(pcase.(get-char
15440 2d 70 72 6f 70 65 72 74 79 20 28 70 6f 69 6e 74 29 20 27 67 70 74 65 6c 29 0a 20 20 20 20 20 20 -property.(point).'gptel).......
15460 20 20 20 20 20 20 28 27 72 65 73 70 6f 6e 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 ......('response..............(w
15480 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 72 69 6d 2d hen-let*.((content.(gptel--trim-
154a0 70 72 65 66 69 78 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 prefixes........................
154c0 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 2d 6e 6f ............(buffer-substring-no
154e0 2d 70 72 6f 70 65 72 74 69 65 73 20 28 70 6f 69 6e 74 29 20 70 72 65 76 2d 70 74 29 29 29 29 0a -properties.(point).prev-pt)))).
15500 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 65 ...............(push.(list.:role
15520 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 65 6e 74 29 20 70 ."assistant".:content.content).p
15540 72 6f 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 rompts))).............(`(tool...
15560 2c 5f 69 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 ,_id)..............(save-excursi
15580 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 on................(condition-cas
155a0 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 28 6c 65 74 2a 20 28 e.nil....................(let*.(
155c0 28 74 6f 6f 6c 2d 63 61 6c 6c 20 28 72 65 61 64 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 (tool-call.(read.(current-buffer
155e0 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 6e )))...........................(n
15600 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 6d 65 29 29 ame.(plist-get.tool-call.:name))
15620 0a 20 20 20 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 ...........................(argu
15640 6d 65 6e 74 73 20 28 70 6c 69 73 74 2d 67 65 74 20 74 6f 6f 6c 2d 63 61 6c 6c 20 3a 61 72 67 73 ments.(plist-get.tool-call.:args
15660 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 6c 69 73 74 2d )))......................(plist-
15680 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 20 20 20 20 put.tool-call.:result...........
156a0 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 74 72 ......................(string-tr
156c0 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 72 74 69 im.(buffer-substring-no-properti
156e0 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 es..............................
15700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6f 69 6e 74 29 20 70 72 65 76 2d 70 74 .................(point).prev-pt
15720 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 73 68 20 28 )))......................(push.(
15740 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 74 73 20 62 car.(gptel--parse-tool-results.b
15760 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 20 20 20 20 ackend.(list.tool-call))).......
15780 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 29 0a 20 20 .....................prompts)...
157a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 6c 69 73 74 20 3a ...................(push.(list.:
157c0 72 6f 6c 65 20 22 61 73 73 69 73 74 61 6e 74 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 role."assistant"................
157e0 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 22 22 0a 20 20 ..................:content.""...
15800 20 20 20 20 20 20 20 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 ...............................:
15820 74 6f 6f 6c 5f 63 61 6c 6c 73 20 60 5b 28 3a 66 75 6e 63 74 69 6f 6e 20 28 3a 6e 61 6d 65 20 2c tool_calls.`[(:function.(:name.,
15840 6e 61 6d 65 20 3a 61 72 67 75 6d 65 6e 74 73 20 2c 61 72 67 75 6d 65 6e 74 73 29 29 5d 29 0a 20 name.:arguments.,arguments))])..
15860 20 20 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
15880 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 66 69 s))..................((end-of-fi
158a0 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 20 20 le.invalid-read-syntax).........
158c0 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 75 6c ..........(message.(format."Coul
158e0 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 25 73 d.not.parse.tool-call.on.line.%s
15900 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 "...............................
15920 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 74 29 .....(line-number-at-pos.(point)
15940 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 20 20 ))))))).............('ignore)...
15960 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 69 66 ..........('nil..............(if
15980 20 69 6e 63 6c 75 64 65 2d 6d 65 64 69 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .include-media..................
159a0 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 6f 6c 6c (when-let*.((content.(gptel--oll
159c0 61 6d 61 2d 70 61 72 73 65 2d 6d 75 6c 74 69 70 61 72 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 ama-parse-multipart.............
159e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 ...........................(gpte
15a00 6c 2d 2d 70 61 72 73 65 2d 6d 65 64 69 61 2d 6c 69 6e 6b 73 20 6d 61 6a 6f 72 2d 6d 6f 64 65 20 l--parse-media-links.major-mode.
15a20 28 70 6f 69 6e 74 29 20 70 72 65 76 2d 70 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 (point).prev-pt)))).............
15a40 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 3e 20 28 6c 65 6e 67 74 68 20 63 6f 6e 74 65 6e 74 29 .......(when.(>.(length.content)
15a60 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 70 75 73 68 20 28 .0)......................(push.(
15a80 61 70 70 65 6e 64 20 27 28 3a 72 6f 6c 65 20 22 75 73 65 72 22 29 20 63 6f 6e 74 65 6e 74 29 20 append.'(:role."user").content).
15aa0 70 72 6f 6d 70 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 prompts)))................(when-
15ac0 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 65 66 let*.((content.(gptel--trim-pref
15ae0 69 78 65 73 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72 ixes.(buffer-substring-no-proper
15b00 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 20 ties............................
15b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
15b40 28 70 6f 69 6e 74 29 20 70 72 65 76 2d 70 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 (point).prev-pt)))).............
15b60 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
15b80 6f 6e 74 65 6e 74 20 63 6f 6e 74 65 6e 74 29 20 70 72 6f 6d 70 74 73 29 29 29 29 29 0a 20 20 20 ontent.content).prompts)))))....
15ba0 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 20 20 .......(setq.prev-pt.(point))...
15bc0 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 65 63 ........(and.max-entries.(cl-dec
15be0 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 63 6f f.max-entries))).......(let.((co
15c00 6e 74 65 6e 74 20 28 73 74 72 69 6e 67 2d 74 72 69 6d 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 ntent.(string-trim.(buffer-subst
15c20 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ring-no-properties..............
15c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6f 69 6e 74 2d 6d 69 6e ......................(point-min
15c60 29 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 70 75 73 68 20 ).(point-max))))).........(push.
15c80 28 6c 69 73 74 20 3a 72 6f 6c 65 20 22 75 73 65 72 22 20 3a 63 6f 6e 74 65 6e 74 20 63 6f 6e 74 (list.:role."user".:content.cont
15ca0 65 6e 74 29 20 70 72 6f 6d 70 74 73 29 29 29 0a 20 20 20 20 70 72 6f 6d 70 74 73 29 29 0a 0a 28 ent).prompts))).....prompts))..(
15cc0 64 65 66 75 6e 20 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 defun.gptel--ollama-parse-multip
15ce0 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 61 art.(parts)..."Convert.a.multipa
15d00 72 74 20 70 72 6f 6d 70 74 20 50 41 52 54 53 20 74 6f 20 74 68 65 20 4f 6c 6c 61 6d 61 20 41 50 rt.prompt.PARTS.to.the.Ollama.AP
15d20 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 6e 20 61 6c 69 73 74 I.format...The.input.is.an.alist
15d40 20 6f 66 20 74 68 65 20 66 6f 72 6d 0a 20 28 28 3a 74 65 78 74 20 5c 22 73 6f 6d 65 20 74 65 78 .of.the.form..((:text.\"some.tex
15d60 74 5c 22 29 0a 20 20 28 3a 6d 65 64 69 61 20 5c 22 2f 70 61 74 68 2f 74 6f 2f 6d 65 64 69 61 2e t\")...(:media.\"/path/to/media.
15d80 70 6e 67 5c 22 20 3a 6d 69 6d 65 20 5c 22 69 6d 61 67 65 2f 70 6e 67 5c 22 29 0a 20 20 28 3a 74 png\".:mime.\"image/png\")...(:t
15da0 65 78 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 ext.\"More.text\"))...The.output
15dc0 20 69 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 61 20 62 61 63 .is.a.vector.of.entries.in.a.bac
15de0 6b 65 6e 64 2d 61 70 70 72 6f 70 72 69 61 74 65 0a 66 6f 72 6d 61 74 2e 22 0a 20 20 28 63 6c 2d kend-appropriate.format."...(cl-
15e00 6c 6f 6f 70 0a 20 20 20 66 6f 72 20 70 61 72 74 20 69 6e 20 70 61 72 74 73 0a 20 20 20 66 6f 72 loop....for.part.in.parts....for
15e20 20 6e 20 75 70 66 72 6f 6d 20 31 0a 20 20 20 77 69 74 68 20 6c 61 73 74 20 3d 20 28 6c 65 6e 67 .n.upfrom.1....with.last.=.(leng
15e40 74 68 20 70 61 72 74 73 29 0a 20 20 20 66 6f 72 20 74 65 78 74 20 3d 20 28 70 6c 69 73 74 2d 67 th.parts)....for.text.=.(plist-g
15e60 65 74 20 70 61 72 74 20 3a 74 65 78 74 29 0a 20 20 20 66 6f 72 20 6d 65 64 69 61 20 3d 20 28 70 et.part.:text)....for.media.=.(p
15e80 6c 69 73 74 2d 67 65 74 20 70 61 72 74 20 3a 6d 65 64 69 61 29 0a 20 20 20 69 66 20 74 65 78 74 list-get.part.:media)....if.text
15ea0 20 64 6f 0a 20 20 20 28 61 6e 64 20 28 6f 72 20 28 3d 20 6e 20 31 29 20 28 3d 20 6e 20 6c 61 73 .do....(and.(or.(=.n.1).(=.n.las
15ec0 74 29 29 20 28 73 65 74 71 20 74 65 78 74 20 28 67 70 74 65 6c 2d 2d 74 72 69 6d 2d 70 72 65 66 t)).(setq.text.(gptel--trim-pref
15ee0 69 78 65 73 20 74 65 78 74 29 29 29 20 61 6e 64 0a 20 20 20 69 66 20 74 65 78 74 0a 20 20 20 63 ixes.text))).and....if.text....c
15f00 6f 6c 6c 65 63 74 20 74 65 78 74 20 69 6e 74 6f 20 74 65 78 74 2d 61 72 72 61 79 20 65 6e 64 0a ollect.text.into.text-array.end.
15f20 20 20 20 65 6c 73 65 20 69 66 20 6d 65 64 69 61 0a 20 20 20 63 6f 6c 6c 65 63 74 20 28 67 70 74 ...else.if.media....collect.(gpt
15f40 65 6c 2d 2d 62 61 73 65 36 34 2d 65 6e 63 6f 64 65 20 6d 65 64 69 61 29 20 69 6e 74 6f 20 6d 65 el--base64-encode.media).into.me
15f60 64 69 61 2d 61 72 72 61 79 20 65 6e 64 0a 20 20 20 66 69 6e 61 6c 6c 79 20 72 65 74 75 72 6e 0a dia-array.end....finally.return.
15f80 20 20 20 60 28 2c 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 ...`(,@(and.text-array..(list.:c
15fa0 6f 6e 74 65 6e 74 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 ontent.(mapconcat.#'identity.tex
15fc0 74 2d 61 72 72 61 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 t-array.".")))......,@(and.media
15fe0 2d 61 72 72 61 79 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 -array.(list.:images..(vconcat.m
16000 65 64 69 61 2d 61 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 edia-array))))))..(cl-defmethod.
16020 67 70 74 65 6c 2d 2d 77 72 61 70 2d 75 73 65 72 2d 70 72 6f 6d 70 74 20 28 28 5f 62 61 63 6b 65 gptel--wrap-user-prompt.((_backe
16040 6e 64 20 67 70 74 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 nd.gptel-ollama).prompts........
16060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
16080 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 20 22 57 72 61 70 20 &optional.inject-media)..."Wrap.
160a0 74 68 65 20 6c 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 the.last.user.prompt.in.PROMPTS.
160c0 77 69 74 68 20 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 with.the.context.string...If.INJ
160e0 45 43 54 2d 4d 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 ECT-MEDIA.is.non-nil.wrap.it.wit
16100 68 20 62 61 73 65 36 34 2d 65 6e 63 6f 64 65 64 20 6d 65 64 69 61 20 66 69 6c 65 73 20 69 6e 20 h.base64-encoded.media.files.in.
16120 74 68 65 20 63 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 the.context."...(if.inject-media
16140 0a 20 20 20 20 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 .......;;.Wrap.the.first.user.pr
16160 6f 6d 70 74 20 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 ompt.with.included.media.files/c
16180 6f 6e 74 65 78 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 ontexts.......(when-let*.((media
161a0 2d 6c 69 73 74 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 -list.(gptel-context--collect-me
161c0 64 69 61 29 29 0a 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 dia))...................(media-p
161e0 72 6f 63 65 73 73 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 rocessed.(gptel--ollama-parse-mu
16200 6c 74 69 70 61 72 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 ltipart.media-list))).........(c
16220 6c 2d 63 61 6c 6c 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 l-callf.(lambda.(images)........
16240 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 73 74 2d 67 65 74 .............(vconcat.(plist-get
16260 20 6d 65 64 69 61 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 .media-processed.:images).......
16280 20 20 20 20 20 20 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 .......................images)).
162a0 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 64 72 20 70 72 6f ............(plist-get.(cadr.pro
162c0 6d 70 74 73 29 20 3a 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 mpts).:images))).....;;.Wrap.the
162e0 20 6c 61 73 74 20 75 73 65 72 20 70 72 6f 6d 70 74 20 77 69 74 68 20 69 6e 63 6c 75 64 65 64 20 .last.user.prompt.with.included.
16300 74 65 78 74 20 63 6f 6e 74 65 78 74 73 0a 20 20 20 20 28 63 6c 2d 63 61 6c 6c 66 20 67 70 74 65 text.contexts.....(cl-callf.gpte
16320 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 28 63 61 72 20 l-context--wrap.(plist-get.(car.
16340 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 3b (last.prompts)).:content))))..;;
16360 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
16380 65 2d 6f 6c 6c 61 6d 61 0a 20 20 20 20 28 6e 61 6d 65 20 26 6b 65 79 20 63 75 72 6c 2d 61 72 67 e-ollama.....(name.&key.curl-arg
163a0 73 20 68 65 61 64 65 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 s.header.key.models.stream.reque
163c0 73 74 2d 70 61 72 61 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 st-params...........(host."local
163e0 68 6f 73 74 3a 31 31 34 33 34 22 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 74 6f 63 6f 6c host:11434")...........(protocol
16400 20 22 68 74 74 70 22 29 0a 20 20 20 20 20 20 20 20 20 20 28 65 6e 64 70 6f 69 6e 74 20 22 2f 61 ."http")...........(endpoint."/a
16420 70 69 2f 63 68 61 74 22 29 29 0a 20 20 22 52 65 67 69 73 74 65 72 20 61 6e 20 4f 6c 6c 61 6d 61 pi/chat"))..."Register.an.Ollama
16440 20 62 61 63 6b 65 6e 64 20 66 6f 72 20 67 70 74 65 6c 20 77 69 74 68 20 4e 41 4d 45 2e 0a 0a 4b .backend.for.gptel.with.NAME...K
16460 65 79 77 6f 72 64 20 61 72 67 75 6d 65 6e 74 73 3a 0a 0a 43 55 52 4c 2d 41 52 47 53 20 28 6f 70 eyword.arguments:..CURL-ARGS.(op
16480 74 69 6f 6e 61 6c 29 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 61 64 64 69 74 69 6f 6e 61 6c 20 tional).is.a.list.of.additional.
164a0 43 75 72 6c 20 61 72 67 75 6d 65 6e 74 73 2e 0a 0a 48 4f 53 54 20 69 73 20 77 68 65 72 65 20 4f Curl.arguments...HOST.is.where.O
164c0 6c 6c 61 6d 61 20 72 75 6e 73 20 28 77 69 74 68 20 70 6f 72 74 29 2c 20 64 65 66 61 75 6c 74 73 llama.runs.(with.port),.defaults
164e0 20 74 6f 20 6c 6f 63 61 6c 68 6f 73 74 3a 31 31 34 33 34 0a 0a 4d 4f 44 45 4c 53 20 69 73 20 61 .to.localhost:11434..MODELS.is.a
16500 20 6c 69 73 74 20 6f 66 20 61 76 61 69 6c 61 62 6c 65 20 6d 6f 64 65 6c 20 6e 61 6d 65 73 2c 20 .list.of.available.model.names,.
16520 61 73 20 73 79 6d 62 6f 6c 73 2e 0a 41 64 64 69 74 69 6f 6e 61 6c 6c 79 2c 20 79 6f 75 20 63 61 as.symbols..Additionally,.you.ca
16540 6e 20 73 70 65 63 69 66 79 20 73 75 70 70 6f 72 74 65 64 20 4c 4c 4d 20 63 61 70 61 62 69 6c 69 n.specify.supported.LLM.capabili
16560 74 69 65 73 20 6c 69 6b 65 0a 76 69 73 69 6f 6e 20 6f 72 20 74 6f 6f 6c 2d 75 73 65 20 62 79 20 ties.like.vision.or.tool-use.by.
16580 61 70 70 65 6e 64 69 6e 67 20 61 20 70 6c 69 73 74 20 74 6f 20 74 68 65 20 6d 6f 64 65 6c 20 77 appending.a.plist.to.the.model.w
165a0 69 74 68 20 6d 6f 72 65 0a 69 6e 66 6f 72 6d 61 74 69 6f 6e 2c 20 69 6e 20 74 68 65 20 66 6f 72 ith.more.information,.in.the.for
165c0 6d 0a 0a 20 28 6d 6f 64 65 6c 2d 6e 61 6d 65 20 2e 20 70 6c 69 73 74 29 0a 0a 43 75 72 72 65 6e m...(model-name...plist)..Curren
165e0 74 6c 79 20 72 65 63 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 tly.recognized.plist.keys.are.:d
16600 65 73 63 72 69 70 74 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 escription,.:capabilities.and.:m
16620 69 6d 65 2d 74 79 70 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 ime-types...An.example.of.a.mode
16640 6c 20 73 70 65 63 69 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 l.specification.including.both.k
16660 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 28 6d 69 73 inds.of.specs:..:models.\\='(mis
16680 74 72 61 6c 3a 6c 61 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 tral:latest.....................
166a0 20 20 20 3b 53 69 6d 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 ...;Simple.specs...openhermes:la
166c0 74 65 73 74 0a 20 20 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 test...(llava:13b...............
166e0 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
16700 72 69 70 74 69 6f 6e 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 ription....\"Llava.1.6:.Large.La
16720 6e 75 61 67 65 20 61 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 nuage.and.Vision.Assistant\"....
16740 3a 63 61 70 61 62 69 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 :capabilities.(media)....:mime-t
16760 79 70 65 73 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 6e 67 ypes.(\"image/jpeg\".\"image/png
16780 5c 22 29 29 29 0a 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 \")))...STREAM.is.a.boolean.to.t
167a0 6f 67 67 6c 65 20 73 74 72 65 61 6d 69 6e 67 20 72 65 73 70 6f 6e 73 65 73 2c 20 64 65 66 61 75 oggle.streaming.responses,.defau
167c0 6c 74 73 20 74 6f 0a 66 61 6c 73 65 2e 0a 0a 50 52 4f 54 4f 43 4f 4c 20 28 6f 70 74 69 6f 6e 61 lts.to.false...PROTOCOL.(optiona
167e0 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 20 l).specifies.the.protocol,.http.
16800 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 29 by.default...ENDPOINT.(optional)
16820 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 74 .is.the.API.endpoint.for.complet
16840 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 67 65 6e 65 72 61 74 ions,.defaults.to.\"/api/generat
16860 65 5c 22 2e 0a 0a 48 45 41 44 45 52 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 66 6f 72 20 61 e\"...HEADER.(optional).is.for.a
16880 64 64 69 74 69 6f 6e 61 6c 20 68 65 61 64 65 72 73 20 74 6f 20 73 65 6e 64 20 77 69 74 68 20 65 dditional.headers.to.send.with.e
168a0 61 63 68 0a 72 65 71 75 65 73 74 2e 20 20 49 74 20 73 68 6f 75 6c 64 20 62 65 20 61 6e 20 61 6c ach.request...It.should.be.an.al
168c0 69 73 74 20 6f 72 20 61 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 72 65 74 75 6e 73 20 61 6e ist.or.a.function.that.retuns.an
168e0 0a 61 6c 69 73 74 2c 20 6c 69 6b 65 3a 0a 20 28 28 5c 22 43 6f 6e 74 65 6e 74 2d 54 79 70 65 5c .alist,.like:..((\"Content-Type\
16900 22 20 2e 20 5c 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 6a 73 6f 6e 5c 22 29 29 0a 0a 4b 45 59 20 "...\"application/json\"))..KEY.
16920 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 61 20 76 61 72 69 61 62 6c 65 20 77 68 6f 73 65 20 76 (optional).is.a.variable.whose.v
16940 61 6c 75 65 20 69 73 20 74 68 65 20 41 50 49 20 6b 65 79 2c 20 6f 72 0a 66 75 6e 63 74 69 6f 6e alue.is.the.API.key,.or.function
16960 20 74 68 61 74 20 72 65 74 75 72 6e 73 20 74 68 65 20 6b 65 79 2e 20 20 54 68 69 73 20 69 73 20 .that.returns.the.key...This.is.
16980 74 79 70 69 63 61 6c 6c 79 20 6e 6f 74 20 72 65 71 75 69 72 65 64 0a 66 6f 72 20 6c 6f 63 61 6c typically.not.required.for.local
169a0 20 6d 6f 64 65 6c 73 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 .models.like.Ollama...REQUEST-PA
169c0 52 41 4d 53 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 61 20 70 6c 69 73 74 20 6f 66 20 61 64 RAMS.(optional).is.a.plist.of.ad
169e0 64 69 74 69 6f 6e 61 6c 20 48 54 54 50 20 72 65 71 75 65 73 74 0a 70 61 72 61 6d 65 74 65 72 73 ditional.HTTP.request.parameters
16a00 20 28 61 73 20 70 6c 69 73 74 20 6b 65 79 73 29 20 61 6e 64 20 76 61 6c 75 65 73 20 73 75 70 70 .(as.plist.keys).and.values.supp
16a20 6f 72 74 65 64 20 62 79 20 74 68 65 20 41 50 49 2e 20 20 55 73 65 0a 74 68 65 73 65 20 74 6f 20 orted.by.the.API...Use.these.to.
16a40 73 65 74 20 70 61 72 61 6d 65 74 65 72 73 20 74 68 61 74 20 67 70 74 65 6c 20 64 6f 65 73 20 6e set.parameters.that.gptel.does.n
16a60 6f 74 20 70 72 6f 76 69 64 65 20 75 73 65 72 20 6f 70 74 69 6f 6e 73 0a 66 6f 72 2e 0a 0a 45 78 ot.provide.user.options.for...Ex
16a80 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 2d 6f 6c 6c ample:.-------...(gptel-make-oll
16aa0 61 6d 61 0a 20 20 20 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 ama....\"Ollama\"....:host.\"loc
16ac0 61 6c 68 6f 73 74 3a 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 alhost:11434\"....:models.\\='(m
16ae0 69 73 74 72 61 6c 3a 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 istral:latest)....:stream.t)"...
16b00 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
16b20 63 6b 65 6e 64 20 28 67 70 74 65 6c 2d 2d 6d 61 6b 65 2d 6f 6c 6c 61 6d 61 0a 20 20 20 20 20 20 ckend.(gptel--make-ollama.......
16b40 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 75 72 6c 2d 61 72 67 73 20 63 75 72 6c 2d 61 72 67 73 ............:curl-args.curl-args
16b60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6e 61 6d 65 20 6e 61 6d 65 0a 20 20 ...................:name.name...
16b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 68 6f 73 74 20 68 6f 73 74 0a 20 20 20 20 20 ................:host.host......
16ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 68 65 61 64 65 72 20 68 65 61 64 65 72 0a 20 20 20 20 .............:header.header.....
16bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6b 65 79 20 6b 65 79 0a 20 20 20 20 20 20 20 20 20 ..............:key.key..........
16be0 20 20 20 20 20 20 20 20 20 3a 6d 6f 64 65 6c 73 20 28 67 70 74 65 6c 2d 2d 70 72 6f 63 65 73 73 .........:models.(gptel--process
16c00 2d 6d 6f 64 65 6c 73 20 6d 6f 64 65 6c 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -models.models).................
16c20 20 20 3a 70 72 6f 74 6f 63 6f 6c 20 70 72 6f 74 6f 63 6f 6c 0a 20 20 20 20 20 20 20 20 20 20 20 ..:protocol.protocol............
16c40 20 20 20 20 20 20 20 3a 65 6e 64 70 6f 69 6e 74 20 65 6e 64 70 6f 69 6e 74 0a 20 20 20 20 20 20 .......:endpoint.endpoint.......
16c60 20 20 20 20 20 20 20 20 20 20 20 20 3a 73 74 72 65 61 6d 20 73 74 72 65 61 6d 0a 20 20 20 20 20 ............:stream.stream......
16c80 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 20 72 65 71 .............:request-params.req
16ca0 75 65 73 74 2d 70 61 72 61 6d 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 75 uest-params...................:u
16cc0 72 6c 20 28 69 66 20 70 72 6f 74 6f 63 6f 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rl.(if.protocol.................
16ce0 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 70 72 6f 74 6f 63 6f 6c 20 22 3a 2f 2f ...........(concat.protocol."://
16d00 22 20 68 6f 73 74 20 65 6e 64 70 6f 69 6e 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ".host.endpoint)................
16d20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 68 6f 73 74 20 65 6e 64 70 6f 69 6e 74 29 ..........(concat.host.endpoint)
16d40 29 29 29 29 0a 20 20 20 20 28 70 72 6f 67 31 20 62 61 63 6b 65 6e 64 0a 20 20 20 20 20 20 28 73 )))).....(prog1.backend.......(s
16d60 65 74 66 20 28 61 6c 69 73 74 2d 67 65 74 20 6e 61 6d 65 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e etf.(alist-get.name.gptel--known
16d80 2d 62 61 63 6b 65 6e 64 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -backends.......................
16da0 20 6e 69 6c 20 6e 69 6c 20 23 27 65 71 75 61 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .nil.nil.#'equal)...............
16dc0 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 6c ....backend))))..(provide.'gptel
16de0 2d 6f 6c 6c 61 6d 61 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 -ollama).;;;.gptel-ollama.el.end
16e00 73 20 68 65 72 65 0a 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 s.here..........................
16e20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16e40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16e60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16e80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16ea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16ec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16ee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16f00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16f20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16f60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17000 67 70 74 65 6c 2d 30 2e 39 2e 38 2f 67 70 74 65 6c 2d 63 75 72 6c 2e 65 6c 00 00 00 00 00 00 00 gptel-0.9.8/gptel-curl.el.......
17020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17060 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
17080 30 30 35 30 34 33 37 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 33 37 31 33 00 20 30 00 00 00 0050437.00000000000.013713..0...
170a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
170c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
170e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17100 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...................
17120 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...................
17140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
171a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
171c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
171e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17200 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
17220 72 74 20 66 6f 72 20 47 50 54 65 6c 20 20 20 20 20 20 20 20 20 2d 2a 2d 20 6c 65 78 69 63 61 6c rt.for.GPTel.........-*-.lexical
17240 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.(
17260 43 29 20 32 30 32 33 20 20 4b 61 72 74 68 69 6b 20 43 68 69 6b 6d 61 67 61 6c 75 72 0a 0a 3b 3b C).2023..Karthik.Chikmagalur..;;
17280 20 41 75 74 68 6f 72 3a 20 4b 61 72 74 68 69 6b 20 43 68 69 6b 6d 61 67 61 6c 75 72 3b 3b 20 3c .Author:.Karthik.Chikmagalur;;.<
172a0 6b 61 72 74 68 69 6b 63 68 69 6b 6d 61 67 61 6c 75 72 40 67 6d 61 69 6c 2e 63 6f 6d 3e 0a 3b 3b karthikchikmagalur@gmail.com>.;;
172c0 20 4b 65 79 77 6f 72 64 73 3a 20 63 6f 6e 76 65 6e 69 65 6e 63 65 0a 0a 3b 3b 20 53 50 44 58 2d .Keywords:.convenience..;;.SPDX-
172e0 4c 69 63 65 6e 73 65 2d 49 64 65 6e 74 69 66 69 65 72 3a 20 47 50 4c 2d 33 2e 30 2d 6f 72 2d 6c License-Identifier:.GPL-3.0-or-l
17300 61 74 65 72 0a 0a 3b 3b 20 54 68 69 73 20 70 72 6f 67 72 61 6d 20 69 73 20 66 72 65 65 20 73 6f ater..;;.This.program.is.free.so
17320 66 74 77 61 72 65 3b 20 79 6f 75 20 63 61 6e 20 72 65 64 69 73 74 72 69 62 75 74 65 20 69 74 20 ftware;.you.can.redistribute.it.
17340 61 6e 64 2f 6f 72 20 6d 6f 64 69 66 79 0a 3b 3b 20 69 74 20 75 6e 64 65 72 20 74 68 65 20 74 65 and/or.modify.;;.it.under.the.te
17360 72 6d 73 20 6f 66 20 74 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 rms.of.the.GNU.General.Public.Li
17380 63 65 6e 73 65 20 61 73 20 70 75 62 6c 69 73 68 65 64 20 62 79 0a 3b 3b 20 74 68 65 20 46 72 65 cense.as.published.by.;;.the.Fre
173a0 65 20 53 6f 66 74 77 61 72 65 20 46 6f 75 6e 64 61 74 69 6f 6e 2c 20 65 69 74 68 65 72 20 76 65 e.Software.Foundation,.either.ve
173c0 72 73 69 6f 6e 20 33 20 6f 66 20 74 68 65 20 4c 69 63 65 6e 73 65 2c 20 6f 72 0a 3b 3b 20 28 61 rsion.3.of.the.License,.or.;;.(a
173e0 74 20 79 6f 75 72 20 6f 70 74 69 6f 6e 29 20 61 6e 79 20 6c 61 74 65 72 20 76 65 72 73 69 6f 6e t.your.option).any.later.version
17400 2e 0a 0a 3b 3b 20 54 68 69 73 20 70 72 6f 67 72 61 6d 20 69 73 20 64 69 73 74 72 69 62 75 74 65 ...;;.This.program.is.distribute
17420 64 20 69 6e 20 74 68 65 20 68 6f 70 65 20 74 68 61 74 20 69 74 20 77 69 6c 6c 20 62 65 20 75 73 d.in.the.hope.that.it.will.be.us
17440 65 66 75 6c 2c 0a 3b 3b 20 62 75 74 20 57 49 54 48 4f 55 54 20 41 4e 59 20 57 41 52 52 41 4e 54 eful,.;;.but.WITHOUT.ANY.WARRANT
17460 59 3b 20 77 69 74 68 6f 75 74 20 65 76 65 6e 20 74 68 65 20 69 6d 70 6c 69 65 64 20 77 61 72 72 Y;.without.even.the.implied.warr
17480 61 6e 74 79 20 6f 66 0a 3b 3b 20 4d 45 52 43 48 41 4e 54 41 42 49 4c 49 54 59 20 6f 72 20 46 49 anty.of.;;.MERCHANTABILITY.or.FI
174a0 54 4e 45 53 53 20 46 4f 52 20 41 20 50 41 52 54 49 43 55 4c 41 52 20 50 55 52 50 4f 53 45 2e 20 TNESS.FOR.A.PARTICULAR.PURPOSE..
174c0 20 53 65 65 20 74 68 65 0a 3b 3b 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c .See.the.;;.GNU.General.Public.L
174e0 69 63 65 6e 73 65 20 66 6f 72 20 6d 6f 72 65 20 64 65 74 61 69 6c 73 2e 0a 0a 3b 3b 20 59 6f 75 icense.for.more.details...;;.You
17500 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.
17520 74 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 0a 3b the.GNU.General.Public.License.;
17540 3b 20 61 6c 6f 6e 67 20 77 69 74 68 20 74 68 69 73 20 70 72 6f 67 72 61 6d 2e 20 20 49 66 20 6e ;.along.with.this.program...If.n
17560 6f 74 2c 20 73 65 65 20 3c 68 74 74 70 73 3a 2f 2f 77 77 77 2e 67 6e 75 2e 6f 72 67 2f 6c 69 63 ot,.see.<https://www.gnu.org/lic
17580 65 6e 73 65 73 2f 3e 2e 0a 0a 3b 3b 3b 20 43 6f 6d 6d 65 6e 74 61 72 79 3a 0a 0a 3b 3b 20 43 75 enses/>...;;;.Commentary:..;;.Cu
175a0 72 6c 20 73 75 70 70 6f 72 74 20 66 6f 72 20 47 50 54 65 6c 2e 20 20 55 74 69 6c 69 74 79 20 66 rl.support.for.GPTel...Utility.f
175c0 75 6e 63 74 69 6f 6e 73 2e 0a 0a 3b 3b 3b 20 43 6f 64 65 3a 0a 0a 28 72 65 71 75 69 72 65 20 27 unctions...;;;.Code:..(require.'
175e0 67 70 74 65 6c 29 0a 0a 28 65 76 61 6c 2d 77 68 65 6e 2d 63 6f 6d 70 69 6c 65 0a 20 20 28 72 65 gptel)..(eval-when-compile...(re
17600 71 75 69 72 65 20 27 63 6c 2d 6c 69 62 29 0a 20 20 28 72 65 71 75 69 72 65 20 27 73 75 62 72 2d quire.'cl-lib)...(require.'subr-
17620 78 29 29 0a 28 72 65 71 75 69 72 65 20 27 6d 61 70 29 0a 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e x)).(require.'map)..(declare-fun
17640 63 74 69 6f 6e 20 6a 73 6f 6e 2d 72 65 61 64 20 22 6a 73 6f 6e 22 20 28 29 29 0a 28 64 65 66 76 ction.json-read."json".()).(defv
17660 61 72 20 6a 73 6f 6e 2d 6f 62 6a 65 63 74 2d 74 79 70 65 29 0a 0a 28 64 65 63 6c 61 72 65 2d 66 ar.json-object-type)..(declare-f
17680 75 6e 63 74 69 6f 6e 20 67 70 74 65 6c 2d 2d 73 74 72 65 61 6d 2d 63 6f 6e 76 65 72 74 2d 6d 61 unction.gptel--stream-convert-ma
176a0 72 6b 64 6f 77 6e 2d 3e 6f 72 67 20 22 67 70 74 65 6c 2d 6f 72 67 22 29 0a 0a 28 64 65 66 63 6f rkdown->org."gptel-org")..(defco
176c0 6e 73 74 20 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 63 6f 6d 6d 6f 6e 2d 61 72 67 73 0a 20 20 28 69 nst.gptel-curl--common-args...(i
176e0 66 20 28 6d 65 6d 71 20 73 79 73 74 65 6d 2d 74 79 70 65 20 27 28 77 69 6e 64 6f 77 73 2d 6e 74 f.(memq.system-type.'(windows-nt
17700 20 6d 73 2d 64 6f 73 29 29 0a 20 20 20 20 20 20 27 28 22 2d 2d 64 69 73 61 62 6c 65 22 20 22 2d .ms-dos)).......'("--disable"."-
17720 2d 6c 6f 63 61 74 69 6f 6e 22 20 22 2d 2d 73 69 6c 65 6e 74 22 20 22 2d 58 50 4f 53 54 22 0a 20 -location"."--silent"."-XPOST"..
17740 20 20 20 20 20 20 20 22 2d 79 33 30 30 22 20 22 2d 59 31 22 20 22 2d 44 2d 22 29 0a 20 20 20 20 ......."-y300"."-Y1"."-D-").....
17760 27 28 22 2d 2d 64 69 73 61 62 6c 65 22 20 22 2d 2d 6c 6f 63 61 74 69 6f 6e 22 20 22 2d 2d 73 69 '("--disable"."--location"."--si
17780 6c 65 6e 74 22 20 22 2d 2d 63 6f 6d 70 72 65 73 73 65 64 22 0a 20 20 20 20 20 20 22 2d 58 50 4f lent"."--compressed"......."-XPO
177a0 53 54 22 20 22 2d 79 33 30 30 22 20 22 2d 59 31 22 20 22 2d 44 2d 22 29 29 0a 20 20 22 41 72 67 ST"."-y300"."-Y1"."-D-"))..."Arg
177c0 75 6d 65 6e 74 73 20 61 6c 77 61 79 73 20 70 61 73 73 65 64 20 74 6f 20 43 75 72 6c 20 66 6f 72 uments.always.passed.to.Curl.for
177e0 20 67 70 74 65 6c 20 71 75 65 72 69 65 73 2e 22 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d .gptel.queries.")..(defun.gptel-
17800 63 75 72 6c 2d 2d 67 65 74 2d 61 72 67 73 20 28 69 6e 66 6f 20 74 6f 6b 65 6e 29 0a 20 20 22 50 curl--get-args.(info.token)..."P
17820 72 6f 64 75 63 65 20 6c 69 73 74 20 6f 66 20 61 72 67 75 6d 65 6e 74 73 20 66 6f 72 20 63 61 6c roduce.list.of.arguments.for.cal
17840 6c 69 6e 67 20 43 75 72 6c 2e 0a 0a 52 45 51 55 45 53 54 2d 44 41 54 41 20 69 73 20 74 68 65 20 ling.Curl...REQUEST-DATA.is.the.
17860 64 61 74 61 20 74 6f 20 73 65 6e 64 2c 20 54 4f 4b 45 4e 20 69 73 20 61 20 75 6e 69 71 75 65 20 data.to.send,.TOKEN.is.a.unique.
17880 69 64 65 6e 74 69 66 69 65 72 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 64 61 74 61 20 28 70 6c 69 identifier."...(let*.((data.(pli
178a0 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 64 61 74 61 29 29 0a 20 20 20 20 20 20 20 20 20 3b 3b 20 st-get.info.:data))..........;;.
178c0 57 65 20 68 61 76 65 20 74 6f 20 6c 65 74 2d 62 69 6e 64 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e We.have.to.let-bind.the.followin
178e0 67 20 74 77 6f 20 76 61 72 69 61 62 6c 65 73 20 73 69 6e 63 65 20 74 68 65 69 72 20 64 79 6e 61 g.two.variables.since.their.dyna
17900 6d 69 63 0a 20 20 20 20 20 20 20 20 20 3b 3b 20 76 61 6c 75 65 73 20 61 72 65 20 75 73 65 64 20 mic..........;;.values.are.used.
17920 66 6f 72 20 6b 65 79 20 6c 6f 6f 6b 75 70 20 61 6e 64 20 75 72 6c 20 72 65 73 6f 6c 6f 75 74 69 for.key.lookup.and.url.resolouti
17940 6f 6e 0a 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 28 70 6c 69 73 on..........(gptel-backend.(plis
17960 74 2d 67 65 74 20 69 6e 66 6f 20 3a 62 61 63 6b 65 6e 64 29 29 0a 20 20 20 20 20 20 20 20 20 28 t-get.info.:backend))..........(
17980 67 70 74 65 6c 2d 73 74 72 65 61 6d 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 73 74 gptel-stream.(plist-get.info.:st
179a0 72 65 61 6d 29 29 0a 20 20 20 20 20 20 20 20 20 28 75 72 6c 20 28 6c 65 74 20 28 28 62 61 63 6b ream))..........(url.(let.((back
179c0 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 20 67 70 74 65 6c end-url.(gptel-backend-url.gptel
179e0 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 20 20 28 69 66 20 -backend))).................(if.
17a00 28 66 75 6e 63 74 69 6f 6e 70 20 62 61 63 6b 65 6e 64 2d 75 72 6c 29 0a 20 20 20 20 20 20 20 20 (functionp.backend-url).........
17a20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 62 61 63 6b 65 6e 64 2d 75 72 6c ............(funcall.backend-url
17a40 29 20 62 61 63 6b 65 6e 64 2d 75 72 6c 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 64 61 74 61 2d ).backend-url)))..........(data-
17a60 6a 73 6f 6e 20 28 65 6e 63 6f 64 65 2d 63 6f 64 69 6e 67 2d 73 74 72 69 6e 67 20 28 67 70 74 65 json.(encode-coding-string.(gpte
17a80 6c 2d 2d 6a 73 6f 6e 2d 65 6e 63 6f 64 65 20 64 61 74 61 29 20 27 75 74 66 2d 38 29 29 0a 20 20 l--json-encode.data).'utf-8))...
17aa0 20 20 20 20 20 20 20 28 68 65 61 64 65 72 73 0a 20 20 20 20 20 20 20 20 20 20 28 61 70 70 65 6e .......(headers...........(appen
17ac0 64 20 27 28 28 22 43 6f 6e 74 65 6e 74 2d 54 79 70 65 22 20 2e 20 22 61 70 70 6c 69 63 61 74 69 d.'(("Content-Type"..."applicati
17ae0 6f 6e 2f 6a 73 6f 6e 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 on/json"))...................(wh
17b00 65 6e 2d 6c 65 74 2a 20 28 28 68 65 61 64 65 72 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d en-let*.((header.(gptel-backend-
17b20 68 65 61 64 65 72 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 29 29 0a 20 20 20 20 20 20 20 20 header.gptel-backend))).........
17b40 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 68 65 61 64 65 ............(if.(functionp.heade
17b60 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 r).........................(func
17b80 61 6c 6c 20 68 65 61 64 65 72 29 20 68 65 61 64 65 72 29 29 29 29 29 0a 20 20 20 20 28 77 68 65 all.header).header))))).....(whe
17ba0 6e 20 67 70 74 65 6c 2d 6c 6f 67 2d 6c 65 76 65 6c 0a 20 20 20 20 20 20 28 77 68 65 6e 20 28 65 n.gptel-log-level.......(when.(e
17bc0 71 20 67 70 74 65 6c 2d 6c 6f 67 2d 6c 65 76 65 6c 20 27 64 65 62 75 67 29 0a 20 20 20 20 20 20 q.gptel-log-level.'debug).......
17be0 20 20 28 67 70 74 65 6c 2d 2d 6c 6f 67 20 28 67 70 74 65 6c 2d 2d 6a 73 6f 6e 2d 65 6e 63 6f 64 ..(gptel--log.(gptel--json-encod
17c00 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 61 72 20 28 e......................(mapcar.(
17c20 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 28 63 61 72 lambda.(pair).(cons.(intern.(car
17c40 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 20 20 20 20 .pair)).(cdr.pair)))............
17c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 65 61 64 65 72 73 29 29 0a 20 20 20 20 ..................headers)).....
17c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 72 65 71 75 65 73 74 20 68 65 61 64 65 72 73 ................"request.headers
17ca0 22 29 29 0a 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 6c 6f 67 20 64 61 74 61 2d 6a 73 6f 6e 20 ")).......(gptel--log.data-json.
17cc0 22 72 65 71 75 65 73 74 20 62 6f 64 79 22 29 29 0a 20 20 20 20 28 61 70 70 65 6e 64 0a 20 20 20 "request.body")).....(append....
17ce0 20 20 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 63 6f 6d 6d 6f 6e 2d 61 72 67 73 0a 20 20 20 20 20 28 ..gptel-curl--common-args......(
17d00 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 63 75 72 6c 2d 61 72 67 73 20 67 70 74 65 6c 2d 62 61 gptel-backend-curl-args.gptel-ba
17d20 63 6b 65 6e 64 29 0a 20 20 20 20 20 28 6c 69 73 74 20 28 66 6f 72 6d 61 74 20 22 2d 77 28 25 73 ckend)......(list.(format."-w(%s
17d40 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 20 ...%%{size_header})".token))....
17d60 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 63 ..(if.(length<.data-json.gptel-c
17d80 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 20 url-file-size-threshold)........
17da0 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 6e ..(list.(format."-d%s".data-json
17dc0 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 74 ))........(letrec............((t
17de0 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 70 emp-filename.(make-temp-file."gp
17e00 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 2d tel-curl-data".nil.".json".data-
17e20 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 28 json)).............(cleanup-fn.(
17e40 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 20 lambda.(&rest._)................
17e60 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 20 ...........(when.(file-exists-p.
17e80 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 20 temp-filename)..................
17ea0 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 6c ...........(delete-file.temp-fil
17ec0 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 20 ename)..........................
17ee0 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 70 ...(remove-hook.'gptel-post-resp
17f00 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 20 onse-functions.cleanup-fn)))))..
17f20 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 65 ........(add-hook.'gptel-post-re
17f40 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 20 sponse-functions.cleanup-fn)....
17f60 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 20 ......(list."--data-binary".....
17f80 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 69 ...........(format."@%s".temp-fi
17fa0 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 69 lename))))......(when.(not.(stri
17fc0 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 20 ng-empty-p.gptel-proxy))........
17fe0 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 20 (list."--proxy".gptel-proxy.....
18000 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 20 ........."--proxy-negotiate"....
18020 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 20 .........."--proxy-user".":"))..
18040 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 20 ....(cl-loop.for.(key...val).in.
18060 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 66 headers...............collect.(f
18080 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 20 ormat."-H%s:.%s".key.val))......
180a0 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 6e (list.url))))..;;TODO:.The.:tran
180c0 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 65 sformer.argument.here.is.an.alte
180e0 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 6c rnate.implementation.of.;;`gptel
18100 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 65 -response-filter-functions'..The
18120 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 61 .two.need.to.be.unified..;;;###a
18140 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 65 utoload.(defun.gptel-curl-get-re
18160 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 74 sponse.(fsm)..."Fetch.response.t
18180 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 4c o.prompt.in.state.FSM.from.the.L
181a0 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 65 LM.using.Curl...FSM.is.the.state
181c0 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 0a .machine.driving.this.request...
181e0 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 67 FSM.is.the.state.machine.driving
18200 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 6f .this.request...Its.INFO.slot.co
18220 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 74 ntains.the.data.required.for.set
18240 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 0a ting.up.the.request...INFO.is.a.
18260 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 61 plist.with.the.following.keys,.a
18280 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 61 mong.others:.-.:data.....(the.da
182a0 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 20 ta.being.sent).-.:buffer...(the.
182c0 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 65 gptel.buffer).-.:position.(marke
182e0 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 73 r.at.which.to.insert.the.respons
18300 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 72 e)..-.:callback.(optional,.the.r
18320 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 20 equest.callback)..Call.CALLBACK.
18340 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 72 with.the.response.and.INFO.after
18360 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 20 wards...If.omitted.the.response.
18380 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 66 is.inserted.into.the.current.buf
183a0 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 65 fer.after.point."...(let*.((toke
183c0 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 20 n.(md5.(format."%s%s%s%s".......
183e0 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 20 .......................(random).
18400 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 20 (emacs-pid).(user-full-name)....
18420 20 20 20 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 6e ..........................(recen
18440 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 6c t-keys))))..........(info.(gptel
18460 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 61 72 67 73 20 28 -fsm-info.fsm))..........(args.(
18480 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 67 65 74 2d 61 72 67 73 20 69 6e 66 6f 20 74 6f 6b 65 6e 29 gptel-curl--get-args.info.token)
184a0 29 0a 20 20 20 20 20 20 20 20 20 28 73 74 72 65 61 6d 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e )..........(stream.(plist-get.in
184c0 66 6f 20 3a 73 74 72 65 61 6d 29 29 0a 20 20 20 20 20 20 20 20 20 28 70 72 6f 63 65 73 73 20 28 fo.:stream))..........(process.(
184e0 61 70 70 6c 79 20 23 27 73 74 61 72 74 2d 70 72 6f 63 65 73 73 20 22 67 70 74 65 6c 2d 63 75 72 apply.#'start-process."gptel-cur
18500 6c 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 65 6e l"..........................(gen
18520 65 72 61 74 65 2d 6e 65 77 2d 62 75 66 66 65 72 20 22 2a 67 70 74 65 6c 2d 63 75 72 6c 2a 22 29 erate-new-buffer."*gptel-curl*")
18540 20 22 63 75 72 6c 22 20 61 72 67 73 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 28 6d 65 6d 71 20 ."curl".args))).....(when.(memq.
18560 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 2d 64 6f 73 29 system-type.'(windows-nt.ms-dos)
18580 29 0a 20 20 20 20 20 20 3b 3b 20 44 6f 6e 27 74 20 74 72 79 20 74 6f 20 63 6f 6e 76 65 72 74 20 ).......;;.Don't.try.to.convert.
185a0 63 72 2d 6c 66 20 74 6f 20 63 72 20 6f 6e 20 57 69 6e 64 6f 77 73 20 73 6f 20 74 68 61 74 20 63 cr-lf.to.cr.on.Windows.so.that.c
185c0 75 72 6c 27 73 20 22 68 65 61 64 65 72 20 73 69 7a 65 0a 20 20 20 20 20 20 3b 3b 20 69 6e 20 62 url's."header.size.......;;.in.b
185e0 79 74 65 73 22 20 73 74 61 79 73 20 63 6f 72 72 65 63 74 0a 20 20 20 20 20 20 28 73 65 74 2d 70 ytes".stays.correct.......(set-p
18600 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 75 74 rocess-coding-system.process.'ut
18620 66 2d 38 2d 75 6e 69 78 20 27 75 74 66 2d 38 2d 75 6e 69 78 29 29 0a 20 20 20 20 28 77 68 65 6e f-8-unix.'utf-8-unix)).....(when
18640 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 20 .(eq.gptel-log-level.'debug)....
18660 20 20 20 28 67 70 74 65 6c 2d 2d 6c 6f 67 20 28 6d 61 70 63 6f 6e 63 61 74 20 23 27 73 68 65 6c ...(gptel--log.(mapconcat.#'shel
18680 6c 2d 71 75 6f 74 65 2d 61 72 67 75 6d 65 6e 74 20 28 63 6f 6e 73 20 22 63 75 72 6c 22 20 61 72 l-quote-argument.(cons."curl".ar
186a0 67 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 gs).".\\\n")..................."
186c0 72 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 request.Curl.command".'no-json))
186e0 0a 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 70 72 6f 63 65 .....(with-current-buffer.(proce
18700 73 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 73 65 74 2d 70 72 ss-buffer.process).......(set-pr
18720 6f 63 65 73 73 2d 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 ocess-query-on-exit-flag.process
18740 20 6e 69 6c 29 0a 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 .nil).......(if.(plist-get.info.
18760 3a 74 6f 6b 65 6e 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 :token).......;not.the.first.run
18780 2c 20 73 65 74 20 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 ,.set.only.the.token...........(
187a0 70 6c 69 73 74 2d 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 plist-put.info.:token.token)....
187c0 20 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 20 66 73 6d 29 20 .....(setf.(gptel-fsm-info.fsm).
187e0 20 20 20 20 20 3b 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 .....;fist.run,.set.all.process.
18800 70 61 72 61 6d 65 74 65 72 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 63 6f 6e 63 20 parameters...............(nconc.
18820 28 6c 69 73 74 20 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 (list.:token.token..............
18840 20 20 20 20 20 20 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 ..............:transformer......
18860 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 77 69 74 ......................(when.(wit
18880 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 6f h-current-buffer.(plist-get.info
188a0 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 20 20 20 20 20 20 .:buffer).......................
188c0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 28 64 65 72 69 76 65 64 2d 6d 6f 64 65 2d .............(and.(derived-mode-
188e0 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)....................
18900 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 6f 72 67 2d 63 .....................gptel-org-c
18920 6f 6e 76 65 72 74 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 onvert-response))...............
18940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 73 74 72 65 61 6d 2d 63 6f ...............(gptel--stream-co
18960 6e 76 65 72 74 2d 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 nvert-markdown->org.............
18980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 ..................(plist-get.inf
189a0 6f 20 3a 70 6f 73 69 74 69 6f 6e 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 o.:position)))).................
189c0 20 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 63 61 .....(unless.(plist-get.info.:ca
189e0 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 20 20 20 28 llback)........................(
18a00 6c 69 73 74 20 3a 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 list.:callback.(if.stream.......
18a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
18a40 20 20 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 .....#'gptel-curl--stream-insert
18a60 2d 72 65 73 70 6f 6e 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -response.......................
18a80 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
18aa0 72 74 2d 72 65 73 70 6f 6e 73 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rt-response)))..................
18ac0 20 20 20 20 69 6e 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 ....info))).......(if.stream....
18ae0 20 20 20 20 20 20 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 .......(progn.(set-process-senti
18b00 6e 65 6c 20 70 72 6f 63 65 73 73 20 23 27 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 73 74 72 65 61 6d nel.process.#'gptel-curl--stream
18b20 2d 63 6c 65 61 6e 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 -cleanup)..................(set-
18b40 70 72 6f 63 65 73 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 process-filter.process.#'gptel-c
18b60 75 72 6c 2d 2d 73 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 url--stream-filter)).........(se
18b80 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 67 70 74 t-process-sentinel.process.#'gpt
18ba0 65 6c 2d 63 75 72 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 el-curl--sentinel)).......(setf.
18bc0 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
18be0 74 2d 61 6c 69 73 74 29 20 66 73 6d 29 29 29 29 0a 0a 3b 3b 20 3b 3b 20 41 68 65 61 64 2d 4f 66 t-alist).fsm))))..;;.;;.Ahead-Of
18c00 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 65 20 70 61 72 73 -Time.dispatch.code.for.the.pars
18c20 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 2d 2d 67 65 6e 65 ers.;;.:parser.;.FIXME.`cl--gene
18c40 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 6f 6e 73 0a 3b 3b ric-*'.are.internal.functions.;;
18c60 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 69 6f 6e 0a 3b 3b .(cl--generic-method-function.;;
18c80 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 6f 6f 70 0a 3b 3b ..(if.stream.;;......(cl-loop.;;
18ca0 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 20 20 28 63 6c 2d .......for.type.in.;;.......(cl-
18cc0 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 70 65 2d 6f 66 20 -class-allparents.(get.(type-of.
18ce0 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 20 20 20 20 20 77 backend).'cl--class)).;;.......w
18d00 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 2d 6d 65 74 68 6f ith.methods.=.(cl--generic-metho
18d20 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 20 20 20 20 20 20 d-table.;;......................
18d40 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 2d 70 61 72 73 65 .(cl--generic.'gptel-curl--parse
18d60 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 6c 2d 2d 67 65 6e -stream)).;;.......when.(cl--gen
18d80 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 20 74 29 20 6e 69 eric-member-method.`(,type.t).ni
18da0 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 20 28 63 61 72 20 l.methods).;;.......return.(car.
18dc0 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 20 66 6f 72 20 74 it)).;;....(cl-loop.;;.....for.t
18de0 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 6c 6c 70 61 72 65 ype.in.;;.....(cl--class-allpare
18e00 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 20 27 63 6c 2d 2d nts.(get.(type-of.backend).'cl--
18e20 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 73 20 3d 20 28 63 class)).;;.....with.methods.=.(c
18e40 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 20 20 20 20 20 20 l--generic-method-table.;;......
18e60 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 63 20 27 67 70 74 ...............(cl--generic.'gpt
18e80 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 20 20 77 68 65 6e el--parse-response)).;;.....when
18ea0 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 64 20 60 28 2c 74 .(cl--generic-member-method.`(,t
18ec0 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 20 20 20 72 65 74 ype.t.t).nil.methods).;;.....ret
18ee0 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 74 65 6c 2d 63 75 urn.(car.it))))..(defun.gptel-cu
18f00 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 20 70 72 6f 63 2d rl--log-response.(proc-buf.proc-
18f20 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 66 66 65 72 20 50 info)..."Parse.response.buffer.P
18f40 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 0a 50 52 4f 43 2d ROC-BUF.and.log.response...PROC-
18f60 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 6e 67 20 70 72 6f INFO.is.the.plist.containing.pro
18f80 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 72 72 65 6e 74 2d cess.metadata."...(with-current-
18fa0 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 65 78 63 75 72 73 buffer.proc-buf.....(save-excurs
18fc0 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 74 2d 6d 69 6e 29 ion.......(goto-char.(point-min)
18fe0 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 6f 72 77 61 72 64 ).......(when.(re-search-forward
19000 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 20 28 77 68 65 6e .".?\n.?\n".nil.t).........(when
19020 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 20 .(eq.gptel-log-level.'debug)....
19040 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 6c 6f 67 20 28 67 70 74 65 6c 2d 2d 6a 73 6f 6e 2d .......(gptel--log.(gptel--json-
19060 65 6e 63 6f 64 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 encode........................(b
19080 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...
190a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6f 69 6e 74 2d 6d 69 6e ......................(point-min
190c0 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 20 20 20 20 20 20 ).(1-.(point))))................
190e0 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 29 0a 20 20 20 20 ......."response.headers")).....
19100 20 20 20 20 28 6c 65 74 20 28 28 70 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 ....(let.((p.(point)))..........
19120 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 69 73 74 2d 67 65 .(when.(search-forward.(plist-ge
19140 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 0a 20 20 20 20 20 t.proc-info.:token).nil.t)......
19160 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 63 68 2d 62 65 67 .......(goto-char.(1-.(match-beg
19180 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 70 74 65 6c 2d 2d inning.0))).............(gptel--
191a0 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 72 6f 70 65 72 74 log.(buffer-substring-no-propert
191c0 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 20 20 20 20 20 20 ies.p.(point))..................
191e0 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 29 29 29 0a 0a 3b ......."response.body")))))))..;
19200 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 61 67 69 6e 67 20 ;.TODO:.Separate.user-messaging.
19220 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 67 70 74 65 6c 2d from.this.function.(defun.gptel-
19240 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 65 73 73 20 5f 73 curl--stream-cleanup.(process._s
19260 74 61 74 75 73 29 0a 20 20 22 50 72 6f 63 65 73 73 20 73 65 6e 74 69 6e 65 6c 20 66 6f 72 20 47 tatus)..."Process.sentinel.for.G
19280 50 54 65 6c 20 63 75 72 6c 20 72 65 71 75 65 73 74 73 2e 0a 0a 50 52 4f 43 45 53 53 20 61 6e 64 PTel.curl.requests...PROCESS.and
192a0 20 5f 53 54 41 54 55 53 20 61 72 65 20 70 72 6f 63 65 73 73 20 70 61 72 61 6d 65 74 65 72 73 2e ._STATUS.are.process.parameters.
192c0 22 0a 20 20 28 6c 65 74 20 28 28 70 72 6f 63 2d 62 75 66 20 28 70 72 6f 63 65 73 73 2d 62 75 66 "...(let.((proc-buf.(process-buf
192e0 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 28 66 73 6d 20 28 fer.process))).....(let*.((fsm.(
19300 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 74 alist-get.process.gptel--request
19320 2d 61 6c 69 73 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 66 6f 20 28 67 70 74 65 6c -alist))............(info.(gptel
19340 2d 66 73 6d 2d 69 6e 66 6f 20 66 73 6d 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 68 74 74 70 -fsm-info.fsm))............(http
19360 2d 73 74 61 74 75 73 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 68 74 74 70 2d 73 74 -status.(plist-get.info.:http-st
19380 61 74 75 73 29 29 29 0a 20 20 20 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 6c 6f 67 2d 6c 65 atus))).......(when.gptel-log-le
193a0 76 65 6c 20 28 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 6c 6f 67 2d 72 65 73 70 6f 6e 73 65 20 70 72 vel.(gptel-curl--log-response.pr
193c0 6f 63 2d 62 75 66 20 69 6e 66 6f 29 29 20 3b 6c 6f 67 67 69 6e 67 0a 20 20 20 20 20 20 28 69 66 oc-buf.info)).;logging.......(if
193e0 20 28 6d 65 6d 62 65 72 20 68 74 74 70 2d 73 74 61 74 75 73 20 27 28 22 32 30 30 22 20 22 31 30 .(member.http-status.'("200"."10
19400 30 22 29 29 20 3b 46 69 6e 69 73 68 20 68 61 6e 64 6c 69 6e 67 20 72 65 73 70 6f 6e 73 65 0a 20 0")).;Finish.handling.response..
19420 20 20 20 20 20 20 20 20 20 3b 3b 20 52 75 6e 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 6f 6e 65 .........;;.Run.the.callback.one
19440 20 6c 61 73 74 20 74 69 6d 65 20 74 6f 20 73 69 67 6e 61 6c 20 74 68 61 74 20 74 68 65 20 70 72 .last.time.to.signal.that.the.pr
19460 6f 63 65 73 73 20 68 61 73 20 65 6e 64 65 64 0a 20 20 20 20 20 20 20 20 20 20 28 77 69 74 68 2d ocess.has.ended...........(with-
19480 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 65 demoted-errors."gptel.callback.e
194a0 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 28 rror:.%S".............(funcall.(
194c0 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 63 61 6c 6c 62 61 63 6b 29 20 74 20 69 6e 66 6f plist-get.info.:callback).t.info
194e0 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 72 20 )).........(with-current-buffer.
19500 70 72 6f 63 2d 62 75 66 20 20 20 3b 20 4f 72 20 43 61 70 74 75 72 65 20 65 72 72 6f 72 20 6d 65 proc-buf...;.Or.Capture.error.me
19520 73 73 61 67 65 0a 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e ssage...........(goto-char.(poin
19540 74 2d 6d 61 78 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 65 61 72 63 68 2d 62 61 63 6b 77 61 t-max))...........(search-backwa
19560 72 64 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 74 6f 6b 65 6e 29 29 0a 20 20 20 20 rd.(plist-get.info.:token)).....
19580 20 20 20 20 20 20 28 62 61 63 6b 77 61 72 64 2d 63 68 61 72 29 0a 20 20 20 20 20 20 20 20 20 20 ......(backward-char)...........
195a0 28 70 63 61 73 65 2d 6c 65 74 2a 20 28 28 60 28 2c 5f 20 2e 20 2c 68 65 61 64 65 72 2d 73 69 7a (pcase-let*.((`(,_...,header-siz
195c0 65 29 20 28 72 65 61 64 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29 29 0a 20 20 20 20 e).(read.(current-buffer))).....
195e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 73 70 6f 6e 73 65 20 28 70 72 ...................(response.(pr
19600 6f 67 6e 20 28 67 6f 74 6f 2d 63 68 61 72 20 68 65 61 64 65 72 2d 73 69 7a 65 29 0a 20 20 20 20 ogn.(goto-char.header-size).....
19620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
19640 20 20 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20 6e 69 6c 20 28 67 70 74 65 6c 2d 2d ....(condition-case.nil.(gptel--
19660 6a 73 6f 6e 2d 72 65 61 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 json-read)......................
19680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 20 27 6a 73 6f .....................(error.'jso
196a0 6e 2d 72 65 61 64 2d 65 72 72 6f 72 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 n-read-error))))................
196c0 20 20 20 20 20 20 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 72 ........(error-data.(plist-get.r
196e0 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 20 20 20 20 20 28 63 esponse.:error))).............(c
19700 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 2d 64 61 74 61 0a 20 20 20 ond..............(error-data....
19720 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 65 72 72 6f ...........(plist-put.info.:erro
19740 72 20 65 72 72 6f 72 2d 64 61 74 61 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 65 71 r.error-data))..............((eq
19760 20 72 65 73 70 6f 6e 73 65 20 27 6a 73 6f 6e 2d 72 65 61 64 2d 65 72 72 6f 72 29 0a 20 20 20 20 .response.'json-read-error).....
19780 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 65 72 72 6f 72 ..........(plist-put.info.:error
197a0 20 22 4d 61 6c 66 6f 72 6d 65 64 20 4a 53 4f 4e 20 69 6e 20 72 65 73 70 6f 6e 73 65 2e 22 29 29 ."Malformed.JSON.in.response."))
197c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f ..............(t.(plist-put.info
197e0 20 3a 65 72 72 6f 72 20 22 43 6f 75 6c 64 20 6e 6f 74 20 70 61 72 73 65 20 48 54 54 50 20 72 65 .:error."Could.not.parse.HTTP.re
19800 73 70 6f 6e 73 65 2e 22 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 64 65 6d 6f sponse."))))).........(with-demo
19820 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 65 72 72 6f 72 ted-errors."gptel.callback.error
19840 3a 20 25 53 22 0a 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 28 70 6c 69 73 74 2d :.%S"...........(funcall.(plist-
19860 67 65 74 20 69 6e 66 6f 20 3a 63 61 6c 6c 62 61 63 6b 29 20 6e 69 6c 20 69 6e 66 6f 29 29 29 0a get.info.:callback).nil.info))).
19880 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
198a0 29 29 20 20 20 20 20 20 3b 20 4d 6f 76 65 20 74 6f 20 6e 65 78 74 20 73 74 61 74 65 0a 20 20 20 ))......;.Move.to.next.state....
198c0 20 28 73 65 74 66 20 28 61 6c 69 73 74 2d 67 65 74 20 70 72 6f 63 65 73 73 20 67 70 74 65 6c 2d .(setf.(alist-get.process.gptel-
198e0 2d 72 65 71 75 65 73 74 2d 61 6c 69 73 74 20 6e 69 6c 20 27 72 65 6d 6f 76 65 29 20 6e 69 6c 29 -request-alist.nil.'remove).nil)
19900 0a 20 20 20 20 28 6b 69 6c 6c 2d 62 75 66 66 65 72 20 70 72 6f 63 2d 62 75 66 29 29 29 0a 0a 28 .....(kill-buffer.proc-buf)))..(
19920 64 65 66 75 6e 20 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 73 74 72 65 61 6d 2d 69 6e 73 65 72 74 2d defun.gptel-curl--stream-insert-
19940 72 65 73 70 6f 6e 73 65 20 28 72 65 73 70 6f 6e 73 65 20 69 6e 66 6f 20 26 6f 70 74 69 6f 6e 61 response.(response.info.&optiona
19960 6c 20 72 61 77 29 0a 20 20 22 49 6e 73 65 72 74 20 73 74 72 65 61 6d 69 6e 67 20 52 45 53 50 4f l.raw)..."Insert.streaming.RESPO
19980 4e 53 45 20 66 72 6f 6d 20 61 6e 20 4c 4c 4d 20 69 6e 74 6f 20 74 68 65 20 67 70 74 65 6c 20 62 NSE.from.an.LLM.into.the.gptel.b
199a0 75 66 66 65 72 2e 0a 0a 49 4e 46 4f 20 69 73 20 61 20 6d 75 74 61 62 6c 65 20 70 6c 69 73 74 20 uffer...INFO.is.a.mutable.plist.
199c0 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 20 containing.information.relevant.
199e0 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 2d to.this.buffer..See.`gptel--url-
19a00 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 69 get-response'.for.details...Opti
19a20 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 65 onal.RAW.disables.text.propertie
19a40 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 70 63 61 73 65 20 s.and.transformation."...(pcase.
19a60 72 65 73 70 6f 6e 73 65 0a 20 20 20 20 28 28 70 72 65 64 20 73 74 72 69 6e 67 70 29 0a 20 20 20 response.....((pred.stringp)....
19a80 20 20 28 6c 65 74 20 28 28 73 74 61 72 74 2d 6d 61 72 6b 65 72 20 28 70 6c 69 73 74 2d 67 65 74 ..(let.((start-marker.(plist-get
19aa0 20 69 6e 66 6f 20 3a 70 6f 73 69 74 69 6f 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 74 72 .info.:position))............(tr
19ac0 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 74 acking-marker.(plist-get.info.:t
19ae0 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 74 72 61 racking-marker))............(tra
19b00 6e 73 66 6f 72 6d 65 72 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 74 72 61 6e 73 66 nsformer.(plist-get.info.:transf
19b20 6f 72 6d 65 72 29 29 29 0a 20 20 20 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 ormer)))........(with-current-bu
19b40 66 66 65 72 20 28 6d 61 72 6b 65 72 2d 62 75 66 66 65 72 20 73 74 61 72 74 2d 6d 61 72 6b 65 72 ffer.(marker-buffer.start-marker
19b60 29 0a 20 20 20 20 20 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 )..........(save-excursion......
19b80 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 0a 20 20 ......(unless.tracking-marker...
19ba0 20 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 73 74 61 72 74 2d 6d 61 72 6b ...........(goto-char.start-mark
19bc0 65 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 6f 72 20 28 62 6f er)..............(unless.(or.(bo
19be0 62 70 29 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 69 6e 2d 70 6c 61 63 65 29 29 0a bp).(plist-get.info.:in-place)).
19c00 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 2d 72 65 73 ...............(insert.gptel-res
19c20 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 20 20 20 20 20 20 20 ponse-separator)................
19c40 28 77 68 65 6e 20 67 70 74 65 6c 2d 6d 6f 64 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (when.gptel-mode................
19c60 20 20 3b 3b 20 50 75 74 20 70 72 65 66 69 78 20 62 65 66 6f 72 65 20 41 49 20 72 65 73 70 6f 6e ..;;.Put.prefix.before.AI.respon
19c80 73 65 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 28 67 70 se...................(insert.(gp
19ca0 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 70 72 65 66 69 78 2d 73 74 72 69 6e 67 29 29 29 0a 20 20 tel-response-prefix-string)))...
19cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 76 65 2d 6d 61 72 6b 65 72 20 73 74 61 72 74 2d .............(move-marker.start-
19ce0 6d 61 72 6b 65 72 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 marker.(point)))..............(s
19d00 65 74 71 20 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 20 28 73 65 74 2d 6d 61 72 6b 65 72 20 etq.tracking-marker.(set-marker.
19d20 28 6d 61 6b 65 2d 6d 61 72 6b 65 72 29 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 20 20 20 20 (make-marker).(point))).........
19d40 20 20 20 20 20 28 73 65 74 2d 6d 61 72 6b 65 72 2d 69 6e 73 65 72 74 69 6f 6e 2d 74 79 70 65 20 .....(set-marker-insertion-type.
19d60 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 tracking-marker.t)..............
19d80 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 (plist-put.info.:tracking-marker
19da0 20 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 67 .tracking-marker))............(g
19dc0 6f 74 6f 2d 63 68 61 72 20 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 29 0a 20 20 20 20 20 20 oto-char.tracking-marker).......
19de0 20 20 20 20 20 28 75 6e 6c 65 73 73 20 72 61 77 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 .....(unless.raw..............(w
19e00 68 65 6e 20 74 72 61 6e 73 66 6f 72 6d 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 hen.transformer................(
19e20 73 65 74 71 20 72 65 73 70 6f 6e 73 65 20 28 66 75 6e 63 61 6c 6c 20 74 72 61 6e 73 66 6f 72 6d setq.response.(funcall.transform
19e40 65 72 20 72 65 73 70 6f 6e 73 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 64 64 er.response)))..............(add
19e60 2d 74 65 78 74 2d 70 72 6f 70 65 72 74 69 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 30 -text-properties...............0
19e80 20 28 6c 65 6e 67 74 68 20 72 65 73 70 6f 6e 73 65 29 20 27 28 67 70 74 65 6c 20 72 65 73 70 6f .(length.response).'(gptel.respo
19ea0 6e 73 65 20 66 72 6f 6e 74 2d 73 74 69 63 6b 79 20 28 67 70 74 65 6c 29 29 0a 20 20 20 20 20 20 nse.front-sticky.(gptel)).......
19ec0 20 20 20 20 20 20 20 20 72 65 73 70 6f 6e 73 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 3b 3b ........response))............;;
19ee0 20 28 72 75 6e 2d 68 6f 6f 6b 73 20 27 67 70 74 65 6c 2d 70 72 65 2d 73 74 72 65 61 6d 2d 68 6f .(run-hooks.'gptel-pre-stream-ho
19f00 6f 6b 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 72 65 73 70 6f 6e 73 65 29 ok)............(insert.response)
19f20 0a 20 20 20 20 20 20 20 20 20 20 20 28 72 75 6e 2d 68 6f 6f 6b 73 20 27 67 70 74 65 6c 2d 70 6f ............(run-hooks.'gptel-po
19f40 73 74 2d 73 74 72 65 61 6d 2d 68 6f 6f 6b 29 29 29 29 29 0a 20 20 20 20 28 60 28 72 65 61 73 6f st-stream-hook))))).....(`(reaso
19f60 6e 69 6e 67 20 2e 20 2c 74 65 78 74 29 0a 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 64 69 73 70 6c ning...,text)......(gptel--displ
19f80 61 79 2d 72 65 61 73 6f 6e 69 6e 67 2d 73 74 72 65 61 6d 20 74 65 78 74 20 69 6e 66 6f 29 29 0a ay-reasoning-stream.text.info)).
19fa0 20 20 20 20 28 60 28 74 6f 6f 6c 2d 63 61 6c 6c 20 2e 20 2c 74 6f 6f 6c 2d 63 61 6c 6c 73 29 0a ....(`(tool-call...,tool-calls).
19fc0 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 63 61 6c 6c 73 20 .....(gptel--display-tool-calls.
19fe0 74 6f 6f 6c 2d 63 61 6c 6c 73 20 69 6e 66 6f 29 29 0a 20 20 20 20 28 60 28 74 6f 6f 6c 2d 72 65 tool-calls.info)).....(`(tool-re
1a000 73 75 6c 74 20 2e 20 2c 74 6f 6f 6c 2d 72 65 73 75 6c 74 73 29 0a 20 20 20 20 20 28 67 70 74 65 sult...,tool-results)......(gpte
1a020 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
1a040 75 6c 74 73 20 69 6e 66 6f 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 63 75 72 6c ults.info))))..(defun.gptel-curl
1a060 2d 2d 73 74 72 65 61 6d 2d 66 69 6c 74 65 72 20 28 70 72 6f 63 65 73 73 20 6f 75 74 70 75 74 29 --stream-filter.(process.output)
1a080 0a 20 20 28 6c 65 74 2a 20 28 28 66 73 6d 20 28 61 6c 69 73 74 2d 67 65 74 20 70 72 6f 63 65 73 ...(let*.((fsm.(alist-get.proces
1a0a0 73 20 67 70 74 65 6c 2d 2d 72 65 71 75 65 73 74 2d 61 6c 69 73 74 29 29 0a 20 20 20 20 20 20 20 s.gptel--request-alist))........
1a0c0 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 66 73 6d ..(proc-info.(gptel-fsm-info.fsm
1a0e0 29 29 0a 20 20 20 20 20 20 20 20 20 28 63 61 6c 6c 62 61 63 6b 20 28 6f 72 20 28 70 6c 69 73 74 ))..........(callback.(or.(plist
1a100 2d 67 65 74 20 70 72 6f 63 2d 69 6e 66 6f 20 3a 63 61 6c 6c 62 61 63 6b 29 0a 20 20 20 20 20 20 -get.proc-info.:callback).......
1a120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 27 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 73 .................#'gptel-curl--s
1a140 74 72 65 61 6d 2d 69 6e 73 65 72 74 2d 72 65 73 70 6f 6e 73 65 29 29 29 0a 20 20 20 20 28 77 69 tream-insert-response))).....(wi
1a160 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 70 72 6f 63 65 73 73 2d 62 75 66 66 65 th-current-buffer.(process-buffe
1a180 72 20 70 72 6f 63 65 73 73 29 0a 20 20 20 20 20 20 3b 3b 20 49 6e 73 65 72 74 20 6f 75 74 70 75 r.process).......;;.Insert.outpu
1a1a0 74 0a 20 20 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 t.......(save-excursion.........
1a1c0 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 72 6f 63 65 73 73 2d 6d 61 72 6b 20 70 72 6f 63 65 73 73 (goto-char.(process-mark.process
1a1e0 29 29 0a 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 6f 75 74 70 75 74 29 0a 20 20 20 20 20 )).........(insert.output)......
1a200 20 20 20 28 73 65 74 2d 6d 61 72 6b 65 72 20 28 70 72 6f 63 65 73 73 2d 6d 61 72 6b 20 70 72 6f ...(set-marker.(process-mark.pro
1a220 63 65 73 73 29 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3b 3b 20 cess).(point)))..............;;.
1a240 46 69 6e 64 20 48 54 54 50 20 73 74 61 74 75 73 0a 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 Find.HTTP.status.......(unless.(
1a260 70 6c 69 73 74 2d 67 65 74 20 70 72 6f 63 2d 69 6e 66 6f 20 3a 68 74 74 70 2d 73 74 61 74 75 73 plist-get.proc-info.:http-status
1a280 29 0a 20 20 20 20 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 ).........(save-excursion.......
1a2a0 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 20 ....(goto-char.(point-min)).....
1a2c0 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 28 6e 6f 74 20 28 3d 20 28 6c 69 6e 65 ......(when-let*.(((not.(=.(line
1a2e0 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 29 29 0a 20 20 -end-position).(point-max))))...
1a300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 68 74 74 70 2d 6d 73 67 20 28 62 ....................(http-msg.(b
1a320 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 20 28 6c 69 6e 65 2d 62 65 67 69 6e 6e 69 6e 67 2d uffer-substring.(line-beginning-
1a340 70 6f 73 69 74 69 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 position).......................
1a360 20 20 20 20 20 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
1a380 65 2d 65 6e 64 2d 70 6f 73 69 74 69 6f 6e 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 e-end-position)))...............
1a3a0 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 20 ........(http-status............
1a3c0 20 20 20 20 20 20 20 20 20 20 20 20 28 73 61 76 65 2d 6d 61 74 63 68 2d 64 61 74 61 0a 20 20 20 ............(save-match-data....
1a3e0 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 73 74 72 69 ......................(and.(stri
1a400 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 2d 39 5d ng-match."HTTP/[.0-9]+.+\\([0-9]
1a420 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 20 20 20 +\\)".http-msg).................
1a440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 20 31 20 68 74 ..............(match-string.1.ht
1a460 74 70 2d 6d 73 67 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 tp-msg))))).............(plist-p
1a480 75 74 20 70 72 6f 63 2d 69 6e 66 6f 20 3a 68 74 74 70 2d 73 74 61 74 75 73 20 68 74 74 70 2d 73 ut.proc-info.:http-status.http-s
1a4a0 74 61 74 75 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 70 72 tatus).............(plist-put.pr
1a4c0 6f 63 2d 69 6e 66 6f 20 3a 73 74 61 74 75 73 20 28 73 74 72 69 6e 67 2d 74 72 69 6d 20 68 74 74 oc-info.:status.(string-trim.htt
1a4e0 70 2d 6d 73 67 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 66 73 6d 2d p-msg)).............(gptel--fsm-
1a500 74 72 61 6e 73 69 74 69 6f 6e 20 66 73 6d 29 29 29 29 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 transition.fsm))))..............
1a520 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 68 74 74 70 2d 6d 73 67 20 28 70 6c 69 73 74 2d 67 65 74 (when-let*.((http-msg.(plist-get
1a540 20 70 72 6f 63 2d 69 6e 66 6f 20 3a 73 74 61 74 75 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 .proc-info.:status))............
1a560 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 70 .......(http-status.(plist-get.p
1a580 72 6f 63 2d 69 6e 66 6f 20 3a 68 74 74 70 2d 73 74 61 74 75 73 29 29 29 0a 20 20 20 20 20 20 20 roc-info.:http-status)))........
1a5a0 20 3b 3b 20 46 69 6e 64 20 64 61 74 61 20 63 68 75 6e 6b 28 73 29 20 61 6e 64 20 72 75 6e 20 63 .;;.Find.data.chunk(s).and.run.c
1a5c0 61 6c 6c 62 61 63 6b 0a 20 20 20 20 20 20 20 20 3b 3b 20 46 49 58 4d 45 20 48 61 6e 64 6c 65 20 allback.........;;.FIXME.Handle.
1a5e0 74 68 65 20 63 61 73 65 20 77 68 65 72 65 20 48 54 54 50 20 31 30 30 20 69 73 20 66 6f 6c 6c 6f the.case.where.HTTP.100.is.follo
1a600 77 65 64 20 62 79 20 48 54 54 50 20 28 6e 6f 74 20 32 30 30 29 20 42 55 47 20 23 31 39 34 0a 20 wed.by.HTTP.(not.200).BUG.#194..
1a620 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 6d 65 6d 62 65 72 20 68 74 74 70 2d 73 74 61 74 75 73 .......(when.(member.http-status
1a640 20 27 28 22 32 30 30 22 20 22 31 30 30 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 .'("200"."100"))...........(let.
1a660 28 28 72 65 73 70 6f 6e 73 65 20 28 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 70 61 72 73 65 2d 73 74 ((response.(gptel-curl--parse-st
1a680 72 65 61 6d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ream............................
1a6a0 28 70 6c 69 73 74 2d 67 65 74 20 70 72 6f 63 2d 69 6e 66 6f 20 3a 62 61 63 6b 65 6e 64 29 20 70 (plist-get.proc-info.:backend).p
1a6c0 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 28 72 65 61 73 roc-info)).................(reas
1a6e0 6f 6e 69 6e 67 2d 62 6c 6f 63 6b 20 28 70 6c 69 73 74 2d 67 65 74 20 70 72 6f 63 2d 69 6e 66 6f oning-block.(plist-get.proc-info
1a700 20 3a 72 65 61 73 6f 6e 69 6e 67 2d 62 6c 6f 63 6b 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 .:reasoning-block)))............
1a720 20 3b 3b 20 44 65 70 65 6e 64 69 6e 67 20 6f 6e 20 74 68 65 20 41 50 49 2c 20 74 68 65 72 65 20 .;;.Depending.on.the.API,.there.
1a740 61 72 65 20 74 77 6f 20 6d 6f 64 65 73 20 74 68 61 74 20 72 65 61 73 6f 6e 69 6e 67 20 6f 72 0a are.two.modes.that.reasoning.or.
1a760 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 63 68 61 69 6e 2d 6f 66 2d 74 68 6f 75 67 68 74 20 ............;;.chain-of-thought.
1a780 63 6f 6e 74 65 6e 74 20 61 70 70 65 61 72 73 3a 20 61 73 20 70 61 72 74 20 6f 66 20 74 68 65 20 content.appears:.as.part.of.the.
1a7a0 6d 61 69 6e 20 72 65 73 70 6f 6e 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 62 75 74 main.response.............;;.but
1a7c0 20 73 75 72 72 6f 75 6e 64 65 64 20 62 79 20 3c 74 68 69 6e 6b 3e 2e 2e 2e 3c 2f 74 68 69 6e 6b .surrounded.by.<think>...</think
1a7e0 3e 20 74 61 67 73 2c 20 6f 72 20 61 73 20 61 20 73 65 70 61 72 61 74 65 0a 20 20 20 20 20 20 20 >.tags,.or.as.a.separate........
1a800 20 20 20 20 20 3b 3b 20 4a 53 4f 4e 20 66 69 65 6c 64 20 69 6e 20 74 68 65 20 72 65 73 70 6f 6e .....;;.JSON.field.in.the.respon
1a820 73 65 20 73 74 72 65 61 6d 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 0a 20 20 20 20 20 20 se.stream..............;;.......
1a840 20 20 20 20 20 20 3b 3b 20 54 68 65 73 65 20 63 61 73 65 73 20 61 72 65 20 68 61 6e 64 6c 65 64 ......;;.These.cases.are.handled
1a860 20 75 73 69 6e 67 20 74 77 6f 20 50 52 4f 43 2d 49 4e 46 4f 20 6b 65 79 73 3a 0a 20 20 20 20 20 .using.two.PROC-INFO.keys:......
1a880 20 20 20 20 20 20 20 3b 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 3a 72 65 61 73 6f 6e .......;;.............;;.:reason
1a8a0 69 6e 67 2d 62 6c 6f 63 6b 20 69 73 20 6e 69 6c 20 62 65 66 6f 72 65 20 63 68 65 63 6b 69 6e 67 ing-block.is.nil.before.checking
1a8c0 20 66 6f 72 20 72 65 61 73 6f 6e 69 6e 67 2c 20 27 69 6e 20 77 68 65 6e 0a 20 20 20 20 20 20 20 .for.reasoning,.'in.when........
1a8e0 20 20 20 20 20 3b 3b 20 69 6e 20 61 20 72 65 61 73 6f 6e 69 6e 67 20 62 6c 6f 63 6b 2c 20 74 20 .....;;.in.a.reasoning.block,.t.
1a900 77 68 65 6e 20 77 65 20 72 65 61 63 68 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20 62 6c 6f when.we.reach.the.end.of.the.blo
1a920 63 6b 2c 20 61 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 27 64 6f 6e 65 20 61 66 74 ck,.and.............;;.'done.aft
1a940 65 72 77 61 72 64 73 20 6f 72 20 69 66 20 6e 6f 20 72 65 61 73 6f 6e 69 6e 67 20 62 6c 6f 63 6b erwards.or.if.no.reasoning.block
1a960 20 69 73 20 66 6f 75 6e 64 2e 20 20 54 68 69 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 .is.found...This.............;;.
1a980 61 70 70 6c 69 65 73 20 74 6f 20 62 6f 74 68 20 74 68 65 20 6d 6f 64 65 73 20 61 62 6f 76 65 2e applies.to.both.the.modes.above.
1a9a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 3a .............;;.............;;.:
1a9c0 72 65 61 73 6f 6e 69 6e 67 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 72 65 61 73 6f 6e 69 6e 67 reasoning.contains.the.reasoning
1a9e0 20 74 65 78 74 20 70 61 72 73 65 64 20 66 72 6f 6d 20 74 68 65 20 73 65 70 61 72 61 74 65 0a 20 .text.parsed.from.the.separate..
1aa00 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 4a 53 4f 4e 20 66 69 65 6c 64 2e 0a 20 20 20 20 20 20 ...........;;.JSON.field........
1aa20 20 20 20 20 20 20 3b 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 4e 4f 54 45 3a 20 57 65 ......;;.............;;.NOTE:.We
1aa40 20 61 73 73 75 6d 65 20 68 65 72 65 20 74 68 61 74 20 74 68 65 20 72 65 61 73 6f 6e 69 6e 67 20 .assume.here.that.the.reasoning.
1aa60 62 6c 6f 63 6b 20 61 6c 77 61 79 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 70 72 65 63 block.always.............;;.prec
1aa80 65 64 65 73 20 74 68 65 20 6d 61 69 6e 20 72 65 73 70 6f 6e 73 65 20 62 6c 6f 63 6b 2e 0a 20 20 edes.the.main.response.block....
1aaa0 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 65 71 20 72 65 61 73 6f 6e 69 6e 67 2d ..........(unless.(eq.reasoning-
1aac0 62 6c 6f 63 6b 20 27 64 6f 6e 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 block.'done)...............(let.
1aae0 28 28 72 65 61 73 6f 6e 69 6e 67 20 28 70 6c 69 73 74 2d 67 65 74 20 70 72 6f 63 2d 69 6e 66 6f ((reasoning.(plist-get.proc-info
1ab00 20 3a 72 65 61 73 6f 6e 69 6e 67 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 .:reasoning))).................(
1ab20 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 73 74 72 69 6e 67 70 20 cond..................((stringp.
1ab40 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 3b 3b 20 reasoning)...................;;.
1ab60 4f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 73 65 70 61 72 61 74 65 20 4a 53 4f 4e 20 66 69 65 6c Obtained.from.separate.JSON.fiel
1ab80 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 d.in.response...................
1aba0 28 66 75 6e 63 61 6c 6c 20 63 61 6c 6c 62 61 63 6b 20 28 63 6f 6e 73 20 27 72 65 61 73 6f 6e 69 (funcall.callback.(cons.'reasoni
1abc0 6e 67 20 72 65 61 73 6f 6e 69 6e 67 29 20 70 72 6f 63 2d 69 6e 66 6f 29 0a 20 20 20 20 20 20 20 ng.reasoning).proc-info)........
1abe0 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 70 72 6f 63 2d 69 6e 66 6f 20 ...........(plist-put.proc-info.
1ac00 3a 72 65 61 73 6f 6e 69 6e 67 20 6e 69 6c 29 29 20 3b 52 65 73 65 74 20 66 6f 72 20 6e 65 78 74 :reasoning.nil)).;Reset.for.next
1ac20 20 70 61 72 73 69 6e 67 20 72 6f 75 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .parsing.round..................
1ac40 28 28 61 6e 64 20 28 6e 75 6c 6c 20 72 65 61 73 6f 6e 69 6e 67 2d 62 6c 6f 63 6b 29 20 28 6c 65 ((and.(null.reasoning-block).(le
1ac60 6e 67 74 68 3e 20 72 65 73 70 6f 6e 73 65 20 30 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ngth>.response.0))..............
1ac80 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 5e 20 2a 3c 74 68 .....(if.(string-match-p."^.*<th
1aca0 69 6e 6b 3e 22 20 72 65 73 70 6f 6e 73 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ink>".response).................
1acc0 20 20 20 20 20 20 3b 3b 20 4f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 6d 61 69 6e 20 72 65 73 70 ......;;.Obtained.from.main.resp
1ace0 6f 6e 73 65 20 73 74 72 65 61 6d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 onse.stream.....................
1ad00 20 20 28 70 72 6f 67 6e 20 28 73 65 74 71 20 72 65 73 70 6f 6e 73 65 20 28 63 6f 6e 73 20 27 72 ..(progn.(setq.response.(cons.'r
1ad20 65 61 73 6f 6e 69 6e 67 20 72 65 73 70 6f 6e 73 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 easoning.response)).............
1ad40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 70 72 6f 63 .................(plist-put.proc
1ad60 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 6e 29 29 0a 20 20 20 -info.:reasoning-block.'in))....
1ad80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 70 72 6f 63 .................(plist-put.proc
1ada0 2d 69 6e 66 6f 20 3a 72 65 61 73 6f 6e 69 6e 67 2d 62 6c 6f 63 6b 20 27 64 6f 6e 65 29 29 29 0a -info.:reasoning-block.'done))).
1adc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 6c 65 6e 67 74 68 3e 20 72 65 73 70 6f .................((length>.respo
1ade0 6e 73 65 20 30 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 2d 6c 65 74 nse.0)...................(if-let
1ae00 2a 20 28 28 69 64 78 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 2d 70 20 22 3c 2f 74 68 69 6e 6b *.((idx.(string-match-p."</think
1ae20 3e 22 20 72 65 73 70 6f 6e 73 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 >".response)))..................
1ae40 20 20 20 20 20 28 70 72 6f 67 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .....(progn.....................
1ae60 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 63 61 6c 6c 62 61 63 6b 0a 20 20 20 20 20 20 20 20 20 20 ....(funcall.callback...........
1ae80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 20 27 72 65 .......................(cons.'re
1aea0 61 73 6f 6e 69 6e 67 20 3b 6c 61 73 74 20 72 65 61 73 6f 6e 69 6e 67 20 63 68 75 6e 6b 0a 20 20 asoning.;last.reasoning.chunk...
1aec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
1aee0 20 20 20 20 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 .....(string-trim-left..........
1af00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 ...............................(
1af20 73 75 62 73 74 72 69 6e 67 20 72 65 73 70 6f 6e 73 65 20 6e 69 6c 20 28 2b 20 69 64 78 20 38 29 substring.response.nil.(+.idx.8)
1af40 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ))).............................
1af60 20 20 20 20 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 .....proc-info).................
1af80 20 20 20 20 20 20 20 20 3b 3b 20 53 69 67 6e 61 6c 20 65 6e 64 20 6f 66 20 72 65 61 73 6f 6e 69 ........;;.Signal.end.of.reasoni
1afa0 6e 67 20 73 74 72 65 61 6d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ng.stream.......................
1afc0 20 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 ..(funcall.callback.'(reasoning.
1afe0 2e 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 ..t).proc-info).................
1b000 20 20 20 20 20 20 20 20 28 73 65 74 71 20 72 65 73 70 6f 6e 73 65 20 28 73 75 62 73 74 72 69 6e ........(setq.response.(substrin
1b020 67 20 72 65 73 70 6f 6e 73 65 20 28 2b 20 69 64 78 20 38 29 29 29 0a 20 20 20 20 20 20 20 20 20 g.response.(+.idx.8)))..........
1b040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 70 72 6f 63 2d 69 ...............(plist-put.proc-i
1b060 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 0a 20 20 20 nfo.:reasoning-block.'done))....
1b080 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 65 20 .................(setq.response.
1b0a0 28 63 6f 6e 73 20 27 72 65 61 73 6f 6e 69 6e 67 20 72 65 73 70 6f 6e 73 65 29 29 29 29 29 0a 20 (cons.'reasoning.response)))))..
1b0c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 65 71 20 72 65 61 73 6f 6e 69 ...............(when.(eq.reasoni
1b0e0 6e 67 2d 62 6c 6f 63 6b 20 74 29 20 3b 45 6e 64 20 6f 66 20 72 65 61 73 6f 6e 69 6e 67 20 62 6c ng-block.t).;End.of.reasoning.bl
1b100 6f 63 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 63 ock...................(funcall.c
1b120 61 6c 6c 62 61 63 6b 20 27 28 72 65 61 73 6f 6e 69 6e 67 20 2e 20 74 29 20 70 72 6f 63 2d 69 6e allback.'(reasoning...t).proc-in
1b140 66 6f 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 fo)...................(plist-put
1b160 20 70 72 6f 63 2d 69 6e 66 6f 20 3a 72 65 61 73 6f 6e 69 6e 67 2d 62 6c 6f 63 6b 20 27 64 6f 6e .proc-info.:reasoning-block.'don
1b180 65 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 65 71 75 61 6c e)))).............(unless.(equal
1b1a0 20 72 65 73 70 6f 6e 73 65 20 22 22 29 20 3b 52 65 73 70 6f 6e 73 65 20 63 61 6c 6c 62 61 63 6b .response."").;Response.callback
1b1c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 63 61 6c 6c 62 61 63 6b ...............(funcall.callback
1b1e0 20 72 65 73 70 6f 6e 73 65 20 70 72 6f 63 2d 69 6e 66 6f 29 29 29 29 29 29 29 29 0a 0a 28 63 6c .response.proc-info))))))))..(cl
1b200 2d 64 65 66 67 65 6e 65 72 69 63 20 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 70 61 72 73 65 2d 73 74 -defgeneric.gptel-curl--parse-st
1b220 72 65 61 6d 20 28 62 61 63 6b 65 6e 64 20 70 72 6f 63 2d 69 6e 66 6f 29 0a 20 20 22 53 74 72 65 ream.(backend.proc-info)..."Stre
1b240 61 6d 20 70 61 72 73 65 72 20 66 6f 72 20 67 70 74 65 6c 2d 63 75 72 6c 2e 0a 0a 49 6d 70 6c 65 am.parser.for.gptel-curl...Imple
1b260 6d 65 6e 74 61 74 69 6f 6e 73 20 6f 66 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 72 75 6e 20 mentations.of.this.function.run.
1b280 61 73 20 70 61 72 74 20 6f 66 20 74 68 65 20 70 72 6f 63 65 73 73 0a 66 69 6c 74 65 72 20 66 6f as.part.of.the.process.filter.fo
1b2a0 72 20 74 68 65 20 61 63 74 69 76 65 20 71 75 65 72 79 2c 20 61 6e 64 20 72 65 74 75 72 6e 20 70 r.the.active.query,.and.return.p
1b2c0 61 72 74 69 61 6c 20 72 65 73 70 6f 6e 73 65 73 20 66 72 6f 6d 0a 74 68 65 20 4c 4c 4d 2e 0a 0a artial.responses.from.the.LLM...
1b2e0 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
1b300 65 2e 0a 0a 50 52 4f 43 2d 49 4e 46 4f 20 69 73 20 61 20 70 6c 69 73 74 20 77 69 74 68 20 70 72 e...PROC-INFO.is.a.plist.with.pr
1b320 6f 63 65 73 73 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 6e 64 20 6f 74 68 65 72 20 63 6f 6e 74 ocess.information.and.other.cont
1b340 65 78 74 2e 0a 53 65 65 20 60 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 67 65 74 2d 72 65 73 70 6f 6e ext..See.`gptel-curl--get-respon
1b360 73 65 27 20 66 6f 72 20 69 74 73 20 63 6f 6e 74 65 6e 74 73 2e 22 29 0a 0a 28 64 65 66 75 6e 20 se'.for.its.contents.")..(defun.
1b380 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 73 65 6e 74 69 6e 65 6c 20 28 70 72 6f 63 65 73 73 20 5f 73 gptel-curl--sentinel.(process._s
1b3a0 74 61 74 75 73 29 0a 20 20 22 50 72 6f 63 65 73 73 20 73 65 6e 74 69 6e 65 6c 20 66 6f 72 20 67 tatus)..."Process.sentinel.for.g
1b3c0 70 74 65 6c 20 63 75 72 6c 20 72 65 71 75 65 73 74 73 2e 0a 0a 50 52 4f 43 45 53 53 20 61 6e 64 ptel.curl.requests...PROCESS.and
1b3e0 20 5f 53 54 41 54 55 53 20 61 72 65 20 70 72 6f 63 65 73 73 20 70 61 72 61 6d 65 74 65 72 73 2e ._STATUS.are.process.parameters.
1b400 22 0a 20 20 28 6c 65 74 20 28 28 70 72 6f 63 2d 62 75 66 20 28 70 72 6f 63 65 73 73 2d 62 75 66 "...(let.((proc-buf.(process-buf
1b420 66 65 72 20 70 72 6f 63 65 73 73 29 29 29 0a 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 fer.process))).....(when-let*.((
1b440 28 65 71 20 28 70 72 6f 63 65 73 73 2d 73 74 61 74 75 73 20 70 72 6f 63 65 73 73 29 20 27 65 78 (eq.(process-status.process).'ex
1b460 69 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 73 6d 20 28 61 6c 69 73 74 it)).................(fsm.(alist
1b480 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
1b4a0 74 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 69 6e 66 6f 20 28 t)).................(proc-info.(
1b4c0 67 70 74 65 6c 2d 66 73 6d 2d 69 6e 66 6f 20 66 73 6d 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 gptel-fsm-info.fsm))............
1b4e0 20 20 20 20 20 28 70 72 6f 63 2d 63 61 6c 6c 62 61 63 6b 20 28 70 6c 69 73 74 2d 67 65 74 20 70 .....(proc-callback.(plist-get.p
1b500 72 6f 63 2d 69 6e 66 6f 20 3a 63 61 6c 6c 62 61 63 6b 29 29 29 0a 20 20 20 20 20 20 28 77 68 65 roc-info.:callback))).......(whe
1b520 6e 20 67 70 74 65 6c 2d 6c 6f 67 2d 6c 65 76 65 6c 20 28 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 6c n.gptel-log-level.(gptel-curl--l
1b540 6f 67 2d 72 65 73 70 6f 6e 73 65 20 70 72 6f 63 2d 62 75 66 20 70 72 6f 63 2d 69 6e 66 6f 29 29 og-response.proc-buf.proc-info))
1b560 20 3b 6c 6f 67 67 69 6e 67 0a 20 20 20 20 20 20 28 70 63 61 73 65 2d 6c 65 74 20 28 28 60 28 2c .;logging.......(pcase-let.((`(,
1b580 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 6d 73 67 20 response.,http-status.,http-msg.
1b5a0 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 28 77 69 74 68 ,error)....................(with
1b5c0 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 70 72 6f 63 2d 62 75 66 0a 20 20 20 20 20 20 20 -current-buffer.proc-buf........
1b5e0 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 70 61 72 73 65 ..............(gptel-curl--parse
1b600 2d 72 65 73 70 6f 6e 73 65 20 70 72 6f 63 2d 69 6e 66 6f 29 29 29 29 0a 20 20 20 20 20 20 20 20 -response.proc-info)))).........
1b620 28 70 6c 69 73 74 2d 70 75 74 20 70 72 6f 63 2d 69 6e 66 6f 20 3a 68 74 74 70 2d 73 74 61 74 75 (plist-put.proc-info.:http-statu
1b640 73 20 68 74 74 70 2d 73 74 61 74 75 73 29 0a 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 s.http-status).........(plist-pu
1b660 74 20 70 72 6f 63 2d 69 6e 66 6f 20 3a 73 74 61 74 75 73 20 68 74 74 70 2d 6d 73 67 29 0a 20 20 t.proc-info.:status.http-msg)...
1b680 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
1b6a0 29 20 20 20 20 20 3b 57 41 49 54 20 2d 3e 20 54 59 50 45 0a 20 20 20 20 20 20 20 20 28 77 68 65 ).....;WAIT.->.TYPE.........(whe
1b6c0 6e 20 65 72 72 6f 72 20 28 70 6c 69 73 74 2d 70 75 74 20 70 72 6f 63 2d 69 6e 66 6f 20 3a 65 72 n.error.(plist-put.proc-info.:er
1b6e0 72 6f 72 20 65 72 72 6f 72 29 29 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 72 65 73 70 6f 6e ror.error)).........(when.respon
1b700 73 65 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 4c 6f 6f 6b 20 66 6f 72 20 61 20 se..................;Look.for.a.
1b720 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 28 69 66 20 28 73 reasoning.block...........(if.(s
1b740 74 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 tring-match-p."^.*<think>\n".res
1b760 70 6f 6e 73 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 ponse)...............(when-let*.
1b780 28 28 69 64 78 20 28 73 74 72 69 6e 67 2d 73 65 61 72 63 68 20 22 3c 2f 74 68 69 6e 6b 3e 5c 6e ((idx.(string-search."</think>\n
1b7a0 22 20 72 65 73 70 6f 6e 73 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 ".response))).................(w
1b7c0 69 74 68 2d 64 65 6d 6f 74 65 64 2d 65 72 72 6f 72 73 20 22 67 70 74 65 6c 20 63 61 6c 6c 62 61 ith-demoted-errors."gptel.callba
1b7e0 63 6b 20 65 72 72 6f 72 3a 20 25 53 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ck.error:.%S"...................
1b800 28 66 75 6e 63 61 6c 6c 20 70 72 6f 63 2d 63 61 6c 6c 62 61 63 6b 0a 20 20 20 20 20 20 20 20 20 (funcall.proc-callback..........
1b820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 20 27 72 65 61 73 6f 6e 69 ..................(cons.'reasoni
1b840 6e 67 20 28 73 75 62 73 74 72 69 6e 67 20 72 65 73 70 6f 6e 73 65 20 6e 69 6c 20 28 2b 20 69 64 ng.(substring.response.nil.(+.id
1b860 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 20 20 20 20 x.8)))..........................
1b880 20 20 70 72 6f 63 2d 69 6e 66 6f 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 ..proc-info)).................(s
1b8a0 65 74 71 20 72 65 73 70 6f 6e 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 etq.response....................
1b8c0 20 20 20 28 73 74 72 69 6e 67 2d 74 72 69 6d 2d 6c 65 66 74 20 28 73 75 62 73 74 72 69 6e 67 20 ...(string-trim-left.(substring.
1b8e0 72 65 73 70 6f 6e 73 65 20 28 2b 20 69 64 78 20 38 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 response.(+.idx.8)))))..........
1b900 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 72 65 61 73 6f 6e 69 6e 67 20 28 70 6c 69 73 74 ...(when-let*.((reasoning.(plist
1b920 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 0a 20 20 20 20 -get.proc-info.:reasoning)).....
1b940 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 72 65 ....................((stringp.re
1b960 61 73 6f 6e 69 6e 67 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c asoning)))...............(funcal
1b980 6c 20 70 72 6f 63 2d 63 61 6c 6c 62 61 63 6b 20 28 63 6f 6e 73 20 27 72 65 61 73 6f 6e 69 6e 67 l.proc-callback.(cons.'reasoning
1b9a0 20 72 65 61 73 6f 6e 69 6e 67 29 20 70 72 6f 63 2d 69 6e 66 6f 29 29 29 29 0a 20 20 20 20 20 20 .reasoning).proc-info)))).......
1b9c0 20 20 28 77 68 65 6e 20 28 6f 72 20 72 65 73 70 6f 6e 73 65 20 28 6e 6f 74 20 28 6d 65 6d 62 65 ..(when.(or.response.(not.(membe
1b9e0 72 20 68 74 74 70 2d 73 74 61 74 75 73 20 27 28 22 32 30 30 22 20 22 31 30 30 22 29 29 29 29 0a r.http-status.'("200"."100")))).
1ba00 20 20 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 64 65 6d 6f 74 65 64 2d 65 72 72 6f 72 73 20 22 ..........(with-demoted-errors."
1ba20 67 70 74 65 6c 20 63 61 6c 6c 62 61 63 6b 20 65 72 72 6f 72 3a 20 25 53 22 0a 20 20 20 20 20 20 gptel.callback.error:.%S".......
1ba40 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 20 72 65 73 ......(funcall.proc-callback.res
1ba60 70 6f 6e 73 65 20 70 72 6f 63 2d 69 6e 66 6f 29 29 29 29 0a 20 20 20 20 20 20 28 67 70 74 65 6c ponse.proc-info)))).......(gptel
1ba80 2d 2d 66 73 6d 2d 74 72 61 6e 73 69 74 69 6f 6e 20 66 73 6d 29 29 20 20 20 20 20 20 3b 54 59 50 --fsm-transition.fsm))......;TYP
1baa0 45 20 2d 3e 20 6e 65 78 74 0a 20 20 20 20 28 73 65 74 66 20 28 61 6c 69 73 74 2d 67 65 74 20 70 E.->.next.....(setf.(alist-get.p
1bac0 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 74 20 6e 69 6c 20 rocess.gptel--request-alist.nil.
1bae0 27 72 65 6d 6f 76 65 29 20 6e 69 6c 29 0a 20 20 20 20 28 6b 69 6c 6c 2d 62 75 66 66 65 72 20 70 'remove).nil).....(kill-buffer.p
1bb00 72 6f 63 2d 62 75 66 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 70 roc-buf)))..(defun.gptel-curl--p
1bb20 61 72 73 65 2d 72 65 73 70 6f 6e 73 65 20 28 70 72 6f 63 2d 69 6e 66 6f 29 0a 20 20 22 50 61 72 arse-response.(proc-info)..."Par
1bb40 73 65 20 74 68 65 20 62 75 66 66 65 72 20 42 55 46 20 77 69 74 68 20 63 75 72 6c 27 73 20 72 65 se.the.buffer.BUF.with.curl's.re
1bb60 73 70 6f 6e 73 65 2e 0a 0a 50 52 4f 43 2d 49 4e 46 4f 20 69 73 20 61 20 70 6c 69 73 74 20 77 69 sponse...PROC-INFO.is.a.plist.wi
1bb80 74 68 20 63 6f 6e 74 65 78 74 75 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 22 0a 20 20 28 6c th.contextual.information."...(l
1bba0 65 74 20 28 28 74 6f 6b 65 6e 20 28 70 6c 69 73 74 2d 67 65 74 20 70 72 6f 63 2d 69 6e 66 6f 20 et.((token.(plist-get.proc-info.
1bbc0 3a 74 6f 6b 65 6e 29 29 29 0a 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d :token))).....(goto-char.(point-
1bbe0 6d 61 78 29 29 0a 20 20 20 20 28 73 65 61 72 63 68 2d 62 61 63 6b 77 61 72 64 20 74 6f 6b 65 6e max)).....(search-backward.token
1bc00 29 0a 20 20 20 20 28 62 61 63 6b 77 61 72 64 2d 63 68 61 72 29 0a 20 20 20 20 28 70 63 61 73 65 ).....(backward-char).....(pcase
1bc20 2d 6c 65 74 2a 20 28 28 60 28 2c 5f 20 2e 20 2c 68 65 61 64 65 72 2d 73 69 7a 65 29 20 28 72 65 -let*.((`(,_...,header-size).(re
1bc40 61 64 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29 29 29 0a 20 20 20 20 20 20 28 67 6f ad.(current-buffer)))).......(go
1bc60 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 0a 0a 20 20 20 20 20 20 28 69 66 2d to-char.(point-min))........(if-
1bc80 6c 65 74 2a 20 28 28 68 74 74 70 2d 6d 73 67 20 28 73 74 72 69 6e 67 2d 74 72 69 6d 0a 20 20 20 let*.((http-msg.(string-trim....
1bca0 20 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-
1bcc0 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 69 74 69 substring.(line-beginning-positi
1bce0 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 20 20 on).............................
1bd00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 6e 65 2d 65 6e 64 2d 70 6f 73 69 74 .................(line-end-posit
1bd20 69 6f 6e 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 68 74 74 70 2d 73 74 ion)))).................(http-st
1bd40 61 74 75 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 61 76 65 2d 6d 61 74 63 atus..................(save-matc
1bd60 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 28 61 6e 64 20 28 h-data....................(and.(
1bd80 73 74 72 69 6e 67 2d 6d 61 74 63 68 20 22 48 54 54 50 2f 5b 2e 30 2d 39 5d 2b 20 2b 5c 5c 28 5b string-match."HTTP/[.0-9]+.+\\([
1bda0 30 2d 39 5d 2b 5c 5c 29 22 20 68 74 74 70 2d 6d 73 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 0-9]+\\)".http-msg).............
1bdc0 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 20 31 20 68 74 74 70 ............(match-string.1.http
1bde0 2d 6d 73 67 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 73 70 6f 6e -msg)))).................(respon
1be00 73 65 20 28 70 72 6f 67 6e 20 28 67 6f 74 6f 2d 63 68 61 72 20 68 65 61 64 65 72 2d 73 69 7a 65 se.(progn.(goto-char.header-size
1be20 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 )...............................
1be40 20 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 ...(condition-case.nil..........
1be60 20 20 20 20 20 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
1be80 65 6c 2d 2d 6a 73 6f 6e 2d 72 65 61 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 el--json-read)..................
1bea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 20 27 6a 73 6f 6e 2d 72 ..................(error.'json-r
1bec0 65 61 64 2d 65 72 72 6f 72 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 0a 20 ead-error)))))...........(cond..
1bee0 20 20 20 20 20 20 20 20 20 20 3b 3b 20 46 49 58 4d 45 20 48 61 6e 64 6c 65 20 74 68 65 20 63 61 ..........;;.FIXME.Handle.the.ca
1bf00 73 65 20 77 68 65 72 65 20 48 54 54 50 20 31 30 30 20 69 73 20 66 6f 6c 6c 6f 77 65 64 20 62 79 se.where.HTTP.100.is.followed.by
1bf20 20 48 54 54 50 20 28 6e 6f 74 20 32 30 30 29 20 42 55 47 20 23 31 39 34 0a 20 20 20 20 20 20 20 .HTTP.(not.200).BUG.#194........
1bf40 20 20 20 20 28 28 6d 65 6d 62 65 72 20 68 74 74 70 2d 73 74 61 74 75 73 20 27 28 22 32 30 30 22 ....((member.http-status.'("200"
1bf60 20 22 31 30 30 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 28 61 6e 64 2d ."100")).............(list.(and-
1bf80 6c 65 74 2a 20 28 28 72 65 73 70 20 3b 3b 20 28 66 75 6e 63 61 6c 6c 20 70 61 72 73 65 72 20 6e let*.((resp.;;.(funcall.parser.n
1bfa0 69 6c 20 72 65 73 70 6f 6e 73 65 20 70 72 6f 63 2d 69 6e 66 6f 29 0a 20 20 20 20 20 20 20 20 20 il.response.proc-info)..........
1bfc0 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 61 72 .....................(gptel--par
1bfe0 73 65 2d 72 65 73 70 6f 6e 73 65 20 28 70 6c 69 73 74 2d 67 65 74 20 70 72 6f 63 2d 69 6e 66 6f se-response.(plist-get.proc-info
1c000 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 20 20 20 20 .:backend)......................
1c020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
1c040 72 65 73 70 6f 6e 73 65 20 70 72 6f 63 2d 69 6e 66 6f 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 response.proc-info)))...........
1c060 20 20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 2d 74 72 69 6d 20 72 65 73 70 29 29 0a 20 20 ..........(string-trim.resp))...
1c080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 74 74 70 2d 73 74 61 74 75 73 20 68 74 74 70 ................http-status.http
1c0a0 2d 6d 73 67 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 28 70 6c 69 73 74 2d 67 65 74 20 72 65 -msg))............((plist-get.re
1c0c0 73 70 6f 6e 73 65 20 3a 65 72 72 6f 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 sponse.:error).............(list
1c0e0 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
1c100 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 20 -get.response.:error))).........
1c120 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 2d 65 72 72 6f ...((eq.response.'json-read-erro
1c140 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 6e 69 6c 20 68 74 74 70 2d 73 74 r).............(list.nil.http-st
1c160 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 4d 61 6c atus.(concat."(".http-msg.").Mal
1c180 66 6f 72 6d 65 64 20 4a 53 4f 4e 20 69 6e 20 72 65 73 70 6f 6e 73 65 2e 22 29 0a 20 20 20 20 20 formed.JSON.in.response.")......
1c1a0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4d 61 6c 66 6f 72 6d 65 64 20 4a 53 4f 4e 20 69 6e 20 ............."Malformed.JSON.in.
1c1c0 72 65 73 70 6f 6e 73 65 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 74 20 28 6c 69 73 74 20 response"))............(t.(list.
1c1e0 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 70 nil.http-status.(concat."(".http
1c200 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 73 -msg.").Could.not.parse.HTTP.res
1c220 70 6f 6e 73 65 2e 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 43 6f ponse.")....................."Co
1c240 75 6c 64 20 6e 6f 74 20 70 61 72 73 65 20 48 54 54 50 20 72 65 73 70 6f 6e 73 65 2e 22 29 29 29 uld.not.parse.HTTP.response.")))
1c260 0a 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 6e 69 6c 20 68 74 74 70 2d 73 74 61 74 75 73 20 28 .........(list.nil.http-status.(
1c280 63 6f 6e 63 61 74 20 22 28 22 20 68 74 74 70 2d 6d 73 67 20 22 29 20 43 6f 75 6c 64 20 6e 6f 74 concat."(".http-msg.").Could.not
1c2a0 20 70 61 72 73 65 20 48 54 54 50 20 72 65 73 70 6f 6e 73 65 2e 22 29 0a 20 20 20 20 20 20 20 20 .parse.HTTP.response.").........
1c2c0 20 20 20 20 20 20 22 43 6f 75 6c 64 20 6e 6f 74 20 70 61 72 73 65 20 48 54 54 50 20 72 65 73 70 ......"Could.not.parse.HTTP.resp
1c2e0 6f 6e 73 65 2e 22 29 29 29 29 29 0a 0a 28 70 72 6f 76 69 64 65 20 27 67 70 74 65 6c 2d 63 75 72 onse.")))))..(provide.'gptel-cur
1c300 6c 29 0a 3b 3b 3b 20 67 70 74 65 6c 2d 63 75 72 6c 2e 65 6c 20 65 6e 64 73 20 68 65 72 65 0a 00 l).;;;.gptel-curl.el.ends.here..
1c320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1c340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1c360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1c380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1c3a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1c3c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1c3e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1c400 67 70 74 65 6c 2d 30 2e 39 2e 38 2f 67 70 74 65 6c 2e 65 6c 00 00 00 00 00 00 00 00 00 00 00 00 gptel-0.9.8/gptel.el............
1c420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1c440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1c460 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
1c480 30 34 31 34 37 35 32 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 32 37 35 34 00 20 30 00 00 00 0414752.00000000000.012754..0...
1c4a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1c4c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1c4e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1c500 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...................
1c520 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...................
1c540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1c560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1c580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1c5a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1c5c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1c5e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1c600 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
1c620 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
1c640 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
1c660 68 74 20 28 43 29 20 32 30 32 33 20 20 4b 61 72 74 68 69 6b 20 43 68 69 6b 6d 61 67 61 6c 75 72 ht.(C).2023..Karthik.Chikmagalur
1c680 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
1c6a0 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 2e 63 6f 6d 3e .<karthik.chikmagalur@gmail.com>
1c6c0 0a 3b 3b 20 56 65 72 73 69 6f 6e 3a 20 30 2e 39 2e 38 0a 3b 3b 20 50 61 63 6b 61 67 65 2d 52 65 .;;.Version:.0.9.8.;;.Package-Re
1c6e0 71 75 69 72 65 73 3a 20 28 28 65 6d 61 63 73 20 22 32 37 2e 31 22 29 20 28 74 72 61 6e 73 69 65 quires:.((emacs."27.1").(transie
1c700 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 2e 34 2e 31 22 29 29 nt."0.7.4").(compat."29.1.4.1"))
1c720 0a 3b 3b 20 4b 65 79 77 6f 72 64 73 3a 20 63 6f 6e 76 65 6e 69 65 6e 63 65 2c 20 74 6f 6f 6c 73 .;;.Keywords:.convenience,.tools
1c740 0a 3b 3b 20 55 52 4c 3a 20 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6b 61 72 74 .;;.URL:.https://github.com/kart
1c760 68 69 6e 6b 2f 67 70 74 65 6c 0a 0a 3b 3b 20 53 50 44 58 2d 4c 69 63 65 6e 73 65 2d 49 64 65 6e hink/gptel..;;.SPDX-License-Iden
1c780 74 69 66 69 65 72 3a 20 47 50 4c 2d 33 2e 30 2d 6f 72 2d 6c 61 74 65 72 0a 0a 3b 3b 20 54 68 69 tifier:.GPL-3.0-or-later..;;.Thi
1c7a0 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.
1c7c0 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
1c7e0 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
1c800 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
1c820 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
1c840 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
1c860 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
1c880 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
1c8a0 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
1c8c0 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
1c8e0 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
1c900 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
1c920 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.
1c940 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.;;.
1c960 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
1c980 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
1c9a0 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
1c9c0 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
1c9e0 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
1ca00 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/>...;;
1ca20 20 54 68 69 73 20 66 69 6c 65 20 69 73 20 4e 4f 54 20 70 61 72 74 20 6f 66 20 47 4e 55 20 45 6d .This.file.is.NOT.part.of.GNU.Em
1ca40 61 63 73 2e 0a 0a 3b 3b 3b 20 43 6f 6d 6d 65 6e 74 61 72 79 3a 0a 0a 3b 3b 20 67 70 74 65 6c 20 acs...;;;.Commentary:..;;.gptel.
1ca60 69 73 20 61 20 73 69 6d 70 6c 65 20 4c 61 72 67 65 20 4c 61 6e 67 75 61 67 65 20 4d 6f 64 65 6c is.a.simple.Large.Language.Model
1ca80 20 63 68 61 74 20 63 6c 69 65 6e 74 2c 20 77 69 74 68 20 73 75 70 70 6f 72 74 20 66 6f 72 20 6d .chat.client,.with.support.for.m
1caa0 75 6c 74 69 70 6c 65 0a 3b 3b 20 6d 6f 64 65 6c 73 20 61 6e 64 20 62 61 63 6b 65 6e 64 73 2e 0a ultiple.;;.models.and.backends..
1cac0 3b 3b 0a 3b 3b 20 49 74 20 77 6f 72 6b 73 20 69 6e 20 74 68 65 20 73 70 69 72 69 74 20 6f 66 20 ;;.;;.It.works.in.the.spirit.of.
1cae0 45 6d 61 63 73 2c 20 61 76 61 69 6c 61 62 6c 65 20 61 74 20 61 6e 79 20 74 69 6d 65 20 61 6e 64 Emacs,.available.at.any.time.and
1cb00 20 69 6e 20 61 6e 79 20 62 75 66 66 65 72 2e 0a 3b 3b 0a 3b 3b 20 67 70 74 65 6c 20 73 75 70 70 .in.any.buffer..;;.;;.gptel.supp
1cb20 6f 72 74 73 3a 0a 3b 3b 0a 3b 3b 20 2d 20 54 68 65 20 73 65 72 76 69 63 65 73 20 43 68 61 74 47 orts:.;;.;;.-.The.services.ChatG
1cb40 50 54 2c 20 41 7a 75 72 65 2c 20 47 65 6d 69 6e 69 2c 20 41 6e 74 68 72 6f 70 69 63 20 41 49 2c PT,.Azure,.Gemini,.Anthropic.AI,
1cb60 20 41 6e 79 73 63 61 6c 65 2c 20 54 6f 67 65 74 68 65 72 2e 61 69 2c 0a 3b 3b 20 20 20 50 65 72 .Anyscale,.Together.ai,.;;...Per
1cb80 70 6c 65 78 69 74 79 2c 20 41 6e 79 73 63 61 6c 65 2c 20 4f 70 65 6e 52 6f 75 74 65 72 2c 20 47 plexity,.Anyscale,.OpenRouter,.G
1cba0 72 6f 71 2c 20 50 72 69 76 61 74 65 47 50 54 2c 20 44 65 65 70 53 65 65 6b 2c 20 43 65 72 65 62 roq,.PrivateGPT,.DeepSeek,.Cereb
1cbc0 72 61 73 2c 0a 3b 3b 20 20 20 47 69 74 68 75 62 20 4d 6f 64 65 6c 73 2c 20 4e 6f 76 69 74 61 20 ras,.;;...Github.Models,.Novita.
1cbe0 41 49 2c 20 78 41 49 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 AI,.xAI.and.Kagi.(FastGPT.&.Summ
1cc00 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
1cc20 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.
1cc40 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.
1cc60 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
1cc80 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
1cca0 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
1ccc0 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
1cce0 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
1cd00 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
1cd20 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
1cd40 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.
1cd60 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
1cd80 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
1cda0 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
1cdc0 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
1cde0 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
1ce00 6c 69 74 69 65 73 2e 0a 3b 3b 20 2d 20 53 75 70 70 6f 72 74 73 20 6d 75 6c 74 69 2d 6d 6f 64 61 lities..;;.-.Supports.multi-moda
1ce20 6c 20 6d 6f 64 65 6c 73 20 28 73 65 6e 64 20 69 6d 61 67 65 73 2c 20 64 6f 63 75 6d 65 6e 74 73 l.models.(send.images,.documents
1ce40 29 2e 0a 3b 3b 20 2d 20 53 75 70 70 6f 72 74 73 20 22 72 65 61 73 6f 6e 69 6e 67 22 20 63 6f 6e )..;;.-.Supports."reasoning".con
1ce60 74 65 6e 74 20 69 6e 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 73 2e 0a 3b 3b 20 2d 20 53 61 76 65 tent.in.LLM.responses..;;.-.Save
1ce80 20 63 68 61 74 73 20 61 73 20 72 65 67 75 6c 61 72 20 4d 61 72 6b 64 6f 77 6e 2f 4f 72 67 2f 54 .chats.as.regular.Markdown/Org/T
1cea0 65 78 74 20 66 69 6c 65 73 20 61 6e 64 20 72 65 73 75 6d 65 20 74 68 65 6d 20 6c 61 74 65 72 2e ext.files.and.resume.them.later.
1cec0 0a 3b 3b 20 2d 20 59 6f 75 20 63 61 6e 20 67 6f 20 62 61 63 6b 20 61 6e 64 20 65 64 69 74 20 79 .;;.-.You.can.go.back.and.edit.y
1cee0 6f 75 72 20 70 72 65 76 69 6f 75 73 20 70 72 6f 6d 70 74 73 20 6f 72 20 4c 4c 4d 20 72 65 73 70 our.previous.prompts.or.LLM.resp
1cf00 6f 6e 73 65 73 20 77 68 65 6e 0a 3b 3b 20 20 20 63 6f 6e 74 69 6e 75 69 6e 67 20 61 20 63 6f 6e onses.when.;;...continuing.a.con
1cf20 76 65 72 73 61 74 69 6f 6e 2e 20 20 54 68 65 73 65 20 77 69 6c 6c 20 62 65 20 66 65 64 20 62 61 versation...These.will.be.fed.ba
1cf40 63 6b 20 74 6f 20 74 68 65 20 6d 6f 64 65 6c 2e 0a 3b 3b 20 2d 20 52 65 64 69 72 65 63 74 20 70 ck.to.the.model..;;.-.Redirect.p
1cf60 72 6f 6d 70 74 73 20 61 6e 64 20 72 65 73 70 6f 6e 73 65 73 20 65 61 73 69 6c 79 0a 3b 3b 20 2d rompts.and.responses.easily.;;.-
1cf80 20 52 65 77 72 69 74 65 2c 20 72 65 66 61 63 74 6f 72 20 6f 72 20 66 69 6c 6c 20 69 6e 20 72 65 .Rewrite,.refactor.or.fill.in.re
1cfa0 67 69 6f 6e 73 20 69 6e 20 62 75 66 66 65 72 73 2e 0a 3b 3b 20 2d 20 57 72 69 74 65 20 79 6f 75 gions.in.buffers..;;.-.Write.you
1cfc0 72 20 6f 77 6e 20 63 6f 6d 6d 61 6e 64 73 20 66 6f 72 20 63 75 73 74 6f 6d 20 74 61 73 6b 73 20 r.own.commands.for.custom.tasks.
1cfe0 77 69 74 68 20 61 20 73 69 6d 70 6c 65 20 41 50 49 2e 0a 3b 3b 0a 3b 3b 20 52 65 71 75 69 72 65 with.a.simple.API..;;.;;.Require
1d000 6d 65 6e 74 73 20 66 6f 72 20 43 68 61 74 47 50 54 2c 20 41 7a 75 72 65 2c 20 47 65 6d 69 6e 69 ments.for.ChatGPT,.Azure,.Gemini
1d020 20 6f 72 20 4b 61 67 69 3a 0a 3b 3b 0a 3b 3b 20 2d 20 59 6f 75 20 6e 65 65 64 20 61 6e 20 61 70 .or.Kagi:.;;.;;.-.You.need.an.ap
1d040 70 72 6f 70 72 69 61 74 65 20 41 50 49 20 6b 65 79 2e 20 20 53 65 74 20 74 68 65 20 76 61 72 69 propriate.API.key...Set.the.vari
1d060 61 62 6c 65 20 60 67 70 74 65 6c 2d 61 70 69 2d 6b 65 79 27 20 74 6f 20 74 68 65 0a 3b 3b 20 20 able.`gptel-api-key'.to.the.;;..
1d080 20 6b 65 79 20 6f 72 20 74 6f 20 61 20 66 75 6e 63 74 69 6f 6e 20 6f 66 20 6e 6f 20 61 72 67 75 .key.or.to.a.function.of.no.argu
1d0a0 6d 65 6e 74 73 20 74 68 61 74 20 72 65 74 75 72 6e 73 20 74 68 65 20 6b 65 79 2e 20 20 28 49 74 ments.that.returns.the.key...(It
1d0c0 20 74 72 69 65 73 20 74 6f 0a 3b 3b 20 20 20 75 73 65 20 60 61 75 74 68 2d 73 6f 75 72 63 65 27 .tries.to.;;...use.`auth-source'
1d0e0 20 62 79 20 64 65 66 61 75 6c 74 29 0a 3b 3b 0a 3b 3b 20 43 68 61 74 47 50 54 20 69 73 20 63 6f .by.default).;;.;;.ChatGPT.is.co
1d100 6e 66 69 67 75 72 65 64 20 6f 75 74 20 6f 66 20 74 68 65 20 62 6f 78 2e 20 20 46 6f 72 20 74 68 nfigured.out.of.the.box...For.th
1d120 65 20 6f 74 68 65 72 20 73 6f 75 72 63 65 73 3a 0a 3b 3b 0a 3b 3b 20 2d 20 46 6f 72 20 41 7a 75 e.other.sources:.;;.;;.-.For.Azu
1d140 72 65 3a 20 64 65 66 69 6e 65 20 61 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 77 69 74 68 20 re:.define.a.gptel-backend.with.
1d160 60 67 70 74 65 6c 2d 6d 61 6b 65 2d 61 7a 75 72 65 27 2c 20 77 68 69 63 68 20 73 65 65 2e 0a 3b `gptel-make-azure',.which.see..;
1d180 3b 20 2d 20 46 6f 72 20 47 65 6d 69 6e 69 3a 20 64 65 66 69 6e 65 20 61 20 67 70 74 65 6c 2d 62 ;.-.For.Gemini:.define.a.gptel-b
1d1a0 61 63 6b 65 6e 64 20 77 69 74 68 20 60 67 70 74 65 6c 2d 6d 61 6b 65 2d 67 65 6d 69 6e 69 27 2c ackend.with.`gptel-make-gemini',
1d1c0 20 77 68 69 63 68 20 73 65 65 2e 0a 3b 3b 20 2d 20 46 6f 72 20 41 6e 74 68 72 6f 70 69 63 20 28 .which.see..;;.-.For.Anthropic.(
1d1e0 43 6c 61 75 64 65 29 3a 20 64 65 66 69 6e 65 20 61 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 Claude):.define.a.gptel-backend.
1d200 77 69 74 68 20 60 67 70 74 65 6c 2d 6d 61 6b 65 2d 61 6e 74 68 72 6f 70 69 63 27 2c 0a 3b 3b 20 with.`gptel-make-anthropic',.;;.
1d220 20 20 77 68 69 63 68 20 73 65 65 2e 0a 3b 3b 20 2d 20 46 6f 72 20 54 6f 67 65 74 68 65 72 2e 61 ..which.see..;;.-.For.Together.a
1d240 69 2c 20 41 6e 79 73 63 61 6c 65 2c 20 47 72 6f 71 2c 20 4f 70 65 6e 52 6f 75 74 65 72 2c 20 44 i,.Anyscale,.Groq,.OpenRouter,.D
1d260 65 65 70 53 65 65 6b 2c 20 43 65 72 65 62 72 61 73 20 6f 72 0a 3b 3b 20 20 20 47 69 74 68 75 62 eepSeek,.Cerebras.or.;;...Github
1d280 20 4d 6f 64 65 6c 73 3a 20 64 65 66 69 6e 65 20 61 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 .Models:.define.a.gptel-backend.
1d2a0 77 69 74 68 20 60 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 27 2c 20 77 68 69 63 68 20 with.`gptel-make-openai',.which.
1d2c0 73 65 65 2e 0a 3b 3b 20 2d 20 46 6f 72 20 50 72 69 76 61 74 65 47 50 54 3a 20 64 65 66 69 6e 65 see..;;.-.For.PrivateGPT:.define
1d2e0 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 72 69 76 .a.backend.with.`gptel-make-priv
1d300 61 74 65 67 70 74 27 2c 20 77 68 69 63 68 20 73 65 65 2e 0a 3b 3b 20 2d 20 46 6f 72 20 50 65 72 ategpt',.which.see..;;.-.For.Per
1d320 70 6c 65 78 69 74 79 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 plexity:.define.a.backend.with.`
1d340 67 70 74 65 6c 2d 6d 61 6b 65 2d 70 65 72 70 6c 65 78 69 74 79 27 2c 20 77 68 69 63 68 20 73 65 gptel-make-perplexity',.which.se
1d360 65 2e 0a 3b 3b 20 2d 20 46 6f 72 20 44 65 65 70 73 65 65 6b 3a 20 64 65 66 69 6e 65 20 61 20 62 e..;;.-.For.Deepseek:.define.a.b
1d380 61 63 6b 65 6e 64 20 77 69 74 68 20 60 67 70 74 65 6c 2d 6d 61 6b 65 2d 64 65 65 70 73 65 65 6b ackend.with.`gptel-make-deepseek
1d3a0 27 2c 20 77 68 69 63 68 20 73 65 65 2e 0a 3b 3b 20 2d 20 46 6f 72 20 4b 61 67 69 3a 20 64 65 66 ',.which.see..;;.-.For.Kagi:.def
1d3c0 69 6e 65 20 61 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 77 69 74 68 20 60 67 70 74 65 6c 2d ine.a.gptel-backend.with.`gptel-
1d3e0 6d 61 6b 65 2d 6b 61 67 69 27 2c 20 77 68 69 63 68 20 73 65 65 2e 0a 3b 3b 0a 3b 3b 20 46 6f 72 make-kagi',.which.see..;;.;;.For
1d400 20 6c 6f 63 61 6c 20 6d 6f 64 65 6c 73 20 75 73 69 6e 67 20 4f 6c 6c 61 6d 61 2c 20 4c 6c 61 6d .local.models.using.Ollama,.Llam
1d420 61 2e 63 70 70 20 6f 72 20 47 50 54 34 41 6c 6c 3a 0a 3b 3b 0a 3b 3b 20 2d 20 54 68 65 20 6d 6f a.cpp.or.GPT4All:.;;.;;.-.The.mo
1d440 64 65 6c 20 68 61 73 20 74 6f 20 62 65 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 61 6e 20 61 63 63 65 del.has.to.be.running.on.an.acce
1d460 73 73 69 62 6c 65 20 61 64 64 72 65 73 73 20 28 6f 72 20 6c 6f 63 61 6c 68 6f 73 74 29 0a 3b 3b ssible.address.(or.localhost).;;
1d480 20 2d 20 44 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 .-.Define.a.gptel-backend.with.`
1d4a0 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 6c 6c 61 6d 61 27 20 6f 72 20 60 67 70 74 65 6c 2d 6d 61 6b gptel-make-ollama'.or.`gptel-mak
1d4c0 65 2d 67 70 74 34 61 6c 6c 27 2c 0a 3b 3b 20 20 20 77 68 69 63 68 20 73 65 65 2e 0a 3b 3b 20 2d e-gpt4all',.;;...which.see..;;.-
1d4e0 20 4c 6c 61 6d 61 2e 63 70 70 20 6f 72 20 4c 6c 61 6d 61 66 69 6c 65 73 3a 20 44 65 66 69 6e 65 .Llama.cpp.or.Llamafiles:.Define
1d500 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
1d520 65 2d 6f 70 65 6e 61 69 27 2e 0a 3b 3b 0a 3b 3b 20 43 6f 6e 73 75 6c 74 20 74 68 65 20 70 61 63 e-openai'..;;.;;.Consult.the.pac
1d540 6b 61 67 65 20 52 45 41 44 4d 45 20 66 6f 72 20 65 78 61 6d 70 6c 65 73 20 61 6e 64 20 6d 6f 72 kage.README.for.examples.and.mor
1d560 65 20 68 65 6c 70 20 77 69 74 68 20 63 6f 6e 66 69 67 75 72 69 6e 67 0a 3b 3b 20 62 61 63 6b 65 e.help.with.configuring.;;.backe
1d580 6e 64 73 2e 0a 3b 3b 0a 3b 3b 20 55 73 61 67 65 3a 0a 3b 3b 0a 3b 3b 20 67 70 74 65 6c 20 63 61 nds..;;.;;.Usage:.;;.;;.gptel.ca
1d5a0 6e 20 62 65 20 75 73 65 64 20 69 6e 20 61 6e 79 20 62 75 66 66 65 72 20 6f 72 20 69 6e 20 61 20 n.be.used.in.any.buffer.or.in.a.
1d5c0 64 65 64 69 63 61 74 65 64 20 63 68 61 74 20 62 75 66 66 65 72 2e 20 20 54 68 65 0a 3b 3b 20 69 dedicated.chat.buffer...The.;;.i
1d5e0 6e 74 65 72 61 63 74 69 6f 6e 20 6d 6f 64 65 6c 20 69 73 20 73 69 6d 70 6c 65 3a 20 54 79 70 65 nteraction.model.is.simple:.Type
1d600 20 69 6e 20 61 20 71 75 65 72 79 20 61 6e 64 20 74 68 65 20 72 65 73 70 6f 6e 73 65 20 77 69 6c .in.a.query.and.the.response.wil
1d620 6c 20 62 65 0a 3b 3b 20 69 6e 73 65 72 74 65 64 20 62 65 6c 6f 77 2e 20 20 59 6f 75 20 63 61 6e l.be.;;.inserted.below...You.can
1d640 20 63 6f 6e 74 69 6e 75 65 20 74 68 65 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 20 62 79 20 74 79 .continue.the.conversation.by.ty
1d660 70 69 6e 67 20 62 65 6c 6f 77 20 74 68 65 0a 3b 3b 20 72 65 73 70 6f 6e 73 65 2e 0a 3b 3b 0a 3b ping.below.the.;;.response..;;.;
1d680 3b 20 54 6f 20 75 73 65 20 74 68 69 73 20 69 6e 20 61 6e 79 20 62 75 66 66 65 72 3a 0a 3b 3b 0a ;.To.use.this.in.any.buffer:.;;.
1d6a0 3b 3b 20 2d 20 43 61 6c 6c 20 60 67 70 74 65 6c 2d 73 65 6e 64 27 20 74 6f 20 73 65 6e 64 20 74 ;;.-.Call.`gptel-send'.to.send.t
1d6c0 68 65 20 62 75 66 66 65 72 27 73 20 74 65 78 74 20 75 70 20 74 6f 20 74 68 65 20 63 75 72 73 6f he.buffer's.text.up.to.the.curso
1d6e0 72 2e 20 20 53 65 6c 65 63 74 20 61 0a 3b 3b 20 20 20 72 65 67 69 6f 6e 20 74 6f 20 73 65 6e 64 r...Select.a.;;...region.to.send
1d700 20 6f 6e 6c 79 20 74 68 65 20 72 65 67 69 6f 6e 2e 0a 3b 3b 0a 3b 3b 20 2d 20 59 6f 75 20 63 61 .only.the.region..;;.;;.-.You.ca
1d720 6e 20 73 65 6c 65 63 74 20 70 72 65 76 69 6f 75 73 20 70 72 6f 6d 70 74 73 20 61 6e 64 20 72 65 n.select.previous.prompts.and.re
1d740 73 70 6f 6e 73 65 73 20 74 6f 20 63 6f 6e 74 69 6e 75 65 20 74 68 65 20 63 6f 6e 76 65 72 73 61 sponses.to.continue.the.conversa
1d760 74 69 6f 6e 2e 0a 3b 3b 0a 3b 3b 20 2d 20 43 61 6c 6c 20 60 67 70 74 65 6c 2d 73 65 6e 64 27 20 tion..;;.;;.-.Call.`gptel-send'.
1d780 77 69 74 68 20 61 20 70 72 65 66 69 78 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 61 63 63 65 73 73 with.a.prefix.argument.to.access
1d7a0 20 61 20 6d 65 6e 75 20 77 68 65 72 65 20 79 6f 75 20 63 61 6e 20 73 65 74 0a 3b 3b 20 20 20 79 .a.menu.where.you.can.set.;;...y
1d7c0 6f 75 72 20 62 61 63 6b 65 6e 64 2c 20 6d 6f 64 65 6c 20 61 6e 64 20 6f 74 68 65 72 20 70 61 72 our.backend,.model.and.other.par
1d7e0 61 6d 65 74 65 72 73 2c 20 6f 72 20 74 6f 20 72 65 64 69 72 65 63 74 20 74 68 65 0a 3b 3b 20 20 ameters,.or.to.redirect.the.;;..
1d800 20 70 72 6f 6d 70 74 2f 72 65 73 70 6f 6e 73 65 2e 0a 3b 3b 0a 3b 3b 20 54 6f 20 75 73 65 20 74 .prompt/response..;;.;;.To.use.t
1d820 68 69 73 20 69 6e 20 61 20 64 65 64 69 63 61 74 65 64 20 62 75 66 66 65 72 3a 0a 3b 3b 20 0a 3b his.in.a.dedicated.buffer:.;;..;
1d840 3b 20 2d 20 4d 2d 78 20 67 70 74 65 6c 3a 20 53 74 61 72 74 20 61 20 63 68 61 74 20 73 65 73 73 ;.-.M-x.gptel:.Start.a.chat.sess
1d860 69 6f 6e 2e 0a 3b 3b 0a 3b 3b 20 2d 20 49 6e 20 74 68 65 20 63 68 61 74 20 73 65 73 73 69 6f 6e ion..;;.;;.-.In.the.chat.session
1d880 3a 20 50 72 65 73 73 20 60 43 2d 63 20 52 45 54 27 20 28 60 67 70 74 65 6c 2d 73 65 6e 64 27 29 :.Press.`C-c.RET'.(`gptel-send')
1d8a0 20 74 6f 20 73 65 6e 64 20 79 6f 75 72 20 70 72 6f 6d 70 74 2e 0a 3b 3b 20 20 20 55 73 65 20 61 .to.send.your.prompt..;;...Use.a
1d8c0 20 70 72 65 66 69 78 20 61 72 67 75 6d 65 6e 74 20 28 60 43 2d 75 20 43 2d 63 20 52 45 54 27 29 .prefix.argument.(`C-u.C-c.RET')
1d8e0 20 74 6f 20 61 63 63 65 73 73 20 61 20 6d 65 6e 75 2e 20 20 49 6e 20 74 68 69 73 20 6d 65 6e 75 .to.access.a.menu...In.this.menu
1d900 20 79 6f 75 0a 3b 3b 20 20 20 63 61 6e 20 73 65 74 20 63 68 61 74 20 70 61 72 61 6d 65 74 65 72 .you.;;...can.set.chat.parameter
1d920 73 20 6c 69 6b 65 20 74 68 65 20 73 79 73 74 65 6d 20 64 69 72 65 63 74 69 76 65 73 2c 20 61 63 s.like.the.system.directives,.ac
1d940 74 69 76 65 20 62 61 63 6b 65 6e 64 20 6f 72 0a 3b 3b 20 20 20 6d 6f 64 65 6c 2c 20 6f 72 20 63 tive.backend.or.;;...model,.or.c
1d960 68 6f 6f 73 65 20 74 6f 20 72 65 64 69 72 65 63 74 20 74 68 65 20 69 6e 70 75 74 20 6f 72 20 6f hoose.to.redirect.the.input.or.o
1d980 75 74 70 75 74 20 65 6c 73 65 77 68 65 72 65 20 28 73 75 63 68 20 61 73 20 74 6f 20 74 68 65 0a utput.elsewhere.(such.as.to.the.
1d9a0 3b 3b 20 20 20 6b 69 6c 6c 20 72 69 6e 67 20 6f 72 20 74 68 65 20 65 63 68 6f 20 61 72 65 61 29 ;;...kill.ring.or.the.echo.area)
1d9c0 2e 0a 3b 3b 0a 3b 3b 20 2d 20 59 6f 75 20 63 61 6e 20 73 61 76 65 20 74 68 69 73 20 62 75 66 66 ..;;.;;.-.You.can.save.this.buff
1d9e0 65 72 20 74 6f 20 61 20 66 69 6c 65 2e 20 20 57 68 65 6e 20 6f 70 65 6e 69 6e 67 20 74 68 69 73 er.to.a.file...When.opening.this
1da00 20 66 69 6c 65 2c 20 74 75 72 6e 20 6f 6e 0a 3b 3b 20 20 20 60 67 70 74 65 6c 2d 6d 6f 64 65 27 .file,.turn.on.;;...`gptel-mode'
1da20 20 62 65 66 6f 72 65 20 65 64 69 74 69 6e 67 20 69 74 20 74 6f 20 72 65 73 74 6f 72 65 20 74 68 .before.editing.it.to.restore.th
1da40 65 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 20 73 74 61 74 65 20 61 6e 64 0a 3b 3b 20 20 20 63 6f e.conversation.state.and.;;...co
1da60 6e 74 69 6e 75 65 20 63 68 61 74 74 69 6e 67 2e 0a 3b 3b 0a 3b 3b 20 2d 20 54 6f 20 69 6e 63 6c ntinue.chatting..;;.;;.-.To.incl
1da80 75 64 65 20 6d 65 64 69 61 20 66 69 6c 65 73 20 77 69 74 68 20 79 6f 75 72 20 72 65 71 75 65 73 ude.media.files.with.your.reques
1daa0 74 2c 20 79 6f 75 20 63 61 6e 20 61 64 64 20 74 68 65 6d 20 74 6f 20 74 68 65 20 63 6f 6e 74 65 t,.you.can.add.them.to.the.conte
1dac0 78 74 0a 3b 3b 20 20 20 28 64 65 73 63 72 69 62 65 64 20 6e 65 78 74 29 2c 20 6f 72 20 69 6e 63 xt.;;...(described.next),.or.inc
1dae0 6c 75 64 65 20 74 68 65 6d 20 61 73 20 6c 69 6e 6b 73 20 69 6e 20 4f 72 67 20 6f 72 20 4d 61 72 lude.them.as.links.in.Org.or.Mar
1db00 6b 64 6f 77 6e 20 6d 6f 64 65 20 63 68 61 74 0a 3b 3b 20 20 20 62 75 66 66 65 72 73 2e 20 20 53 kdown.mode.chat.;;...buffers...S
1db20 65 6e 64 69 6e 67 20 6d 65 64 69 61 20 69 73 20 64 69 73 61 62 6c 65 64 20 62 79 20 64 65 66 61 ending.media.is.disabled.by.defa
1db40 75 6c 74 2c 20 79 6f 75 20 63 61 6e 20 74 75 72 6e 20 69 74 20 6f 6e 20 67 6c 6f 62 61 6c 6c 79 ult,.you.can.turn.it.on.globally
1db60 0a 3b 3b 20 20 20 76 69 61 20 60 67 70 74 65 6c 2d 74 72 61 63 6b 2d 6d 65 64 69 61 27 2c 20 6f .;;...via.`gptel-track-media',.o
1db80 72 20 6c 6f 63 61 6c 6c 79 20 69 6e 20 61 20 63 68 61 74 20 62 75 66 66 65 72 20 76 69 61 20 74 r.locally.in.a.chat.buffer.via.t
1dba0 68 65 20 68 65 61 64 65 72 20 6c 69 6e 65 2e 0a 3b 3b 20 0a 3b 3b 20 49 6e 63 6c 75 64 65 20 6d he.header.line..;;..;;.Include.m
1dbc0 6f 72 65 20 63 6f 6e 74 65 78 74 20 77 69 74 68 20 72 65 71 75 65 73 74 73 3a 0a 3b 3b 0a 3b 3b ore.context.with.requests:.;;.;;
1dbe0 20 49 66 20 79 6f 75 20 77 61 6e 74 20 74 6f 20 70 72 6f 76 69 64 65 20 74 68 65 20 4c 4c 4d 20 .If.you.want.to.provide.the.LLM.
1dc00 77 69 74 68 20 6d 6f 72 65 20 63 6f 6e 74 65 78 74 2c 20 79 6f 75 20 63 61 6e 20 61 64 64 20 61 with.more.context,.you.can.add.a
1dc20 72 62 69 74 72 61 72 79 0a 3b 3b 20 72 65 67 69 6f 6e 73 2c 20 62 75 66 66 65 72 73 2c 20 66 69 rbitrary.;;.regions,.buffers,.fi
1dc40 6c 65 73 20 6f 72 20 64 69 72 65 63 74 6f 72 69 65 73 20 74 6f 20 74 68 65 20 71 75 65 72 79 20 les.or.directories.to.the.query.
1dc60 77 69 74 68 20 60 67 70 74 65 6c 2d 61 64 64 27 2e 20 20 54 6f 20 61 64 64 0a 3b 3b 20 74 65 78 with.`gptel-add'...To.add.;;.tex
1dc80 74 20 6f 72 20 6d 65 64 69 61 20 66 69 6c 65 73 2c 20 63 61 6c 6c 20 60 67 70 74 65 6c 2d 61 64 t.or.media.files,.call.`gptel-ad
1dca0 64 27 20 69 6e 20 44 69 72 65 64 20 6f 72 20 75 73 65 20 74 68 65 20 64 65 64 69 63 61 74 65 64 d'.in.Dired.or.use.the.dedicated
1dcc0 0a 3b 3b 20 60 67 70 74 65 6c 2d 61 64 64 2d 66 69 6c 65 27 2e 0a 3b 3b 0a 3b 3b 20 59 6f 75 20 .;;.`gptel-add-file'..;;.;;.You.
1dce0 63 61 6e 20 61 6c 73 6f 20 61 64 64 20 63 6f 6e 74 65 78 74 20 66 72 6f 6d 20 67 70 74 65 6c 27 can.also.add.context.from.gptel'
1dd00 73 20 6d 65 6e 75 20 69 6e 73 74 65 61 64 20 28 60 67 70 74 65 6c 2d 73 65 6e 64 27 20 77 69 74 s.menu.instead.(`gptel-send'.wit
1dd20 68 20 61 0a 3b 3b 20 70 72 65 66 69 78 20 61 72 67 29 2c 20 61 73 20 77 65 6c 6c 20 61 73 20 65 h.a.;;.prefix.arg),.as.well.as.e
1dd40 78 61 6d 69 6e 65 20 6f 72 20 6d 6f 64 69 66 79 20 63 6f 6e 74 65 78 74 2e 0a 3b 3b 0a 3b 3b 20 xamine.or.modify.context..;;.;;.
1dd60 57 68 65 6e 20 63 6f 6e 74 65 78 74 20 69 73 20 61 76 61 69 6c 61 62 6c 65 2c 20 67 70 74 65 6c When.context.is.available,.gptel
1dd80 20 77 69 6c 6c 20 69 6e 63 6c 75 64 65 20 69 74 20 77 69 74 68 20 65 61 63 68 20 4c 4c 4d 20 71 .will.include.it.with.each.LLM.q
1dda0 75 65 72 79 2e 0a 3b 3b 0a 3b 3b 20 52 65 77 72 69 74 65 20 69 6e 74 65 72 66 61 63 65 0a 3b 3b uery..;;.;;.Rewrite.interface.;;
1ddc0 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 67 69 6f 6e .;;.In.any.buffer:.with.a.region
1dde0 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 72 6f 73 65 .selected,.you.can.rewrite.prose
1de00 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 6e 20 74 68 ,.refactor.code.;;.or.fill.in.th
1de20 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 65 20 76 69 e.region...This.is.accessible.vi
1de40 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 66 72 6f 6d a.`gptel-rewrite',.and.also.from
1de60 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 3b 0a 3b 3b .;;.the.`gptel-send'.menu..;;.;;
1de80 20 67 70 74 65 6c 20 69 6e 20 4f 72 67 20 6d 6f 64 65 3a 0a 3b 3b 0a 3b 3b 20 67 70 74 65 6c 20 .gptel.in.Org.mode:.;;.;;.gptel.
1dea0 6f 66 66 65 72 73 20 61 20 66 65 77 20 65 78 74 72 61 20 63 6f 6e 76 65 6e 69 65 6e 63 65 73 20 offers.a.few.extra.conveniences.
1dec0 69 6e 20 4f 72 67 20 6d 6f 64 65 3a 0a 3b 3b 0a 3b 3b 20 2d 20 59 6f 75 20 63 61 6e 20 6c 69 6d in.Org.mode:.;;.;;.-.You.can.lim
1dee0 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 20 61 it.the.conversation.context.to.a
1df00 6e 20 4f 72 67 20 68 65 61 64 69 6e 67 20 77 69 74 68 0a 3b 3b 20 20 20 60 67 70 74 65 6c 2d 6f n.Org.heading.with.;;...`gptel-o
1df20 72 67 2d 73 65 74 2d 74 6f 70 69 63 27 2e 0a 3b 3b 20 20 20 0a 3b 3b 20 2d 20 59 6f 75 20 63 61 rg-set-topic'..;;....;;.-.You.ca
1df40 6e 20 68 61 76 65 20 62 72 61 6e 63 68 69 6e 67 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 73 20 69 n.have.branching.conversations.i
1df60 6e 20 4f 72 67 20 6d 6f 64 65 2c 20 77 68 65 72 65 20 65 61 63 68 20 68 69 65 72 61 72 63 68 69 n.Org.mode,.where.each.hierarchi
1df80 63 61 6c 0a 3b 3b 20 20 20 6f 75 74 6c 69 6e 65 20 70 61 74 68 20 74 68 72 6f 75 67 68 20 74 68 cal.;;...outline.path.through.th
1dfa0 65 20 64 6f 63 75 6d 65 6e 74 20 69 73 20 61 20 73 65 70 61 72 61 74 65 20 63 6f 6e 76 65 72 73 e.document.is.a.separate.convers
1dfc0 61 74 69 6f 6e 20 62 72 61 6e 63 68 2e 0a 3b 3b 20 20 20 53 65 65 20 74 68 65 20 76 61 72 69 61 ation.branch..;;...See.the.varia
1dfe0 62 6c 65 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 ble.`gptel-org-branching-context
1e000 27 2e 0a 3b 3b 20 20 20 0a 3b 3b 20 2d 20 59 6f 75 20 63 61 6e 20 64 65 63 6c 61 72 65 20 74 68 '..;;....;;.-.You.can.declare.th
1e020 65 20 67 70 74 65 6c 20 6d 6f 64 65 6c 2c 20 62 61 63 6b 65 6e 64 2c 20 74 65 6d 70 65 72 61 74 e.gptel.model,.backend,.temperat
1e040 75 72 65 2c 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 20 61 6e 64 0a 3b 3b 20 20 20 6f 74 68 ure,.system.message.and.;;...oth
1e060 65 72 20 70 61 72 61 6d 65 74 65 72 73 20 61 73 20 4f 72 67 20 70 72 6f 70 65 72 74 69 65 73 20 er.parameters.as.Org.properties.
1e080 77 69 74 68 20 74 68 65 20 63 6f 6d 6d 61 6e 64 0a 3b 3b 20 20 20 60 67 70 74 65 6c 2d 6f 72 67 with.the.command.;;...`gptel-org
1e0a0 2d 73 65 74 2d 70 72 6f 70 65 72 74 69 65 73 27 2e 20 20 67 70 74 65 6c 20 71 75 65 72 69 65 73 -set-properties'...gptel.queries
1e0c0 20 75 6e 64 65 72 20 74 68 65 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 68 65 61 64 69 6e 67 .under.the.corresponding.heading
1e0e0 0a 3b 3b 20 20 20 77 69 6c 6c 20 61 6c 77 61 79 73 20 75 73 65 20 74 68 65 73 65 20 73 65 74 74 .;;...will.always.use.these.sett
1e100 69 6e 67 73 2c 20 61 6c 6c 6f 77 69 6e 67 20 79 6f 75 20 74 6f 20 63 72 65 61 74 65 20 6d 6f 73 ings,.allowing.you.to.create.mos
1e120 74 6c 79 20 72 65 70 72 6f 64 75 63 69 62 6c 65 0a 3b 3b 20 20 20 4c 4c 4d 20 63 68 61 74 20 6e tly.reproducible.;;...LLM.chat.n
1e140 6f 74 65 62 6f 6f 6b 73 2e 0a 3b 3b 0a 3b 3b 20 46 69 6e 61 6c 6c 79 2c 20 67 70 74 65 6c 20 6f otebooks..;;.;;.Finally,.gptel.o
1e160 66 66 65 72 73 20 61 20 67 65 6e 65 72 61 6c 20 70 75 72 70 6f 73 65 20 41 50 49 20 66 6f 72 20 ffers.a.general.purpose.API.for.
1e180 77 72 69 74 69 6e 67 20 4c 4c 4d 20 69 6e 65 72 61 63 74 69 6f 6e 73 20 74 68 61 74 0a 3b 3b 20 writing.LLM.ineractions.that.;;.
1e1a0 73 75 69 74 20 79 6f 75 72 20 77 6f 72 6b 66 6c 6f 77 2e 20 20 53 65 65 20 60 67 70 74 65 6c 2d suit.your.workflow...See.`gptel-
1e1c0 72 65 71 75 65 73 74 27 2c 20 61 6e 64 20 60 67 70 74 65 6c 2d 66 73 6d 27 20 66 6f 72 20 6d 6f request',.and.`gptel-fsm'.for.mo
1e1e0 72 65 20 61 64 76 61 6e 63 65 64 0a 3b 3b 20 75 73 61 67 65 2e 0a 0a 3b 3b 3b 20 43 6f 64 65 3a re.advanced.;;.usage...;;;.Code:
1e200 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 6d 61 72 6b 64 6f 77 6e 2d 6d 6f 64 65 .(declare-function.markdown-mode
1e220 20 22 6d 61 72 6b 64 6f 77 6e 2d 6d 6f 64 65 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 ."markdown-mode").(declare-funct
1e240 69 6f 6e 20 67 70 74 65 6c 2d 63 75 72 6c 2d 67 65 74 2d 72 65 73 70 6f 6e 73 65 20 22 67 70 74 ion.gptel-curl-get-response."gpt
1e260 65 6c 2d 63 75 72 6c 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 67 70 74 65 el-curl").(declare-function.gpte
1e280 6c 2d 6d 65 6e 75 20 22 67 70 74 65 6c 2d 74 72 61 6e 73 69 65 6e 74 22 29 0a 28 64 65 63 6c 61 l-menu."gptel-transient").(decla
1e2a0 72 65 2d 66 75 6e 63 74 69 6f 6e 20 67 70 74 65 6c 2d 73 79 73 74 65 6d 2d 70 72 6f 6d 70 74 20 re-function.gptel-system-prompt.
1e2c0 22 67 70 74 65 6c 2d 74 72 61 6e 73 69 65 6e 74 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 "gptel-transient").(declare-func
1e2e0 74 69 6f 6e 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 20 22 67 70 74 65 6c 2d 74 72 61 6e 73 69 65 6e tion.gptel-tools."gptel-transien
1e300 74 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 70 75 6c 73 65 2d 6d 6f 6d 65 t").(declare-function.pulse-mome
1e320 6e 74 61 72 79 2d 68 69 67 68 6c 69 67 68 74 2d 72 65 67 69 6f 6e 20 22 70 75 6c 73 65 22 29 0a ntary-highlight-region."pulse").
1e340 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 6d 61 6b 65 2d 63 6c .(declare-function.ediff-make-cl
1e360 6f 6e 65 64 2d 62 75 66 66 65 72 20 22 65 64 69 66 66 2d 75 74 69 6c 22 29 0a 28 64 65 63 6c 61 oned-buffer."ediff-util").(decla
1e380 72 65 2d 66 75 6e 63 74 69 6f 6e 20 65 64 69 66 66 2d 72 65 67 69 6f 6e 73 2d 69 6e 74 65 72 6e re-function.ediff-regions-intern
1e3a0 61 6c 20 22 65 64 69 66 66 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 68 6c al."ediff").(declare-function.hl
1e3c0 2d 6c 69 6e 65 2d 68 69 67 68 6c 69 67 68 74 20 22 68 6c 2d 6c 69 6e 65 22 29 0a 0a 28 64 65 63 -line-highlight."hl-line")..(dec
1e3e0 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 6f 72 67 2d 65 73 63 61 70 65 2d 63 6f 64 65 2d 69 6e lare-function.org-escape-code-in
1e400 2d 73 74 72 69 6e 67 20 22 6f 72 67 2d 73 72 63 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 -string."org-src").(declare-func
1e420 74 69 6f 6e 20 67 70 74 65 6c 2d 6f 72 67 2d 2d 63 72 65 61 74 65 2d 70 72 6f 6d 70 74 20 22 67 tion.gptel-org--create-prompt."g
1e440 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 70 74 ptel-org").(declare-function.gpt
1e460 65 6c 2d 6f 72 67 2d 73 65 74 2d 74 6f 70 69 63 20 22 67 70 74 65 6c 2d 6f 72 67 22 29 0a 28 64 el-org-set-topic."gptel-org").(d
1e480 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 67 70 74 65 6c 2d 6f 72 67 2d 2d 73 61 76 65 2d eclare-function.gptel-org--save-
1e4a0 73 74 61 74 65 20 22 67 70 74 65 6c 2d 6f 72 67 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 state."gptel-org").(declare-func
1e4c0 74 69 6f 6e 20 67 70 74 65 6c 2d 6f 72 67 2d 2d 72 65 73 74 6f 72 65 2d 73 74 61 74 65 20 22 67 tion.gptel-org--restore-state."g
1e4e0 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 70 74 ptel-org").(declare-function.gpt
1e500 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 72 67 el--stream-convert-markdown->org
1e520 20 22 67 70 74 65 6c 2d 6f 72 67 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 ."gptel-org").(declare-function.
1e540 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 22 67 70 gptel--convert-markdown->org."gp
1e560 74 65 6c 2d 6f 72 67 22 29 0a 28 64 65 66 69 6e 65 2d 6f 62 73 6f 6c 65 74 65 2d 66 75 6e 63 74 tel-org").(define-obsolete-funct
1e580 69 6f 6e 2d 61 6c 69 61 73 0a 20 20 27 67 70 74 65 6c 2d 73 65 74 2d 74 6f 70 69 63 20 27 67 70 ion-alias...'gptel-set-topic.'gp
1e5a0 74 65 6c 2d 6f 72 67 2d 73 65 74 2d 74 6f 70 69 63 20 22 30 2e 37 2e 35 22 29 0a 0a 28 65 76 61 tel-org-set-topic."0.7.5")..(eva
1e5c0 6c 2d 77 68 65 6e 2d 63 6f 6d 70 69 6c 65 0a 20 20 28 72 65 71 75 69 72 65 20 27 73 75 62 72 2d l-when-compile...(require.'subr-
1e5e0 78 29 29 0a 28 72 65 71 75 69 72 65 20 27 63 6c 2d 6c 69 62 29 0a 28 72 65 71 75 69 72 65 20 27 x)).(require.'cl-lib).(require.'
1e600 63 6f 6d 70 61 74 20 6e 69 6c 20 74 29 0a 28 72 65 71 75 69 72 65 20 27 75 72 6c 29 0a 28 72 65 compat.nil.t).(require.'url).(re
1e620 71 75 69 72 65 20 27 6d 61 70 29 0a 28 72 65 71 75 69 72 65 20 27 74 65 78 74 2d 70 72 6f 70 65 quire.'map).(require.'text-prope
1e640 72 74 79 2d 73 65 61 72 63 68 29 0a 28 72 65 71 75 69 72 65 20 27 63 6c 2d 67 65 6e 65 72 69 63 rty-search).(require.'cl-generic
1e660 29 0a 28 72 65 71 75 69 72 65 20 27 67 70 74 65 6c 2d 6f 70 65 6e 61 69 29 0a 0a 0c 0a 3b 3b 3b ).(require.'gptel-openai)....;;;
1e680 20 55 73 65 72 20 6f 70 74 69 6f 6e 73 0a 0a 28 64 65 66 67 72 6f 75 70 20 67 70 74 65 6c 20 6e .User.options..(defgroup.gptel.n
1e6a0 69 6c 0a 20 20 22 49 6e 74 65 72 61 63 74 20 77 69 74 68 20 4c 4c 4d 73 20 66 72 6f 6d 20 61 6e il..."Interact.with.LLMs.from.an
1e6c0 79 77 68 65 72 65 20 69 6e 20 45 6d 61 63 73 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 68 79 70 65 ywhere.in.Emacs."...:group.'hype
1e6e0 72 6d 65 64 69 61 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 70 72 6f 78 79 20 rmedia)..(defcustom.gptel-proxy.
1e700 22 22 0a 20 20 22 50 61 74 68 20 74 6f 20 61 20 70 72 6f 78 79 20 74 6f 20 75 73 65 20 66 6f 72 ""..."Path.to.a.proxy.to.use.for
1e720 20 67 70 74 65 6c 20 69 6e 74 65 72 61 63 74 69 6f 6e 73 2e 0a 50 61 73 73 65 64 20 74 6f 20 63 .gptel.interactions..Passed.to.c
1e740 75 72 6c 20 76 69 61 20 2d 2d 70 72 6f 78 79 20 61 72 67 2c 20 66 6f 72 20 65 78 61 6d 70 6c 65 url.via.--proxy.arg,.for.example
1e760 20 5c 22 70 72 6f 78 79 2e 79 6f 75 72 6f 72 67 2e 63 6f 6d 3a 38 30 5c 22 0a 4c 65 61 76 65 20 .\"proxy.yourorg.com:80\".Leave.
1e780 69 74 20 65 6d 70 74 79 20 69 66 20 79 6f 75 20 64 6f 6e 27 74 20 75 73 65 20 61 20 70 72 6f 78 it.empty.if.you.don't.use.a.prox
1e7a0 79 2e 22 0a 20 20 3a 74 79 70 65 20 27 73 74 72 69 6e 67 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d y."...:type.'string)..(defcustom
1e7c0 20 67 70 74 65 6c 2d 61 70 69 2d 6b 65 79 20 23 27 67 70 74 65 6c 2d 61 70 69 2d 6b 65 79 2d 66 .gptel-api-key.#'gptel-api-key-f
1e7e0 72 6f 6d 2d 61 75 74 68 2d 73 6f 75 72 63 65 0a 20 20 22 41 6e 20 41 50 49 20 6b 65 79 20 28 73 rom-auth-source..."An.API.key.(s
1e800 74 72 69 6e 67 29 20 66 6f 72 20 74 68 65 20 64 65 66 61 75 6c 74 20 4c 4c 4d 20 62 61 63 6b 65 tring).for.the.default.LLM.backe
1e820 6e 64 2e 0a 0a 4f 70 65 6e 41 49 20 62 79 20 64 65 66 61 75 6c 74 2e 0a 0a 43 61 6e 20 61 6c 73 nd...OpenAI.by.default...Can.als
1e840 6f 20 62 65 20 61 20 66 75 6e 63 74 69 6f 6e 20 6f 66 20 6e 6f 20 61 72 67 75 6d 65 6e 74 73 20 o.be.a.function.of.no.arguments.
1e860 74 68 61 74 20 72 65 74 75 72 6e 73 20 61 6e 20 41 50 49 0a 6b 65 79 20 28 6d 6f 72 65 20 73 65 that.returns.an.API.key.(more.se
1e880 63 75 72 65 29 20 66 6f 72 20 74 68 65 20 61 63 74 69 76 65 20 62 61 63 6b 65 6e 64 2e 22 0a 20 cure).for.the.active.backend."..
1e8a0 20 3a 74 79 70 65 20 27 28 63 68 6f 69 63 65 0a 20 20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e .:type.'(choice...........(strin
1e8c0 67 20 3a 74 61 67 20 22 41 50 49 20 6b 65 79 22 29 0a 20 20 20 20 20 20 20 20 20 20 28 66 75 6e g.:tag."API.key")...........(fun
1e8e0 63 74 69 6f 6e 20 3a 74 61 67 20 22 46 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 72 65 74 75 72 6e ction.:tag."Function.that.return
1e900 73 20 74 68 65 20 41 50 49 20 6b 65 79 22 29 29 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 s.the.API.key")))..(defcustom.gp
1e920 74 65 6c 2d 73 74 72 65 61 6d 20 74 0a 20 20 22 53 74 72 65 61 6d 20 72 65 73 70 6f 6e 73 65 73 tel-stream.t..."Stream.responses
1e940 20 66 72 6f 6d 20 74 68 65 20 4c 4c 4d 20 61 73 20 74 68 65 79 20 61 72 65 20 72 65 63 65 69 76 .from.the.LLM.as.they.are.receiv
1e960 65 64 2e 0a 0a 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 69 67 6e 6f 72 65 64 20 75 6e 6c 65 ed...This.option.is.ignored.unle
1e980 73 73 0a 2d 20 74 68 65 20 4c 4c 4d 20 62 61 63 6b 65 6e 64 20 73 75 70 70 6f 72 74 73 20 73 74 ss.-.the.LLM.backend.supports.st
1e9a0 72 65 61 6d 69 6e 67 2c 20 61 6e 64 0a 2d 20 43 75 72 6c 20 69 73 20 69 6e 20 75 73 65 20 28 73 reaming,.and.-.Curl.is.in.use.(s
1e9c0 65 65 20 60 67 70 74 65 6c 2d 75 73 65 2d 63 75 72 6c 27 29 0a 0a 57 68 65 6e 20 73 65 74 20 74 ee.`gptel-use-curl')..When.set.t
1e9e0 6f 20 6e 69 6c 2c 20 45 6d 61 63 73 20 77 61 69 74 73 20 66 6f 72 20 74 68 65 20 66 75 6c 6c 20 o.nil,.Emacs.waits.for.the.full.
1ea00 72 65 73 70 6f 6e 73 65 20 61 6e 64 20 69 6e 73 65 72 74 73 20 69 74 0a 61 6c 6c 20 61 74 20 6f response.and.inserts.it.all.at.o
1ea20 6e 63 65 2e 20 20 54 68 69 73 20 77 61 69 74 20 69 73 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 2e nce...This.wait.is.asynchronous.
1ea40 0a 0a 5c 3d 27 74 69 73 20 61 20 62 69 74 20 73 69 6c 6c 79 2e 22 0a 20 20 3a 74 79 70 65 20 27 ..\='tis.a.bit.silly."...:type.'
1ea60 62 6f 6f 6c 65 61 6e 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 75 73 65 2d 63 boolean)..(defcustom.gptel-use-c
1ea80 75 72 6c 20 28 61 6e 64 20 28 65 78 65 63 75 74 61 62 6c 65 2d 66 69 6e 64 20 22 63 75 72 6c 22 url.(and.(executable-find."curl"
1eaa0 29 20 74 29 0a 20 20 22 57 68 65 74 68 65 72 20 67 70 74 65 6c 20 73 68 6f 75 6c 64 20 70 72 65 ).t)..."Whether.gptel.should.pre
1eac0 66 65 72 20 43 75 72 6c 20 77 68 65 6e 20 61 76 61 69 6c 61 62 6c 65 2e 22 0a 20 20 3a 74 79 70 fer.Curl.when.available."...:typ
1eae0 65 20 27 62 6f 6f 6c 65 61 6e 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 6f 72 e.'boolean)..(defcustom.gptel-or
1eb00 67 2d 63 6f 6e 76 65 72 74 2d 72 65 73 70 6f 6e 73 65 20 74 0a 20 20 22 57 68 65 74 68 65 72 20 g-convert-response.t..."Whether.
1eb20 67 70 74 65 6c 20 73 68 6f 75 6c 64 20 63 6f 6e 76 65 72 74 20 4d 61 72 6b 64 6f 77 6e 20 72 65 gptel.should.convert.Markdown.re
1eb40 73 70 6f 6e 73 65 73 20 74 6f 20 4f 72 67 20 6d 61 72 6b 75 70 2e 0a 0a 54 68 69 73 20 6f 6e 6c sponses.to.Org.markup...This.onl
1eb60 79 20 61 66 66 65 63 74 73 20 72 65 71 75 65 73 74 73 20 6f 72 69 67 69 6e 61 74 69 6e 67 20 66 y.affects.requests.originating.f
1eb80 72 6f 6d 20 4f 72 67 20 6d 6f 64 65 20 62 75 66 66 65 72 73 2e 22 0a 20 20 3a 74 79 70 65 20 27 rom.Org.mode.buffers."...:type.'
1eba0 62 6f 6f 6c 65 61 6e 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 63 75 72 6c 2d boolean)..(defcustom.gptel-curl-
1ebc0 66 69 6c 65 2d 73 69 7a 65 2d 74 68 72 65 73 68 6f 6c 64 0a 20 20 28 69 66 20 28 6d 65 6d 71 20 file-size-threshold...(if.(memq.
1ebe0 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 2d 64 6f 73 29 system-type.'(windows-nt.ms-dos)
1ec00 29 20 33 32 37 36 36 20 31 33 30 30 30 30 29 0a 20 20 22 53 69 7a 65 20 74 68 72 65 73 68 6f 6c ).32766.130000)..."Size.threshol
1ec20 64 20 66 6f 72 20 75 73 69 6e 67 20 66 69 6c 65 20 69 6e 70 75 74 20 77 69 74 68 20 43 75 72 6c d.for.using.file.input.with.Curl
1ec40 2e 0a 0a 53 70 65 63 69 66 69 65 73 20 74 68 65 20 73 69 7a 65 20 74 68 72 65 73 68 6f 6c 64 20 ...Specifies.the.size.threshold.
1ec60 66 6f 72 20 77 68 65 6e 20 74 6f 20 75 73 65 20 61 20 74 65 6d 70 6f 72 61 72 79 20 66 69 6c 65 for.when.to.use.a.temporary.file
1ec80 20 74 6f 20 70 61 73 73 20 64 61 74 61 20 74 6f 0a 43 75 72 6c 20 69 6e 20 47 50 54 65 6c 20 71 .to.pass.data.to.Curl.in.GPTel.q
1eca0 75 65 72 69 65 73 2e 20 20 49 66 20 74 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20 64 61 74 61 ueries...If.the.size.of.the.data
1ecc0 20 74 6f 20 62 65 20 73 65 6e 74 20 65 78 63 65 65 64 73 20 74 68 69 73 0a 74 68 72 65 73 68 6f .to.be.sent.exceeds.this.thresho
1ece0 6c 64 2c 20 74 68 65 20 64 61 74 61 20 69 73 20 77 72 69 74 74 65 6e 20 74 6f 20 61 20 74 65 6d ld,.the.data.is.written.to.a.tem
1ed00 70 6f 72 61 72 79 20 66 69 6c 65 20 61 6e 64 20 70 61 73 73 65 64 20 74 6f 20 43 75 72 6c 20 75 porary.file.and.passed.to.Curl.u
1ed20 73 69 6e 67 20 74 68 65 0a 60 2d 2d 64 61 74 61 2d 62 69 6e 61 72 79 27 20 6f 70 74 69 6f 6e 20 sing.the.`--data-binary'.option.
1ed40 77 69 74 68 20 61 20 66 69 6c 65 20 72 65 66 65 72 65 6e 63 65 2e 20 20 4f 74 68 65 72 77 69 73 with.a.file.reference...Otherwis
1ed60 65 2c 20 74 68 65 20 64 61 74 61 20 69 73 20 70 61 73 73 65 64 0a 64 69 72 65 63 74 6c 79 20 61 e,.the.data.is.passed.directly.a
1ed80 73 20 61 20 63 6f 6d 6d 61 6e 64 2d 6c 69 6e 65 20 61 72 67 75 6d 65 6e 74 2e 0a 0a 54 68 65 20 s.a.command-line.argument...The.
1eda0 76 61 6c 75 65 20 69 73 20 61 6e 20 69 6e 74 65 67 65 72 20 72 65 70 72 65 73 65 6e 74 69 6e 67 value.is.an.integer.representing
1edc0 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73 2e 0a 0a 41 64 6a 75 73 74 69 6e 67 .the.number.of.bytes...Adjusting
1ede0 20 74 68 69 73 20 76 61 6c 75 65 20 6d 61 79 20 62 65 20 6e 65 63 65 73 73 61 72 79 20 64 65 70 .this.value.may.be.necessary.dep
1ee00 65 6e 64 69 6e 67 20 6f 6e 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 0a 61 6e 64 20 74 68 ending.on.the.environment.and.th
1ee20 65 20 74 79 70 69 63 61 6c 20 73 69 7a 65 20 6f 66 20 74 68 65 20 64 61 74 61 20 62 65 69 6e 67 e.typical.size.of.the.data.being
1ee40 20 73 65 6e 74 20 69 6e 20 47 50 54 65 6c 20 71 75 65 72 69 65 73 2e 0a 41 20 6c 61 72 67 65 72 .sent.in.GPTel.queries..A.larger
1ee60 20 76 61 6c 75 65 20 6d 61 79 20 69 6d 70 72 6f 76 65 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 62 .value.may.improve.performance.b
1ee80 79 20 61 76 6f 69 64 69 6e 67 20 74 68 65 20 6f 76 65 72 68 65 61 64 20 6f 66 20 63 72 65 61 74 y.avoiding.the.overhead.of.creat
1eea0 69 6e 67 0a 74 65 6d 70 6f 72 61 72 79 20 66 69 6c 65 73 20 66 6f 72 20 73 6d 61 6c 6c 20 64 61 ing.temporary.files.for.small.da
1eec0 74 61 20 70 61 79 6c 6f 61 64 73 2c 20 77 68 69 6c 65 20 61 20 73 6d 61 6c 6c 65 72 20 76 61 6c ta.payloads,.while.a.smaller.val
1eee0 75 65 20 6d 61 79 20 62 65 20 6e 65 65 64 65 64 0a 69 66 20 74 68 65 20 63 6f 6d 6d 61 6e 64 2d ue.may.be.needed.if.the.command-
1ef00 6c 69 6e 65 20 61 72 67 75 6d 65 6e 74 20 73 69 7a 65 20 69 73 20 6c 69 6d 69 74 65 64 20 62 79 line.argument.size.is.limited.by
1ef20 20 74 68 65 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 2e 0a 0a 54 68 65 20 64 65 66 61 .the.operating.system...The.defa
1ef40 75 6c 74 20 66 6f 72 20 77 69 6e 64 6f 77 73 20 63 6f 6d 65 73 20 66 72 6f 6d 20 4d 69 63 72 6f ult.for.windows.comes.from.Micro
1ef60 73 6f 66 74 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 6c 6f 63 61 74 65 64 20 68 65 72 65 3a soft.documentation.located.here:
1ef80 0a 68 74 74 70 73 3a 2f 2f 6c 65 61 72 6e 2e 6d 69 63 72 6f 73 6f 66 74 2e 63 6f 6d 2f 65 6e 2d .https://learn.microsoft.com/en-
1efa0 75 73 2f 77 69 6e 64 6f 77 73 2f 77 69 6e 33 32 2f 61 70 69 2f 70 72 6f 63 65 73 73 74 68 72 65 us/windows/win32/api/processthre
1efc0 61 64 73 61 70 69 2f 6e 66 2d 70 72 6f 63 65 73 73 74 68 72 65 61 64 73 61 70 69 2d 63 72 65 61 adsapi/nf-processthreadsapi-crea
1efe0 74 65 70 72 6f 63 65 73 73 61 22 0a 20 20 3a 74 79 70 65 20 27 6e 61 74 6e 75 6d 29 0a 0a 28 64 teprocessa"...:type.'natnum)..(d
1f000 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 66 69 6c 74 65 72 2d 68 6f 6f efcustom.gptel-prompt-filter-hoo
1f020 6b 20 6e 69 6c 0a 20 20 22 48 6f 6f 6b 20 72 75 6e 20 74 6f 20 6d 6f 64 69 66 79 20 74 68 65 20 k.nil..."Hook.run.to.modify.the.
1f040 62 75 66 66 65 72 20 62 65 66 6f 72 65 20 73 65 6e 64 69 6e 67 2e 0a 0a 54 68 69 73 20 68 6f 6f buffer.before.sending...This.hoo
1f060 6b 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 61 20 74 65 6d 70 6f 72 61 72 79 20 62 75 66 66 65 k.is.called.in.a.temporary.buffe
1f080 72 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 74 65 78 74 20 74 6f 0a 62 65 20 73 65 6e 74 r.containing.the.text.to.be.sent
1f0a0 2c 20 77 69 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 ,.with.the.cursor.at.the.end.of.
1f0c0 74 68 65 20 70 72 6f 6d 70 74 2e 20 20 59 6f 75 20 63 61 6e 20 75 73 65 0a 69 74 20 74 6f 20 6d the.prompt...You.can.use.it.to.m
1f0e0 6f 64 69 66 79 20 74 68 65 20 62 75 66 66 65 72 20 61 73 20 72 65 71 75 69 72 65 64 2e 0a 0a 45 odify.the.buffer.as.required...E
1f100 78 61 6d 70 6c 65 3a 20 41 20 74 79 70 69 63 61 6c 20 75 73 65 20 63 61 73 65 20 6d 69 67 68 74 xample:.A.typical.use.case.might
1f120 20 62 65 20 74 6f 20 73 65 61 72 63 68 20 66 6f 72 20 6f 63 63 75 72 72 65 6e 63 65 73 20 6f 66 .be.to.search.for.occurrences.of
1f140 0a 24 28 63 6d 64 29 20 61 6e 64 20 72 65 70 6c 61 63 65 20 69 74 20 77 69 74 68 20 74 68 65 20 .$(cmd).and.replace.it.with.the.
1f160 6f 75 74 70 75 74 20 6f 66 20 74 68 65 20 73 68 65 6c 6c 20 63 6f 6d 6d 61 6e 64 20 63 6d 64 2c output.of.the.shell.command.cmd,
1f180 0a 6d 61 6b 69 6e 67 20 69 74 20 65 61 73 79 20 74 6f 20 73 65 6e 64 20 74 68 65 20 6f 75 74 70 .making.it.easy.to.send.the.outp
1f1a0 75 74 20 6f 66 20 73 68 65 6c 6c 20 63 6f 6d 6d 61 6e 64 73 20 74 6f 20 74 68 65 20 4c 4c 4d 2e ut.of.shell.commands.to.the.LLM.
1f1c0 22 0a 20 20 3a 67 72 6f 75 70 20 27 67 70 74 65 6c 0a 20 20 3a 74 79 70 65 20 27 68 6f 6f 6b 29 "...:group.'gptel...:type.'hook)
1f1e0 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 70 6f 73 74 2d 72 65 71 75 65 73 74 2d ..(defcustom.gptel-post-request-
1f200 68 6f 6f 6b 20 6e 69 6c 0a 20 20 22 48 6f 6f 6b 20 72 75 6e 20 61 66 74 65 72 20 73 65 6e 64 69 hook.nil..."Hook.run.after.sendi
1f220 6e 67 20 61 20 67 70 74 65 6c 20 72 65 71 75 65 73 74 2e 0a 0a 54 68 69 73 20 72 75 6e 73 20 28 ng.a.gptel.request...This.runs.(
1f240 70 6f 73 73 69 62 6c 79 29 20 62 65 66 6f 72 65 20 61 6e 79 20 72 65 73 70 6f 6e 73 65 20 69 73 possibly).before.any.response.is
1f260 20 72 65 63 65 69 76 65 64 2e 22 0a 20 20 3a 74 79 70 65 20 27 68 6f 6f 6b 29 0a 0a 3b 3b 20 54 .received."...:type.'hook)..;;.T
1f280 4f 44 4f 28 76 31 2e 30 29 3a 20 52 65 6d 6f 76 65 20 74 68 69 73 2e 0a 28 64 65 66 76 61 72 20 ODO(v1.0):.Remove.this..(defvar.
1f2a0 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 66 69 6c 74 65 72 2d 66 75 6e 63 74 69 6f 6e 73 20 gptel-response-filter-functions.
1f2c0 6e 69 6c 29 0a 28 6d 61 6b 65 2d 6f 62 73 6f 6c 65 74 65 2d 76 61 72 69 61 62 6c 65 0a 20 27 67 nil).(make-obsolete-variable..'g
1f2e0 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 0a 20 ptel-response-filter-functions..
1f300 22 52 65 73 70 6f 6e 73 65 20 66 69 6c 74 65 72 69 6e 67 20 69 73 20 6e 6f 20 6c 6f 6e 67 65 72 "Response.filtering.is.no.longer
1f320 20 73 75 70 70 6f 72 74 65 64 20 69 6e 20 67 70 74 65 6c 2e 20 20 54 6f 20 74 6f 67 67 6c 65 0a .supported.in.gptel...To.toggle.
1f340 6d 61 72 6b 64 6f 77 6e 20 74 6f 20 4f 72 67 20 63 6f 6e 76 65 72 73 69 6f 6e 2c 20 73 65 65 20 markdown.to.Org.conversion,.see.
1f360 60 67 70 74 65 6c 2d 6f 72 67 2d 63 6f 6e 76 65 72 74 2d 72 65 73 70 6f 6e 73 65 27 2e 20 20 54 `gptel-org-convert-response'...T
1f380 6f 0a 66 69 6c 74 65 72 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 20 74 65 78 74 2c 20 65 69 74 68 o.filter.LLM.response.text,.eith
1f3a0 65 72 20 75 73 65 20 60 67 70 74 65 6c 2d 72 65 71 75 65 73 74 27 20 77 69 74 68 20 61 0a 63 75 er.use.`gptel-request'.with.a.cu
1f3c0 73 74 6f 6d 20 63 61 6c 6c 62 61 63 6b 2c 20 6f 72 20 75 73 65 20 60 67 70 74 65 6c 2d 70 6f 73 stom.callback,.or.use.`gptel-pos
1f3e0 74 2d 72 65 73 70 6f 6e 73 65 2d 66 75 6e 63 74 69 6f 6e 73 27 2e 22 0a 20 22 30 2e 39 2e 37 22 t-response-functions'.".."0.9.7"
1f400 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 70 72 65 2d 72 65 73 70 6f 6e 73 65 )..(defcustom.gptel-pre-response
1f420 2d 68 6f 6f 6b 20 6e 69 6c 0a 20 20 22 48 6f 6f 6b 20 72 75 6e 20 62 65 66 6f 72 65 20 69 6e 73 -hook.nil..."Hook.run.before.ins
1f440 65 72 74 69 6e 67 20 74 68 65 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 20 69 6e 74 6f 20 74 68 65 erting.the.LLM.response.into.the
1f460 20 63 75 72 72 65 6e 74 20 62 75 66 66 65 72 2e 0a 0a 54 68 69 73 20 68 6f 6f 6b 20 69 73 20 63 .current.buffer...This.hook.is.c
1f480 61 6c 6c 65 64 20 69 6e 20 74 68 65 20 62 75 66 66 65 72 20 77 68 65 72 65 20 74 68 65 20 4c 4c alled.in.the.buffer.where.the.LL
1f4a0 4d 20 72 65 73 70 6f 6e 73 65 20 77 69 6c 6c 20 62 65 0a 69 6e 73 65 72 74 65 64 2e 0a 0a 4e 6f M.response.will.be.inserted...No
1f4c0 74 65 3a 20 74 68 69 73 20 68 6f 6f 6b 20 6f 6e 6c 79 20 72 75 6e 73 20 69 66 20 74 68 65 20 72 te:.this.hook.only.runs.if.the.r
1f4e0 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 6f 6f 6b 29 equest.succeeds."...:type.'hook)
1f500 0a 0a 28 64 65 66 69 6e 65 2d 6f 62 73 6f 6c 65 74 65 2d 76 61 72 69 61 62 6c 65 2d 61 6c 69 61 ..(define-obsolete-variable-alia
1f520 73 0a 20 20 27 67 70 74 65 6c 2d 70 6f 73 74 2d 72 65 73 70 6f 6e 73 65 2d 68 6f 6f 6b 20 27 67 s...'gptel-post-response-hook.'g
1f540 70 74 65 6c 2d 70 6f 73 74 2d 72 65 73 70 6f 6e 73 65 2d 66 75 6e 63 74 69 6f 6e 73 0a 20 20 22 ptel-post-response-functions..."
1f560 30 2e 36 2e 30 22 0a 20 20 22 50 6f 73 74 2d 72 65 73 70 6f 6e 73 65 20 66 75 6e 63 74 69 6f 6e 0.6.0"..."Post-response.function
1f580 73 20 61 72 65 20 6e 6f 77 20 63 61 6c 6c 65 64 20 77 69 74 68 20 74 77 6f 20 61 72 67 75 6d 65 s.are.now.called.with.two.argume
1f5a0 6e 74 73 3a 20 74 68 65 0a 73 74 61 72 74 20 61 6e 64 20 65 6e 64 20 62 75 66 66 65 72 20 70 6f nts:.the.start.and.end.buffer.po
1f5c0 73 69 74 69 6f 6e 73 20 6f 66 20 74 68 65 20 72 65 73 70 6f 6e 73 65 2e 22 29 0a 0a 28 64 65 66 sitions.of.the.response.")..(def
1f5e0 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 70 6f 73 74 2d 72 65 73 70 6f 6e 73 65 2d 66 75 6e 63 74 custom.gptel-post-response-funct
1f600 69 6f 6e 73 20 6e 69 6c 0a 20 20 22 41 62 6e 6f 72 6d 61 6c 20 68 6f 6f 6b 20 72 75 6e 20 61 66 ions.nil..."Abnormal.hook.run.af
1f620 74 65 72 20 69 6e 73 65 72 74 69 6e 67 20 74 68 65 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 20 69 ter.inserting.the.LLM.response.i
1f640 6e 74 6f 20 74 68 65 20 63 75 72 72 65 6e 74 20 62 75 66 66 65 72 2e 0a 0a 54 68 69 73 20 68 6f nto.the.current.buffer...This.ho
1f660 6f 6b 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 74 68 65 20 62 75 66 66 65 72 20 74 6f 20 77 68 ok.is.called.in.the.buffer.to.wh
1f680 69 63 68 20 74 68 65 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 20 69 73 0a 73 65 6e 74 2c 20 61 6e ich.the.LLM.response.is.sent,.an
1f6a0 64 20 61 66 74 65 72 20 74 68 65 20 66 75 6c 6c 20 72 65 73 70 6f 6e 73 65 20 68 61 73 20 62 65 d.after.the.full.response.has.be
1f6c0 65 6e 20 69 6e 73 65 72 74 65 64 2e 20 20 45 61 63 68 0a 66 75 6e 63 74 69 6f 6e 20 69 73 20 63 en.inserted...Each.function.is.c
1f6e0 61 6c 6c 65 64 20 77 69 74 68 20 74 77 6f 20 61 72 67 75 6d 65 6e 74 73 3a 20 74 68 65 20 72 65 alled.with.two.arguments:.the.re
1f700 73 70 6f 6e 73 65 20 62 65 67 69 6e 6e 69 6e 67 20 61 6e 64 0a 65 6e 64 20 70 6f 73 69 74 69 6f sponse.beginning.and.end.positio
1f720 6e 73 2e 0a 0a 4e 6f 74 65 3a 20 74 68 69 73 20 68 6f 6f 6b 20 72 75 6e 73 20 65 76 65 6e 20 69 ns...Note:.this.hook.runs.even.i
1f740 66 20 74 68 65 20 72 65 71 75 65 73 74 20 66 61 69 6c 73 2e 20 20 49 6e 20 74 68 69 73 20 63 61 f.the.request.fails...In.this.ca
1f760 73 65 20 74 68 65 0a 72 65 73 70 6f 6e 73 65 20 62 65 67 69 6e 6e 69 6e 67 20 61 6e 64 20 65 6e se.the.response.beginning.and.en
1f780 64 20 70 6f 73 69 74 69 6f 6e 73 20 61 72 65 20 62 6f 74 68 20 74 68 65 20 63 75 72 73 6f 72 20 d.positions.are.both.the.cursor.
1f7a0 70 6f 73 69 74 69 6f 6e 0a 61 74 20 74 68 65 20 74 69 6d 65 20 6f 66 20 74 68 65 20 72 65 71 75 position.at.the.time.of.the.requ
1f7c0 65 73 74 2e 22 0a 20 20 3a 74 79 70 65 20 27 68 6f 6f 6b 29 0a 0a 3b 3b 20 28 64 65 66 63 75 73 est."...:type.'hook)..;;.(defcus
1f7e0 74 6f 6d 20 67 70 74 65 6c 2d 70 72 65 2d 73 74 72 65 61 6d 2d 69 6e 73 65 72 74 2d 68 6f 6f 6b tom.gptel-pre-stream-insert-hook
1f800 20 6e 69 6c 0a 3b 3b 20 20 20 22 48 6f 6f 6b 20 72 75 6e 20 62 65 66 6f 72 65 20 65 61 63 68 20 .nil.;;..."Hook.run.before.each.
1f820 69 6e 73 65 72 74 69 6f 6e 20 6f 66 20 74 68 65 20 4c 4c 4d 27 73 20 73 74 72 65 61 6d 69 6e 67 insertion.of.the.LLM's.streaming
1f840 20 72 65 73 70 6f 6e 73 65 2e 0a 0a 3b 3b 20 54 68 69 73 20 68 6f 6f 6b 20 69 73 20 63 61 6c 6c .response...;;.This.hook.is.call
1f860 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 65 20 ed.in.the.buffer.from.which.the.
1f880 70 72 6f 6d 70 74 20 77 61 73 20 73 65 6e 74 0a 3b 3b 20 74 6f 20 74 68 65 20 4c 4c 4d 2c 20 69 prompt.was.sent.;;.to.the.LLM,.i
1f8a0 6d 6d 65 64 69 61 74 65 6c 79 20 62 65 66 6f 72 65 20 74 65 78 74 20 69 6e 73 65 72 74 69 6f 6e mmediately.before.text.insertion
1f8c0 2e 22 0a 3b 3b 20 20 20 3a 67 72 6f 75 70 20 27 67 70 74 65 6c 0a 3b 3b 20 20 20 3a 74 79 70 65 .".;;...:group.'gptel.;;...:type
1f8e0 20 27 68 6f 6f 6b 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 70 6f 73 74 2d 73 .'hook)..(defcustom.gptel-post-s
1f900 74 72 65 61 6d 2d 68 6f 6f 6b 20 6e 69 6c 0a 20 20 22 48 6f 6f 6b 20 72 75 6e 20 61 66 74 65 72 tream-hook.nil..."Hook.run.after
1f920 20 65 61 63 68 20 69 6e 73 65 72 74 69 6f 6e 20 6f 66 20 74 68 65 20 4c 4c 4d 27 73 20 73 74 72 .each.insertion.of.the.LLM's.str
1f940 65 61 6d 69 6e 67 20 72 65 73 70 6f 6e 73 65 2e 0a 0a 54 68 69 73 20 68 6f 6f 6b 20 69 73 20 63 eaming.response...This.hook.is.c
1f960 61 6c 6c 65 64 20 69 6e 20 74 68 65 20 62 75 66 66 65 72 20 66 72 6f 6d 20 77 68 69 63 68 20 74 alled.in.the.buffer.from.which.t
1f980 68 65 20 70 72 6f 6d 70 74 20 77 61 73 20 73 65 6e 74 0a 74 6f 20 74 68 65 20 4c 4c 4d 2c 20 61 he.prompt.was.sent.to.the.LLM,.a
1f9a0 6e 64 20 61 66 74 65 72 20 61 20 74 65 78 74 20 69 6e 73 65 72 74 69 6f 6e 2e 22 0a 20 20 3a 74 nd.after.a.text.insertion."...:t
1f9c0 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 73 61 76 ype.'hook)..(defcustom.gptel-sav
1f9e0 65 2d 73 74 61 74 65 2d 68 6f 6f 6b 20 6e 69 6c 0a 20 20 22 48 6f 6f 6b 20 72 75 6e 20 62 65 66 e-state-hook.nil..."Hook.run.bef
1fa00 6f 72 65 20 67 70 74 65 6c 20 73 61 76 65 73 20 6d 6f 64 65 6c 20 70 61 72 61 6d 65 74 65 72 73 ore.gptel.saves.model.parameters
1fa20 20 74 6f 20 61 20 66 69 6c 65 2e 0a 0a 59 6f 75 20 63 61 6e 20 75 73 65 20 74 68 69 73 20 68 6f .to.a.file...You.can.use.this.ho
1fa40 6f 6b 20 74 6f 20 73 74 6f 72 65 20 61 64 64 69 74 69 6f 6e 61 6c 20 63 6f 6e 76 65 72 73 61 74 ok.to.store.additional.conversat
1fa60 69 6f 6e 20 73 74 61 74 65 20 6f 72 0a 6d 6f 64 65 6c 20 70 61 72 61 6d 65 74 65 72 73 20 74 6f ion.state.or.model.parameters.to
1fa80 20 74 68 65 20 63 68 61 74 20 62 75 66 66 65 72 2c 20 6f 72 20 74 6f 20 6d 6f 64 69 66 79 20 74 .the.chat.buffer,.or.to.modify.t
1faa0 68 65 20 62 75 66 66 65 72 20 69 6e 0a 73 6f 6d 65 20 6f 74 68 65 72 20 77 61 79 2e 22 0a 20 20 he.buffer.in.some.other.way."...
1fac0 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 64 :type.'hook)..(defcustom.gptel-d
1fae0 65 66 61 75 6c 74 2d 6d 6f 64 65 20 28 69 66 20 28 66 62 6f 75 6e 64 70 20 27 6d 61 72 6b 64 6f efault-mode.(if.(fboundp.'markdo
1fb00 77 6e 2d 6d 6f 64 65 29 0a 09 09 09 09 20 20 27 6d 61 72 6b 64 6f 77 6e 2d 6d 6f 64 65 0a 09 09 wn-mode).......'markdown-mode...
1fb20 09 09 27 74 65 78 74 2d 6d 6f 64 65 29 0a 20 20 22 54 68 65 20 64 65 66 61 75 6c 74 20 6d 61 6a ..'text-mode)..."The.default.maj
1fb40 6f 72 20 6d 6f 64 65 20 66 6f 72 20 64 65 64 69 63 61 74 65 64 20 63 68 61 74 20 62 75 66 66 65 or.mode.for.dedicated.chat.buffe
1fb60 72 73 2e 0a 0a 49 66 20 60 6d 61 72 6b 64 6f 77 6e 2d 6d 6f 64 65 27 20 69 73 20 61 76 61 69 6c rs...If.`markdown-mode'.is.avail
1fb80 61 62 6c 65 2c 20 69 74 20 69 73 20 75 73 65 64 2e 20 20 4f 74 68 65 72 77 69 73 65 20 67 70 74 able,.it.is.used...Otherwise.gpt
1fba0 65 6c 0a 64 65 66 61 75 6c 74 73 20 74 6f 20 60 74 65 78 74 2d 6d 6f 64 65 27 2e 22 0a 20 20 3a el.defaults.to.`text-mode'."...:
1fbc0 74 79 70 65 20 27 66 75 6e 63 74 69 6f 6e 29 0a 0a 3b 3b 20 54 4f 44 4f 3a 20 48 61 6e 64 6c 65 type.'function)..;;.TODO:.Handle
1fbe0 20 60 70 72 6f 67 2d 6d 6f 64 65 27 20 75 73 69 6e 67 20 74 68 65 20 60 63 6f 6d 6d 65 6e 74 2d .`prog-mode'.using.the.`comment-
1fc00 73 74 61 72 74 27 20 76 61 72 69 61 62 6c 65 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c start'.variable.(defcustom.gptel
1fc20 2d 70 72 6f 6d 70 74 2d 70 72 65 66 69 78 2d 61 6c 69 73 74 0a 20 20 27 28 28 6d 61 72 6b 64 6f -prompt-prefix-alist...'((markdo
1fc40 77 6e 2d 6d 6f 64 65 20 2e 20 22 23 23 23 20 22 29 0a 20 20 20 20 28 6f 72 67 2d 6d 6f 64 65 20 wn-mode..."###.").....(org-mode.
1fc60 2e 20 22 2a 2a 2a 20 22 29 0a 20 20 20 20 28 74 65 78 74 2d 6d 6f 64 65 20 2e 20 22 23 23 23 20 .."***.").....(text-mode..."###.
1fc80 22 29 29 0a 20 20 22 53 74 72 69 6e 67 20 75 73 65 64 20 61 73 20 61 20 70 72 65 66 69 78 20 74 "))..."String.used.as.a.prefix.t
1fca0 6f 20 74 68 65 20 71 75 65 72 79 20 62 65 69 6e 67 20 73 65 6e 74 20 74 6f 20 74 68 65 20 4c 4c o.the.query.being.sent.to.the.LL
1fcc0 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 74 M...This.is.meant.for.the.user.t
1fce0 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 6e o.distinguish.between.queries.an
1fd00 64 0a 72 65 73 70 6f 6e 73 65 73 2c 20 61 6e 64 20 69 73 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d d.responses,.and.is.removed.from
1fd20 20 74 68 65 20 71 75 65 72 79 20 62 65 66 6f 72 65 20 69 74 20 69 73 20 73 65 6e 74 2e 0a 0a 54 .the.query.before.it.is.sent...T
1fd40 68 69 73 20 69 73 20 61 6e 20 61 6c 69 73 74 20 6d 61 70 70 69 6e 67 20 6d 61 6a 6f 72 20 6d 6f his.is.an.alist.mapping.major.mo
1fd60 64 65 73 20 74 6f 20 74 68 65 20 70 72 65 66 69 78 20 73 74 72 69 6e 67 73 2e 20 20 54 68 69 73 des.to.the.prefix.strings...This
1fd80 0a 69 73 20 6f 6e 6c 79 20 69 6e 73 65 72 74 65 64 20 69 6e 20 64 65 64 69 63 61 74 65 64 20 67 .is.only.inserted.in.dedicated.g
1fda0 70 74 65 6c 20 62 75 66 66 65 72 73 2e 22 0a 20 20 3a 74 79 70 65 20 27 28 61 6c 69 73 74 20 3a ptel.buffers."...:type.'(alist.:
1fdc0 6b 65 79 2d 74 79 70 65 20 73 79 6d 62 6f 6c 20 3a 76 61 6c 75 65 2d 74 79 70 65 20 73 74 72 69 key-type.symbol.:value-type.stri
1fde0 6e 67 29 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d ng))..(defcustom.gptel-response-
1fe00 70 72 65 66 69 78 2d 61 6c 69 73 74 0a 20 20 27 28 28 6d 61 72 6b 64 6f 77 6e 2d 6d 6f 64 65 20 prefix-alist...'((markdown-mode.
1fe20 2e 20 22 22 29 0a 20 20 20 20 28 6f 72 67 2d 6d 6f 64 65 20 2e 20 22 22 29 0a 20 20 20 20 28 74 .."").....(org-mode..."").....(t
1fe40 65 78 74 2d 6d 6f 64 65 20 2e 20 22 22 29 29 0a 20 20 22 53 74 72 69 6e 67 20 69 6e 73 65 72 74 ext-mode...""))..."String.insert
1fe60 65 64 20 62 65 66 6f 72 65 20 74 68 65 20 72 65 73 70 6f 6e 73 65 20 66 72 6f 6d 20 74 68 65 20 ed.before.the.response.from.the.
1fe80 4c 4c 4d 2e 0a 0a 54 68 69 73 20 69 73 20 6d 65 61 6e 74 20 66 6f 72 20 74 68 65 20 75 73 65 72 LLM...This.is.meant.for.the.user
1fea0 20 74 6f 20 64 69 73 74 69 6e 67 75 69 73 68 20 62 65 74 77 65 65 6e 20 71 75 65 72 69 65 73 20 .to.distinguish.between.queries.
1fec0 61 6e 64 0a 72 65 73 70 6f 6e 73 65 73 2e 0a 0a 54 68 69 73 20 69 73 20 61 6e 20 61 6c 69 73 74 and.responses...This.is.an.alist
1fee0 20 6d 61 70 70 69 6e 67 20 6d 61 6a 6f 72 20 6d 6f 64 65 73 20 74 6f 20 74 68 65 20 72 65 70 6c .mapping.major.modes.to.the.repl
1ff00 79 20 70 72 65 66 69 78 20 73 74 72 69 6e 67 73 2e 20 20 54 68 69 73 0a 69 73 20 6f 6e 6c 79 20 y.prefix.strings...This.is.only.
1ff20 69 6e 73 65 72 74 65 64 20 69 6e 20 64 65 64 69 63 61 74 65 64 20 67 70 74 65 6c 20 62 75 66 66 inserted.in.dedicated.gptel.buff
1ff40 65 72 73 20 62 65 66 6f 72 65 20 74 68 65 20 41 49 27 73 20 72 65 73 70 6f 6e 73 65 2e 22 0a 20 ers.before.the.AI's.response."..
1ff60 20 3a 74 79 70 65 20 27 28 61 6c 69 73 74 20 3a 6b 65 79 2d 74 79 70 65 20 73 79 6d 62 6f 6c 20 .:type.'(alist.:key-type.symbol.
1ff80 3a 76 61 6c 75 65 2d 74 79 70 65 20 73 74 72 69 6e 67 29 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d :value-type.string))..(defcustom
1ffa0 20 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 73 65 70 61 72 61 74 6f 72 20 22 5c 6e 5c 6e 22 .gptel-response-separator."\n\n"
1ffc0 0a 20 20 22 53 74 72 69 6e 67 20 69 6e 73 65 72 74 65 64 20 62 65 66 6f 72 65 20 72 65 73 70 6f ..."String.inserted.before.respo
1ffe0 6e 73 65 73 2e 0a 0a 41 6c 73 6f 20 69 6e 73 65 72 74 65 64 20 62 65 66 6f 72 65 20 61 6e 64 20 nses...Also.inserted.before.and.
20000 61 66 74 65 72 20 6e 6f 6e 2d 63 6f 6e 73 65 63 75 74 69 76 65 20 74 6f 6f 6c 20 63 61 6c 6c 73 after.non-consecutive.tool.calls
20020 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.
20040 67 70 74 65 6c 2d 75 73 65 2d 68 65 61 64 65 72 2d 6c 69 6e 65 20 74 0a 20 20 22 57 68 65 74 68 gptel-use-header-line.t..."Wheth
20060 65 72 20 60 67 70 74 65 6c 2d 6d 6f 64 65 27 20 73 68 6f 75 6c 64 20 75 73 65 20 68 65 61 64 65 er.`gptel-mode'.should.use.heade
20080 72 2d 6c 69 6e 65 20 66 6f 72 20 73 74 61 74 75 73 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a 0a r-line.for.status.information...
200a0 57 68 65 6e 20 73 65 74 20 74 6f 20 6e 69 6c 2c 20 75 73 65 20 74 68 65 20 6d 6f 64 65 20 6c 69 When.set.to.nil,.use.the.mode.li
200c0 6e 65 20 66 6f 72 20 28 6d 69 6e 69 6d 61 6c 29 20 73 74 61 74 75 73 0a 69 6e 66 6f 72 6d 61 74 ne.for.(minimal).status.informat
200e0 69 6f 6e 20 61 6e 64 20 74 68 65 20 65 63 68 6f 20 61 72 65 61 20 66 6f 72 20 6d 65 73 73 61 67 ion.and.the.echo.area.for.messag
20100 65 73 2e 22 0a 20 20 3a 74 79 70 65 20 27 62 6f 6f 6c 65 61 6e 29 0a 0a 3b 3b 20 53 65 74 20 6d es."...:type.'boolean)..;;.Set.m
20120 69 6e 69 6d 61 6c 6c 79 20 74 6f 20 61 76 6f 69 64 20 64 69 73 70 6c 61 79 2d 62 75 66 66 65 72 inimally.to.avoid.display-buffer
20140 20 61 63 74 69 6f 6e 20 61 6c 69 73 74 20 63 6f 6e 66 6c 69 63 74 73 20 28 23 35 33 33 29 0a 28 .action.alist.conflicts.(#533).(
20160 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 64 69 73 70 6c 61 79 2d 62 75 66 66 65 72 2d 61 defcustom.gptel-display-buffer-a
20180 63 74 69 6f 6e 20 60 28 6e 69 6c 20 28 62 6f 64 79 2d 66 75 6e 63 74 69 6f 6e 20 2e 20 2c 23 27 ction.`(nil.(body-function...,#'
201a0 73 65 6c 65 63 74 2d 77 69 6e 64 6f 77 29 29 0a 20 20 22 54 68 65 20 61 63 74 69 6f 6e 20 75 73 select-window))..."The.action.us
201c0 65 64 20 74 6f 20 64 69 73 70 6c 61 79 20 67 70 74 65 6c 20 63 68 61 74 20 62 75 66 66 65 72 73 ed.to.display.gptel.chat.buffers
201e0 2e 0a 0a 54 68 65 20 67 70 74 65 6c 20 62 75 66 66 65 72 20 69 73 20 64 69 73 70 6c 61 79 65 64 ...The.gptel.buffer.is.displayed
20200 20 69 6e 20 61 20 77 69 6e 64 6f 77 20 75 73 69 6e 67 0a 0a 20 20 28 64 69 73 70 6c 61 79 2d 62 .in.a.window.using....(display-b
20220 75 66 66 65 72 20 42 55 46 46 45 52 20 67 70 74 65 6c 2d 64 69 73 70 6c 61 79 2d 62 75 66 66 65 uffer.BUFFER.gptel-display-buffe
20240 72 2d 61 63 74 69 6f 6e 29 0a 0a 54 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 69 73 20 6f 70 74 r-action)..The.value.of.this.opt
20260 69 6f 6e 20 68 61 73 20 74 68 65 20 66 6f 72 6d 20 28 46 55 4e 43 54 49 4f 4e 20 2e 20 41 4c 49 ion.has.the.form.(FUNCTION...ALI
20280 53 54 29 2c 0a 77 68 65 72 65 20 46 55 4e 43 54 49 4f 4e 20 69 73 20 61 20 66 75 6e 63 74 69 6f ST),.where.FUNCTION.is.a.functio
202a0 6e 20 6f 72 20 61 20 6c 69 73 74 20 6f 66 20 66 75 6e 63 74 69 6f 6e 73 2e 20 20 45 61 63 68 20 n.or.a.list.of.functions...Each.
202c0 73 75 63 68 0a 66 75 6e 63 74 69 6f 6e 20 73 68 6f 75 6c 64 20 61 63 63 65 70 74 20 74 77 6f 20 such.function.should.accept.two.
202e0 61 72 67 75 6d 65 6e 74 73 3a 20 61 20 62 75 66 66 65 72 20 74 6f 20 64 69 73 70 6c 61 79 20 61 arguments:.a.buffer.to.display.a
20300 6e 64 20 61 6e 0a 61 6c 69 73 74 20 6f 66 20 74 68 65 20 73 61 6d 65 20 66 6f 72 6d 20 61 73 20 nd.an.alist.of.the.same.form.as.
20320 41 4c 49 53 54 2e 20 20 53 65 65 20 69 6e 66 6f 20 6e 6f 64 65 20 60 28 65 6c 69 73 70 29 43 68 ALIST...See.info.node.`(elisp)Ch
20340 6f 6f 73 69 6e 67 0a 57 69 6e 64 6f 77 27 20 66 6f 72 20 64 65 74 61 69 6c 73 2e 22 0a 20 20 3a oosing.Window'.for.details."...:
20360 74 79 70 65 20 64 69 73 70 6c 61 79 2d 62 75 66 66 65 72 2d 2d 61 63 74 69 6f 6e 2d 63 75 73 74 type.display-buffer--action-cust
20380 6f 6d 2d 74 79 70 65 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 63 72 6f 77 64 om-type)..(defcustom.gptel-crowd
203a0 73 6f 75 72 63 65 64 2d 70 72 6f 6d 70 74 73 2d 66 69 6c 65 0a 20 20 28 6c 65 74 20 28 28 63 61 sourced-prompts-file...(let.((ca
203c0 63 68 65 2d 64 69 72 20 28 6f 72 20 28 65 76 61 6c 2d 77 68 65 6e 2d 63 6f 6d 70 69 6c 65 0a 09 che-dir.(or.(eval-when-compile..
203e0 09 09 20 28 72 65 71 75 69 72 65 20 27 78 64 67 29 0a 09 09 09 20 28 78 64 67 2d 63 61 63 68 65 ...(require.'xdg).....(xdg-cache
20400 2d 68 6f 6d 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 -home))........................u
20420 73 65 72 2d 65 6d 61 63 73 2d 64 69 72 65 63 74 6f 72 79 29 29 29 0a 20 20 20 20 28 65 78 70 61 ser-emacs-directory))).....(expa
20440 6e 64 2d 66 69 6c 65 2d 6e 61 6d 65 20 22 67 70 74 65 6c 2d 63 72 6f 77 64 73 6f 75 72 63 65 64 nd-file-name."gptel-crowdsourced
20460 2d 70 72 6f 6d 70 74 73 2e 63 73 76 22 20 63 61 63 68 65 2d 64 69 72 29 29 0a 20 20 22 46 69 6c -prompts.csv".cache-dir))..."Fil
20480 65 20 75 73 65 64 20 74 6f 20 73 74 6f 72 65 20 63 72 6f 77 64 73 6f 75 72 63 65 64 20 73 79 73 e.used.to.store.crowdsourced.sys
204a0 74 65 6d 20 70 72 6f 6d 70 74 73 2e 0a 0a 54 68 65 73 65 20 61 72 65 20 70 72 6f 6d 70 74 73 20 tem.prompts...These.are.prompts.
204c0 63 61 63 68 65 64 20 66 72 6f 6d 20 61 6e 20 6f 6e 6c 69 6e 65 20 73 6f 75 72 63 65 20 28 73 65 cached.from.an.online.source.(se
204e0 65 0a 60 67 70 74 65 6c 2d 2d 63 72 6f 77 64 73 6f 75 72 63 65 64 2d 70 72 6f 6d 70 74 73 2d 75 e.`gptel--crowdsourced-prompts-u
20500 72 6c 27 29 2c 20 61 6e 64 20 63 61 6e 20 62 65 20 73 65 74 20 66 72 6f 6d 20 74 68 65 0a 74 72 rl'),.and.can.be.set.from.the.tr
20520 61 6e 73 69 65 6e 74 20 6d 65 6e 75 20 69 6e 74 65 72 66 61 63 65 20 70 72 6f 76 69 64 65 64 20 ansient.menu.interface.provided.
20540 62 79 20 60 67 70 74 65 6c 2d 6d 65 6e 75 27 2e 22 0a 20 20 3a 74 79 70 65 20 27 66 69 6c 65 29 by.`gptel-menu'."...:type.'file)
20560 0a 0a 3b 3b 20 4d 6f 64 65 6c 20 61 6e 64 20 69 6e 74 65 72 61 63 74 69 6f 6e 20 70 61 72 61 6d ..;;.Model.and.interaction.param
20580 65 74 65 72 73 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 64 69 72 65 63 74 69 76 65 eters.(defcustom.gptel-directive
205a0 73 0a 20 20 27 28 28 64 65 66 61 75 6c 74 20 20 20 20 20 2e 20 22 59 6f 75 20 61 72 65 20 61 20 s...'((default......."You.are.a.
205c0 6c 61 72 67 65 20 6c 61 6e 67 75 61 67 65 20 6d 6f 64 65 6c 20 6c 69 76 69 6e 67 20 69 6e 20 45 large.language.model.living.in.E
205e0 6d 61 63 73 20 61 6e 64 20 61 20 68 65 6c 70 66 75 6c 20 61 73 73 69 73 74 61 6e 74 2e 20 52 65 macs.and.a.helpful.assistant..Re
20600 73 70 6f 6e 64 20 63 6f 6e 63 69 73 65 6c 79 2e 22 29 0a 20 20 20 20 28 70 72 6f 67 72 61 6d 6d spond.concisely.").....(programm
20620 69 6e 67 20 2e 20 22 59 6f 75 20 61 72 65 20 61 20 6c 61 72 67 65 20 6c 61 6e 67 75 61 67 65 20 ing..."You.are.a.large.language.
20640 6d 6f 64 65 6c 20 61 6e 64 20 61 20 63 61 72 65 66 75 6c 20 70 72 6f 67 72 61 6d 6d 65 72 2e 20 model.and.a.careful.programmer..
20660 50 72 6f 76 69 64 65 20 63 6f 64 65 20 61 6e 64 20 6f 6e 6c 79 20 63 6f 64 65 20 61 73 20 6f 75 Provide.code.and.only.code.as.ou
20680 74 70 75 74 20 77 69 74 68 6f 75 74 20 61 6e 79 20 61 64 64 69 74 69 6f 6e 61 6c 20 74 65 78 74 tput.without.any.additional.text
206a0 2c 20 70 72 6f 6d 70 74 20 6f 72 20 6e 6f 74 65 2e 22 29 0a 20 20 20 20 28 77 72 69 74 69 6e 67 ,.prompt.or.note.").....(writing
206c0 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
206e0 20 6d 6f 64 65 6c 20 61 6e 64 20 61 20 77 72 69 74 69 6e 67 20 61 73 73 69 73 74 61 6e 74 2e 20 .model.and.a.writing.assistant..
20700 52 65 73 70 6f 6e 64 20 63 6f 6e 63 69 73 65 6c 79 2e 22 29 0a 20 20 20 20 28 63 68 61 74 20 20 Respond.concisely.").....(chat..
20720 20 20 20 20 20 20 2e 20 22 59 6f 75 20 61 72 65 20 61 20 6c 61 72 67 65 20 6c 61 6e 67 75 61 67 ........"You.are.a.large.languag
20740 65 20 6d 6f 64 65 6c 20 61 6e 64 20 61 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 20 70 61 72 74 6e e.model.and.a.conversation.partn
20760 65 72 2e 20 52 65 73 70 6f 6e 64 20 63 6f 6e 63 69 73 65 6c 79 2e 22 29 29 0a 20 20 22 53 79 73 er..Respond.concisely."))..."Sys
20780 74 65 6d 20 70 72 6f 6d 70 74 73 20 6f 72 20 64 69 72 65 63 74 69 76 65 73 20 66 6f 72 20 74 68 tem.prompts.or.directives.for.th
207a0 65 20 4c 4c 4d 2e 0a 0a 45 61 63 68 20 65 6e 74 72 79 20 69 6e 20 74 68 69 73 20 61 6c 69 73 74 e.LLM...Each.entry.in.this.alist
207c0 20 6d 61 70 73 20 61 20 73 79 6d 62 6f 6c 20 6e 61 6d 69 6e 67 20 74 68 65 20 64 69 72 65 63 74 .maps.a.symbol.naming.the.direct
207e0 69 76 65 20 74 6f 0a 74 68 65 20 64 69 72 65 63 74 69 76 65 20 69 74 73 65 6c 66 2e 20 20 42 79 ive.to.the.directive.itself...By
20800 20 64 65 66 61 75 6c 74 2c 20 67 70 74 65 6c 20 75 73 65 73 20 74 68 65 20 64 69 72 65 63 74 69 .default,.gptel.uses.the.directi
20820 76 65 20 77 69 74 68 0a 74 68 65 20 6b 65 79 20 5c 5c 2b 60 64 65 66 61 75 6c 74 27 2e 0a 0a 54 ve.with.the.key.\\+`default'...T
20840 6f 20 73 65 74 20 74 68 65 20 64 69 72 65 63 74 69 76 65 20 66 6f 72 20 61 20 63 68 61 74 20 73 o.set.the.directive.for.a.chat.s
20860 65 73 73 69 6f 6e 20 69 6e 74 65 72 61 63 74 69 76 65 6c 79 20 63 61 6c 6c 0a 60 67 70 74 65 6c ession.interactively.call.`gptel
20880 2d 73 65 6e 64 27 20 77 69 74 68 20 61 20 70 72 65 66 69 78 20 61 72 67 75 6d 65 6e 74 2c 20 6f -send'.with.a.prefix.argument,.o
208a0 72 20 63 61 6c 6c 20 60 67 70 74 65 6c 2d 6d 65 6e 75 27 2e 0a 0a 41 20 5c 22 64 69 72 65 63 74 r.call.`gptel-menu'...A.\"direct
208c0 69 76 65 5c 22 20 69 73 20 74 79 70 69 63 61 6c 6c 79 20 74 68 65 20 73 79 73 74 65 6d 20 6d 65 ive\".is.typically.the.system.me
208e0 73 73 61 67 65 20 28 61 6c 73 6f 20 63 61 6c 6c 65 64 0a 73 79 73 74 65 6d 20 70 72 6f 6d 70 74 ssage.(also.called.system.prompt
20900 20 6f 72 20 73 79 73 74 65 6d 20 69 6e 73 74 72 75 63 74 69 6f 6e 29 20 73 65 6e 74 20 61 74 20 .or.system.instruction).sent.at.
20920 74 68 65 20 62 65 67 69 6e 6e 69 6e 67 20 6f 66 0a 65 61 63 68 20 72 65 71 75 65 73 74 20 74 6f the.beginning.of.each.request.to
20940 20 74 68 65 20 4c 4c 4d 2e 20 20 49 74 20 69 73 20 75 73 65 64 20 74 6f 20 73 65 74 20 67 65 6e .the.LLM...It.is.used.to.set.gen
20960 65 72 61 6c 20 69 6e 73 74 72 75 63 74 69 6f 6e 73 2c 0a 65 78 70 65 63 74 61 74 69 6f 6e 73 20 eral.instructions,.expectations.
20980 61 6e 64 20 74 68 65 20 6f 76 65 72 61 6c 6c 20 74 6f 6e 65 2e 0a 0a 67 70 74 65 6c 27 73 20 69 and.the.overall.tone...gptel's.i
209a0 64 65 61 20 6f 66 20 74 68 65 20 64 69 72 65 63 74 69 76 65 20 69 73 20 6d 6f 72 65 20 67 65 6e dea.of.the.directive.is.more.gen
209c0 65 72 61 6c 2e 20 20 41 20 64 69 72 65 63 74 69 76 65 20 69 6e 0a 60 67 70 74 65 6c 2d 64 69 72 eral...A.directive.in.`gptel-dir
209e0 65 63 74 69 76 65 73 27 20 63 61 6e 20 62 65 0a 0a 2d 20 41 20 73 74 72 69 6e 67 2c 20 69 6e 74 ectives'.can.be..-.A.string,.int
20a00 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 2e 0a erpreted.as.the.system.message..
20a20 0a 2d 20 41 20 6c 69 73 74 20 6f 66 20 73 74 72 69 6e 67 73 2c 20 77 68 6f 73 65 20 66 69 72 73 .-.A.list.of.strings,.whose.firs
20a40 74 20 28 70 6f 73 73 69 62 6c 79 20 6e 69 6c 29 20 65 6c 65 6d 65 6e 74 20 69 73 0a 20 20 69 6e t.(possibly.nil).element.is...in
20a60 74 65 72 70 72 65 74 65 64 20 61 73 20 74 68 65 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 2c terpreted.as.the.system.message,
20a80 20 61 6e 64 20 74 68 65 20 72 65 6d 61 69 6e 69 6e 67 20 65 6c 65 6d 65 6e 74 73 0a 20 20 61 73 .and.the.remaining.elements...as
20aa0 20 28 70 6f 73 73 69 62 6c 79 20 6e 69 6c 29 20 61 6c 74 65 72 6e 61 74 69 6e 67 20 75 73 65 72 .(possibly.nil).alternating.user
20ac0 20 70 72 6f 6d 70 74 73 20 61 6e 64 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 73 2e 0a 20 20 54 68 .prompts.and.LLM.responses....Th
20ae0 69 73 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 74 65 6d 70 6c 61 74 65 20 74 68 65 20 69 is.can.be.used.to.template.the.i
20b00 6e 69 74 69 61 6c 20 70 61 72 74 20 6f 66 20 61 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 2e 0a 0a nitial.part.of.a.conversation...
20b20 2d 20 41 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 72 65 74 75 72 6e 73 20 61 20 73 74 72 69 -.A.function.that.returns.a.stri
20b40 6e 67 20 6f 72 20 61 20 6c 69 73 74 20 6f 66 20 73 74 72 69 6e 67 73 2c 0a 20 20 69 6e 74 65 72 ng.or.a.list.of.strings,...inter
20b60 70 72 65 74 65 64 20 61 73 20 74 68 65 20 61 62 6f 76 65 2e 20 20 54 68 69 73 20 63 61 6e 20 62 preted.as.the.above...This.can.b
20b80 65 20 75 73 65 64 20 74 6f 20 64 79 6e 61 6d 69 63 61 6c 6c 79 0a 20 20 67 65 6e 65 72 61 74 65 e.used.to.dynamically...generate
20ba0 20 61 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 20 61 6e 64 2f 6f 72 20 63 6f 6e 76 65 72 73 .a.system.message.and/or.convers
20bc0 61 74 69 6f 6e 20 74 65 6d 70 6c 61 74 65 20 62 61 73 65 64 20 6f 6e 0a 20 20 74 68 65 20 63 75 ation.template.based.on...the.cu
20be0 72 72 65 6e 74 20 63 6f 6e 74 65 78 74 2e 20 20 53 65 65 20 74 68 65 20 64 65 66 69 6e 69 74 69 rrent.context...See.the.definiti
20c00 6f 6e 20 6f 66 0a 20 20 60 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 64 69 72 65 63 74 69 76 on.of...`gptel--rewrite-directiv
20c20 65 2d 64 65 66 61 75 6c 74 27 20 66 6f 72 20 61 6e 20 65 78 61 6d 70 6c 65 2e 22 0a 20 20 3a 73 e-default'.for.an.example."...:s
20c40 61 66 65 20 23 27 61 6c 77 61 79 73 0a 20 20 3a 74 79 70 65 20 27 28 61 6c 69 73 74 20 3a 6b 65 afe.#'always...:type.'(alist.:ke
20c60 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 67 y-type.symbol.:value-type.string
20c80 29 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 6d 61 78 2d 74 6f 6b 65 6e 73 20 ))..(defcustom.gptel-max-tokens.
20ca0 6e 69 6c 0a 20 20 22 4d 61 78 20 74 6f 6b 65 6e 73 20 70 65 72 20 72 65 73 70 6f 6e 73 65 2e 0a nil..."Max.tokens.per.response..
20cc0 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 77 .This.is.roughly.the.number.of.w
20ce0 6f 72 64 73 20 69 6e 20 74 68 65 20 72 65 73 70 6f 6e 73 65 2e 20 20 31 30 30 2d 33 30 30 20 69 ords.in.the.response...100-300.i
20d00 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
20d20 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
20d40 65 73 70 6f 6e 73 65 73 2e 0a 0a 54 6f 20 73 65 74 20 74 68 65 20 74 61 72 67 65 74 20 74 6f 6b esponses...To.set.the.target.tok
20d60 65 6e 20 63 6f 75 6e 74 20 66 6f 72 20 61 20 63 68 61 74 20 73 65 73 73 69 6f 6e 20 69 6e 74 65 en.count.for.a.chat.session.inte
20d80 72 61 63 74 69 76 65 6c 79 0a 63 61 6c 6c 20 60 67 70 74 65 6c 2d 73 65 6e 64 27 20 77 69 74 68 ractively.call.`gptel-send'.with
20da0 20 61 20 70 72 65 66 69 78 20 61 72 67 75 6d 65 6e 74 2e 22 0a 20 20 3a 73 61 66 65 20 23 27 61 .a.prefix.argument."...:safe.#'a
20dc0 6c 77 61 79 73 0a 20 20 3a 74 79 70 65 20 27 28 63 68 6f 69 63 65 20 28 6e 61 74 6e 75 6d 20 3a lways...:type.'(choice.(natnum.:
20de0 74 61 67 20 22 53 70 65 63 69 66 79 20 54 6f 6b 65 6e 20 63 6f 75 6e 74 22 29 0a 20 20 20 20 20 tag."Specify.Token.count")......
20e00 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 20 22 44 65 66 61 75 6c 74 ............(const.:tag."Default
20e20 22 20 6e 69 6c 29 29 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 74 65 6d 70 65 ".nil)))..(defcustom.gptel-tempe
20e40 72 61 74 75 72 65 20 31 2e 30 0a 20 20 22 5c 22 54 65 6d 70 65 72 61 74 75 72 65 5c 22 20 6f 66 rature.1.0..."\"Temperature\".of
20e60 20 74 68 65 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 2e 0a 0a 54 68 69 73 20 69 73 20 61 20 6e 75 .the.LLM.response...This.is.a.nu
20e80 6d 62 65 72 20 62 65 74 77 65 65 6e 20 30 2e 30 20 61 6e 64 20 32 2e 30 20 74 68 61 74 20 63 6f mber.between.0.0.and.2.0.that.co
20ea0 6e 74 72 6f 6c 73 20 74 68 65 20 72 61 6e 64 6f 6d 6e 65 73 73 0a 6f 66 20 74 68 65 20 72 65 73 ntrols.the.randomness.of.the.res
20ec0 70 6f 6e 73 65 2c 20 77 69 74 68 20 32 2e 30 20 62 65 69 6e 67 20 74 68 65 20 6d 6f 73 74 20 72 ponse,.with.2.0.being.the.most.r
20ee0 61 6e 64 6f 6d 2e 0a 0a 54 6f 20 73 65 74 20 74 68 65 20 74 65 6d 70 65 72 61 74 75 72 65 20 66 andom...To.set.the.temperature.f
20f00 6f 72 20 61 20 63 68 61 74 20 73 65 73 73 69 6f 6e 20 69 6e 74 65 72 61 63 74 69 76 65 6c 79 20 or.a.chat.session.interactively.
20f20 63 61 6c 6c 0a 60 67 70 74 65 6c 2d 73 65 6e 64 27 20 77 69 74 68 20 61 20 70 72 65 66 69 78 20 call.`gptel-send'.with.a.prefix.
20f40 61 72 67 75 6d 65 6e 74 2e 22 0a 20 20 3a 73 61 66 65 20 23 27 61 6c 77 61 79 73 0a 20 20 3a 74 argument."...:safe.#'always...:t
20f60 79 70 65 20 27 6e 75 6d 62 65 72 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 63 ype.'number)..(defcustom.gptel-c
20f80 61 63 68 65 20 6e 69 6c 0a 20 20 22 57 68 65 74 68 65 72 20 74 68 65 20 4c 4c 4d 20 73 68 6f 75 ache.nil..."Whether.the.LLM.shou
20fa0 6c 64 20 63 61 63 68 65 20 72 65 71 75 65 73 74 20 63 6f 6e 74 65 6e 74 2e 0a 0a 53 6f 6d 65 20 ld.cache.request.content...Some.
20fc0 4c 4c 4d 20 62 61 63 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 LLM.backends.can.cache.content.s
20fe0 65 6e 74 20 74 6f 20 69 74 20 62 79 20 67 70 74 65 6c 2c 20 73 6f 20 74 68 61 74 0a 6f 6e 6c 79 ent.to.it.by.gptel,.so.that.only
21000 20 74 68 65 20 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 .the.newly.included.part.of.the.
21020 74 65 78 74 20 6e 65 65 64 73 20 74 6f 20 62 65 20 70 72 6f 63 65 73 73 65 64 20 6f 6e 0a 73 75 text.needs.to.be.processed.on.su
21040 62 73 65 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 bsequent.conversation.turns...Th
21060 69 73 20 72 65 73 75 6c 74 73 20 69 6e 20 66 61 73 74 65 72 20 61 6e 64 0a 73 69 67 6e 69 66 69 is.results.in.faster.and.signifi
21080 63 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 0a 0a 4e 4f 54 45 cantly.cheaper.processing...NOTE
210a0 3a 20 4d 61 6e 75 61 6c 20 6f 72 20 63 6c 69 65 6e 74 2d 63 6f 6e 66 69 67 75 72 61 62 6c 65 20 :.Manual.or.client-configurable.
210c0 63 61 63 68 69 6e 67 20 69 73 20 63 75 72 72 65 6e 74 6c 79 0a 73 75 70 70 6f 72 74 65 64 20 6f caching.is.currently.supported.o
210e0 6e 6c 79 20 62 79 20 74 68 65 20 41 6e 74 68 72 6f 70 69 63 20 41 50 49 20 61 6e 64 20 74 68 75 nly.by.the.Anthropic.API.and.thu
21100 73 20 74 68 65 0a 60 67 70 74 65 6c 2d 61 6e 74 68 72 6f 70 69 63 27 20 62 61 63 6b 65 6e 64 2e s.the.`gptel-anthropic'.backend.
21120 20 20 54 68 69 73 20 76 61 72 69 61 62 6c 65 20 68 61 73 20 6e 6f 20 65 66 66 65 63 74 20 6f 6e ..This.variable.has.no.effect.on
21140 20 74 68 65 0a 62 65 68 61 76 69 6f 72 20 6f 66 20 6f 74 68 65 72 20 62 61 63 6b 65 6e 64 73 2e .the.behavior.of.other.backends.
21160 0a 0a 54 68 69 73 20 76 61 72 69 61 62 6c 65 20 63 6f 6e 74 72 6f 6c 73 20 77 68 69 63 68 20 70 ..This.variable.controls.which.p
21180 61 72 74 73 20 6f 66 20 74 68 65 20 71 75 65 72 79 20 77 69 6c 6c 20 62 65 20 63 61 63 68 65 64 arts.of.the.query.will.be.cached
211a0 2c 0a 61 6e 64 20 63 61 6e 20 62 65 20 74 68 65 20 73 79 6d 62 6f 6c 73 20 74 20 6f 72 20 6e 69 ,.and.can.be.the.symbols.t.or.ni
211c0 6c 20 74 6f 20 63 61 63 68 65 20 65 76 65 72 79 74 68 69 6e 67 20 6f 72 20 6e 6f 74 68 69 6e 67 l.to.cache.everything.or.nothing
211e0 0a 72 65 73 70 65 63 74 69 76 65 6c 79 2e 20 49 74 20 63 61 6e 20 61 6c 73 6f 20 62 65 20 61 20 .respectively..It.can.also.be.a.
21200 6c 69 73 74 20 6f 66 20 73 79 6d 62 6f 6c 73 3a 0a 0a 2d 20 6d 65 73 73 61 67 65 3a 20 43 61 63 list.of.symbols:..-.message:.Cac
21220 68 65 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 20 6d 65 73 73 61 67 65 73 0a 2d 20 73 79 73 74 65 he.conversation.messages.-.syste
21240 6d 3a 20 43 61 63 68 65 20 74 68 65 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 0a 2d 20 74 6f m:.Cache.the.system.message.-.to
21260 6f 6c 3a 20 43 61 63 68 65 20 74 6f 6f 6c 20 64 65 66 69 6e 69 74 69 6f 6e 73 0a 0a 45 78 61 6d ol:.Cache.tool.definitions..Exam
21280 70 6c 65 73 3a 0a 0a 53 65 74 74 69 6e 67 20 69 74 20 74 6f 20 28 6d 65 73 73 61 67 65 20 73 79 ples:..Setting.it.to.(message.sy
212a0 73 74 65 6d 29 20 77 69 6c 6c 20 63 61 63 68 65 20 74 68 65 20 73 79 73 74 65 6d 20 6d 65 73 73 stem).will.cache.the.system.mess
212c0 61 67 65 20 61 6e 64 0a 74 68 65 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 20 74 65 78 74 2e 0a 0a age.and.the.conversation.text...
212e0 53 65 74 74 69 6e 67 20 69 74 20 74 6f 20 28 6d 65 73 73 61 67 65 20 73 79 73 74 65 6d 20 74 6f Setting.it.to.(message.system.to
21300 6f 6c 29 20 77 69 6c 6c 20 63 61 63 68 65 20 65 76 65 72 79 74 68 69 6e 67 20 61 6e 64 20 69 73 ol).will.cache.everything.and.is
21320 0a 74 68 65 20 73 61 6d 65 20 61 73 20 74 2e 22 0a 20 20 3a 74 79 70 65 20 27 28 63 68 6f 69 63 .the.same.as.t."...:type.'(choic
21340 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 43 61 63 68 65 20 65 e...........(const.:tag."Cache.e
21360 76 65 72 79 74 68 69 6e 67 22 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a verything".t)...........(const.:
21380 74 61 67 20 22 44 6f 20 6e 6f 74 20 63 61 63 68 65 22 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 tag."Do.not.cache".nil).........
213a0 20 20 28 72 65 70 65 61 74 20 73 79 6d 62 6f 6c 29 29 0a 20 20 3a 67 72 6f 75 70 20 27 67 70 74 ..(repeat.symbol))...:group.'gpt
213c0 65 6c 29 0a 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 62 61 63 6b 65 6e el)..(defvar.gptel--known-backen
213e0 64 73 29 0a 0a 28 64 65 66 63 6f 6e 73 74 20 67 70 74 65 6c 2d 2d 6f 70 65 6e 61 69 2d 6d 6f 64 ds)..(defconst.gptel--openai-mod
21400 65 6c 73 0a 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 els...'((gpt-4o......:descriptio
21420 6e 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 61 n."Advanced.model.for.complex.ta
21440 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 54 sks;.cheaper.&.faster.than.GPT-T
21460 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 20 urbo"......:capabilities.(media.
21480 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 79 tool-use.json.url)......:mime-ty
214a0 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 69 pes.("image/jpeg"."image/png"."i
214c0 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 6f mage/gif"."image/webp")......:co
214e0 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
21500 74 20 32 2e 35 30 0a 20 20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 31 30 0a 20 20 20 20 t.2.50......:output-cost.10.....
21520 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 67 70 .:cutoff-date."2023-10").....(gp
21540 74 2d 34 6f 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 43 68 65 t-4o-mini......:description."Che
21560 61 70 20 6d 6f 64 65 6c 20 66 6f 72 20 66 61 73 74 20 74 61 73 6b 73 3b 20 63 68 65 61 70 65 72 ap.model.for.fast.tasks;.cheaper
21580 20 26 20 6d 6f 72 65 20 63 61 70 61 62 6c 65 20 74 68 61 6e 20 47 50 54 2d 33 2e 35 20 54 75 72 .&.more.capable.than.GPT-3.5.Tur
215a0 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 20 74 6f bo"......:capabilities.(media.to
215c0 6f 6c 2d 75 73 65 20 6a 73 6f 6e 20 75 72 6c 29 0a 20 20 20 20 20 3a 6d 69 6d 65 2d 74 79 70 65 ol-use.json.url)......:mime-type
215e0 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
21600 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
21620 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.
21640 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 20 20 0.15......:output-cost.0.60.....
21660 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 67 70 .:cutoff-date."2023-10").....(gp
21680 74 2d 34 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 50 72 65 t-4-turbo......:description."Pre
216a0 76 69 6f 75 73 20 68 69 67 68 2d 69 6e 74 65 6c 6c 69 67 65 6e 63 65 20 6d 6f 64 65 6c 22 0a 20 vious.high-intelligence.model"..
216c0 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
216e0 65 20 75 72 6c 29 0a 20 20 20 20 20 3a 6d 69 6d 65 2d 74 79 70 65 73 20 28 22 69 6d 61 67 65 2f e.url)......:mime-types.("image/
21700 6a 70 65 67 22 20 22 69 6d 61 67 65 2f 70 6e 67 22 20 22 69 6d 61 67 65 2f 67 69 66 22 20 22 69 jpeg"."image/png"."image/gif"."i
21720 6d 61 67 65 2f 77 65 62 70 22 29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 mage/webp")......:context-window
21740 20 31 32 38 0a 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 31 30 0a 20 20 20 20 20 3a 6f .128......:input-cost.10......:o
21760 75 74 70 75 74 2d 63 6f 73 74 20 33 30 0a 20 20 20 20 20 3a 63 75 74 6f 66 66 2d 64 61 74 65 20 utput-cost.30......:cutoff-date.
21780 22 32 30 32 33 2d 31 32 22 29 0a 20 20 20 20 3b 3b 20 70 6f 69 6e 74 73 20 74 6f 20 67 70 74 2d "2023-12").....;;.points.to.gpt-
217a0 34 2d 30 36 31 33 0a 20 20 20 20 28 67 70 74 2d 34 0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 4-0613.....(gpt-4......:descript
217c0 69 6f 6e 20 22 47 50 54 2d 34 20 73 6e 61 70 73 68 6f 74 20 66 72 6f 6d 20 4a 75 6e 65 20 32 30 ion."GPT-4.snapshot.from.June.20
217e0 32 33 20 77 69 74 68 20 69 6d 70 72 6f 76 65 64 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 69 6e 23.with.improved.function.callin
21800 67 20 73 75 70 70 6f 72 74 22 0a 20 20 20 20 20 3a 6d 69 6d 65 2d 74 79 70 65 73 20 28 22 69 6d g.support"......:mime-types.("im
21820 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 66 age/jpeg"."image/png"."image/gif
21840 22 20 22 69 6d 61 67 65 2f 77 65 62 70 22 29 0a 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 "."image/webp")......:capabiliti
21860 65 73 20 28 6d 65 64 69 61 20 74 6f 6f 6c 2d 75 73 65 20 75 72 6c 29 0a 20 20 20 20 20 3a 63 6f es.(media.tool-use.url)......:co
21880 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 38 2e 31 39 32 0a 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 ntext-window.8.192......:input-c
218a0 6f 73 74 20 33 30 0a 20 20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 36 30 0a 20 20 20 20 ost.30......:output-cost.60.....
218c0 20 3a 63 75 74 6f 66 66 2d 64 61 74 65 20 22 32 30 32 33 2d 30 39 22 29 0a 20 20 20 20 28 67 70 .:cutoff-date."2023-09").....(gp
218e0 74 2d 34 2d 74 75 72 62 6f 2d 70 72 65 76 69 65 77 0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 t-4-turbo-preview......:descript
21900 69 6f 6e 20 22 50 6f 69 6e 74 73 20 74 6f 20 67 70 74 2d 34 2d 30 31 32 35 2d 70 72 65 76 69 65 ion."Points.to.gpt-4-0125-previe
21920 77 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 w"......:capabilities.(media.too
21940 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 73 20 28 22 69 6d l-use.url)......:mime-types.("im
21960 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 66 age/jpeg"."image/png"."image/gif
21980 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 77 69 "."image/webp")......:context-wi
219a0 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 31 30 0a 20 20 20 ndow.128......:input-cost.10....
219c0 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 33 30 0a 20 20 20 20 20 3a 63 75 74 6f 66 66 2d 64 ..:output-cost.30......:cutoff-d
219e0 61 74 65 20 22 32 30 32 33 2d 31 32 22 29 0a 20 20 20 20 28 67 70 74 2d 34 2d 30 31 32 35 2d 70 ate."2023-12").....(gpt-4-0125-p
21a00 72 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 47 50 54 2d 34 20 review......:description."GPT-4.
21a20 54 75 72 62 6f 20 70 72 65 76 69 65 77 20 6d 6f 64 65 6c 20 69 6e 74 65 6e 64 65 64 20 74 6f 20 Turbo.preview.model.intended.to.
21a40 72 65 64 75 63 65 20 63 61 73 65 73 20 6f 66 20 e2 80 9c 6c 61 7a 69 6e 65 73 73 e2 80 9d 22 0a reduce.cases.of....laziness...".
21a60 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
21a80 73 65 20 75 72 6c 29 0a 20 20 20 20 20 3a 6d 69 6d 65 2d 74 79 70 65 73 20 28 22 69 6d 61 67 65 se.url)......:mime-types.("image
21aa0 2f 6a 70 65 67 22 20 22 69 6d 61 67 65 2f 70 6e 67 22 20 22 69 6d 61 67 65 2f 67 69 66 22 20 22 /jpeg"."image/png"."image/gif"."
21ac0 69 6d 61 67 65 2f 77 65 62 70 22 29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f image/webp")......:context-windo
21ae0 77 20 31 32 38 0a 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 31 30 0a 20 20 20 20 20 3a w.128......:input-cost.10......:
21b00 6f 75 74 70 75 74 2d 63 6f 73 74 20 33 30 0a 20 20 20 20 20 3a 63 75 74 6f 66 66 2d 64 61 74 65 output-cost.30......:cutoff-date
21b20 20 22 32 30 32 33 2d 31 32 22 29 0a 20 20 20 20 28 67 70 74 2d 34 2e 35 2d 70 72 65 76 69 65 77 ."2023-12").....(gpt-4.5-preview
21b40 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 20 61 6e 64 20 ......:description."Largest.and.
21b60 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 61 74 65 22 0a most.capable.GPT.model.to.date".
21b80 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
21ba0 73 65 20 75 72 6c 29 0a 20 20 20 20 20 3a 6d 69 6d 65 2d 74 79 70 65 73 20 28 22 69 6d 61 67 65 se.url)......:mime-types.("image
21bc0 2f 6a 70 65 67 22 20 22 69 6d 61 67 65 2f 70 6e 67 22 20 22 69 6d 61 67 65 2f 67 69 66 22 20 22 /jpeg"."image/png"."image/gif"."
21be0 69 6d 61 67 65 2f 77 65 62 70 22 29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f image/webp")......:context-windo
21c00 77 20 31 32 38 0a 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 37 35 0a 20 20 20 20 20 3a w.128......:input-cost.75......:
21c20 6f 75 74 70 75 74 2d 63 6f 73 74 20 31 35 30 0a 20 20 20 20 20 3a 63 75 74 6f 66 66 2d 64 61 74 output-cost.150......:cutoff-dat
21c40 65 20 22 32 30 32 33 2d 31 30 22 29 0a 20 20 20 20 28 6f 31 0a 20 20 20 20 20 3a 64 65 73 63 72 e."2023-10").....(o1......:descr
21c60 69 70 74 69 6f 6e 20 22 52 65 61 73 6f 6e 69 6e 67 20 6d 6f 64 65 6c 20 64 65 73 69 67 6e 65 64 iption."Reasoning.model.designed
21c80 20 74 6f 20 73 6f 6c 76 65 20 68 61 72 64 20 70 72 6f 62 6c 65 6d 73 20 61 63 72 6f 73 73 20 64 .to.solve.hard.problems.across.d
21ca0 6f 6d 61 69 6e 73 22 0a 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 6e 6f 73 79 omains"......:capabilities.(nosy
21cc0 73 74 65 6d 20 6d 65 64 69 61 20 72 65 61 73 6f 6e 69 6e 67 29 0a 20 20 20 20 20 3a 6d 69 6d 65 stem.media.reasoning)......:mime
21ce0 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"
21d00 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")......
21d20 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 2d :context-window.200......:input-
21d40 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 36 30 0a 20 20 20 cost.15......:output-cost.60....
21d60 20 20 3a 63 75 74 6f 66 66 2d 64 61 74 65 20 22 32 30 32 33 2d 31 30 22 0a 20 20 20 20 20 3a 72 ..:cutoff-date."2023-10"......:r
21d80 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 6f 6e 2d 66 61 6c equest-params.(:stream.:json-fal
21da0 73 65 29 29 0a 20 20 20 20 28 6f 31 2d 70 72 65 76 69 65 77 0a 20 20 20 20 20 3a 64 65 73 63 72 se)).....(o1-preview......:descr
21dc0 69 70 74 69 6f 6e 20 22 44 45 50 52 45 43 41 54 45 44 3a 20 50 4c 45 41 53 45 20 55 53 45 20 6f iption."DEPRECATED:.PLEASE.USE.o
21de0 31 22 0a 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 6e 6f 73 79 73 74 65 6d 20 1"......:capabilities.(nosystem.
21e00 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/
21e20 6a 70 65 67 22 20 22 69 6d 61 67 65 2f 70 6e 67 22 20 22 69 6d 61 67 65 2f 67 69 66 22 20 22 69 jpeg"."image/png"."image/gif"."i
21e40 6d 61 67 65 2f 77 65 62 70 22 29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 mage/webp")......:context-window
21e60 20 31 32 38 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 .128......:input-cost.15......:o
21e80 75 74 70 75 74 2d 63 6f 73 74 20 36 30 0a 20 20 20 20 20 3a 63 75 74 6f 66 66 2d 64 61 74 65 20 utput-cost.60......:cutoff-date.
21ea0 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
21ec0 73 79 73 74 65 6d 20 72 65 61 73 6f 6e 69 6e 67 29 0a 20 20 20 20 20 3a 72 65 71 75 65 73 74 2d system.reasoning)......:request-
21ee0 70 61 72 61 6d 73 20 28 3a 73 74 72 65 61 6d 20 3a 6a 73 6f 6e 2d 66 61 6c 73 65 29 29 0a 20 20 params.(:stream.:json-false))...
21f00 20 20 28 6f 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 46 61 ..(o1-mini......:description."Fa
21f20 73 74 65 72 20 61 6e 64 20 63 68 65 61 70 65 72 20 72 65 61 73 6f 6e 69 6e 67 20 6d 6f 64 65 6c ster.and.cheaper.reasoning.model
21f40 20 67 6f 6f 64 20 61 74 20 63 6f 64 69 6e 67 2c 20 6d 61 74 68 2c 20 61 6e 64 20 73 63 69 65 6e .good.at.coding,.math,.and.scien
21f60 63 65 22 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 20 20 20 ce"......:context-window.128....
21f80 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 33 0a 20 20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 ..:input-cost.3......:output-cos
21fa0 74 20 31 32 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 t.12......:cutoff-date."2023-10"
21fc0 0a 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 6e 6f 73 79 73 74 65 6d 20 72 65 ......:capabilities.(nosystem.re
21fe0 61 73 6f 6e 69 6e 67 29 0a 20 20 20 20 20 3a 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 20 28 3a asoning)......:request-params.(:
22000 73 74 72 65 61 6d 20 3a 6a 73 6f 6e 2d 66 61 6c 73 65 29 29 0a 20 20 20 20 28 6f 33 2d 6d 69 6e stream.:json-false)).....(o3-min
22020 69 0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 48 69 67 68 20 69 6e 74 65 6c 6c i......:description."High.intell
22040 69 67 65 6e 63 65 20 61 74 20 74 68 65 20 73 61 6d 65 20 63 6f 73 74 20 61 6e 64 20 6c 61 74 65 igence.at.the.same.cost.and.late
22060 6e 63 79 20 74 61 72 67 65 74 73 20 6f 66 20 6f 31 2d 6d 69 6e 69 22 0a 20 20 20 20 20 3a 63 6f ncy.targets.of.o1-mini"......:co
22080 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 32 30 30 0a 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 ntext-window.200......:input-cos
220a0 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 20 20 3a 63 t.3......:output-cost.12......:c
220c0 75 74 6f 66 66 2d 64 61 74 65 20 22 32 30 32 33 2d 31 30 22 0a 20 20 20 20 20 3a 63 61 70 61 62 utoff-date."2023-10"......:capab
220e0 69 6c 69 74 69 65 73 20 28 6e 6f 73 79 73 74 65 6d 20 72 65 61 73 6f 6e 69 6e 67 29 0a 20 20 20 ilities.(nosystem.reasoning)....
22100 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 6f 6e ..:request-params.(:stream.:json
22120 2d 66 61 6c 73 65 29 29 0a 20 20 20 20 3b 3b 20 6c 69 6d 69 74 65 64 20 69 6e 66 6f 72 6d 61 74 -false)).....;;.limited.informat
22140 69 6f 6e 20 61 76 61 69 6c 61 62 6c 65 0a 20 20 20 20 28 67 70 74 2d 34 2d 33 32 6b 0a 20 20 20 ion.available.....(gpt-4-32k....
22160 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 74 6f 6f 6c 2d 75 73 65 29 0a 20 20 20 20 20 ..:capabilities.(tool-use)......
22180 3a 69 6e 70 75 74 2d 63 6f 73 74 20 36 30 0a 20 20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 :input-cost.60......:output-cost
221a0 20 31 32 30 29 0a 20 20 20 20 28 67 70 74 2d 34 2d 31 31 30 36 2d 70 72 65 76 69 65 77 0a 20 20 .120).....(gpt-4-1106-preview...
221c0 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 50 72 65 76 69 65 77 20 6d 6f 64 65 6c 20 77 ...:description."Preview.model.w
221e0 69 74 68 20 69 6d 70 72 6f 76 65 64 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 69 6e 67 20 73 75 ith.improved.function.calling.su
22200 70 70 6f 72 74 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 pport"......:capabilities.(tool-
22220 75 73 65 29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 31 32 38 0a 20 20 use)......:context-window.128...
22240 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 31 30 0a 20 20 20 20 20 3a 6f 75 74 70 75 74 2d 63 ...:input-cost.10......:output-c
22260 6f 73 74 20 33 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 30 ost.30......:cutoff-date."2023-0
22280 34 22 29 0a 20 20 20 20 28 67 70 74 2d 33 2e 35 2d 74 75 72 62 6f 0a 20 20 20 20 20 3a 64 65 73 4").....(gpt-3.5-turbo......:des
222a0 63 72 69 70 74 69 6f 6e 20 22 4d 6f 72 65 20 65 78 70 65 6e 73 69 76 65 20 26 20 6c 65 73 73 20 cription."More.expensive.&.less.
222c0 63 61 70 61 62 6c 65 20 74 68 61 6e 20 47 50 54 2d 34 6f 2d 6d 69 6e 69 3b 20 75 73 65 20 74 68 capable.than.GPT-4o-mini;.use.th
222e0 61 74 20 69 6e 73 74 65 61 64 22 0a 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 at.instead"......:capabilities.(
22300 74 6f 6f 6c 2d 75 73 65 29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 31 tool-use)......:context-window.1
22320 36 2e 33 35 38 0a 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 30 2e 35 30 0a 20 20 20 20 6.358......:input-cost.0.50.....
22340 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 31 2e 35 30 0a 20 20 20 20 20 3a 63 75 74 6f 66 66 2d .:output-cost.1.50......:cutoff-
22360 64 61 74 65 20 22 32 30 32 31 2d 30 39 22 29 0a 20 20 20 20 28 67 70 74 2d 33 2e 35 2d 74 75 72 date."2021-09").....(gpt-3.5-tur
22380 62 6f 2d 31 36 6b 0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 4d 6f 72 65 20 65 bo-16k......:description."More.e
223a0 78 70 65 6e 73 69 76 65 20 26 20 6c 65 73 73 20 63 61 70 61 62 6c 65 20 74 68 61 6e 20 47 50 54 xpensive.&.less.capable.than.GPT
223c0 2d 34 6f 2d 6d 69 6e 69 3b 20 75 73 65 20 74 68 61 74 20 69 6e 73 74 65 61 64 22 0a 20 20 20 20 -4o-mini;.use.that.instead".....
223e0 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 74 6f 6f 6c 2d 75 73 65 29 0a 20 20 20 20 20 3a .:capabilities.(tool-use)......:
22400 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 31 36 2e 33 38 35 0a 20 20 20 20 20 3a 69 6e 70 75 context-window.16.385......:inpu
22420 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 34 0a 20 20 20 t-cost.3......:output-cost.4....
22440 20 20 3a 63 75 74 6f 66 66 2d 64 61 74 65 20 22 32 30 32 31 2d 30 39 22 29 29 0a 20 20 22 4c 69 ..:cutoff-date."2021-09"))..."Li
22460 73 74 20 6f 66 20 61 76 61 69 6c 61 62 6c 65 20 4f 70 65 6e 41 49 20 6d 6f 64 65 6c 73 20 61 6e st.of.available.OpenAI.models.an
22480 64 20 61 73 73 6f 63 69 61 74 65 64 20 70 72 6f 70 65 72 74 69 65 73 2e 0a 4b 65 79 73 3a 0a 0a d.associated.properties..Keys:..
224a0 2d 20 60 3a 64 65 73 63 72 69 70 74 69 6f 6e 27 3a 20 61 20 62 72 69 65 66 20 64 65 73 63 72 69 -.`:description':.a.brief.descri
224c0 70 74 69 6f 6e 20 6f 66 20 74 68 65 20 6d 6f 64 65 6c 2e 0a 0a 2d 20 60 3a 63 61 70 61 62 69 6c ption.of.the.model...-.`:capabil
224e0 69 74 69 65 73 27 3a 20 61 20 6c 69 73 74 20 6f 66 20 63 61 70 61 62 69 6c 69 74 69 65 73 20 73 ities':.a.list.of.capabilities.s
22500 75 70 70 6f 72 74 65 64 20 62 79 20 74 68 65 20 6d 6f 64 65 6c 2e 0a 0a 2d 20 60 3a 6d 69 6d 65 upported.by.the.model...-.`:mime
22520 2d 74 79 70 65 73 27 3a 20 61 20 6c 69 73 74 20 6f 66 20 73 75 70 70 6f 72 74 65 64 20 4d 49 4d -types':.a.list.of.supported.MIM
22540 45 20 74 79 70 65 73 20 66 6f 72 20 6d 65 64 69 61 20 66 69 6c 65 73 2e 0a 0a 2d 20 60 3a 63 6f E.types.for.media.files...-.`:co
22560 6e 74 65 78 74 2d 77 69 6e 64 6f 77 27 3a 20 74 68 65 20 63 6f 6e 74 65 78 74 20 77 69 6e 64 6f ntext-window':.the.context.windo
22580 77 20 73 69 7a 65 2c 20 69 6e 20 74 68 6f 75 73 61 6e 64 73 20 6f 66 20 74 6f 6b 65 6e 73 2e 0a w.size,.in.thousands.of.tokens..
225a0 0a 2d 20 60 3a 69 6e 70 75 74 2d 63 6f 73 74 27 3a 20 74 68 65 20 69 6e 70 75 74 20 63 6f 73 74 .-.`:input-cost':.the.input.cost
225c0 2c 20 69 6e 20 55 53 20 64 6f 6c 6c 61 72 73 20 70 65 72 20 6d 69 6c 6c 69 6f 6e 20 74 6f 6b 65 ,.in.US.dollars.per.million.toke
225e0 6e 73 2e 0a 0a 2d 20 60 3a 6f 75 74 70 75 74 2d 63 6f 73 74 27 3a 20 74 68 65 20 6f 75 74 70 75 ns...-.`:output-cost':.the.outpu
22600 74 20 63 6f 73 74 2c 20 69 6e 20 55 53 20 64 6f 6c 6c 61 72 73 20 70 65 72 20 6d 69 6c 6c 69 6f t.cost,.in.US.dollars.per.millio
22620 6e 20 74 6f 6b 65 6e 73 2e 0a 0a 2d 20 60 3a 63 75 74 6f 66 66 2d 64 61 74 65 27 3a 20 74 68 65 n.tokens...-.`:cutoff-date':.the
22640 20 6b 6e 6f 77 6c 65 64 67 65 20 63 75 74 6f 66 66 20 64 61 74 65 2e 0a 0a 2d 20 60 3a 72 65 71 .knowledge.cutoff.date...-.`:req
22660 75 65 73 74 2d 70 61 72 61 6d 73 27 3a 20 61 20 70 6c 69 73 74 20 6f 66 20 61 64 64 69 74 69 6f uest-params':.a.plist.of.additio
22680 6e 61 6c 20 72 65 71 75 65 73 74 20 70 61 72 61 6d 65 74 65 72 73 20 74 6f 0a 20 20 69 6e 63 6c nal.request.parameters.to...incl
226a0 75 64 65 20 77 68 65 6e 20 75 73 69 6e 67 20 74 68 69 73 20 6d 6f 64 65 6c 2e 0a 0a 49 6e 66 6f ude.when.using.this.model...Info
226c0 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 74 68 65 20 4f 70 65 6e 41 49 20 6d 6f 64 65 6c 73 20 rmation.about.the.OpenAI.models.
226e0 77 61 73 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 0a was.obtained.from.the.following.
22700 73 6f 75 72 63 65 73 3a 0a 0a 2d 20 3c 68 74 74 70 73 3a 2f 2f 70 6c 61 74 66 6f 72 6d 2e 6f 70 sources:..-.<https://platform.op
22720 65 6e 61 69 2e 63 6f 6d 2f 64 6f 63 73 2f 70 72 69 63 69 6e 67 3e 0a 2d 20 3c 68 74 74 70 73 3a enai.com/docs/pricing>.-.<https:
22740 2f 2f 70 6c 61 74 66 6f 72 6d 2e 6f 70 65 6e 61 69 2e 63 6f 6d 2f 64 6f 63 73 2f 6d 6f 64 65 6c //platform.openai.com/docs/model
22760 73 3e 22 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 20 27 67 70 s>")..(defcustom.gptel-model.'gp
22780 74 2d 34 6f 2d 6d 69 6e 69 0a 20 20 28 63 6f 6e 63 61 74 0a 20 20 20 22 4d 6f 64 65 6c 20 66 6f t-4o-mini...(concat...."Model.fo
227a0 72 20 63 68 61 74 2e 0a 0a 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6d 6f 64 65 6c 2c 20 r.chat...The.name.of.the.model,.
227c0 61 73 20 61 20 73 79 6d 62 6f 6c 2e 20 20 54 68 69 73 20 69 73 20 74 68 65 20 6e 61 6d 65 20 61 as.a.symbol...This.is.the.name.a
227e0 73 20 65 78 70 65 63 74 65 64 0a 62 79 20 74 68 65 20 4c 4c 4d 20 70 72 6f 76 69 64 65 72 27 73 s.expected.by.the.LLM.provider's
22800 20 41 50 49 2e 0a 0a 54 6f 20 73 65 74 20 74 68 65 20 6d 6f 64 65 6c 20 66 6f 72 20 61 20 63 68 .API...To.set.the.model.for.a.ch
22820 61 74 20 73 65 73 73 69 6f 6e 20 69 6e 74 65 72 61 63 74 69 76 65 6c 79 20 63 61 6c 6c 0a 60 67 at.session.interactively.call.`g
22840 70 74 65 6c 2d 73 65 6e 64 27 20 77 69 74 68 20 61 20 70 72 65 66 69 78 20 61 72 67 75 6d 65 6e ptel-send'.with.a.prefix.argumen
22860 74 2e 22 29 0a 20 20 3a 73 61 66 65 20 23 27 61 6c 77 61 79 73 0a 20 20 3a 74 79 70 65 20 60 28 t.")...:safe.#'always...:type.`(
22880 63 68 6f 69 63 65 0a 09 20 20 28 73 79 6d 62 6f 6c 20 3a 74 61 67 20 22 53 70 65 63 69 66 79 20 choice....(symbol.:tag."Specify.
228a0 6d 6f 64 65 6c 20 6e 61 6d 65 22 29 0a 09 20 20 2c 40 28 6d 61 70 63 61 72 20 28 6c 61 6d 62 64 model.name")....,@(mapcar.(lambd
228c0 61 20 28 6d 6f 64 65 6c 29 0a 09 09 20 20 20 20 20 20 28 6c 69 73 74 20 27 63 6f 6e 73 74 20 3a a.(model).........(list.'const.:
228e0 74 61 67 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 28 63 61 72 20 6d 6f 64 65 6c 29 29 0a 09 09 tag.(symbol-name.(car.model))...
22900 09 20 20 20 20 28 63 61 72 20 6d 6f 64 65 6c 29 29 29 0a 09 09 20 20 20 20 67 70 74 65 6c 2d 2d .....(car.model))).......gptel--
22920 6f 70 65 6e 61 69 2d 6d 6f 64 65 6c 73 29 29 29 0a 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d openai-models)))..(defvar.gptel-
22940 2d 6f 70 65 6e 61 69 0a 20 20 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 0a 20 20 20 -openai...(gptel-make-openai....
22960 20 20 20 22 43 68 61 74 47 50 54 22 0a 20 20 20 20 3a 6b 65 79 20 27 67 70 74 65 6c 2d 61 70 69 ..."ChatGPT".....:key.'gptel-api
22980 2d 6b 65 79 0a 20 20 20 20 3a 73 74 72 65 61 6d 20 74 0a 20 20 20 20 3a 6d 6f 64 65 6c 73 20 67 -key.....:stream.t.....:models.g
229a0 70 74 65 6c 2d 2d 6f 70 65 6e 61 69 2d 6d 6f 64 65 6c 73 29 29 0a 0a 28 64 65 66 63 75 73 74 6f ptel--openai-models))..(defcusto
229c0 6d 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 2d 6f 70 65 6e 61 69 0a 20 20 m.gptel-backend.gptel--openai...
229e0 22 4c 4c 4d 20 62 61 63 6b 65 6e 64 20 74 6f 20 75 73 65 2e 0a 0a 54 68 69 73 20 69 73 20 74 68 "LLM.backend.to.use...This.is.th
22a00 65 20 64 65 66 61 75 6c 74 20 5c 22 62 61 63 6b 65 6e 64 5c 22 2c 20 61 6e 20 6f 62 6a 65 63 74 e.default.\"backend\",.an.object
22a20 20 6f 66 20 74 79 70 65 0a 60 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 27 20 63 6f 6e 74 61 69 6e .of.type.`gptel-backend'.contain
22a40 69 6e 67 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20 61 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 20 61 ing.connection,.authentication.a
22a60 6e 64 20 6d 6f 64 65 6c 0a 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a 0a 41 20 62 61 63 6b 65 6e 64 nd.model.information...A.backend
22a80 20 66 6f 72 20 43 68 61 74 47 50 54 20 69 73 20 70 72 65 2d 64 65 66 69 6e 65 64 20 62 79 20 67 .for.ChatGPT.is.pre-defined.by.g
22aa0 70 74 65 6c 2e 20 20 42 61 63 6b 65 6e 64 73 20 66 6f 72 0a 6f 74 68 65 72 20 4c 4c 4d 20 70 72 ptel...Backends.for.other.LLM.pr
22ac0 6f 76 69 64 65 72 73 20 28 6c 6f 63 61 6c 20 6f 72 20 72 65 6d 6f 74 65 29 20 6d 61 79 20 62 65 oviders.(local.or.remote).may.be
22ae0 20 63 6f 6e 73 74 72 75 63 74 65 64 20 75 73 69 6e 67 0a 6f 6e 65 20 6f 66 20 74 68 65 20 61 76 .constructed.using.one.of.the.av
22b00 61 69 6c 61 62 6c 65 20 62 61 63 6b 65 6e 64 20 63 72 65 61 74 69 6f 6e 20 66 75 6e 63 74 69 6f ailable.backend.creation.functio
22b20 6e 73 3a 0a 2d 20 60 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 27 0a 2d 20 60 67 70 74 ns:.-.`gptel-make-openai'.-.`gpt
22b40 65 6c 2d 6d 61 6b 65 2d 61 7a 75 72 65 27 0a 2d 20 60 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 6c 6c el-make-azure'.-.`gptel-make-oll
22b60 61 6d 61 27 0a 2d 20 60 67 70 74 65 6c 2d 6d 61 6b 65 2d 67 70 74 34 61 6c 6c 27 0a 2d 20 60 67 ama'.-.`gptel-make-gpt4all'.-.`g
22b80 70 74 65 6c 2d 6d 61 6b 65 2d 67 65 6d 69 6e 69 27 0a 53 65 65 20 74 68 65 69 72 20 64 6f 63 75 ptel-make-gemini'.See.their.docu
22ba0 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 6d 6f 72 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 mentation.for.more.information.a
22bc0 6e 64 20 74 68 65 20 70 61 63 6b 61 67 65 0a 52 45 41 44 4d 45 20 66 6f 72 20 65 78 61 6d 70 6c nd.the.package.README.for.exampl
22be0 65 73 2e 22 0a 20 20 3a 73 61 66 65 20 23 27 61 6c 77 61 79 73 0a 20 20 3a 74 79 70 65 20 60 28 es."...:safe.#'always...:type.`(
22c00 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 43 68 choice...........(const.:tag."Ch
22c20 61 74 47 50 54 22 20 2c 67 70 74 65 6c 2d 2d 6f 70 65 6e 61 69 29 0a 20 20 20 20 20 20 20 20 20 atGPT".,gptel--openai)..........
22c40 20 28 72 65 73 74 72 69 63 74 65 64 2d 73 65 78 70 20 3a 6d 61 74 63 68 2d 61 6c 74 65 72 6e 61 .(restricted-sexp.:match-alterna
22c60 74 69 76 65 73 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 70 20 27 6e 69 6c 29 0a 09 09 09 tives.(gptel-backend-p.'nil)....
22c80 20 20 20 3a 74 61 67 20 22 4f 74 68 65 72 20 62 61 63 6b 65 6e 64 22 29 29 29 0a 0a 28 64 65 66 ...:tag."Other.backend")))..(def
22ca0 76 61 72 20 67 70 74 65 6c 2d 65 78 70 65 72 74 2d 63 6f 6d 6d 61 6e 64 73 20 6e 69 6c 0a 20 20 var.gptel-expert-commands.nil...
22cc0 22 57 68 65 74 68 65 72 20 65 78 70 65 72 69 6d 65 6e 74 61 6c 20 67 70 74 65 6c 20 6f 70 74 69 "Whether.experimental.gptel.opti
22ce0 6f 6e 73 20 73 68 6f 75 6c 64 20 62 65 20 65 6e 61 62 6c 65 64 2e 0a 0a 54 68 69 73 20 6f 70 65 ons.should.be.enabled...This.ope
22d00 6e 73 20 75 70 20 61 64 76 61 6e 63 65 64 20 6f 70 74 69 6f 6e 73 20 69 6e 20 60 67 70 74 65 6c ns.up.advanced.options.in.`gptel
22d20 2d 6d 65 6e 75 27 2e 22 29 0a 0a 28 64 65 66 76 61 72 2d 6c 6f 63 61 6c 20 67 70 74 65 6c 2d 2d -menu'.")..(defvar-local.gptel--
22d40 62 6f 75 6e 64 73 20 6e 69 6c 29 0a 28 70 75 74 20 27 67 70 74 65 6c 2d 2d 62 6f 75 6e 64 73 20 bounds.nil).(put.'gptel--bounds.
22d60 27 73 61 66 65 2d 6c 6f 63 61 6c 2d 76 61 72 69 61 62 6c 65 20 23 27 61 6c 77 61 79 73 29 0a 0a 'safe-local-variable.#'always)..
22d80 28 64 65 66 76 61 72 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 (defvar.gptel--num-messages-to-s
22da0 65 6e 64 20 6e 69 6c 29 0a 28 70 75 74 20 27 67 70 74 65 6c 2d 2d 6e 75 6d 2d 6d 65 73 73 61 67 end.nil).(put.'gptel--num-messag
22dc0 65 73 2d 74 6f 2d 73 65 6e 64 20 27 73 61 66 65 2d 6c 6f 63 61 6c 2d 76 61 72 69 61 62 6c 65 20 es-to-send.'safe-local-variable.
22de0 23 27 61 6c 77 61 79 73 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 6c 6f 67 2d #'always)..(defcustom.gptel-log-
22e00 6c 65 76 65 6c 20 6e 69 6c 0a 20 20 22 4c 6f 67 67 69 6e 67 20 6c 65 76 65 6c 20 66 6f 72 20 67 level.nil..."Logging.level.for.g
22e20 70 74 65 6c 2e 0a 0a 54 68 69 73 20 69 73 20 6f 6e 65 20 6f 66 20 6e 69 6c 20 6f 72 20 74 68 65 ptel...This.is.one.of.nil.or.the
22e40 20 73 79 6d 62 6f 6c 73 20 69 6e 66 6f 20 61 6e 64 20 64 65 62 75 67 3a 0a 0a 6e 69 6c 3a 20 44 .symbols.info.and.debug:..nil:.D
22e60 6f 6e 27 74 20 6c 6f 67 20 72 65 73 70 6f 6e 73 65 73 0a 69 6e 66 6f 3a 20 4c 6f 67 20 72 65 71 on't.log.responses.info:.Log.req
22e80 75 65 73 74 20 61 6e 64 20 72 65 73 70 6f 6e 73 65 20 62 6f 64 69 65 73 0a 64 65 62 75 67 3a 20 uest.and.response.bodies.debug:.
22ea0 4c 6f 67 20 72 65 71 75 65 73 74 2f 72 65 73 70 6f 6e 73 65 20 62 6f 64 69 65 73 2c 20 68 65 61 Log.request/response.bodies,.hea
22ec0 64 65 72 73 20 61 6e 64 20 61 6c 6c 20 6f 74 68 65 72 0a 20 20 20 20 20 20 20 63 6f 6e 6e 65 63 ders.and.all.other........connec
22ee0 74 69 6f 6e 20 73 65 74 74 69 6e 67 73 2e 0a 0a 57 68 65 6e 20 6e 6f 6e 2d 6e 69 6c 2c 20 69 6e tion.settings...When.non-nil,.in
22f00 66 6f 72 6d 61 74 69 6f 6e 20 69 73 20 6c 6f 67 67 65 64 20 74 6f 20 60 67 70 74 65 6c 2d 2d 6c formation.is.logged.to.`gptel--l
22f20 6f 67 2d 62 75 66 66 65 72 2d 6e 61 6d 65 27 2c 0a 77 68 69 63 68 20 73 65 65 2e 22 0a 20 20 3a og-buffer-name',.which.see."...:
22f40 74 79 70 65 20 27 28 63 68 6f 69 63 65 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a type.'(choice...........(const.:
22f60 74 61 67 20 22 4e 6f 20 6c 6f 67 67 69 6e 67 22 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 tag."No.logging".nil)...........
22f80 28 63 6f 6e 73 74 20 3a 74 61 67 20 22 4c 69 6d 69 74 65 64 22 20 69 6e 66 6f 29 0a 20 20 20 20 (const.:tag."Limited".info).....
22fa0 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 20 22 46 75 6c 6c 22 20 64 65 62 75 67 29 29 ......(const.:tag."Full".debug))
22fc0 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 72 65 73 70 6f 6e )..(defcustom.gptel-track-respon
22fe0 73 65 20 74 0a 20 20 22 44 69 73 74 69 6e 67 75 69 73 68 20 62 65 74 77 65 65 6e 20 75 73 65 72 se.t..."Distinguish.between.user
23000 20 6d 65 73 73 61 67 65 73 20 61 6e 64 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 73 2e 0a 0a 57 68 .messages.and.LLM.responses...Wh
23020 65 6e 20 63 72 65 61 74 69 6e 67 20 61 20 70 72 6f 6d 70 74 20 74 6f 20 73 65 6e 64 20 74 6f 20 en.creating.a.prompt.to.send.to.
23040 74 68 65 20 4c 4c 4d 2c 20 67 70 74 65 6c 20 64 69 73 74 69 6e 67 75 69 73 68 65 73 0a 62 65 74 the.LLM,.gptel.distinguishes.bet
23060 77 65 65 6e 20 74 65 78 74 20 65 6e 74 65 72 65 64 20 62 79 20 74 68 65 20 75 73 65 72 20 61 6e ween.text.entered.by.the.user.an
23080 64 20 70 61 73 74 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 73 2e 20 20 54 68 69 73 0a 64 69 73 74 d.past.LLM.responses...This.dist
230a0 69 6e 63 74 69 6f 6e 20 69 73 20 6e 65 63 65 73 73 61 72 79 20 66 6f 72 20 62 61 63 6b 2d 61 6e inction.is.necessary.for.back-an
230c0 64 2d 66 6f 72 74 68 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 20 77 69 74 68 20 61 6e 0a 4c 4c 4d d-forth.conversation.with.an.LLM
230e0 2e 0a 0a 49 6e 20 72 65 67 75 6c 61 72 20 45 6d 61 63 73 20 62 75 66 66 65 72 73 20 79 6f 75 20 ...In.regular.Emacs.buffers.you.
23100 63 61 6e 20 74 75 72 6e 20 74 68 69 73 20 62 65 68 61 76 69 6f 72 20 6f 66 66 20 62 79 0a 73 65 can.turn.this.behavior.off.by.se
23120 74 74 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 20 74 6f 20 tting.`gptel-track-response'.to.
23140 6e 69 6c 2e 20 20 41 6c 6c 20 74 65 78 74 2c 20 69 6e 63 6c 75 64 69 6e 67 0a 70 61 73 74 20 4c nil...All.text,.including.past.L
23160 4c 4d 20 72 65 73 70 6f 6e 73 65 73 2c 20 69 73 20 74 68 65 6e 20 74 72 65 61 74 65 64 20 61 73 LM.responses,.is.then.treated.as
23180 20 75 73 65 72 20 69 6e 70 75 74 20 77 68 65 6e 20 73 65 6e 64 69 6e 67 0a 71 75 65 72 69 65 73 .user.input.when.sending.queries
231a0 2e 0a 0a 54 68 69 73 20 76 61 72 69 61 62 6c 65 20 68 61 73 20 6e 6f 20 65 66 66 65 63 74 20 69 ...This.variable.has.no.effect.i
231c0 6e 20 64 65 64 69 63 61 74 65 64 20 63 68 61 74 20 62 75 66 66 65 72 73 20 28 62 75 66 66 65 72 n.dedicated.chat.buffers.(buffer
231e0 73 0a 77 69 74 68 20 60 67 70 74 65 6c 2d 6d 6f 64 65 27 20 65 6e 61 62 6c 65 64 29 2c 20 77 68 s.with.`gptel-mode'.enabled),.wh
23200 65 72 65 20 75 73 65 72 20 70 72 6f 6d 70 74 73 20 61 6e 64 20 72 65 73 70 6f 6e 73 65 73 20 61 ere.user.prompts.and.responses.a
23220 72 65 0a 61 6c 77 61 79 73 20 68 61 6e 64 6c 65 64 20 73 65 70 61 72 61 74 65 6c 79 2e 22 0a 20 re.always.handled.separately."..
23240 20 3a 74 79 70 65 20 27 62 6f 6f 6c 65 61 6e 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 .:type.'boolean)..(defcustom.gpt
23260 65 6c 2d 74 72 61 63 6b 2d 6d 65 64 69 61 20 6e 69 6c 0a 20 20 22 57 68 65 74 68 65 72 20 73 75 el-track-media.nil..."Whether.su
23280 70 70 6f 72 74 65 64 20 6d 65 64 69 61 20 69 6e 20 63 68 61 74 20 62 75 66 66 65 72 73 20 73 68 pported.media.in.chat.buffers.sh
232a0 6f 75 6c 64 20 62 65 20 73 65 6e 74 2e 0a 0a 57 68 65 6e 20 74 68 65 20 61 63 74 69 76 65 20 60 ould.be.sent...When.the.active.`
232c0 67 70 74 65 6c 2d 6d 6f 64 65 6c 27 20 73 75 70 70 6f 72 74 73 20 69 74 2c 20 67 70 74 65 6c 20 gptel-model'.supports.it,.gptel.
232e0 63 61 6e 20 73 65 6e 64 20 69 6d 61 67 65 73 0a 6f 72 20 6f 74 68 65 72 20 6d 65 64 69 61 20 66 can.send.images.or.other.media.f
23300 72 6f 6d 20 6c 69 6e 6b 73 20 69 6e 20 63 68 61 74 20 62 75 66 66 65 72 73 20 74 6f 20 74 68 65 rom.links.in.chat.buffers.to.the
23320 20 4c 4c 4d 2e 20 20 54 6f 20 75 73 65 0a 74 68 69 73 2c 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e .LLM...To.use.this,.the.followin
23340 67 20 73 74 65 70 73 20 61 72 65 20 72 65 71 75 69 72 65 64 2e 0a 0a 31 2e 20 60 67 70 74 65 6c g.steps.are.required...1..`gptel
23360 2d 74 72 61 63 6b 2d 6d 65 64 69 61 27 20 28 74 68 69 73 20 76 61 72 69 61 62 6c 65 29 20 73 68 -track-media'.(this.variable).sh
23380 6f 75 6c 64 20 62 65 20 6e 6f 6e 2d 6e 69 6c 0a 0a 32 2e 20 54 68 65 20 4c 4c 4d 20 73 68 6f 75 ould.be.non-nil..2..The.LLM.shou
233a0 6c 64 20 70 72 6f 76 69 64 65 20 76 69 73 69 6f 6e 20 6f 72 20 64 6f 63 75 6d 65 6e 74 20 73 75 ld.provide.vision.or.document.su
233c0 70 70 6f 72 74 2e 20 20 43 75 72 72 65 6e 74 6c 79 2c 0a 6f 6e 6c 79 20 74 68 65 20 4f 70 65 6e pport...Currently,.only.the.Open
233e0 41 49 2c 20 41 6e 74 68 72 6f 70 69 63 20 61 6e 64 20 4f 6c 6c 61 6d 61 20 41 50 49 73 20 61 72 AI,.Anthropic.and.Ollama.APIs.ar
23400 65 20 73 75 70 70 6f 72 74 65 64 2e 20 20 53 65 65 0a 74 68 65 20 64 6f 63 75 6d 65 6e 74 61 74 e.supported...See.the.documentat
23420 69 6f 6e 20 6f 66 20 60 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 27 2c 20 60 67 70 74 ion.of.`gptel-make-openai',.`gpt
23440 65 6c 2d 6d 61 6b 65 2d 61 6e 74 68 72 6f 70 69 63 27 0a 61 6e 64 20 60 67 70 74 65 6c 2d 6d 61 el-make-anthropic'.and.`gptel-ma
23460 6b 65 2d 6f 6c 6c 61 6d 61 27 20 72 65 73 70 2e 20 66 6f 72 20 64 65 74 61 69 6c 73 20 6f 6e 20 ke-ollama'.resp..for.details.on.
23480 68 6f 77 20 74 6f 20 73 70 65 63 69 66 79 20 6d 65 64 69 61 0a 73 75 70 70 6f 72 74 20 66 6f 72 how.to.specify.media.support.for
234a0 20 6d 6f 64 65 6c 73 2e 0a 0a 33 2e 20 4f 6e 6c 79 20 5c 22 73 74 61 6e 64 61 6c 6f 6e 65 5c 22 .models...3..Only.\"standalone\"
234c0 20 6c 69 6e 6b 73 20 69 6e 20 63 68 61 74 20 62 75 66 66 65 72 73 20 61 72 65 20 63 6f 6e 73 69 .links.in.chat.buffers.are.consi
234e0 64 65 72 65 64 2e 0a 54 68 65 73 65 20 61 72 65 20 6c 69 6e 6b 73 20 6f 6e 20 74 68 65 69 72 20 dered..These.are.links.on.their.
23500 6f 77 6e 20 6c 69 6e 65 20 77 69 74 68 20 6e 6f 20 73 75 72 72 6f 75 6e 64 69 6e 67 20 74 65 78 own.line.with.no.surrounding.tex
23520 74 2e 0a 46 75 72 74 68 65 72 3a 0a 0a 2d 20 49 6e 20 4f 72 67 20 6d 6f 64 65 2c 20 6f 6e 6c 79 t..Further:..-.In.Org.mode,.only
23540 20 66 69 6c 65 73 20 6f 72 20 55 52 4c 73 20 6f 66 20 74 68 65 20 66 6f 72 6d 0a 20 20 5b 5b 2f .files.or.URLs.of.the.form...[[/
23560 70 61 74 68 2f 74 6f 2f 6d 65 64 69 61 5d 5b 62 72 61 63 6b 65 74 20 6c 69 6e 6b 73 5d 5d 20 61 path/to/media][bracket.links]].a
23580 6e 64 20 3c 61 6e 67 6c 65 2f 6c 69 6e 6b 2f 70 61 74 68 3e 0a 20 20 61 72 65 20 73 65 6e 74 2e nd.<angle/link/path>...are.sent.
235a0 0a 0a 2d 20 49 6e 20 4d 61 72 6b 64 6f 77 6e 20 6d 6f 64 65 2c 20 6f 6e 6c 79 20 66 69 6c 65 73 ..-.In.Markdown.mode,.only.files
235c0 20 6f 72 20 55 52 4c 53 20 6f 66 20 74 68 65 20 66 6f 72 6d 0a 20 20 5b 62 72 61 63 6b 65 74 20 .or.URLS.of.the.form...[bracket.
235e0 6c 69 6e 6b 5d 28 2f 70 61 74 68 2f 74 6f 2f 6d 65 64 69 61 29 20 61 6e 64 20 3c 61 6e 67 6c 65 link](/path/to/media).and.<angle
23600 2f 6c 69 6e 6b 2f 70 61 74 68 3e 0a 20 20 61 72 65 20 73 65 6e 74 2e 0a 0a 54 68 69 73 20 6f 70 /link/path>...are.sent...This.op
23620 74 69 6f 6e 20 68 61 73 20 6e 6f 20 65 66 66 65 63 74 20 69 6e 20 6e 6f 6e 2d 63 68 61 74 20 62 tion.has.no.effect.in.non-chat.b
23640 75 66 66 65 72 73 2e 20 20 54 6f 20 69 6e 63 6c 75 64 65 0a 6d 65 64 69 61 20 28 69 6e 63 6c 75 uffers...To.include.media.(inclu
23660 64 69 6e 67 20 69 6d 61 67 65 73 29 20 6d 6f 72 65 20 67 65 6e 65 72 61 6c 6c 79 2c 20 75 73 65 ding.images).more.generally,.use
23680 20 60 67 70 74 65 6c 2d 61 64 64 27 2e 22 0a 20 20 3a 74 79 70 65 20 27 62 6f 6f 6c 65 61 6e 29 .`gptel-add'."...:type.'boolean)
236a0 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 75 73 65 2d 63 6f 6e 74 65 78 74 20 27 ..(defcustom.gptel-use-context.'
236c0 73 79 73 74 65 6d 0a 20 20 22 57 68 65 72 65 20 69 6e 20 74 68 65 20 72 65 71 75 65 73 74 20 74 system..."Where.in.the.request.t
236e0 6f 20 69 6e 6a 65 63 74 20 67 70 74 65 6c 27 73 20 61 64 64 69 74 69 6f 6e 61 6c 20 63 6f 6e 74 o.inject.gptel's.additional.cont
23700 65 78 74 2e 0a 0a 67 70 74 65 6c 20 61 6c 77 61 79 73 20 69 6e 63 6c 75 64 65 73 20 74 68 65 20 ext...gptel.always.includes.the.
23720 61 63 74 69 76 65 20 72 65 67 69 6f 6e 20 6f 72 20 74 68 65 20 62 75 66 66 65 72 20 75 70 20 74 active.region.or.the.buffer.up.t
23740 6f 20 74 68 65 0a 63 75 72 73 6f 72 20 69 6e 20 74 68 65 20 72 65 71 75 65 73 74 20 74 6f 20 74 o.the.cursor.in.the.request.to.t
23760 68 65 20 4c 4c 4d 2e 20 20 41 64 64 69 74 69 6f 6e 61 6c 6c 79 2c 20 79 6f 75 20 63 61 6e 20 61 he.LLM...Additionally,.you.can.a
23780 64 64 0a 6f 74 68 65 72 20 62 75 66 66 65 72 73 20 6f 72 20 74 68 65 69 72 20 72 65 67 69 6f 6e dd.other.buffers.or.their.region
237a0 73 20 74 6f 20 74 68 65 20 63 6f 6e 74 65 78 74 20 77 69 74 68 0a 60 67 70 74 65 6c 2d 61 64 64 s.to.the.context.with.`gptel-add
237c0 2d 63 6f 6e 74 65 78 74 27 2c 20 6f 72 20 66 72 6f 6d 20 67 70 74 65 6c 27 73 20 6d 65 6e 75 2e -context',.or.from.gptel's.menu.
237e0 20 20 54 68 69 73 20 64 61 74 61 20 77 69 6c 6c 20 62 65 0a 73 65 6e 74 20 77 69 74 68 20 65 76 ..This.data.will.be.sent.with.ev
23800 65 72 79 20 72 65 71 75 65 73 74 2e 0a 0a 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 6f 6e 74 72 6f ery.request...This.option.contro
23820 6c 73 20 77 68 65 74 68 65 72 20 61 6e 64 20 77 68 65 72 65 20 74 68 69 73 20 61 64 64 69 74 69 ls.whether.and.where.this.additi
23840 6f 6e 61 6c 20 63 6f 6e 74 65 78 74 20 69 73 0a 69 6e 63 6c 75 64 65 64 20 69 6e 20 74 68 65 20 onal.context.is.included.in.the.
23860 72 65 71 75 65 73 74 2e 0a 0a 43 75 72 72 65 6e 74 6c 79 20 73 75 70 70 6f 72 74 65 64 20 6f 70 request...Currently.supported.op
23880 74 69 6f 6e 73 20 61 72 65 3a 0a 0a 20 20 20 20 6e 69 6c 20 20 20 20 20 2d 20 44 6f 20 6e 6f 74 tions.are:......nil.....-.Do.not
238a0 20 75 73 65 20 74 68 65 20 63 6f 6e 74 65 78 74 2e 0a 20 20 20 20 73 79 73 74 65 6d 20 20 2d 20 .use.the.context......system..-.
238c0 49 6e 63 6c 75 64 65 20 74 68 65 20 63 6f 6e 74 65 78 74 20 77 69 74 68 20 74 68 65 20 73 79 73 Include.the.context.with.the.sys
238e0 74 65 6d 20 6d 65 73 73 61 67 65 2e 0a 20 20 20 20 75 73 65 72 20 20 20 20 2d 20 49 6e 63 6c 75 tem.message......user....-.Inclu
23900 64 65 20 74 68 65 20 63 6f 6e 74 65 78 74 20 77 69 74 68 20 74 68 65 20 75 73 65 72 20 70 72 6f de.the.context.with.the.user.pro
23920 6d 70 74 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 mpt."...:group.'gptel...:type.'(
23940 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 44 6f choice...........(const.:tag."Do
23960 6e 27 74 20 69 6e 63 6c 75 64 65 20 63 6f 6e 74 65 78 74 22 20 6e 69 6c 29 0a 20 20 20 20 20 20 n't.include.context".nil).......
23980 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 20 22 57 69 74 68 20 73 79 73 74 65 6d 20 6d 65 73 ....(const.:tag."With.system.mes
239a0 73 61 67 65 22 20 73 79 73 74 65 6d 29 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a sage".system)...........(const.:
239c0 74 61 67 20 22 57 69 74 68 20 75 73 65 72 20 70 72 6f 6d 70 74 22 20 75 73 65 72 29 29 29 0a 0a tag."With.user.prompt".user)))..
239e0 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 69 6e 63 6c 75 64 65 2d 72 65 61 73 6f 6e 69 (defcustom.gptel-include-reasoni
23a00 6e 67 20 74 0a 20 20 22 48 6f 77 20 74 6f 20 68 61 6e 64 6c 65 20 4c 4c 4d 20 72 65 61 73 6f 6e ng.t..."How.to.handle.LLM.reason
23a20 69 6e 67 20 6f 72 20 5c 22 74 68 69 6e 6b 69 6e 67 5c 22 20 74 65 78 74 20 62 6c 6f 63 6b 73 2e ing.or.\"thinking\".text.blocks.
23a40 0a 0a 53 6f 6d 65 20 4c 4c 4d 73 20 69 6e 63 6c 75 64 65 20 69 6e 20 74 68 65 69 72 20 72 65 73 ..Some.LLMs.include.in.their.res
23a60 70 6f 6e 73 65 20 61 20 5c 22 74 68 69 6e 6b 69 6e 67 5c 22 20 73 65 63 74 69 6f 6e 2e 20 20 54 ponse.a.\"thinking\".section...T
23a80 68 69 73 0a 74 65 78 74 20 69 6d 70 72 6f 76 65 73 20 74 68 65 20 71 75 61 6c 69 74 79 20 6f 66 his.text.improves.the.quality.of
23aa0 20 74 68 65 20 4c 4c 4d 27 73 20 66 69 6e 61 6c 20 6f 75 74 70 75 74 2c 20 62 75 74 20 6d 61 79 .the.LLM's.final.output,.but.may
23ac0 20 6e 6f 74 0a 62 65 20 69 6e 74 65 72 65 73 74 69 6e 67 20 74 6f 20 79 6f 75 20 62 79 20 69 74 .not.be.interesting.to.you.by.it
23ae0 73 65 6c 66 2e 0a 0a 53 75 70 70 6f 72 74 65 64 20 6f 70 74 69 6f 6e 73 20 61 72 65 20 74 68 65 self...Supported.options.are.the
23b00 20 73 79 6d 62 6f 6c 73 0a 0a 20 20 20 20 74 20 20 20 20 20 20 20 2d 20 49 6e 63 6c 75 64 65 20 .symbols......t.......-.Include.
23b20 77 69 74 68 20 74 68 65 20 72 65 73 70 6f 6e 73 65 2c 20 74 68 65 20 64 65 66 61 75 6c 74 0a 20 with.the.response,.the.default..
23b40 20 20 20 6e 69 6c 20 20 20 20 20 2d 20 44 6f 20 6e 6f 74 20 69 6e 63 6c 75 64 65 0a 20 20 20 20 ...nil.....-.Do.not.include.....
23b60 69 67 6e 6f 72 65 20 20 2d 20 49 6e 63 6c 75 64 65 20 77 69 74 68 20 74 68 65 20 72 65 73 70 6f ignore..-.Include.with.the.respo
23b80 6e 73 65 20 62 75 74 20 69 67 6e 6f 72 65 20 6f 6e 20 73 75 62 73 65 71 75 65 6e 74 0a 20 20 20 nse.but.ignore.on.subsequent....
23ba0 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 20 74 75 72 6e 73 0a 0a 49 ...........conversation.turns..I
23bc0 74 20 63 61 6e 20 61 6c 73 6f 20 62 65 20 61 20 73 74 72 69 6e 67 20 6e 61 6d 69 6e 67 20 61 20 t.can.also.be.a.string.naming.a.
23be0 62 75 66 66 65 72 2c 20 69 6e 20 77 68 69 63 68 20 63 61 73 65 20 74 68 65 0a 72 65 61 73 6f 6e buffer,.in.which.case.the.reason
23c00 69 6e 67 20 74 65 78 74 20 77 69 6c 6c 20 62 65 20 69 6e 73 65 72 74 65 64 20 61 74 20 74 68 65 ing.text.will.be.inserted.at.the
23c20 20 65 6e 64 20 6f 66 20 74 68 61 74 20 62 75 66 66 65 72 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 .end.of.that.buffer."...:group.'
23c40 67 70 74 65 6c 0a 20 20 3a 74 79 70 65 20 27 28 63 68 6f 69 63 65 0a 20 20 20 20 20 20 20 20 20 gptel...:type.'(choice..........
23c60 20 28 63 6f 6e 73 74 20 3a 74 61 67 20 22 49 6e 63 6c 75 64 65 20 77 69 74 68 20 72 65 73 70 6f .(const.:tag."Include.with.respo
23c80 6e 73 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 44 nse".t)...........(const.:tag."D
23ca0 6f 6e 27 74 20 69 6e 63 6c 75 64 65 22 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f on't.include".nil)...........(co
23cc0 6e 73 74 20 3a 74 61 67 20 22 49 6e 63 6c 75 64 65 20 62 75 74 20 69 67 6e 6f 72 65 22 20 69 67 nst.:tag."Include.but.ignore".ig
23ce0 6e 6f 72 65 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 20 3a 74 61 67 20 22 49 6e nore)...........(string.:tag."In
23d00 63 6c 75 64 65 20 69 6e 20 62 75 66 66 65 72 22 29 29 29 0a 0a 28 64 65 66 76 61 72 2d 6c 6f 63 clude.in.buffer")))..(defvar-loc
23d20 61 6c 20 67 70 74 65 6c 2d 2d 6f 6c 64 2d 68 65 61 64 65 72 2d 6c 69 6e 65 20 6e 69 6c 29 0a 0a al.gptel--old-header-line.nil)..
23d40 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61 6c 69 73 74 20 6e 69 6c (defvar.gptel-context--alist.nil
23d60 0a 20 20 22 4c 69 73 74 20 6f 66 20 67 70 74 65 6c 27 73 20 63 6f 6e 74 65 78 74 20 73 6f 75 72 ..."List.of.gptel's.context.sour
23d80 63 65 73 2e 0a 0a 45 61 63 68 20 65 6e 74 72 79 20 69 73 20 6f 66 20 74 68 65 20 66 6f 72 6d 0a ces...Each.entry.is.of.the.form.
23da0 20 28 62 75 66 66 65 72 20 2e 20 28 6f 76 65 72 6c 61 79 31 20 6f 76 65 72 6c 61 79 32 20 2e 2e .(buffer...(overlay1.overlay2...
23dc0 2e 29 29 0a 6f 72 0a 20 28 5c 22 70 61 74 68 2f 74 6f 2f 66 69 6c 65 5c 22 29 2e 22 29 0a 0a 28 .)).or..(\"path/to/file\").")..(
23de0 64 65 66 76 61 72 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 defvar.gptel--request-alist.nil.
23e00 22 41 6c 69 73 74 20 6f 66 20 61 63 74 69 76 65 20 67 70 74 65 6c 20 72 65 71 75 65 73 74 73 2e "Alist.of.active.gptel.requests.
23e20 22 29 0a 0a 0c 0a 3b 3b 3b 20 55 74 69 6c 69 74 79 20 66 75 6e 63 74 69 6f 6e 73 0a 0a 28 64 65 ")....;;;.Utility.functions..(de
23e40 66 75 6e 20 67 70 74 65 6c 2d 61 70 69 2d 6b 65 79 2d 66 72 6f 6d 2d 61 75 74 68 2d 73 6f 75 72 fun.gptel-api-key-from-auth-sour
23e60 63 65 20 28 26 6f 70 74 69 6f 6e 61 6c 20 68 6f 73 74 20 75 73 65 72 29 0a 20 20 22 4c 6f 6f 6b ce.(&optional.host.user)..."Look
23e80 75 70 20 61 70 69 20 6b 65 79 20 69 6e 20 74 68 65 20 61 75 74 68 20 73 6f 75 72 63 65 2e 0a 42 up.api.key.in.the.auth.source..B
23ea0 79 20 64 65 66 61 75 6c 74 2c 20 74 68 65 20 4c 4c 4d 20 68 6f 73 74 20 66 6f 72 20 74 68 65 20 y.default,.the.LLM.host.for.the.
23ec0 61 63 74 69 76 65 20 62 61 63 6b 65 6e 64 20 69 73 20 75 73 65 64 20 61 73 20 48 4f 53 54 2c 0a active.backend.is.used.as.HOST,.
23ee0 61 6e 64 20 5c 22 61 70 69 6b 65 79 5c 22 20 61 73 20 55 53 45 52 2e 22 0a 20 20 28 69 66 2d 6c and.\"apikey\".as.USER."...(if-l
23f00 65 74 2a 20 28 28 73 65 63 72 65 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 et*.((secret..............(plist
23f20 2d 67 65 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 61 72 20 28 61 75 74 68 2d 73 6f -get...............(car.(auth-so
23f40 75 72 63 65 2d 73 65 61 72 63 68 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 urce-search.....................
23f60 3a 68 6f 73 74 20 28 6f 72 20 68 6f 73 74 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 68 6f :host.(or.host.(gptel-backend-ho
23f80 73 74 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 st.gptel-backend))..............
23fa0 20 20 20 20 20 20 20 3a 75 73 65 72 20 28 6f 72 20 75 73 65 72 20 22 61 70 69 6b 65 79 22 29 0a .......:user.(or.user."apikey").
23fc0 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 20 27 28 3a ....................:require.'(:
23fe0 73 65 63 72 65 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 73 65 63 72 65 74 29 secret)))...............:secret)
24000 29 29 0a 20 20 20 20 20 20 28 69 66 20 28 66 75 6e 63 74 69 6f 6e 70 20 73 65 63 72 65 74 29 0a )).......(if.(functionp.secret).
24020 20 20 20 20 20 20 20 20 20 20 28 65 6e 63 6f 64 65 2d 63 6f 64 69 6e 67 2d 73 74 72 69 6e 67 20 ..........(encode-coding-string.
24040 28 66 75 6e 63 61 6c 6c 20 73 65 63 72 65 74 29 20 27 75 74 66 2d 38 29 0a 20 20 20 20 20 20 20 (funcall.secret).'utf-8)........
24060 20 73 65 63 72 65 74 29 0a 20 20 20 20 28 75 73 65 72 2d 65 72 72 6f 72 20 22 4e 6f 20 60 67 70 .secret).....(user-error."No.`gp
24080 74 65 6c 2d 61 70 69 2d 6b 65 79 27 20 66 6f 75 6e 64 20 69 6e 20 74 68 65 20 61 75 74 68 20 73 tel-api-key'.found.in.the.auth.s
240a0 6f 75 72 63 65 22 29 29 29 0a 0a 3b 3b 20 46 49 58 4d 45 20 53 68 6f 75 6c 64 20 77 65 20 75 74 ource")))..;;.FIXME.Should.we.ut
240c0 66 2d 38 20 65 6e 63 6f 64 65 20 74 68 65 20 61 70 69 2d 6b 65 79 20 68 65 72 65 3f 0a 28 64 65 f-8.encode.the.api-key.here?.(de
240e0 66 75 6e 20 67 70 74 65 6c 2d 2d 67 65 74 2d 61 70 69 2d 6b 65 79 20 28 26 6f 70 74 69 6f 6e 61 fun.gptel--get-api-key.(&optiona
24100 6c 20 6b 65 79 29 0a 20 20 22 47 65 74 20 61 70 69 20 6b 65 79 20 66 72 6f 6d 20 4b 45 59 2c 20 l.key)..."Get.api.key.from.KEY,.
24120 6f 72 20 66 72 6f 6d 20 60 67 70 74 65 6c 2d 61 70 69 2d 6b 65 79 27 2e 22 0a 20 20 28 77 68 65 or.from.`gptel-api-key'."...(whe
24140 6e 2d 6c 65 74 2a 20 28 28 6b 65 79 2d 73 79 6d 20 28 6f 72 20 6b 65 79 20 28 67 70 74 65 6c 2d n-let*.((key-sym.(or.key.(gptel-
24160 62 61 63 6b 65 6e 64 2d 6b 65 79 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 29 29 29 0a 20 20 backend-key.gptel-backend))))...
24180 20 20 28 63 6c 2d 74 79 70 65 63 61 73 65 20 6b 65 79 2d 73 79 6d 0a 20 20 20 20 20 20 28 66 75 ..(cl-typecase.key-sym.......(fu
241a0 6e 63 74 69 6f 6e 20 28 73 74 72 69 6e 67 2d 74 72 69 6d 2d 72 69 67 68 74 20 28 66 75 6e 63 61 nction.(string-trim-right.(funca
241c0 6c 6c 20 6b 65 79 2d 73 79 6d 29 20 22 5b 5c 6e 5c 72 5d 2b 22 29 29 0a 20 20 20 20 20 20 28 73 ll.key-sym)."[\n\r]+")).......(s
241e0 74 72 69 6e 67 20 28 73 74 72 69 6e 67 2d 74 72 69 6d 2d 72 69 67 68 74 20 6b 65 79 2d 73 79 6d tring.(string-trim-right.key-sym
24200 20 22 5b 5c 6e 5c 72 5d 2b 22 29 29 0a 20 20 20 20 20 20 28 73 79 6d 62 6f 6c 20 28 69 66 2d 6c ."[\n\r]+")).......(symbol.(if-l
24220 65 74 2a 20 28 28 76 61 6c 20 28 73 79 6d 62 6f 6c 2d 76 61 6c 75 65 20 6b 65 79 2d 73 79 6d 29 et*.((val.(symbol-value.key-sym)
24240 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 65 6c 2d 2d 67 65 74 ))...................(gptel--get
24260 2d 61 70 69 2d 6b 65 79 20 76 61 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 -api-key.val).................(e
24280 72 72 6f 72 20 22 60 67 70 74 65 6c 2d 61 70 69 2d 6b 65 79 27 20 69 73 20 6e 6f 74 20 76 61 6c rror."`gptel-api-key'.is.not.val
242a0 69 64 22 29 29 29 0a 20 20 20 20 20 20 28 74 20 28 65 72 72 6f 72 20 22 60 67 70 74 65 6c 2d 61 id"))).......(t.(error."`gptel-a
242c0 70 69 2d 6b 65 79 27 20 69 73 20 6e 6f 74 20 76 61 6c 69 64 22 29 29 29 29 29 0a 0a 28 64 65 66 pi-key'.is.not.valid")))))..(def
242e0 73 75 62 73 74 20 67 70 74 65 6c 2d 2d 74 6f 2d 6e 75 6d 62 65 72 20 28 76 61 6c 29 0a 20 20 22 subst.gptel--to-number.(val)..."
24300 45 6e 73 75 72 65 20 56 41 4c 20 69 73 20 61 20 6e 75 6d 62 65 72 2e 22 0a 20 20 28 63 6f 6e 64 Ensure.VAL.is.a.number."...(cond
24320 0a 20 20 20 28 28 6e 75 6d 62 65 72 70 20 76 61 6c 29 20 76 61 6c 29 0a 20 20 20 28 28 73 74 72 ....((numberp.val).val)....((str
24340 69 6e 67 70 20 76 61 6c 29 20 28 73 74 72 69 6e 67 2d 74 6f 2d 6e 75 6d 62 65 72 20 76 61 6c 29 ingp.val).(string-to-number.val)
24360 29 0a 20 20 20 28 28 65 72 72 6f 72 20 22 25 53 20 63 61 6e 6e 6f 74 20 62 65 20 63 6f 6e 76 65 )....((error."%S.cannot.be.conve
24380 72 74 65 64 20 74 6f 20 61 20 6e 75 6d 62 65 72 22 20 76 61 6c 29 29 29 29 0a 0a 28 64 65 66 73 rted.to.a.number".val))))..(defs
243a0 75 62 73 74 20 67 70 74 65 6c 2d 2d 74 6f 2d 73 74 72 69 6e 67 20 28 73 29 0a 20 20 22 43 6f 6e ubst.gptel--to-string.(s)..."Con
243c0 76 65 72 74 20 53 20 74 6f 20 61 20 73 74 72 69 6e 67 2c 20 69 66 20 70 6f 73 73 69 62 6c 65 2e vert.S.to.a.string,.if.possible.
243e0 22 0a 20 20 28 63 6c 2d 74 79 70 65 63 61 73 65 20 73 0a 20 20 20 20 28 73 79 6d 62 6f 6c 20 28 "...(cl-typecase.s.....(symbol.(
24400 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 73 29 29 0a 20 20 20 20 28 73 74 72 69 6e 67 20 73 29 0a 20 symbol-name.s)).....(string.s)..
24420 20 20 20 28 6f 74 68 65 72 77 69 73 65 20 28 70 72 69 6e 31 2d 74 6f 2d 73 74 72 69 6e 67 20 73 ...(otherwise.(prin1-to-string.s
24440 29 29 29 29 0a 0a 28 64 65 66 73 75 62 73 74 20 67 70 74 65 6c 2d 2d 69 6e 74 65 72 6e 20 28 73 ))))..(defsubst.gptel--intern.(s
24460 29 0a 20 20 22 49 6e 74 65 72 6e 20 53 2c 20 69 66 20 70 6f 73 73 69 62 6c 65 2e 22 0a 20 20 28 )..."Intern.S,.if.possible."...(
24480 63 6c 2d 65 74 79 70 65 63 61 73 65 20 73 0a 20 20 20 20 28 73 79 6d 62 6f 6c 20 73 29 0a 20 20 cl-etypecase.s.....(symbol.s)...
244a0 20 20 28 73 74 72 69 6e 67 20 28 69 6e 74 65 72 6e 20 73 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 ..(string.(intern.s))))..(defun.
244c0 67 70 74 65 6c 2d 2d 6d 65 72 67 65 2d 70 6c 69 73 74 73 20 28 26 72 65 73 74 20 70 6c 69 73 74 gptel--merge-plists.(&rest.plist
244e0 73 29 0a 20 20 22 4d 65 72 67 65 20 50 4c 49 53 54 53 2c 20 61 6c 74 65 72 69 6e 67 20 74 68 65 s)..."Merge.PLISTS,.altering.the
24500 20 66 69 72 73 74 20 6f 6e 65 2e 0a 0a 4c 61 74 65 72 20 70 6c 69 73 74 73 20 69 6e 20 74 68 65 .first.one...Later.plists.in.the
24520 20 73 65 71 75 65 6e 63 65 20 74 61 6b 65 20 70 72 65 63 65 64 65 6e 63 65 20 6f 76 65 72 20 65 .sequence.take.precedence.over.e
24540 61 72 6c 69 65 72 20 6f 6e 65 73 2e 22 0a 20 20 28 6c 65 74 20 28 3b 3b 20 28 72 74 6e 20 28 63 arlier.ones."...(let.(;;.(rtn.(c
24560 6f 70 79 2d 73 65 71 75 65 6e 63 65 20 28 70 6f 70 20 70 6c 69 73 74 73 29 29 29 0a 20 20 20 20 opy-sequence.(pop.plists))).....
24580 20 20 20 20 28 72 74 6e 20 28 70 6f 70 20 70 6c 69 73 74 73 29 29 0a 20 20 20 20 20 20 20 20 70 ....(rtn.(pop.plists)).........p
245a0 20 76 20 6c 73 29 0a 20 20 20 20 28 77 68 69 6c 65 20 70 6c 69 73 74 73 0a 20 20 20 20 20 20 28 .v.ls).....(while.plists.......(
245c0 73 65 74 71 20 6c 73 20 28 70 6f 70 20 70 6c 69 73 74 73 29 29 0a 20 20 20 20 20 20 28 77 68 69 setq.ls.(pop.plists)).......(whi
245e0 6c 65 20 6c 73 0a 20 20 20 20 20 20 20 20 28 73 65 74 71 20 70 20 28 70 6f 70 20 6c 73 29 20 76 le.ls.........(setq.p.(pop.ls).v
24600 20 28 70 6f 70 20 6c 73 29 29 0a 20 20 20 20 20 20 20 20 28 73 65 74 71 20 72 74 6e 20 28 70 6c .(pop.ls)).........(setq.rtn.(pl
24620 69 73 74 2d 70 75 74 20 72 74 6e 20 70 20 76 29 29 29 29 0a 20 20 20 20 72 74 6e 29 29 0a 0a 28 ist-put.rtn.p.v)))).....rtn))..(
24640 64 65 66 75 6e 20 67 70 74 65 6c 2d 61 75 74 6f 2d 73 63 72 6f 6c 6c 20 28 29 0a 20 20 22 53 63 defun.gptel-auto-scroll.()..."Sc
24660 72 6f 6c 6c 20 77 69 6e 64 6f 77 20 69 66 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 20 63 6f 6e 74 roll.window.if.LLM.response.cont
24680 69 6e 75 65 73 20 62 65 6c 6f 77 20 76 69 65 77 70 6f 72 74 2e 0a 0a 4e 6f 74 65 3a 20 54 68 69 inues.below.viewport...Note:.Thi
246a0 73 20 77 69 6c 6c 20 6d 6f 76 65 20 74 68 65 20 63 75 72 73 6f 72 2e 22 0a 20 20 28 77 68 65 6e s.will.move.the.cursor."...(when
246c0 2d 6c 65 74 2a 20 28 28 77 69 6e 20 28 67 65 74 2d 62 75 66 66 65 72 2d 77 69 6e 64 6f 77 20 28 -let*.((win.(get-buffer-window.(
246e0 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 20 27 76 69 73 69 62 6c 65 29 29 0a 20 20 20 20 20 current-buffer).'visible))......
24700 20 20 20 20 20 20 20 20 20 28 28 6e 6f 74 20 28 70 6f 73 2d 76 69 73 69 62 6c 65 2d 69 6e 2d 77 .........((not.(pos-visible-in-w
24720 69 6e 64 6f 77 2d 70 20 28 70 6f 69 6e 74 29 20 77 69 6e 29 29 29 0a 20 20 20 20 20 20 20 20 20 indow-p.(point).win)))..........
24740 20 20 20 20 20 28 73 63 72 6f 6c 6c 2d 65 72 72 6f 72 2d 74 6f 70 2d 62 6f 74 74 6f 6d 20 74 29 .....(scroll-error-top-bottom.t)
24760 29 0a 20 20 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20 6e 69 6c 0a 20 20 20 20 20 20 ).....(condition-case.nil.......
24780 20 20 28 77 69 74 68 2d 73 65 6c 65 63 74 65 64 2d 77 69 6e 64 6f 77 20 77 69 6e 0a 20 20 20 20 ..(with-selected-window.win.....
247a0 20 20 20 20 20 20 28 73 63 72 6f 6c 6c 2d 75 70 2d 63 6f 6d 6d 61 6e 64 29 29 0a 20 20 20 20 20 ......(scroll-up-command))......
247c0 20 28 65 72 72 6f 72 20 6e 69 6c 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 62 65 .(error.nil))))..(defun.gptel-be
247e0 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 6f 6e 61 6c 20 5f ginning-of-response.(&optional._
24800 20 5f 20 61 72 67 29 0a 20 20 22 4d 6f 76 65 20 70 6f 69 6e 74 20 74 6f 20 74 68 65 20 62 65 67 ._.arg)..."Move.point.to.the.beg
24820 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 20 41 52 47 20 74 inning.of.the.LLM.response.ARG.t
24840 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 20 imes."...(interactive.(list.nil.
24860 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 78 nil......................(prefix
24880 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 72 -numeric-value.current-prefix-ar
248a0 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 6e 73 65 20 6e 69 g)))...(gptel-end-of-response.ni
248c0 6c 20 6e 69 6c 20 28 2d 20 28 6f 72 20 61 72 67 20 31 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 l.nil.(-.(or.arg.1))))..(defun.g
248e0 70 74 65 6c 2d 65 6e 64 2d 6f 66 2d 72 65 73 70 6f 6e 73 65 20 28 26 6f 70 74 69 6f 6e 61 6c 20 ptel-end-of-response.(&optional.
24900 5f 20 5f 20 61 72 67 29 0a 20 20 22 4d 6f 76 65 20 70 6f 69 6e 74 20 74 6f 20 74 68 65 20 65 6e _._.arg)..."Move.point.to.the.en
24920 64 20 6f 66 20 74 68 65 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 20 41 52 47 20 74 69 6d 65 73 2e d.of.the.LLM.response.ARG.times.
24940 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 20 28 6c 69 73 74 20 6e 69 6c 20 6e 69 6c 0a 20 "...(interactive.(list.nil.nil..
24960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 65 66 69 78 2d 6e 75 6d 65 ....................(prefix-nume
24980 72 69 63 2d 76 61 6c 75 65 20 63 75 72 72 65 6e 74 2d 70 72 65 66 69 78 2d 61 72 67 29 29 29 0a ric-value.current-prefix-arg))).
249a0 20 20 28 75 6e 6c 65 73 73 20 61 72 67 20 28 73 65 74 71 20 61 72 67 20 31 29 29 0a 20 20 28 6c ..(unless.arg.(setq.arg.1))...(l
249c0 65 74 20 28 28 73 65 61 72 63 68 20 28 69 66 20 28 3e 20 61 72 67 20 30 29 0a 20 20 20 20 20 20 et.((search.(if.(>.arg.0).......
249e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 27 74 65 78 74 2d 70 72 6f 70 65 72 74 79 2d 73 65 ..............#'text-property-se
24a00 61 72 63 68 2d 66 6f 72 77 61 72 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 arch-forward...................#
24a20 27 74 65 78 74 2d 70 72 6f 70 65 72 74 79 2d 73 65 61 72 63 68 2d 62 61 63 6b 77 61 72 64 29 29 'text-property-search-backward))
24a40 29 0a 20 20 20 20 28 64 6f 74 69 6d 65 73 20 28 5f 20 28 61 62 73 20 61 72 67 29 29 0a 20 20 20 ).....(dotimes.(_.(abs.arg))....
24a60 20 20 20 28 66 75 6e 63 61 6c 6c 20 73 65 61 72 63 68 20 27 67 70 74 65 6c 20 27 72 65 73 70 6f ...(funcall.search.'gptel.'respo
24a80 6e 73 65 20 74 29 0a 20 20 20 20 20 20 28 69 66 20 28 3e 20 61 72 67 20 30 29 0a 20 20 20 20 20 nse.t).......(if.(>.arg.0)......
24aa0 20 20 20 20 20 28 77 68 65 6e 20 28 6c 6f 6f 6b 69 6e 67 2d 61 74 20 28 63 6f 6e 63 61 74 20 22 .....(when.(looking-at.(concat."
24ac0 5c 6e 5c 5c 7b 31 2c 32 5c 5c 7d 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 \n\\{1,2\\}"....................
24ae0 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 20 .................(regexp-quote..
24b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
24b20 20 20 20 20 28 67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 70 72 65 66 69 78 2d 73 74 72 69 6e 67 29 ....(gptel-prompt-prefix-string)
24b40 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 )...............................
24b60 20 20 20 20 20 20 22 3f 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 ......"?")).............(goto-ch
24b80 61 72 20 28 6d 61 74 63 68 2d 65 6e 64 20 30 29 29 29 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e ar.(match-end.0))).........(when
24ba0 20 28 6c 6f 6f 6b 69 6e 67 2d 62 61 63 6b 20 28 63 6f 6e 63 61 74 20 28 72 65 67 65 78 70 2d 71 .(looking-back.(concat.(regexp-q
24bc0 75 6f 74 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 uote............................
24be0 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 70 72 65 66 69 78 ..........(gptel-response-prefix
24c00 2d 73 74 72 69 6e 67 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -string)).......................
24c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 3f 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 .............."?")..............
24c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 0a 20 20 20 20 ...............(point-min)).....
24c60 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
24c80 67 20 30 29 29 29 29 29 29 29 0a 0a 28 64 65 66 6d 61 63 72 6f 20 67 70 74 65 6c 2d 2d 61 74 2d g.0)))))))..(defmacro.gptel--at-
24ca0 77 6f 72 64 2d 65 6e 64 20 28 26 72 65 73 74 20 62 6f 64 79 29 0a 20 20 22 45 78 65 63 75 74 65 word-end.(&rest.body)..."Execute
24cc0 20 42 4f 44 59 20 61 74 20 65 6e 64 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 77 6f 72 64 .BODY.at.end.of.the.current.word
24ce0 20 6f 72 20 70 75 6e 63 74 75 61 74 69 6f 6e 2e 22 0a 20 20 60 28 73 61 76 65 2d 65 78 63 75 72 .or.punctuation."...`(save-excur
24d00 73 69 6f 6e 0a 20 20 20 20 20 28 73 6b 69 70 2d 73 79 6e 74 61 78 2d 66 6f 72 77 61 72 64 20 22 sion......(skip-syntax-forward."
24d20 77 2e 22 29 0a 20 20 20 20 20 2c 28 6d 61 63 72 6f 65 78 70 2d 70 72 6f 67 6e 20 62 6f 64 79 29 w.")......,(macroexp-progn.body)
24d40 29 29 0a 0a 28 64 65 66 6d 61 63 72 6f 20 67 70 74 65 6c 2d 2d 77 69 74 68 2d 62 75 66 66 65 72 ))..(defmacro.gptel--with-buffer
24d60 2d 63 6f 70 79 20 28 62 75 66 20 73 74 61 72 74 20 65 6e 64 20 26 72 65 73 74 20 62 6f 64 79 29 -copy.(buf.start.end.&rest.body)
24d80 0a 20 20 22 43 6f 70 79 20 67 70 74 65 6c 27 73 20 6c 6f 63 61 6c 20 76 61 72 69 61 62 6c 65 73 ..."Copy.gptel's.local.variables
24da0 20 66 72 6f 6d 20 42 55 46 20 74 6f 20 61 20 74 65 6d 70 20 62 75 66 66 65 72 20 61 6e 64 20 72 .from.BUF.to.a.temp.buffer.and.r
24dc0 75 6e 20 42 4f 44 59 2e 0a 0a 49 66 20 70 6f 73 69 74 69 6f 6e 73 20 53 54 41 52 54 20 61 6e 64 un.BODY...If.positions.START.and
24de0 20 45 4e 44 20 61 72 65 20 70 72 6f 76 69 64 65 64 2c 20 69 6e 73 65 72 74 20 74 68 61 74 20 70 .END.are.provided,.insert.that.p
24e00 61 72 74 20 6f 66 20 42 55 46 20 66 69 72 73 74 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 69 art.of.BUF.first."...(declare.(i
24e20 6e 64 65 6e 74 20 33 29 29 0a 20 20 60 28 77 69 74 68 2d 74 65 6d 70 2d 62 75 66 66 65 72 0a 20 ndent.3))...`(with-temp-buffer..
24e40 20 20 20 20 28 64 6f 6c 69 73 74 20 28 73 79 6d 20 27 28 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e ....(dolist.(sym.'(.gptel-backen
24e60 64 20 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 20 67 70 74 65 6c 2d 6d 6f d.gptel--system-message.gptel-mo
24e80 64 65 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 6d del......................gptel-m
24ea0 6f 64 65 20 67 70 74 65 6c 2d 74 72 61 63 6b 2d 72 65 73 70 6f 6e 73 65 20 67 70 74 65 6c 2d 74 ode.gptel-track-response.gptel-t
24ec0 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 20 rack-media......................
24ee0 67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 66 69 6c 74 65 72 2d 68 6f 6f 6b 29 29 0a 20 20 20 20 20 gptel-prompt-filter-hook))......
24f00 20 28 73 65 74 20 28 6d 61 6b 65 2d 6c 6f 63 61 6c 2d 76 61 72 69 61 62 6c 65 20 73 79 6d 29 0a .(set.(make-local-variable.sym).
24f20 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 73 79 6d 20 2c .......(buffer-local-value.sym.,
24f40 62 75 66 29 29 29 0a 20 20 20 20 20 2c 28 77 68 65 6e 20 28 61 6e 64 20 73 74 61 72 74 20 65 6e buf)))......,(when.(and.start.en
24f60 64 29 0a 20 20 20 20 20 20 20 60 28 69 6e 73 65 72 74 2d 62 75 66 66 65 72 2d 73 75 62 73 74 72 d)........`(insert-buffer-substr
24f80 69 6e 67 20 2c 62 75 66 20 2c 73 74 61 72 74 20 2c 65 6e 64 29 29 0a 20 20 20 20 20 28 6c 65 74 ing.,buf.,start.,end))......(let
24fa0 20 28 28 6d 61 6a 6f 72 2d 6d 6f 64 65 20 28 62 75 66 66 65 72 2d 6c 6f 63 61 6c 2d 76 61 6c 75 .((major-mode.(buffer-local-valu
24fc0 65 20 27 6d 61 6a 6f 72 2d 6d 6f 64 65 20 2c 62 75 66 29 29 29 0a 20 20 20 20 20 20 2c 40 62 6f e.'major-mode.,buf))).......,@bo
24fe0 64 79 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 70 72 65 66 69 dy)))..(defun.gptel-prompt-prefi
25000 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 73 65 x-string.()..."Prefix.before.use
25020 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 28 6f r.prompts.in.`gptel-mode'."...(o
25040 72 20 28 61 6c 69 73 74 2d 67 65 74 20 6d 61 6a 6f 72 2d 6d 6f 64 65 20 67 70 74 65 6c 2d 70 72 r.(alist-get.major-mode.gptel-pr
25060 6f 6d 70 74 2d 70 72 65 66 69 78 2d 61 6c 69 73 74 29 20 22 22 29 29 0a 0a 28 64 65 66 75 6e 20 ompt-prefix-alist).""))..(defun.
25080 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 70 72 65 66 69 78 2d 73 74 72 69 6e 67 20 28 29 0a gptel-response-prefix-string.().
250a0 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 6e 73 65 73 20 69 .."Prefix.before.LLM.responses.i
250c0 6e 20 60 67 70 74 65 6c 2d 6d 6f 64 65 27 2e 22 0a 20 20 28 6f 72 20 28 61 6c 69 73 74 2d 67 65 n.`gptel-mode'."...(or.(alist-ge
250e0 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 73 65 2d 70 72 65 66 t.major-mode.gptel-response-pref
25100 69 78 2d 61 6c 69 73 74 29 20 22 22 29 29 0a 0a 28 64 65 66 73 75 62 73 74 20 67 70 74 65 6c 2d ix-alist).""))..(defsubst.gptel-
25120 2d 74 72 69 6d 2d 70 72 65 66 69 78 65 73 20 28 73 29 0a 20 20 22 52 65 6d 6f 76 65 20 70 72 6f -trim-prefixes.(s)..."Remove.pro
25140 6d 70 74 2f 72 65 73 70 6f 6e 73 65 20 70 72 65 66 69 78 65 73 20 66 72 6f 6d 20 73 74 72 69 6e mpt/response.prefixes.from.strin
25160 67 20 53 2e 0a 0a 52 65 74 75 72 6e 20 6e 69 6c 20 69 66 20 73 74 72 69 6e 67 20 63 6f 6c 6c 61 g.S...Return.nil.if.string.colla
25180 70 73 65 73 20 74 6f 20 65 6d 70 74 79 20 73 74 72 69 6e 67 2e 22 0a 20 20 28 6c 65 74 2a 20 28 pses.to.empty.string."...(let*.(
251a0 28 74 72 69 6d 6d 65 64 20 28 73 74 72 69 6e 67 2d 74 72 69 6d 2d 6c 65 66 74 0a 20 20 20 20 20 (trimmed.(string-trim-left......
251c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 20 28 66 6f 72 6d 61 74 20 22 5b 5c 74 5c 72 5c 6e ..............s.(format."[\t\r\n
251e0 20 5d 2a 5c 5c 28 3f 3a 25 73 5c 5c 29 3f 5b 5c 74 5c 72 5c 6e 20 5d 2a 22 0a 20 20 20 20 20 20 .]*\\(?:%s\\)?[\t\r\n.]*".......
25200 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
25220 75 6f 74 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 uote............................
25240 20 20 20 28 67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 70 72 65 66 69 78 2d 73 74 72 69 6e 67 29 29 ...(gptel-prompt-prefix-string))
25260 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 74 72 69 6d 6d 65 64 20 28 73 74 72 69 6e 67 2d 74 72 )))..........(trimmed.(string-tr
25280 69 6d 2d 72 69 67 68 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 69 6d im-right....................trim
252a0 6d 65 64 20 28 66 6f 72 6d 61 74 20 22 5b 5c 74 5c 72 5c 6e 20 5d 2a 5c 5c 28 3f 3a 25 73 5c 5c med.(format."[\t\r\n.]*\\(?:%s\\
252c0 29 3f 5b 5c 74 5c 72 5c 6e 20 5d 2a 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 )?[\t\r\n.]*"...................
252e0 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 20 .................(regexp-quote..
25300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
25320 20 20 20 28 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 70 72 65 66 69 78 2d 73 74 72 69 6e 67 ...(gptel-response-prefix-string
25340 29 29 29 29 29 29 0a 20 20 20 20 28 75 6e 6c 65 73 73 20 28 73 74 72 69 6e 67 2d 65 6d 70 74 79 )))))).....(unless.(string-empty
25360 2d 70 20 74 72 69 6d 6d 65 64 29 0a 20 20 20 20 20 20 74 72 69 6d 6d 65 64 29 29 29 0a 0a 28 64 -p.trimmed).......trimmed)))..(d
25380 65 66 73 75 62 73 74 20 67 70 74 65 6c 2d 2d 6c 69 6e 6b 2d 73 74 61 6e 64 61 6c 6f 6e 65 2d 70 efsubst.gptel--link-standalone-p
253a0 20 28 62 65 67 20 65 6e 64 29 0a 20 20 22 52 65 74 75 72 6e 20 6e 6f 6e 2d 6e 69 6c 20 69 66 20 .(beg.end)..."Return.non-nil.if.
253c0 70 6f 73 69 74 69 6f 6e 73 20 42 45 47 20 61 6e 64 20 45 4e 44 20 61 72 65 20 69 73 6f 6c 61 74 positions.BEG.and.END.are.isolat
253e0 65 64 2e 0a 0a 54 68 69 73 20 6d 65 61 6e 73 20 74 68 65 20 65 78 74 65 6e 74 20 66 72 6f 6d 20 ed...This.means.the.extent.from.
25400 42 45 47 20 74 6f 20 45 4e 44 20 69 73 20 74 68 65 20 6f 6e 6c 79 20 6e 6f 6e 2d 77 68 69 74 65 BEG.to.END.is.the.only.non-white
25420 73 70 61 63 65 0a 63 6f 6e 74 65 6e 74 20 6f 6e 20 74 68 69 73 20 6c 69 6e 65 2e 22 0a 20 20 28 space.content.on.this.line."...(
25440 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 28 61 6e 64 20 28 3d 20 62 65 67 20 28 save-excursion.....(and.(=.beg.(
25460 70 72 6f 67 6e 20 28 67 6f 74 6f 2d 63 68 61 72 20 62 65 67 29 20 28 62 65 67 69 6e 6e 69 6e 67 progn.(goto-char.beg).(beginning
25480 2d 6f 66 2d 6c 69 6e 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -of-line).......................
254a0 20 28 73 6b 69 70 2d 63 68 61 72 73 2d 66 6f 72 77 61 72 64 20 22 5c 74 20 22 29 0a 20 20 20 20 .(skip-chars-forward."\t.").....
254c0 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 20 ...................(point)))....
254e0 20 20 20 20 20 20 28 3d 20 65 6e 64 20 28 70 72 6f 67 6e 20 28 67 6f 74 6f 2d 63 68 61 72 20 65 ......(=.end.(progn.(goto-char.e
25500 6e 64 29 20 28 65 6e 64 2d 6f 66 2d 6c 69 6e 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 nd).(end-of-line)...............
25520 20 20 20 20 20 20 20 20 20 28 73 6b 69 70 2d 63 68 61 72 73 2d 62 61 63 6b 77 61 72 64 20 22 5c .........(skip-chars-backward."\
25540 74 20 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6f 69 t.")........................(poi
25560 6e 74 29 29 29 29 29 29 0a 0a 28 64 65 66 76 61 72 2d 6c 6f 63 61 6c 20 67 70 74 65 6c 2d 2d 62 nt))))))..(defvar-local.gptel--b
25580 61 63 6b 65 6e 64 2d 6e 61 6d 65 20 6e 69 6c 0a 20 20 22 53 74 6f 72 65 20 74 6f 20 70 65 72 73 ackend-name.nil..."Store.to.pers
255a0 69 73 74 20 62 61 63 6b 65 6e 64 20 6e 61 6d 65 20 61 63 72 6f 73 73 20 45 6d 61 63 73 20 73 65 ist.backend.name.across.Emacs.se
255c0 73 73 69 6f 6e 73 2e 0a 0a 4e 6f 74 65 3a 20 43 68 61 6e 67 69 6e 67 20 74 68 69 73 20 76 61 72 ssions...Note:.Changing.this.var
255e0 69 61 62 6c 65 20 64 6f 65 73 20 6e 6f 74 20 61 66 66 65 63 74 20 67 70 74 65 6c 5c 5c 3d 27 73 iable.does.not.affect.gptel\\='s
25600 20 62 65 68 61 76 69 6f 72 0a 69 6e 20 61 6e 79 20 77 61 79 2e 22 29 0a 28 70 75 74 20 27 67 70 .behavior.in.any.way.").(put.'gp
25620 74 65 6c 2d 2d 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 20 27 73 61 66 65 2d 6c 6f 63 61 6c 2d 76 61 tel--backend-name.'safe-local-va
25640 72 69 61 62 6c 65 20 23 27 61 6c 77 61 79 73 29 0a 0a 3b 3b 3b 3b 20 4d 6f 64 65 6c 20 69 6e 74 riable.#'always)..;;;;.Model.int
25660 65 72 66 61 63 65 0a 3b 3b 20 4e 4f 54 45 3a 20 54 68 69 73 20 69 6e 74 65 72 66 61 63 65 20 77 erface.;;.NOTE:.This.interface.w
25680 6f 75 6c 64 20 62 65 20 73 69 6d 70 6c 65 72 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 61 73 20 ould.be.simpler.to.implement.as.
256a0 61 20 64 65 66 73 74 72 75 63 74 2e 20 20 42 75 74 20 74 68 65 6e 0a 3b 3b 20 75 73 65 72 73 20 a.defstruct...But.then.;;.users.
256c0 63 61 6e 6e 6f 74 20 73 65 74 20 60 67 70 74 65 6c 2d 6d 6f 64 65 6c 27 20 74 6f 20 61 20 73 79 cannot.set.`gptel-model'.to.a.sy
256e0 6d 62 6f 6c 2f 73 74 72 69 6e 67 20 64 69 72 65 63 74 6c 79 2c 20 6f 72 20 77 65 27 64 20 6e 65 mbol/string.directly,.or.we'd.ne
25700 65 64 0a 3b 3b 20 61 6e 6f 74 68 65 72 20 6d 61 70 20 66 72 6f 6d 20 74 68 65 73 65 20 73 79 6d ed.;;.another.map.from.these.sym
25720 62 6f 6c 73 20 74 6f 20 74 68 65 20 61 63 74 75 61 6c 20 6d 6f 64 65 6c 20 73 74 72 75 63 74 73 bols.to.the.actual.model.structs
25740 2e 0a 0a 28 64 65 66 73 75 62 73 74 20 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 6e 61 6d 65 20 28 ...(defsubst.gptel--model-name.(
25760 6d 6f 64 65 6c 29 0a 20 20 22 47 65 74 20 6e 61 6d 65 20 6f 66 20 67 70 74 65 6c 20 4d 4f 44 45 model)..."Get.name.of.gptel.MODE
25780 4c 2e 22 0a 20 20 28 67 70 74 65 6c 2d 2d 74 6f 2d 73 74 72 69 6e 67 20 6d 6f 64 65 6c 29 29 0a L."...(gptel--to-string.model)).
257a0 0a 28 64 65 66 73 75 62 73 74 20 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 63 61 70 61 62 69 6c 69 .(defsubst.gptel--model-capabili
257c0 74 69 65 73 20 28 6d 6f 64 65 6c 29 0a 20 20 22 47 65 74 20 4d 4f 44 45 4c 20 63 61 70 61 62 69 ties.(model)..."Get.MODEL.capabi
257e0 6c 69 74 69 65 73 2e 22 0a 20 20 28 67 65 74 20 6d 6f 64 65 6c 20 3a 63 61 70 61 62 69 6c 69 74 lities."...(get.model.:capabilit
25800 69 65 73 29 29 0a 0a 28 64 65 66 73 75 62 73 74 20 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 6d 69 ies))..(defsubst.gptel--model-mi
25820 6d 65 73 20 28 6d 6f 64 65 6c 29 0a 20 20 22 47 65 74 20 73 75 70 70 6f 72 74 65 64 20 6d 69 6d mes.(model)..."Get.supported.mim
25840 65 2d 74 79 70 65 73 20 66 6f 72 20 4d 4f 44 45 4c 2e 22 0a 20 20 28 67 65 74 20 6d 6f 64 65 6c e-types.for.MODEL."...(get.model
25860 20 3a 6d 69 6d 65 2d 74 79 70 65 73 29 29 0a 0a 28 64 65 66 73 75 62 73 74 20 67 70 74 65 6c 2d .:mime-types))..(defsubst.gptel-
25880 2d 6d 6f 64 65 6c 2d 63 61 70 61 62 6c 65 2d 70 20 28 63 61 70 20 26 6f 70 74 69 6f 6e 61 6c 20 -model-capable-p.(cap.&optional.
258a0 6d 6f 64 65 6c 29 0a 20 20 22 52 65 74 75 72 6e 20 6e 6f 6e 2d 6e 69 6c 20 69 66 20 4d 4f 44 45 model)..."Return.non-nil.if.MODE
258c0 4c 20 73 75 70 70 6f 72 74 73 20 63 61 70 61 62 69 6c 69 74 79 20 43 41 50 2e 22 0a 20 20 28 6d L.supports.capability.CAP."...(m
258e0 65 6d 71 20 63 61 70 20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 63 61 70 61 62 69 6c 69 74 69 emq.cap.(gptel--model-capabiliti
25900 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 20 6d 6f 64 65 6c 20 67 70 74 65 6c 2d es..............(or.model.gptel-
25920 6d 6f 64 65 6c 29 29 29 29 0a 0a 3b 3b 20 54 4f 44 4f 20 48 61 6e 64 6c 65 20 6d 6f 64 65 6c 20 model))))..;;.TODO.Handle.model.
25940 6d 69 6d 65 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e 73 20 6c 69 6b 65 20 22 69 6d 61 67 65 2f mime.specifications.like."image/
25960 2a 22 0a 28 64 65 66 73 75 62 73 74 20 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 6d 69 6d 65 2d 63 *".(defsubst.gptel--model-mime-c
25980 61 70 61 62 6c 65 2d 70 20 28 6d 69 6d 65 20 26 6f 70 74 69 6f 6e 61 6c 20 6d 6f 64 65 6c 29 0a apable-p.(mime.&optional.model).
259a0 20 20 22 52 65 74 75 72 6e 20 6e 6f 6e 20 6e 69 6c 20 69 66 20 4d 4f 44 45 4c 20 63 61 6e 20 75 .."Return.non.nil.if.MODEL.can.u
259c0 6e 64 65 72 73 74 61 6e 64 20 4d 49 4d 45 20 74 79 70 65 2e 22 0a 20 20 28 63 61 72 2d 73 61 66 nderstand.MIME.type."...(car-saf
259e0 65 20 28 6d 65 6d 62 65 72 20 6d 69 6d 65 20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 6d 69 6d e.(member.mime.(gptel--model-mim
25a00 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 6f 72 20 6d es.........................(or.m
25a20 6f 64 65 6c 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 29 29 29 29 29 0a 0a 28 64 65 66 73 75 62 73 74 odel.gptel-model)))))..(defsubst
25a40 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 28 6d 6f .gptel--model-request-params.(mo
25a60 64 65 6c 29 0a 20 20 22 47 65 74 20 6d 6f 64 65 6c 2d 73 70 65 63 69 66 69 63 20 72 65 71 75 65 del)..."Get.model-specific.reque
25a80 73 74 20 70 61 72 61 6d 65 74 65 72 73 20 66 6f 72 20 4d 4f 44 45 4c 2e 22 0a 20 20 28 67 65 74 st.parameters.for.MODEL."...(get
25aa0 20 6d 6f 64 65 6c 20 3a 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 29 29 0a 0a 3b 3b 3b 3b 20 46 .model.:request-params))..;;;;.F
25ac0 69 6c 65 20 68 61 6e 64 6c 69 6e 67 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 62 61 73 65 36 ile.handling.(defun.gptel--base6
25ae0 34 2d 65 6e 63 6f 64 65 20 28 66 69 6c 65 29 0a 20 20 22 45 6e 63 6f 64 65 20 46 49 4c 45 20 61 4-encode.(file)..."Encode.FILE.a
25b00 73 20 61 20 62 61 73 65 36 34 20 73 74 72 69 6e 67 2e 0a 0a 46 49 4c 45 20 69 73 20 61 73 73 75 s.a.base64.string...FILE.is.assu
25b20 6d 65 64 20 74 6f 20 65 78 69 73 74 20 61 6e 64 20 62 65 20 61 20 72 65 67 75 6c 61 72 20 66 69 med.to.exist.and.be.a.regular.fi
25b40 6c 65 2e 22 0a 20 20 28 77 69 74 68 2d 74 65 6d 70 2d 62 75 66 66 65 72 0a 20 20 20 20 28 69 6e le."...(with-temp-buffer.....(in
25b60 73 65 72 74 2d 66 69 6c 65 2d 63 6f 6e 74 65 6e 74 73 2d 6c 69 74 65 72 61 6c 6c 79 20 66 69 6c sert-file-contents-literally.fil
25b80 65 29 0a 20 20 20 20 28 62 61 73 65 36 34 2d 65 6e 63 6f 64 65 2d 72 65 67 69 6f 6e 20 28 70 6f e).....(base64-encode-region.(po
25ba0 69 6e 74 2d 6d 69 6e 29 20 28 70 6f 69 6e 74 2d 6d 61 78 29 0a 20 20 20 20 20 20 20 20 20 20 20 int-min).(point-max)............
25bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6e 6f 2d 6c 69 6e 65 2d 62 72 65 61 6b 29 0a 20 ...............:no-line-break)..
25be0 20 20 20 28 62 75 66 66 65 72 2d 73 74 72 69 6e 67 29 29 29 0a 0a 3b 3b 3b 3b 20 52 65 73 70 6f ...(buffer-string)))..;;;;.Respo
25c00 6e 73 65 20 74 65 78 74 20 72 65 63 6f 67 6e 69 74 69 6f 6e 0a 0a 28 64 65 66 75 6e 20 67 70 74 nse.text.recognition..(defun.gpt
25c20 65 6c 2d 2d 67 65 74 2d 62 75 66 66 65 72 2d 62 6f 75 6e 64 73 20 28 29 0a 20 20 22 52 65 74 75 el--get-buffer-bounds.()..."Retu
25c40 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 61 72 69 65 73 rn.the.gptel.response.boundaries
25c60 20 69 6e 20 74 68 65 20 62 75 66 66 65 72 20 61 73 20 61 6e 20 61 6c 69 73 74 2e 22 0a 20 20 28 .in.the.buffer.as.an.alist."...(
25c80 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 28 73 61 76 65 2d 72 65 73 74 72 69 63 save-excursion.....(save-restric
25ca0 74 69 6f 6e 0a 20 20 20 20 20 20 28 77 69 64 65 6e 29 0a 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 tion.......(widen).......(goto-c
25cc0 68 61 72 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 62 6f har.(point-max)).......(let.((bo
25ce0 75 6e 64 73 29 20 28 70 72 65 76 2d 70 74 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 20 20 20 unds).(prev-pt.(point)))........
25d00 20 28 77 68 69 6c 65 20 28 61 6e 64 20 28 2f 3d 20 70 72 65 76 2d 70 74 20 28 70 6f 69 6e 74 2d .(while.(and.(/=.prev-pt.(point-
25d20 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 28 67 6f 74 6f 2d min)).....................(goto-
25d40 63 68 61 72 20 28 70 72 65 76 69 6f 75 73 2d 73 69 6e 67 6c 65 2d 70 72 6f 70 65 72 74 79 2d 63 char.(previous-single-property-c
25d60 68 61 6e 67 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 hange...........................
25d80 20 20 20 20 20 20 28 70 6f 69 6e 74 29 20 27 67 70 74 65 6c 20 6e 69 6c 20 28 70 6f 69 6e 74 2d ......(point).'gptel.nil.(point-
25da0 6d 69 6e 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 70 min))))...........(when-let*.((p
25dc0 72 6f 70 20 28 67 65 74 2d 63 68 61 72 2d 70 72 6f 70 65 72 74 79 20 28 70 6f 69 6e 74 29 20 27 rop.(get-char-property.(point).'
25de0 67 70 74 65 6c 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 70 72 6f gptel))).............(let*.((pro
25e00 70 2d 6e 61 6d 65 20 28 69 66 20 28 73 79 6d 62 6f 6c 70 20 70 72 6f 70 29 20 70 72 6f 70 20 28 p-name.(if.(symbolp.prop).prop.(
25e20 63 61 72 20 70 72 6f 70 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 car.prop)))....................(
25e40 76 61 6c 20 28 77 68 65 6e 20 28 63 6f 6e 73 70 20 70 72 6f 70 29 20 28 63 64 72 20 70 72 6f 70 val.(when.(consp.prop).(cdr.prop
25e60 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 6f 75 6e 64 20 28 69 )))....................(bound.(i
25e80 66 20 76 61 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 f.val...........................
25ea0 20 20 20 20 28 6c 69 73 74 20 28 70 6f 69 6e 74 29 20 70 72 65 76 2d 70 74 20 76 61 6c 29 0a 20 ....(list.(point).prev-pt.val)..
25ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 ...........................(list
25ee0 20 28 70 6f 69 6e 74 29 20 70 72 65 76 2d 70 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 .(point).prev-pt))))............
25f00 20 20 20 28 70 75 73 68 20 62 6f 75 6e 64 20 28 61 6c 69 73 74 2d 67 65 74 20 70 72 6f 70 2d 6e ...(push.bound.(alist-get.prop-n
25f20 61 6d 65 20 62 6f 75 6e 64 73 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 70 ame.bounds))))...........(setq.p
25f40 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 62 6f 75 6e 64 73 29 rev-pt.(point))).........bounds)
25f60 29 29 29 0a 0a 28 64 65 66 69 6e 65 2d 6f 62 73 6f 6c 65 74 65 2d 66 75 6e 63 74 69 6f 6e 2d 61 )))..(define-obsolete-function-a
25f80 6c 69 61 73 0a 20 20 27 67 70 74 65 6c 2d 2d 67 65 74 2d 62 6f 75 6e 64 73 20 27 67 70 74 65 6c lias...'gptel--get-bounds.'gptel
25fa0 2d 2d 67 65 74 2d 72 65 73 70 6f 6e 73 65 2d 62 6f 75 6e 64 73 20 22 30 2e 39 2e 38 22 29 0a 0a --get-response-bounds."0.9.8")..
25fc0 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 67 65 74 2d 72 65 73 70 6f 6e 73 65 2d 62 6f 75 6e 64 (defun.gptel--get-response-bound
25fe0 73 20 28 29 0a 20 20 22 52 65 74 75 72 6e 20 74 68 65 20 67 70 74 65 6c 20 72 65 73 70 6f 6e 73 s.()..."Return.the.gptel.respons
26000 65 20 62 6f 75 6e 64 61 72 69 65 73 20 61 72 6f 75 6e 64 20 70 6f 69 6e 74 2e 22 0a 20 20 28 6c e.boundaries.around.point."...(l
26020 65 74 20 28 70 72 6f 70 29 0a 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 et.(prop).....(save-excursion...
26040 20 20 20 20 28 77 68 65 6e 20 28 74 65 78 74 2d 70 72 6f 70 65 72 74 79 2d 73 65 61 72 63 68 2d ....(when.(text-property-search-
26060 62 61 63 6b 77 61 72 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 27 67 70 74 65 6c 20 27 72 65 backward..............'gptel.'re
26080 73 70 6f 6e 73 65 20 74 29 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 73 65 74 71 20 70 72 sponse.t).........(when.(setq.pr
260a0 6f 70 20 28 74 65 78 74 2d 70 72 6f 70 65 72 74 79 2d 73 65 61 72 63 68 2d 66 6f 72 77 61 72 64 op.(text-property-search-forward
260c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 67 70 74 65 ...........................'gpte
260e0 6c 20 27 72 65 73 70 6f 6e 73 65 20 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 20 l.'response.t))...........(cons.
26100 28 70 72 6f 70 2d 6d 61 74 63 68 2d 62 65 67 69 6e 6e 69 6e 67 20 70 72 6f 70 29 0a 20 20 20 20 (prop-match-beginning.prop).....
26120 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 70 2d 6d 61 74 63 68 2d 65 6e 64 20 70 72 6f 70 ............(prop-match-end.prop
26140 29 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 69 6e 2d 72 65 73 70 6f 6e )))))))..(defun.gptel--in-respon
26160 73 65 2d 70 20 28 26 6f 70 74 69 6f 6e 61 6c 20 70 74 29 0a 20 20 22 43 68 65 63 6b 20 69 66 20 se-p.(&optional.pt)..."Check.if.
26180 70 6f 73 69 74 69 6f 6e 20 50 54 20 69 73 20 69 6e 73 69 64 65 20 61 20 67 70 74 65 6c 20 72 65 position.PT.is.inside.a.gptel.re
261a0 73 70 6f 6e 73 65 2e 22 0a 20 20 28 65 71 20 28 67 65 74 2d 63 68 61 72 2d 70 72 6f 70 65 72 74 sponse."...(eq.(get-char-propert
261c0 79 20 28 6f 72 20 70 74 20 28 70 6f 69 6e 74 29 29 20 27 67 70 74 65 6c 29 20 27 72 65 73 70 6f y.(or.pt.(point)).'gptel).'respo
261e0 6e 73 65 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 61 74 2d 72 65 73 70 6f 6e 73 65 nse))..(defun.gptel--at-response
26200 2d 68 69 73 74 6f 72 79 2d 70 20 28 26 6f 70 74 69 6f 6e 61 6c 20 70 74 29 0a 20 20 22 43 68 65 -history-p.(&optional.pt)..."Che
26220 63 6b 20 69 66 20 67 70 74 65 6c 20 72 65 73 70 6f 6e 73 65 20 61 74 20 70 6f 73 69 74 69 6f 6e ck.if.gptel.response.at.position
26240 20 50 54 20 68 61 73 20 76 61 72 69 61 6e 74 73 2e 22 0a 20 20 28 67 65 74 2d 63 68 61 72 2d 70 .PT.has.variants."...(get-char-p
26260 72 6f 70 65 72 74 79 20 28 6f 72 20 70 74 20 28 70 6f 69 6e 74 29 29 20 27 67 70 74 65 6c 2d 68 roperty.(or.pt.(point)).'gptel-h
26280 69 73 74 6f 72 79 29 29 0a 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d 2d 6d 6f 64 65 2d 64 65 istory))..(defvar.gptel--mode-de
262a0 73 63 72 69 70 74 69 6f 6e 2d 61 6c 69 73 74 0a 20 20 27 28 28 6a 73 32 2d 6d 6f 64 65 20 20 20 scription-alist...'((js2-mode...
262c0 20 20 20 2e 20 22 4a 61 76 61 73 63 72 69 70 74 22 29 0a 20 20 20 20 28 73 68 2d 6d 6f 64 65 20 ....."Javascript").....(sh-mode.
262e0 20 20 20 20 20 20 2e 20 22 53 68 65 6c 6c 22 29 0a 20 20 20 20 28 65 6e 68 2d 72 75 62 79 2d 6d ........"Shell").....(enh-ruby-m
26300 6f 64 65 20 2e 20 22 52 75 62 79 22 29 0a 20 20 20 20 28 79 61 6d 6c 2d 6d 6f 64 65 20 20 20 20 ode..."Ruby").....(yaml-mode....
26320 20 2e 20 22 59 61 6d 6c 22 29 0a 20 20 20 20 28 79 61 6d 6c 2d 74 73 2d 6d 6f 64 65 20 20 2e 20 ..."Yaml").....(yaml-ts-mode....
26340 22 59 61 6d 6c 22 29 0a 20 20 20 20 28 72 75 73 74 69 63 2d 6d 6f 64 65 20 20 20 2e 20 22 52 75 "Yaml").....(rustic-mode....."Ru
26360 73 74 22 29 29 0a 20 20 22 4d 61 70 70 69 6e 67 20 66 72 6f 6d 20 75 6e 63 6f 6e 76 65 6e 74 69 st"))..."Mapping.from.unconventi
26380 6f 6e 61 6c 6c 79 20 6e 61 6d 65 64 20 6d 61 6a 6f 72 20 6d 6f 64 65 73 20 74 6f 20 6c 61 6e 67 onally.named.major.modes.to.lang
263a0 75 61 67 65 73 2e 0a 0a 54 68 69 73 20 69 73 20 75 73 65 64 20 77 68 65 6e 20 67 65 6e 65 72 61 uages...This.is.used.when.genera
263c0 74 69 6e 67 20 73 79 73 74 65 6d 20 70 72 6f 6d 70 74 73 20 66 6f 72 20 72 65 77 72 69 74 69 6e ting.system.prompts.for.rewritin
263e0 67 20 61 6e 64 0a 77 68 65 6e 20 69 6e 63 6c 75 64 69 6e 67 20 63 6f 6e 74 65 78 74 20 66 72 6f g.and.when.including.context.fro
26400 6d 20 74 68 65 73 65 20 6d 61 6a 6f 72 20 6d 6f 64 65 73 2e 22 29 0a 0a 28 64 65 66 75 6e 20 67 m.these.major.modes.")..(defun.g
26420 70 74 65 6c 2d 2d 73 74 72 69 70 2d 6d 6f 64 65 2d 73 75 66 66 69 78 20 28 6d 6f 64 65 2d 73 79 ptel--strip-mode-suffix.(mode-sy
26440 6d 29 0a 20 20 22 52 65 6d 6f 76 65 20 74 68 65 20 2d 6d 6f 64 65 20 73 75 66 66 69 78 20 66 72 m)..."Remove.the.-mode.suffix.fr
26460 6f 6d 20 4d 4f 44 45 2d 53 59 4d 2e 0a 0a 4d 4f 44 45 2d 53 59 4d 20 69 73 20 74 79 70 69 63 61 om.MODE-SYM...MODE-SYM.is.typica
26480 6c 6c 79 20 61 20 6d 61 6a 6f 72 2d 6d 6f 64 65 20 73 79 6d 62 6f 6c 2e 22 0a 20 20 28 6f 72 20 lly.a.major-mode.symbol."...(or.
264a0 28 61 6c 69 73 74 2d 67 65 74 20 6d 6f 64 65 2d 73 79 6d 20 67 70 74 65 6c 2d 2d 6d 6f 64 65 2d (alist-get.mode-sym.gptel--mode-
264c0 64 65 73 63 72 69 70 74 69 6f 6e 2d 61 6c 69 73 74 29 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 description-alist).......(let.((
264e0 6d 6f 64 65 2d 6e 61 6d 65 20 28 74 68 72 65 61 64 2d 6c 61 73 74 0a 20 20 20 20 20 20 20 20 20 mode-name.(thread-last..........
26500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 6d 6f 64 ................(symbol-name.mod
26520 65 2d 73 79 6d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 e-sym)..........................
26540 28 73 74 72 69 6e 67 2d 72 65 6d 6f 76 65 2d 73 75 66 66 69 78 20 22 2d 6d 6f 64 65 22 29 0a 20 (string-remove-suffix."-mode")..
26560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 2d ........................(string-
26580 72 65 6d 6f 76 65 2d 73 75 66 66 69 78 20 22 2d 74 73 22 29 29 29 29 0a 20 20 20 20 20 20 20 20 remove-suffix."-ts")))).........
265a0 3b 3b 20 4e 4f 54 45 3a 20 54 68 65 20 61 64 76 65 72 74 69 73 65 64 20 63 61 6c 6c 69 6e 67 20 ;;.NOTE:.The.advertised.calling.
265c0 63 6f 6e 76 65 6e 74 69 6f 6e 20 6f 66 20 70 72 6f 76 69 64 65 64 2d 6d 6f 64 65 2d 64 65 72 69 convention.of.provided-mode-deri
265e0 76 65 64 2d 70 0a 20 20 20 20 20 20 20 20 3b 3b 20 68 61 73 20 63 68 61 6e 67 65 64 20 69 6e 20 ved-p.........;;.has.changed.in.
26600 45 6d 61 63 73 20 33 30 2c 20 74 68 69 73 20 6e 65 65 64 73 20 74 6f 20 62 65 20 75 70 64 61 74 Emacs.30,.this.needs.to.be.updat
26620 65 64 20 65 76 65 6e 74 75 61 6c 6c 79 0a 20 20 20 20 20 20 20 20 28 69 66 20 28 70 72 6f 76 69 ed.eventually.........(if.(provi
26640 64 65 64 2d 6d 6f 64 65 2d 64 65 72 69 76 65 64 2d 70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ded-mode-derived-p..............
26660 6d 6f 64 65 2d 73 79 6d 20 27 70 72 6f 67 2d 6d 6f 64 65 20 27 74 65 78 74 2d 6d 6f 64 65 20 27 mode-sym.'prog-mode.'text-mode.'
26680 74 65 78 2d 6d 6f 64 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 65 2d 6e 61 6d 65 20 tex-mode).............mode-name.
266a0 22 22 29 29 29 29 0a 0a 3b 3b 3b 3b 20 44 69 72 65 63 74 69 76 65 20 68 61 6e 64 6c 69 6e 67 0a ""))))..;;;;.Directive.handling.
266c0 0a 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 0a ..(defvar.gptel--system-message.
266e0 20 20 28 6f 72 20 28 61 6c 69 73 74 2d 67 65 74 20 27 64 65 66 61 75 6c 74 20 67 70 74 65 6c 2d ..(or.(alist-get.'default.gptel-
26700 64 69 72 65 63 74 69 76 65 73 29 0a 20 20 20 20 20 20 22 59 6f 75 20 61 72 65 20 61 20 6c 61 72 directives)......."You.are.a.lar
26720 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 61 63 ge.language.model.living.in.Emac
26740 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 70 6f s.and.a.helpful.assistant..Respo
26760 6e 64 20 63 6f 6e 63 69 73 65 6c 79 2e 22 29 0a 20 20 22 54 68 65 20 73 79 73 74 65 6d 20 6d 65 nd.concisely.")..."The.system.me
26780 73 73 61 67 65 20 75 73 65 64 20 62 79 20 67 70 74 65 6c 2e 22 29 0a 28 70 75 74 20 27 67 70 74 ssage.used.by.gptel.").(put.'gpt
267a0 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 20 27 73 61 66 65 2d 6c 6f 63 61 6c 2d 76 el--system-message.'safe-local-v
267c0 61 72 69 61 62 6c 65 20 23 27 61 6c 77 61 79 73 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d ariable.#'always)..(defun.gptel-
267e0 2d 64 65 73 63 72 69 62 65 2d 64 69 72 65 63 74 69 76 65 20 28 64 69 72 65 63 74 69 76 65 20 77 -describe-directive.(directive.w
26800 69 64 74 68 20 26 6f 70 74 69 6f 6e 61 6c 20 72 65 70 6c 61 63 65 6d 65 6e 74 29 0a 20 20 22 46 idth.&optional.replacement)..."F
26820 69 6e 64 20 64 65 73 63 72 69 70 74 69 6f 6e 20 66 6f 72 20 44 49 52 45 43 54 49 56 45 2c 20 74 ind.description.for.DIRECTIVE,.t
26840 72 75 6e 63 61 74 65 64 20 20 74 6f 20 57 49 44 54 48 2e 0a 0a 44 49 52 45 43 54 49 56 45 20 69 runcated..to.WIDTH...DIRECTIVE.i
26860 73 20 61 20 67 70 74 65 6c 20 64 69 72 65 63 74 69 76 65 2c 20 61 6e 64 20 63 61 6e 20 62 65 20 s.a.gptel.directive,.and.can.be.
26880 61 20 73 74 72 69 6e 67 2c 20 61 20 66 75 6e 63 74 69 6f 6e 0a 6f 72 20 61 20 6c 69 73 74 20 6f a.string,.a.function.or.a.list.o
268a0 66 20 73 74 72 69 6e 67 73 2e 20 20 53 65 65 20 60 67 70 74 65 6c 2d 64 69 72 65 63 74 69 76 65 f.strings...See.`gptel-directive
268c0 73 27 2e 0a 0a 54 68 65 20 72 65 73 75 6c 74 20 69 73 20 61 20 73 74 72 69 6e 67 20 69 6e 74 65 s'...The.result.is.a.string.inte
268e0 6e 64 65 64 20 66 6f 72 20 64 69 73 70 6c 61 79 2e 20 20 4e 65 77 6c 69 6e 65 73 20 61 72 65 0a nded.for.display...Newlines.are.
26900 72 65 70 6c 61 63 65 64 20 77 69 74 68 20 52 45 50 4c 41 43 45 4d 45 4e 54 2e 22 0a 20 20 28 63 replaced.with.REPLACEMENT."...(c
26920 6c 2d 74 79 70 65 63 61 73 65 20 64 69 72 65 63 74 69 76 65 0a 20 20 20 20 28 73 74 72 69 6e 67 l-typecase.directive.....(string
26940 0a 20 20 20 20 20 28 63 6f 6e 63 61 74 0a 20 20 20 20 20 20 28 73 74 72 69 6e 67 2d 72 65 70 6c ......(concat.......(string-repl
26960 61 63 65 20 22 5c 6e 22 20 28 6f 72 20 72 65 70 6c 61 63 65 6d 65 6e 74 20 22 20 22 29 0a 20 20 ace."\n".(or.replacement.".")...
26980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 72 75 6e 63 61 74 65 2d 73 74 ....................(truncate-st
269a0 72 69 6e 67 2d 74 6f 2d 77 69 64 74 68 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ring-to-width...................
269c0 20 20 20 20 20 64 69 72 65 63 74 69 76 65 20 77 69 64 74 68 20 6e 69 6c 20 6e 69 6c 20 74 29 29 .....directive.width.nil.nil.t))
269e0 29 29 0a 20 20 20 20 28 66 75 6e 63 74 69 6f 6e 0a 20 20 20 20 20 28 63 6f 6e 63 61 74 0a 20 20 )).....(function......(concat...
26a00 20 20 20 20 22 ce bb 3a 20 22 0a 20 20 20 20 20 20 28 73 74 72 69 6e 67 2d 72 65 70 6c 61 63 65 ...."..:.".......(string-replace
26a20 0a 20 20 20 20 20 20 20 22 5c 6e 22 20 28 6f 72 20 72 65 70 6c 61 63 65 6d 65 6e 74 20 22 20 22 ........"\n".(or.replacement."."
26a40 29 0a 20 20 20 20 20 20 20 28 74 72 75 6e 63 61 74 65 2d 73 74 72 69 6e 67 2d 74 6f 2d 77 69 64 )........(truncate-string-to-wid
26a60 74 68 0a 20 20 20 20 20 20 20 20 28 6f 72 20 28 61 6e 64 2d 6c 65 74 2a 20 28 28 64 6f 63 20 28 th.........(or.(and-let*.((doc.(
26a80 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 64 69 72 65 63 74 69 76 65 29 29 29 0a 20 20 20 20 20 documentation.directive)))......
26aa0 20 20 20 20 20 20 20 20 20 28 73 75 62 73 74 72 69 6e 67 20 64 6f 63 20 6e 69 6c 20 28 73 74 72 .........(substring.doc.nil.(str
26ac0 69 6e 67 2d 6d 61 74 63 68 2d 70 20 22 5c 6e 22 20 64 6f 63 29 29 29 0a 20 20 20 20 20 20 20 20 ing-match-p."\n".doc))).........
26ae0 20 20 20 20 22 5b 44 79 6e 61 6d 69 63 61 6c 6c 79 20 67 65 6e 65 72 61 74 65 64 3b 20 6e 6f 20 ...."[Dynamically.generated;.no.
26b00 70 72 65 76 69 65 77 20 61 76 61 69 6c 61 62 6c 65 5d 22 29 0a 20 20 20 20 20 20 20 20 77 69 64 preview.available]").........wid
26b20 74 68 20 6e 69 6c 20 6e 69 6c 20 74 29 29 29 29 0a 20 20 20 20 28 6c 69 73 74 20 28 61 6e 64 2d th.nil.nil.t)))).....(list.(and-
26b40 6c 65 74 2a 20 28 28 66 72 6f 6d 2d 74 65 6d 70 6c 61 74 65 20 28 63 61 72 20 64 69 72 65 63 74 let*.((from-template.(car.direct
26b60 69 76 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 64 65 73 63 72 ive))).............(gptel--descr
26b80 69 62 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 66 72 6f 6d 2d ibe-directive..............from-
26ba0 74 65 6d 70 6c 61 74 65 20 77 69 64 74 68 29 29 29 0a 20 20 20 20 28 74 20 22 22 29 29 29 0a 0a template.width))).....(t."")))..
26bc0 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 64 69 72 65 63 74 69 76 65 20 28 64 (defun.gptel--parse-directive.(d
26be0 69 72 65 63 74 69 76 65 20 26 6f 70 74 69 6f 6e 61 6c 20 72 61 77 29 0a 20 20 22 50 61 72 73 65 irective.&optional.raw)..."Parse
26c00 20 44 49 52 45 43 54 49 56 45 20 69 6e 74 6f 20 61 20 62 61 63 6b 65 6e 64 2d 61 70 70 72 6f 70 .DIRECTIVE.into.a.backend-approp
26c20 72 69 61 74 65 20 66 6f 72 6d 2e 0a 0a 44 49 52 45 43 54 49 56 45 20 69 73 20 61 20 67 70 74 65 riate.form...DIRECTIVE.is.a.gpte
26c40 6c 20 64 69 72 65 63 74 69 76 65 3a 20 69 74 20 63 61 6e 20 62 65 20 61 20 73 74 72 69 6e 67 2c l.directive:.it.can.be.a.string,
26c60 20 61 20 6c 69 73 74 20 6f 72 20 61 0a 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 72 65 74 75 72 .a.list.or.a.function.that.retur
26c80 6e 73 20 65 69 74 68 65 72 2c 20 73 65 65 20 60 67 70 74 65 6c 2d 64 69 72 65 63 74 69 76 65 73 ns.either,.see.`gptel-directives
26ca0 27 2e 0a 0a 52 65 74 75 72 6e 20 61 20 63 6f 6e 73 20 63 65 6c 6c 20 63 6f 6e 73 69 73 74 69 6e '...Return.a.cons.cell.consistin
26cc0 67 20 6f 66 20 74 68 65 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 20 28 61 20 73 74 72 69 6e g.of.the.system.message.(a.strin
26ce0 67 29 0a 61 6e 64 20 61 20 74 65 6d 70 6c 61 74 65 20 63 6f 6e 73 69 73 74 69 6e 67 20 6f 66 20 g).and.a.template.consisting.of.
26d00 61 6c 74 65 72 6e 61 74 69 6e 67 20 75 73 65 72 2f 4c 4c 4d 0a 72 65 63 6f 72 64 73 20 28 61 20 alternating.user/LLM.records.(a.
26d20 6c 69 73 74 20 6f 66 20 73 74 72 69 6e 67 73 20 6f 72 20 6e 69 6c 29 2e 0a 0a 49 66 20 52 41 57 list.of.strings.or.nil)...If.RAW
26d40 20 69 73 20 6e 6f 6e 2d 6e 69 6c 2c 20 74 68 65 20 75 73 65 72 2f 4c 4c 4d 20 72 65 63 6f 72 64 .is.non-nil,.the.user/LLM.record
26d60 73 20 61 72 65 20 6e 6f 74 20 70 72 6f 63 65 73 73 65 64 20 61 6e 64 20 61 72 65 0a 72 65 74 75 s.are.not.processed.and.are.retu
26d80 72 6e 65 64 20 61 73 20 61 20 6c 69 73 74 20 6f 66 20 73 74 72 69 6e 67 73 2e 22 0a 20 20 28 61 rned.as.a.list.of.strings."...(a
26da0 6e 64 20 64 69 72 65 63 74 69 76 65 0a 20 20 20 20 20 20 20 28 63 6c 2d 65 74 79 70 65 63 61 73 nd.directive........(cl-etypecas
26dc0 65 20 64 69 72 65 63 74 69 76 65 0a 20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 20 20 20 28 e.directive..........(string...(
26de0 6c 69 73 74 20 64 69 72 65 63 74 69 76 65 29 29 0a 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 74 list.directive))..........(funct
26e00 69 6f 6e 20 28 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 64 69 72 65 63 74 69 76 65 20 28 66 75 6e ion.(gptel--parse-directive.(fun
26e20 63 61 6c 6c 20 64 69 72 65 63 74 69 76 65 29 20 72 61 77 29 29 0a 20 20 20 20 20 20 20 20 20 28 call.directive).raw))..........(
26e40 63 6f 6e 73 20 20 20 20 20 28 69 66 20 72 61 77 20 64 69 72 65 63 74 69 76 65 0a 20 20 20 20 20 cons.....(if.raw.directive......
26e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 20 28 63 61 72 20 64 69 72 65 63 ................(cons.(car.direc
26e80 74 69 76 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 tive)...........................
26ea0 20 28 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 .(gptel--parse-list.............
26ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 28 63 ................gptel-backend.(c
26ee0 64 72 20 64 69 72 65 63 74 69 76 65 29 29 29 29 29 29 29 29 0a 0a 0a 0c 0a 3b 3b 3b 20 4c 6f 67 dr.directive)))))))).....;;;.Log
26f00 67 69 6e 67 0a 0a 28 64 65 66 63 6f 6e 73 74 20 67 70 74 65 6c 2d 2d 6c 6f 67 2d 62 75 66 66 65 ging..(defconst.gptel--log-buffe
26f20 72 2d 6e 61 6d 65 20 22 2a 67 70 74 65 6c 2d 6c 6f 67 2a 22 0a 20 20 22 4c 6f 67 20 62 75 66 66 r-name."*gptel-log*"..."Log.buff
26f40 65 72 20 66 6f 72 20 67 70 74 65 6c 2e 22 29 0a 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 er.for.gptel.")..(declare-functi
26f60 6f 6e 20 6a 73 6f 6e 2d 70 72 65 74 74 79 2d 70 72 69 6e 74 20 22 6a 73 6f 6e 22 29 0a 0a 28 64 on.json-pretty-print."json")..(d
26f80 65 66 75 6e 20 67 70 74 65 6c 2d 2d 6c 6f 67 20 28 64 61 74 61 20 26 6f 70 74 69 6f 6e 61 6c 20 efun.gptel--log.(data.&optional.
26fa0 74 79 70 65 20 6e 6f 2d 6a 73 6f 6e 29 0a 20 20 22 4c 6f 67 20 44 41 54 41 20 74 6f 20 60 67 70 type.no-json)..."Log.DATA.to.`gp
26fc0 74 65 6c 2d 2d 6c 6f 67 2d 62 75 66 66 65 72 2d 6e 61 6d 65 27 2e 0a 0a 54 59 50 45 20 69 73 20 tel--log-buffer-name'...TYPE.is.
26fe0 61 20 6c 61 62 65 6c 20 66 6f 72 20 64 61 74 61 20 62 65 69 6e 67 20 6c 6f 67 67 65 64 2e 20 20 a.label.for.data.being.logged...
27000 44 41 54 41 20 69 73 20 61 73 73 75 6d 65 64 20 74 6f 20 62 65 0a 56 61 6c 69 64 20 4a 53 4f 4e DATA.is.assumed.to.be.Valid.JSON
27020 20 75 6e 6c 65 73 73 20 4e 4f 2d 4a 53 4f 4e 20 69 73 20 74 2e 22 0a 20 20 28 77 69 74 68 2d 63 .unless.NO-JSON.is.t."...(with-c
27040 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 67 65 74 2d 62 75 66 66 65 72 2d 63 72 65 61 74 65 urrent-buffer.(get-buffer-create
27060 20 67 70 74 65 6c 2d 2d 6c 6f 67 2d 62 75 66 66 65 72 2d 6e 61 6d 65 29 0a 20 20 20 20 28 6c 65 .gptel--log-buffer-name).....(le
27080 74 20 28 28 70 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 29 29 0a t.((p.(goto-char.(point-max)))).
270a0 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 62 6f 62 70 29 20 28 69 6e 73 65 72 74 20 22 5c 6e ......(unless.(bobp).(insert."\n
270c0 22 29 29 0a 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 28 66 6f 72 6d 61 74 20 22 7b 5c 22 67 70 ")).......(insert.(format."{\"gp
270e0 74 65 6c 5c 22 3a 20 5c 22 25 73 5c 22 2c 20 22 20 28 6f 72 20 74 79 70 65 20 22 6e 6f 6e 65 22 tel\":.\"%s\",.".(or.type."none"
27100 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 2d 74 69 6d 65 2d 73 74 ))...............(format-time-st
27120 72 69 6e 67 20 22 5c 22 74 69 6d 65 73 74 61 6d 70 5c 22 3a 20 5c 22 25 59 2d 25 6d 2d 25 64 20 ring."\"timestamp\":.\"%Y-%m-%d.
27140 25 48 3a 25 4d 3a 25 53 5c 22 7d 5c 6e 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 61 %H:%M:%S\"}\n")...............da
27160 74 61 29 0a 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 6e 6f 2d 6a 73 6f 6e 20 28 69 67 6e 6f 72 ta).......(unless.no-json.(ignor
27180 65 2d 65 72 72 6f 72 73 20 28 6a 73 6f 6e 2d 70 72 65 74 74 79 2d 70 72 69 6e 74 20 70 20 28 70 e-errors.(json-pretty-print.p.(p
271a0 6f 69 6e 74 29 29 29 29 29 29 29 0a 0a 0c 0a 3b 3b 3b 20 53 61 76 69 6e 67 20 61 6e 64 20 72 65 oint)))))))....;;;.Saving.and.re
271c0 73 74 6f 72 69 6e 67 20 73 74 61 74 65 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 72 65 73 storing.state..(defun.gptel--res
271e0 74 6f 72 65 2d 70 72 6f 70 73 20 28 62 6f 75 6e 64 73 2d 61 6c 69 73 74 29 0a 20 20 22 52 65 73 tore-props.(bounds-alist)..."Res
27200 74 6f 72 65 20 74 65 78 74 20 70 72 6f 70 65 72 74 69 65 73 20 66 72 6f 6d 20 42 4f 55 4e 44 53 tore.text.properties.from.BOUNDS
27220 2d 41 4c 49 53 54 2e 0a 42 4f 55 4e 44 53 2d 41 4c 49 53 54 20 69 73 20 28 50 52 4f 50 20 2e 20 -ALIST..BOUNDS-ALIST.is.(PROP...
27240 42 4f 55 4e 44 53 29 2e 20 20 42 4f 55 4e 44 53 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 42 4f BOUNDS)...BOUNDS.is.a.list.of.BO
27260 55 4e 44 2e 20 20 45 61 63 68 20 42 4f 55 4e 44 0a 69 73 20 65 69 74 68 65 72 20 28 42 45 47 20 UND...Each.BOUND.is.either.(BEG.
27280 45 4e 44 20 56 41 4c 29 20 6f 72 20 28 42 45 47 20 45 4e 44 29 2e 0a 0a 46 6f 72 20 28 42 45 47 END.VAL).or.(BEG.END)...For.(BEG
272a0 20 45 4e 44 20 56 41 4c 29 20 66 6f 72 6d 73 2c 20 65 76 65 6e 20 69 66 20 56 41 4c 20 69 73 20 .END.VAL).forms,.even.if.VAL.is.
272c0 6e 69 6c 2c 20 74 68 65 20 67 70 74 65 6c 20 70 72 6f 70 65 72 74 79 20 77 69 6c 6c 20 62 65 0a nil,.the.gptel.property.will.be.
272e0 73 65 74 20 74 6f 20 28 50 52 4f 50 20 2e 20 56 41 4c 29 2e 20 20 46 6f 72 20 28 42 45 47 20 45 set.to.(PROP...VAL)...For.(BEG.E
27300 4e 44 29 20 66 6f 72 6d 73 2c 20 65 78 63 65 70 74 20 77 68 65 6e 20 50 52 4f 50 20 69 73 20 72 ND).forms,.except.when.PROP.is.r
27320 65 73 70 6f 6e 73 65 2c 0a 74 68 65 20 67 70 74 65 6c 20 70 72 6f 70 65 72 74 79 20 69 73 20 73 esponse,.the.gptel.property.is.s
27340 65 74 20 74 6f 20 6a 75 73 74 20 50 52 4f 50 2e 0a 0a 54 68 65 20 6c 65 67 61 63 79 20 73 74 72 et.to.just.PROP...The.legacy.str
27360 75 63 74 75 72 65 2c 20 61 20 6c 69 73 74 20 6f 66 20 28 42 45 47 20 2e 20 45 4e 44 29 20 69 73 ucture,.a.list.of.(BEG...END).is
27380 20 61 6c 73 6f 20 73 75 70 70 6f 72 74 65 64 20 61 6e 64 20 77 69 6c 6c 20 62 65 0a 61 70 70 6c .also.supported.and.will.be.appl
273a0 69 65 64 20 62 65 66 6f 72 65 20 62 65 69 6e 67 20 72 65 2d 70 65 72 73 69 73 74 65 64 20 69 6e ied.before.being.re-persisted.in
273c0 20 74 68 65 20 6e 65 77 20 73 74 72 75 63 74 75 72 65 2e 22 0a 20 20 28 69 66 20 28 73 79 6d 62 .the.new.structure."...(if.(symb
273e0 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 28 olp.(caar.bounds-alist)).......(
27400 6d 61 70 63 0a 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 62 6f 75 6e 64 73 29 0a 20 20 20 mapc........(lambda.(bounds)....
27420 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 75 6e 64 73 29 29 ......(let*.((prop.(pop.bounds))
27440 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 70 63 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 )............(mapc.............(
27460 6c 61 6d 62 64 61 20 28 62 6f 75 6e 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 lambda.(bound)...............(le
27480 74 20 28 28 70 72 6f 70 2d 68 61 73 2d 76 61 6c 20 28 3e 20 28 6c 65 6e 67 74 68 20 62 6f 75 6e t.((prop-has-val.(>.(length.boun
274a0 64 29 20 32 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 64 64 2d 74 65 78 d).2))).................(add-tex
274c0 74 2d 70 72 6f 70 65 72 74 69 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 t-properties..................(p
274e0 6f 70 20 62 6f 75 6e 64 29 20 28 70 6f 70 20 62 6f 75 6e 64 29 0a 20 20 20 20 20 20 20 20 20 20 op.bound).(pop.bound)...........
27500 20 20 20 20 20 20 20 28 69 66 20 28 65 71 20 70 72 6f 70 20 27 72 65 73 70 6f 6e 73 65 29 0a 20 .......(if.(eq.prop.'response)..
27520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 28 67 70 74 65 6c 20 72 65 73 70 ....................'(gptel.resp
27540 6f 6e 73 65 20 66 72 6f 6e 74 2d 73 74 69 63 6b 79 20 28 67 70 74 65 6c 29 29 0a 20 20 20 20 20 onse.front-sticky.(gptel))......
27560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 27 67 70 74 65 6c 0a 20 20 20 20 20 ..............(list.'gptel......
27580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 70 72 6f 70 2d 68 61 73 ....................(if.prop-has
275a0 2d 76 61 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -val............................
275c0 20 20 28 63 6f 6e 73 20 70 72 6f 70 20 28 70 6f 70 20 62 6f 75 6e 64 29 29 0a 20 20 20 20 20 20 ..(cons.prop.(pop.bound)).......
275e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 70 29 29 29 29 29 29 0a .....................prop)))))).
27600 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 75 6e 64 73 29 29 29 0a 20 20 20 20 20 20 20 62 6f 75 ............bounds)))........bou
27620 6e 64 73 2d 61 6c 69 73 74 29 0a 20 20 20 20 28 6d 61 70 63 20 28 6c 61 6d 62 64 61 20 28 62 6f nds-alist).....(mapc.(lambda.(bo
27640 75 6e 64 29 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 und).............(add-text-prope
27660 72 74 69 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 61 72 20 62 6f 75 6e 64 29 20 28 rties..............(car.bound).(
27680 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 65 20 66 72 6f 6e cdr.bound).'(gptel.response.fron
276a0 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 20 20 20 20 62 6f t-sticky.(gptel))))...........bo
276c0 75 6e 64 73 2d 61 6c 69 73 74 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 72 65 73 unds-alist)))..(defun.gptel--res
276e0 74 6f 72 65 2d 73 74 61 74 65 20 28 29 0a 20 20 22 52 65 73 74 6f 72 65 20 67 70 74 65 6c 20 73 tore-state.()..."Restore.gptel.s
27700 74 61 74 65 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 tate.when.turning.on.`gptel-mode
27720 27 2e 22 0a 20 20 28 77 68 65 6e 20 28 62 75 66 66 65 72 2d 66 69 6c 65 2d 6e 61 6d 65 29 0a 20 '."...(when.(buffer-file-name)..
27740 20 20 20 28 69 66 20 28 64 65 72 69 76 65 64 2d 6d 6f 64 65 2d 70 20 27 6f 72 67 2d 6d 6f 64 65 ...(if.(derived-mode-p.'org-mode
27760 29 0a 20 20 20 20 20 20 20 20 28 70 72 6f 67 6e 0a 20 20 20 20 20 20 20 20 20 20 28 72 65 71 75 ).........(progn...........(requ
27780 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 20 28 67 70 74 65 6c ire.'gptel-org)...........(gptel
277a0 2d 6f 72 67 2d 2d 72 65 73 74 6f 72 65 2d 73 74 61 74 65 29 29 0a 20 20 20 20 20 20 28 77 68 65 -org--restore-state)).......(whe
277c0 6e 20 67 70 74 65 6c 2d 2d 62 6f 75 6e 64 73 0a 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d n.gptel--bounds.........(gptel--
277e0 72 65 73 74 6f 72 65 2d 70 72 6f 70 73 20 67 70 74 65 6c 2d 2d 62 6f 75 6e 64 73 29 0a 20 20 20 restore-props.gptel--bounds)....
27800 20 20 20 20 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 74 6f 72 .....(message."gptel.chat.restor
27820 65 64 2e 22 29 29 0a 20 20 20 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 2d 62 61 63 6b 65 6e ed.")).......(when.gptel--backen
27840 64 2d 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 28 69 66 2d 6c 65 74 2a 20 28 28 62 61 63 6b 65 6e d-name.........(if-let*.((backen
27860 64 20 28 61 6c 69 73 74 2d 67 65 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 d.(alist-get....................
27880 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 2d 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 20 67 70 74 .........gptel--backend-name.gpt
278a0 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..............
278c0 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 29 ...............nil.nil.#'equal))
278e0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 2d 6c 6f 63 61 6c 20 67 70 74 65 6c 2d ).............(setq-local.gptel-
27900 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 28 6d 65 73 73 backend.backend)...........(mess
27920 61 67 65 0a 20 20 20 20 20 20 20 20 20 20 20 28 73 75 62 73 74 69 74 75 74 65 2d 63 6f 6d 6d 61 age............(substitute-comma
27940 6e 64 2d 6b 65 79 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 0a 20 20 20 20 nd-keys.............(concat.....
27960 20 20 20 20 20 20 20 20 20 22 43 6f 75 6c 64 20 6e 6f 74 20 61 63 74 69 76 61 74 65 20 67 70 74 ........."Could.not.activate.gpt
27980 65 6c 20 62 61 63 6b 65 6e 64 20 5c 22 25 73 5c 22 21 20 20 22 0a 20 20 20 20 20 20 20 20 20 20 el.backend.\"%s\"!.."...........
279a0 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
279c0 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]".
279e0 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 67 20 67 70 74 65 .............".before.using.gpte
27a00 6c 2e 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 2d 62 61 63 6b 65 6e 64 2d l."))............gptel--backend-
27a20 6e 61 6d 65 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 73 61 76 65 2d 73 name))))))..(defun.gptel--save-s
27a40 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 65 tate.()..."Write.the.gptel.state
27a60 20 74 6f 20 74 68 65 20 62 75 66 66 65 72 2e 0a 0a 54 68 69 73 20 73 61 76 65 73 20 63 68 61 74 .to.the.buffer...This.saves.chat
27a80 20 6d 65 74 61 64 61 74 61 20 77 68 65 6e 20 77 72 69 74 69 6e 67 20 74 68 65 20 62 75 66 66 65 .metadata.when.writing.the.buffe
27aa0 72 20 74 6f 20 64 69 73 6b 2e 20 20 54 6f 0a 72 65 73 74 6f 72 65 20 61 20 63 68 61 74 20 73 65 r.to.disk...To.restore.a.chat.se
27ac0 73 73 69 6f 6e 2c 20 74 75 72 6e 20 6f 6e 20 60 67 70 74 65 6c 2d 6d 6f 64 65 27 20 61 66 74 65 ssion,.turn.on.`gptel-mode'.afte
27ae0 72 20 6f 70 65 6e 69 6e 67 20 74 68 65 0a 66 69 6c 65 2e 22 0a 20 20 28 72 75 6e 2d 68 6f 6f 6b r.opening.the.file."...(run-hook
27b00 73 20 27 67 70 74 65 6c 2d 73 61 76 65 2d 73 74 61 74 65 2d 68 6f 6f 6b 29 0a 20 20 28 69 66 20 s.'gptel-save-state-hook)...(if.
27b20 28 64 65 72 69 76 65 64 2d 6d 6f 64 65 2d 70 20 27 6f 72 67 2d 6d 6f 64 65 29 0a 20 20 20 20 20 (derived-mode-p.'org-mode)......
27b40 20 28 70 72 6f 67 6e 0a 20 20 20 20 20 20 20 20 28 72 65 71 75 69 72 65 20 27 67 70 74 65 6c 2d .(progn.........(require.'gptel-
27b60 6f 72 67 29 0a 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 6f 72 67 2d 2d 73 61 76 65 2d 73 74 org).........(gptel-org--save-st
27b80 61 74 65 29 29 0a 20 20 20 20 28 6c 65 74 20 28 28 70 72 69 6e 74 2d 65 73 63 61 70 65 2d 6e 65 ate)).....(let.((print-escape-ne
27ba0 77 6c 69 6e 65 73 20 74 29 29 0a 20 20 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e wlines.t)).......(save-excursion
27bc0 0a 20 20 20 20 20 20 20 20 28 73 61 76 65 2d 72 65 73 74 72 69 63 74 69 6f 6e 0a 20 20 20 20 20 .........(save-restriction......
27be0 20 20 20 20 20 28 61 64 64 2d 66 69 6c 65 2d 6c 6f 63 61 6c 2d 76 61 72 69 61 62 6c 65 20 27 67 .....(add-file-local-variable.'g
27c00 70 74 65 6c 2d 6d 6f 64 65 6c 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 29 0a 20 20 20 20 20 20 20 20 ptel-model.gptel-model).........
27c20 20 20 28 61 64 64 2d 66 69 6c 65 2d 6c 6f 63 61 6c 2d 76 61 72 69 61 62 6c 65 20 27 67 70 74 65 ..(add-file-local-variable.'gpte
27c40 6c 2d 2d 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 l--backend-name.................
27c60 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 61 63 6b 65 6e ...................(gptel-backen
27c80 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 20 20 20 d-name.gptel-backend))..........
27ca0 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 6c 75 65 20 27 .(unless.(equal.(default-value.'
27cc0 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 6d 70 65 72 61 gptel-temperature).gptel-tempera
27ce0 74 75 72 65 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 ture).............(add-file-loca
27d00 6c 2d 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 65 20 67 70 l-variable.'gptel-temperature.gp
27d20 74 65 6c 2d 74 65 6d 70 65 72 61 74 75 72 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c tel-temperature))...........(unl
27d40 65 73 73 20 28 65 71 75 61 6c 20 28 64 65 66 61 75 6c 74 2d 76 61 6c 75 65 20 27 67 70 74 65 6c ess.(equal.(default-value.'gptel
27d60 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 --system-message)...............
27d80 20 20 20 20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 .............gptel--system-messa
27da0 67 65 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 2d ge).............(add-file-local-
27dc0 76 61 72 69 61 62 6c 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 27 67 70 74 65 6c 2d 2d 73 79 variable..............'gptel--sy
27de0 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 28 63 61 72 2d 73 stem-message..............(car-s
27e00 61 66 65 20 28 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 64 69 72 65 63 74 69 76 65 20 67 70 74 65 afe.(gptel--parse-directive.gpte
27e20 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 20 20 20 l--system-message))))...........
27e40 28 77 68 65 6e 20 67 70 74 65 6c 2d 6d 61 78 2d 74 6f 6b 65 6e 73 0a 20 20 20 20 20 20 20 20 20 (when.gptel-max-tokens..........
27e60 20 20 20 28 61 64 64 2d 66 69 6c 65 2d 6c 6f 63 61 6c 2d 76 61 72 69 61 62 6c 65 20 27 67 70 74 ...(add-file-local-variable.'gpt
27e80 65 6c 2d 6d 61 78 2d 74 6f 6b 65 6e 73 20 67 70 74 65 6c 2d 6d 61 78 2d 74 6f 6b 65 6e 73 29 29 el-max-tokens.gptel-max-tokens))
27ea0 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 6e 61 74 6e 75 6d 70 20 67 70 74 65 6c 2d ...........(when.(natnump.gptel-
27ec0 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 20 20 20 20 20 20 -num-messages-to-send)..........
27ee0 20 20 20 28 61 64 64 2d 66 69 6c 65 2d 6c 6f 63 61 6c 2d 76 61 72 69 61 62 6c 65 20 27 67 70 74 ...(add-file-local-variable.'gpt
27f00 65 6c 2d 2d 6e 75 6d 2d 6d 65 73 73 61 67 65 73 2d 74 6f 2d 73 65 6e 64 0a 20 20 20 20 20 20 20 el--num-messages-to-send........
27f20 20 20 20 20 20 20 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 ..............................gp
27f40 74 65 6c 2d 2d 6e 75 6d 2d 6d 65 73 73 61 67 65 73 2d 74 6f 2d 73 65 6e 64 29 29 0a 20 20 20 20 tel--num-messages-to-send)).....
27f60 20 20 20 20 20 20 28 61 64 64 2d 66 69 6c 65 2d 6c 6f 63 61 6c 2d 76 61 72 69 61 62 6c 65 20 27 ......(add-file-local-variable.'
27f80 67 70 74 65 6c 2d 2d 62 6f 75 6e 64 73 20 28 67 70 74 65 6c 2d 2d 67 65 74 2d 62 75 66 66 65 72 gptel--bounds.(gptel--get-buffer
27fa0 2d 62 6f 75 6e 64 73 29 29 29 29 29 29 29 0a 0a 0c 0a 3b 3b 3b 20 4d 69 6e 6f 72 20 6d 6f 64 65 -bounds)))))))....;;;.Minor.mode
27fc0 20 61 6e 64 20 55 49 0a 0a 3b 3b 20 4e 4f 54 45 3a 20 49 74 27 73 20 6e 6f 74 20 63 6c 65 61 72 .and.UI..;;.NOTE:.It's.not.clear
27fe0 20 74 68 61 74 20 74 68 69 73 20 69 73 20 74 68 65 20 62 65 73 74 20 73 74 72 61 74 65 67 79 3a .that.this.is.the.best.strategy:
28000 0a 28 61 64 64 2d 74 6f 2d 6c 69 73 74 20 27 74 65 78 74 2d 70 72 6f 70 65 72 74 79 2d 64 65 66 .(add-to-list.'text-property-def
28020 61 75 6c 74 2d 6e 6f 6e 73 74 69 63 6b 79 20 27 28 67 70 74 65 6c 20 2e 20 74 29 29 0a 0a 3b 3b ault-nonsticky.'(gptel...t))..;;
28040 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a 28 64 65 66 69 6e 65 2d 6d 69 6e 6f 72 2d 6d 6f 64 65 20 ;###autoload.(define-minor-mode.
28060 67 70 74 65 6c 2d 6d 6f 64 65 0a 20 20 22 4d 69 6e 6f 72 20 6d 6f 64 65 20 66 6f 72 20 69 6e 74 gptel-mode..."Minor.mode.for.int
28080 65 72 61 63 74 69 6e 67 20 77 69 74 68 20 4c 4c 4d 73 2e 22 0a 20 20 3a 6c 69 67 68 74 65 72 20 eracting.with.LLMs."...:lighter.
280a0 22 20 47 50 54 22 0a 20 20 3a 6b 65 79 6d 61 70 0a 20 20 28 6c 65 74 20 28 28 6d 61 70 20 28 6d ".GPT"...:keymap...(let.((map.(m
280c0 61 6b 65 2d 73 70 61 72 73 65 2d 6b 65 79 6d 61 70 29 29 29 0a 20 20 20 20 28 64 65 66 69 6e 65 ake-sparse-keymap))).....(define
280e0 2d 6b 65 79 20 6d 61 70 20 28 6b 62 64 20 22 43 2d 63 20 52 45 54 22 29 20 23 27 67 70 74 65 6c -key.map.(kbd."C-c.RET").#'gptel
28100 2d 73 65 6e 64 29 0a 20 20 20 20 6d 61 70 29 0a 20 20 28 69 66 20 67 70 74 65 6c 2d 6d 6f 64 65 -send).....map)...(if.gptel-mode
28120 0a 20 20 20 20 20 20 28 70 72 6f 67 6e 0a 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 64 .......(progn.........(unless.(d
28140 65 72 69 76 65 64 2d 6d 6f 64 65 2d 70 20 27 6f 72 67 2d 6d 6f 64 65 20 27 6d 61 72 6b 64 6f 77 erived-mode-p.'org-mode.'markdow
28160 6e 2d 6d 6f 64 65 20 27 74 65 78 74 2d 6d 6f 64 65 29 0a 20 20 20 20 20 20 20 20 20 20 28 67 70 n-mode.'text-mode)...........(gp
28180 74 65 6c 2d 6d 6f 64 65 20 2d 31 29 0a 20 20 20 20 20 20 20 20 20 20 28 75 73 65 72 2d 65 72 72 tel-mode.-1)...........(user-err
281a0 6f 72 20 28 66 6f 72 6d 61 74 20 22 60 67 70 74 65 6c 2d 6d 6f 64 65 27 20 69 73 20 6e 6f 74 20 or.(format."`gptel-mode'.is.not.
281c0 73 75 70 70 6f 72 74 65 64 20 69 6e 20 60 25 73 27 2e 22 20 6d 61 6a 6f 72 2d 6d 6f 64 65 29 29 supported.in.`%s'.".major-mode))
281e0 29 0a 20 20 20 20 20 20 20 20 28 61 64 64 2d 68 6f 6f 6b 20 27 62 65 66 6f 72 65 2d 73 61 76 65 ).........(add-hook.'before-save
28200 2d 68 6f 6f 6b 20 23 27 67 70 74 65 6c 2d 2d 73 61 76 65 2d 73 74 61 74 65 20 6e 69 6c 20 74 29 -hook.#'gptel--save-state.nil.t)
28220 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 64 65 72 69 76 65 64 2d 6d 6f 64 65 2d 70 20 27 .........(when.(derived-mode-p.'
28240 6f 72 67 2d 6d 6f 64 65 29 0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20 57 6f 72 6b 20 61 72 6f 75 org-mode)...........;;.Work.arou
28260 6e 64 20 62 75 67 20 69 6e 20 60 6f 72 67 2d 66 6f 6e 74 69 66 79 2d 65 78 74 65 6e 64 2d 72 65 nd.bug.in.`org-fontify-extend-re
28280 67 69 6f 6e 27 2e 0a 20 20 20 20 20 20 20 20 20 20 28 61 64 64 2d 68 6f 6f 6b 20 27 67 70 74 65 gion'............(add-hook.'gpte
282a0 6c 2d 70 6f 73 74 2d 72 65 73 70 6f 6e 73 65 2d 66 75 6e 63 74 69 6f 6e 73 20 23 27 66 6f 6e 74 l-post-response-functions.#'font
282c0 2d 6c 6f 63 6b 2d 66 6c 75 73 68 20 6e 69 6c 20 74 29 29 0a 20 20 20 20 20 20 20 20 28 67 70 74 -lock-flush.nil.t)).........(gpt
282e0 65 6c 2d 2d 72 65 73 74 6f 72 65 2d 73 74 61 74 65 29 0a 20 20 20 20 20 20 20 20 28 69 66 20 67 el--restore-state).........(if.g
28300 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 20 20 28 ptel-use-header-line...........(
28320 73 65 74 71 20 67 70 74 65 6c 2d 2d 6f 6c 64 2d 68 65 61 64 65 72 2d 6c 69 6e 65 20 68 65 61 64 setq.gptel--old-header-line.head
28340 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 20 20 68 er-line-format.................h
28360 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...............
28380 20 20 28 6c 69 73 74 20 27 28 3a 65 76 61 6c 20 28 63 6f 6e 63 61 74 20 28 70 72 6f 70 65 72 74 ..(list.'(:eval.(concat.(propert
283a0 69 7a 65 20 22 20 22 20 27 64 69 73 70 6c 61 79 20 27 28 73 70 61 63 65 20 3a 61 6c 69 67 6e 2d ize.".".'display.'(space.:align-
283c0 74 6f 20 30 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 to.0))..........................
283e0 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 25 73 22 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e ......(format."%s".(gptel-backen
28400 64 2d 6e 61 6d 65 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 29 29 29 0a 20 20 20 20 20 20 20 d-name.gptel-backend))))........
28420 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 20 52 65 61 ...............(propertize.".Rea
28440 64 79 22 20 27 66 61 63 65 20 27 73 75 63 63 65 73 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 dy".'face.'success).............
28460 20 20 20 20 20 20 20 20 20 20 27 28 3a 65 76 61 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..........'(:eval...............
28480 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 6d 6f 64 65 6c 20 28 67 70 74 65 6c 2d 2d ..........(let*.((model.(gptel--
284a0 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 20 20 20 20 20 model-name.gptel-model))........
284c0 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 79 73 74 65 6d 0a 20 .......................(system..
284e0 20 20 20 20 20 20 20 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
28500 72 6f 70 65 72 74 69 7a 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ropertize.......................
28520 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............
28540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 5b ......................(format."[
28560 50 72 6f 6d 70 74 3a 20 25 73 5d 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 Prompt:.%s]"....................
28580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 20 28 63 61 72 2d 73 61 66 65 20 28 72 61 ...............(or.(car-safe.(ra
285a0 73 73 6f 63 20 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 20 67 70 74 65 6c ssoc.gptel--system-message.gptel
285c0 2d 64 69 72 65 63 74 69 76 65 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -directives))...................
285e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 64 65 73 63 72 69 62 .................(gptel--describ
28600 65 2d 64 69 72 65 63 74 69 76 65 20 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 e-directive.gptel--system-messag
28620 65 20 31 35 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 e.15))).........................
28640 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 26 72 65 73 74 20 5f 29 20 28 67 70 74 65 .........(lambda.(&rest._).(gpte
28660 6c 2d 73 79 73 74 65 6d 2d 70 72 6f 6d 70 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 l-system-prompt)))..............
28680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 6d 6f 75 73 65 2d 66 61 63 65 20 27 ...................'mouse-face.'
286a0 68 69 67 68 6c 69 67 68 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 highlight.......................
286c0 20 20 20 20 20 20 20 20 20 20 27 68 65 6c 70 2d 65 63 68 6f 20 22 53 79 73 74 65 6d 20 6d 65 73 ..........'help-echo."System.mes
286e0 73 61 67 65 20 66 6f 72 20 73 65 73 73 69 6f 6e 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 sage.for.session")).............
28700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 74 65 78 74 0a 20 20 20 20 20 ..................(context......
28720 20 20 20 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 67 ..........................(and.g
28740 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 ptel-context--alist.............
28760 20 20 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 ....................(cl-loop.for
28780 20 65 6e 74 72 79 20 69 6e 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61 6c 69 73 74 0a 20 .entry.in.gptel-context--alist..
287a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
287c0 69 66 20 28 62 75 66 66 65 72 70 20 28 63 61 72 20 65 6e 74 72 79 29 29 20 63 6f 75 6e 74 20 69 if.(bufferp.(car.entry)).count.i
287e0 74 20 69 6e 74 6f 20 62 75 66 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 t.into.bufs.....................
28800 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 69 6e 67 70 .............else.count.(stringp
28820 20 28 63 61 72 20 65 6e 74 72 79 29 29 20 69 6e 74 6f 20 66 69 6c 65 73 0a 20 20 20 20 20 20 20 .(car.entry)).into.files........
28840 20 20 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 69 6e 61 6c 6c ..........................finall
28860 79 20 72 65 74 75 72 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 y.return........................
28880 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...........
288a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 74 74 6f 6e 69 ........................(buttoni
288c0 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 20 ze..............................
288e0 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 22 5b 43 6f 6e 74 65 78 74 3a 20 22 0a 20 20 20 20 20 ......(concat."[Context:."......
28900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 ...............................(
28920 61 6e 64 20 28 3e 20 62 75 66 73 20 30 29 20 28 66 6f 72 6d 61 74 20 22 25 64 20 62 75 66 22 20 and.(>.bufs.0).(format."%d.buf".
28940 62 75 66 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 bufs))..........................
28960 20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 28 3e 20 62 75 66 73 20 31 29 20 22 73 22 29 0a ...........(and.(>.bufs.1)."s").
28980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
289a0 20 20 20 20 28 61 6e 64 20 28 3e 20 62 75 66 73 20 30 29 20 28 3e 20 66 69 6c 65 73 20 30 29 20 ....(and.(>.bufs.0).(>.files.0).
289c0 22 2c 20 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ",.")...........................
289e0 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 28 3e 20 66 69 6c 65 73 20 30 29 20 28 66 6f 72 6d ..........(and.(>.files.0).(form
28a00 61 74 20 22 25 64 20 66 69 6c 65 22 20 66 69 6c 65 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 at."%d.file".files))............
28a20 20 20 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.(>
28a40 20 66 69 6c 65 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 .files.1)."s")..................
28a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 5d 22 29 0a 20 20 20 20 20 20 20 20 ..................."]").........
28a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 ...........................(lamb
28aa0 64 61 20 28 26 72 65 73 74 20 5f 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 da.(&rest._)....................
28ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 71 75 69 72 65 20 27 67 70 74 65 ..................(require.'gpte
28ae0 6c 2d 63 6f 6e 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 l-context)......................
28b00 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 74 2d 2d ................(gptel-context--
28b20 62 75 66 66 65 72 2d 73 65 74 75 70 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 buffer-setup))).................
28b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 6d 6f 75 73 65 2d 66 61 63 65 20 27 68 ..................'mouse-face.'h
28b60 69 67 68 6c 69 67 68 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ighlight........................
28b80 20 20 20 20 20 20 20 20 20 20 20 27 68 65 6c 70 2d 65 63 68 6f 20 22 41 63 74 69 76 65 20 67 70 ...........'help-echo."Active.gp
28ba0 74 65 6c 20 63 6f 6e 74 65 78 74 22 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 tel.context"))))................
28bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 6f 67 67 6c 65 2d 74 72 61 63 6b 2d 6d 65 64 ...............(toggle-track-med
28be0 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 20 ia..............................
28c00 20 20 28 6c 61 6d 62 64 61 20 28 26 72 65 73 74 20 5f 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 ..(lambda.(&rest._).............
28c20 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 2d 6c 6f 63 61 6c .....................(setq-local
28c40 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 20 .gptel-track-media..............
28c60 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 67 70 74 65 6c 2d .....................(not.gptel-
28c80 74 72 61 63 6b 2d 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 track-media))...................
28ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 67 70 74 65 6c 2d 74 72 61 63 6b 2d 6d ...............(if.gptel-track-m
28cc0 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 20 20 edia............................
28ce0 20 20 20 20 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ..........(message..............
28d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 .........................(concat
28d20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
28d40 20 20 20 20 20 20 20 20 22 53 65 6e 64 69 6e 67 20 6d 65 64 69 61 20 66 72 6f 6d 20 69 6e 63 6c ........"Sending.media.from.incl
28d60 75 64 65 64 20 6c 69 6e 6b 73 2e 20 20 54 6f 20 69 6e 63 6c 75 64 65 20 6d 65 64 69 61 2c 20 63 uded.links...To.include.media,.c
28d80 72 65 61 74 65 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 reate.".........................
28da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 61 20 5c 22 73 74 61 6e 64 61 6c 6f 6e 65 5c 22 ..............."a.\"standalone\"
28dc0 20 6c 69 6e 6b 20 69 6e 20 61 20 70 61 72 61 67 72 61 70 68 20 62 79 20 69 74 73 65 6c 66 2c 20 .link.in.a.paragraph.by.itself,.
28de0 73 65 70 61 72 61 74 65 64 20 66 72 6f 6d 20 73 75 72 72 6f 75 6e 64 69 6e 67 20 74 65 78 74 2e separated.from.surrounding.text.
28e00 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 20 20 20 20 ")).............................
28e20 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 69 6d 61 67 65 20 .......(message."Ignoring.image.
28e40 6c 69 6e 6b 73 2e 20 20 4f 6e 6c 79 20 6c 69 6e 6b 20 74 65 78 74 20 77 69 6c 6c 20 62 65 20 73 links...Only.link.text.will.be.s
28e60 65 6e 74 2e 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ent.")).........................
28e80 20 20 20 20 20 20 20 20 20 28 72 75 6e 2d 61 74 2d 74 69 6d 65 20 30 20 6e 69 6c 20 23 27 66 6f .........(run-at-time.0.nil.#'fo
28ea0 72 63 65 2d 6d 6f 64 65 2d 6c 69 6e 65 2d 75 70 64 61 74 65 29 29 29 0a 20 20 20 20 20 20 20 20 rce-mode-line-update))).........
28ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 72 61 63 6b 2d 6d 65 64 ......................(track-med
28ee0 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 20 ia..............................
28f00 20 20 28 61 6e 64 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 ..(and.(gptel--model-capable-p.'
28f20 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 20 20 20 20 20 20 20 media)..........................
28f40 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....
28f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
28f80 20 28 70 72 6f 70 65 72 74 69 7a 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .(propertize....................
28fa0 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 22 5b 53 ..................(buttonize."[S
28fc0 65 6e 64 69 6e 67 20 6d 65 64 69 61 5d 22 20 74 6f 67 67 6c 65 2d 74 72 61 63 6b 2d 6d 65 64 69 ending.media]".toggle-track-medi
28fe0 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 20 20 20 20 20 20 20 a)..............................
29000 20 20 20 20 20 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 ........'mouse-face.'highlight..
29020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
29040 20 20 20 20 27 68 65 6c 70 2d 65 63 68 6f 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ....'help-echo..................
29060 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 6d 65 64 ...................."Sending.med
29080 69 61 20 66 72 6f 6d 20 73 74 61 6e 64 61 6c 6f 6e 65 20 6c 69 6e 6b 73 2f 75 72 6c 73 20 77 68 ia.from.standalone.links/urls.wh
290a0 65 6e 20 73 75 70 70 6f 72 74 65 64 2e 5c 6e 43 6c 69 63 6b 20 74 6f 20 74 6f 67 67 6c 65 22 29 en.supported.\nClick.to.toggle")
290c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
290e0 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 20 ...(propertize..................
29100 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 22 5b 49 ..................(buttonize."[I
29120 67 6e 6f 72 69 6e 67 20 6d 65 64 69 61 5d 22 20 74 6f 67 67 6c 65 2d 74 72 61 63 6b 2d 6d 65 64 gnoring.media]".toggle-track-med
29140 69 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 20 20 20 20 20 20 ia).............................
29160 20 20 20 20 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 .......'mouse-face.'highlight...
29180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
291a0 20 27 68 65 6c 70 2d 65 63 68 6f 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .'help-echo.....................
291c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 49 67 6e 6f 72 69 6e 67 20 69 6d 61 67 65 73 20 ..............."Ignoring.images.
291e0 66 72 6f 6d 20 73 74 61 6e 64 61 6c 6f 6e 65 20 6c 69 6e 6b 73 2f 75 72 6c 73 2e 5c 6e 43 6c 69 from.standalone.links/urls.\nCli
29200 63 6b 20 74 6f 20 74 6f 67 67 6c 65 22 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ck.to.toggle"))))...............
29220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 6f 67 67 6c 65 2d 74 6f 6f 6c 73 20 28 6c ................(toggle-tools.(l
29240 61 6d 62 64 61 20 28 26 72 65 73 74 20 5f 29 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 ambda.(&rest._).(interactive)...
29260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
29280 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 6e 69 6c 0a 20 ............(run-at-time.0.nil..
292a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
292c0 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 63 61 6c 6c 2d 69 ..............(lambda.().(call-i
292e0 6e 74 65 72 61 63 74 69 76 65 6c 79 20 23 27 67 70 74 65 6c 2d 74 6f 6f 6c 73 29 29 29 29 29 0a nteractively.#'gptel-tools))))).
29300 20 20 20 20 20 20 20 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
29320 6f 6f 6c 73 20 28 77 68 65 6e 20 28 61 6e 64 20 67 70 74 65 6c 2d 75 73 65 2d 74 6f 6f 6c 73 20 ools.(when.(and.gptel-use-tools.
29340 67 70 74 65 6c 2d 74 6f 6f 6c 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 gptel-tools)....................
29360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 0a 20 ...................(propertize..
29380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
293a0 20 20 20 20 20 20 28 62 75 74 74 6f 6e 69 7a 65 20 28 70 63 61 73 65 20 28 6c 65 6e 67 74 68 20 ......(buttonize.(pcase.(length.
293c0 67 70 74 65 6c 2d 74 6f 6f 6c 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 gptel-tools)....................
293e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
29400 28 30 20 22 5b 4e 6f 20 74 6f 6f 6c 73 5d 22 29 20 28 31 20 22 5b 31 20 74 6f 6f 6c 5d 22 29 0a (0."[No.tools]").(1."[1.tool]").
29420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
29440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 6e 20 28 66 6f 72 6d 61 74 20 ...................(len.(format.
29460 22 5b 25 64 20 74 6f 6f 6c 73 5d 22 20 6c 65 6e 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 "[%d.tools]".len))).............
29480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 67 67 ............................togg
294a0 6c 65 2d 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 le-tools).......................
294c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 6d 6f 75 73 65 2d 66 61 63 65 20 27 68 69 .................'mouse-face.'hi
294e0 67 68 6c 69 67 68 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ghlight.........................
29500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 68 65 6c 70 2d 65 63 68 6f 20 22 53 65 6c 65 63 ...............'help-echo."Selec
29520 74 20 74 6f 6f 6c 73 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 t.tools"))))....................
29540 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 20 20 ......(concat...................
29560 20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 ........(propertize.............
29580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 20 22 20 27 64 69 73 70 6c 61 79 0a 20 20 20 20 ...............".".'display.....
295a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 60 28 73 70 61 63 65 20 3a .......................`(space.:
295c0 61 6c 69 67 6e 2d 74 6f 20 28 2d 20 72 69 67 68 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 align-to.(-.right...............
295e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
29600 2c 28 2b 20 35 20 28 6c 65 6e 67 74 68 20 6d 6f 64 65 6c 29 20 28 6c 65 6e 67 74 68 20 73 79 73 ,(+.5.(length.model).(length.sys
29620 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 20 20 20 20 20 tem)............................
29640 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 72 61 .....................(length.tra
29660 63 6b 2d 6d 65 64 69 61 29 20 28 6c 65 6e 67 74 68 20 63 6f 6e 74 65 78 74 29 20 28 6c 65 6e 67 ck-media).(length.context).(leng
29680 74 68 20 74 6f 6f 6c 73 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 th.tools)))))...................
296a0 20 20 20 20 20 20 20 20 74 6f 6f 6c 73 20 28 61 6e 64 20 74 72 61 63 6b 2d 6d 65 64 69 61 20 22 ........tools.(and.track-media."
296c0 20 22 29 20 74 72 61 63 6b 2d 6d 65 64 69 61 20 28 61 6e 64 20 63 6f 6e 74 65 78 74 20 22 20 22 .").track-media.(and.context."."
296e0 29 20 63 6f 6e 74 65 78 74 20 22 20 22 20 73 79 73 74 65 6d 20 22 20 22 0a 20 20 20 20 20 20 20 ).context.".".system."."........
29700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 0a 20 ...................(propertize..
29720 20 20 20 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 ..........................(butto
29740 6e 69 7a 65 20 28 63 6f 6e 63 61 74 20 22 5b 22 20 6d 6f 64 65 6c 20 22 5d 22 29 0a 20 20 20 20 nize.(concat."[".model."]").....
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 28 6c 61 6d 62 64 61 20 ........................(lambda.
29780 28 26 72 65 73 74 20 5f 29 20 28 67 70 74 65 6c 2d 6d 65 6e 75 29 29 29 0a 20 20 20 20 20 20 20 (&rest._).(gptel-menu)))........
297a0 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 65 20 ....................'mouse-face.
297c0 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 20 20 'highlight......................
297e0 20 20 20 20 20 20 27 68 65 6c 70 2d 65 63 68 6f 20 22 4d 6f 64 65 6c 20 69 6e 20 75 73 65 22 29 ......'help-echo."Model.in.use")
29800 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 6d 6f 64 65 2d 6c 69 6e 65 2d )))))...........(setq.mode-line-
29820 70 72 6f 63 65 73 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 28 3a 65 76 61 6c 20 process.................'(:eval.
29840 28 63 6f 6e 63 61 74 20 22 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (concat.".".....................
29860 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 61 .....(buttonize.(gptel--model-na
29880 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 20 me.gptel-model).................
298a0 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 67 ............(lambda.(&rest._).(g
298c0 70 74 65 6c 2d 6d 65 6e 75 29 29 29 29 29 29 29 29 0a 20 20 20 20 28 72 65 6d 6f 76 65 2d 68 6f ptel-menu)))))))).....(remove-ho
298e0 6f 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 ok.'before-save-hook.#'gptel--sa
29900 76 65 2d 73 74 61 74 65 20 74 29 0a 20 20 20 20 28 69 66 20 67 70 74 65 6c 2d 75 73 65 2d 68 65 ve-state.t).....(if.gptel-use-he
29920 61 64 65 72 2d 6c 69 6e 65 0a 20 20 20 20 20 20 20 20 28 73 65 74 71 20 68 65 61 64 65 72 2d 6c ader-line.........(setq.header-l
29940 69 6e 65 2d 66 6f 72 6d 61 74 20 67 70 74 65 6c 2d 2d 6f 6c 64 2d 68 65 61 64 65 72 2d 6c 69 6e ine-format.gptel--old-header-lin
29960 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 2d 6f 6c 64 2d 68 65 61 64 65 e...............gptel--old-heade
29980 72 2d 6c 69 6e 65 20 6e 69 6c 29 0a 20 20 20 20 20 20 28 73 65 74 71 20 6d 6f 64 65 2d 6c 69 6e r-line.nil).......(setq.mode-lin
299a0 65 2d 70 72 6f 63 65 73 73 20 6e 69 6c 29 29 29 29 0a 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c e-process.nil))))..(defvar.gptel
299c0 2d 2d 66 73 6d 2d 6c 61 73 74 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 44 65 66 69 --fsm-last)................;Defi
299e0 6e 65 64 20 66 75 72 74 68 65 72 20 62 65 6c 6f 77 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d ned.further.below.(defun.gptel--
29a00 75 70 64 61 74 65 2d 73 74 61 74 75 73 20 28 26 6f 70 74 69 6f 6e 61 6c 20 6d 73 67 20 66 61 63 update-status.(&optional.msg.fac
29a20 65 29 0a 20 20 22 55 70 64 61 74 65 20 73 74 61 74 75 73 20 4d 53 47 20 69 6e 20 46 41 43 45 2e e)..."Update.status.MSG.in.FACE.
29a40 22 0a 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 6d 6f 64 65 0a 20 20 20 20 28 69 66 20 67 70 74 "...(when.gptel-mode.....(if.gpt
29a60 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 61 6e 64 20 el-use-header-line.........(and.
29a80 28 63 6f 6e 73 70 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 (consp.header-line-format)......
29aa0 20 20 20 20 20 20 20 20 28 73 65 74 66 20 28 6e 74 68 20 31 20 68 65 61 64 65 72 2d 6c 69 6e 65 ........(setf.(nth.1.header-line
29ac0 2d 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 20 28 74 68 72 -format)....................(thr
29ae0 65 61 64 2d 66 69 72 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d ead-first......................m
29b00 73 67 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 74 74 6f 6e 69 sg......................(buttoni
29b20 7a 65 20 28 6c 61 6d 62 64 61 20 28 5f 29 20 28 67 70 74 65 6c 2d 2d 69 6e 73 70 65 63 74 2d 66 ze.(lambda.(_).(gptel--inspect-f
29b40 73 6d 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 70 sm)))......................(prop
29b60 65 72 74 69 7a 65 20 27 66 61 63 65 20 66 61 63 65 20 27 6d 6f 75 73 65 2d 66 61 63 65 20 27 68 ertize.'face.face.'mouse-face.'h
29b80 69 67 68 6c 69 67 68 74 29 29 29 29 0a 20 20 20 20 20 20 28 69 66 20 28 6d 65 6d 62 65 72 20 6d ighlight)))).......(if.(member.m
29ba0 73 67 20 27 28 22 20 54 79 70 69 6e 67 2e 2e 2e 22 20 22 20 57 61 69 74 69 6e 67 2e 2e 2e 22 29 sg.'(".Typing...".".Waiting...")
29bc0 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 6d 6f 64 65 2d 6c 69 6e 65 2d 70 72 6f 63 )...........(setq.mode-line-proc
29be0 65 73 73 20 28 70 72 6f 70 65 72 74 69 7a 65 20 6d 73 67 20 27 66 61 63 65 20 66 61 63 65 29 29 ess.(propertize.msg.'face.face))
29c00 0a 20 20 20 20 20 20 20 20 28 73 65 74 71 20 6d 6f 64 65 2d 6c 69 6e 65 2d 70 72 6f 63 65 73 73 .........(setq.mode-line-process
29c20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 28 3a 65 76 61 6c 20 28 63 6f 6e 63 61 74 20 22 ...............'(:eval.(concat."
29c40 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 74 74 6f ."........................(butto
29c60 6e 69 7a 65 20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 6e 61 6d 65 20 67 70 74 65 6c 2d 6d 6f nize.(gptel--model-name.gptel-mo
29c80 64 65 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 del)............................
29ca0 20 28 6c 61 6d 62 64 61 20 28 26 72 65 73 74 20 5f 29 20 28 67 70 74 65 6c 2d 6d 65 6e 75 29 29 .(lambda.(&rest._).(gptel-menu))
29cc0 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 28 70 72 6f 70 65 72 74 69 7a )))).........(message.(propertiz
29ce0 65 20 6d 73 67 20 27 66 61 63 65 20 66 61 63 65 29 29 29 29 0a 20 20 20 20 28 66 6f 72 63 65 2d e.msg.'face.face)))).....(force-
29d00 6d 6f 64 65 2d 6c 69 6e 65 2d 75 70 64 61 74 65 29 29 29 0a 0a 28 64 65 63 6c 61 72 65 2d 66 75 mode-line-update)))..(declare-fu
29d20 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 70 74 65 nction.gptel-context--wrap."gpte
29d40 6c 2d 63 6f 6e 74 65 78 74 22 29 0a 0a 0c 0a 3b 3b 3b 20 54 6f 6f 6c 20 75 73 65 0a 0a 28 64 65 l-context")....;;;.Tool.use..(de
29d60 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 75 73 65 2d 74 6f 6f 6c 73 20 74 0a 20 20 22 57 68 65 fcustom.gptel-use-tools.t..."Whe
29d80 74 68 65 72 20 67 70 74 65 6c 20 73 68 6f 75 6c 64 20 75 73 65 20 74 6f 6f 6c 73 2e 0a 0a 54 6f ther.gptel.should.use.tools...To
29da0 6f 6c 73 20 61 72 65 20 63 61 70 61 62 69 6c 69 74 69 65 73 20 70 72 6f 76 69 64 65 64 20 62 79 ols.are.capabilities.provided.by
29dc0 20 79 6f 75 20 74 6f 20 74 68 65 20 4c 4c 4d 20 61 73 20 66 75 6e 63 74 69 6f 6e 73 20 61 6e 0a .you.to.the.LLM.as.functions.an.
29de0 4c 4c 4d 20 63 61 6e 20 63 68 6f 6f 73 65 20 74 6f 20 63 61 6c 6c 2e 20 20 67 70 74 65 6c 20 72 LLM.can.choose.to.call...gptel.r
29e00 75 6e 73 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 20 6f 6e 20 79 6f 75 72 0a 6d 61 uns.the.function.call.on.your.ma
29e20 63 68 69 6e 65 2e 0a 0a 49 66 20 73 65 74 20 74 6f 20 74 2c 20 61 6e 79 20 74 6f 6f 6c 73 20 73 chine...If.set.to.t,.any.tools.s
29e40 65 6c 65 63 74 65 64 20 69 6e 20 60 67 70 74 65 6c 2d 74 6f 6f 6c 73 27 20 77 69 6c 6c 20 62 65 elected.in.`gptel-tools'.will.be
29e60 20 6d 61 64 65 0a 61 76 61 69 6c 61 62 6c 65 20 74 6f 20 74 68 65 20 4c 4c 4d 2e 20 20 54 68 69 .made.available.to.the.LLM...Thi
29e80 73 20 69 73 20 74 68 65 20 64 65 66 61 75 6c 74 2e 20 20 49 74 20 68 61 73 20 6e 6f 20 65 66 66 s.is.the.default...It.has.no.eff
29ea0 65 63 74 20 69 66 0a 6e 6f 20 74 6f 6f 6c 73 20 61 72 65 20 73 65 6c 65 63 74 65 64 2e 0a 0a 49 ect.if.no.tools.are.selected...I
29ec0 66 20 73 65 74 20 74 6f 20 66 6f 72 63 65 2c 20 67 70 74 65 6c 20 77 69 6c 6c 20 74 72 79 20 74 f.set.to.force,.gptel.will.try.t
29ee0 6f 20 66 6f 72 63 65 20 74 68 65 20 4c 4c 4d 20 74 6f 20 63 61 6c 6c 20 6f 6e 65 20 6f 72 0a 6d o.force.the.LLM.to.call.one.or.m
29f00 6f 72 65 20 6f 66 20 74 68 65 20 70 72 6f 76 69 64 65 64 20 74 6f 6f 6c 73 2e 20 20 53 75 70 70 ore.of.the.provided.tools...Supp
29f20 6f 72 74 20 66 6f 72 20 74 68 69 73 20 66 65 61 74 75 72 65 20 64 65 70 65 6e 64 73 20 6f 6e 0a ort.for.this.feature.depends.on.
29f40 74 68 65 20 62 61 63 6b 65 6e 64 2f 41 50 49 2c 20 61 6e 64 20 67 70 74 65 6c 20 77 69 6c 6c 20 the.backend/API,.and.gptel.will.
29f60 66 61 6c 6c 20 62 61 63 6b 20 74 6f 20 74 68 65 20 64 65 66 61 75 6c 74 20 62 65 68 61 76 69 6f fall.back.to.the.default.behavio
29f80 72 0a 77 68 65 6e 20 66 6f 72 63 69 6e 67 20 74 6f 6f 6c 20 75 73 65 20 69 73 20 75 6e 73 75 70 r.when.forcing.tool.use.is.unsup
29fa0 70 6f 72 74 65 64 2e 0a 0a 49 66 20 6e 69 6c 2c 20 74 6f 6f 6c 20 75 73 65 20 69 73 20 74 75 72 ported...If.nil,.tool.use.is.tur
29fc0 6e 65 64 20 6f 66 66 2e 22 0a 20 20 3a 74 79 70 65 20 27 28 63 68 6f 69 63 65 0a 20 20 20 20 20 ned.off."...:type.'(choice......
29fe0 20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 20 22 45 6e 61 62 6c 65 22 20 74 29 0a 20 20 20 .....(const.:tag."Enable".t)....
2a000 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 20 22 46 6f 72 63 65 20 74 6f 6f 6c 20 75 .......(const.:tag."Force.tool.u
2a020 73 65 22 20 66 6f 72 63 65 29 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 se".force)...........(const.:tag
2a040 20 22 54 75 72 6e 20 4f 66 66 22 20 6e 69 6c 29 29 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 ."Turn.Off".nil)))..(defcustom.g
2a060 70 74 65 6c 2d 63 6f 6e 66 69 72 6d 2d 74 6f 6f 6c 2d 63 61 6c 6c 73 20 27 61 75 74 6f 0a 20 20 ptel-confirm-tool-calls.'auto...
2a080 22 57 68 65 74 68 65 72 20 74 6f 6f 6c 20 63 61 6c 6c 73 20 73 68 6f 75 6c 64 20 77 61 69 74 20 "Whether.tool.calls.should.wait.
2a0a0 66 6f 72 20 74 68 65 20 75 73 65 72 20 74 6f 20 72 75 6e 20 74 68 65 6d 2e 0a 0a 49 66 20 73 65 for.the.user.to.run.them...If.se
2a0c0 74 20 74 6f 20 74 20 6f 72 20 6e 69 6c 2c 20 74 6f 6f 6c 20 63 61 6c 6c 73 20 61 6c 77 61 79 73 t.to.t.or.nil,.tool.calls.always
2a0e0 20 6f 72 20 6e 65 76 65 72 20 73 65 65 6b 20 63 6f 6e 66 69 72 6d 61 74 69 6f 6e 0a 66 72 6f 6d .or.never.seek.confirmation.from
2a100 20 74 68 65 20 75 73 65 72 20 62 65 66 6f 72 65 20 72 75 6e 6e 69 6e 67 2e 0a 0a 49 66 20 73 65 .the.user.before.running...If.se
2a120 74 20 74 6f 20 74 68 65 20 73 79 6d 62 6f 6c 20 61 75 74 6f 20 28 74 68 65 20 64 65 66 61 75 6c t.to.the.symbol.auto.(the.defaul
2a140 74 29 2c 20 61 20 74 6f 6f 6c 20 63 61 6c 6c 20 77 69 6c 6c 20 73 65 65 6b 0a 63 6f 6e 66 69 72 t),.a.tool.call.will.seek.confir
2a160 6d 61 74 69 6f 6e 20 6f 6e 6c 79 20 77 68 65 6e 20 74 68 65 20 63 6f 72 72 65 73 70 6f 6e 64 69 mation.only.when.the.correspondi
2a180 6e 67 20 74 6f 6f 6c 20 73 70 65 63 20 68 61 73 20 61 20 6e 6f 6e 2d 6e 69 6c 0a 3a 63 6f 6e 66 ng.tool.spec.has.a.non-nil.:conf
2a1a0 69 72 6d 20 73 6c 6f 74 2e 20 20 53 65 65 20 60 67 70 74 65 6c 2d 6d 61 6b 65 2d 74 6f 6f 6c 27 irm.slot...See.`gptel-make-tool'
2a1c0 2e 22 0a 20 20 3a 74 79 70 65 20 27 28 63 68 6f 69 63 65 0a 20 20 20 20 20 20 20 20 20 20 28 63 ."...:type.'(choice...........(c
2a1e0 6f 6e 73 74 20 3a 74 61 67 20 22 54 6f 6f 6c 20 64 65 63 69 64 65 73 22 20 61 75 74 6f 29 0a 20 onst.:tag."Tool.decides".auto)..
2a200 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 20 22 41 6c 77 61 79 73 22 20 74 29 .........(const.:tag."Always".t)
2a220 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 20 22 4e 65 76 65 72 22 20 6e ...........(const.:tag."Never".n
2a240 69 6c 29 29 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 69 6e 63 6c 75 64 65 2d il)))..(defcustom.gptel-include-
2a260 74 6f 6f 6c 2d 72 65 73 75 6c 74 73 20 27 61 75 74 6f 0a 20 20 22 57 68 65 74 68 65 72 20 74 6f tool-results.'auto..."Whether.to
2a280 6f 6c 20 63 61 6c 6c 20 72 65 73 75 6c 74 73 20 73 68 6f 75 6c 64 20 62 65 20 69 6e 63 6c 75 64 ol.call.results.should.be.includ
2a2a0 65 64 20 69 6e 20 74 68 65 20 62 75 66 66 65 72 2e 0a 0a 49 66 20 73 65 74 20 74 6f 20 74 20 6f ed.in.the.buffer...If.set.to.t.o
2a2c0 72 20 6e 69 6c 2c 20 72 65 73 75 6c 74 73 20 6f 66 20 74 6f 6f 6c 20 63 61 6c 6c 73 20 61 72 65 r.nil,.results.of.tool.calls.are
2a2e0 20 61 6c 77 61 79 73 20 6f 72 20 6e 65 76 65 72 0a 69 6e 63 6c 75 64 65 64 20 69 6e 20 74 68 65 .always.or.never.included.in.the
2a300 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 2c 20 72 65 73 70 65 63 74 69 76 65 6c 79 2e 0a 0a 49 66 .LLM.response,.respectively...If
2a320 20 73 65 74 20 74 6f 20 74 68 65 20 73 79 6d 62 6f 6c 20 61 75 74 6f 20 28 74 68 65 20 64 65 66 .set.to.the.symbol.auto.(the.def
2a340 61 75 6c 74 29 2c 20 61 20 74 6f 6f 6c 20 63 61 6c 6c 20 72 65 73 75 6c 74 20 69 73 0a 69 6e 63 ault),.a.tool.call.result.is.inc
2a360 6c 75 64 65 64 20 6f 6e 6c 79 20 77 68 65 6e 20 74 68 65 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e luded.only.when.the.correspondin
2a380 67 20 74 6f 6f 6c 20 73 70 65 63 20 68 61 73 20 61 20 6e 6f 6e 2d 6e 69 6c 0a 3a 69 6e 63 6c 75 g.tool.spec.has.a.non-nil.:inclu
2a3a0 64 65 20 73 6c 6f 74 2e 20 20 53 65 65 20 60 67 70 74 65 6c 2d 6d 61 6b 65 2d 74 6f 6f 6c 27 2e de.slot...See.`gptel-make-tool'.
2a3c0 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
2a3e0 6e 73 74 20 3a 74 61 67 20 22 54 6f 6f 6c 20 64 65 63 69 64 65 73 22 20 61 75 74 6f 29 0a 20 20 nst.:tag."Tool.decides".auto)...
2a400 20 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 20 22 41 6c 77 61 79 73 22 20 74 29 0a ........(const.:tag."Always".t).
2a420 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 20 22 4e 65 76 65 72 22 20 6e 69 ..........(const.:tag."Never".ni
2a440 6c 29 29 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 20 6e 69 6c l)))..(defcustom.gptel-tools.nil
2a460 0a 20 20 22 41 20 6c 69 73 74 20 6f 66 20 74 6f 6f 6c 73 20 74 6f 20 69 6e 63 6c 75 64 65 20 77 ..."A.list.of.tools.to.include.w
2a480 69 74 68 20 67 70 74 65 6c 20 72 65 71 75 65 73 74 73 2e 0a 0a 45 61 63 68 20 74 6f 6f 6c 20 73 ith.gptel.requests...Each.tool.s
2a4a0 68 6f 75 6c 64 20 62 65 20 61 20 60 67 70 74 65 6c 2d 74 6f 6f 6c 27 20 73 74 72 75 63 74 2c 20 hould.be.a.`gptel-tool'.struct,.
2a4c0 77 68 69 63 68 20 73 65 65 2e 20 20 54 6f 20 73 70 65 63 69 66 79 0a 61 20 74 6f 6f 6c 2c 20 75 which.see...To.specify.a.tool,.u
2a4e0 73 65 20 60 67 70 74 65 6c 2d 6d 61 6b 65 2d 74 6f 6f 6c 27 2c 20 77 68 69 63 68 20 73 65 65 2e se.`gptel-make-tool',.which.see.
2a500 22 0a 20 20 3a 67 72 6f 75 70 20 27 67 70 74 65 6c 0a 20 20 3a 74 79 70 65 20 27 28 72 65 70 65 "...:group.'gptel...:type.'(repe
2a520 61 74 20 67 70 74 65 6c 2d 74 6f 6f 6c 29 29 0a 0a 28 63 6c 2d 64 65 66 73 74 72 75 63 74 20 28 at.gptel-tool))..(cl-defstruct.(
2a540 67 70 74 65 6c 2d 74 6f 6f 6c 20 28 3a 63 6f 6e 73 74 72 75 63 74 6f 72 20 67 70 74 65 6c 2d 2d gptel-tool.(:constructor.gptel--
2a560 6d 61 6b 65 2d 74 6f 6f 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 make-tool)......................
2a580 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 74 6f 6f 6c 29 29 .....(:copier.gptel--copy-tool))
2a5a0 0a 20 20 22 53 74 72 75 63 74 20 74 6f 20 73 70 65 63 69 66 79 20 74 6f 6f 6c 73 20 66 6f 72 20 ..."Struct.to.specify.tools.for.
2a5c0 4c 4c 4d 73 20 74 6f 20 72 75 6e 2e 0a 0a 41 20 74 6f 6f 6c 20 69 73 20 61 20 66 75 6e 63 74 69 LLMs.to.run...A.tool.is.a.functi
2a5e0 6f 6e 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e 20 73 65 6e 74 20 74 6f 20 74 68 65 20 4c 4c 4d on.specification.sent.to.the.LLM
2a600 20 61 6c 6f 6e 67 20 77 69 74 68 0a 61 20 28 70 6c 61 69 6e 20 6c 61 6e 67 75 61 67 65 29 20 74 .along.with.a.(plain.language).t
2a620 61 73 6b 2e 20 20 49 66 20 74 68 65 20 4c 4c 4d 20 64 65 63 69 64 65 73 20 74 6f 20 75 73 65 20 ask...If.the.LLM.decides.to.use.
2a640 74 68 65 20 74 6f 6f 6c 20 74 6f 0a 61 63 63 6f 6d 70 6c 69 73 68 20 74 68 65 20 74 61 73 6b 2c the.tool.to.accomplish.the.task,
2a660 20 67 70 74 65 6c 20 77 69 6c 6c 20 72 75 6e 20 74 68 65 20 74 6f 6f 6c 20 61 6e 64 20 28 6f 70 .gptel.will.run.the.tool.and.(op
2a680 74 69 6f 6e 61 6c 6c 79 29 0a 66 65 65 64 20 74 68 65 20 4c 4c 4d 20 74 68 65 20 72 65 73 75 6c tionally).feed.the.LLM.the.resul
2a6a0 74 73 2e 20 20 59 6f 75 20 63 61 6e 20 61 64 64 20 74 6f 6f 6c 73 20 76 69 61 0a 60 67 70 74 65 ts...You.can.add.tools.via.`gpte
2a6c0 6c 2d 6d 61 6b 65 2d 74 6f 6f 6c 27 2c 20 77 68 69 63 68 20 73 65 65 2e 22 0a 20 20 66 75 6e 63 l-make-tool',.which.see."...func
2a6e0 74 69 6f 6e 20 6e 61 6d 65 20 64 65 73 63 72 69 70 74 69 6f 6e 20 61 72 67 73 20 61 73 79 6e 63 tion.name.description.args.async
2a700 20 63 61 74 65 67 6f 72 79 20 63 6f 6e 66 69 72 6d 20 69 6e 63 6c 75 64 65 29 0a 0a 28 64 65 66 .category.confirm.include)..(def
2a720 69 6e 65 2d 61 64 76 69 63 65 20 67 70 74 65 6c 2d 2d 6d 61 6b 65 2d 74 6f 6f 6c 20 28 3a 66 69 ine-advice.gptel--make-tool.(:fi
2a740 6c 74 65 72 2d 61 72 67 73 20 28 72 65 73 74 29 20 70 72 65 70 72 6f 63 65 73 73 2d 61 72 67 73 lter-args.(rest).preprocess-args
2a760 29 0a 20 20 22 43 6f 6e 76 65 72 74 20 73 79 6d 62 6f 6c 20 3a 74 79 70 65 20 76 61 6c 75 65 73 )..."Convert.symbol.:type.values
2a780 20 74 6f 20 73 74 72 69 6e 67 73 20 69 6e 20 74 68 65 20 61 72 67 73 20 69 6e 20 52 45 53 54 2e .to.strings.in.the.args.in.REST.
2a7a0 22 0a 20 20 28 63 6c 2d 63 61 6c 6c 66 20 67 70 74 65 6c 2d 2d 70 72 65 70 72 6f 63 65 73 73 2d "...(cl-callf.gptel--preprocess-
2a7c0 74 6f 6f 6c 2d 61 72 67 73 20 28 70 6c 69 73 74 2d 67 65 74 20 72 65 73 74 20 3a 61 72 67 73 29 tool-args.(plist-get.rest.:args)
2a7e0 29 0a 20 20 72 65 73 74 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 70 72 65 70 72 6f 63 )...rest)..(defun.gptel--preproc
2a800 65 73 73 2d 74 6f 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 ess-tool-args.(spec)..."Convert.
2a820 73 79 6d 62 6f 6c 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 symbol.:type.values.in.tool.SPEC
2a840 20 74 6f 20 73 74 72 69 6e 67 73 20 64 65 73 74 72 75 63 74 69 76 65 6c 79 2e 22 0a 20 20 28 63 .to.strings.destructively."...(c
2a860 6f 6e 64 20 28 28 6e 6f 74 20 28 6c 69 73 74 70 20 73 70 65 63 29 29 20 73 70 65 63 29 0a 20 20 ond.((not.(listp.spec)).spec)...
2a880 20 20 20 20 20 20 28 28 6b 65 79 77 6f 72 64 70 20 28 63 61 72 20 73 70 65 63 29 29 0a 20 20 20 ......((keywordp.(car.spec))....
2a8a0 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 20 20 20 20 20 20 ......(let.((tail.spec))........
2a8c0 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 20 20 20 28 77 68 ....(while.tail..............(wh
2a8e0 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
2a900 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)))............
2a920 20 20 20 20 28 73 65 74 63 61 72 20 28 63 64 72 20 74 61 69 6c 29 20 28 73 79 6d 62 6f 6c 2d 6e ....(setcar.(cdr.tail).(symbol-n
2a940 61 6d 65 20 28 63 61 64 72 20 74 61 69 6c 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ame.(cadr.tail))))..............
2a960 28 77 68 65 6e 20 28 6c 69 73 74 70 20 28 63 61 64 72 20 74 61 69 6c 29 29 0a 20 20 20 20 20 20 (when.(listp.(cadr.tail)).......
2a980 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 2d 74 6f 6f 6c .........(gptel--preprocess-tool
2a9a0 2d 61 72 67 73 20 28 63 61 64 72 20 74 61 69 6c 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 -args.(cadr.tail))).............
2a9c0 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 0a 20 20 20 20 20 20 .(setq.tail.(cddr.tail))).......
2a9e0 20 20 20 20 20 73 70 65 63 29 29 0a 20 20 20 20 20 20 20 20 28 74 20 28 64 6f 6c 69 73 74 20 28 .....spec)).........(t.(dolist.(
2aa00 65 6c 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 28 77 68 65 6e element.spec)..............(when
2aa20 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 20 20 20 20 20 20 .(listp.element)................
2aa40 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 65 (gptel--preprocess-tool-args.ele
2aa60 6d 65 6e 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 73 70 65 63 29 29 29 0a 0a 28 64 65 66 ment)))............spec)))..(def
2aa80 76 61 72 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 var.gptel--known-tools.nil..."Al
2aaa0 69 73 74 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 ist.of.gptel.tools.arranged.by.c
2aac0 61 74 65 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 ategory...A.\"tool\".is.a.functi
2aae0 6f 6e 20 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 on.spec.(definition.and.descript
2ab00 69 6f 6e 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 ion).provided.by.gptel.to.an.LLM
2ab20 2e 20 20 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 ...See.`gptel-tool'...Each.tool.
2ab40 69 73 0a 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 is.assigned.a.category.when.it.i
2ab60 73 20 63 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 s.created,.with.a.category.of.\"
2ab80 6d 69 73 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 misc\".if.none.is.specified...Th
2aba0 69 73 20 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 is.is.a.two-level.alist.mapping.
2abc0 63 61 74 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 categories.and.tool.names.to.the
2abe0 20 74 6f 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 .tool.itself...It.is.used.as.a.g
2ac00 6c 6f 62 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 lobal.register.of.available.tool
2ac20 73 20 61 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 s.and.in.gptel's.UI,.see.`gptel-
2ac40 74 6f 6f 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 tools'...In.this.example.structu
2ac60 72 65 2c 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 re,.cat-tool.and.the.rest.are.cl
2ac80 2d 73 74 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 -structs.of.type.`gptel-tool':..
2aca0 20 20 20 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 ...CATEGORY.........TOOL.NAME...
2acc0 20 20 20 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 .......TOOL..((\"filesystem\"...
2ace0 28 28 5c 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 ((\"read_file\"........cat-tool)
2ad00 0a 20 20 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 ....................(\"list_dire
2ad20 63 74 6f 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 ctory\"...ls-tool)))...(\"emacs\
2ad40 22 20 20 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 "........((\"read_buffer\"......
2ad60 62 75 66 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 buffer-substring-tool)..........
2ad80 20 20 20 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 ..........(\"send_message\".....
2ada0 6d 65 73 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 message-tool))))..This.variable.
2adc0 69 73 20 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 is.for.internal.use.only,.to.def
2ade0 69 6e 65 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 ine.a.tool.use.`gptel-make-tool'
2ae00 2e 22 29 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 .")..(defun.gptel-get-tool.(path
2ae20 29 0a 20 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 )..."Find.tool.in.gptel's.tool.r
2ae40 65 67 69 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 egistry.at.PATH...PATH.can.be.sp
2ae60 65 63 69 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 ecified.-.as.a.string.representi
2ae80 6e 67 20 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 ng.the.tool.name,.like.\"search_
2aea0 64 62 5c 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 db\",.-.or.as.a.list.representin
2aec0 67 20 61 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 g.a.category.and.tool.name,...li
2aee0 6b 65 20 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 ke.\\='(\"emacs\".\"read_buffer\
2af00 22 29 2e 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 ")..In.both.cases,.the.first.mat
2af20 63 68 69 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 ching.gptel-tool.is.returned...-
2af40 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 61 20 63 61 74 65 .as.a.string.representing.a.cate
2af60 67 6f 72 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 gory,.like.\"filesystem\"..In.th
2af80 69 73 20 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 is.case.a.list.of.all.gptel-tool
2afa0 73 20 77 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 s.with.this.category.is.returned
2afc0 2e 22 0a 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 ."...(or.(cl-etypecase.path.....
2afe0 20 20 20 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 ....(cons.(let.((tc.(map-nested-
2b000 65 6c 74 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 elt.gptel--known-tools.path)))..
2b020 20 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 74 63 29 20 28 6d ...............(if.(consp.tc).(m
2b040 61 70 2d 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 ap-values.tc).tc))).........(str
2b060 69 6e 67 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 ing.(if-let*.((category.(assoc.p
2b080 61 74 68 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 ath.gptel--known-tools))).......
2b0a0 20 20 20 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 ..............(map-values.(cdr.c
2b0c0 61 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 28 63 6c 2d ategory))...................(cl-
2b0e0 6c 6f 6f 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 loop.for.(_...tools).in.gptel--k
2b100 6e 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 nown-tools......................
2b120 20 20 20 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 ......if.(assoc.path.tools).....
2b140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 63 .......................return.(c
2b160 64 72 20 69 74 29 29 29 29 29 0a 20 20 20 20 20 20 28 75 73 65 72 2d 65 72 72 6f 72 20 22 4e 6f dr.it))))).......(user-error."No
2b180 20 74 6f 6f 6c 20 6d 61 74 63 68 65 73 20 66 6f 72 20 25 53 22 20 70 61 74 68 29 29 29 0a 0a 28 .tool.matches.for.%S".path)))..(
2b1a0 64 65 66 75 6e 20 67 70 74 65 6c 2d 6d 61 6b 65 2d 74 6f 6f 6c 20 28 26 72 65 73 74 20 73 6c 6f defun.gptel-make-tool.(&rest.slo
2b1c0 74 73 29 0a 20 20 22 4d 61 6b 65 20 61 20 67 70 74 65 6c 20 74 6f 6f 6c 20 66 6f 72 20 4c 4c 4d ts)..."Make.a.gptel.tool.for.LLM
2b1e0 20 75 73 65 2e 0a 0a 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 6b 65 79 77 6f 72 64 20 61 72 67 .use...The.following.keyword.arg
2b200 75 6d 65 6e 74 73 20 61 72 65 20 61 76 61 69 6c 61 62 6c 65 2c 20 6f 66 20 77 68 69 63 68 20 74 uments.are.available,.of.which.t
2b220 68 65 20 66 69 72 73 74 0a 66 6f 75 72 20 61 72 65 20 72 65 71 75 69 72 65 64 2e 0a 0a 4e 41 4d he.first.four.are.required...NAM
2b240 45 3a 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 74 6f 6f 6c 2c 20 72 65 63 6f 6d 6d 65 E:.The.name.of.the.tool,.recomme
2b260 6e 64 65 64 20 74 6f 20 62 65 20 69 6e 20 4a 61 76 61 73 63 72 69 70 74 20 73 74 79 6c 65 20 73 nded.to.be.in.Javascript.style.s
2b280 6e 61 6b 65 5f 63 61 73 65 2e 0a 0a 46 55 4e 43 54 49 4f 4e 3a 20 54 68 65 20 66 75 6e 63 74 69 nake_case...FUNCTION:.The.functi
2b2a0 6f 6e 20 69 74 73 65 6c 66 20 28 6c 61 6d 62 64 61 20 6f 72 20 73 79 6d 62 6f 6c 29 20 74 68 61 on.itself.(lambda.or.symbol).tha
2b2c0 74 20 72 75 6e 73 20 74 68 65 20 74 6f 6f 6c 2e 0a 0a 44 45 53 43 52 49 50 54 49 4f 4e 3a 20 41 t.runs.the.tool...DESCRIPTION:.A
2b2e0 20 76 65 72 62 6f 73 65 20 64 65 73 63 72 69 70 74 69 6f 6e 20 6f 66 20 77 68 61 74 20 74 68 65 .verbose.description.of.what.the
2b300 20 74 6f 6f 6c 20 64 6f 65 73 2c 20 68 6f 77 20 74 6f 0a 63 61 6c 6c 20 69 74 20 61 6e 64 20 77 .tool.does,.how.to.call.it.and.w
2b320 68 61 74 20 69 74 20 72 65 74 75 72 6e 73 2e 0a 0a 41 52 47 53 3a 20 41 20 6c 69 73 74 20 6f 66 hat.it.returns...ARGS:.A.list.of
2b340 20 70 6c 69 73 74 73 20 73 70 65 63 69 66 79 69 6e 67 20 74 68 65 20 61 72 67 75 6d 65 6e 74 73 .plists.specifying.the.arguments
2b360 2c 20 6f 72 20 6e 69 6c 20 66 6f 72 20 61 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 0a 74 61 6b ,.or.nil.for.a.function.that.tak
2b380 65 73 20 6e 6f 20 61 72 67 75 6d 65 6e 74 73 2e 20 20 45 61 63 68 20 70 6c 69 73 74 20 69 6e 20 es.no.arguments...Each.plist.in.
2b3a0 41 52 47 53 20 72 65 71 75 69 72 65 73 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 6b 65 79 73 ARGS.requires.the.following.keys
2b3c0 3a 0a 2d 20 61 72 67 75 6d 65 6e 74 20 3a 6e 61 6d 65 20 61 6e 64 20 3a 64 65 73 63 72 69 70 74 :.-.argument.:name.and.:descript
2b3e0 69 6f 6e 2c 20 61 73 20 73 74 72 69 6e 67 73 2e 0a 2d 20 61 72 67 75 6d 65 6e 74 20 3a 74 79 70 ion,.as.strings..-.argument.:typ
2b400 65 2c 20 61 73 20 61 20 73 79 6d 62 6f 6c 2e 20 20 41 6c 6c 6f 77 65 64 20 74 79 70 65 73 20 61 e,.as.a.symbol...Allowed.types.a
2b420 72 65 20 74 68 6f 73 65 20 75 6e 64 65 72 73 74 6f 6f 64 20 62 79 20 74 68 65 20 4a 53 4f 4e 0a re.those.understood.by.the.JSON.
2b440 20 20 73 63 68 65 6d 61 3a 20 73 74 72 69 6e 67 2c 20 6e 75 6d 62 65 72 2c 20 69 6e 74 65 67 65 ..schema:.string,.number,.intege
2b460 72 2c 20 62 6f 6f 6c 65 61 6e 2c 20 61 72 72 61 79 2c 20 6f 62 6a 65 63 74 20 6f 72 20 6e 75 6c r,.boolean,.array,.object.or.nul
2b480 6c 0a 0a 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 70 6c 69 73 74 20 6b 65 79 73 20 61 72 65 20 l..The.following.plist.keys.are.
2b4a0 63 6f 6e 64 69 74 69 6f 6e 61 6c 2f 6f 70 74 69 6f 6e 61 6c 3a 0a 2d 20 3a 6f 70 74 69 6f 6e 61 conditional/optional:.-.:optiona
2b4c0 6c 2c 20 62 6f 6f 6c 65 61 6e 20 69 6e 64 69 63 61 74 69 6e 67 20 69 66 20 61 72 67 75 6d 65 6e l,.boolean.indicating.if.argumen
2b4e0 74 20 69 73 20 6f 70 74 69 6f 6e 61 6c 0a 2d 20 3a 65 6e 75 6d 20 66 6f 72 20 65 6e 75 6d 65 72 t.is.optional.-.:enum.for.enumer
2b500 61 74 65 64 20 74 79 70 65 73 2c 20 77 68 6f 73 65 20 76 61 6c 75 65 20 69 73 20 61 20 76 65 63 ated.types,.whose.value.is.a.vec
2b520 74 6f 72 20 6f 66 20 73 74 72 69 6e 67 73 20 72 65 70 72 65 73 65 6e 74 69 6e 67 0a 20 20 61 6c tor.of.strings.representing...al
2b540 6c 6f 77 65 64 20 76 61 6c 75 65 73 2e 20 20 4e 6f 74 65 20 74 68 61 74 20 3a 74 79 70 65 20 69 lowed.values...Note.that.:type.i
2b560 73 20 73 74 69 6c 6c 20 72 65 71 75 69 72 65 64 20 66 6f 72 20 65 6e 75 6d 73 2e 0a 2d 20 3a 69 s.still.required.for.enums..-.:i
2b580 74 65 6d 73 2c 20 69 66 20 74 68 65 20 3a 74 79 70 65 20 69 73 20 61 72 72 61 79 2e 20 20 49 74 tems,.if.the.:type.is.array...It
2b5a0 73 20 76 61 6c 75 65 20 6d 75 73 74 20 62 65 20 61 20 70 6c 69 73 74 20 69 6e 63 6c 75 64 69 6e s.value.must.be.a.plist.includin
2b5c0 67 20 61 74 20 6c 65 61 73 74 0a 20 20 74 68 65 20 69 74 65 6d 27 73 20 3a 74 79 70 65 2e 0a 2d g.at.least...the.item's.:type..-
2b5e0 20 3a 70 72 6f 70 65 72 74 69 65 73 2c 20 69 66 20 74 68 65 20 74 79 70 65 20 69 73 20 6f 62 6a .:properties,.if.the.type.is.obj
2b600 65 63 74 2e 20 20 49 74 73 20 76 61 6c 75 65 20 6d 75 73 74 20 62 65 20 61 20 70 6c 69 73 74 20 ect...Its.value.must.be.a.plist.
2b620 74 68 61 74 20 63 61 6e 20 62 65 0a 20 20 73 65 72 69 61 6c 69 7a 65 64 20 69 6e 74 6f 20 61 20 that.can.be...serialized.into.a.
2b640 4a 53 4f 4e 20 6f 62 6a 65 63 74 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e 20 62 79 20 60 6a 73 JSON.object.specification.by.`js
2b660 6f 6e 2d 73 65 72 69 61 6c 69 7a 65 27 2e 0a 0a 41 53 59 4e 43 3a 20 62 6f 6f 6c 65 61 6e 20 69 on-serialize'...ASYNC:.boolean.i
2b680 6e 64 69 63 61 74 69 6e 67 20 69 66 20 74 68 65 20 65 6c 69 73 70 20 66 75 6e 63 74 69 6f 6e 20 ndicating.if.the.elisp.function.
2b6a0 69 73 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 2e 0a 49 66 20 41 53 59 4e 43 20 69 73 20 74 2c 20 is.asynchronous..If.ASYNC.is.t,.
2b6c0 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 73 68 6f 75 6c 64 20 74 61 6b 65 20 61 20 63 61 6c 6c 62 the.function.should.take.a.callb
2b6e0 61 63 6b 20 61 73 20 69 74 73 20 66 69 72 73 74 0a 61 72 67 75 6d 65 6e 74 2c 20 61 6c 6f 6e 67 ack.as.its.first.argument,.along
2b700 20 77 69 74 68 20 74 68 65 20 61 72 67 75 6d 65 6e 74 73 20 73 70 65 63 69 66 69 65 64 20 69 6e .with.the.arguments.specified.in
2b720 20 41 52 47 53 2c 20 61 6e 64 20 72 75 6e 20 74 68 65 0a 63 61 6c 6c 62 61 63 6b 20 77 69 74 68 .ARGS,.and.run.the.callback.with
2b740 20 74 68 65 20 74 6f 6f 6c 20 63 61 6c 6c 20 72 65 73 75 6c 74 20 77 68 65 6e 20 69 74 27 73 20 .the.tool.call.result.when.it's.
2b760 72 65 61 64 79 2e 20 20 54 68 65 20 63 61 6c 6c 62 61 63 6b 0a 69 74 73 65 6c 66 20 69 73 20 61 ready...The.callback.itself.is.a
2b780 6e 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 64 65 74 61 69 6c 20 61 6e 64 20 6d 75 73 74 n.implementation.detail.and.must
2b7a0 20 6e 6f 74 20 62 65 20 69 6e 63 6c 75 64 65 64 20 69 6e 0a 41 52 47 53 2e 0a 0a 54 68 65 20 66 .not.be.included.in.ARGS...The.f
2b7c0 6f 6c 6c 6f 77 69 6e 67 20 6b 65 79 73 20 61 72 65 20 6f 70 74 69 6f 6e 61 6c 0a 0a 43 41 54 45 ollowing.keys.are.optional..CATE
2b7e0 47 4f 52 59 3a 20 41 20 73 74 72 69 6e 67 20 69 6e 64 69 63 61 74 69 6e 67 20 61 20 63 61 74 65 GORY:.A.string.indicating.a.cate
2b800 67 6f 72 79 20 66 6f 72 20 74 68 65 20 74 6f 6f 6c 2e 20 20 54 68 69 73 20 69 73 0a 75 73 65 64 gory.for.the.tool...This.is.used
2b820 20 6f 6e 6c 79 20 66 6f 72 20 67 72 6f 75 70 69 6e 67 20 69 6e 20 67 70 74 65 6c 27 73 20 55 49 .only.for.grouping.in.gptel's.UI
2b840 2e 20 20 44 65 66 61 75 6c 74 73 20 74 6f 20 5c 22 6d 69 73 63 5c 22 2e 0a 0a 43 4f 4e 46 49 52 ...Defaults.to.\"misc\"...CONFIR
2b860 4d 3a 20 57 68 65 74 68 65 72 20 74 68 65 20 74 6f 6f 6c 20 63 61 6c 6c 20 73 68 6f 75 6c 64 20 M:.Whether.the.tool.call.should.
2b880 77 61 69 74 20 66 6f 72 20 74 68 65 20 75 73 65 72 20 74 6f 20 72 75 6e 0a 69 74 2e 20 20 49 66 wait.for.the.user.to.run.it...If
2b8a0 20 74 72 75 65 2c 20 74 68 65 20 75 73 65 72 20 77 69 6c 6c 20 62 65 20 70 72 6f 6d 70 74 65 64 .true,.the.user.will.be.prompted
2b8c0 20 77 69 74 68 20 74 68 65 20 70 72 6f 70 6f 73 65 64 20 74 6f 6f 6c 0a 63 61 6c 6c 2c 20 77 68 .with.the.proposed.tool.call,.wh
2b8e0 69 63 68 20 63 61 6e 20 62 65 20 65 78 61 6d 69 6e 65 64 2c 20 61 63 63 65 70 74 65 64 2c 20 64 ich.can.be.examined,.accepted,.d
2b900 65 66 65 72 72 65 64 20 6f 72 20 63 61 6e 63 65 6c 65 64 2e 0a 0a 49 4e 43 4c 55 44 45 3a 20 57 eferred.or.canceled...INCLUDE:.W
2b920 68 65 74 68 65 72 20 74 68 65 20 74 6f 6f 6c 20 72 65 73 75 6c 74 73 20 73 68 6f 75 6c 64 20 62 hether.the.tool.results.should.b
2b940 65 20 69 6e 63 6c 75 64 65 64 20 61 73 20 70 61 72 74 20 6f 66 0a 74 68 65 20 4c 4c 4d 20 6f 75 e.included.as.part.of.the.LLM.ou
2b960 74 70 75 74 2e 20 20 54 68 69 73 20 69 73 20 75 73 65 66 75 6c 20 66 6f 72 20 6c 6f 67 67 69 6e tput...This.is.useful.for.loggin
2b980 67 20 61 6e 64 20 61 73 20 63 6f 6e 74 65 78 74 20 66 6f 72 0a 73 75 62 73 65 71 75 65 6e 74 20 g.and.as.context.for.subsequent.
2b9a0 72 65 71 75 65 73 74 73 20 69 6e 20 74 68 65 20 73 61 6d 65 20 62 75 66 66 65 72 2e 20 20 54 68 requests.in.the.same.buffer...Th
2b9c0 69 73 20 69 73 20 70 72 69 6d 61 72 69 6c 79 20 75 73 65 66 75 6c 0a 69 6e 20 63 68 61 74 20 62 is.is.primarily.useful.in.chat.b
2b9e0 75 66 66 65 72 73 2e 0a 0a 48 65 72 65 20 69 73 20 61 6e 20 65 78 61 6d 70 6c 65 20 64 65 66 69 uffers...Here.is.an.example.defi
2ba00 6e 69 74 69 6f 6e 3a 0a 0a 20 20 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 74 6f 6f 6c 0a 20 20 20 3a nition:....(gptel-make-tool....:
2ba20 66 75 6e 63 74 69 6f 6e 20 28 6c 61 6d 62 64 61 20 28 6c 6f 63 61 74 69 6f 6e 20 75 6e 69 74 29 function.(lambda.(location.unit)
2ba40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 72 6c 2d 72 65 74 72 69 65 76 65 2d 73 .................(url-retrieve-s
2ba60 79 6e 63 68 72 6f 6e 6f 75 73 6c 79 20 5c 22 61 70 69 2e 77 65 61 74 68 65 72 2e 63 6f 6d 2f 2e ynchronously.\"api.weather.com/.
2ba80 2e 2e 5c 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 ..\"............................
2baa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 61 74 69 6f 6e 20 75 6e 69 74 29 29 .................location.unit))
2bac0 0a 20 20 20 3a 6e 61 6d 65 20 5c 22 67 65 74 5f 77 65 61 74 68 65 72 5c 22 0a 20 20 20 3a 64 65 ....:name.\"get_weather\"....:de
2bae0 73 63 72 69 70 74 69 6f 6e 20 5c 22 47 65 74 20 74 68 65 20 63 75 72 72 65 6e 74 20 77 65 61 74 scription.\"Get.the.current.weat
2bb00 68 65 72 20 69 6e 20 61 20 67 69 76 65 6e 20 6c 6f 63 61 74 69 6f 6e 5c 22 0a 20 20 20 3a 61 72 her.in.a.given.location\"....:ar
2bb20 67 73 20 28 6c 69 73 74 20 5c 5c 3d 27 28 3a 6e 61 6d 65 20 5c 22 6c 6f 63 61 74 69 6f 6e 5c 22 gs.(list.\\='(:name.\"location\"
2bb40 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 74 72 69 6e 67 0a 20 ..................:type.string..
2bb60 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 6e 20 5c 22 54 ................:description.\"T
2bb80 68 65 20 63 69 74 79 20 61 6e 64 20 73 74 61 74 65 2c 20 65 2e 67 2e 20 53 61 6e 20 46 72 61 6e he.city.and.state,.e.g..San.Fran
2bba0 63 69 73 63 6f 2c 20 43 41 5c 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5c 5c 3d 27 cisco,.CA\")................\\='
2bbc0 28 3a 6e 61 6d 65 20 5c 22 75 6e 69 74 5c 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (:name.\"unit\".................
2bbe0 20 3a 74 79 70 65 20 73 74 72 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a .:type.string..................:
2bc00 65 6e 75 6d 20 5b 5c 22 63 65 6c 73 69 75 73 5c 22 20 5c 22 66 61 72 65 6e 68 65 69 74 5c 22 5d enum.[\"celsius\".\"farenheit\"]
2bc20 0a 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 6e 0a 20 ..................:description..
2bc40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5c 22 54 68 65 20 75 6e 69 74 20 6f 66 20 74 65 ................\"The.unit.of.te
2bc60 6d 70 65 72 61 74 75 72 65 2c 20 65 69 74 68 65 72 20 5c 5c 3d 27 63 65 6c 73 69 75 73 5c 5c 3d mperature,.either.\\='celsius\\=
2bc80 27 20 6f 72 20 5c 5c 3d 27 66 61 68 72 65 6e 68 65 69 74 5c 5c 3d 27 5c 22 0a 20 20 20 20 20 20 '.or.\\='fahrenheit\\='\".......
2bca0 20 20 20 20 20 20 20 20 20 20 20 3a 6f 70 74 69 6f 6e 61 6c 20 74 29 29 29 0a 0a 49 66 20 74 68 ...........:optional.t)))..If.th
2bcc0 65 20 74 6f 6f 6c 20 69 73 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 2c 20 74 68 65 20 66 75 6e 63 e.tool.is.asynchronous,.the.func
2bce0 74 69 6f 6e 20 69 73 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 74 61 6b 65 20 61 0a 63 61 6c 6c 62 tion.is.modified.to.take.a.callb
2bd00 61 63 6b 20 61 73 20 69 74 73 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74 2c 20 77 68 69 63 68 ack.as.its.first.argument,.which
2bd20 20 69 74 20 72 75 6e 73 20 77 69 74 68 20 74 68 65 20 72 65 73 75 6c 74 3a 0a 0a 20 20 20 28 6c .it.runs.with.the.result:.....(l
2bd40 61 6d 62 64 61 20 28 63 61 6c 6c 62 61 63 6b 20 6c 6f 63 61 74 69 6f 6e 20 75 6e 69 74 29 0a 20 ambda.(callback.location.unit)..
2bd60 20 20 20 20 28 75 72 6c 2d 72 65 74 72 69 65 76 65 20 5c 22 61 70 69 2e 77 65 61 74 68 65 72 2e ....(url-retrieve.\"api.weather.
2bd80 63 6f 6d 2f 2e 2e 2e 5c 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 com/...\"....................(la
2bda0 6d 62 64 61 20 28 5f 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c mbda.(_)......................(l
2bdc0 65 74 20 28 28 72 65 73 75 6c 74 20 28 70 61 72 73 65 2d 74 68 69 73 2d 62 75 66 66 65 72 29 29 et.((result.(parse-this-buffer))
2bde0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c )........................(funcal
2be00 6c 20 63 61 6c 6c 62 61 63 6b 20 72 65 73 75 6c 74 29 29 29 29 29 22 0a 20 20 28 6c 65 74 2a 20 l.callback.result)))))"...(let*.
2be20 28 28 74 6f 6f 6c 20 28 61 70 70 6c 79 20 23 27 67 70 74 65 6c 2d 2d 6d 61 6b 65 2d 74 6f 6f 6c ((tool.(apply.#'gptel--make-tool
2be40 20 73 6c 6f 74 73 29 29 0a 20 20 20 20 20 20 20 20 20 28 63 61 74 65 67 6f 72 79 20 28 6f 72 20 .slots))..........(category.(or.
2be60 28 67 70 74 65 6c 2d 74 6f 6f 6c 2d 63 61 74 65 67 6f 72 79 20 74 6f 6f 6c 29 20 22 6d 69 73 63 (gptel-tool-category.tool)."misc
2be80 22 29 29 29 0a 20 20 20 20 28 73 65 74 66 20 28 61 6c 69 73 74 2d 67 65 74 0a 20 20 20 20 20 20 "))).....(setf.(alist-get.......
2bea0 20 20 20 20 20 28 67 70 74 65 6c 2d 74 6f 6f 6c 2d 6e 61 6d 65 20 74 6f 6f 6c 29 0a 20 20 20 20 .....(gptel-tool-name.tool).....
2bec0 20 20 20 20 20 20 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 .......(alist-get.category.gptel
2bee0 2d 2d 6b 6e 6f 77 6e 2d 74 6f 6f 6c 73 20 6e 69 6c 20 6e 69 6c 20 23 27 65 71 75 61 6c 29 0a 20 --known-tools.nil.nil.#'equal)..
2bf00 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)......
2bf20 20 20 20 20 20 74 6f 6f 6c 29 29 29 0a 0a 28 63 6c 2d 64 65 66 67 65 6e 65 72 69 63 20 67 70 74 .....tool)))..(cl-defgeneric.gpt
2bf40 65 6c 2d 2d 70 61 72 73 65 2d 74 6f 6f 6c 73 20 28 5f 62 61 63 6b 65 6e 64 20 74 6f 6f 6c 73 29 el--parse-tools.(_backend.tools)
2bf60 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
2bf80 74 20 6f 66 20 70 72 6f 6d 70 74 73 2e 0a 0a 54 4f 4f 4c 53 20 69 73 20 61 20 6c 69 73 74 20 6f t.of.prompts...TOOLS.is.a.list.o
2bfa0 66 20 60 67 70 74 65 6c 2d 74 6f 6f 6c 27 20 73 74 72 75 63 74 73 2c 20 77 68 69 63 68 20 73 65 f.`gptel-tool'.structs,.which.se
2bfc0 65 2e 0a 0a 5f 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 e..._BACKEND.is.the.LLM.backend.
2bfe0 69 6e 20 75 73 65 2e 20 20 54 68 69 73 20 69 73 20 74 68 65 20 64 65 66 61 75 6c 74 0a 69 6d 70 in.use...This.is.the.default.imp
2c000 6c 65 6d 65 6e 74 61 74 69 6f 6e 2c 20 75 73 65 64 20 62 79 20 4f 70 65 6e 41 49 2d 63 6f 6d 70 lementation,.used.by.OpenAI-comp
2c020 61 74 69 62 6c 65 20 41 50 49 73 20 61 6e 64 20 4f 6c 6c 61 6d 61 2e 22 0a 20 20 28 76 63 6f 6e atible.APIs.and.Ollama."...(vcon
2c040 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 6f 6f 6c cat....(mapcar.....(lambda.(tool
2c060 29 0a 20 20 20 20 20 20 28 6c 69 73 74 0a 20 20 20 20 20 20 20 3a 74 79 70 65 20 22 66 75 6e 63 ).......(list........:type."func
2c080 74 69 6f 6e 22 0a 20 20 20 20 20 20 20 3a 66 75 6e 63 74 69 6f 6e 0a 20 20 20 20 20 20 20 28 61 tion"........:function........(a
2c0a0 70 70 65 6e 64 0a 20 20 20 20 20 20 20 20 28 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 3a 6e 61 ppend.........(list..........:na
2c0c0 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 20 20 20 me.(gptel-tool-name.tool).......
2c0e0 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 28 67 70 74 65 6c 2d 74 6f 6f 6c 2d 64 65 73 63 ...:description.(gptel-tool-desc
2c100 72 69 70 74 69 6f 6e 20 74 6f 6f 6c 29 29 0a 20 20 20 20 20 20 20 20 28 61 6e 64 20 28 67 70 74 ription.tool)).........(and.(gpt
2c120 65 6c 2d 74 6f 6f 6c 2d 61 72 67 73 20 74 6f 6f 6c 29 20 20 20 20 20 3b 6e 6f 20 70 61 72 61 6d el-tool-args.tool).....;no.param
2c140 65 74 65 72 73 20 69 66 20 61 72 67 73 20 69 73 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 20 20 eters.if.args.is.nil............
2c160 20 20 28 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 65 74 65 72 ..(list...............:parameter
2c180 73 0a 20 20 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 s...............(list.:type."obj
2c1a0 65 63 74 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 70 72 6f 70 65 72 ect".....................:proper
2c1c0 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 63 6c 2d 6c 6f 6f ties.....................(cl-loo
2c1e0 70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 61 72 67 20 69 p......................for.arg.i
2c200 6e 20 28 67 70 74 65 6c 2d 74 6f 6f 6c 2d 61 72 67 73 20 74 6f 6f 6c 29 0a 20 20 20 20 20 20 20 n.(gptel-tool-args.tool)........
2c220 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-
2c240 67 65 74 20 61 72 67 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 get.arg.:name)..................
2c260 20 20 20 20 66 6f 72 20 74 79 70 65 20 3d 20 28 70 6c 69 73 74 2d 67 65 74 20 61 72 67 20 3a 74 ....for.type.=.(plist-get.arg.:t
2c280 79 70 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 6e 65 ype)......................for.ne
2c2a0 77 6e 61 6d 65 20 3d 20 28 6f 72 20 28 61 6e 64 20 28 6b 65 79 77 6f 72 64 70 20 6e 61 6d 65 29 wname.=.(or.(and.(keywordp.name)
2c2c0 20 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .name)..........................
2c2e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 6b 65 2d 73 79 6d 62 6f 6c 20 28 63 6f 6e 63 ..............(make-symbol.(conc
2c300 61 74 20 22 3a 22 20 6e 61 6d 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 at.":".name)))..................
2c320 20 20 20 20 66 6f 72 20 65 6e 75 6d 20 3d 20 28 70 6c 69 73 74 2d 67 65 74 20 61 72 67 20 3a 65 ....for.enum.=.(plist-get.arg.:e
2c340 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 61 70 70 65 6e 64 num)......................append
2c360 0a 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 6e 65 77 6e ......................(list.newn
2c380 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 60 ame............................`
2c3a0 28 3a 74 79 70 65 20 2c 74 79 70 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (:type.,type....................
2c3c0 20 20 20 20 20 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 2c 28 70 6c 69 73 74 2d 67 ..........:description.,(plist-g
2c3e0 65 74 20 61 72 67 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 et.arg.:description)............
2c400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2c 40 28 69 66 20 65 6e 75 6d 20 28 6c 69 ..................,@(if.enum.(li
2c420 73 74 20 3a 65 6e 75 6d 20 28 76 63 6f 6e 63 61 74 20 65 6e 75 6d 29 29 29 0a 20 20 20 20 20 20 st.:enum.(vconcat.enum))).......
2c440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2c 40 28 63 6f 6e 64 0a 20 .......................,@(cond..
2c460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 ...............................(
2c480 28 65 71 75 61 6c 20 74 79 70 65 20 22 6f 62 6a 65 63 74 22 29 0a 20 20 20 20 20 20 20 20 20 20 (equal.type."object")...........
2c4a0 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 70 72 .......................(list.:pr
2c4c0 6f 70 65 72 74 69 65 73 20 28 70 6c 69 73 74 2d 67 65 74 20 61 72 67 20 3a 70 72 6f 70 65 72 74 operties.(plist-get.arg.:propert
2c4e0 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 20 20 ies)............................
2c500 20 20 20 20 20 20 20 20 20 20 20 20 3a 72 65 71 75 69 72 65 64 20 28 6f 72 20 28 70 6c 69 73 74 ............:required.(or.(plist
2c520 2d 67 65 74 20 61 72 67 20 3a 72 65 71 75 69 72 65 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 -get.arg.:required).............
2c540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
2c560 20 20 20 20 20 20 20 20 20 28 76 65 63 74 6f 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 .........(vector))..............
2c580 20 20 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 64 64 69 74 ..........................:addit
2c5a0 69 6f 6e 61 6c 50 72 6f 70 65 72 74 69 65 73 20 3a 6a 73 6f 6e 2d 66 61 6c 73 65 29 29 0a 20 20 ionalProperties.:json-false))...
2c5c0 20 20 20 20 20 20 20 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 ..............................((
2c5e0 65 71 75 61 6c 20 74 79 70 65 20 22 61 72 72 61 79 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 equal.type."array").............
2c600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 54 4f 44 4f 28 74 6f 6f .....................;;.TODO(too
2c620 6c 29 20 49 66 20 74 68 65 20 69 74 65 6d 20 74 79 70 65 20 69 73 20 61 6e 20 6f 62 6a 65 63 74 l).If.the.item.type.is.an.object
2c640 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ,...............................
2c660 20 20 20 3b 3b 20 61 64 64 20 3a 61 64 64 69 74 69 6f 6e 61 6c 50 72 6f 70 65 72 74 69 65 73 20 ...;;.add.:additionalProperties.
2c680 74 6f 20 69 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 to.it...........................
2c6a0 20 20 20 20 20 20 20 28 6c 69 73 74 20 3a 69 74 65 6d 73 20 28 70 6c 69 73 74 2d 67 65 74 20 61 .......(list.:items.(plist-get.a
2c6c0 72 67 20 3a 69 74 65 6d 73 29 29 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rg.:items)))))))................
2c6e0 20 20 20 20 20 3a 72 65 71 75 69 72 65 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .....:required..................
2c700 20 20 20 28 76 63 6f 6e 63 61 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ...(vconcat.....................
2c720 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 20 20 .(delq.nil.(mapcar..............
2c740 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 72 67 29 ...................(lambda.(arg)
2c760 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 70 74 69 6f .(and.(not.(plist-get.arg.:optio
2c780 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 20 20 20 20 nal))...........................
2c7a0 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 61 ....................(plist-get.a
2c7c0 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 20 20 rg.:name))).....................
2c7e0 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
2c800 6c 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 61 64 64 69 74 l)))).....................:addit
2c820 69 6f 6e 61 6c 50 72 6f 70 65 72 74 69 65 73 20 3a 6a 73 6f 6e 2d 66 61 6c 73 65 29 29 29 29 29 ionalProperties.:json-false)))))
2c840 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 29 29 29 0a 0a 28 63 ).....(ensure-list.tools))))..(c
2c860 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 74 6f 6f 6c 2d 72 l-defgeneric.gptel--parse-tool-r
2c880 65 73 75 6c 74 73 20 28 62 61 63 6b 65 6e 64 20 72 65 73 75 6c 74 73 29 0a 20 20 22 52 65 74 75 esults.(backend.results)..."Retu
2c8a0 72 6e 20 61 20 42 41 43 4b 45 4e 44 2d 61 70 70 72 6f 70 72 69 61 74 65 20 70 72 6f 6d 70 74 20 rn.a.BACKEND-appropriate.prompt.
2c8c0 63 6f 6e 74 61 69 6e 69 6e 67 20 74 6f 6f 6c 20 63 61 6c 6c 20 52 45 53 55 4c 54 53 2e 0a 0a 54 containing.tool.call.RESULTS...T
2c8e0 68 69 73 20 77 69 6c 6c 20 62 65 20 69 6e 6a 65 63 74 65 64 20 69 6e 74 6f 20 74 68 65 20 6d 65 his.will.be.injected.into.the.me
2c900 73 73 61 67 65 73 20 6c 69 73 74 20 69 6e 20 74 68 65 20 70 72 6f 6d 70 74 20 74 6f 0a 73 65 6e ssages.list.in.the.prompt.to.sen
2c920 64 20 74 6f 20 74 68 65 20 4c 4c 4d 2e 22 29 0a 0a 3b 3b 20 46 49 58 4d 45 28 66 73 6d 29 20 75 d.to.the.LLM.")..;;.FIXME(fsm).u
2c940 6e 69 66 79 20 74 68 69 73 20 77 69 74 68 20 60 67 70 74 65 6c 2d 2d 77 72 61 70 2d 75 73 65 72 nify.this.with.`gptel--wrap-user
2c960 2d 70 72 6f 6d 70 74 27 2c 20 77 68 69 63 68 20 69 73 20 61 20 6d 65 73 73 0a 28 63 6c 2d 64 65 -prompt',.which.is.a.mess.(cl-de
2c980 66 67 65 6e 65 72 69 63 20 67 70 74 65 6c 2d 2d 69 6e 6a 65 63 74 2d 70 72 6f 6d 70 74 0a 20 20 fgeneric.gptel--inject-prompt...
2c9a0 28 5f 62 61 63 6b 65 6e 64 20 64 61 74 61 20 6e 65 77 2d 70 72 6f 6d 70 74 20 26 6f 70 74 69 6f (_backend.data.new-prompt.&optio
2c9c0 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 4f nal._position)..."Append.NEW-PRO
2c9e0 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 79 MPT.to.existing.prompts.in.query
2ca00 20 44 41 54 41 2e 0a 0a 4e 45 57 2d 50 52 4f 4d 50 54 20 63 61 6e 20 62 65 20 61 20 73 69 6e 67 .DATA...NEW-PROMPT.can.be.a.sing
2ca20 6c 65 20 6d 65 73 73 61 67 65 20 6f 72 20 61 20 6c 69 73 74 20 6f 66 20 6d 65 73 73 61 67 65 73 le.message.or.a.list.of.messages
2ca40 2e 0a 0a 4e 6f 74 20 69 6d 70 6c 65 6d 65 6e 74 65 64 3a 20 69 66 20 50 4f 53 49 54 49 4f 4e 20 ...Not.implemented:.if.POSITION.
2ca60 69 73 0a 2d 20 61 20 6e 6f 6e 2d 6e 65 67 61 74 69 76 65 20 6e 75 6d 62 65 72 2c 20 69 6e 73 65 is.-.a.non-negative.number,.inse
2ca80 72 74 20 69 74 20 61 74 20 74 68 61 74 20 70 6f 73 69 74 69 6f 6e 20 69 6e 20 50 52 4f 4d 50 54 rt.it.at.that.position.in.PROMPT
2caa0 53 2e 0a 2d 20 61 20 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 S..-.a.negative.number,.insert.i
2cac0 74 20 74 68 65 72 65 20 63 6f 75 6e 74 69 6e 67 20 66 72 6f 6d 20 74 68 65 20 65 6e 64 2e 0a 0a t.there.counting.from.the.end...
2cae0 54 68 69 73 20 67 65 6e 65 72 69 63 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 68 61 6e 64 This.generic.implementation.hand
2cb00 6c 65 73 20 74 68 65 20 41 6e 74 68 72 6f 70 69 63 2c 0a 4f 70 65 6e 41 49 2d 63 6f 6d 70 61 74 les.the.Anthropic,.OpenAI-compat
2cb20 69 62 6c 65 20 61 6e 64 20 4f 6c 6c 61 6d 61 20 6d 65 73 73 61 67 65 20 66 6f 72 6d 61 74 73 2e ible.and.Ollama.message.formats.
2cb40 22 0a 20 20 3b 3b 20 3b 54 4f 44 4f 28 66 73 6d 29 3a 20 69 6d 70 6c 65 6d 65 6e 74 20 5f 50 4f "...;;.;TODO(fsm):.implement._PO
2cb60 53 49 54 49 4f 4e 0a 20 20 28 77 68 65 6e 20 28 6b 65 79 77 6f 72 64 70 20 28 63 61 72 2d 73 61 SITION...(when.(keywordp.(car-sa
2cb80 66 65 20 6e 65 77 2d 70 72 6f 6d 70 74 29 29 20 3b 49 73 20 6e 65 77 2d 70 72 6f 6d 70 74 20 6f fe.new-prompt)).;Is.new-prompt.o
2cba0 6e 65 20 6f 72 20 6d 61 6e 79 3f 0a 20 20 20 20 28 73 65 74 71 20 6e 65 77 2d 70 72 6f 6d 70 74 ne.or.many?.....(setq.new-prompt
2cbc0 20 28 6c 69 73 74 20 6e 65 77 2d 70 72 6f 6d 70 74 29 29 29 0a 20 20 28 6c 65 74 20 28 28 70 72 .(list.new-prompt)))...(let.((pr
2cbe0 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 67 65 73 29 ompts.(plist-get.data.:messages)
2cc00 29 29 0a 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 64 61 74 61 20 3a 6d 65 73 73 61 67 65 73 )).....(plist-put.data.:messages
2cc20 20 28 76 63 6f 6e 63 61 74 20 70 72 6f 6d 70 74 73 20 6e 65 77 2d 70 72 6f 6d 70 74 29 29 29 29 .(vconcat.prompts.new-prompt))))
2cc40 0a 0a 0c 0a 3b 3b 3b 20 53 74 61 74 65 20 6d 61 63 68 69 6e 65 20 66 6f 72 20 64 72 69 76 69 6e ....;;;.State.machine.for.drivin
2cc60 67 20 72 65 71 75 65 73 74 73 0a 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d 72 65 71 75 65 73 g.requests..(defvar.gptel-reques
2cc80 74 2d 2d 74 72 61 6e 73 69 74 69 6f 6e 73 0a 20 20 60 28 28 49 4e 49 54 20 2e 20 28 28 74 20 20 t--transitions...`((INIT...((t..
2cca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 20 57 41 49 54 29 29 29 0a 20 .......................WAIT)))..
2ccc0 20 20 20 28 57 41 49 54 20 2e 20 28 28 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ...(WAIT...((t..................
2cce0 20 20 20 20 20 2e 20 54 59 50 45 29 29 29 0a 20 20 20 20 28 54 59 50 45 20 2e 20 28 28 2c 23 27 .......TYPE))).....(TYPE...((,#'
2cd00 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 20 gptel--error-p.........ERRS)....
2cd20 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 75 73 65 2d 70 20 ..........(,#'gptel--tool-use-p.
2cd40 20 20 20 2e 20 54 4f 4f 4c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 20 20 20 20 20 20 .....TOOL)..............(t......
2cd60 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 0a 20 20 20 20 28 ...................DONE))).....(
2cd80 54 4f 4f 4c 20 2e 20 28 28 2c 23 27 67 70 74 65 6c 2d 2d 65 72 72 6f 72 2d 70 20 20 20 20 20 20 TOOL...((,#'gptel--error-p......
2cda0 20 2e 20 45 52 52 53 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 2c 23 27 67 70 74 65 6c 2d ...ERRS)..............(,#'gptel-
2cdc0 2d 74 6f 6f 6c 2d 72 65 73 75 6c 74 2d 70 20 2e 20 57 41 49 54 29 0a 20 20 20 20 20 20 20 20 20 -tool-result-p...WAIT)..........
2cde0 20 20 20 20 28 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 20 44 ....(t.........................D
2ce00 4f 4e 45 29 29 29 29 0a 20 20 22 41 6c 69 73 74 20 73 70 65 63 69 66 79 69 6e 67 20 67 70 74 65 ONE))))..."Alist.specifying.gpte
2ce20 6c 27 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 20 74 61 62 l's.default.state.transition.tab
2ce40 6c 65 20 66 6f 72 20 72 65 71 75 65 73 74 73 2e 0a 0a 45 61 63 68 20 65 6e 74 72 79 20 69 73 20 le.for.requests...Each.entry.is.
2ce60 61 20 6c 69 73 74 20 77 68 6f 73 65 20 63 61 72 20 69 73 20 61 20 72 65 71 75 65 73 74 20 73 74 a.list.whose.car.is.a.request.st
2ce80 61 74 65 20 28 61 6e 79 20 73 79 6d 62 6f 6c 29 0a 61 6e 64 20 77 68 6f 73 65 20 63 64 72 20 69 ate.(any.symbol).and.whose.cdr.i
2cea0 73 20 61 6e 20 61 6c 69 73 74 20 6c 69 73 74 69 6e 67 20 70 6f 73 73 69 62 6c 65 20 6e 65 78 74 s.an.alist.listing.possible.next
2cec0 20 73 74 61 74 65 73 2e 20 20 45 61 63 68 20 6b 65 79 0a 69 73 20 65 69 74 68 65 72 20 61 20 70 .states...Each.key.is.either.a.p
2cee0 72 65 64 69 63 61 74 65 20 66 75 6e 63 74 69 6f 6e 20 6f 72 20 60 74 27 2e 20 20 57 68 65 6e 20 redicate.function.or.`t'...When.
2cf00 60 67 70 74 65 6c 2d 2d 66 73 6d 2d 6e 65 78 74 27 20 69 73 0a 63 61 6c 6c 65 64 2c 20 74 68 65 `gptel--fsm-next'.is.called,.the
2cf20 20 70 72 65 64 69 63 61 74 65 73 20 61 72 65 20 63 61 6c 6c 65 64 20 69 6e 20 74 68 65 20 6f 72 .predicates.are.called.in.the.or
2cf40 64 65 72 20 74 68 65 79 20 61 70 70 65 61 72 20 68 65 72 65 0a 74 6f 20 66 69 6e 64 20 74 68 65 der.they.appear.here.to.find.the
2cf60 20 6e 65 78 74 20 73 74 61 74 65 2e 20 20 45 61 63 68 20 70 72 65 64 69 63 61 74 65 20 69 73 20 .next.state...Each.predicate.is.
2cf80 63 61 6c 6c 65 64 20 77 69 74 68 20 74 68 65 20 73 74 61 74 65 0a 6d 61 63 68 69 6e 65 27 73 20 called.with.the.state.machine's.
2cfa0 49 4e 46 4f 2c 20 73 65 65 20 60 67 70 74 65 6c 2d 66 73 6d 27 2e 20 20 41 20 70 72 65 64 69 63 INFO,.see.`gptel-fsm'...A.predic
2cfc0 61 74 65 20 6f 66 20 60 74 27 20 69 73 0a 63 6f 6e 73 69 64 65 72 65 64 20 61 20 73 75 63 63 65 ate.of.`t'.is.considered.a.succe
2cfe0 73 73 20 61 6e 64 20 61 63 74 73 20 61 73 20 61 20 64 65 66 61 75 6c 74 2e 22 29 0a 0a 28 64 65 ss.and.acts.as.a.default.")..(de
2d000 66 76 61 72 20 67 70 74 65 6c 2d 72 65 71 75 65 73 74 2d 2d 68 61 6e 64 6c 65 72 73 0a 20 20 60 fvar.gptel-request--handlers...`
2d020 28 28 57 41 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 ((WAIT.,#'gptel--handle-wait)...
2d040 20 20 28 54 4f 4f 4c 20 2c 23 27 67 70 74 65 6c 2d 2d 68 61 6e 64 6c 65 2d 74 6f 6f 6c 2d 75 73 ..(TOOL.,#'gptel--handle-tool-us
2d060 65 29 29 0a 20 20 22 41 6c 69 73 74 20 73 70 65 63 69 66 79 69 6e 67 20 68 61 6e 64 6c 65 72 73 e))..."Alist.specifying.handlers
2d080 20 66 6f 72 20 67 70 74 65 6c 27 73 20 64 65 66 61 75 6c 74 20 73 74 61 74 65 20 74 72 61 6e 73 .for.gptel's.default.state.trans
2d0a0 69 74 69 6f 6e 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 itions...Each.entry.is.a.list.wh
2d0c0 6f 73 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 20 73 79 ose.car.is.a.request.state.(a.sy
2d0e0 6d 62 6f 6c 29 20 61 6e 64 0a 77 68 6f 73 65 20 63 64 72 20 69 73 20 61 20 6c 69 73 74 20 6f 66 mbol).and.whose.cdr.is.a.list.of
2d100 20 68 61 6e 64 6c 65 72 20 66 75 6e 63 74 69 6f 6e 73 20 63 61 6c 6c 65 64 20 77 68 65 6e 0a 74 .handler.functions.called.when.t
2d120 72 61 6e 73 69 74 69 6f 6e 69 6e 67 20 74 6f 20 74 68 61 74 20 73 74 61 74 65 2e 20 20 54 68 65 ransitioning.to.that.state...The
2d140 20 68 61 6e 64 6c 65 72 73 20 61 72 65 20 63 61 6c 6c 65 64 20 69 6e 20 74 68 65 0a 73 65 71 75 .handlers.are.called.in.the.sequ
2d160 65 6e 63 65 20 74 68 61 74 20 74 68 65 79 20 61 70 70 65 61 72 20 69 6e 20 74 68 65 20 6c 69 73 ence.that.they.appear.in.the.lis
2d180 74 2c 20 61 6e 64 20 65 61 63 68 20 66 75 6e 63 74 69 6f 6e 20 72 65 63 65 69 76 65 73 0a 74 68 t,.and.each.function.receives.th
2d1a0 65 20 73 74 61 74 65 20 6d 61 63 68 69 6e 65 20 61 73 20 69 74 73 20 6f 6e 6c 79 20 61 72 67 75 e.state.machine.as.its.only.argu
2d1c0 6d 65 6e 74 2e 20 20 49 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 74 68 65 0a 72 65 71 ment...Information.about.the.req
2d1e0 75 65 73 74 20 73 74 61 74 65 20 63 61 6e 20 62 65 20 72 65 74 72 69 65 76 65 64 20 76 69 61 20 uest.state.can.be.retrieved.via.
2d200 74 68 65 20 6d 61 63 68 69 6e 65 27 73 20 49 4e 46 4f 20 73 6c 6f 74 2c 20 73 65 65 0a 60 67 70 the.machine's.INFO.slot,.see.`gp
2d220 74 65 6c 2d 66 73 6d 27 2e 0a 0a 48 61 6e 64 6c 65 72 73 20 61 72 65 20 72 65 73 70 6f 6e 73 69 tel-fsm'...Handlers.are.responsi
2d240 62 6c 65 20 66 6f 72 20 64 6f 69 6e 67 20 73 74 61 74 65 2d 72 65 6c 61 74 65 64 20 74 61 73 6b ble.for.doing.state-related.task
2d260 73 20 28 6c 69 6b 65 0a 6c 6f 67 67 69 6e 67 20 65 72 72 6f 72 73 20 6f 72 20 69 6e 73 65 72 74 s.(like.logging.errors.or.insert
2d280 69 6e 67 20 72 65 73 70 6f 6e 73 65 73 29 20 61 6e 64 20 74 72 61 6e 73 69 74 69 6f 6e 69 6e 67 ing.responses).and.transitioning
2d2a0 20 74 6f 20 74 68 65 0a 6e 65 78 74 20 73 74 61 74 65 20 62 79 20 63 61 6c 6c 69 6e 67 20 60 67 .to.the.next.state.by.calling.`g
2d2c0 70 74 65 6c 2d 2d 66 73 6d 2d 74 72 61 6e 73 69 74 69 6f 6e 27 2e 0a 0a 48 61 6e 64 6c 65 72 73 ptel--fsm-transition'...Handlers
2d2e0 20 63 61 6e 20 62 65 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 2c 20 69 6e 20 77 68 69 63 68 20 63 .can.be.asynchronous,.in.which.c
2d300 61 73 65 20 74 68 65 20 74 72 61 6e 73 69 74 69 6f 6e 20 63 61 6c 6c 0a 73 68 6f 75 6c 64 20 74 ase.the.transition.call.should.t
2d320 79 70 69 63 61 6c 6c 79 20 62 65 20 70 6c 61 63 65 64 20 69 6e 20 69 74 73 20 63 61 6c 6c 62 61 ypically.be.placed.in.its.callba
2d340 63 6b 2e 22 29 0a 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d 73 65 6e 64 2d 2d 68 61 6e 64 6c ck.")..(defvar.gptel-send--handl
2d360 65 72 73 0a 20 20 60 28 28 57 41 49 54 20 2c 23 27 67 70 74 65 6c 2d 2d 68 61 6e 64 6c 65 2d 77 ers...`((WAIT.,#'gptel--handle-w
2d380 61 69 74 29 0a 20 20 20 20 28 54 59 50 45 20 2c 23 27 67 70 74 65 6c 2d 2d 68 61 6e 64 6c 65 2d ait).....(TYPE.,#'gptel--handle-
2d3a0 70 72 65 2d 69 6e 73 65 72 74 29 0a 20 20 20 20 28 45 52 52 53 20 2c 23 27 67 70 74 65 6c 2d 2d pre-insert).....(ERRS.,#'gptel--
2d3c0 68 61 6e 64 6c 65 2d 65 72 72 6f 72 20 2c 23 27 67 70 74 65 6c 2d 2d 66 73 6d 2d 6c 61 73 74 29 handle-error.,#'gptel--fsm-last)
2d3e0 0a 20 20 20 20 28 54 4f 4f 4c 20 2c 23 27 67 70 74 65 6c 2d 2d 68 61 6e 64 6c 65 2d 74 6f 6f 6c .....(TOOL.,#'gptel--handle-tool
2d400 2d 75 73 65 29 0a 20 20 20 20 28 44 4f 4e 45 20 2c 23 27 67 70 74 65 6c 2d 2d 68 61 6e 64 6c 65 -use).....(DONE.,#'gptel--handle
2d420 2d 70 6f 73 74 2d 69 6e 73 65 72 74 20 2c 23 27 67 70 74 65 6c 2d 2d 66 73 6d 2d 6c 61 73 74 29 -post-insert.,#'gptel--fsm-last)
2d440 29 0a 20 20 22 41 6c 69 73 74 20 73 70 65 63 69 66 79 69 6e 67 20 68 61 6e 64 6c 65 72 73 20 66 )..."Alist.specifying.handlers.f
2d460 6f 72 20 60 67 70 74 65 6c 2d 73 65 6e 64 27 20 73 74 61 74 65 20 74 72 61 6e 73 69 74 69 6f 6e or.`gptel-send'.state.transition
2d480 73 2e 0a 0a 53 65 65 20 60 67 70 74 65 6c 2d 72 65 71 75 65 73 74 2d 2d 68 61 6e 64 6c 65 72 73 s...See.`gptel-request--handlers
2d4a0 27 20 66 6f 72 20 64 65 74 61 69 6c 73 2e 22 29 0a 0a 28 63 6c 2d 64 65 66 73 74 72 75 63 74 20 '.for.details.")..(cl-defstruct.
2d4c0 28 67 70 74 65 6c 2d 66 73 6d 20 28 3a 63 6f 6e 73 74 72 75 63 74 6f 72 20 67 70 74 65 6c 2d 6d (gptel-fsm.(:constructor.gptel-m
2d4e0 61 6b 65 2d 66 73 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 ake-fsm)........................
2d500 20 20 28 3a 63 6f 70 69 65 72 20 67 70 74 65 6c 2d 63 6f 70 79 2d 66 73 6d 29 29 0a 20 20 22 53 ..(:copier.gptel-copy-fsm))..."S
2d520 74 61 74 65 20 6d 61 63 68 69 6e 65 20 66 6f 72 20 67 70 74 65 6c 20 72 65 71 75 65 73 74 73 2e tate.machine.for.gptel.requests.
2d540 0a 0a 53 54 41 54 45 3a 20 54 68 65 20 63 75 72 72 65 6e 74 20 73 74 61 74 65 20 6f 66 20 74 68 ..STATE:.The.current.state.of.th
2d560 65 20 6d 61 63 68 69 6e 65 2c 20 63 61 6e 20 62 65 20 61 6e 79 20 73 79 6d 62 6f 6c 2e 0a 0a 54 e.machine,.can.be.any.symbol...T
2d580 41 42 4c 45 3a 20 41 6c 69 73 74 20 6d 61 70 70 69 6e 67 20 73 74 61 74 65 73 20 74 6f 20 70 6f ABLE:.Alist.mapping.states.to.po
2d5a0 73 73 69 62 6c 65 20 6e 65 78 74 20 73 74 61 74 65 73 0a 61 6c 6f 6e 67 20 77 69 74 68 20 70 72 ssible.next.states.along.with.pr
2d5c0 65 64 69 63 61 74 65 73 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20 6e 65 78 74 20 73 edicates.to.determine.the.next.s
2d5e0 74 61 74 65 2e 20 20 53 65 65 0a 60 67 70 74 65 6c 2d 72 65 71 75 65 73 74 2d 2d 74 72 61 6e 73 tate...See.`gptel-request--trans
2d600 69 74 69 6f 6e 73 27 20 66 6f 72 20 61 6e 20 65 78 61 6d 70 6c 65 2e 0a 0a 48 41 4e 44 4c 45 52 itions'.for.an.example...HANDLER
2d620 53 3a 20 41 6c 69 73 74 20 6d 61 70 70 69 6e 67 20 73 74 61 74 65 73 20 74 6f 20 73 74 61 74 65 S:.Alist.mapping.states.to.state
2d640 20 68 61 6e 64 6c 65 72 20 66 75 6e 63 74 69 6f 6e 73 2e 0a 48 61 6e 64 6c 65 72 73 20 61 72 65 .handler.functions..Handlers.are
2d660 20 63 61 6c 6c 65 64 20 77 68 65 6e 20 65 6e 74 65 72 69 6e 67 20 65 61 63 68 20 73 74 61 74 65 .called.when.entering.each.state
2d680 2e 20 20 53 65 65 0a 60 67 70 74 65 6c 2d 72 65 71 75 65 73 74 2d 2d 68 61 6e 64 6c 65 72 73 27 ...See.`gptel-request--handlers'
2d6a0 20 66 6f 72 20 61 6e 20 65 78 61 6d 70 6c 65 0a 0a 49 4e 46 4f 3a 20 54 68 65 20 73 74 61 74 65 .for.an.example..INFO:.The.state
2d6c0 20 6d 61 63 68 69 6e 65 27 73 20 63 75 72 72 65 6e 74 20 63 6f 6e 74 65 78 74 2e 20 20 54 68 69 .machine's.current.context...Thi
2d6e0 73 20 69 73 20 61 20 70 6c 69 73 74 0a 68 6f 6c 64 69 6e 67 20 61 6c 6c 20 74 68 65 20 69 6e 66 s.is.a.plist.holding.all.the.inf
2d700 6f 72 6d 61 74 69 6f 6e 20 72 65 71 75 69 72 65 64 20 66 6f 72 20 74 68 65 20 6f 6e 67 6f 69 6e ormation.required.for.the.ongoin
2d720 67 20 72 65 71 75 65 73 74 2c 20 61 6e 64 0a 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 74 77 g.request,.and.can.be.used.to.tw
2d740 65 61 6b 20 61 6e 64 20 72 65 73 75 6d 65 20 61 20 70 61 75 73 65 64 20 72 65 71 75 65 73 74 2e eak.and.resume.a.paused.request.
2d760 20 20 54 68 69 73 20 73 68 6f 75 6c 64 20 62 65 0a 63 61 6c 6c 65 64 20 5c 22 63 6f 6e 74 65 78 ..This.should.be.called.\"contex
2d780 74 5c 22 2c 20 62 75 74 20 63 6f 6e 74 65 78 74 20 6d 65 61 6e 73 20 74 6f 6f 20 6d 61 6e 79 20 t\",.but.context.means.too.many.
2d7a0 74 68 69 6e 67 73 20 61 6c 72 65 61 64 79 20 69 6e 0a 67 70 74 65 6c 27 73 20 63 6f 64 65 21 0a things.already.in.gptel's.code!.
2d7c0 0a 45 61 63 68 20 67 70 74 65 6c 20 72 65 71 75 65 73 74 20 69 73 20 70 61 73 73 65 64 20 61 6e .Each.gptel.request.is.passed.an
2d7e0 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73 0a 73 74 61 74 65 20 6d 61 63 68 69 6e 65 20 .instance.of.this.state.machine.
2d800 61 6e 64 20 64 72 69 76 65 6e 20 62 79 20 69 74 2e 22 0a 20 20 28 73 74 61 74 65 20 27 49 4e 49 and.driven.by.it."...(state.'INI
2d820 54 29 0a 20 20 28 74 61 62 6c 65 20 67 70 74 65 6c 2d 72 65 71 75 65 73 74 2d 2d 74 72 61 6e 73 T)...(table.gptel-request--trans
2d840 69 74 69 6f 6e 73 29 0a 20 20 28 68 61 6e 64 6c 65 72 73 20 67 70 74 65 6c 2d 72 65 71 75 65 73 itions)...(handlers.gptel-reques
2d860 74 2d 2d 68 61 6e 64 6c 65 72 73 29 20 69 6e 66 6f 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c t--handlers).info)..(defun.gptel
2d880 2d 2d 66 73 6d 2d 74 72 61 6e 73 69 74 69 6f 6e 20 28 6d 61 63 68 69 6e 65 20 26 6f 70 74 69 6f --fsm-transition.(machine.&optio
2d8a0 6e 61 6c 20 6e 65 77 2d 73 74 61 74 65 29 0a 20 20 22 4d 6f 76 65 20 4d 41 43 48 49 4e 45 20 74 nal.new-state)..."Move.MACHINE.t
2d8c0 6f 20 69 74 73 20 6e 65 78 74 20 73 74 61 74 65 2e 0a 0a 4d 41 43 48 49 4e 45 20 69 73 20 61 6e o.its.next.state...MACHINE.is.an
2d8e0 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 60 67 70 74 65 6c 2d 66 73 6d 27 2e 0a 0a 54 68 65 20 6e .instance.of.`gptel-fsm'...The.n
2d900 65 78 74 20 73 74 61 74 65 20 69 73 20 4e 45 57 2d 53 54 41 54 45 20 69 66 20 67 69 76 65 6e 2e ext.state.is.NEW-STATE.if.given.
2d920 20 20 4f 74 68 65 72 77 69 73 65 20 69 74 20 69 73 20 64 65 74 65 72 6d 69 6e 65 64 0a 61 75 74 ..Otherwise.it.is.determined.aut
2d940 6f 6d 61 74 69 63 61 6c 6c 79 20 66 72 6f 6d 20 4d 41 43 48 49 4e 45 27 73 20 74 72 61 6e 73 69 omatically.from.MACHINE's.transi
2d960 74 69 6f 6e 20 74 61 62 6c 65 2e 22 0a 20 20 28 75 6e 6c 65 73 73 20 6e 65 77 2d 73 74 61 74 65 tion.table."...(unless.new-state
2d980 20 28 73 65 74 71 20 6e 65 77 2d 73 74 61 74 65 20 28 67 70 74 65 6c 2d 2d 66 73 6d 2d 6e 65 78 .(setq.new-state.(gptel--fsm-nex
2d9a0 74 20 6d 61 63 68 69 6e 65 29 29 29 0a 20 20 28 70 75 73 68 20 28 67 70 74 65 6c 2d 66 73 6d 2d t.machine)))...(push.(gptel-fsm-
2d9c0 73 74 61 74 65 20 6d 61 63 68 69 6e 65 29 0a 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 67 65 state.machine).........(plist-ge
2d9e0 74 20 28 67 70 74 65 6c 2d 66 73 6d 2d 69 6e 66 6f 20 6d 61 63 68 69 6e 65 29 20 3a 68 69 73 74 t.(gptel-fsm-info.machine).:hist
2da00 6f 72 79 29 29 0a 20 20 28 73 65 74 66 20 28 67 70 74 65 6c 2d 66 73 6d 2d 73 74 61 74 65 20 6d ory))...(setf.(gptel-fsm-state.m
2da20 61 63 68 69 6e 65 29 20 6e 65 77 2d 73 74 61 74 65 29 0a 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 achine).new-state)...(when-let*.
2da40 28 28 68 61 6e 64 6c 65 72 73 20 28 61 6c 69 73 74 2d 67 65 74 20 6e 65 77 2d 73 74 61 74 65 20 ((handlers.(alist-get.new-state.
2da60 28 67 70 74 65 6c 2d 66 73 6d 2d 68 61 6e 64 6c 65 72 73 20 6d 61 63 68 69 6e 65 29 29 29 29 0a (gptel-fsm-handlers.machine)))).
2da80 20 20 20 20 28 6d 61 70 63 20 28 6c 61 6d 62 64 61 20 28 68 29 20 28 66 75 6e 63 61 6c 6c 20 68 ....(mapc.(lambda.(h).(funcall.h
2daa0 20 6d 61 63 68 69 6e 65 29 29 20 68 61 6e 64 6c 65 72 73 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 .machine)).handlers)))..(defun.g
2dac0 70 74 65 6c 2d 2d 66 73 6d 2d 6e 65 78 74 20 28 6d 61 63 68 69 6e 65 29 0a 20 20 22 44 65 74 65 ptel--fsm-next.(machine)..."Dete
2dae0 72 6d 69 6e 65 20 4d 41 43 48 49 4e 45 27 73 20 6e 65 78 74 20 73 74 61 74 65 20 61 63 63 6f 72 rmine.MACHINE's.next.state.accor
2db00 64 69 6e 67 20 74 6f 20 69 74 73 20 74 72 61 6e 73 69 74 69 6f 6e 20 74 61 62 6c 65 2e 0a 0a 4d ding.to.its.transition.table...M
2db20 41 43 48 49 4e 45 20 69 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 60 67 70 74 65 6c 2d ACHINE.is.an.instance.of.`gptel-
2db40 66 73 6d 27 22 0a 20 20 28 6c 65 74 2a 20 28 28 63 75 72 72 65 6e 74 20 28 67 70 74 65 6c 2d 66 fsm'"...(let*.((current.(gptel-f
2db60 73 6d 2d 73 74 61 74 65 20 6d 61 63 68 69 6e 65 29 29 0a 20 20 20 20 20 20 20 20 20 28 74 72 61 sm-state.machine))..........(tra
2db80 6e 73 69 74 69 6f 6e 73 20 28 61 6c 69 73 74 2d 67 65 74 20 63 75 72 72 65 6e 74 20 28 67 70 74 nsitions.(alist-get.current.(gpt
2dba0 65 6c 2d 66 73 6d 2d 74 61 62 6c 65 20 6d 61 63 68 69 6e 65 29 29 29 29 0a 20 20 20 20 28 63 6c el-fsm-table.machine)))).....(cl
2dbc0 2d 6c 6f 6f 70 0a 20 20 20 20 20 77 69 74 68 20 69 6e 66 6f 20 3d 20 28 67 70 74 65 6c 2d 66 73 -loop......with.info.=.(gptel-fs
2dbe0 6d 2d 69 6e 66 6f 20 6d 61 63 68 69 6e 65 29 0a 20 20 20 20 20 66 6f 72 20 28 70 72 65 64 20 2e m-info.machine)......for.(pred..
2dc00 20 6e 65 78 74 29 20 69 6e 20 74 72 61 6e 73 69 74 69 6f 6e 73 0a 20 20 20 20 20 77 68 65 6e 20 .next).in.transitions......when.
2dc20 28 6f 72 20 28 65 71 20 70 72 65 64 20 74 29 20 28 66 75 6e 63 61 6c 6c 20 70 72 65 64 20 69 6e (or.(eq.pred.t).(funcall.pred.in
2dc40 66 6f 29 29 0a 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65 78 74 29 29 29 0a 0a 28 64 65 66 76 61 fo))......return.next)))..(defva
2dc60 72 2d 6c 6f 63 61 6c 20 67 70 74 65 6c 2d 2d 66 73 6d 2d 6c 61 73 74 20 6e 69 6c 0a 20 20 22 53 r-local.gptel--fsm-last.nil..."S
2dc80 74 61 74 65 20 6d 61 63 68 69 6e 65 20 66 6f 72 20 6c 61 74 65 73 74 20 72 65 71 75 65 73 74 20 tate.machine.for.latest.request.
2dca0 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 2d in.the.buffer.")..(defun.gptel--
2dcc0 66 73 6d 2d 6c 61 73 74 20 28 66 73 6d 29 0a 20 20 20 20 22 43 61 70 74 75 72 65 20 74 68 65 20 fsm-last.(fsm)....."Capture.the.
2dce0 6c 61 74 65 73 74 20 72 65 71 75 65 73 74 20 73 74 61 74 65 20 46 53 4d 20 66 6f 72 20 69 6e 74 latest.request.state.FSM.for.int
2dd00 72 6f 73 70 65 63 74 69 6f 6e 2e 22 0a 20 20 20 20 28 6c 65 74 20 28 28 69 6e 66 6f 20 28 67 70 rospection.".....(let.((info.(gp
2dd20 74 65 6c 2d 66 73 6d 2d 69 6e 66 6f 20 66 73 6d 29 29 29 0a 20 20 20 20 20 20 28 75 6e 6c 65 73 tel-fsm-info.fsm))).......(unles
2dd40 73 20 67 70 74 65 6c 2d 6c 6f 67 2d 6c 65 76 65 6c 0a 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 s.gptel-log-level.........(let.(
2dd60 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 29 29 29 0a 20 (data.(plist-get.info.:data)))..
2dd80 20 20 20 20 20 20 20 20 20 28 64 6f 6c 69 73 74 20 28 6b 65 79 20 27 28 3a 6d 65 73 73 61 67 65 .........(dolist.(key.'(:message
2dda0 73 20 3a 63 6f 6e 74 65 6e 74 73 20 3a 71 75 65 72 79 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 s.:contents.:query))............
2ddc0 20 28 73 65 74 66 20 28 70 6c 69 73 74 2d 67 65 74 20 64 61 74 61 20 6b 65 79 29 20 6e 69 6c 29 .(setf.(plist-get.data.key).nil)
2dde0 29 29 29 0a 20 20 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 20 ))).......(setf.(gptel-fsm-info.
2de00 66 73 6d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f fsm).............(plist-put.info
2de20 20 3a 65 6e 64 2d 74 69 6d 65 20 28 63 75 72 72 65 6e 74 2d 74 69 6d 65 2d 73 74 72 69 6e 67 29 .:end-time.(current-time-string)
2de40 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 28 70 )).......(with-current-buffer.(p
2de60 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 62 75 66 66 65 72 29 0a 20 20 20 20 20 20 20 20 28 list-get.info.:buffer).........(
2de80 73 65 74 71 20 67 70 74 65 6c 2d 2d 66 73 6d 2d 6c 61 73 74 20 66 73 6d 29 29 29 29 0a 0a 28 64 setq.gptel--fsm-last.fsm))))..(d
2dea0 65 66 75 6e 20 67 70 74 65 6c 2d 2d 69 6e 73 70 65 63 74 2d 66 73 6d 20 28 26 6f 70 74 69 6f 6e efun.gptel--inspect-fsm.(&option
2dec0 61 6c 20 66 73 6d 29 0a 20 20 22 49 6e 73 70 65 63 74 20 67 70 74 65 6c 20 72 65 71 75 65 73 74 al.fsm)..."Inspect.gptel.request
2dee0 20 73 74 61 74 65 20 46 53 4d 2e 0a 0a 46 53 4d 20 64 65 66 61 75 6c 74 73 20 74 6f 20 74 68 65 .state.FSM...FSM.defaults.to.the
2df00 20 73 74 61 74 65 20 6f 66 20 74 68 65 20 6c 61 73 74 20 72 65 71 75 65 73 74 20 69 6e 20 74 68 .state.of.the.last.request.in.th
2df20 65 20 63 75 72 72 65 6e 74 0a 62 75 66 66 65 72 2e 22 0a 20 20 28 75 6e 6c 65 73 73 20 66 73 6d e.current.buffer."...(unless.fsm
2df40 0a 20 20 20 20 28 73 65 74 71 20 66 73 6d 20 28 6f 72 20 28 63 64 72 2d 73 61 66 65 20 28 63 6c .....(setq.fsm.(or.(cdr-safe.(cl
2df60 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 20 -find-if........................
2df80 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 70 72 6f 63 2d 6c 69 73 74 29 0a 20 20 20 20 20 20 ......(lambda.(proc-list).......
2dfa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 71 20 28 74 68 .........................(eq.(th
2dfc0 72 65 61 64 2d 66 69 72 73 74 20 28 63 64 72 20 70 72 6f 63 2d 6c 69 73 74 29 0a 20 20 20 20 20 read-first.(cdr.proc-list)......
2dfe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
2e000 20 20 20 20 20 20 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 ............(gptel-fsm-info)....
2e020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
2e040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 67 65 74 20 3a 62 75 66 66 65 72 ..............(plist-get.:buffer
2e060 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 ))..............................
2e080 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 20 20 20 20 ......(current-buffer)))........
2e0a0 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 72 65 71 ......................gptel--req
2e0c0 75 65 73 74 2d 61 6c 69 73 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 uest-alist))...................g
2e0e0 70 74 65 6c 2d 2d 66 73 6d 2d 6c 61 73 74 29 29 29 0a 20 20 28 75 6e 6c 65 73 73 20 28 63 6c 2d ptel--fsm-last)))...(unless.(cl-
2e100 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 6d typep.gptel--fsm-last.'gptel-fsm
2e120 29 0a 20 20 20 20 28 75 73 65 72 2d 65 72 72 6f 72 20 22 4e 6f 20 67 70 74 65 6c 20 72 65 71 75 ).....(user-error."No.gptel.requ
2e140 65 73 74 20 6c 6f 67 20 69 6e 20 74 68 69 73 20 62 75 66 66 65 72 20 79 65 74 21 22 29 29 0a 20 est.log.in.this.buffer.yet!"))..
2e160 20 28 72 65 71 75 69 72 65 20 27 74 61 62 75 6c 61 74 65 64 2d 6c 69 73 74 29 0a 20 20 28 77 69 .(require.'tabulated-list)...(wi
2e180 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 67 65 74 2d 62 75 66 66 65 72 2d 63 72 th-current-buffer.(get-buffer-cr
2e1a0 65 61 74 65 20 22 2a 67 70 74 65 6c 2d 64 69 61 67 6e 6f 73 74 69 63 2a 22 29 0a 20 20 20 20 28 eate."*gptel-diagnostic*").....(
2e1c0 73 65 74 71 20 74 61 62 75 6c 61 74 65 64 2d 6c 69 73 74 2d 66 6f 72 6d 61 74 20 5b 28 22 52 65 setq.tabulated-list-format.[("Re
2e1e0 71 75 65 73 74 20 61 74 74 72 69 62 75 74 65 22 20 33 30 20 74 29 20 28 22 56 61 6c 75 65 22 20 quest.attribute".30.t).("Value".
2e200 33 30 29 5d 29 0a 20 20 20 20 28 6c 65 74 2a 20 28 28 70 62 20 28 6c 61 6d 62 64 61 20 28 73 29 30)]).....(let*.((pb.(lambda.(s)
2e220 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-
2e240 62 75 69 6c 74 69 6e 2d 66 61 63 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 70 73 20 28 builtin-face)))............(ps.(
2e260 6c 61 6d 62 64 61 20 28 73 29 20 28 70 72 6f 70 65 72 74 69 7a 65 20 73 20 27 66 61 63 65 20 27 lambda.(s).(propertize.s.'face.'
2e280 66 6f 6e 74 2d 6c 6f 63 6b 2d 73 74 72 69 6e 67 2d 66 61 63 65 29 29 29 0a 20 20 20 20 20 20 20 font-lock-string-face)))........
2e2a0 20 20 20 20 28 66 6d 74 20 28 6c 61 6d 62 64 61 20 28 73 29 20 28 63 6f 6e 64 20 28 28 6d 65 6d ....(fmt.(lambda.(s).(cond.((mem
2e2c0 71 20 28 63 61 72 2d 73 61 66 65 20 73 29 20 27 28 63 6c 6f 73 75 72 65 20 6c 61 6d 62 64 61 29 q.(car-safe.s).'(closure.lambda)
2e2e0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 )...............................
2e300 28 66 6f 72 6d 61 74 20 22 23 3c 6c 61 6d 62 64 61 20 25 23 78 3e 22 20 28 73 78 68 61 73 68 20 (format."#<lambda.%#x>".(sxhash.
2e320 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 s)))............................
2e340 20 20 28 28 62 79 74 65 2d 63 6f 64 65 2d 66 75 6e 63 74 69 6f 6e 2d 70 20 73 29 0a 20 20 20 20 ..((byte-code-function-p.s).....
2e360 20 20 20 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 ..........................(forma
2e380 74 20 22 23 3c 63 6f 6d 70 69 6c 65 64 20 25 23 78 3e 22 20 28 73 78 68 61 73 68 20 73 29 29 29 t."#<compiled.%#x>".(sxhash.s)))
2e3a0 0a 20 20 20 20 20 20 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 ..............................((
2e3c0 73 74 72 69 6e 67 70 20 73 29 20 28 73 74 72 69 6e 67 2d 72 65 70 6c 61 63 65 20 22 5c 6e 22 20 stringp.s).(string-replace."\n".
2e3e0 22 e2 ae 90 20 22 20 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 "....".s))......................
2e400 20 20 20 20 20 20 20 20 28 74 20 28 70 72 69 6e 31 2d 74 6f 2d 73 74 72 69 6e 67 20 73 29 29 29 ........(t.(prin1-to-string.s)))
2e420 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 68 69 62 69 74 2d 72 65 61 64 2d 6f 6e 6c 79 ))............(inhibit-read-only
2e440 20 74 29 0a 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 .t)............(info.(gptel-fsm-
2e460 69 6e 66 6f 20 66 73 6d 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 65 6e 74 72 69 65 73 2d 69 info.fsm))............(entries-i
2e480 6e 66 6f 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 0a 20 20 20 20 20 20 20 nfo.............(cl-loop........
2e4a0 20 20 20 20 20 20 66 6f 72 20 69 64 78 20 75 70 66 72 6f 6d 20 33 0a 20 20 20 20 20 20 20 20 20 ......for.idx.upfrom.3..........
2e4c0 20 20 20 20 66 6f 72 20 28 6b 65 79 20 76 61 6c 29 20 6f 6e 20 69 6e 66 6f 20 62 79 20 23 27 63 ....for.(key.val).on.info.by.#'c
2e4e0 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 65 ddr..............unless.(memq.ke
2e500 79 20 27 28 3a 64 61 74 61 20 3a 68 69 73 74 6f 72 79 20 3a 74 6f 6f 6c 73 0a 20 20 20 20 20 20 y.'(:data.:history.:tools.......
2e520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 70 61 72 74 69 ..........................:parti
2e540 61 6c 5f 74 65 78 74 20 3a 70 61 72 74 69 61 6c 5f 6a 73 6f 6e 29 29 0a 20 20 20 20 20 20 20 20 al_text.:partial_json)).........
2e560 20 20 20 20 20 63 6f 6c 6c 65 63 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 .....collect..............(list.
2e580 69 64 78 20 60 5b 2c 28 66 75 6e 63 61 6c 6c 20 70 62 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 idx.`[,(funcall.pb.(symbol-name.
2e5a0 6b 65 79 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2c key))..........................,
2e5c0 28 66 75 6e 63 61 6c 6c 20 70 73 20 28 66 75 6e 63 61 6c 6c 20 66 6d 74 20 76 61 6c 29 29 5d 29 (funcall.ps.(funcall.fmt.val))])
2e5e0 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 65 6e 74 72 69 65 73 2d 64 61 74 61 0a 20 20 20 20 ))............(entries-data.....
2e600 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 6f ........(cl-loop..............fo
2e620 72 20 69 64 78 20 75 70 66 72 6f 6d 20 35 30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 r.idx.upfrom.50..............for
2e640 20 28 6b 65 79 20 76 61 6c 29 20 6f 6e 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 64 .(key.val).on.(plist-get.info.:d
2e660 61 74 61 29 20 62 79 20 23 27 63 64 64 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 75 6e 6c 65 ata).by.#'cddr..............unle
2e680 73 73 20 28 6d 65 6d 71 20 6b 65 79 20 27 28 3a 6d 65 73 73 61 67 65 73 20 3a 73 74 72 65 61 6d ss.(memq.key.'(:messages.:stream
2e6a0 20 3a 63 6f 6e 74 65 6e 74 73 20 3a 71 75 65 72 79 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 .:contents.:query)).............
2e6c0 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 69 64 78 20 .collect..............(list.idx.
2e6e0 60 5b 2c 28 66 75 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 `[,(funcall.pb.(symbol-name.key)
2e700 29 0a 20 20 20 20 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 )..........................,(fun
2e720 63 61 6c 6c 20 70 73 20 28 66 75 6e 63 61 6c 6c 20 66 6d 74 20 76 61 6c 29 29 5d 29 29 29 29 0a call.ps.(funcall.fmt.val))])))).
2e740 20 20 20 20 20 20 28 73 65 74 71 20 74 61 62 75 6c 61 74 65 64 2d 6c 69 73 74 2d 65 6e 74 72 69 ......(setq.tabulated-list-entri
2e760 65 73 0a 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 60 28 32 20 es.............(nconc.(list.`(2.
2e780 5b 2c 28 66 75 6e 63 61 6c 6c 20 70 62 20 22 3a 73 74 61 74 65 22 29 0a 20 20 20 20 20 20 20 20 [,(funcall.pb.":state").........
2e7a0 20 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 ......................,(funcall.
2e7c0 70 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 ps..............................
2e7e0 20 20 20 28 6d 61 70 63 6f 6e 63 61 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ...(mapconcat...................
2e800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6d 74 20 28 72 65 76 65 72 73 65 20 28 63 6f 6e ...............fmt.(reverse.(con
2e820 73 20 28 67 70 74 65 6c 2d 66 73 6d 2d 73 74 61 74 65 20 66 73 6d 29 0a 20 20 20 20 20 20 20 20 s.(gptel-fsm-state.fsm).........
2e840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
2e860 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 68 69 73 74 6f 72 79 29 .......(plist-get.info.:history)
2e880 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 ))..............................
2e8a0 20 20 20 20 22 20 e2 86 92 20 22 29 29 5d 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ...."....."))]))................
2e8c0 20 20 20 20 65 6e 74 72 69 65 73 2d 69 6e 66 6f 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ....entries-info................
2e8e0 20 20 20 20 65 6e 74 72 69 65 73 2d 64 61 74 61 29 29 0a 20 20 20 20 20 20 28 74 61 62 75 6c 61 ....entries-data)).......(tabula
2e900 74 65 64 2d 6c 69 73 74 2d 70 72 69 6e 74 29 0a 20 20 20 20 20 20 28 74 61 62 75 6c 61 74 65 64 ted-list-print).......(tabulated
2e920 2d 6c 69 73 74 2d 6d 6f 64 65 29 0a 20 20 20 20 20 20 28 74 61 62 75 6c 61 74 65 64 2d 6c 69 73 -list-mode).......(tabulated-lis
2e940 74 2d 69 6e 69 74 2d 68 65 61 64 65 72 29 0a 20 20 20 20 20 20 28 68 6c 2d 6c 69 6e 65 2d 6d 6f t-init-header).......(hl-line-mo
2e960 64 65 20 31 29 0a 20 20 20 20 20 20 28 64 69 73 70 6c 61 79 2d 62 75 66 66 65 72 0a 20 20 20 20 de.1).......(display-buffer.....
2e980 20 20 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 27 28 28 64 69 ...(current-buffer)........'((di
2e9a0 73 70 6c 61 79 2d 62 75 66 66 65 72 2d 69 6e 2d 73 69 64 65 2d 77 69 6e 64 6f 77 29 0a 20 20 20 splay-buffer-in-side-window)....
2e9c0 20 20 20 20 20 20 28 73 69 64 65 20 2e 20 62 6f 74 74 6f 6d 29 0a 20 20 20 20 20 20 20 20 20 28 ......(side...bottom)..........(
2e9e0 77 69 6e 64 6f 77 2d 68 65 69 67 68 74 20 2e 20 66 69 74 2d 77 69 6e 64 6f 77 2d 74 6f 2d 62 75 window-height...fit-window-to-bu
2ea00 66 66 65 72 29 0a 20 20 20 20 20 20 20 20 20 28 73 6c 6f 74 20 2e 20 31 30 29 0a 20 20 20 20 20 ffer)..........(slot...10)......
2ea20 20 20 20 20 28 62 6f 64 79 2d 66 75 6e 63 74 69 6f 6e 20 2e 20 73 65 6c 65 63 74 2d 77 69 6e 64 ....(body-function...select-wind
2ea40 6f 77 29 29 29 29 29 29 0a 0a 3b 3b 3b 3b 20 53 74 61 74 65 20 6d 61 63 68 69 6e 65 20 68 61 6e ow))))))..;;;;.State.machine.han
2ea60 64 6c 65 72 73 0a 3b 3b 20 54 68 65 20 6e 65 78 74 20 66 65 77 20 66 75 6e 63 74 69 6f 6e 73 20 dlers.;;.The.next.few.functions.
2ea80 61 72 65 20 64 65 66 61 75 6c 74 20 73 74 61 74 65 20 68 61 6e 64 6c 65 72 73 20 66 6f 72 20 67 are.default.state.handlers.for.g
2eaa0 70 74 65 6c 27 73 20 73 74 61 74 65 20 6d 61 63 68 69 6e 65 2c 0a 3b 3b 20 73 65 65 20 60 67 70 ptel's.state.machine,.;;.see.`gp
2eac0 74 65 6c 2d 72 65 71 75 65 73 74 2d 2d 68 61 6e 64 6c 65 72 73 27 2e 0a 0a 28 64 65 66 75 6e 20 tel-request--handlers'...(defun.
2eae0 67 70 74 65 6c 2d 2d 68 61 6e 64 6c 65 2d 77 61 69 74 20 28 66 73 6d 29 0a 20 20 22 46 69 72 65 gptel--handle-wait.(fsm)..."Fire
2eb00 20 74 68 65 20 72 65 71 75 65 73 74 20 63 6f 6e 74 61 69 6e 65 64 20 69 6e 20 73 74 61 74 65 20 .the.request.contained.in.state.
2eb20 6d 61 63 68 69 6e 65 20 46 53 4d 27 73 20 69 6e 66 6f 2e 22 0a 20 20 3b 3b 20 52 65 73 65 74 20 machine.FSM's.info."...;;.Reset.
2eb40 73 6f 6d 65 20 66 6c 61 67 73 20 69 6e 20 69 6e 66 6f 2e 20 20 54 68 69 73 20 69 73 20 6e 65 63 some.flags.in.info...This.is.nec
2eb60 65 73 73 61 72 79 20 77 68 65 6e 20 72 65 75 73 69 6e 67 20 66 73 6d 27 73 20 63 6f 6e 74 65 78 essary.when.reusing.fsm's.contex
2eb80 74 20 66 6f 72 0a 20 20 3b 3b 20 61 20 73 65 63 6f 6e 64 20 6e 65 74 77 6f 72 6b 20 72 65 71 75 t.for...;;.a.second.network.requ
2eba0 65 73 74 3a 20 67 70 74 65 6c 20 74 65 73 74 73 20 66 6f 72 20 74 68 65 20 70 72 65 73 65 6e 63 est:.gptel.tests.for.the.presenc
2ebc0 65 20 6f 66 20 74 68 65 73 65 20 66 6c 61 67 73 20 74 6f 0a 20 20 3b 3b 20 68 61 6e 64 6c 65 20 e.of.these.flags.to...;;.handle.
2ebe0 73 74 61 74 65 20 74 72 61 6e 73 69 74 69 6f 6e 73 2e 20 20 28 4e 4f 54 45 3a 20 44 6f 6e 27 74 state.transitions...(NOTE:.Don't
2ec00 20 61 64 64 20 3a 74 6f 6b 65 6e 20 74 6f 20 74 68 69 73 2e 29 0a 20 20 28 6c 65 74 20 28 28 69 .add.:token.to.this.)...(let.((i
2ec20 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 28 nfo.(gptel-fsm-info.fsm))).....(
2ec40 64 6f 6c 69 73 74 20 28 6b 65 79 20 27 28 3a 74 6f 6f 6c 2d 73 75 63 63 65 73 73 20 3a 74 6f 6f dolist.(key.'(:tool-success.:too
2ec60 6c 2d 75 73 65 20 3a 65 72 72 6f 72 20 3a 68 74 74 70 2d 73 74 61 74 75 73 29 29 0a 20 20 20 20 l-use.:error.:http-status)).....
2ec80 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 29 0a 20 20 20 ..(when.(plist-get.info.key)....
2eca0 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 6c 29 29 29 29 .....(plist-put.info.key.nil))))
2ecc0 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 65 2d 63 75 72 ...(funcall....(if.gptel-use-cur
2ece0 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 65 73 70 6f 6e l........#'gptel-curl-get-respon
2ed00 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 73 70 6f 6e 73 se......#'gptel--url-get-respons
2ed20 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 74 65 6c 2d 70 e)....fsm)...(run-hooks.'gptel-p
2ed40 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 75 72 72 65 6e ost-request-hook)...(with-curren
2ed60 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 66 73 6d 2d 69 t-buffer.(plist-get.(gptel-fsm-i
2ed80 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 6c 2d 2d 75 70 nfo.fsm).:buffer).....(gptel--up
2eda0 64 61 74 65 2d 73 74 61 74 75 73 20 22 20 57 61 69 74 69 6e 67 2e 2e 2e 22 20 27 77 61 72 6e 69 date-status.".Waiting...".'warni
2edc0 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 2d 70 72 65 2d ng)))..(defun.gptel--handle-pre-
2ede0 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 65 20 69 6e 73 insert.(fsm)..."Tasks.before.ins
2ee00 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 20 73 74 61 74 erting.the.LLM.response.for.stat
2ee20 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 66 66 65 72 73 e.FSM...Handle.read-only.buffers
2ee40 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 20 28 62 75 74 .and.run.pre-response.hooks.(but
2ee60 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 64 65 64 29 2e .only.if.the.request.succeeded).
2ee80 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 2d 69 6e 66 6f "...(let*.((info.(gptel-fsm-info
2eea0 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 65 72 20 28 70 .fsm))..........(start-marker.(p
2eec0 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 28 list-get.info.:position))).....(
2eee0 77 68 65 6e 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 when.(with-current-buffer.(plist
2ef00 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 20 20 28 -get.info.:buffer).............(
2ef20 6f 72 20 62 75 66 66 65 72 2d 72 65 61 64 2d 6f 6e 6c 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 or.buffer-read-only.............
2ef40 20 20 20 20 28 67 65 74 2d 63 68 61 72 2d 70 72 6f 70 65 72 74 79 20 73 74 61 72 74 2d 6d 61 72 ....(get-char-property.start-mar
2ef60 6b 65 72 20 27 72 65 61 64 2d 6f 6e 6c 79 29 29 29 0a 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 ker.'read-only))).......(message
2ef80 20 22 42 75 66 66 65 72 20 69 73 20 72 65 61 64 20 6f 6e 6c 79 2c 20 64 69 73 70 6c 61 79 69 6e ."Buffer.is.read.only,.displayin
2efa0 67 20 72 65 70 6c 79 20 69 6e 20 62 75 66 66 65 72 20 5c 22 2a 4c 4c 4d 20 72 65 73 70 6f 6e 73 g.reply.in.buffer.\"*LLM.respons
2efc0 65 2a 5c 22 22 29 0a 20 20 20 20 20 20 28 64 69 73 70 6c 61 79 2d 62 75 66 66 65 72 0a 20 20 20 e*\"").......(display-buffer....
2efe0 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 67 65 74 2d 62 75 ....(with-current-buffer.(get-bu
2f000 66 66 65 72 2d 63 72 65 61 74 65 20 22 2a 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 2a 22 29 0a 20 20 ffer-create."*LLM.response*")...
2f020 20 20 20 20 20 20 20 28 76 69 73 75 61 6c 2d 6c 69 6e 65 2d 6d 6f 64 65 20 31 29 0a 20 20 20 20 .......(visual-line-mode.1).....
2f040 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 0a 20 20 20 .....(goto-char.(point-max))....
2f060 20 20 20 20 20 20 28 6d 6f 76 65 2d 6d 61 72 6b 65 72 20 73 74 61 72 74 2d 6d 61 72 6b 65 72 20 ......(move-marker.start-marker.
2f080 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 20 (point).(current-buffer)).......
2f0a0 20 20 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29 0a 20 20 20 20 20 20 20 27 28 28 64 ...(current-buffer))........'((d
2f0c0 69 73 70 6c 61 79 2d 62 75 66 66 65 72 2d 72 65 75 73 65 2d 77 69 6e 64 6f 77 0a 20 20 20 20 20 isplay-buffer-reuse-window......
2f0e0 20 20 20 20 20 64 69 73 70 6c 61 79 2d 62 75 66 66 65 72 2d 70 6f 70 2d 75 70 2d 77 69 6e 64 6f .....display-buffer-pop-up-windo
2f100 77 29 0a 20 20 20 20 20 20 20 20 20 28 72 65 75 73 61 62 6c 65 2d 66 72 61 6d 65 73 20 2e 20 76 w)..........(reusable-frames...v
2f120 69 73 69 62 6c 65 29 29 29 29 0a 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 isible)))).....(with-current-buf
2f140 66 65 72 20 28 6d 61 72 6b 65 72 2d 62 75 66 66 65 72 20 73 74 61 72 74 2d 6d 61 72 6b 65 72 29 fer.(marker-buffer.start-marker)
2f160 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 3a 73 74 .......(when.(plist-get.info.:st
2f180 72 65 61 6d 29 0a 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 75 70 64 61 74 65 2d 73 74 61 ream).........(gptel--update-sta
2f1a0 74 75 73 20 22 20 54 79 70 69 6e 67 2e 2e 2e 22 20 27 73 75 63 63 65 73 73 29 29 0a 20 20 20 20 tus.".Typing...".'success)).....
2f1c0 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d ..(save-excursion.........(goto-
2f1e0 63 68 61 72 20 73 74 61 72 74 2d 6d 61 72 6b 65 72 29 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e char.start-marker).........(when
2f200 20 28 61 6e 64 20 28 6d 65 6d 62 65 72 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 68 .(and.(member.(plist-get.info.:h
2f220 74 74 70 2d 73 74 61 74 75 73 29 20 27 28 22 32 30 30 22 20 22 31 30 30 22 29 29 0a 20 20 20 20 ttp-status).'("200"."100")).....
2f240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 70 72 65 2d 72 65 73 70 6f 6e 73 ...............gptel-pre-respons
2f260 65 2d 68 6f 6f 6b 29 0a 20 20 20 20 20 20 20 20 20 20 28 72 75 6e 2d 68 6f 6f 6b 73 20 27 67 70 e-hook)...........(run-hooks.'gp
2f280 74 65 6c 2d 70 72 65 2d 72 65 73 70 6f 6e 73 65 2d 68 6f 6f 6b 29 29 29 29 29 29 0a 0a 28 64 65 tel-pre-response-hook))))))..(de
2f2a0 66 75 6e 20 67 70 74 65 6c 2d 2d 68 61 6e 64 6c 65 2d 70 6f 73 74 2d 69 6e 73 65 72 74 20 28 66 fun.gptel--handle-post-insert.(f
2f2c0 73 6d 29 0a 20 20 22 54 61 73 6b 73 20 61 66 74 65 72 20 73 75 63 63 65 73 73 66 75 6c 6c 79 20 sm)..."Tasks.after.successfully.
2f2e0 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 77 69 74 68 20 inserting.the.LLM.response.with.
2f300 73 74 61 74 65 20 46 53 4d 2e 0a 0a 49 6e 64 69 63 61 74 65 20 67 70 74 65 6c 20 73 74 61 74 75 state.FSM...Indicate.gptel.statu
2f320 73 2c 20 70 75 6c 73 65 20 74 68 65 20 69 6e 73 65 72 74 65 64 20 74 65 78 74 20 61 6e 64 20 72 s,.pulse.the.inserted.text.and.r
2f340 75 6e 20 70 6f 73 74 2d 72 65 73 70 6f 6e 73 65 20 68 6f 6f 6b 73 2e 0a 0a 4e 6f 20 73 74 61 74 un.post-response.hooks...No.stat
2f360 65 20 74 72 61 6e 73 69 74 69 6f 6e 20 68 65 72 65 20 73 69 6e 63 65 20 74 68 61 74 27 73 20 68 e.transition.here.since.that's.h
2f380 61 6e 64 6c 65 64 20 62 79 20 74 68 65 20 70 72 6f 63 65 73 73 20 73 65 6e 74 69 6e 65 6c 73 2e andled.by.the.process.sentinels.
2f3a0 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 2d 69 6e 66 6f "...(let*.((info.(gptel-fsm-info
2f3c0 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 65 72 20 28 70 .fsm))..........(start-marker.(p
2f3e0 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 20 20 list-get.info.:position)).......
2f400 20 20 20 28 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 20 28 6f 72 20 28 70 6c 69 73 74 2d 67 ...(tracking-marker.(or.(plist-g
2f420 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 0a 20 20 20 20 20 20 et.info.:tracking-marker).......
2f440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 61 72 74 2d 6d 61 ........................start-ma
2f460 72 6b 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 3b 3b 20 73 74 61 72 74 2d 6d 61 72 6b 65 72 20 rker))..........;;.start-marker.
2f480 6d 61 79 20 68 61 76 65 20 62 65 65 6e 20 6d 6f 76 65 64 20 69 66 20 3a 62 75 66 66 65 72 20 77 may.have.been.moved.if.:buffer.w
2f4a0 61 73 20 72 65 61 64 2d 6f 6e 6c 79 0a 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 62 75 66 as.read-only..........(gptel-buf
2f4c0 66 65 72 20 28 6d 61 72 6b 65 72 2d 62 75 66 66 65 72 20 73 74 61 72 74 2d 6d 61 72 6b 65 72 29 fer.(marker-buffer.start-marker)
2f4e0 29 29 0a 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 67 70 74 65 )).....(with-current-buffer.gpte
2f500 6c 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20 28 69 66 20 28 6e 6f 74 20 74 72 61 63 6b 69 6e 67 l-buffer.......(if.(not.tracking
2f520 2d 6d 61 72 6b 65 72 29 20 20 20 20 20 20 20 20 20 3b 45 6d 70 74 79 20 72 65 73 70 6f 6e 73 65 -marker).........;Empty.response
2f540 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 6d 6f 64 65 20 28 67 70 74 ...........(when.gptel-mode.(gpt
2f560 65 6c 2d 2d 75 70 64 61 74 65 2d 73 74 61 74 75 73 20 22 20 45 6d 70 74 79 20 72 65 73 70 6f 6e el--update-status.".Empty.respon
2f580 73 65 22 20 27 73 75 63 63 65 73 73 29 29 0a 20 20 20 20 20 20 20 20 28 70 75 6c 73 65 2d 6d 6f se".'success)).........(pulse-mo
2f5a0 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 73 74 61 72 74 2d 6d mentary-highlight-region.start-m
2f5c0 61 72 6b 65 72 20 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 29 0a 20 20 20 20 20 20 20 20 28 arker.tracking-marker).........(
2f5e0 77 68 65 6e 20 67 70 74 65 6c 2d 6d 6f 64 65 0a 20 20 20 20 20 20 20 20 20 20 28 73 61 76 65 2d when.gptel-mode...........(save-
2f600 65 78 63 75 72 73 69 6f 6e 20 28 67 6f 74 6f 2d 63 68 61 72 20 74 72 61 63 6b 69 6e 67 2d 6d 61 excursion.(goto-char.tracking-ma
2f620 72 6b 65 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rker)...........................
2f640 28 69 6e 73 65 72 74 20 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 73 65 70 61 72 61 74 6f 72 (insert.gptel-response-separator
2f660 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
2f680 20 20 20 28 67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 70 72 65 66 69 78 2d 73 74 72 69 6e 67 29 29 ...(gptel-prompt-prefix-string))
2f6a0 29 0a 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 75 70 64 61 74 65 2d 73 74 61 74 75 )...........(gptel--update-statu
2f6c0 73 20 20 22 20 52 65 61 64 79 22 20 27 73 75 63 63 65 73 73 29 29 29 29 0a 20 20 20 20 3b 3b 20 s..".Ready".'success)))).....;;.
2f6e0 52 75 6e 20 68 6f 6f 6b 20 69 6e 20 76 69 73 69 62 6c 65 20 77 69 6e 64 6f 77 20 74 6f 20 73 65 Run.hook.in.visible.window.to.se
2f700 74 20 77 69 6e 64 6f 77 2d 70 6f 69 6e 74 2c 20 42 55 47 20 23 32 36 39 0a 20 20 20 20 28 69 66 t.window-point,.BUG.#269.....(if
2f720 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 66 66 65 72 -let*.((gptel-window.(get-buffer
2f740 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 65 29 29 29 -window.gptel-buffer.'visible)))
2f760 0a 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 73 65 6c 65 63 74 65 64 2d 77 69 6e 64 6f 77 20 67 .........(with-selected-window.g
2f780 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 6f 6f 6b 2d ptel-window...........(run-hook-
2f7a0 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 70 6f 73 74 with-args............'gptel-post
2f7c0 2d 72 65 73 70 6f 6e 73 65 2d 66 75 6e 63 74 69 6f 6e 73 0a 20 20 20 20 20 20 20 20 20 20 20 28 -response-functions............(
2f7e0 6d 61 72 6b 65 72 2d 70 6f 73 69 74 69 6f 6e 20 73 74 61 72 74 2d 6d 61 72 6b 65 72 29 20 28 6d marker-position.start-marker).(m
2f800 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 65 72 29 29 arker-position.tracking-marker))
2f820 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 67 70 74 ).......(with-current-buffer.gpt
2f840 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 77 69 74 68 el-buffer.........(run-hook-with
2f860 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 65 73 70 6f -args..........'gptel-post-respo
2f880 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 65 72 2d 70 nse-functions..........(marker-p
2f8a0 6f 73 69 74 69 6f 6e 20 73 74 61 72 74 2d 6d 61 72 6b 65 72 29 20 28 6d 61 72 6b 65 72 2d 70 6f osition.start-marker).(marker-po
2f8c0 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 0a 0a 28 64 sition.tracking-marker))))))..(d
2f8e0 65 66 75 6e 20 67 70 74 65 6c 2d 2d 68 61 6e 64 6c 65 2d 65 72 72 6f 72 20 28 66 73 6d 29 0a 20 efun.gptel--handle-error.(fsm)..
2f900 20 22 43 68 65 63 6b 20 66 6f 72 20 65 72 72 6f 72 73 20 69 6e 20 72 65 71 75 65 73 74 20 73 74 ."Check.for.errors.in.request.st
2f920 61 74 65 20 46 53 4d 20 70 65 72 66 6f 72 6d 20 55 49 20 75 70 64 61 74 65 73 2e 0a 0a 52 75 6e ate.FSM.perform.UI.updates...Run
2f940 20 70 6f 73 74 2d 72 65 73 70 6f 6e 73 65 20 68 6f 6f 6b 73 2e 22 0a 20 20 28 77 68 65 6e 2d 6c .post-response.hooks."...(when-l
2f960 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 6d 29 29 et*.((info.(gptel-fsm-info.fsm))
2f980 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 2d 64 61 74 61 20 28 70 6c 69 73 ...............(error-data.(plis
2f9a0 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 20 20 t-get.info.:error)).............
2f9c0 20 20 28 68 74 74 70 2d 6d 73 67 20 20 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 73 ..(http-msg...(plist-get.info.:s
2f9e0 74 61 74 75 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 62 75 66 tatus))...............(gptel-buf
2fa00 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 29 0a 20 20 fer.(plist-get.info.:buffer))...
2fa20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 74 61 72 74 2d 6d 61 72 6b 65 72 20 28 70 6c 69 73 74 ............(start-marker.(plist
2fa40 2d 67 65 74 20 69 6e 66 6f 20 3a 70 6f 73 69 74 69 6f 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 -get.info.:position))...........
2fa60 20 20 20 20 28 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 20 28 6f 72 20 28 70 6c 69 73 74 2d ....(tracking-marker.(or.(plist-
2fa80 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 0a 20 20 20 20 20 get.info.:tracking-marker)......
2faa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 61 72 74 2d 6d .........................start-m
2fac0 61 72 6b 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 61 63 6b 65 6e 64 2d 6e arker))...............(backend-n
2fae0 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e ame................(gptel-backen
2fb00 64 2d 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 2d 6c d-name.................(buffer-l
2fb20 6f 63 61 6c 2d 76 61 6c 75 65 20 27 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d ocal-value.'gptel-backend.gptel-
2fb40 62 75 66 66 65 72 29 29 29 29 0a 20 20 20 20 28 69 66 20 28 73 74 72 69 6e 67 70 20 65 72 72 6f buffer)))).....(if.(stringp.erro
2fb60 72 2d 64 61 74 61 29 0a 20 20 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 25 73 20 65 72 72 r-data).........(message."%s.err
2fb80 6f 72 3a 20 28 25 73 29 20 25 73 22 20 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 20 68 74 74 70 2d 6d or:.(%s).%s".backend-name.http-m
2fba0 73 67 20 28 73 74 72 69 6e 67 2d 74 72 69 6d 20 65 72 72 6f 72 2d 64 61 74 61 29 29 0a 20 20 20 sg.(string-trim.error-data))....
2fbc0 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 65 72 72 6f 72 2d 74 79 70 65 20 28 70 6c 69 73 ...(when-let*.((error-type.(plis
2fbe0 74 2d 67 65 74 20 65 72 72 6f 72 2d 64 61 74 61 20 3a 74 79 70 65 29 29 29 0a 20 20 20 20 20 20 t-get.error-data.:type))).......
2fc00 20 20 28 73 65 74 71 20 68 74 74 70 2d 6d 73 67 20 28 63 6f 6e 63 61 74 20 22 28 22 20 20 68 74 ..(setq.http-msg.(concat."("..ht
2fc20 74 70 2d 6d 73 67 20 22 29 20 22 20 28 73 74 72 69 6e 67 2d 74 72 69 6d 20 65 72 72 6f 72 2d 74 tp-msg.").".(string-trim.error-t
2fc40 79 70 65 29 29 29 29 0a 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 65 72 72 6f 72 ype)))).......(when-let*.((error
2fc60 2d 6d 73 67 20 28 70 6c 69 73 74 2d 67 65 74 20 65 72 72 6f 72 2d 64 61 74 61 20 3a 6d 65 73 73 -msg.(plist-get.error-data.:mess
2fc80 61 67 65 29 29 29 0a 20 20 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 25 73 20 65 72 72 6f age))).........(message."%s.erro
2fca0 72 3a 20 28 25 73 29 20 25 73 22 20 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 20 68 74 74 70 2d 6d 73 r:.(%s).%s".backend-name.http-ms
2fcc0 67 20 28 73 74 72 69 6e 67 2d 74 72 69 6d 20 65 72 72 6f 72 2d 6d 73 67 29 29 29 29 0a 20 20 20 g.(string-trim.error-msg))))....
2fce0 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 67 70 74 65 6c 2d 62 75 66 66 .(with-current-buffer.gptel-buff
2fd00 65 72 0a 20 20 20 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 6d 6f 64 65 0a 20 20 20 20 20 20 er.......(when.gptel-mode.......
2fd20 20 20 28 67 70 74 65 6c 2d 2d 75 70 64 61 74 65 2d 73 74 61 74 75 73 0a 20 20 20 20 20 20 20 20 ..(gptel--update-status.........
2fd40 20 28 66 6f 72 6d 61 74 20 22 20 45 72 72 6f 72 3a 20 25 73 22 20 68 74 74 70 2d 6d 73 67 29 20 .(format.".Error:.%s".http-msg).
2fd60 27 65 72 72 6f 72 29 29 29 0a 20 20 20 20 28 69 66 2d 6c 65 74 2a 20 28 28 67 70 74 65 6c 2d 77 'error))).....(if-let*.((gptel-w
2fd80 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 2d 62 indow.(get-buffer-window.gptel-b
2fda0 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 68 2d uffer.'visible))).........(with-
2fdc0 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 20 20 selected-window.gptel-window....
2fde0 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 20 20 .......(run-hook-with-args......
2fe00 20 20 20 20 20 20 27 67 70 74 65 6c 2d 70 6f 73 74 2d 72 65 73 70 6f 6e 73 65 2d 66 75 6e 63 74 ......'gptel-post-response-funct
2fe20 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 6f 6e ions............(marker-position
2fe40 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 6e 20 .start-marker).(marker-position.
2fe60 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 2d 63 tracking-marker))).......(with-c
2fe80 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 20 urrent-buffer.gptel-buffer......
2fea0 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 20 20 ...(run-hook-with-args..........
2fec0 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 0a 20 'gptel-post-response-functions..
2fee0 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 2d 6d ........(marker-position.start-m
2ff00 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 6e 67 arker).(marker-position.tracking
2ff20 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 61 6e -marker))))))..(defun.gptel--han
2ff40 64 6c 65 2d 74 6f 6f 6c 2d 75 73 65 20 28 66 73 6d 29 0a 20 20 22 52 75 6e 20 74 6f 6f 6c 20 63 dle-tool-use.(fsm)..."Run.tool.c
2ff60 61 6c 6c 73 20 63 61 70 74 75 72 65 64 20 69 6e 20 46 53 4d 2c 20 61 6e 64 20 61 64 76 61 6e 63 alls.captured.in.FSM,.and.advanc
2ff80 65 20 74 68 65 20 73 74 61 74 65 20 6d 61 63 68 69 6e 65 20 77 69 74 68 20 74 68 65 20 72 65 73 e.the.state.machine.with.the.res
2ffa0 75 6c 74 73 2e 22 0a 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 69 6e 66 6f 20 28 67 70 74 65 ults."...(when-let*.((info.(gpte
2ffc0 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 20 20 28 l-fsm-info.fsm))...............(
2ffe0 62 61 63 6b 65 6e 64 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 62 61 63 6b 65 6e 64 backend.(plist-get.info.:backend
30000 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 54 68 69 73 20 66 75 6e 63 74 69 6f ))...............;;.This.functio
30020 6e 20 6d 69 67 68 74 20 72 75 6e 20 6d 61 6e 79 20 74 69 6d 65 73 2c 20 73 6f 20 6f 6e 6c 79 20 n.might.run.many.times,.so.only.
30040 61 63 74 20 6f 6e 20 74 68 65 20 72 65 6d 61 69 6e 69 6e 67 20 74 6f 6f 6c 20 63 61 6c 6c 73 2e act.on.the.remaining.tool.calls.
30060 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 6f 6f 6c 2d 75 73 65 20 28 63 6c 2d 72 65 6d ...............(tool-use.(cl-rem
30080 6f 76 65 2d 69 66 20 28 6c 61 6d 62 64 61 20 28 74 63 29 20 28 70 6c 69 73 74 2d 67 65 74 20 74 ove-if.(lambda.(tc).(plist-get.t
300a0 63 20 3a 72 65 73 75 6c 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 c.:result)).....................
300c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 ..................(plist-get.inf
300e0 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 28 6e 74 o.:tool-use)))...............(nt
30100 6f 6f 6c 73 20 28 6c 65 6e 67 74 68 20 74 6f 6f 6c 2d 75 73 65 29 29 0a 20 20 20 20 20 20 20 20 ools.(length.tool-use)).........
30120 20 20 20 20 20 20 28 74 6f 6f 6c 2d 69 64 78 20 30 29 29 0a 20 20 20 20 28 77 69 74 68 2d 63 75 ......(tool-idx.0)).....(with-cu
30140 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 62 75 rrent-buffer.(plist-get.info.:bu
30160 66 66 65 72 29 0a 20 20 20 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 6d 6f 64 65 0a 20 20 20 ffer).......(when.gptel-mode....
30180 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 75 70 64 61 74 65 2d 73 74 61 74 75 73 0a 20 20 20 20 20 .....(gptel--update-status......
301a0 20 20 20 20 28 66 6f 72 6d 61 74 20 22 20 43 61 6c 6c 69 6e 67 20 74 6f 6f 6c 2e 2e 2e 22 20 29 ....(format.".Calling.tool...".)
301c0 20 27 6d 6f 64 65 2d 6c 69 6e 65 2d 65 6d 70 68 61 73 69 73 29 29 29 0a 0a 20 20 20 20 28 6c 65 .'mode-line-emphasis)))......(le
301e0 74 20 28 28 72 65 73 75 6c 74 2d 61 6c 69 73 74 29 20 28 70 65 6e 64 69 6e 67 2d 63 61 6c 6c 73 t.((result-alist).(pending-calls
30200 29 29 0a 20 20 20 20 20 20 28 6d 61 70 63 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 )).......(mapc..................
30220 20 20 20 20 20 20 20 20 20 20 20 3b 20 43 6f 6e 73 74 72 75 63 74 20 66 75 6e 63 74 69 6f 6e 20 ...........;.Construct.function.
30240 63 61 6c 6c 73 0a 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 29 calls........(lambda.(tool-call)
30260 0a 20 20 20 20 20 20 20 20 20 28 6c 65 74 72 65 63 20 28 28 61 72 67 73 20 28 70 6c 69 73 74 2d ..........(letrec.((args.(plist-
30280 67 65 74 20 74 6f 6f 6c 2d 63 61 6c 6c 20 3a 61 72 67 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 get.tool-call.:args))...........
302a0 20 20 20 20 20 20 20 20 28 6e 61 6d 65 20 28 70 6c 69 73 74 2d 67 65 74 20 74 6f 6f 6c 2d 63 61 ........(name.(plist-get.tool-ca
302c0 6c 6c 20 3a 6e 61 6d 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 72 ll.:name))...................(ar
302e0 67 2d 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 28 74 6f 6f g-values)...................(too
30300 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 28 63 6c 2d 66 69 l-spec....................(cl-fi
30320 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 28 6c 61 6d 62 64 nd-if.....................(lambd
30340 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 6e 61 6d 65 20 74 a.(ts).(equal.(gptel-tool-name.t
30360 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 20 20 20 20 28 70 s).name)).....................(p
30380 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 74 6f 6f 6c 73 29 29 29 0a 20 20 20 20 20 20 20 20 list-get.info.:tools))).........
303a0 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 63 65 73 73 2d 74 6f 6f 6c 2d 72 65 73 75 6c 74 0a 20 ..........(process-tool-result..
303c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 72 65 73 75 6c ..................(lambda.(resul
303e0 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 70 6c 69 73 74 2d 70 t)......................(plist-p
30400 75 74 20 69 6e 66 6f 20 3a 74 6f 6f 6c 2d 73 75 63 63 65 73 73 20 74 29 0a 20 20 20 20 20 20 20 ut.info.:tool-success.t)........
30420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 72 65 73 75 6c 74 20 28 67 70 74 ..............(let.((result.(gpt
30440 65 6c 2d 2d 74 6f 2d 73 74 72 69 6e 67 20 72 65 73 75 6c 74 29 29 29 0a 20 20 20 20 20 20 20 20 el--to-string.result))).........
30460 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 6f 6f 6c 2d 63 ...............(plist-put.tool-c
30480 61 6c 6c 20 3a 72 65 73 75 6c 74 20 72 65 73 75 6c 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 all.:result.result).............
304a0 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 70 65 63 ...........(push.(list.tool-spec
304c0 20 61 72 67 73 20 72 65 73 75 6c 74 29 20 72 65 73 75 6c 74 2d 61 6c 69 73 74 29 29 0a 20 20 20 .args.result).result-alist))....
304e0 20 20 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 74 6f 6f 6c 2d ..................(cl-incf.tool-
30500 69 64 78 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 idx)......................(when.
30520 28 3e 3d 20 74 6f 6f 6c 2d 69 64 78 20 6e 74 6f 6f 6c 73 29 20 3b 20 41 6c 6c 20 74 6f 6f 6c 73 (>=.tool-idx.ntools).;.All.tools
30540 20 68 61 76 65 20 72 75 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .have.run.......................
30560 20 28 67 70 74 65 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 .(gptel--inject-prompt..........
30580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 61 63 6b 65 6e 64 20 28 70 6c 69 73 74 2d 67 65 ...............backend.(plist-ge
305a0 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 20 20 20 20 t.info.:data)...................
305c0 20 20 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 ......(gptel--parse-tool-results
305e0 0a 20 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
30600 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)))..
30620 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 28 ......................(funcall.(
30640 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 63 61 6c 6c 62 61 63 6b 29 0a 20 20 20 20 20 20 plist-get.info.:callback).......
30660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 20 ..........................(cons.
30680 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 6e 66 6f 29 'tool-result.result-alist).info)
306a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d ........................(gptel--
306c0 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 20 20 20 20 20 20 fsm-transition.fsm))))).........
306e0 20 20 20 28 69 66 20 28 6e 75 6c 6c 20 74 6f 6f 6c 2d 73 70 65 63 29 0a 20 20 20 20 20 20 20 20 ...(if.(null.tool-spec).........
30700 20 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 55 6e 6b 6e 6f 77 6e 20 74 6f 6f 6c 20 63 61 .......(message."Unknown.tool.ca
30720 6c 6c 65 64 20 62 79 20 6d 6f 64 65 6c 3a 20 25 73 22 20 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 lled.by.model:.%s".name)........
30740 20 20 20 20 20 20 28 73 65 74 71 20 61 72 67 2d 76 61 6c 75 65 73 0a 20 20 20 20 20 20 20 20 20 ......(setq.arg-values..........
30760 20 20 20 20 20 20 20 20 20 20 28 6d 61 70 63 61 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..........(mapcar...............
30780 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 61 72 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 ......(lambda.(arg).............
307a0 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 6b 65 79 20 28 69 6e 74 65 72 6e 20 28 63 6f ..........(let.((key.(intern.(co
307c0 6e 63 61 74 20 22 3a 22 20 28 70 6c 69 73 74 2d 67 65 74 20 61 72 67 20 3a 6e 61 6d 65 29 29 29 ncat.":".(plist-get.arg.:name)))
307e0 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 )).........................(plis
30800 74 2d 67 65 74 20 61 72 67 73 20 6b 65 79 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 t-get.args.key)))...............
30820 20 20 20 20 20 20 28 67 70 74 65 6c 2d 74 6f 6f 6c 2d 61 72 67 73 20 74 6f 6f 6c 2d 73 70 65 63 ......(gptel-tool-args.tool-spec
30840 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 43 68 65 63 6b 20 69 66 20 74 6f 6f )))..............;;.Check.if.too
30860 6c 20 72 65 71 75 69 72 65 73 20 63 6f 6e 66 69 72 6d 61 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 l.requires.confirmation.........
30880 20 20 20 20 20 28 69 66 20 28 61 6e 64 20 67 70 74 65 6c 2d 63 6f 6e 66 69 72 6d 2d 74 6f 6f 6c .....(if.(and.gptel-confirm-tool
308a0 2d 63 61 6c 6c 73 20 28 6f 72 20 28 65 71 20 67 70 74 65 6c 2d 63 6f 6e 66 69 72 6d 2d 74 6f 6f -calls.(or.(eq.gptel-confirm-too
308c0 6c 2d 63 61 6c 6c 73 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 l-calls.t)......................
308e0 20 20 20 20 20 20 20 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
30900 70 74 65 6c 2d 74 6f 6f 6c 2d 63 6f 6e 66 69 72 6d 20 74 6f 6f 6c 2d 73 70 65 63 29 29 29 0a 20 ptel-tool-confirm.tool-spec)))..
30920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 6c 69 73 74 20 74 6f 6f 6c ................(push.(list.tool
30940 2d 73 70 65 63 20 61 72 67 2d 76 61 6c 75 65 73 20 70 72 6f 63 65 73 73 2d 74 6f 6f 6c 2d 72 65 -spec.arg-values.process-tool-re
30960 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 70 65 6e sult)........................pen
30980 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 3b 3b 20 49 66 ding-calls)................;;.If
309a0 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 20 20 .not,.run.the.tool..............
309c0 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 2d 73 70 65 ..(if.(gptel-tool-async.tool-spe
309e0 63 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 70 70 6c 79 20 28 67 70 c)....................(apply.(gp
30a00 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 63 29 0a 20 20 20 tel-tool-function.tool-spec)....
30a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 2d 74 .......................process-t
30a40 6f 6f 6c 2d 72 65 73 75 6c 74 20 61 72 67 2d 76 61 6c 75 65 73 29 0a 20 20 20 20 20 20 20 20 20 ool-result.arg-values)..........
30a60 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 72 65 73 75 6c 74 0a 20 20 20 20 20 20 20 20 20 20 ........(let.((result...........
30a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20 65 72 ..............(condition-case.er
30aa0 72 64 61 74 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rdata...........................
30ac0 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
30ae0 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)............
30b00 20 20 20 20 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 ...............(error.(mapconcat
30b20 20 23 27 67 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 .#'gptel--to-string.errdata.".")
30b40 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 66 75 6e 63 61 6c 6c ))))....................(funcall
30b60 20 70 72 6f 63 65 73 73 2d 74 6f 6f 6c 2d 72 65 73 75 6c 74 20 72 65 73 75 6c 74 29 29 29 29 29 .process-tool-result.result)))))
30b80 29 29 0a 20 20 20 20 20 20 20 74 6f 6f 6c 2d 75 73 65 29 0a 20 20 20 20 20 20 28 77 68 65 6e 20 ))........tool-use).......(when.
30ba0 70 65 6e 64 69 6e 67 2d 63 61 6c 6c 73 0a 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 pending-calls.........(with-curr
30bc0 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
30be0 65 72 29 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 er)...........(setq.gptel--fsm-l
30c00 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
30c20 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.......
30c40 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.".
30c60 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
30c80 73 29 29 29 0a 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 28 70 6c 69 73 74 2d 67 65 74 s))).........(funcall.(plist-get
30ca0 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 20 .info.:callback)................
30cc0 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 6c 6c 73 ..(cons.'tool-call.pending-calls
30ce0 29 20 69 6e 66 6f 29 29 29 29 29 0a 0a 3b 3b 3b 3b 20 53 74 61 74 65 20 6d 61 63 68 69 6e 65 20 ).info)))))..;;;;.State.machine.
30d00 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 64 20 74 6f predicates.;;.Predicates.used.to
30d20 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 73 69 74 69 .find.the.next.state.to.transiti
30d40 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 2d 2d 74 72 on.to,.see.;;.`gptel-request--tr
30d60 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 72 72 6f 72 ansitions'...(defun.gptel--error
30d80 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 72 72 6f 72 -p.(info).(plist-get.info.:error
30da0 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 20 28 69 6e ))..(defun.gptel--tool-use-p.(in
30dc0 66 6f 29 0a 20 20 28 61 6e 64 20 67 70 74 65 6c 2d 75 73 65 2d 74 6f 6f 6c 73 20 28 70 6c 69 73 fo)...(and.gptel-use-tools.(plis
30de0 74 2d 67 65 74 20 69 6e 66 6f 20 3a 74 6f 6f 6c 2d 75 73 65 29 29 29 0a 0a 28 64 65 66 75 6e 20 t-get.info.:tool-use)))..(defun.
30e00 67 70 74 65 6c 2d 2d 74 6f 6f 6c 2d 72 65 73 75 6c 74 2d 70 20 28 69 6e 66 6f 29 0a 20 20 28 61 gptel--tool-result-p.(info)...(a
30e20 6e 64 20 67 70 74 65 6c 2d 75 73 65 2d 74 6f 6f 6c 73 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e nd.gptel-use-tools.(plist-get.in
30e40 66 6f 20 3a 74 6f 6f 6c 2d 73 75 63 63 65 73 73 29 29 29 0a 0a 0c 0a 3b 3b 3b 20 53 65 6e 64 20 fo.:tool-success)))....;;;.Send.
30e60 71 75 65 72 69 65 73 2c 20 68 61 6e 64 6c 65 20 72 65 73 70 6f 6e 73 65 73 0a 28 63 6c 2d 64 65 queries,.handle.responses.(cl-de
30e80 66 75 6e 20 67 70 74 65 6c 2d 72 65 71 75 65 73 74 0a 20 20 20 20 28 26 6f 70 74 69 6f 6e 61 6c fun.gptel-request.....(&optional
30ea0 20 70 72 6f 6d 70 74 20 26 6b 65 79 20 63 61 6c 6c 62 61 63 6b 0a 20 20 20 20 20 20 20 20 20 20 .prompt.&key.callback...........
30ec0 20 20 20 20 20 28 62 75 66 66 65 72 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29 0a 20 .....(buffer.(current-buffer))..
30ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 6f 73 69 74 69 6f 6e 20 63 6f 6e 74 65 78 74 20 64 ..............position.context.d
30f00 72 79 2d 72 75 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 74 72 65 61 6d 20 6e 69 ry-run................(stream.ni
30f20 6c 29 20 28 69 6e 2d 70 6c 61 63 65 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 l).(in-place.nil)...............
30f40 20 28 73 79 73 74 65 6d 20 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 29 0a .(system.gptel--system-message).
30f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 73 6d 20 28 67 70 74 65 6c 2d 6d 61 6b 65 2d ...............(fsm.(gptel-make-
30f80 66 73 6d 29 29 29 0a 20 20 22 52 65 71 75 65 73 74 20 61 20 72 65 73 70 6f 6e 73 65 20 66 72 6f fsm)))..."Request.a.response.fro
30fa0 6d 20 74 68 65 20 60 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 27 20 66 6f 72 20 50 52 4f 4d 50 54 m.the.`gptel-backend'.for.PROMPT
30fc0 2e 0a 0a 54 68 65 20 72 65 71 75 65 73 74 20 69 73 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 2c 20 ...The.request.is.asynchronous,.
30fe0 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 69 6d 6d 65 64 69 61 74 65 6c this.function.returns.immediatel
31000 79 2e 0a 0a 49 66 20 50 52 4f 4d 50 54 20 69 73 0a 2d 20 61 20 73 74 72 69 6e 67 2c 20 69 74 20 y...If.PROMPT.is.-.a.string,.it.
31020 69 73 20 75 73 65 64 20 74 6f 20 63 72 65 61 74 65 20 61 20 66 75 6c 6c 20 70 72 6f 6d 70 74 20 is.used.to.create.a.full.prompt.
31040 73 75 69 74 61 62 6c 65 20 66 6f 72 0a 20 20 73 65 6e 64 69 6e 67 20 74 6f 20 74 68 65 20 4c 4c suitable.for...sending.to.the.LL
31060 4d 2e 0a 2d 20 41 20 6c 69 73 74 20 6f 66 20 73 74 72 69 6e 67 73 2c 20 69 74 20 69 73 20 69 6e M..-.A.list.of.strings,.it.is.in
31080 74 65 72 70 72 65 74 65 64 20 61 73 20 61 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 2c 20 69 2e 65 terpreted.as.a.conversation,.i.e
310a0 2e 20 61 0a 20 20 73 65 72 69 65 73 20 6f 66 20 61 6c 74 65 72 6e 61 74 69 6e 67 20 75 73 65 72 ..a...series.of.alternating.user
310c0 20 70 72 6f 6d 70 74 73 20 61 6e 64 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 73 2e 0a 2d 20 6e 69 .prompts.and.LLM.responses..-.ni
310e0 6c 20 62 75 74 20 72 65 67 69 6f 6e 20 69 73 20 61 63 74 69 76 65 2c 20 74 68 65 20 72 65 67 69 l.but.region.is.active,.the.regi
31100 6f 6e 20 63 6f 6e 74 65 6e 74 73 20 61 72 65 20 75 73 65 64 2e 0a 2d 20 6e 69 6c 2c 20 74 68 65 on.contents.are.used..-.nil,.the
31120 20 63 75 72 72 65 6e 74 20 62 75 66 66 65 72 27 73 20 63 6f 6e 74 65 6e 74 73 20 75 70 20 74 6f .current.buffer's.contents.up.to
31140 20 28 70 6f 69 6e 74 29 20 61 72 65 20 75 73 65 64 2e 0a 20 20 50 72 65 76 69 6f 75 73 20 72 65 .(point).are.used....Previous.re
31160 73 70 6f 6e 73 65 73 20 66 72 6f 6d 20 74 68 65 20 4c 4c 4d 20 61 72 65 20 69 64 65 6e 74 69 66 sponses.from.the.LLM.are.identif
31180 69 65 64 20 61 73 20 72 65 73 70 6f 6e 73 65 73 2e 0a 0a 4b 65 79 77 6f 72 64 20 61 72 67 75 6d ied.as.responses...Keyword.argum
311a0 65 6e 74 73 3a 0a 0a 43 41 4c 4c 42 41 43 4b 2c 20 69 66 20 73 75 70 70 6c 69 65 64 2c 20 69 73 ents:..CALLBACK,.if.supplied,.is
311c0 20 61 20 66 75 6e 63 74 69 6f 6e 20 6f 66 20 74 77 6f 20 61 72 67 75 6d 65 6e 74 73 2c 20 63 61 .a.function.of.two.arguments,.ca
311e0 6c 6c 65 64 0a 77 69 74 68 20 74 68 65 20 52 45 53 50 4f 4e 53 45 20 28 75 73 75 61 6c 6c 79 20 lled.with.the.RESPONSE.(usually.
31200 61 20 73 74 72 69 6e 67 29 20 61 6e 64 20 49 4e 46 4f 20 28 61 20 70 6c 69 73 74 29 3a 0a 0a 20 a.string).and.INFO.(a.plist):...
31220 28 66 75 6e 63 61 6c 6c 20 43 41 4c 4c 42 41 43 4b 20 52 45 53 50 4f 4e 53 45 20 49 4e 46 4f 29 (funcall.CALLBACK.RESPONSE.INFO)
31240 0a 0a 52 45 53 50 4f 4e 53 45 20 69 73 0a 0a 2d 20 41 20 73 74 72 69 6e 67 20 69 66 20 74 68 65 ..RESPONSE.is..-.A.string.if.the
31260 20 72 65 71 75 65 73 74 20 77 61 73 20 73 75 63 63 65 73 73 66 75 6c 0a 2d 20 6e 69 6c 20 69 66 .request.was.successful.-.nil.if
31280 20 74 68 65 72 65 20 77 61 73 20 6e 6f 20 72 65 73 70 6f 6e 73 65 20 6f 72 20 61 6e 20 65 72 72 .there.was.no.response.or.an.err
312a0 6f 72 2e 0a 0a 54 68 65 73 65 20 61 72 65 20 74 68 65 20 6f 6e 6c 79 20 74 77 6f 20 63 61 73 65 or...These.are.the.only.two.case
312c0 73 20 79 6f 75 20 74 79 70 69 63 61 6c 6c 79 20 6e 65 65 64 20 74 6f 20 63 6f 6e 73 69 64 65 72 s.you.typically.need.to.consider
312e0 2c 0a 75 6e 6c 65 73 73 20 79 6f 75 20 6e 65 65 64 20 74 6f 20 63 6c 65 61 6e 20 75 70 20 61 66 ,.unless.you.need.to.clean.up.af
31300 74 65 72 20 61 62 6f 72 74 65 64 20 72 65 71 75 65 73 74 73 2c 20 75 73 65 20 4c 4c 4d 0a 74 6f ter.aborted.requests,.use.LLM.to
31320 6f 6c 73 2c 20 68 61 6e 64 6c 65 20 5c 22 72 65 61 73 6f 6e 69 6e 67 5c 22 20 63 6f 6e 74 65 6e ols,.handle.\"reasoning\".conten
31340 74 20 73 70 65 63 69 61 6c 6c 79 20 6f 72 20 73 74 72 65 61 6d 0a 72 65 73 70 6f 6e 73 65 73 20 t.specially.or.stream.responses.
31360 28 73 65 65 20 53 54 52 45 41 4d 29 2e 20 20 49 6e 20 74 68 65 73 65 20 63 61 73 65 73 2c 20 52 (see.STREAM)...In.these.cases,.R
31380 45 53 50 4f 4e 53 45 20 63 61 6e 20 62 65 0a 0a 2d 20 54 68 65 20 73 79 6d 62 6f 6c 20 60 61 62 ESPONSE.can.be..-.The.symbol.`ab
313a0 6f 72 74 27 20 69 66 20 74 68 65 20 72 65 71 75 65 73 74 20 69 73 20 61 62 6f 72 74 65 64 2c 20 ort'.if.the.request.is.aborted,.
313c0 73 65 65 20 60 67 70 74 65 6c 2d 61 62 6f 72 74 27 2e 0a 0a 2d 20 41 20 63 6f 6e 73 20 63 65 6c see.`gptel-abort'...-.A.cons.cel
313e0 6c 20 6f 66 20 74 68 65 20 66 6f 72 6d 0a 0a 20 20 28 74 6f 6f 6c 2d 63 61 6c 6c 20 2e 20 28 28 l.of.the.form....(tool-call...((
31400 54 4f 4f 4c 20 41 52 47 53 20 43 42 29 20 2e 2e 2e 29 29 0a 0a 20 20 77 68 65 72 65 20 54 4f 4f TOOL.ARGS.CB)....))....where.TOO
31420 4c 20 69 73 20 61 20 67 70 74 65 6c 2d 74 6f 6f 6c 20 73 74 72 75 63 74 2c 20 41 52 47 53 20 69 L.is.a.gptel-tool.struct,.ARGS.i
31440 73 20 61 20 70 6c 69 73 74 20 6f 66 0a 20 20 61 72 67 75 6d 65 6e 74 73 2c 20 61 6e 64 20 43 42 s.a.plist.of...arguments,.and.CB
31460 20 69 73 20 61 20 66 75 6e 63 74 69 6f 6e 20 66 6f 72 20 68 61 6e 64 6c 69 6e 67 20 74 68 65 20 .is.a.function.for.handling.the.
31480 72 65 73 75 6c 74 73 2e 20 20 59 6f 75 0a 20 20 63 61 6e 20 63 61 6c 6c 20 43 42 20 77 69 74 68 results...You...can.call.CB.with
314a0 20 74 68 65 20 72 65 73 75 6c 74 20 6f 66 20 63 61 6c 6c 69 6e 67 20 74 68 65 20 74 6f 6f 6c 20 .the.result.of.calling.the.tool.
314c0 74 6f 20 63 6f 6e 74 69 6e 75 65 20 74 68 65 0a 20 20 72 65 71 75 65 73 74 2e 0a 0a 2d 20 41 20 to.continue.the...request...-.A.
314e0 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 6f 6c 2d 72 cons.cell.of.the.form....(tool-r
31500 65 73 75 6c 74 20 2e 20 28 28 54 4f 4f 4c 20 41 52 47 53 20 52 45 53 55 4c 54 29 20 2e 2e 2e 29 esult...((TOOL.ARGS.RESULT)....)
31520 29 0a 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 )....where.TOOL.is.a.gptel-tool.
31540 73 74 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 struct,.ARGS.is.a.plist.of...arg
31560 75 6d 65 6e 74 73 2c 20 61 6e 64 20 52 45 53 55 4c 54 20 77 61 73 20 72 65 74 75 72 6e 65 64 20 uments,.and.RESULT.was.returned.
31580 66 72 6f 6d 20 63 61 6c 6c 69 6e 67 20 74 68 65 20 74 6f 6f 6c 0a 20 20 66 75 6e 63 74 69 6f 6e from.calling.the.tool...function
315a0 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 6d 0a 0a 20 20 ...-.A.cons.cell.of.the.form....
315c0 28 72 65 61 73 6f 6e 69 6e 67 20 2e 20 74 65 78 74 29 0a 0a 20 20 77 68 65 72 65 20 74 65 78 74 (reasoning...text)....where.text
315e0 20 69 73 20 74 68 65 20 63 6f 6e 74 65 6e 74 73 20 6f 66 20 74 68 65 20 72 65 61 73 6f 6e 69 6e .is.the.contents.of.the.reasonin
31600 67 20 62 6c 6f 63 6b 2e 20 20 28 41 6c 73 6f 20 73 65 65 0a 20 20 53 54 52 45 41 4d 20 69 66 20 g.block...(Also.see...STREAM.if.
31620 79 6f 75 20 61 72 65 20 75 73 69 6e 67 20 73 74 72 65 61 6d 69 6e 67 2e 29 0a 0a 53 65 65 20 60 you.are.using.streaming.)..See.`
31640 67 70 74 65 6c 2d 2d 69 6e 73 65 72 74 2d 72 65 73 70 6f 6e 73 65 27 20 66 6f 72 20 61 6e 20 65 gptel--insert-response'.for.an.e
31660 78 61 6d 70 6c 65 20 63 61 6c 6c 62 61 63 6b 20 68 61 6e 64 6c 69 6e 67 20 61 6c 6c 0a 63 61 73 xample.callback.handling.all.cas
31680 65 73 2e 0a 0a 53 54 52 45 41 4d 20 69 73 20 61 20 62 6f 6f 6c 65 61 6e 20 74 68 61 74 20 64 65 es...STREAM.is.a.boolean.that.de
316a0 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 6c 64 20 termines.if.the.response.should.
316c0 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 65 61 6d be.streamed,.as.in.`gptel-stream
316e0 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 6e 64 20 '...If.the.model.or.the.backend.
31700 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 68 69 73 does.not.support.streaming,.this
31720 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 6d 69 6e .will.be.ignored...When.streamin
31740 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 62 65 20 g.responses..-.CALLBACK.will.be.
31760 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 45 53 50 called.repeatedly.with.each.RESP
31780 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 61 73 20 ONSE.text...chunk.(a.string).as.
317a0 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 54 50 20 it.is.received..-.When.the.HTTP.
317c0 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 4c 4c 42 request.ends.successfully,.CALLB
317e0 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 45 53 50 ACK.will.be...called.with.a.RESP
31800 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 65 20 73 ONSE.argument.of.t.to.indicate.s
31820 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 20 77 69 uccess..-.Similarly,.CALLBACK.wi
31840 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 67 20 2e ll.be.called.with...(reasoning..
31860 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 6e 67 20 .text-chunk).for.each.reasoning.
31880 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 74 6f 20 chunk,.and...(reasoning...t).to.
318a0 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 6e 69 6e indicate.the.end.of.the.reasonin
318c0 67 20 62 6c 6f 63 6b 2e 0a 0a 54 68 65 20 49 4e 46 4f 20 70 6c 69 73 74 20 68 61 73 20 28 61 74 g.block...The.INFO.plist.has.(at
318e0 20 6c 65 61 73 74 29 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 6b 65 79 73 3a 0a 3a 64 61 74 .least).the.following.keys:.:dat
31900 61 20 20 20 20 20 20 20 20 20 2d 20 54 68 65 20 72 65 71 75 65 73 74 20 64 61 74 61 20 69 6e 63 a.........-.The.request.data.inc
31920 6c 75 64 65 64 20 77 69 74 68 20 74 68 65 20 71 75 65 72 79 0a 3a 70 6f 73 69 74 69 6f 6e 20 20 luded.with.the.query.:position..
31940 20 20 20 2d 20 6d 61 72 6b 65 72 20 61 74 20 74 68 65 20 70 6f 69 6e 74 20 74 68 65 20 72 65 71 ...-.marker.at.the.point.the.req
31960 75 65 73 74 20 77 61 73 20 73 65 6e 74 2c 20 75 6e 6c 65 73 73 0a 20 20 20 20 20 20 20 20 20 20 uest.was.sent,.unless...........
31980 20 20 20 20 20 20 50 4f 53 49 54 49 4f 4e 20 69 73 20 73 70 65 63 69 66 69 65 64 2e 0a 3a 62 75 ......POSITION.is.specified..:bu
319a0 66 66 65 72 20 20 20 20 20 20 20 2d 20 54 68 65 20 62 75 66 66 65 72 20 63 75 72 72 65 6e 74 20 ffer.......-.The.buffer.current.
319c0 77 68 65 6e 20 74 68 65 20 72 65 71 75 65 73 74 20 77 61 73 20 73 65 6e 74 2c 0a 20 20 20 20 20 when.the.request.was.sent,......
319e0 20 20 20 20 20 20 20 20 20 20 20 75 6e 6c 65 73 73 20 42 55 46 46 45 52 20 69 73 20 73 70 65 63 ...........unless.BUFFER.is.spec
31a00 69 66 69 65 64 2e 0a 3a 73 74 61 74 75 73 20 20 20 20 20 20 20 2d 20 53 68 6f 72 74 20 73 74 72 ified..:status.......-.Short.str
31a20 69 6e 67 20 64 65 73 63 72 69 62 69 6e 67 20 74 68 65 20 72 65 73 75 6c 74 20 6f 66 20 74 68 65 ing.describing.the.result.of.the
31a40 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 20 69 6e 63 6c 75 64 .request,.................includ
31a60 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 0a 0a 45 78 61 6d 70 ing.possible.HTTP.errors...Examp
31a80 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 73 61 67 65 73 20 74 le.of.a.callback.that.messages.t
31aa0 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 0a 61 6e 64 20 69 6e he.user.with.the.response.and.in
31ac0 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 6e 66 6f 29 0a 20 20 fo:...(lambda.(response.info)...
31ae0 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 20 20 20 20 28 6c 65 (if.(stringp.response).......(le
31b00 74 20 28 28 70 6f 73 6e 20 28 6d 61 72 6b 65 72 2d 70 6f 73 69 74 69 6f 6e 20 28 70 6c 69 73 74 t.((posn.(marker-position.(plist
31b20 2d 67 65 74 20 69 6e 66 6f 20 3a 70 6f 73 69 74 69 6f 6e 29 29 29 0a 20 20 20 20 20 20 20 20 20 -get.info.:position)))..........
31b40 20 20 20 28 62 75 66 20 20 28 62 75 66 66 65 72 2d 6e 61 6d 65 20 28 70 6c 69 73 74 2d 67 65 74 ...(buf..(buffer-name.(plist-get
31b60 20 69 6e 66 6f 20 3a 62 75 66 66 65 72 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 6d 65 73 73 61 .info.:buffer)))).........(messa
31b80 67 65 20 5c 22 52 65 73 70 6f 6e 73 65 20 66 6f 72 20 72 65 71 75 65 73 74 20 66 72 6f 6d 20 25 ge.\"Response.for.request.from.%
31ba0 53 20 61 74 20 25 64 3a 20 25 73 5c 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 S.at.%d:.%s\"..................b
31bc0 75 66 20 70 6f 73 6e 20 72 65 73 70 6f 6e 73 65 29 29 0a 20 20 20 20 28 6d 65 73 73 61 67 65 20 uf.posn.response)).....(message.
31be0 5c 22 67 70 74 65 6c 2d 72 65 71 75 65 73 74 20 66 61 69 6c 65 64 20 77 69 74 68 20 6d 65 73 73 \"gptel-request.failed.with.mess
31c00 61 67 65 3a 20 25 73 5c 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 67 65 age:.%s\"..............(plist-ge
31c20 74 20 69 6e 66 6f 20 3a 73 74 61 74 75 73 29 29 29 29 0a 0a 4f 72 2c 20 66 6f 72 20 6a 75 73 74 t.info.:status))))..Or,.for.just
31c40 20 74 68 65 20 72 65 73 70 6f 6e 73 65 3a 0a 0a 20 28 6c 61 6d 62 64 61 20 28 72 65 73 70 6f 6e .the.response:...(lambda.(respon
31c60 73 65 20 5f 29 0a 20 20 3b 3b 20 44 6f 20 73 6f 6d 65 74 68 69 6e 67 20 77 69 74 68 20 72 65 73 se._)...;;.Do.something.with.res
31c80 70 6f 6e 73 65 0a 20 20 28 6d 65 73 73 61 67 65 20 28 72 6f 74 31 33 2d 73 74 72 69 6e 67 20 72 ponse...(message.(rot13-string.r
31ca0 65 73 70 6f 6e 73 65 29 29 29 0a 0a 49 66 20 43 41 4c 4c 42 41 43 4b 20 69 73 20 6f 6d 69 74 74 esponse)))..If.CALLBACK.is.omitt
31cc0 65 64 2c 20 74 68 65 20 72 65 73 70 6f 6e 73 65 20 69 73 20 69 6e 73 65 72 74 65 64 20 61 74 20 ed,.the.response.is.inserted.at.
31ce0 74 68 65 20 70 6f 69 6e 74 20 74 68 65 0a 72 65 71 75 65 73 74 20 77 61 73 20 73 65 6e 74 2e 0a the.point.the.request.was.sent..
31d00 0a 42 55 46 46 45 52 20 61 6e 64 20 50 4f 53 49 54 49 4f 4e 20 61 72 65 20 74 68 65 20 62 75 66 .BUFFER.and.POSITION.are.the.buf
31d20 66 65 72 20 61 6e 64 20 70 6f 73 69 74 69 6f 6e 20 28 69 6e 74 65 67 65 72 20 6f 72 0a 6d 61 72 fer.and.position.(integer.or.mar
31d40 6b 65 72 29 20 61 74 20 77 68 69 63 68 20 74 68 65 20 72 65 73 70 6f 6e 73 65 20 69 73 20 69 6e ker).at.which.the.response.is.in
31d60 73 65 72 74 65 64 2e 20 20 49 66 20 61 20 43 41 4c 4c 42 41 43 4b 20 69 73 0a 73 70 65 63 69 66 serted...If.a.CALLBACK.is.specif
31d80 69 65 64 2c 20 6e 6f 20 72 65 73 70 6f 6e 73 65 20 69 73 20 69 6e 73 65 72 74 65 64 20 61 6e 64 ied,.no.response.is.inserted.and
31da0 20 74 68 65 73 65 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 0a 69 67 6e 6f 72 65 64 2c 20 62 75 .these.arguments.are.ignored,.bu
31dc0 74 20 74 68 65 79 20 61 72 65 20 73 74 69 6c 6c 20 61 76 61 69 6c 61 62 6c 65 20 69 6e 20 74 68 t.they.are.still.available.in.th
31de0 65 20 49 4e 46 4f 20 70 6c 69 73 74 20 70 61 73 73 65 64 0a 74 6f 20 43 41 4c 4c 42 41 43 4b 20 e.INFO.plist.passed.to.CALLBACK.
31e00 66 6f 72 20 79 6f 75 20 74 6f 20 75 73 65 2e 0a 0a 42 55 46 46 45 52 20 64 65 66 61 75 6c 74 73 for.you.to.use...BUFFER.defaults
31e20 20 74 6f 20 74 68 65 20 63 75 72 72 65 6e 74 20 62 75 66 66 65 72 2c 20 61 6e 64 20 50 4f 53 49 .to.the.current.buffer,.and.POSI
31e40 54 49 4f 4e 20 74 6f 20 74 68 65 20 76 61 6c 75 65 0a 6f 66 20 28 70 6f 69 6e 74 29 20 6f 72 20 TION.to.the.value.of.(point).or.
31e60 28 72 65 67 69 6f 6e 2d 65 6e 64 29 2c 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 77 68 65 74 68 (region-end),.depending.on.wheth
31e80 65 72 20 74 68 65 20 72 65 67 69 6f 6e 20 69 73 0a 61 63 74 69 76 65 2e 0a 0a 43 4f 4e 54 45 58 er.the.region.is.active...CONTEX
31ea0 54 20 69 73 20 61 6e 79 20 61 64 64 69 74 69 6f 6e 61 6c 20 64 61 74 61 20 6e 65 65 64 65 64 20 T.is.any.additional.data.needed.
31ec0 66 6f 72 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 74 6f 20 72 75 6e 2e 20 49 74 0a 69 73 20 69 for.the.callback.to.run..It.is.i
31ee0 6e 63 6c 75 64 65 64 20 69 6e 20 74 68 65 20 49 4e 46 4f 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 ncluded.in.the.INFO.argument.to.
31f00 74 68 65 20 63 61 6c 6c 62 61 63 6b 2e 0a 4e 6f 74 65 3a 20 54 68 69 73 20 69 73 20 69 6e 74 65 the.callback..Note:.This.is.inte
31f20 6e 64 65 64 20 66 6f 72 20 73 74 6f 72 69 6e 67 20 45 6d 61 63 73 20 73 74 61 74 65 20 74 6f 20 nded.for.storing.Emacs.state.to.
31f40 62 65 20 75 73 65 64 20 62 79 0a 43 41 4c 4c 42 41 43 4b 2c 20 61 6e 64 20 75 6e 72 65 6c 61 74 be.used.by.CALLBACK,.and.unrelat
31f60 65 64 20 74 6f 20 74 68 65 20 63 6f 6e 74 65 78 74 20 73 75 70 70 6c 69 65 64 20 74 6f 20 74 68 ed.to.the.context.supplied.to.th
31f80 65 20 4c 4c 4d 2e 0a 0a 53 59 53 54 45 4d 20 69 73 20 74 68 65 20 73 79 73 74 65 6d 20 6d 65 73 e.LLM...SYSTEM.is.the.system.mes
31fa0 73 61 67 65 20 6f 72 20 65 78 74 65 6e 64 65 64 20 63 68 61 74 20 64 69 72 65 63 74 69 76 65 20 sage.or.extended.chat.directive.
31fc0 73 65 6e 74 20 74 6f 0a 74 68 65 20 4c 4c 4d 2e 20 20 54 68 69 73 20 63 61 6e 20 62 65 20 61 20 sent.to.the.LLM...This.can.be.a.
31fe0 73 74 72 69 6e 67 2c 20 61 20 6c 69 73 74 20 6f 66 20 73 74 72 69 6e 67 73 20 6f 72 20 61 20 66 string,.a.list.of.strings.or.a.f
32000 75 6e 63 74 69 6f 6e 0a 74 68 61 74 20 72 65 74 75 72 6e 73 20 65 69 74 68 65 72 3b 20 73 65 65 unction.that.returns.either;.see
32020 20 60 67 70 74 65 6c 2d 64 69 72 65 63 74 69 76 65 73 27 20 66 6f 72 20 6d 6f 72 65 0a 69 6e 66 .`gptel-directives'.for.more.inf
32040 6f 72 6d 61 74 69 6f 6e 2e 20 49 66 20 53 59 53 54 45 4d 20 69 73 20 6f 6d 69 74 74 65 64 2c 20 ormation..If.SYSTEM.is.omitted,.
32060 74 68 65 20 76 61 6c 75 65 20 6f 66 0a 60 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 the.value.of.`gptel--system-mess
32080 61 67 65 27 20 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 62 75 66 66 65 72 20 69 73 20 75 age'.for.the.current.buffer.is.u
320a0 73 65 64 2e 0a 0a 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 6b 65 79 77 6f 72 64 73 20 61 72 65 sed...The.following.keywords.are
320c0 20 6d 61 69 6e 6c 79 20 66 6f 72 20 69 6e 74 65 72 6e 61 6c 20 75 73 65 3a 0a 0a 49 4e 2d 50 4c .mainly.for.internal.use:..IN-PL
320e0 41 43 45 20 69 73 20 61 20 62 6f 6f 6c 65 61 6e 20 75 73 65 64 20 62 79 20 74 68 65 20 64 65 66 ACE.is.a.boolean.used.by.the.def
32100 61 75 6c 74 20 63 61 6c 6c 62 61 63 6b 20 77 68 65 6e 20 69 6e 73 65 72 74 69 6e 67 0a 74 68 65 ault.callback.when.inserting.the
32120 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 69 66 20 64 65 6c 69 6d 69 .response.to.determine.if.delimi
32140 74 65 72 73 20 61 72 65 20 6e 65 65 64 65 64 20 62 65 74 77 65 65 6e 20 74 68 65 0a 70 72 6f 6d ters.are.needed.between.the.prom
32160 70 74 20 61 6e 64 20 74 68 65 20 72 65 73 70 6f 6e 73 65 2e 0a 0a 49 66 20 44 52 59 2d 52 55 4e pt.and.the.response...If.DRY-RUN
32180 20 69 73 20 6e 6f 6e 2d 6e 69 6c 2c 20 63 6f 6e 73 74 72 75 63 74 20 61 6e 64 20 72 65 74 75 72 .is.non-nil,.construct.and.retur
321a0 6e 20 74 68 65 20 66 75 6c 6c 20 71 75 65 72 79 20 64 61 74 61 0a 61 73 20 75 73 75 61 6c 2c 20 n.the.full.query.data.as.usual,.
321c0 62 75 74 20 64 6f 20 6e 6f 74 20 73 65 6e 64 20 74 68 65 20 72 65 71 75 65 73 74 2e 0a 0a 46 53 but.do.not.send.the.request...FS
321e0 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 67 20 74 M.is.the.state.machine.driving.t
32200 68 65 20 72 65 71 75 65 73 74 2e 20 20 54 68 69 73 20 63 61 6e 20 62 65 20 75 73 65 64 0a 74 6f he.request...This.can.be.used.to
32220 20 64 65 66 69 6e 65 20 61 20 63 75 73 74 6f 6d 20 72 65 71 75 65 73 74 20 63 6f 6e 74 72 6f 6c .define.a.custom.request.control
32240 20 66 6c 6f 77 2c 20 73 65 65 20 60 67 70 74 65 6c 2d 66 73 6d 27 20 66 6f 72 0a 64 65 74 61 69 .flow,.see.`gptel-fsm'.for.detai
32260 6c 73 2e 20 20 59 6f 75 20 63 61 6e 20 73 61 66 65 6c 79 20 69 67 6e 6f 72 65 20 74 68 69 73 20 ls...You.can.safely.ignore.this.
32280 2d 2d 20 46 53 4d 20 69 73 20 61 6e 20 75 6e 73 74 61 62 6c 65 0a 66 65 61 74 75 72 65 20 61 6e --.FSM.is.an.unstable.feature.an
322a0 64 20 73 75 62 6a 65 63 74 20 74 6f 20 63 68 61 6e 67 65 2e 0a 0a 4e 6f 74 65 3a 0a 0a 31 2e 20 d.subject.to.change...Note:..1..
322c0 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 6e 6f 74 20 66 75 6c 6c 79 20 73 65 6c 66 2d This.function.is.not.fully.self-
322e0 63 6f 6e 74 61 69 6e 65 64 2e 20 20 43 6f 6e 73 69 64 65 72 0a 6c 65 74 2d 62 69 6e 64 69 6e 67 contained...Consider.let-binding
32300 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 73 20 60 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 27 2c .the.parameters.`gptel-backend',
32320 20 60 67 70 74 65 6c 2d 6d 6f 64 65 6c 27 2c 0a 60 67 70 74 65 6c 2d 75 73 65 2d 74 6f 6f 6c 73 .`gptel-model',.`gptel-use-tools
32340 27 20 61 6e 64 20 60 67 70 74 65 6c 2d 75 73 65 2d 63 6f 6e 74 65 78 74 27 20 61 72 6f 75 6e 64 '.and.`gptel-use-context'.around
32360 20 63 61 6c 6c 73 20 74 6f 20 69 74 20 61 73 0a 72 65 71 75 69 72 65 64 2e 0a 0a 32 2e 20 54 68 .calls.to.it.as.required...2..Th
32380 65 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20 6f 66 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 e.return.value.of.this.function.
323a0 69 73 20 61 20 73 74 61 74 65 20 6d 61 63 68 69 6e 65 20 74 68 61 74 20 6d 61 79 0a 62 65 20 75 is.a.state.machine.that.may.be.u
323c0 73 65 64 20 74 6f 20 72 65 72 75 6e 20 6f 72 20 63 6f 6e 74 69 6e 75 65 20 74 68 65 20 72 65 71 sed.to.rerun.or.continue.the.req
323e0 75 65 73 74 20 61 74 20 61 20 6c 61 74 65 72 20 74 69 6d 65 2e 22 0a 20 20 28 64 65 63 6c 61 72 uest.at.a.later.time."...(declar
32400 65 20 28 69 6e 64 65 6e 74 20 31 29 29 0a 20 20 3b 3b 20 54 4f 44 4f 20 52 65 6d 6f 76 65 20 74 e.(indent.1))...;;.TODO.Remove.t
32420 68 69 73 20 63 68 65 63 6b 20 69 6e 20 76 65 72 73 69 6f 6e 20 31 2e 30 0a 20 20 28 67 70 74 65 his.check.in.version.1.0...(gpte
32440 6c 2d 2d 73 61 6e 69 74 69 7a 65 2d 6d 6f 64 65 6c 29 0a 20 20 28 6c 65 74 2a 20 28 28 64 69 72 l--sanitize-model)...(let*.((dir
32460 65 63 74 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 73 ective.(gptel--parse-directive.s
32480 79 73 74 65 6d 29 29 0a 20 20 20 20 20 20 20 20 20 3b 3b 20 44 49 52 45 43 54 49 56 45 20 63 6f ystem))..........;;.DIRECTIVE.co
324a0 6e 74 61 69 6e 73 20 62 6f 74 68 20 74 68 65 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 20 61 ntains.both.the.system.message.a
324c0 6e 64 20 74 68 65 20 74 65 6d 70 6c 61 74 65 20 70 72 6f 6d 70 74 73 0a 20 20 20 20 20 20 20 20 nd.the.template.prompts.........
324e0 20 28 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 .(gptel--system-message.........
32500 20 20 3b 3b 20 41 64 64 20 63 6f 6e 74 65 78 74 20 63 68 75 6e 6b 73 20 74 6f 20 73 79 73 74 65 ..;;.Add.context.chunks.to.syste
32520 6d 20 6d 65 73 73 61 67 65 20 69 66 20 72 65 71 75 69 72 65 64 0a 20 20 20 20 20 20 20 20 20 20 m.message.if.required...........
32540 28 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 (unless.(gptel--model-capable-p.
32560 27 6e 6f 73 79 73 74 65 6d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 61 6e 64 20 'nosystem).............(if.(and.
32580 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 gptel-context--alist............
325a0 20 20 20 20 20 20 20 20 20 20 28 65 71 20 67 70 74 65 6c 2d 75 73 65 2d 63 6f 6e 74 65 78 74 20 ..........(eq.gptel-use-context.
325c0 27 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 28 67 70 74 65 6c 'system)).................(gptel
325e0 2d 63 6f 6e 74 65 78 74 2d 2d 77 72 61 70 20 28 63 61 72 20 64 69 72 65 63 74 69 76 65 29 29 0a -context--wrap.(car.directive)).
32600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 61 72 20 64 69 72 65 63 74 69 76 65 29 29 29 29 ..............(car.directive))))
32620 0a 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 ..........;;.TODO(tool).Limit.to
32640 6f 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 ol.use.to.capable.models.after.d
32660 6f 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 ocumenting.:capabilities........
32680 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 70 74 65 ..;;.(gptel-use-tools.(and.(gpte
326a0 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 20 67 70 l--model-capable-p.'tool-use).gp
326c0 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 28 73 74 72 65 61 6d tel-use-tools))..........(stream
326e0 20 28 61 6e 64 20 73 74 72 65 61 6d 20 67 70 74 65 6c 2d 75 73 65 2d 63 75 72 6c 0a 20 20 20 20 .(and.stream.gptel-use-curl.....
32700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 48 41 43 4b 28 74 6f 6f 6c 29 3a ..................;;.HACK(tool):
32720 20 6e 6f 20 73 74 72 65 61 6d 20 69 66 20 4f 6c 6c 61 6d 61 20 2b 20 74 6f 6f 6c 73 2e 20 20 4e .no.stream.if.Ollama.+.tools...N
32740 65 65 64 20 74 6f 20 66 69 6e 64 20 61 20 62 65 74 74 65 72 20 77 61 79 0a 20 20 20 20 20 20 20 eed.to.find.a.better.way........
32760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 6f 74 20 28 61 6e 64 20 28 65 71 20 28 74 79 ...............(not.(and.(eq.(ty
32780 70 65 2d 6f 66 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 20 27 67 70 74 65 6c 2d 6f 6c 6c 61 pe-of.gptel-backend).'gptel-olla
327a0 6d 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 20 20 20 20 20 20 ma).............................
327c0 20 20 20 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 20 67 70 74 65 6c 2d 75 73 65 2d 74 6f 6f 6c 73 29 ....gptel-tools.gptel-use-tools)
327e0 29 0a 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 43 68 65 63 6b ).......................;;.Check
32800 20 6d 6f 64 65 6c 2d 73 70 65 63 69 66 69 63 20 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 20 66 .model-specific.request-params.f
32820 6f 72 20 73 74 72 65 61 6d 69 6e 67 20 70 72 65 66 65 72 65 6e 63 65 0a 20 20 20 20 20 20 20 20 or.streaming.preference.........
32840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 6d 6f 64 65 6c 2d 70 61 72 61 ..............(let*.((model-para
32860 6d 73 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 ms.(gptel--model-request-params.
32880 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 20 20 20 gptel-model))...................
328a0 20 20 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 ...........(stream-spec.(plist-g
328c0 65 74 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 et.model-params.:stream)))......
328e0 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 72 65 ...................;;.If.not.pre
32900 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 69 63 sent,.there.is.no.model-specific
32920 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 20 20 .preference.....................
32940 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 20 6d 6f 64 65 6c ....(or.(not.(memq.:stream.model
32960 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 20 20 20 20 20 20 -params)).......................
32980 20 20 20 20 20 20 3b 3b 20 49 66 20 70 72 65 73 65 6e 74 2c 20 69 74 20 6d 75 73 74 20 6e 6f 74 ......;;.If.present,.it.must.not
329a0 20 62 65 20 3a 6a 73 6f 6e 2d 66 61 6c 73 65 20 6f 72 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 .be.:json-false.or.nil..........
329c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 73 74 72 65 61 6d 2d 73 ...................(and.stream-s
329e0 70 65 63 20 28 6e 6f 74 20 28 65 71 20 73 74 72 65 61 6d 2d 73 70 65 63 20 3a 6a 73 6f 6e 2d 66 pec.(not.(eq.stream-spec.:json-f
32a00 61 6c 73 65 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 alse))))).......................
32a20 3b 3b 20 43 68 65 63 6b 20 62 61 63 6b 65 6e 64 2d 73 70 65 63 69 66 69 63 20 73 74 72 65 61 6d ;;.Check.backend-specific.stream
32a40 69 6e 67 20 73 65 74 74 69 6e 67 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ing.settings....................
32a60 20 20 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 73 74 72 65 61 6d 20 67 70 74 65 6c 2d 62 ...(gptel-backend-stream.gptel-b
32a80 61 63 6b 65 6e 64 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 73 74 72 65 61 6d ackend)))..........(gptel-stream
32aa0 20 73 74 72 65 61 6d 29 0a 20 20 20 20 20 20 20 20 20 28 73 74 61 72 74 2d 6d 61 72 6b 65 72 0a .stream)..........(start-marker.
32ac0 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 28 28 6e 75 6c ..........(cond............((nul
32ae0 6c 20 70 6f 73 69 74 69 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 75 73 65 l.position).............(if.(use
32b00 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 28 73 65 74 2d -region-p).................(set-
32b20 6d 61 72 6b 65 72 20 28 6d 61 6b 65 2d 6d 61 72 6b 65 72 29 20 28 72 65 67 69 6f 6e 2d 65 6e 64 marker.(make-marker).(region-end
32b40 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 61 74 2d 77 6f 72 64 ))...............(gptel--at-word
32b60 2d 65 6e 64 20 28 70 6f 69 6e 74 2d 6d 61 72 6b 65 72 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 -end.(point-marker))))..........
32b80 20 20 28 28 6d 61 72 6b 65 72 70 20 70 6f 73 69 74 69 6f 6e 29 20 70 6f 73 69 74 69 6f 6e 29 0a ..((markerp.position).position).
32ba0 20 20 20 20 20 20 20 20 20 20 20 28 28 69 6e 74 65 67 65 72 70 20 70 6f 73 69 74 69 6f 6e 29 0a ...........((integerp.position).
32bc0 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 6d 61 6b 65 2d 6d 61 ............(set-marker.(make-ma
32be0 72 6b 65 72 29 20 70 6f 73 69 74 69 6f 6e 20 62 75 66 66 65 72 29 29 29 29 0a 20 20 20 20 20 20 rker).position.buffer)))).......
32c00 20 20 20 28 66 75 6c 6c 2d 70 72 6f 6d 70 74 0a 20 20 20 20 20 20 20 20 20 20 28 6e 63 6f 6e 63 ...(full-prompt...........(nconc
32c20 0a 20 20 20 20 20 20 20 20 20 20 20 28 63 64 72 20 64 69 72 65 63 74 69 76 65 29 20 20 20 20 20 ............(cdr.directive).....
32c40 20 20 20 20 20 20 3b 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 ......;prompt.constructed.from.d
32c60 69 72 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 20 28 63 6f irective/template............(co
32c80 6e 64 20 20 20 20 20 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 nd.....................;prompt.f
32ca0 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 70 70 6c 69 65 rom.buffer.or.explicitly.supplie
32cc0 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 28 6e 75 6c 6c 20 70 72 6f 6d 70 74 29 0a 20 20 20 d.............((null.prompt)....
32ce0 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 63 72 65 61 74 65 2d 70 72 6f 6d 70 74 20 ..........(gptel--create-prompt.
32d00 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 28 28 73 74 72 start-marker)).............((str
32d20 69 6e 67 70 20 70 72 6f 6d 70 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c ingp.prompt)..............(gptel
32d40 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 6e 69 --with-buffer-copy.buffer.nil.ni
32d60 6c 0a 20 20 20 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 l................(insert.prompt)
32d80 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 73 69 6f 6e 20 ................(save-excursion.
32da0 28 72 75 6e 2d 68 6f 6f 6b 73 20 27 67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 66 69 6c 74 65 72 2d (run-hooks.'gptel-prompt-filter-
32dc0 68 6f 6f 6b 29 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 77 72 hook))................(gptel--wr
32de0 61 70 2d 75 73 65 72 2d 70 72 6f 6d 70 74 2d 6d 61 79 62 65 0a 20 20 20 20 20 20 20 20 20 20 20 ap-user-prompt-maybe............
32e00 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 20 20 20 20 20 .....(gptel--parse-buffer.......
32e20 20 20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 28 61 6e 64 20 67 70 ...........gptel-backend.(and.gp
32e40 74 65 6c 2d 2d 6e 75 6d 2d 6d 65 73 73 61 67 65 73 2d 74 6f 2d 73 65 6e 64 0a 20 20 20 20 20 20 tel--num-messages-to-send.......
32e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 2a ..............................(*
32e80 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 29 .2.gptel--num-messages-to-send))
32ea0 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 28 63 6f 6e 73 70 20 70 72 6f 6d 70 74 29 )))).............((consp.prompt)
32ec0 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 62 61 63 6b 65 6e .(gptel--parse-list.gptel-backen
32ee0 64 20 70 72 6f 6d 70 74 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 69 6e 66 6f 20 28 6c 69 d.prompt)))))..........(info.(li
32f00 73 74 20 3a 64 61 74 61 20 28 67 70 74 65 6c 2d 2d 72 65 71 75 65 73 74 2d 64 61 74 61 20 67 70 st.:data.(gptel--request-data.gp
32f20 74 65 6c 2d 62 61 63 6b 65 6e 64 20 66 75 6c 6c 2d 70 72 6f 6d 70 74 29 0a 20 20 20 20 20 20 20 tel-backend.full-prompt)........
32f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 62 75 66 66 65 72 20 62 75 66 66 65 72 0a 20 20 20 ..............:buffer.buffer....
32f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 70 6f 73 69 74 69 6f 6e 20 73 74 61 72 ..................:position.star
32f80 74 2d 6d 61 72 6b 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 t-marker......................:b
32fa0 61 63 6b 65 6e 64 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 ackend.gptel-backend))).....(whe
32fc0 6e 20 73 74 72 65 61 6d 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 73 74 72 65 61 6d n.stream.(plist-put.info.:stream
32fe0 20 74 29 29 0a 20 20 20 20 3b 3b 20 54 68 69 73 20 63 6f 6e 74 65 78 74 20 73 68 6f 75 6c 64 20 .t)).....;;.This.context.should.
33000 6e 6f 74 20 62 65 20 63 6f 6e 66 75 73 65 64 20 77 69 74 68 20 74 68 65 20 63 6f 6e 74 65 78 74 not.be.confused.with.the.context
33020 20 61 67 67 72 65 67 61 74 69 6f 6e 20 63 6f 6e 74 65 78 74 21 0a 20 20 20 20 28 77 68 65 6e 20 .aggregation.context!.....(when.
33040 63 61 6c 6c 62 61 63 6b 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 63 61 6c 6c 62 61 callback.(plist-put.info.:callba
33060 63 6b 20 63 61 6c 6c 62 61 63 6b 29 29 0a 20 20 20 20 28 77 68 65 6e 20 63 6f 6e 74 65 78 74 20 ck.callback)).....(when.context.
33080 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 63 6f 6e 74 65 78 74 20 63 6f 6e 74 65 78 74 (plist-put.info.:context.context
330a0 29 29 0a 20 20 20 20 28 77 68 65 6e 20 69 6e 2d 70 6c 61 63 65 20 28 70 6c 69 73 74 2d 70 75 74 )).....(when.in-place.(plist-put
330c0 20 69 6e 66 6f 20 3a 69 6e 2d 70 6c 61 63 65 20 69 6e 2d 70 6c 61 63 65 29 29 0a 20 20 20 20 28 .info.:in-place.in-place)).....(
330e0 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 20 20 20 when.gptel-include-reasoning....
33100 20 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 ...;Required.for.next-request-on
33120 6c 79 20 73 63 6f 70 65 0a 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a ly.scope.......(plist-put.info.:
33140 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 64 65 2d include-reasoning.gptel-include-
33160 72 65 61 73 6f 6e 69 6e 67 29 29 0a 20 20 20 20 28 77 68 65 6e 20 28 61 6e 64 20 67 70 74 65 6c reasoning)).....(when.(and.gptel
33180 2d 75 73 65 2d 74 6f 6f 6c 73 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 29 0a 20 20 20 20 20 20 28 70 -use-tools.gptel-tools).......(p
331a0 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 74 6f 6f 6c 73 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 list-put.info.:tools.gptel-tools
331c0 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 65 20 6d 61 63 68 )).....;;.Add.info.to.state.mach
331e0 69 6e 65 20 63 6f 6e 74 65 78 74 0a 20 20 20 20 28 73 65 74 66 20 28 67 70 74 65 6c 2d 66 73 6d ine.context.....(setf.(gptel-fsm
33200 2d 69 6e 66 6f 20 66 73 6d 29 20 69 6e 66 6f 29 29 0a 20 20 28 75 6e 6c 65 73 73 20 64 72 79 2d -info.fsm).info))...(unless.dry-
33220 72 75 6e 20 28 67 70 74 65 6c 2d 2d 66 73 6d 2d 74 72 61 6e 73 69 74 69 6f 6e 20 66 73 6d 29 29 run.(gptel--fsm-transition.fsm))
33240 20 3b 49 4e 49 54 20 2d 3e 20 57 41 49 54 0a 20 20 66 73 6d 29 0a 0a 28 64 65 66 75 6e 20 67 70 .;INIT.->.WAIT...fsm)..(defun.gp
33260 74 65 6c 2d 61 62 6f 72 74 20 28 62 75 66 29 0a 20 20 22 53 74 6f 70 20 61 6e 79 20 61 63 74 69 tel-abort.(buf)..."Stop.any.acti
33280 76 65 20 67 70 74 65 6c 20 70 72 6f 63 65 73 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 ve.gptel.process.associated.with
332a0 20 62 75 66 66 65 72 20 42 55 46 2e 0a 0a 42 55 46 20 64 65 66 61 75 6c 74 73 20 74 6f 20 74 68 .buffer.BUF...BUF.defaults.to.th
332c0 65 20 63 75 72 72 65 6e 74 20 62 75 66 66 65 72 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 e.current.buffer."...(interactiv
332e0 65 20 28 6c 69 73 74 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29 29 0a 20 20 28 77 68 e.(list.(current-buffer)))...(wh
33300 65 6e 2d 6c 65 74 2a 20 28 28 70 72 6f 63 2d 61 74 74 72 73 0a 20 20 20 20 20 20 20 20 20 20 20 en-let*.((proc-attrs............
33320 20 20 20 20 28 63 6c 2d 66 69 6e 64 2d 69 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ....(cl-find-if.................
33340 28 6c 61 6d 62 64 61 20 28 70 72 6f 63 2d 6c 69 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 (lambda.(proc-list).............
33360 20 20 20 20 20 20 28 65 71 20 28 74 68 72 65 61 64 2d 66 69 72 73 74 20 28 63 64 72 20 70 72 6f ......(eq.(thread-first.(cdr.pro
33380 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 20 20 20 20 20 20 20 c-list).........................
333a0 20 20 20 20 20 20 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 ............(gptel-fsm-info)....
333c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
333e0 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 20 20 20 .(plist-get.:buffer))...........
33400 20 20 20 20 20 20 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 ............buf))...............
33420 20 20 67 70 74 65 6c 2d 2d 72 65 71 75 65 73 74 2d 61 6c 69 73 74 29 29 0a 20 20 20 20 20 20 20 ..gptel--request-alist))........
33440 20 20 20 20 20 20 20 28 70 72 6f 63 20 28 63 61 72 20 70 72 6f 63 2d 61 74 74 72 73 29 29 0a 20 .......(proc.(car.proc-attrs))..
33460 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
33480 66 6f 20 28 63 64 72 20 70 72 6f 63 2d 61 74 74 72 73 29 29 29 29 0a 20 20 20 20 3b 3b 20 52 75 fo.(cdr.proc-attrs)))).....;;.Ru
334a0 6e 20 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 n.callback.with.abort.signal....
334c0 20 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 .(with-demoted-errors."Callback.
334e0 65 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 error:.%S".......(and-let*.((cb.
33500 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 29 0a 20 20 20 20 (plist-get.info.:callback)).....
33520 20 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 .............((functionp.cb)))..
33540 20 20 20 20 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 ..........(funcall.cb.'abort.inf
33560 6f 29 29 29 0a 20 20 20 20 28 69 66 20 67 70 74 65 6c 2d 75 73 65 2d 63 75 72 6c 0a 20 20 20 20 o))).....(if.gptel-use-curl.....
33580 20 20 20 20 28 70 72 6f 67 6e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ....(progn......................
335a0 20 20 3b 43 6c 65 61 6e 20 75 70 20 43 75 72 6c 20 70 72 6f 63 65 73 73 0a 20 20 20 20 20 20 20 ..;Clean.up.Curl.process........
335c0 20 20 20 28 73 65 74 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 ...(setf.(alist-get.proc.gptel--
335e0 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).
33600 20 20 20 20 20 20 20 20 20 20 28 73 65 74 2d 70 72 6f 63 65 73 73 2d 73 65 6e 74 69 6e 65 6c 20 ..........(set-process-sentinel.
33620 70 72 6f 63 20 23 27 69 67 6e 6f 72 65 29 0a 20 20 20 20 20 20 20 20 20 20 28 64 65 6c 65 74 65 proc.#'ignore)...........(delete
33640 2d 70 72 6f 63 65 73 73 20 70 72 6f 63 29 0a 20 20 20 20 20 20 20 20 20 20 28 6b 69 6c 6c 2d 62 -process.proc)...........(kill-b
33660 75 66 66 65 72 20 28 70 72 6f 63 65 73 73 2d 62 75 66 66 65 72 20 70 72 6f 63 29 29 29 0a 20 20 uffer.(process-buffer.proc)))...
33680 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 63 61 6c 6c 62 61 63 6b 20 23 27 ....(plist-put.info.:callback.#'
336a0 69 67 6e 6f 72 65 29 0a 20 20 20 20 20 20 28 6c 65 74 20 28 6b 69 6c 6c 2d 62 75 66 66 65 72 2d ignore).......(let.(kill-buffer-
336c0 71 75 65 72 79 2d 66 75 6e 63 74 69 6f 6e 73 29 0a 20 20 20 20 20 20 20 20 28 6b 69 6c 6c 2d 62 query-functions).........(kill-b
336e0 75 66 66 65 72 20 70 72 6f 63 29 29 29 20 20 20 20 20 20 20 20 20 20 20 20 3b 43 61 6e 27 74 20 uffer.proc)))............;Can't.
33700 73 74 6f 70 20 75 72 6c 2d 72 65 74 72 69 65 76 65 20 70 72 6f 63 65 73 73 0a 20 20 20 20 28 77 stop.url-retrieve.process.....(w
33720 69 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 ith-current-buffer.buf.......(wh
33740 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 61 en.gptel-mode.(gptel--update-sta
33760 74 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 tus..".Abort".'error))).....(mes
33780 73 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 sage."Stopped.gptel.request.in.b
337a0 75 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 uffer.%S".(buffer-name.buf))))..
337c0 3b 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 ;;.TODO:.Handle.multiple.request
337e0 73 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 s(#15)..(Only.one.request.from.o
33800 6e 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 ne.buffer.at.a.time?).;;;###auto
33820 6c 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 load.(defun.gptel-send.(&optiona
33840 6c 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 l.arg)..."Submit.this.prompt.to.
33860 74 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 the.current.LLM.backend...By.def
33880 61 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 ault,.the.contents.of.the.buffer
338a0 20 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 .up.to.the.cursor.position.are.s
338c0 65 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 ent...If.the.region.is.active,.i
338e0 74 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 ts.contents.are.sent.instead...T
33900 68 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 he.response.from.the.LLM.is.inse
33920 72 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 rted.below.the.cursor.position.a
33940 74 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 t.the.time.of.sending...To.chang
33960 65 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 e.this.behavior.or.model.paramet
33980 65 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 ers,.use.prefix.arg.ARG.activate
339a0 20 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 .a.transient.menu.with.more.opti
339c0 6f 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 ons.instead...This.command.is.as
339e0 79 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 ynchronous,.you.can.continue.to.
33a00 75 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 use.Emacs.while.waiting.for.the.
33a20 72 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 response."...(interactive."P")..
33a40 20 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 .(if.(and.arg.(require.'gptel-tr
33a60 61 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 ansient.nil.t)).......(call-inte
33a80 72 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 6d 65 73 ractively.#'gptel-menu).....(mes
33aa0 73 61 67 65 20 22 51 75 65 72 79 69 6e 67 20 25 73 2e 2e 2e 22 20 28 67 70 74 65 6c 2d 62 61 63 sage."Querying.%s...".(gptel-bac
33ac0 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 28 67 kend-name.gptel-backend)).....(g
33ae0 70 74 65 6c 2d 2d 73 61 6e 69 74 69 7a 65 2d 6d 6f 64 65 6c 29 0a 20 20 20 20 28 67 70 74 65 6c ptel--sanitize-model).....(gptel
33b00 2d 72 65 71 75 65 73 74 20 6e 69 6c 0a 20 20 20 20 20 20 3a 73 74 72 65 61 6d 20 67 70 74 65 6c -request.nil.......:stream.gptel
33b20 2d 73 74 72 65 61 6d 0a 20 20 20 20 20 20 3a 66 73 6d 20 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 66 -stream.......:fsm.(gptel-make-f
33b40 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
33b60 73 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 74 75 73 20 22 20 s)).....(gptel--update-status.".
33b80 57 61 69 74 69 6e 67 2e 2e 2e 22 20 27 77 61 72 6e 69 6e 67 29 29 29 0a 0a 28 64 65 63 6c 61 72 Waiting...".'warning)))..(declar
33ba0 65 2d 66 75 6e 63 74 69 6f 6e 20 6a 73 6f 6e 2d 70 72 65 74 74 79 2d 70 72 69 6e 74 2d 62 75 66 e-function.json-pretty-print-buf
33bc0 66 65 72 20 22 6a 73 6f 6e 22 29 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 69 6e 73 70 65 63 fer."json").(defun.gptel--inspec
33be0 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 2d 66 73 6d 20 66 t-query.(&optional.request-fsm.f
33c00 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 4d 20 71 75 65 72 ormat)..."Show.the.full.LLM.quer
33c20 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 75 66 66 65 72 2e y.that.will.be.sent.in.a.buffer.
33c40 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 72 75 6e 20 6f 66 ..This.functions.as.a.dry.run.of
33c60 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 74 20 64 61 74 61 .`gptel-send'...The.request.data
33c80 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 72 79 20 63 6f 6e .may.be.edited.and.the.query.con
33ca0 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 52 45 51 55 45 53 tinued.from.this.buffer...REQUES
33cc0 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 72 65 71 75 65 73 T-FSM.is.the.state.of.the.reques
33ce0 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 65 71 75 65 73 74 t,.as.returned.by.`gptel-request
33d00 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 6c 20 6a 73 6f 6e '...If.FORMAT.is.the.symbol.json
33d20 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 65 72 79 20 69 6e ,.show.the.encoded.JSON.query.in
33d40 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 65 20 67 70 74 65 stead.of.the.Lisp.structure.gpte
33d60 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 2d 66 73 6d 20 28 l.uses."...(unless.request-fsm.(
33d80 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 6d 2d 6c 61 73 74 setq.request-fsm.gptel--fsm-last
33da0 29 29 0a 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 67 65 74 2d 62 ))...(with-current-buffer.(get-b
33dc0 75 66 66 65 72 2d 63 72 65 61 74 65 20 22 2a 67 70 74 65 6c 2d 71 75 65 72 79 2a 22 29 0a 20 20 uffer-create."*gptel-query*")...
33de0 20 20 28 6c 65 74 2a 20 28 28 73 74 61 6e 64 61 72 64 2d 6f 75 74 70 75 74 20 28 63 75 72 72 65 ..(let*.((standard-output.(curre
33e00 6e 74 2d 62 75 66 66 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 68 69 62 69 74 2d nt-buffer))............(inhibit-
33e20 72 65 61 64 2d 6f 6e 6c 79 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 72 65 71 75 65 73 74 read-only.t)............(request
33e40 2d 64 61 74 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 67 65 74 20 28 67 70 -data.............(plist-get.(gp
33e60 74 65 6c 2d 66 73 6d 2d 69 6e 66 6f 20 72 65 71 75 65 73 74 2d 66 73 6d 29 20 3a 64 61 74 61 29 tel-fsm-info.request-fsm).:data)
33e80 29 29 0a 20 20 20 20 20 20 28 62 75 66 66 65 72 2d 64 69 73 61 62 6c 65 2d 75 6e 64 6f 29 0a 20 )).......(buffer-disable-undo)..
33ea0 20 20 20 20 20 28 65 72 61 73 65 2d 62 75 66 66 65 72 29 0a 20 20 20 20 20 20 28 69 66 20 28 65 .....(erase-buffer).......(if.(e
33ec0 71 20 66 6f 72 6d 61 74 20 27 6a 73 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 67 6e q.format.'json)...........(progn
33ee0 20 28 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 .(fundamental-mode).............
33f00 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
33f20 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)).................
33f40 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 20 20 .(json-pretty-print-buffer))....
33f60 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 20 20 28 70 .....(lisp-data-mode).........(p
33f80 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 20 28 70 70 2d 62 rin1.request-data).........(pp-b
33fa0 75 66 66 65 72 29 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 uffer)).......(setq-local.gptel-
33fc0 2d 66 73 6d 2d 6c 61 73 74 20 72 65 71 75 65 73 74 2d 66 73 6d 29 0a 20 20 20 20 20 20 28 67 6f -fsm-last.request-fsm).......(go
33fe0 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 0a 20 20 20 20 20 20 28 76 69 65 77 to-char.(point-min)).......(view
34000 2d 6d 6f 64 65 20 31 29 0a 20 20 20 20 20 20 28 73 65 74 71 20 62 75 66 66 65 72 2d 75 6e 64 6f -mode.1).......(setq.buffer-undo
34020 2d 6c 69 73 74 20 6e 69 6c 29 0a 20 20 20 20 20 20 28 75 73 65 2d 6c 6f 63 61 6c 2d 6d 61 70 0a -list.nil).......(use-local-map.
34040 20 20 20 20 20 20 20 28 6d 61 6b 65 2d 63 6f 6d 70 6f 73 65 64 2d 6b 65 79 6d 61 70 0a 20 20 20 .......(make-composed-keymap....
34060 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 22 43 .....(define-keymap..........."C
34080 2d 63 20 43 2d 63 22 20 23 27 67 70 74 65 6c 2d 2d 63 6f 6e 74 69 6e 75 65 2d 71 75 65 72 79 0a -c.C-c".#'gptel--continue-query.
340a0 20 20 20 20 20 20 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 .........."C-c.C-k".#'quit-windo
340c0 77 29 0a 20 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 w).........(current-local-map)))
340e0 0a 20 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 .......(unless.header-line-forma
34100 74 0a 20 20 20 20 20 20 20 20 28 73 65 74 71 20 68 65 61 64 65 72 2d 6c 69 6e 65 2d 66 6f 72 6d t.........(setq.header-line-form
34120 61 74 0a 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 6f 6d at...............(substitute-com
34140 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 28 63 6f 6e 63 61 74 mand-keys................(concat
34160 0a 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 75 65 73 74 3a 20 ................."Edit.request:.
34180 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 20 20 20 20 20 20 \\[read-only-mode],"............
341a0 20 20 20 20 20 22 20 53 65 6e 64 20 72 65 71 75 65 73 74 3a 20 5c 5c 5b 67 70 74 65 6c 2d 2d 63 .....".Send.request:.\\[gptel--c
341c0 6f 6e 74 69 6e 75 65 2d 71 75 65 72 79 5d 2c 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ontinue-query],"................
341e0 20 22 20 51 75 69 74 3a 20 5c 5c 5b 71 75 69 74 2d 77 69 6e 64 6f 77 5d 22 29 29 29 29 0a 20 20 .".Quit:.\\[quit-window]"))))...
34200 20 20 20 20 28 64 69 73 70 6c 61 79 2d 62 75 66 66 65 72 20 28 63 75 72 72 65 6e 74 2d 62 75 66 ....(display-buffer.(current-buf
34220 66 65 72 29 20 67 70 74 65 6c 2d 64 69 73 70 6c 61 79 2d 62 75 66 66 65 72 2d 61 63 74 69 6f 6e fer).gptel-display-buffer-action
34240 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 63 6f 6e 74 69 6e 75 65 2d 71 75 65 ))))..(defun.gptel--continue-que
34260 72 79 20 28 29 0a 20 20 22 43 6f 6e 74 69 6e 75 65 20 73 65 6e 64 69 6e 67 20 74 68 65 20 67 70 ry.()..."Continue.sending.the.gp
34280 74 65 6c 20 71 75 65 72 79 20 64 69 73 70 6c 61 79 65 64 20 69 6e 20 74 68 69 73 20 62 75 66 66 tel.query.displayed.in.this.buff
342a0 65 72 2e 0a 0a 54 68 65 20 72 65 71 75 65 73 74 20 69 73 20 63 6f 6e 74 69 6e 75 65 64 20 77 69 er...The.request.is.continued.wi
342c0 74 68 20 74 68 65 20 73 61 6d 65 20 70 61 72 61 6d 65 74 65 72 73 20 61 73 20 6f 72 69 67 69 6e th.the.same.parameters.as.origin
342e0 61 6c 6c 79 0a 73 70 65 63 69 66 69 65 64 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 20 ally.specified."...(interactive.
34300 6e 69 6c 20 6c 69 73 70 2d 64 61 74 61 2d 6d 6f 64 65 20 66 75 6e 64 61 6d 65 6e 74 61 6c 2d 6d nil.lisp-data-mode.fundamental-m
34320 6f 64 65 29 0a 20 20 28 75 6e 6c 65 73 73 20 28 65 71 75 61 6c 20 28 62 75 66 66 65 72 2d 6e 61 ode)...(unless.(equal.(buffer-na
34340 6d 65 29 20 22 2a 67 70 74 65 6c 2d 71 75 65 72 79 2a 22 29 0a 20 20 20 20 28 75 73 65 72 2d 65 me)."*gptel-query*").....(user-e
34360 72 72 6f 72 20 22 54 68 69 73 20 63 6f 6d 6d 61 6e 64 20 69 73 20 6d 65 61 6e 74 20 66 6f 72 20 rror."This.command.is.meant.for.
34380 75 73 65 20 69 6e 20 61 20 67 70 74 65 6c 20 64 72 79 2d 72 75 6e 20 62 75 66 66 65 72 2e 22 29 use.in.a.gptel.dry-run.buffer.")
343a0 29 0a 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 28 67 6f 74 6f 2d 63 68 )...(save-excursion.....(goto-ch
343c0 61 72 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 0a 20 20 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 ar.(point-min)).....(condition-c
343e0 61 73 65 2d 75 6e 6c 65 73 73 2d 64 65 62 75 67 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 28 77 68 ase-unless-debug.nil.........(wh
34400 65 6e 2d 6c 65 74 2a 20 28 28 64 61 74 61 20 28 69 66 20 28 65 71 20 6d 61 6a 6f 72 2d 6d 6f 64 en-let*.((data.(if.(eq.major-mod
34420 65 20 27 6c 69 73 70 2d 64 61 74 61 2d 6d 6f 64 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 e.'lisp-data-mode)..............
34440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 61 64 20 28 63 75 72 72 65 6e 74 2d .................(read.(current-
34460 62 75 66 66 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 buffer))........................
34480 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 6a 73 6f 6e 2d 72 65 61 64 29 29 29 29 0a 20 20 20 20 20 .....(gptel--json-read))))......
344a0 20 20 20 20 20 28 63 6c 2d 61 73 73 65 72 74 20 28 63 6c 2d 74 79 70 65 70 20 67 70 74 65 6c 2d .....(cl-assert.(cl-typep.gptel-
344c0 2d 66 73 6d 2d 6c 61 73 74 20 27 67 70 74 65 6c 2d 66 73 6d 29 29 0a 20 20 20 20 20 20 20 20 20 -fsm-last.'gptel-fsm))..........
344e0 20 28 70 6c 69 73 74 2d 70 75 74 20 28 67 70 74 65 6c 2d 66 73 6d 2d 69 6e 66 6f 20 67 70 74 65 .(plist-put.(gptel-fsm-info.gpte
34500 6c 2d 2d 66 73 6d 2d 6c 61 73 74 29 20 3a 64 61 74 61 20 64 61 74 61 29 0a 20 20 20 20 20 20 20 l--fsm-last).:data.data)........
34520 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 67 70 74 65 6c 2d ...(gptel--fsm-transition.gptel-
34540 2d 66 73 6d 2d 6c 61 73 74 29 20 20 20 3b 49 4e 49 54 20 2d 3e 20 57 41 49 54 0a 20 20 20 20 20 -fsm-last)...;INIT.->.WAIT......
34560 20 20 20 20 20 28 71 75 69 74 2d 77 69 6e 64 6f 77 29 29 0a 20 20 20 20 20 20 28 65 72 72 6f 72 .....(quit-window)).......(error
34580 0a 20 20 20 20 20 20 20 28 75 73 65 72 2d 65 72 72 6f 72 20 22 43 61 6e 20 6e 6f 74 20 72 65 73 ........(user-error."Can.not.res
345a0 75 6d 65 20 72 65 71 75 65 73 74 3a 20 63 6f 75 6c 64 20 6e 6f 74 20 72 65 61 64 20 64 61 74 61 ume.request:.could.not.read.data
345c0 20 66 72 6f 6d 20 62 75 66 66 65 72 21 22 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 .from.buffer!")))))..(defun.gpte
345e0 6c 2d 2d 69 6e 73 65 72 74 2d 72 65 73 70 6f 6e 73 65 20 28 72 65 73 70 6f 6e 73 65 20 69 6e 66 l--insert-response.(response.inf
34600 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 74 68 65 20 4c o.&optional.raw)..."Insert.the.L
34620 4c 4d 20 52 45 53 50 4f 4e 53 45 20 69 6e 74 6f 20 74 68 65 20 67 70 74 65 6c 20 62 75 66 66 65 LM.RESPONSE.into.the.gptel.buffe
34640 72 2e 0a 0a 49 4e 46 4f 20 69 73 20 61 20 70 6c 69 73 74 20 63 6f 6e 74 61 69 6e 69 6e 67 20 69 r...INFO.is.a.plist.containing.i
34660 6e 66 6f 72 6d 61 74 69 6f 6e 20 72 65 6c 65 76 61 6e 74 20 74 6f 20 74 68 69 73 20 62 75 66 66 nformation.relevant.to.this.buff
34680 65 72 2e 0a 53 65 65 20 60 67 70 74 65 6c 2d 2d 75 72 6c 2d 67 65 74 2d 72 65 73 70 6f 6e 73 65 er..See.`gptel--url-get-response
346a0 27 20 66 6f 72 20 64 65 74 61 69 6c 73 2e 0a 0a 4f 70 74 69 6f 6e 61 6c 20 52 41 57 20 64 69 73 '.for.details...Optional.RAW.dis
346c0 61 62 6c 65 73 20 74 65 78 74 20 70 72 6f 70 65 72 74 69 65 73 20 61 6e 64 20 74 72 61 6e 73 66 ables.text.properties.and.transf
346e0 6f 72 6d 61 74 69 6f 6e 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 67 70 74 65 6c 2d 62 75 66 66 65 ormation."...(let*.((gptel-buffe
34700 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 29 0a 20 20 20 20 r.(plist-get.info.:buffer)).....
34720 20 20 20 20 20 28 73 74 61 72 74 2d 6d 61 72 6b 65 72 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e .....(start-marker.(plist-get.in
34740 66 6f 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 fo.:position))..........(trackin
34760 67 2d 6d 61 72 6b 65 72 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 74 72 61 63 6b 69 g-marker.(plist-get.info.:tracki
34780 6e 67 2d 6d 61 72 6b 65 72 29 29 29 0a 20 20 20 20 28 70 63 61 73 65 20 72 65 73 70 6f 6e 73 65 ng-marker))).....(pcase.response
347a0 0a 20 20 20 20 20 20 28 28 70 72 65 64 20 73 74 72 69 6e 67 70 29 20 20 20 20 20 20 20 20 20 20 .......((pred.stringp)..........
347c0 20 20 20 20 20 20 3b 52 65 73 70 6f 6e 73 65 20 74 65 78 74 0a 20 20 20 20 20 20 20 28 77 69 74 ......;Response.text........(wit
347e0 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 67 70 74 65 6c 2d 62 75 66 66 65 72 0a 20 20 h-current-buffer.gptel-buffer...
34800 20 20 20 20 20 20 20 28 77 68 65 6e 20 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 20 20 20 20 .......(when.tracking-marker....
34820 20 20 20 20 20 20 20 3b 73 65 70 61 72 61 74 65 20 66 72 6f 6d 20 70 72 65 76 69 6f 75 73 20 72 .......;separate.from.previous.r
34840 65 73 70 6f 6e 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 72 65 73 70 6f 6e 73 esponse............(setq.respons
34860 65 20 28 63 6f 6e 63 61 74 20 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 73 65 70 61 72 61 74 e.(concat.gptel-response-separat
34880 6f 72 20 72 65 73 70 6f 6e 73 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 73 61 76 65 2d 65 78 or.response)))..........(save-ex
348a0 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 cursion............(with-current
348c0 2d 62 75 66 66 65 72 20 28 6d 61 72 6b 65 72 2d 62 75 66 66 65 72 20 73 74 61 72 74 2d 6d 61 72 -buffer.(marker-buffer.start-mar
348e0 6b 65 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 6f 72 ker)..............(goto-char.(or
34900 20 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 20 73 74 61 72 74 2d 6d 61 72 6b 65 72 29 29 0a .tracking-marker.start-marker)).
34920 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 28 72 75 6e 2d 68 6f 6f 6b 73 20 27 67 70 74 65 .............;;.(run-hooks.'gpte
34940 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 20 20 20 20 20 20 l-pre-response-hook)............
34960 20 20 28 75 6e 6c 65 73 73 20 28 6f 72 20 28 62 6f 62 70 29 20 28 70 6c 69 73 74 2d 67 65 74 20 ..(unless.(or.(bobp).(plist-get.
34980 69 6e 66 6f 20 3a 69 6e 2d 70 6c 61 63 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 info.:in-place).................
349a0 20 20 20 20 20 20 20 20 20 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 29 0a 20 20 20 20 20 20 .........tracking-marker).......
349c0 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d .........(insert.gptel-response-
349e0 73 65 70 61 72 61 74 6f 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 separator)................(when.
34a00 67 70 74 65 6c 2d 6d 6f 64 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 gptel-mode..................(ins
34a20 65 72 74 20 28 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 70 72 65 66 69 78 2d 73 74 72 69 6e ert.(gptel-response-prefix-strin
34a40 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 61 72 6b 65 72 g)))................(move-marker
34a60 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 20 20 20 20 20 .start-marker.(point))).........
34a80 20 20 20 20 20 28 75 6e 6c 65 73 73 20 72 61 77 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .....(unless.raw................
34aa0 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 74 72 61 6e 73 66 6f 72 6d 65 72 20 28 70 6c 69 73 74 2d (when-let*.((transformer.(plist-
34ac0 67 65 74 20 69 6e 66 6f 20 3a 74 72 61 6e 73 66 6f 72 6d 65 72 29 29 29 0a 20 20 20 20 20 20 20 get.info.:transformer)))........
34ae0 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 6c ..........(setq.response.(funcal
34b00 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 20 l.transformer.response))).......
34b20 20 20 20 20 20 20 20 20 20 28 61 64 64 2d 74 65 78 74 2d 70 72 6f 70 65 72 74 69 65 73 0a 20 20 .........(add-text-properties...
34b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 30 20 28 6c 65 6e 67 74 68 20 72 65 73 70 6f 6e 73 65 ..............0.(length.response
34b60 29 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 74 69 63 6b 79 20 ).'(gptel.response.front-sticky.
34b80 28 67 70 74 65 6c 29 29 20 72 65 73 70 6f 6e 73 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 (gptel)).response)).............
34ba0 20 28 69 6e 73 65 72 74 20 72 65 73 70 6f 6e 73 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 .(insert.response)..............
34bc0 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 (plist-put.info.:tracking-marker
34be0 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 6f 69 6e 74 2d 6d 61 .(setq.tracking-marker.(point-ma
34c00 72 6b 65 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 66 6f 72 20 75 6e 69 66 rker)))..............;;.for.unif
34c20 6f 72 6d 69 74 79 20 77 69 74 68 20 73 74 72 65 61 6d 69 6e 67 20 72 65 73 70 6f 6e 73 65 73 0a ormity.with.streaming.responses.
34c40 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 65 72 74 69 .............(set-marker-inserti
34c60 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 29 29 29 29 0a 20 on-type.tracking-marker.t)))))..
34c80 20 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 .....(`(reasoning...,text)......
34ca0 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 69 6e 63 6c 75 64 65 20 28 70 6c 69 73 74 2d 67 65 ..(when-let*.((include.(plist-ge
34cc0 74 20 69 6e 66 6f 20 3a 69 6e 63 6c 75 64 65 2d 72 65 61 73 6f 6e 69 6e 67 29 29 29 0a 20 20 20 t.info.:include-reasoning)))....
34ce0 20 20 20 20 20 20 28 69 66 20 28 73 74 72 69 6e 67 70 20 69 6e 63 6c 75 64 65 29 0a 20 20 20 20 ......(if.(stringp.include).....
34d00 20 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 67 .........(with-current-buffer.(g
34d20 65 74 2d 62 75 66 66 65 72 2d 63 72 65 61 74 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 et-buffer-create................
34d40 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
34d60 6e 66 6f 20 3a 69 6e 63 6c 75 64 65 2d 72 65 61 73 6f 6e 69 6e 67 29 29 0a 20 20 20 20 20 20 20 nfo.:include-reasoning))........
34d80 20 20 20 20 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 20 28 67 6f 74 6f 2d 63 68 ........(save-excursion.(goto-ch
34da0 61 72 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 20 28 69 6e 73 65 72 74 20 74 65 78 74 29 29 29 0a ar.(point-max)).(insert.text))).
34dc0 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.
34de0 28 6d 61 72 6b 65 72 2d 62 75 66 66 65 72 20 73 74 61 72 74 2d 6d 61 72 6b 65 72 29 0a 20 20 20 (marker-buffer.start-marker)....
34e00 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 62 6c 6f 63 6b 73 20 28 69 66 20 28 64 65 72 ..........(let.((blocks.(if.(der
34e20 69 76 65 64 2d 6d 6f 64 65 2d 70 20 27 6f 72 67 2d 6d 6f 64 65 29 0a 20 20 20 20 20 20 20 20 20 ived-mode-p.'org-mode)..........
34e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 60 28 22 23 2b 62 65 67 69 6e ......................`("#+begin
34e60 5f 72 65 61 73 6f 6e 69 6e 67 5c 6e 22 20 2e 20 2c 28 63 6f 6e 63 61 74 20 22 5c 6e 23 2b 65 6e _reasoning\n"...,(concat."\n#+en
34e80 64 5f 72 65 61 73 6f 6e 69 6e 67 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 d_reasoning"....................
34ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
34ec0 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 6f 72 ........gptel-response-separator
34ee0 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 ))..............................
34f00 3b 3b 20 54 4f 44 4f 28 72 65 61 73 6f 6e 69 6e 67 29 20 72 65 6d 6f 76 65 20 70 72 6f 70 65 72 ;;.TODO(reasoning).remove.proper
34f20 74 69 65 73 20 61 6e 64 20 73 74 72 69 70 20 69 6e 73 74 65 61 64 0a 20 20 20 20 20 20 20 20 20 ties.and.strip.instead..........
34f40 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 70 72 6f 70 65 ....................(cons.(prope
34f60 72 74 69 7a 65 20 22 60 60 60 20 72 65 61 73 6f 6e 69 6e 67 5c 6e 22 20 27 67 70 74 65 6c 20 27 rtize."```.reasoning\n".'gptel.'
34f80 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 20 20 20 20 20 20 ignore).........................
34fa0 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 ...........(concat.(propertize."
34fc0 5c 6e 60 60 60 22 20 27 67 70 74 65 6c 20 27 69 67 6e 6f 72 65 29 0a 20 20 20 20 20 20 20 20 20 \n```".'gptel.'ignore)..........
34fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
35000 20 20 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 73 65 70 61 72 61 74 6f 72 29 29 29 29 29 0a ..gptel-response-separator))))).
35020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 65 71 20 69 6e 63 6c 75 64 65 20 27 ...............(if.(eq.include.'
35040 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 20 28 70 72 6f 67 ignore)....................(prog
35060 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 64 64 2d 74 65 78 74 n......................(add-text
35080 2d 70 72 6f 70 65 72 74 69 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -properties.....................
350a0 20 20 30 20 28 6c 65 6e 67 74 68 20 74 65 78 74 29 20 27 28 67 70 74 65 6c 20 69 67 6e 6f 72 65 ..0.(length.text).'(gptel.ignore
350c0 20 66 72 6f 6e 74 2d 73 74 69 63 6b 79 20 28 67 70 74 65 6c 29 29 20 74 65 78 74 29 0a 20 20 20 .front-sticky.(gptel)).text)....
350e0 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
35100 2d 72 65 73 70 6f 6e 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -response.......................
35120 28 63 6f 6e 63 61 74 20 28 63 61 72 20 62 6c 6f 63 6b 73 29 20 74 65 78 74 20 28 63 64 72 20 62 (concat.(car.blocks).text.(cdr.b
35140 6c 6f 63 6b 73 29 29 20 69 6e 66 6f 20 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 locks)).info.t))................
35160 20 20 28 67 70 74 65 6c 2d 2d 69 6e 73 65 72 74 2d 72 65 73 70 6f 6e 73 65 20 28 63 61 72 20 62 ..(gptel--insert-response.(car.b
35180 6c 6f 63 6b 73 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 locks).info.t)..................
351a0 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
351c0 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
351e0 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)
35200 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-
35220 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...
35240 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..
35260 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
35280 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)).
352a0 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
352c0 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
352e0 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.(
35300 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")
35320 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
35340 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...,
35360 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
35380 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)).
353a0 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
353c0 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
353e0 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)))))
35400 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 77 72 61 70 2d 75 73 65 72 2d 70 72 6f 6d 70 74 ..(defun.gptel--wrap-user-prompt
35420 2d 6d 61 79 62 65 20 28 70 72 6f 6d 70 74 73 29 0a 20 20 22 52 65 74 75 72 6e 20 50 52 4f 4d 50 -maybe.(prompts)..."Return.PROMP
35440 54 53 20 77 72 61 70 70 65 64 20 77 69 74 68 20 74 65 78 74 20 61 6e 64 20 6d 65 64 69 61 20 63 TS.wrapped.with.text.and.media.c
35460 6f 6e 74 65 78 74 2e 0a 0a 54 68 69 73 20 64 65 6c 65 67 61 74 65 73 20 74 6f 20 62 61 63 6b 65 ontext...This.delegates.to.backe
35480 6e 64 2d 73 70 65 63 69 66 69 63 20 77 72 61 70 20 66 75 6e 63 74 69 6f 6e 73 2e 22 0a 20 20 28 nd-specific.wrap.functions."...(
354a0 70 72 6f 67 31 20 70 72 6f 6d 70 74 73 0a 20 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 63 6f prog1.prompts.....(when.gptel-co
354c0 6e 74 65 78 74 2d 2d 61 6c 69 73 74 0a 20 20 20 20 20 20 3b 3b 20 49 6e 6a 65 63 74 20 63 6f 6e ntext--alist.......;;.Inject.con
354e0 74 65 78 74 20 63 68 75 6e 6b 73 20 69 6e 74 6f 20 74 68 65 20 6c 61 73 74 20 75 73 65 72 20 70 text.chunks.into.the.last.user.p
35500 72 6f 6d 70 74 20 69 66 20 72 65 71 75 69 72 65 64 2e 0a 20 20 20 20 20 20 3b 3b 20 54 68 69 73 rompt.if.required........;;.This
35520 20 69 73 20 61 6c 73 6f 20 74 68 65 20 66 61 6c 6c 62 61 63 6b 20 66 6f 72 20 77 68 65 6e 20 60 .is.also.the.fallback.for.when.`
35540 67 70 74 65 6c 2d 75 73 65 2d 63 6f 6e 74 65 78 74 27 20 69 73 20 73 65 74 20 74 6f 0a 20 20 20 gptel-use-context'.is.set.to....
35560 20 20 20 3b 3b 20 27 73 79 73 74 65 6d 20 62 75 74 20 74 68 65 20 6d 6f 64 65 6c 20 64 6f 65 73 ...;;.'system.but.the.model.does
35580 20 6e 6f 74 20 73 75 70 70 6f 72 74 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 73 2e 0a 20 20 .not.support.system.messages....
355a0 20 20 20 20 28 77 68 65 6e 20 28 61 6e 64 20 67 70 74 65 6c 2d 75 73 65 2d 63 6f 6e 74 65 78 74 ....(when.(and.gptel-use-context
355c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 20 28 65 71 20 67 70 74 65 6c 2d ..................(or.(eq.gptel-
355e0 75 73 65 2d 63 6f 6e 74 65 78 74 20 27 75 73 65 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 use-context.'user)..............
35600 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 20 ........(gptel--model-capable-p.
35620 27 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 28 3e 20 'nosystem))..................(>.
35640 28 6c 65 6e 67 74 68 20 70 72 6f 6d 70 74 73 29 20 30 29 29 20 3b 46 49 58 4d 45 20 63 6f 6e 74 (length.prompts).0)).;FIXME.cont
35660 65 78 74 20 73 68 6f 75 6c 64 20 62 65 20 69 6e 6a 65 63 74 65 64 0a 20 20 20 20 20 20 20 20 20 ext.should.be.injected..........
35680 20 20 20 20 20 20 20 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 ...............................;
356a0 65 76 65 6e 20 77 68 65 6e 20 74 68 65 72 65 20 61 72 65 20 6e 6f 20 70 72 6f 6d 70 74 73 0a 20 even.when.there.are.no.prompts..
356c0 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 77 72 61 70 2d 75 73 65 72 2d 70 72 6f 6d 70 74 20 .......(gptel--wrap-user-prompt.
356e0 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 70 72 6f 6d 70 74 73 29 29 0a 20 20 20 20 20 20 3b 3b gptel-backend.prompts)).......;;
35700 20 49 6e 6a 65 63 74 20 6d 65 64 69 61 20 63 68 75 6e 6b 73 20 69 6e 74 6f 20 74 68 65 20 66 69 .Inject.media.chunks.into.the.fi
35720 72 73 74 20 75 73 65 72 20 70 72 6f 6d 70 74 20 69 66 20 72 65 71 75 69 72 65 64 2e 20 20 4d 65 rst.user.prompt.if.required...Me
35740 64 69 61 0a 20 20 20 20 20 20 3b 3b 20 63 68 75 6e 6b 73 20 61 72 65 20 61 6c 77 61 79 73 20 69 dia.......;;.chunks.are.always.i
35760 6e 63 6c 75 64 65 64 20 77 69 74 68 20 74 68 65 20 66 69 72 73 74 20 75 73 65 72 20 6d 65 73 73 ncluded.with.the.first.user.mess
35780 61 67 65 2c 0a 20 20 20 20 20 20 3b 3b 20 69 72 72 65 73 70 65 63 74 69 76 65 20 6f 66 20 74 68 age,.......;;.irrespective.of.th
357a0 65 20 70 72 65 66 65 72 65 6e 63 65 20 69 6e 20 60 67 70 74 65 6c 2d 75 73 65 2d 63 6f 6e 74 65 e.preference.in.`gptel-use-conte
357c0 78 74 27 2e 20 20 54 68 69 73 20 69 73 0a 20 20 20 20 20 20 3b 3b 20 62 65 63 61 75 73 65 20 6d xt'...This.is.......;;.because.m
357e0 65 64 69 61 20 63 61 6e 6e 6f 74 20 62 65 20 69 6e 63 6c 75 64 65 64 20 28 69 6e 20 67 65 6e 65 edia.cannot.be.included.(in.gene
35800 72 61 6c 29 20 77 69 74 68 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 73 2e 0a 20 20 20 20 20 ral).with.system.messages.......
35820 20 28 77 68 65 6e 20 28 61 6e 64 20 67 70 74 65 6c 2d 75 73 65 2d 63 6f 6e 74 65 78 74 20 67 70 .(when.(and.gptel-use-context.gp
35840 74 65 6c 2d 74 72 61 63 6b 2d 6d 65 64 69 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 tel-track-media.................
35860 20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 63 61 70 61 62 6c 65 2d 70 20 27 6d 65 64 69 61 29 .(gptel--model-capable-p.'media)
35880 29 0a 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 77 72 61 70 2d 75 73 65 72 2d 70 72 6f 6d ).........(gptel--wrap-user-prom
358a0 70 74 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 70 72 6f 6d 70 74 73 20 3a 6d 65 64 69 61 29 pt.gptel-backend.prompts.:media)
358c0 29 29 29 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 ))))..(defun.gptel--create-promp
358e0 74 20 28 26 6f 70 74 69 6f 6e 61 6c 20 70 72 6f 6d 70 74 2d 65 6e 64 29 0a 20 20 22 52 65 74 75 t.(&optional.prompt-end)..."Retu
35900 72 6e 20 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 rn.a.full.conversation.prompt.fr
35920 6f 6d 20 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 om.the.contents.of.this.buffer..
35940 0a 49 66 20 60 67 70 74 65 6c 2d 2d 6e 75 6d 2d 6d 65 73 73 61 67 65 73 2d 74 6f 2d 73 65 6e 64 .If.`gptel--num-messages-to-send
35960 27 20 69 73 20 73 65 74 2c 20 6c 69 6d 69 74 20 74 6f 20 74 68 61 74 20 6d 61 6e 79 0a 72 65 63 '.is.set,.limit.to.that.many.rec
35980 65 6e 74 20 65 78 63 68 61 6e 67 65 73 2e 0a 0a 49 66 20 74 68 65 20 72 65 67 69 6f 6e 20 69 73 ent.exchanges...If.the.region.is
359a0 20 61 63 74 69 76 65 20 6c 69 6d 69 74 20 74 68 65 20 70 72 6f 6d 70 74 20 74 6f 20 74 68 65 20 .active.limit.the.prompt.to.the.
359c0 72 65 67 69 6f 6e 20 63 6f 6e 74 65 6e 74 73 0a 69 6e 73 74 65 61 64 2e 0a 0a 49 66 20 60 67 70 region.contents.instead...If.`gp
359e0 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61 6c 69 73 74 27 20 69 73 20 6e 6f 6e 2d 6e 69 6c 20 61 tel-context--alist'.is.non-nil.a
35a00 6e 64 20 74 68 65 20 61 64 64 69 74 69 6f 6e 61 6c 0a 63 6f 6e 74 65 78 74 20 6e 65 65 64 73 20 nd.the.additional.context.needs.
35a20 74 6f 20 62 65 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 to.be.included.with.the.user.pro
35a40 6d 70 74 2c 20 61 64 64 20 69 74 2e 0a 0a 49 66 20 50 52 4f 4d 50 54 2d 45 4e 44 20 28 61 20 6d mpt,.add.it...If.PROMPT-END.(a.m
35a60 61 72 6b 65 72 29 20 69 73 20 70 72 6f 76 69 64 65 64 2c 20 65 6e 64 20 74 68 65 20 70 72 6f 6d arker).is.provided,.end.the.prom
35a80 70 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 pt.contents.there...This.default
35aa0 73 20 74 6f 20 28 70 6f 69 6e 74 29 2e 22 0a 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e s.to.(point)."...(save-excursion
35ac0 0a 20 20 20 20 28 73 61 76 65 2d 72 65 73 74 72 69 63 74 69 6f 6e 0a 20 20 20 20 20 20 28 6c 65 .....(save-restriction.......(le
35ae0 74 2a 20 28 28 6d 61 78 2d 65 6e 74 72 69 65 73 20 28 61 6e 64 20 67 70 74 65 6c 2d 2d 6e 75 6d t*.((max-entries.(and.gptel--num
35b00 2d 6d 65 73 73 61 67 65 73 2d 74 6f 2d 73 65 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -messages-to-send...............
35b20 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 75 6d .................(*.2.gptel--num
35b40 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 20 20 20 20 20 -messages-to-send)))............
35b60 20 20 28 62 75 66 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29 0a 20 20 20 20 20 20 20 ..(buf.(current-buffer))........
35b80 20 20 20 20 20 20 28 70 72 6f 6d 70 74 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f ......(prompts...............(co
35ba0 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 64 65 72 69 76 65 64 2d 6d 6f 64 65 nd................((derived-mode
35bc0 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 28 72 -p.'org-mode).................(r
35be0 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 20 20 20 20 equire.'gptel-org)..............
35c00 20 20 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 ...;;.Also.handles.regions.in.Or
35c20 67 20 6d 6f 64 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 6f 72 g.mode.................(gptel-or
35c40 67 2d 2d 63 72 65 61 74 65 2d 70 72 6f 6d 70 74 20 70 72 6f 6d 70 74 2d 65 6e 64 29 29 0a 20 20 g--create-prompt.prompt-end))...
35c60 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 75 73 65 2d 72 65 67 69 6f 6e 2d 70 29 0a 20 20 20 .............((use-region-p)....
35c80 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 72 62 20 28 72 65 67 69 6f 6e 2d 62 .............(let.((rb.(region-b
35ca0 65 67 69 6e 6e 69 6e 67 29 29 20 28 72 65 20 28 72 65 67 69 6f 6e 2d 65 6e 64 29 29 29 0a 20 20 eginning)).(re.(region-end)))...
35cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 77 69 74 68 2d 62 75 66 ................(gptel--with-buf
35ce0 66 65 72 2d 63 6f 70 79 20 62 75 66 20 72 62 20 72 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 fer-copy.buf.rb.re..............
35d00 20 20 20 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 20 28 72 75 6e 2d 68 6f 6f 6b .......(save-excursion.(run-hook
35d20 73 20 27 67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 66 69 6c 74 65 72 2d 68 6f 6f 6b 29 29 0a 20 20 s.'gptel-prompt-filter-hook))...
35d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d ..................(gptel--parse-
35d60 62 75 66 66 65 72 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 6d 61 78 2d 65 6e 74 72 69 65 73 buffer.gptel-backend.max-entries
35d80 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 20 28 75 6e 6c 65 73 73 20 70 ))))................(t.(unless.p
35da0 72 6f 6d 70 74 2d 65 6e 64 20 28 73 65 74 71 20 70 72 6f 6d 70 74 2d 65 6e 64 20 28 70 6f 69 6e rompt-end.(setq.prompt-end.(poin
35dc0 74 29 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 65 6c 2d 2d 77 t)))...................(gptel--w
35de0 69 74 68 2d 62 75 66 66 65 72 2d 63 6f 70 79 20 62 75 66 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 ith-buffer-copy.buf.(point-min).
35e00 70 72 6f 6d 70 74 2d 65 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 prompt-end.....................(
35e20 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 20 28 72 75 6e 2d 68 6f 6f 6b 73 20 27 67 70 74 65 6c save-excursion.(run-hooks.'gptel
35e40 2d 70 72 6f 6d 70 74 2d 66 69 6c 74 65 72 2d 68 6f 6f 6b 29 29 0a 20 20 20 20 20 20 20 20 20 20 -prompt-filter-hook))...........
35e60 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 62 75 66 66 65 72 20 67 ..........(gptel--parse-buffer.g
35e80 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 6d 61 78 2d 65 6e 74 72 69 65 73 29 29 29 29 29 29 0a 20 ptel-backend.max-entries))))))..
35ea0 20 20 20 20 20 20 20 3b 3b 20 4e 4f 54 45 3a 20 70 72 6f 6d 70 74 73 20 69 73 20 6d 6f 64 69 66 .......;;.NOTE:.prompts.is.modif
35ec0 69 65 64 20 69 6e 20 70 6c 61 63 65 20 68 65 72 65 0a 20 20 20 20 20 20 20 20 28 67 70 74 65 6c ied.in.place.here.........(gptel
35ee0 2d 2d 77 72 61 70 2d 75 73 65 72 2d 70 72 6f 6d 70 74 2d 6d 61 79 62 65 20 70 72 6f 6d 70 74 73 --wrap-user-prompt-maybe.prompts
35f00 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 2d 70 61 72 )))))..(cl-defgeneric.gptel--par
35f20 73 65 2d 62 75 66 66 65 72 20 28 62 61 63 6b 65 6e 64 20 6d 61 78 2d 65 6e 74 72 69 65 73 29 0a se-buffer.(backend.max-entries).
35f40 20 20 22 50 61 72 73 65 20 63 75 72 72 65 6e 74 20 62 75 66 66 65 72 20 62 61 63 6b 77 61 72 64 .."Parse.current.buffer.backward
35f60 73 20 66 72 6f 6d 20 70 6f 69 6e 74 20 61 6e 64 20 72 65 74 75 72 6e 20 61 20 6c 69 73 74 20 6f s.from.point.and.return.a.list.o
35f80 66 20 70 72 6f 6d 70 74 73 2e 0a 0a 42 41 43 4b 45 4e 44 20 69 73 20 74 68 65 20 4c 4c 4d 20 62 f.prompts...BACKEND.is.the.LLM.b
35fa0 61 63 6b 65 6e 64 20 69 6e 20 75 73 65 2e 0a 0a 4d 41 58 2d 45 4e 54 52 49 45 53 20 69 73 20 74 ackend.in.use...MAX-ENTRIES.is.t
35fc0 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 71 75 65 72 69 65 73 2f 72 65 73 70 6f 6e 73 65 73 20 74 he.number.of.queries/responses.t
35fe0 6f 20 69 6e 63 6c 75 64 65 20 66 6f 72 0a 63 6f 6e 74 65 78 62 74 2e 22 29 0a 0a 28 63 6c 2d 64 o.include.for.contexbt.")..(cl-d
36000 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 20 28 62 61 63 efgeneric.gptel--parse-list.(bac
36020 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 50 52 4f 4d 50 kend.prompt-list)..."Parse.PROMP
36040 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 20 70 72 6f 6d T-LIST.and.return.a.list.of.prom
36060 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 50 52 4f 4d 50 pts.suitable.for.BACKEND...PROMP
36080 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 63 6f 6e 76 65 T-LIST.is.interpreted.as.a.conve
360a0 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 67 0a 73 65 72 rsation,.i.e..an.alternating.ser
360c0 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 20 72 65 73 70 ies.of.user.prompts.and.LLM.resp
360e0 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 75 72 65 0a 69 onses...The.returned.structure.i
36100 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 20 74 68 65 20 s.suitable.for.including.in.the.
36120 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 73 20 74 68 65 request.payload...BACKEND.is.the
36140 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 2d 64 65 66 67 .LLM.backend.in.use.")..(cl-defg
36160 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 69 6e 6b 73 20 eneric.gptel--parse-media-links.
36180 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 61 20 6c 69 6e (mode.beg.end)..."Find.media.lin
361a0 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 44 45 20 69 73 ks.between.BEG.and.END...MODE.is
361c0 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 65 72 2e 0a 0a .the.major-mode.of.the.buffer...
361e0 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 65 6e 74 72 79 Returns.a.plist.where.each.entry
36200 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 73 6f 6d 65 20 .is.of.the.form...(:text.\"some.
36220 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 61 20 75 72 69 text\").or...(:media.\"media.uri
36240 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 65 20 6d 6f 64 .or.file.path\")."...(ignore.mod
36260 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 3b 62 79 74 65 e).........................;byte
36280 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 28 62 75 66 66 -compiler...(list.`(:text.,(buff
362a0 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 20 er-substring-no-properties......
362c0 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 64 65 66 76 61 .............beg.end))))..(defva
362e0 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 65 29 0a 28 64 r.markdown-regex-link-inline).(d
36300 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 75 72 69 29 0a efvar.markdown-regex-angle-uri).
36320 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 6c 69 6e 6b 2d (declare-function.markdown-link-
36340 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 63 6c 61 72 65 at-pos."markdown-mode").(declare
36360 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 6d -function.mailcap-file-name-to-m
36380 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 66 6d 65 74 68 ime-type."mailcap")..(cl-defmeth
363a0 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 20 28 28 5f 6d od.gptel--parse-media-links.((_m
363c0 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 65 67 20 65 6e ode.(eql.'markdown-mode)).beg.en
363e0 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 65 20 d)..."Parse.text.and.actionable.
36400 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 74 75 links.between.BEG.and.END...Retu
36420 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 20 5c rn.a.list.of.the.form..((:text.\
36440 22 73 6f 6d 65 20 74 65 78 74 5c 22 29 0a 20 20 28 3a 6d 65 64 69 61 20 5c 22 2f 70 61 74 68 2f "some.text\")...(:media.\"/path/
36460 74 6f 2f 6d 65 64 69 61 2e 70 6e 67 5c 22 20 3a 6d 69 6d 65 20 5c 22 69 6d 61 67 65 2f 70 6e 67 to/media.png\".:mime.\"image/png
36480 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 6f 72 \")...(:text.\"More.text\")).for
364a0 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 74 20 .inclusion.into.the.user.prompt.
364c0 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 75 69 for.the.gptel.request."...(requi
364e0 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 20 20 re.'mailcap)....................
36500 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 65 74 ;FIXME.Avoid.this.somehow...(let
36520 20 28 28 70 61 72 74 73 29 20 28 66 72 6f 6d 2d 70 74 29 29 0a 20 20 20 20 28 73 61 76 65 2d 65 .((parts).(from-pt)).....(save-e
36540 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 28 73 65 74 71 20 66 72 6f 6d 2d 70 74 20 28 67 6f xcursion.......(setq.from-pt.(go
36560 74 6f 2d 63 68 61 72 20 62 65 67 29 29 0a 20 20 20 20 20 20 28 77 68 69 6c 65 20 28 72 65 2d 73 to-char.beg)).......(while.(re-s
36580 65 61 72 63 68 2d 66 6f 72 77 61 72 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e earch-forward...............(con
365a0 63 61 74 20 22 5c 5c 28 3f 3a 22 20 6d 61 72 6b 64 6f 77 6e 2d 72 65 67 65 78 2d 6c 69 6e 6b 2d cat."\\(?:".markdown-regex-link-
365c0 69 6e 6c 69 6e 65 20 22 5c 5c 7c 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 inline."\\|"....................
365e0 20 20 20 6d 61 72 6b 64 6f 77 6e 2d 72 65 67 65 78 2d 61 6e 67 6c 65 2d 75 72 69 20 22 5c 5c 29 ...markdown-regex-angle-uri."\\)
36600 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 20 74 29 0a 20 20 20 20 20 20 20 20 ")...............end.t).........
36620 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 6b 64 6f 77 (when-let*.((link-at-pt.(markdow
36640 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 20 20 20 20 n-link-at-pos.(point))).........
36660 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 61 6e 64 61 ............((gptel--link-standa
36680 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 20 28 63 61 lone-p.......................(ca
366a0 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 70 74 29 29 r.link-at-pt).(cadr.link-at-pt))
366c0 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 6e 74 68 ).....................(path.(nth
366e0 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 20 20 20 20 .3.link-at-pt)).................
36700 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 66 69 78 20 ....(path.(string-remove-prefix.
36720 22 66 69 6c 65 3a 2f 2f 22 20 70 61 74 68 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 "file://".path))................
36740 20 20 20 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 .....(mime.(mailcap-file-name-to
36760 2d 6d 69 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 20 20 -mime-type.path))...............
36780 20 20 20 20 20 20 28 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 6d 69 6d 65 2d 63 61 70 61 62 6c ......((gptel--model-mime-capabl
367a0 65 2d 70 20 6d 69 6d 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 e-p.mime)))...........(cond.....
367c0 20 20 20 20 20 20 20 28 28 73 65 71 2d 73 6f 6d 65 20 28 6c 61 6d 62 64 61 20 28 70 29 20 28 73 .......((seq-some.(lambda.(p).(s
367e0 74 72 69 6e 67 2d 70 72 65 66 69 78 2d 70 20 70 20 70 61 74 68 29 29 0a 20 20 20 20 20 20 20 20 tring-prefix-p.p.path)).........
36800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 28 22 68 74 74 70 73 3a 22 20 22 68 74 74 70 3a 22 ..............'("https:"."http:"
36820 20 22 66 74 70 3a 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 43 6f 6c 6c 65 63 74 ."ftp:")).............;;.Collect
36840 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 6c 6c .text.up.to.this.image,.and.coll
36860 65 63 74 20 74 68 69 73 20 69 6d 61 67 65 20 75 72 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 ect.this.image.url.............(
36880 77 68 65 6e 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 75 72 when.(gptel--model-capable-p.'ur
368a0 6c 29 20 3b 20 46 49 58 4d 45 20 54 68 69 73 20 69 73 20 6e 6f 74 20 61 20 67 6f 6f 64 20 70 6c l).;.FIXME.This.is.not.a.good.pl
368c0 61 63 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ace.............................
368e0 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 20 66 ....................;.to.check.f
36900 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 20 20 or.url.capability!..............
36920 20 28 70 75 73 68 20 28 6c 69 73 74 20 3a 74 65 78 74 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 .(push.(list.:text.(buffer-subst
36940 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 20 66 72 6f 6d 2d 70 74 20 28 63 61 72 20 ring-no-properties.from-pt.(car.
36960 6c 69 6e 6b 2d 61 74 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 link-at-pt)))...................
36980 20 20 70 61 72 74 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 6c 69 ..parts)...............(push.(li
369a0 73 74 20 3a 75 72 6c 20 70 61 74 68 20 3a 6d 69 6d 65 20 6d 69 6d 65 29 20 70 61 72 74 73 29 0a st.:url.path.:mime.mime).parts).
369c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 66 72 6f 6d 2d 70 74 20 28 63 61 64 ..............(setq.from-pt.(cad
369e0 72 20 6c 69 6e 6b 2d 61 74 2d 70 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 28 66 69 r.link-at-pt))))............((fi
36a00 6c 65 2d 72 65 61 64 61 62 6c 65 2d 70 20 70 61 74 68 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 le-readable-p.path).............
36a20 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
36a40 2c 20 61 6e 64 20 63 6f 6c 6c 65 63 74 20 74 68 69 73 20 69 6d 61 67 65 0a 20 20 20 20 20 20 20 ,.and.collect.this.image........
36a60 20 20 20 20 20 28 70 75 73 68 20 28 6c 69 73 74 20 3a 74 65 78 74 20 28 62 75 66 66 65 72 2d 73 .....(push.(list.:text.(buffer-s
36a80 75 62 73 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 20 66 72 6f 6d 2d 70 74 20 28 ubstring-no-properties.from-pt.(
36aa0 63 61 72 20 6c 69 6e 6b 2d 61 74 2d 70 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 car.link-at-pt)))...............
36ac0 20 20 20 20 70 61 72 74 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 6c 69 ....parts).............(push.(li
36ae0 73 74 20 3a 6d 65 64 69 61 20 70 61 74 68 20 3a 6d 69 6d 65 20 6d 69 6d 65 29 20 70 61 72 74 73 st.:media.path.:mime.mime).parts
36b00 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 66 72 6f 6d 2d 70 74 20 28 63 61 64 ).............(setq.from-pt.(cad
36b20 72 20 6c 69 6e 6b 2d 61 74 2d 70 74 29 29 29 29 29 29 29 0a 20 20 20 20 28 75 6e 6c 65 73 73 20 r.link-at-pt))))))).....(unless.
36b40 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 28 6c 69 73 (=.from-pt.end).......(push.(lis
36b60 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 70 72 6f t.:text.(buffer-substring-no-pro
36b80 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 0a 20 20 perties.from-pt.end)).parts))...
36ba0 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 66 67 65 6e ..(nreverse.parts)))..(cl-defgen
36bc0 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 20 28 62 61 eric.gptel--wrap-user-prompt.(ba
36be0 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 6c 61 73 74 ckend._prompts)..."Wrap.the.last
36c00 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 6c 27 73 20 .prompt.in.PROMPTS.with.gptel's.
36c20 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 74 75 72 65 context...PROMPTS.is.a.structure
36c40 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 65 2d 62 75 .as.returned.by.`gptel--parse-bu
36c60 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 69 73 74 20 ffer'..Typically.this.is.a.list.
36c80 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 70 74 65 6c of.plists...BACKEND.is.the.gptel
36ca0 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 2d 77 61 72 .backend.in.use."...(display-war
36cc0 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 28 66 6f 72 ning....'(gptel.context)....(for
36ce0 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 6c 65 6d 65 mat."Context.support.not.impleme
36d00 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 67 20 63 6f nted.for.backend.%s,.ignoring.co
36d20 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 6b 65 6e 64 ntext"............(gptel-backend
36d40 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 6e 65 72 69 -name.backend))))..(cl-defgeneri
36d60 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 6e 64 20 70 c.gptel--request-data.(backend.p
36d80 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 6f 66 20 61 rompts)..."Generate.a.plist.of.a
36da0 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 41 43 4b 45 ll.data.for.an.LLM.query...BACKE
36dc0 4e 44 20 69 73 20 74 68 65 20 4c 4c 4d 20 62 61 63 6b 65 6e 64 20 69 6e 20 75 73 65 2e 0a 0a 50 ND.is.the.LLM.backend.in.use...P
36de0 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 6f 75 73 20 ROMPTS.is.the.plist.of.previous.
36e00 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 65 73 2e 22 user.queries.and.LLM.responses."
36e20 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 70 6f 6e 73 )..(defun.gptel--url-get-respons
36e40 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 20 70 72 6f e.(fsm)..."Fetch.response.to.pro
36e60 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 4d 2e 0a 0a mpt.in.state.FSM.from.the.LLM...
36e80 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 67 FSM.is.the.state.machine.driving
36ea0 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 6f .this.request...Its.INFO.slot.co
36ec0 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 74 ntains.the.data.required.for.set
36ee0 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 0a ting.up.the.request...INFO.is.a.
36f00 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 61 plist.with.the.following.keys,.a
36f20 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 61 mong.others:.-.:data.....(the.da
36f40 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 20 ta.being.sent).-.:buffer...(the.
36f60 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 65 gptel.buffer).-.:position.(marke
36f80 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 73 r.at.which.to.insert.the.respons
36fa0 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 72 e)..-.:callback.(optional,.the.r
36fc0 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 20 equest.callback)..Call.CALLBACK.
36fe0 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 72 with.the.response.and.INFO.after
37000 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 20 wards...If.omitted.the.response.
37020 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 66 is.inserted.into.the.current.buf
37040 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 69 6e 68 69 fer.after.point."...(let*.((inhi
37060 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 73 61 67 65 bit-message.t)..........(message
37080 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 72 65 71 75 -log-max.nil)..........(url-requ
370a0 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 28 75 72 6c est-method."POST")..........(url
370c0 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 20 20 20 20 -request-extra-headers..........
370e0 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 20 22 61 70 .(append.'(("Content-Type"..."ap
37100 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 20 20 20 20 plication/json"))...............
37120 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 65 6c 2d 62 ....(when-let*.((header.(gptel-b
37140 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 29 29 0a 20 ackend-header.gptel-backend)))..
37160 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 74 69 6f 6e ...................(if.(function
37180 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 20 20 20 20 p.header).......................
371a0 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 29 0a 20 20 ..(funcall.header).header))))...
371c0 20 20 20 20 20 20 20 28 69 6e 66 6f 20 28 67 70 74 65 6c 2d 66 73 6d 2d 69 6e 66 6f 20 66 73 6d .......(info.(gptel-fsm-info.fsm
371e0 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 67 65 74 20 ))..........(backend.(plist-get.
37200 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 6c 6c 62 61 info.:backend))..........(callba
37220 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 62 61 63 6b ck.(or.(plist-get.info.:callback
37240 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 20 20 20 20 ).;if.not.the.first.run.........
37260 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 72 74 2d 72 ...............#'gptel--insert-r
37280 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 20 20 20 20 esponse)).;default.callback.....
372a0 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 20 20 20 20 .....(url-request-data..........
372c0 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 20 20 20 20 .(encode-coding-string..........
372e0 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 2d 67 65 74 ..(gptel--json-encode.(plist-get
37300 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 66 2d 38 29 .info.:data))............'utf-8)
37320 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 75 66 66 65 )).....(when.(with-current-buffe
37340 72 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 62 75 66 66 65 72 29 0a 20 20 20 20 20 r.(plist-get.info.:buffer)......
37360 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
37380 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 6c 2d 6f 72 -mode)..................gptel-or
373a0 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 70 6c 69 73 g-convert-response)).......(plis
373c0 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 74 65 6c 2d t-put.info.:transformer.#'gptel-
373e0 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 20 28 70 6c -convert-markdown->org)).....(pl
37400 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 61 63 6b 29 ist-put.info.:callback.callback)
37420 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 20 20 20 20 .....(when.gptel-log-level......
37440 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 6e 20 28 65 .........;logging.......(when.(e
37460 71 20 67 70 74 65 6c 2d 6c 6f 67 2d 6c 65 76 65 6c 20 27 64 65 62 75 67 29 0a 20 20 20 20 20 20 q.gptel-log-level.'debug).......
37480 20 20 28 67 70 74 65 6c 2d 2d 6c 6f 67 20 28 67 70 74 65 6c 2d 2d 6a 73 6f 6e 2d 65 6e 63 6f 64 ..(gptel--log.(gptel--json-encod
374a0 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 61 72 20 28 e......................(mapcar.(
374c0 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 28 63 61 72 lambda.(pair).(cons.(intern.(car
374e0 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 20 20 20 20 .pair)).(cdr.pair)))............
37500 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 74 2d 65 78 ..................url-request-ex
37520 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 20 20 20 20 tra-headers))...................
37540 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 28 67 70 74 .."request.headers")).......(gpt
37560 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 71 75 65 73 el--log.url-request-data."reques
37580 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 66 0a 20 20 t.body")).....(let.((proc-buf...
375a0 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 28 28 62 61 .........(url-retrieve.(let.((ba
375c0 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 20 67 70 74 ckend-url.(gptel-backend-url.gpt
375e0 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 20 20 20 20 el-backend)))...................
37600 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 65 6e 64 2d .........(if.(functionp.backend-
37620 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 20 20 20 url)............................
37640 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 62 61 63 6b 65 6e 64 2d 75 72 6c 29 20 62 61 63 6b 65 6e ....(funcall.backend-url).backen
37660 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 20 20 20 20 20 20 d-url)).........................
37680 20 28 6c 61 6d 62 64 61 20 28 5f 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .(lambda.(_)....................
376a0 20 20 20 20 20 20 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 65 ........(pcase-let.((`(,response
376c0 20 2c 68 74 74 70 2d 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 .,http-status.,http-msg.,error).
376e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
37700 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 75 72 6c 2d 70 61 72 73 65 2d 72 65 73 70 6f 6e ........(gptel--url-parse-respon
37720 73 65 20 62 61 63 6b 65 6e 64 20 69 6e 66 6f 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 se.backend.info))...............
37740 20 20 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 20 28 63 .........................(buf.(c
37760 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 20 urrent-buffer)))................
37780 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 68 ..............(plist-put.info.:h
377a0 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 20 ttp-status.http-status).........
377c0 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.
377e0 69 6e 66 6f 20 3a 73 74 61 74 75 73 20 68 74 74 70 2d 6d 73 67 29 0a 20 20 20 20 20 20 20 20 20 info.:status.http-msg)..........
37800 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 66 73 6d 2d ....................(gptel--fsm-
37820 74 72 61 6e 73 69 74 69 6f 6e 20 66 73 6d 29 20 3b 57 41 49 54 20 2d 3e 20 54 59 50 45 0a 20 20 transition.fsm).;WAIT.->.TYPE...
37840 20 20 20 20 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 ...........................(when
37860 20 65 72 72 6f 72 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 65 72 72 6f 72 20 65 72 .error.(plist-put.info.:error.er
37880 72 6f 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ror))...........................
378a0 20 20 20 28 77 68 65 6e 20 72 65 73 70 6f 6e 73 65 20 3b 4c 6f 6f 6b 20 66 6f 72 20 61 20 72 65 ...(when.response.;Look.for.a.re
378c0 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 20 asoning.block...................
378e0 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 68 2d 70 .............(if.(string-match-p
37900 20 22 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 ."^.*<think>\n".response).......
37920 20 20 20 20 20 20 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 .............................(wh
37940 65 6e 2d 6c 65 74 2a 20 28 28 69 64 78 20 28 73 74 72 69 6e 67 2d 73 65 61 72 63 68 20 22 3c 2f en-let*.((idx.(string-search."</
37960 74 68 69 6e 6b 3e 5c 6e 22 20 72 65 73 70 6f 6e 73 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 think>\n".response)))...........
37980 20 20 20 20 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
379a0 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.
379c0 65 72 72 6f 72 3a 20 25 53 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 error:.%S"......................
379e0 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
37a00 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 20 20 20 20 ack.............................
37a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 20 27 72 65 61 73 6f ....................(cons.'reaso
37a40 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 20 20 20 20 ning............................
37a60 20 20 20 20 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 ...........................(subs
37a80 74 72 69 6e 67 20 72 65 73 70 6f 6e 73 65 20 6e 69 6c 20 28 2b 20 69 64 78 20 38 29 29 29 0a 20 tring.response.nil.(+.idx.8)))..
37aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
37ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 66 6f 29 29 0a 20 20 20 20 20 20 20 20 20 20 ...............info))...........
37ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 ...........................(setq
37b00 20 72 65 73 70 6f 6e 73 65 20 28 73 74 72 69 6e 67 2d 74 72 69 6d 2d 6c 65 66 74 0a 20 20 20 20 .response.(string-trim-left.....
37b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
37b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 75 62 73 74 72 69 6e 67 20 72 65 73 70 .................(substring.resp
37b60 6f 6e 73 65 20 28 2b 20 69 64 78 20 38 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 onse.(+.idx.8)))))..............
37b80 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*.(
37ba0 28 72 65 61 73 6f 6e 69 6e 67 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 72 65 61 73 (reasoning.(plist-get.info.:reas
37bc0 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 20 20 20 20 20 oning)).........................
37be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 73 74 72 69 6e 67 70 20 72 .....................((stringp.r
37c00 65 61 73 6f 6e 69 6e 67 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 easoning))).....................
37c20 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
37c40 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 69 6e 66 .(cons.'reasoning.reasoning).inf
37c60 6f 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 o))))...........................
37c80 20 20 20 28 77 68 65 6e 20 28 6f 72 20 72 65 73 70 6f 6e 73 65 20 28 6e 6f 74 20 28 6d 65 6d 62 ...(when.(or.response.(not.(memb
37ca0 65 72 20 68 74 74 70 2d 73 74 61 74 75 73 20 27 28 22 32 30 30 22 20 22 31 30 30 22 29 29 29 29 er.http-status.'("200"."100"))))
37cc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
37ce0 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 6c 6c (with-demoted-errors."gptel.call
37d00 62 61 63 6b 20 65 72 72 6f 72 3a 20 25 53 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 back.error:.%S".................
37d20 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
37d40 63 6b 20 72 65 73 70 6f 6e 73 65 20 69 6e 66 6f 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 ck.response.info))).............
37d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 66 73 6d 2d 74 72 61 .................(gptel--fsm-tra
37d80 6e 73 69 74 69 6f 6e 20 66 73 6d 29 20 3b 54 59 50 45 20 2d 3e 20 6e 65 78 74 0a 20 20 20 20 20 nsition.fsm).;TYPE.->.next......
37da0 20 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 66 20 28 61 ........................(setf.(a
37dc0 6c 69 73 74 2d 67 65 74 20 62 75 66 20 67 70 74 65 6c 2d 2d 72 65 71 75 65 73 74 2d 61 6c 69 73 list-get.buf.gptel--request-alis
37de0 74 20 6e 69 6c 20 27 72 65 6d 6f 76 65 29 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 t.nil.'remove).nil).............
37e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6b 69 6c 6c 2d 62 75 66 66 65 72 20 62 75 .................(kill-buffer.bu
37e20 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 20 20 6e 69 f)))..........................ni
37e40 6c 20 74 20 6e 69 6c 29 29 29 0a 20 20 20 20 20 20 3b 3b 20 54 4f 44 4f 3a 20 41 64 64 20 74 72 l.t.nil))).......;;.TODO:.Add.tr
37e60 61 6e 73 66 6f 72 6d 65 72 20 68 65 72 65 2e 0a 20 20 20 20 20 20 28 73 65 74 66 20 28 61 6c 69 ansformer.here........(setf.(ali
37e80 73 74 2d 67 65 74 20 70 72 6f 63 2d 62 75 66 20 67 70 74 65 6c 2d 2d 72 65 71 75 65 73 74 2d 61 st-get.proc-buf.gptel--request-a
37ea0 6c 69 73 74 29 20 66 73 6d 29 29 29 29 0a 0a 28 63 6c 2d 64 65 66 67 65 6e 65 72 69 63 20 67 70 list).fsm))))..(cl-defgeneric.gp
37ec0 74 65 6c 2d 2d 70 61 72 73 65 2d 72 65 73 70 6f 6e 73 65 20 28 62 61 63 6b 65 6e 64 20 72 65 73 tel--parse-response.(backend.res
37ee0 70 6f 6e 73 65 20 70 72 6f 63 2d 69 6e 66 6f 29 0a 20 20 22 52 65 73 70 6f 6e 73 65 20 65 78 74 ponse.proc-info)..."Response.ext
37f00 72 61 63 74 6f 72 20 66 6f 72 20 4c 4c 4d 20 72 65 71 75 65 73 74 73 2e 0a 0a 42 41 43 4b 45 4e ractor.for.LLM.requests...BACKEN
37f20 44 20 69 73 20 74 68 65 20 4c 4c 4d 20 62 61 63 6b 65 6e 64 20 69 6e 20 75 73 65 2e 0a 0a 52 45 D.is.the.LLM.backend.in.use...RE
37f40 53 50 4f 4e 53 45 20 69 73 20 74 68 65 20 70 61 72 73 65 64 20 4a 53 4f 4e 20 6f 66 20 74 68 65 SPONSE.is.the.parsed.JSON.of.the
37f60 20 72 65 73 70 6f 6e 73 65 2c 20 61 73 20 61 20 70 6c 69 73 74 2e 0a 0a 50 52 4f 43 2d 49 4e 46 .response,.as.a.plist...PROC-INF
37f80 4f 20 69 73 20 61 20 70 6c 69 73 74 20 77 69 74 68 20 70 72 6f 63 65 73 73 20 69 6e 66 6f 72 6d O.is.a.plist.with.process.inform
37fa0 61 74 69 6f 6e 20 61 6e 64 20 6f 74 68 65 72 20 63 6f 6e 74 65 78 74 2e 0a 53 65 65 20 60 67 70 ation.and.other.context..See.`gp
37fc0 74 65 6c 2d 63 75 72 6c 2d 2d 67 65 74 2d 72 65 73 70 6f 6e 73 65 27 20 66 6f 72 20 69 74 73 20 tel-curl--get-response'.for.its.
37fe0 63 6f 6e 74 65 6e 74 73 2e 22 29 0a 0a 28 64 65 66 76 61 72 20 75 72 6c 2d 68 74 74 70 2d 65 6e contents.")..(defvar.url-http-en
38000 64 2d 6f 66 2d 68 65 61 64 65 72 73 29 0a 28 64 65 66 76 61 72 20 75 72 6c 2d 68 74 74 70 2d 72 d-of-headers).(defvar.url-http-r
38020 65 73 70 6f 6e 73 65 2d 73 74 61 74 75 73 29 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 75 72 esponse-status).(defun.gptel--ur
38040 6c 2d 70 61 72 73 65 2d 72 65 73 70 6f 6e 73 65 20 28 62 61 63 6b 65 6e 64 20 70 72 6f 63 2d 69 l-parse-response.(backend.proc-i
38060 6e 66 6f 29 0a 20 20 22 50 61 72 73 65 20 72 65 73 70 6f 6e 73 65 20 66 72 6f 6d 20 42 41 43 4b nfo)..."Parse.response.from.BACK
38080 45 4e 44 20 77 69 74 68 20 50 52 4f 43 2d 49 4e 46 4f 2e 22 0a 20 20 28 77 68 65 6e 20 67 70 74 END.with.PROC-INFO."...(when.gpt
380a0 65 6c 2d 6c 6f 67 2d 6c 65 76 65 6c 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 6c 6f 67 67 69 6e el-log-level.............;loggin
380c0 67 0a 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 28 67 6f 74 g.....(save-excursion.......(got
380e0 6f 2d 63 68 61 72 20 75 72 6c 2d 68 74 74 70 2d 65 6e 64 2d 6f 66 2d 68 65 61 64 65 72 73 29 0a o-char.url-http-end-of-headers).
38100 20 20 20 20 20 20 28 77 68 65 6e 20 28 65 71 20 67 70 74 65 6c 2d 6c 6f 67 2d 6c 65 76 65 6c 20 ......(when.(eq.gptel-log-level.
38120 27 64 65 62 75 67 29 0a 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 6c 6f 67 20 28 67 70 74 'debug).........(gptel--log.(gpt
38140 65 6c 2d 2d 6a 73 6f 6e 2d 65 6e 63 6f 64 65 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e el--json-encode.(buffer-substrin
38160 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28 70 6f 69 g-no-properties.(point-min).(poi
38180 6e 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 72 65 73 70 6f nt)))....................."respo
381a0 6e 73 65 20 68 65 61 64 65 72 73 22 29 29 0a 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 6c 6f 67 nse.headers")).......(gptel--log
381c0 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
381e0 20 28 70 6f 69 6e 74 29 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 0a 20 20 20 20 20 20 20 20 20 20 .(point).(point-max))...........
38200 20 20 20 20 20 20 20 20 22 72 65 73 70 6f 6e 73 65 20 62 6f 64 79 22 29 29 29 0a 20 20 28 69 66 ........"response.body")))...(if
38220 2d 6c 65 74 2a 20 28 28 68 74 74 70 2d 6d 73 67 20 28 73 74 72 69 6e 67 2d 74 72 69 6d 20 28 62 -let*.((http-msg.(string-trim.(b
38240 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 20 28 6c 69 6e 65 2d 62 65 67 69 6e 6e 69 6e 67 2d uffer-substring.(line-beginning-
38260 70 6f 73 69 74 69 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 position).......................
38280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 ...............................(
382a0 6c 69 6e 65 2d 65 6e 64 2d 70 6f 73 69 74 69 6f 6e 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 line-end-position))))...........
382c0 20 20 28 68 74 74 70 2d 73 74 61 74 75 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 61 76 ..(http-status..............(sav
382e0 65 2d 6d 61 74 63 68 2d 64 61 74 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 e-match-data................(and
38300 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 20 22 48 54 54 50 2f 5b 2e 30 2d 39 5d 2b 20 2b 5c 5c .(string-match."HTTP/[.0-9]+.+\\
38320 28 5b 30 2d 39 5d 2b 5c 5c 29 22 20 68 74 74 70 2d 6d 73 67 29 0a 20 20 20 20 20 20 20 20 20 20 ([0-9]+\\)".http-msg)...........
38340 20 20 20 20 20 20 20 20 20 20 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 20 31 20 68 74 74 70 2d 6d ..........(match-string.1.http-m
38360 73 67 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 73 70 6f 6e 73 65 20 28 70 72 sg)))).............(response.(pr
38380 6f 67 6e 20 28 67 6f 74 6f 2d 63 68 61 72 20 75 72 6c 2d 68 74 74 70 2d 65 6e 64 2d 6f 66 2d 68 ogn.(goto-char.url-http-end-of-h
383a0 65 61 64 65 72 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 eaders).........................
383c0 20 20 20 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20 6e 69 6c 0a 20 20 20 20 20 20 20 .....(condition-case.nil........
383e0 20 20 20 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
38400 2d 2d 6a 73 6f 6e 2d 72 65 61 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 --json-read)....................
38420 20 20 20 20 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 20 27 6a 73 6f 6e 2d 72 65 61 64 2d 65 72 ............(error.'json-read-er
38440 72 6f 72 29 29 29 29 29 0a 20 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 3b 3b 20 46 ror))))).......(cond........;;.F
38460 49 58 4d 45 20 48 61 6e 64 6c 65 20 74 68 65 20 63 61 73 65 20 77 68 65 72 65 20 48 54 54 50 20 IXME.Handle.the.case.where.HTTP.
38480 31 30 30 20 69 73 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 48 54 54 50 20 28 6e 6f 74 20 32 30 30 100.is.followed.by.HTTP.(not.200
384a0 29 20 42 55 47 20 23 31 39 34 0a 20 20 20 20 20 20 20 28 28 6f 72 20 28 6d 65 6d 71 20 75 72 6c ).BUG.#194........((or.(memq.url
384c0 2d 68 74 74 70 2d 72 65 73 70 6f 6e 73 65 2d 73 74 61 74 75 73 20 27 28 32 30 30 20 31 30 30 29 -http-response-status.'(200.100)
384e0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 2d 70 20 22 5c ).............(string-match-p."\
38500 5c 28 3f 3a 31 5c 5c 7c 32 5c 5c 29 30 30 20 4f 4b 22 20 68 74 74 70 2d 6d 73 67 29 29 0a 20 20 \(?:1\\|2\\)00.OK".http-msg))...
38520 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
38540 74 65 6c 2d 2d 70 61 72 73 65 2d 72 65 73 70 6f 6e 73 65 20 62 61 63 6b 65 6e 64 20 72 65 73 70 tel--parse-response.backend.resp
38560 6f 6e 73 65 20 70 72 6f 63 2d 69 6e 66 6f 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 onse.proc-info)))...............
38580 20 20 28 73 74 72 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 ..(string-trim.resp))...........
385a0 20 20 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 ....http-status.http-msg))......
385c0 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 0a 20 ..((plist-get.response.:error)..
385e0 20 20 20 20 20 20 20 28 6c 69 73 74 20 6e 69 6c 20 68 74 74 70 2d 73 74 61 74 75 73 20 68 74 74 .......(list.nil.http-status.htt
38600 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 3a 65 72 72 6f 72 p-msg.(plist-get.response.:error
38620 29 29 29 0a 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 )))........((eq.response.'json-r
38640 65 61 64 2d 65 72 72 6f 72 29 0a 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 6e 69 6c 20 68 74 74 ead-error).........(list.nil.htt
38660 70 2d 73 74 61 74 75 73 20 28 63 6f 6e 63 61 74 20 22 28 22 20 68 74 74 70 2d 6d 73 67 20 22 29 p-status.(concat."(".http-msg.")
38680 20 4d 61 6c 66 6f 72 6d 65 64 20 4a 53 4f 4e 20 69 6e 20 72 65 73 70 6f 6e 73 65 2e 22 29 20 22 .Malformed.JSON.in.response.")."
386a0 6a 73 6f 6e 2d 72 65 61 64 2d 65 72 72 6f 72 22 29 29 0a 20 20 20 20 20 20 20 28 74 20 28 6c 69 json-read-error"))........(t.(li
386c0 73 74 20 6e 69 6c 20 68 74 74 70 2d 73 74 61 74 75 73 20 28 63 6f 6e 63 61 74 20 22 28 22 20 68 st.nil.http-status.(concat."(".h
386e0 74 74 70 2d 6d 73 67 20 22 29 20 43 6f 75 6c 64 20 6e 6f 74 20 70 61 72 73 65 20 48 54 54 50 20 ttp-msg.").Could.not.parse.HTTP.
38700 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 22 43 6f 75 response.")................."Cou
38720 6c 64 20 6e 6f 74 20 70 61 72 73 65 20 48 54 54 50 20 72 65 73 70 6f 6e 73 65 2e 22 29 29 29 0a ld.not.parse.HTTP.response."))).
38740 20 20 20 20 28 6c 69 73 74 20 6e 69 6c 20 28 63 6f 6e 63 61 74 20 22 28 22 20 68 74 74 70 2d 6d ....(list.nil.(concat."(".http-m
38760 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 73 70 6f sg.").Could.not.parse.HTTP.respo
38780 6e 73 65 2e 22 29 0a 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 nse.")..........."Could.not.pars
387a0 65 20 48 54 54 50 20 72 65 73 70 6f 6e 73 65 2e 22 29 29 29 0a 0a 28 63 6c 2d 64 65 66 75 6e 20 e.HTTP.response.")))..(cl-defun.
387c0 67 70 74 65 6c 2d 2d 73 61 6e 69 74 69 7a 65 2d 6d 6f 64 65 6c 20 28 26 6b 65 79 20 28 62 61 63 gptel--sanitize-model.(&key.(bac
387e0 6b 65 6e 64 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 kend.gptel-backend).............
38800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 65 6c ..........................(model
38820 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 20 20 20 .gptel-model)...................
38840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 68 6f 6f 73 68 20 74 29 29 0a ....................(shoosh.t)).
38860 20 20 22 43 68 65 63 6b 20 69 66 20 4d 4f 44 45 4c 20 69 73 20 61 76 61 69 6c 61 62 6c 65 20 69 .."Check.if.MODEL.is.available.i
38880 6e 20 42 41 43 4b 45 4e 44 2c 20 61 64 6a 75 73 74 20 61 63 63 6f 72 64 69 6e 67 6c 79 2e 0a 0a n.BACKEND,.adjust.accordingly...
388a0 49 66 20 53 48 4f 4f 53 48 20 69 73 20 74 72 75 65 2c 20 64 6f 6e 27 74 20 69 73 73 75 65 20 61 If.SHOOSH.is.true,.don't.issue.a
388c0 20 77 61 72 6e 69 6e 67 2e 22 0a 20 20 28 6c 65 74 20 28 28 61 76 61 69 6c 61 62 6c 65 20 28 67 .warning."...(let.((available.(g
388e0 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 6d 6f 64 65 6c 73 20 62 61 63 6b 65 6e 64 29 29 29 0a 20 ptel-backend-models.backend)))..
38900 20 20 20 28 77 68 65 6e 20 28 73 74 72 69 6e 67 70 20 6d 6f 64 65 6c 29 0a 20 20 20 20 20 20 28 ...(when.(stringp.model).......(
38920 75 6e 6c 65 73 73 20 73 68 6f 6f 73 68 0a 20 20 20 20 20 20 20 20 28 64 69 73 70 6c 61 79 2d 77 unless.shoosh.........(display-w
38940 61 72 6e 69 6e 67 0a 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 arning..........'gptel..........
38960 28 66 6f 72 6d 61 74 20 22 60 67 70 74 65 6c 2d 6d 6f 64 65 6c 27 20 65 78 70 65 63 74 73 20 61 (format."`gptel-model'.expects.a
38980 20 73 79 6d 62 6f 6c 2c 20 66 6f 75 6e 64 20 73 74 72 69 6e 67 20 5c 22 25 73 5c 22 0a 20 20 20 .symbol,.found.string.\"%s\"....
389a0 52 65 73 65 74 74 69 6e 67 20 60 67 70 74 65 6c 2d 6d 6f 64 65 6c 27 20 74 6f 20 25 73 22 0a 20 Resetting.`gptel-model'.to.%s"..
389c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 65 6c 20 6d 6f 64 65 6c 29 29 29 0a 20 ................model.model)))..
389e0 20 20 20 20 20 28 73 65 74 71 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 20 28 67 70 74 65 6c 2d 2d 69 .....(setq.gptel-model.(gptel--i
38a00 6e 74 65 72 6e 20 6d 6f 64 65 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 65 6c 20 67 ntern.model).............model.g
38a20 70 74 65 6c 2d 6d 6f 64 65 6c 29 29 0a 20 20 20 20 28 75 6e 6c 65 73 73 20 28 6d 65 6d 62 65 72 ptel-model)).....(unless.(member
38a40 20 6d 6f 64 65 6c 20 61 76 61 69 6c 61 62 6c 65 29 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 66 .model.available).......(let.((f
38a60 61 6c 6c 62 61 63 6b 20 28 63 61 72 20 61 76 61 69 6c 61 62 6c 65 29 29 29 0a 20 20 20 20 20 20 allback.(car.available))).......
38a80 20 20 28 75 6e 6c 65 73 73 20 73 68 6f 6f 73 68 0a 20 20 20 20 20 20 20 20 20 20 28 64 69 73 70 ..(unless.shoosh...........(disp
38aa0 6c 61 79 2d 77 61 72 6e 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 27 67 70 74 65 6c 0a 20 20 lay-warning............'gptel...
38ac0 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 50 72 65 66 65 72 .........(format.(concat."Prefer
38ae0 72 65 64 20 60 67 70 74 65 6c 2d 6d 6f 64 65 6c 27 20 5c 22 25 73 5c 22 20 6e 6f 74 22 0a 20 20 red.`gptel-model'.\"%s\".not"...
38b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 73 75 70 70 6f 72 ........................."suppor
38b20 74 65 64 20 69 6e 20 5c 22 25 73 5c 22 2c 20 75 73 69 6e 67 20 5c 22 25 73 5c 22 20 69 6e 73 74 ted.in.\"%s\",.using.\"%s\".inst
38b40 65 61 64 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 65 6c 20 28 ead")....................model.(
38b60 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 20 62 61 63 6b 65 6e 64 29 20 66 61 6c 6c gptel-backend-name.backend).fall
38b80 62 61 63 6b 29 29 29 0a 20 20 20 20 20 20 20 20 28 73 65 74 71 2d 6c 6f 63 61 6c 20 67 70 74 65 back))).........(setq-local.gpte
38ba0 6c 2d 6d 6f 64 65 6c 20 66 61 6c 6c 62 61 63 6b 29 29 29 29 29 0a 0a 3b 3b 3b 23 23 23 61 75 74 l-model.fallback)))))..;;;###aut
38bc0 6f 6c 6f 61 64 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 20 28 6e 61 6d 65 20 26 6f 70 74 69 6f 6e oload.(defun.gptel.(name.&option
38be0 61 6c 20 5f 20 69 6e 69 74 69 61 6c 20 69 6e 74 65 72 61 63 74 69 76 65 70 29 0a 20 20 22 53 77 al._.initial.interactivep)..."Sw
38c00 69 74 63 68 20 74 6f 20 6f 72 20 73 74 61 72 74 20 61 20 63 68 61 74 20 73 65 73 73 69 6f 6e 20 itch.to.or.start.a.chat.session.
38c20 77 69 74 68 20 4e 41 4d 45 2e 0a 0a 41 73 6b 20 66 6f 72 20 41 50 49 2d 4b 45 59 20 69 66 20 60 with.NAME...Ask.for.API-KEY.if.`
38c40 67 70 74 65 6c 2d 61 70 69 2d 6b 65 79 27 20 69 73 20 75 6e 73 65 74 2e 0a 0a 49 66 20 72 65 67 gptel-api-key'.is.unset...If.reg
38c60 69 6f 6e 20 69 73 20 61 63 74 69 76 65 2c 20 75 73 65 20 69 74 20 61 73 20 74 68 65 20 49 4e 49 ion.is.active,.use.it.as.the.INI
38c80 54 49 41 4c 20 70 72 6f 6d 70 74 2e 20 20 52 65 74 75 72 6e 73 20 74 68 65 0a 62 75 66 66 65 72 TIAL.prompt...Returns.the.buffer
38ca0 20 63 72 65 61 74 65 64 20 6f 72 20 73 77 69 74 63 68 65 64 20 74 6f 2e 0a 0a 49 4e 54 45 52 41 .created.or.switched.to...INTERA
38cc0 43 54 49 56 45 50 20 69 73 20 74 20 77 68 65 6e 20 67 70 74 65 6c 20 69 73 20 63 61 6c 6c 65 64 CTIVEP.is.t.when.gptel.is.called
38ce0 20 69 6e 74 65 72 61 63 74 69 76 65 6c 79 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 0a .interactively."...(interactive.
38d00 20 20 20 28 6c 65 74 2a 20 28 28 62 61 63 6b 65 6e 64 20 28 64 65 66 61 75 6c 74 2d 76 61 6c 75 ...(let*.((backend.(default-valu
38d20 65 20 27 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 62 61 e.'gptel-backend))...........(ba
38d40 63 6b 65 6e 64 2d 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 2a ckend-name............(format."*
38d60 25 73 2a 22 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 20 62 61 63 6b 65 6e 64 %s*".(gptel-backend-name.backend
38d80 29 29 29 29 0a 20 20 20 20 20 28 6c 69 73 74 20 28 72 65 61 64 2d 62 75 66 66 65 72 0a 20 20 20 ))))......(list.(read-buffer....
38da0 20 20 20 20 20 20 20 20 20 22 43 72 65 61 74 65 20 6f 72 20 63 68 6f 6f 73 65 20 67 70 74 65 6c ........."Create.or.choose.gptel
38dc0 20 62 75 66 66 65 72 3a 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 61 63 6b 65 6e 64 2d 6e .buffer:.".............backend-n
38de0 61 6d 65 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 20 ame.nil.........................
38e00 3b 20 44 45 46 41 55 4c 54 20 61 6e 64 20 52 45 51 55 49 52 45 2d 4d 41 54 43 48 0a 20 20 20 20 ;.DEFAULT.and.REQUIRE-MATCH.....
38e20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 62 29 20 20 20 20 20 20 20 20 20 20 20 20 20 ........(lambda.(b).............
38e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 50 52 45 44 49 43 41 54 ......................;.PREDICAT
38e60 45 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 4e 4f 54 45 3a 20 62 75 66 66 65 72 20 E...............;;.NOTE:.buffer.
38e80 63 68 65 63 6b 20 69 73 20 72 65 71 75 69 72 65 64 20 28 23 34 35 30 29 0a 20 20 20 20 20 20 20 check.is.required.(#450)........
38ea0 20 20 20 20 20 20 20 28 61 6e 64 2d 6c 65 74 2a 20 28 28 62 75 66 20 28 67 65 74 2d 62 75 66 66 .......(and-let*.((buf.(get-buff
38ec0 65 72 20 28 6f 72 20 28 63 61 72 2d 73 61 66 65 20 62 29 20 62 29 29 29 29 0a 20 20 20 20 20 20 er.(or.(car-safe.b).b)))).......
38ee0 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
38f00 70 74 65 6c 2d 6d 6f 64 65 20 62 75 66 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 63 6f ptel-mode.buf))))............(co
38f20 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ndition-case.nil................
38f40 28 67 70 74 65 6c 2d 2d 67 65 74 2d 61 70 69 2d 6b 65 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 (gptel--get-api-key.............
38f60 20 20 20 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 6b 65 79 20 62 61 63 6b 65 6e 64 29 29 ....(gptel-backend-key.backend))
38f80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 65 72 72 6f 72 20 75 73 65 72 2d 65 72 72 6f 72 ..............((error.user-error
38fa0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 67 70 74 65 6c 2d 61 70 69 2d )...............(setq.gptel-api-
38fc0 6b 65 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 61 64 2d 70 61 key.....................(read-pa
38fe0 73 73 77 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 sswd......................(forma
39000 74 20 22 25 73 20 41 50 49 20 6b 65 79 3a 20 22 20 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 29 29 29 t."%s.API.key:.".backend-name)))
39020 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 28 75 73 65 2d 72 65 67 69 6f 6e 2d 70 ))............(and.(use-region-p
39040 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 ).................(buffer-substr
39060 69 6e 67 20 28 72 65 67 69 6f 6e 2d 62 65 67 69 6e 6e 69 6e 67 29 0a 20 20 20 20 20 20 20 20 20 ing.(region-beginning)..........
39080 20 20 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 .........................(region
390a0 2d 65 6e 64 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 74 29 29 29 0a 20 20 28 77 69 74 68 2d -end)))............t)))...(with-
390c0 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
390e0 65 20 6e 61 6d 65 29 0a 20 20 20 20 28 63 6f 6e 64 20 3b 53 65 74 20 6d 61 6a 6f 72 20 6d 6f 64 e.name).....(cond.;Set.major.mod
39100 65 0a 20 20 20 20 20 28 28 65 71 20 6d 61 6a 6f 72 2d 6d 6f 64 65 20 67 70 74 65 6c 2d 64 65 66 e......((eq.major-mode.gptel-def
39120 61 75 6c 74 2d 6d 6f 64 65 29 29 0a 20 20 20 20 20 28 28 65 71 20 67 70 74 65 6c 2d 64 65 66 61 ault-mode))......((eq.gptel-defa
39140 75 6c 74 2d 6d 6f 64 65 20 27 74 65 78 74 2d 6d 6f 64 65 29 0a 20 20 20 20 20 20 28 74 65 78 74 ult-mode.'text-mode).......(text
39160 2d 6d 6f 64 65 29 0a 20 20 20 20 20 20 28 76 69 73 75 61 6c 2d 6c 69 6e 65 2d 6d 6f 64 65 20 31 -mode).......(visual-line-mode.1
39180 29 29 0a 20 20 20 20 20 28 74 20 28 66 75 6e 63 61 6c 6c 20 67 70 74 65 6c 2d 64 65 66 61 75 6c ))......(t.(funcall.gptel-defaul
391a0 74 2d 6d 6f 64 65 29 29 29 0a 20 20 20 20 28 67 70 74 65 6c 2d 2d 73 61 6e 69 74 69 7a 65 2d 6d t-mode))).....(gptel--sanitize-m
391c0 6f 64 65 6c 20 3a 62 61 63 6b 65 6e 64 20 28 64 65 66 61 75 6c 74 2d 76 61 6c 75 65 20 27 67 70 odel.:backend.(default-value.'gp
391e0 74 65 6c 2d 62 61 63 6b 65 6e 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 tel-backend)....................
39200 20 20 20 20 20 20 20 20 3a 6d 6f 64 65 6c 20 28 64 65 66 61 75 6c 74 2d 76 61 6c 75 65 20 27 67 ........:model.(default-value.'g
39220 70 74 65 6c 2d 6d 6f 64 65 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ptel-model).....................
39240 20 20 20 20 20 20 20 3a 73 68 6f 6f 73 68 20 6e 69 6c 29 0a 20 20 20 20 28 75 6e 6c 65 73 73 20 .......:shoosh.nil).....(unless.
39260 67 70 74 65 6c 2d 6d 6f 64 65 20 28 67 70 74 65 6c 2d 6d 6f 64 65 20 31 29 29 0a 20 20 20 20 28 gptel-mode.(gptel-mode.1)).....(
39280 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 0a 20 20 20 20 28 73 6b 69 70 goto-char.(point-max)).....(skip
392a0 2d 63 68 61 72 73 2d 62 61 63 6b 77 61 72 64 20 22 5c 74 5c 72 5c 6e 22 29 0a 20 20 20 20 28 69 -chars-backward."\t\r\n").....(i
392c0 66 20 28 62 6f 62 70 29 20 28 69 6e 73 65 72 74 20 28 6f 72 20 69 6e 69 74 69 61 6c 20 28 67 70 f.(bobp).(insert.(or.initial.(gp
392e0 74 65 6c 2d 70 72 6f 6d 70 74 2d 70 72 65 66 69 78 2d 73 74 72 69 6e 67 29 29 29 29 0a 20 20 20 tel-prompt-prefix-string))))....
39300 20 28 77 68 65 6e 20 69 6e 74 65 72 61 63 74 69 76 65 70 0a 20 20 20 20 20 20 28 64 69 73 70 6c .(when.interactivep.......(displ
39320 61 79 2d 62 75 66 66 65 72 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 20 67 70 74 65 6c ay-buffer.(current-buffer).gptel
39340 2d 64 69 73 70 6c 61 79 2d 62 75 66 66 65 72 2d 61 63 74 69 6f 6e 29 0a 20 20 20 20 20 20 28 6d -display-buffer-action).......(m
39360 65 73 73 61 67 65 20 22 53 65 6e 64 20 79 6f 75 72 20 71 75 65 72 79 20 77 69 74 68 20 25 73 21 essage."Send.your.query.with.%s!
39380 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 75 62 73 74 69 74 75 74 65 2d 63 6f 6d "................(substitute-com
393a0 6d 61 6e 64 2d 6b 65 79 73 20 22 5c 5c 5b 67 70 74 65 6c 2d 73 65 6e 64 5d 22 29 29 29 0a 20 20 mand-keys."\\[gptel-send]")))...
393c0 20 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29 29 0a 0a 0c 0a 3b 3b 3b 20 52 65 61 73 ..(current-buffer)))....;;;.Reas
393e0 6f 6e 69 6e 67 20 63 6f 6e 74 65 6e 74 20 55 49 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 oning.content.UI.(declare-functi
39400 6f 6e 20 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 73 74 72 65 61 6d 2d 69 6e 73 65 72 74 2d 72 65 73 on.gptel-curl--stream-insert-res
39420 70 6f 6e 73 65 20 22 67 70 74 65 6c 2d 63 75 72 6c 22 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 ponse."gptel-curl")..(defun.gpte
39440 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 28 74 65 78 l--display-reasoning-stream.(tex
39460 74 20 69 6e 66 6f 29 0a 20 20 22 53 68 6f 77 20 72 65 61 73 6f 6e 69 6e 67 20 54 45 58 54 20 69 t.info)..."Show.reasoning.TEXT.i
39480 6e 20 61 6e 20 61 70 70 72 6f 70 72 69 61 74 65 20 6c 6f 63 61 74 69 6f 6e 2e 0a 0a 49 4e 46 4f n.an.appropriate.location...INFO
394a0 20 69 73 20 74 68 65 20 72 65 71 75 65 73 74 20 49 4e 46 4f 2c 20 73 65 65 20 60 67 70 74 65 6c .is.the.request.INFO,.see.`gptel
394c0 2d 2d 75 72 6c 2d 67 65 74 2d 72 65 73 70 6f 6e 73 65 27 2e 20 20 54 68 69 73 20 69 73 0a 66 6f --url-get-response'...This.is.fo
394e0 72 20 73 74 72 65 61 6d 69 6e 67 20 72 65 73 70 6f 6e 73 65 73 20 6f 6e 6c 79 2e 22 0a 20 20 28 r.streaming.responses.only."...(
39500 77 68 65 6e 2d 6c 65 74 2a 20 28 28 69 6e 63 6c 75 64 65 20 28 70 6c 69 73 74 2d 67 65 74 20 69 when-let*.((include.(plist-get.i
39520 6e 66 6f 20 3a 69 6e 63 6c 75 64 65 2d 72 65 61 73 6f 6e 69 6e 67 29 29 29 0a 20 20 20 20 28 69 nfo.:include-reasoning))).....(i
39540 66 20 28 73 74 72 69 6e 67 70 20 69 6e 63 6c 75 64 65 29 0a 20 20 20 20 20 20 20 20 28 75 6e 6c f.(stringp.include).........(unl
39560 65 73 73 20 28 65 71 20 74 65 78 74 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 28 77 69 74 68 2d ess.(eq.text.t)...........(with-
39580 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
395a0 65 20 69 6e 63 6c 75 64 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 73 61 76 65 2d 65 78 63 e.include).............(save-exc
395c0 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 61 78 29 29 0a 20 ursion.(goto-char.(point-max))..
395e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 ...........................(inse
39600 72 74 20 74 65 78 74 29 29 29 29 0a 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 72 65 61 73 6f 6e rt.text)))).......(let*.((reason
39620 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 72 65 61 73 ing-marker.(plist-get.info.:reas
39640 6f 6e 69 6e 67 2d 6d 61 72 6b 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 72 61 oning-marker))..............(tra
39660 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 74 72 cking-marker.(plist-get.info.:tr
39680 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 74 acking-marker))..............(st
396a0 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 73 69 art-marker.(plist-get.info.:posi
396c0 74 69 6f 6e 29 29 29 0a 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 tion))).........(with-current-bu
396e0 66 66 65 72 20 28 6d 61 72 6b 65 72 2d 62 75 66 66 65 72 20 73 74 61 72 74 2d 6d 61 72 6b 65 72 ffer.(marker-buffer.start-marker
39700 29 0a 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 65 71 20 74 65 78 74 20 74 29 20 20 20 20 20 )...........(if.(eq.text.t).....
39720 20 20 20 20 20 20 20 20 20 20 3b 65 6e 64 20 6f 66 20 73 74 72 65 61 6d 0a 20 20 20 20 20 20 20 ..........;end.of.stream........
39740 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 28 67 .......(progn.................(g
39760 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 6e 73 ptel-curl--stream-insert-respons
39780 65 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 69 66 20 28 e..................(concat.(if.(
397a0 64 65 72 69 76 65 64 2d 6d 6f 64 65 2d 70 20 27 6f 72 67 2d 6d 6f 64 65 29 0a 20 20 20 20 20 20 derived-mode-p.'org-mode).......
397c0 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 23 2b 65 6e 64 5f ......................."\n#+end_
397e0 72 65 61 73 6f 6e 69 6e 67 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 reasoning"......................
39800 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 72 65 6d 6f 76 65 20 ......;;.TODO(reasoning).remove.
39820 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 65 61 64 0a 20 20 20 properties.and.strip.instead....
39840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 ........................(propert
39860 69 7a 65 20 22 5c 6e 60 60 60 22 20 27 67 70 74 65 6c 20 27 69 67 6e 6f 72 65 29 29 0a 20 20 20 ize."\n```".'gptel.'ignore))....
39880 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 72 65 73 70 ......................gptel-resp
398a0 6f 6e 73 65 2d 73 65 70 61 72 61 74 6f 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 onse-separator).................
398c0 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 28 77 68 65 6e 20 28 .info.t).................(when.(
398e0 64 65 72 69 76 65 64 2d 6d 6f 64 65 2d 70 20 27 6f 72 67 2d 6d 6f 64 65 29 20 3b 66 6f 6c 64 20 derived-mode-p.'org-mode).;fold.
39900 62 6c 6f 63 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 67 6e 6f 72 65 2d block...................(ignore-
39920 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 28 73 61 76 65 errors.....................(save
39940 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 20 20 20 20 -excursion......................
39960 20 28 67 6f 74 6f 2d 63 68 61 72 20 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 29 0a 20 20 20 .(goto-char.tracking-marker)....
39980 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
399a0 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
399c0 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 20 20 20 28 77 68 65 er.t).......................(whe
399e0 6e 20 28 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 n.(looking-at."^#\\+end_reasonin
39a00 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 20 20 20 28 6f 72 67 g").........................(org
39a20 2d 63 79 63 6c 65 29 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 -cycle)))))).............(unless
39a40 20 28 61 6e 64 20 72 65 61 73 6f 6e 69 6e 67 2d 6d 61 72 6b 65 72 20 74 72 61 63 6b 69 6e 67 2d .(and.reasoning-marker.tracking-
39a60 6d 61 72 6b 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 marker..........................
39a80 28 3d 20 72 65 61 73 6f 6e 69 6e 67 2d 6d 61 72 6b 65 72 20 74 72 61 63 6b 69 6e 67 2d 6d 61 72 (=.reasoning-marker.tracking-mar
39aa0 6b 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 63 75 72 6c 2d ker))...............(gptel-curl-
39ac0 2d 73 74 72 65 61 6d 2d 69 6e 73 65 72 74 2d 72 65 73 70 6f 6e 73 65 0a 20 20 20 20 20 20 20 20 -stream-insert-response.........
39ae0 20 20 20 20 20 20 20 28 69 66 20 28 64 65 72 69 76 65 64 2d 6d 6f 64 65 2d 70 20 27 6f 72 67 2d .......(if.(derived-mode-p.'org-
39b00 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 22 23 2b 62 65 67 69 mode)...................."#+begi
39b20 6e 5f 72 65 61 73 6f 6e 69 6e 67 5c 6e 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 n_reasoning\n"..................
39b40 3b 3b 20 54 4f 44 4f 28 72 65 61 73 6f 6e 69 6e 67 29 20 72 65 6d 6f 76 65 20 70 72 6f 70 65 72 ;;.TODO(reasoning).remove.proper
39b60 74 69 65 73 20 61 6e 64 20 73 74 72 69 70 20 69 6e 73 74 65 61 64 0a 20 20 20 20 20 20 20 20 20 ties.and.strip.instead..........
39b80 20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 60 60 60 20 72 65 61 73 6f 6e 69 ........(propertize."```.reasoni
39ba0 6e 67 5c 6e 22 20 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 ng\n".'gptel.'ignore))..........
39bc0 20 20 20 20 20 20 69 6e 66 6f 20 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 ......info.t)).............(if.(
39be0 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 20 eq.include.'ignore).............
39c00 20 20 20 20 28 70 72 6f 67 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 64 ....(progn...................(ad
39c20 64 2d 74 65 78 74 2d 70 72 6f 70 65 72 74 69 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 d-text-properties...............
39c40 20 20 20 20 20 30 20 28 6c 65 6e 67 74 68 20 74 65 78 74 29 20 27 28 67 70 74 65 6c 20 69 67 6e .....0.(length.text).'(gptel.ign
39c60 6f 72 65 20 66 72 6f 6e 74 2d 73 74 69 63 6b 79 20 28 67 70 74 65 6c 29 29 20 74 65 78 74 29 0a ore.front-sticky.(gptel)).text).
39c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 73 ..................(gptel-curl--s
39ca0 74 72 65 61 6d 2d 69 6e 73 65 72 74 2d 72 65 73 70 6f 6e 73 65 20 74 65 78 74 20 69 6e 66 6f 20 tream-insert-response.text.info.
39cc0 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 73 t))...............(gptel-curl--s
39ce0 74 72 65 61 6d 2d 69 6e 73 65 72 74 2d 72 65 73 70 6f 6e 73 65 20 74 65 78 74 20 69 6e 66 6f 29 tream-insert-response.text.info)
39d00 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b ))...........(setq.tracking-mark
39d20 65 72 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 74 72 61 63 6b 69 6e 67 2d 6d 61 72 er.(plist-get.info.:tracking-mar
39d40 6b 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 69 66 20 72 65 61 73 6f 6e 69 6e 67 2d 6d 61 ker))...........(if.reasoning-ma
39d60 72 6b 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 76 65 2d 6d 61 72 6b 65 72 20 rker...............(move-marker.
39d80 72 65 61 73 6f 6e 69 6e 67 2d 6d 61 72 6b 65 72 20 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 reasoning-marker.tracking-marker
39da0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 72 ).............(plist-put.info.:r
39dc0 65 61 73 6f 6e 69 6e 67 2d 6d 61 72 6b 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 easoning-marker.................
39de0 20 20 20 20 20 20 20 28 63 6f 70 79 2d 6d 61 72 6b 65 72 20 74 72 61 63 6b 69 6e 67 2d 6d 61 72 .......(copy-marker.tracking-mar
39e00 6b 65 72 20 6e 69 6c 29 29 29 29 29 29 29 29 0a 0a 0c 0a 3b 3b 3b 20 54 6f 6f 6c 20 75 73 65 20 ker.nil))))))))....;;;.Tool.use.
39e20 55 49 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 64 69 73 70 6c 61 79 2d 74 6f 6f 6c 2d 63 61 UI.(defun.gptel--display-tool-ca
39e40 6c 6c 73 20 28 74 6f 6f 6c 2d 63 61 6c 6c 73 20 69 6e 66 6f 20 26 6f 70 74 69 6f 6e 61 6c 20 75 lls.(tool-calls.info.&optional.u
39e60 73 65 2d 6d 69 6e 69 62 75 66 66 65 72 29 0a 20 20 22 48 61 6e 64 6c 65 20 74 6f 6f 6c 20 63 61 se-minibuffer)..."Handle.tool.ca
39e80 6c 6c 20 63 6f 6e 66 69 72 6d 61 74 69 6f 6e 2e 0a 0a 54 4f 4f 4c 2d 43 41 4c 4c 53 20 73 68 6f ll.confirmation...TOOL-CALLS.sho
39ea0 75 6c 64 20 62 65 20 61 20 6c 69 73 74 20 6f 66 20 74 6f 6f 6c 20 63 61 6c 6c 20 73 70 65 63 69 uld.be.a.list.of.tool.call.speci
39ec0 66 69 63 61 74 69 6f 6e 73 20 6f 72 20 72 65 73 75 6c 74 73 2c 0a 73 74 72 75 63 74 75 72 65 64 fications.or.results,.structured
39ee0 20 61 73 3a 0a 0a 20 28 28 74 6f 6f 6c 20 61 72 67 73 20 63 61 6c 6c 62 61 63 6b 29 20 2e 2e 2e .as:...((tool.args.callback)....
39f00 29 0a 0a 66 6f 72 20 74 6f 6f 6c 20 63 61 6c 6c 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e 73 20 )..for.tool.call.specifications.
39f20 74 6f 20 62 65 20 63 6f 6e 66 69 72 6d 65 64 2e 20 20 49 4e 46 4f 20 63 6f 6e 74 61 69 6e 73 20 to.be.confirmed...INFO.contains.
39f40 74 68 65 0a 73 74 61 74 65 20 6f 66 20 74 68 65 20 72 65 71 75 65 73 74 2e 20 20 54 6f 20 70 72 the.state.of.the.request...To.pr
39f60 6f 6d 70 74 20 66 6f 72 20 74 6f 6f 6c 20 63 61 6c 6c 20 63 6f 6e 66 69 72 6d 61 74 69 6f 6e 2c ompt.for.tool.call.confirmation,
39f80 20 75 73 65 0a 65 69 74 68 65 72 20 61 6e 20 6f 76 65 72 6c 61 79 20 69 6e 20 74 68 65 20 72 65 .use.either.an.overlay.in.the.re
39fa0 71 75 65 73 74 20 62 75 66 66 65 72 20 6f 72 20 74 68 65 20 6d 69 6e 69 62 75 66 66 65 72 20 28 quest.buffer.or.the.minibuffer.(
39fc0 69 66 0a 55 53 45 2d 4d 49 4e 49 42 55 46 46 45 52 20 69 73 20 6e 6f 6e 2d 6e 69 6c 29 2e 22 0a if.USE-MINIBUFFER.is.non-nil).".
39fe0 20 20 28 6c 65 74 2a 20 28 28 73 74 61 72 74 2d 6d 61 72 6b 65 72 20 28 70 6c 69 73 74 2d 67 65 ..(let*.((start-marker.(plist-ge
3a000 74 20 69 6e 66 6f 20 3a 70 6f 73 69 74 69 6f 6e 29 29 0a 20 20 20 20 20 20 20 20 20 28 74 72 61 t.info.:position))..........(tra
3a020 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 74 72 cking-marker.(plist-get.info.:tr
3a040 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 29 29 29 0a 20 20 20 20 3b 3b 20 70 65 6e 64 69 6e 67 20 acking-marker))).....;;.pending.
3a060 74 6f 6f 6c 20 63 61 6c 6c 73 20 6c 6f 6f 6b 20 6c 69 6b 65 20 28 28 74 6f 6f 6c 20 63 61 6c 6c tool.calls.look.like.((tool.call
3a080 62 61 63 6b 20 61 72 67 73 29 20 2e 2e 2e 29 0a 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e back.args)....).....(with-curren
3a0a0 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 72 t-buffer.(plist-get.info.:buffer
3a0c0 29 0a 20 20 20 20 20 20 28 69 66 20 75 73 65 2d 6d 69 6e 69 62 75 66 66 65 72 20 20 20 20 20 20 ).......(if.use-minibuffer......
3a0e0 20 20 20 20 20 20 3b 70 72 6f 6d 70 74 20 66 6f 72 20 63 6f 6e 66 69 72 6d 61 74 69 6f 6e 20 66 ......;prompt.for.confirmation.f
3a100 72 6f 6d 20 74 68 65 20 6d 69 6e 69 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 20 20 28 6c 65 rom.the.minibuffer...........(le
3a120 74 2a 20 28 28 6d 69 6e 69 62 75 66 66 65 72 2d 61 6c 6c 6f 77 2d 74 65 78 74 2d 70 72 6f 70 65 t*.((minibuffer-allow-text-prope
3a140 72 74 69 65 73 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 61 63 6b 65 rties.t)..................(backe
3a160 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 6c 69 nd-name.(gptel-backend-name.(pli
3a180 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 20 20 st-get.info.:backend))).........
3a1a0 20 20 20 20 20 20 20 20 20 28 70 72 6f 6d 70 74 20 28 66 6f 72 6d 61 74 20 22 25 73 20 77 61 6e .........(prompt.(format."%s.wan
3a1c0 74 73 20 74 6f 20 72 75 6e 20 22 20 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 29 29 29 0a 20 20 20 20 ts.to.run.".backend-name))).....
3a1e0 20 20 20 20 20 20 20 20 28 6d 61 70 2d 79 2d 6f 72 2d 6e 2d 70 0a 20 20 20 20 20 20 20 20 20 20 ........(map-y-or-n-p...........
3a200 20 20 20 28 6c 61 6d 62 64 61 20 28 74 6f 6f 6c 2d 63 61 6c 6c 2d 73 70 65 63 29 0a 20 20 20 20 ...(lambda.(tool-call-spec).....
3a220 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 70 72 6f 6d 70 74 20 28 70 72 6f 70 65 ...........(concat.prompt.(prope
3a240 72 74 69 7a 65 20 28 67 70 74 65 6c 2d 74 6f 6f 6c 2d 6e 61 6d 65 20 28 63 61 72 20 74 6f 6f 6c rtize.(gptel-tool-name.(car.tool
3a260 2d 63 61 6c 6c 2d 73 70 65 63 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -call-spec))....................
3a280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 66 61 63 65 20 27 66 6f .......................'face.'fo
3a2a0 6e 74 2d 6c 6f 63 6b 2d 6b 65 79 77 6f 72 64 2d 66 61 63 65 29 0a 20 20 20 20 20 20 20 20 20 20 nt-lock-keyword-face)...........
3a2c0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 3a 20 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 .............":.")).............
3a2e0 20 28 6c 61 6d 62 64 61 20 28 74 63 73 29 20 28 67 70 74 65 6c 2d 2d 61 63 63 65 70 74 2d 74 6f .(lambda.(tcs).(gptel--accept-to
3a300 6f 6c 2d 63 61 6c 6c 73 20 28 6c 69 73 74 20 74 63 73 29 20 6e 69 6c 29 29 0a 20 20 20 20 20 20 ol-calls.(list.tcs).nil)).......
3a320 20 20 20 20 20 20 20 74 6f 6f 6c 2d 63 61 6c 6c 73 20 27 28 22 74 6f 6f 6c 20 63 61 6c 6c 22 20 .......tool-calls.'("tool.call".
3a340 22 74 6f 6f 6c 20 63 61 6c 6c 73 22 20 22 72 75 6e 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 "tool.calls"."run").............
3a360 20 60 28 28 3f 69 20 2c 28 6c 61 6d 62 64 61 20 28 5f 29 20 28 73 61 76 65 2d 77 69 6e 64 6f 77 .`((?i.,(lambda.(_).(save-window
3a380 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 20 20 20 20 -excursion......................
3a3a0 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 73 65 6c 65 63 74 65 64 2d 77 69 6e 64 6f 77 0a 20 20 ........(with-selected-window...
3a3c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 ...............................(
3a3e0 67 70 74 65 6c 2d 2d 69 6e 73 70 65 63 74 2d 66 73 6d 20 67 70 74 65 6c 2d 2d 66 73 6d 2d 6c 61 gptel--inspect-fsm.gptel--fsm-la
3a400 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 st).............................
3a420 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 0a 20 20 20 20 20 ...(goto-char.(point-min))......
3a440 20 20 20 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 ..........................(when.
3a460 28 73 65 61 72 63 68 2d 66 6f 72 77 61 72 64 2d 72 65 67 65 78 70 20 22 5e 3a 74 6f 6f 6c 2d 75 (search-forward-regexp."^:tool-u
3a480 73 65 22 20 6e 69 6c 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 se".nil.t)......................
3a4a0 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 30 29 20 28 68 6c ............(forward-line.0).(hl
3a4c0 2d 6c 69 6e 65 2d 68 69 67 68 6c 69 67 68 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -line-highlight))...............
3a4e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 73 65 2d 6c 6f 63 61 6c 2d 6d 61 70 0a .................(use-local-map.
3a500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
3a520 28 6d 61 6b 65 2d 63 6f 6d 70 6f 73 65 64 2d 6b 65 79 6d 61 70 0a 20 20 20 20 20 20 20 20 20 20 (make-composed-keymap...........
3a540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 65 66 69 6e 65 2d 6b .......................(define-k
3a560 65 79 6d 61 70 20 22 71 22 20 28 6c 61 6d 62 64 61 20 28 29 20 28 69 6e 74 65 72 61 63 74 69 76 eymap."q".(lambda.().(interactiv
3a580 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 20 e)..............................
3a5a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 71 75 69 74 2d 77 .........................(quit-w
3a5c0 69 6e 64 6f 77 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 indow)..........................
3a5e0 20 20 20 20 20 20 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 78 .............................(ex
3a600 69 74 2d 72 65 63 75 72 73 69 76 65 2d 65 64 69 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 it-recursive-edit)))............
3a620 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 72 65 6e 74 2d 6c ......................(current-l
3a640 6f 63 61 6c 2d 6d 61 70 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ocal-map))).....................
3a660 20 20 20 20 20 20 20 20 20 20 20 28 72 65 63 75 72 73 69 76 65 2d 65 64 69 74 29 20 6e 69 6c 29 ...........(recursive-edit).nil)
3a680 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 69 6e 73 70 65 63 74 20 63 ))...................."inspect.c
3a6a0 61 6c 6c 28 73 29 22 29 29 29 29 0a 20 20 20 20 20 20 20 20 3b 3b 20 50 72 6f 6d 70 74 20 66 6f all(s)")))).........;;.Prompt.fo
3a6c0 72 20 63 6f 6e 66 69 72 6d 61 74 69 6f 6e 20 66 72 6f 6d 20 74 68 65 20 63 68 61 74 20 62 75 66 r.confirmation.from.the.chat.buf
3a6e0 66 65 72 0a 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 fer.........(let*.((backend-name
3a700 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 20 28 70 6c 69 73 74 2d 67 65 74 20 .(gptel-backend-name.(plist-get.
3a720 69 6e 66 6f 20 3a 62 61 63 6b 65 6e 64 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 info.:backend)))................
3a740 28 61 63 74 69 6f 6e 73 2d 73 74 72 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (actions-string.................
3a760 28 63 6f 6e 63 61 74 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 52 75 6e 20 74 6f 6f 6c 73 3a 20 (concat.(propertize."Run.tools:.
3a780 22 20 27 66 61 63 65 20 27 66 6f 6e 74 2d 6c 6f 63 6b 2d 73 74 72 69 6e 67 2d 66 61 63 65 29 0a ".'face.'font-lock-string-face).
3a7a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 ........................(propert
3a7c0 69 7a 65 20 22 43 2d 63 20 43 2d 63 22 20 27 66 61 63 65 20 27 68 65 6c 70 2d 6b 65 79 2d 62 69 ize."C-c.C-c".'face.'help-key-bi
3a7e0 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 28 nding).........................(
3a800 70 72 6f 70 65 72 74 69 7a 65 20 22 2c 20 43 61 6e 63 65 6c 20 72 65 71 75 65 73 74 3a 20 22 20 propertize.",.Cancel.request:.".
3a820 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)...
3a840 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
3a860 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
3a880 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 28 70 72 ing).........................(pr
3a8a0 6f 70 65 72 74 69 7a 65 20 22 2c 20 49 6e 73 70 65 63 74 3a 20 22 20 27 66 61 63 65 20 27 66 6f opertize.",.Inspect:.".'face.'fo
3a8c0 6e 74 2d 6c 6f 63 6b 2d 73 74 72 69 6e 67 2d 66 61 63 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 nt-lock-string-face)............
3a8e0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 43 2d 63 20 43 2d .............(propertize."C-c.C-
3a900 69 22 20 27 66 61 63 65 20 27 68 65 6c 70 2d 6b 65 79 2d 62 69 6e 64 69 6e 67 29 29 29 0a 20 20 i".'face.'help-key-binding)))...
3a920 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 66 69 72 6d 2d 73 74 72 69 6e 67 73 0a 20 20 .............(confirm-strings...
3a940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 28 63 6f 6e 63 61 74 20 22 5c 6e 22 ..............(list.(concat."\n"
3a960 20 61 63 74 69 6f 6e 73 2d 73 74 72 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .actions-string.................
3a980 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 5c 6e 22 20 27 ..............(propertize."\n".'
3a9a0 66 61 63 65 20 27 28 3a 69 6e 68 65 72 69 74 20 66 6f 6e 74 2d 6c 6f 63 6b 2d 73 74 72 69 6e 67 face.'(:inherit.font-lock-string
3a9c0 2d 66 61 63 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -face...........................
3a9e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
3aa00 20 20 20 20 20 20 3a 75 6e 64 65 72 6c 69 6e 65 20 74 20 3a 65 78 74 65 6e 64 20 74 29 29 0a 20 ......:underline.t.:extend.t))..
3aa20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f .............................(fo
3aa40 72 6d 61 74 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 5c 6e 25 73 20 77 61 6e 74 73 20 74 6f 20 rmat.(propertize."\n%s.wants.to.
3aa60 72 75 6e 3a 5c 6e 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 run:\n".........................
3aa80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 66 61 63 65 20 ..........................'face.
3aaa0 27 66 6f 6e 74 2d 6c 6f 63 6b 2d 73 74 72 69 6e 67 2d 66 61 63 65 29 0a 20 20 20 20 20 20 20 20 'font-lock-string-face).........
3aac0 20 20 20 20 20 20 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 ..............................ba
3aae0 63 6b 65 6e 64 2d 6e 61 6d 65 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b ckend-name))))................;;
3ab00 20 46 49 58 4d 45 28 74 6f 6f 6c 29 20 75 73 65 20 61 20 77 72 61 70 70 65 72 20 69 6e 73 74 65 .FIXME(tool).use.a.wrapper.inste
3ab20 61 64 20 6f 66 20 61 20 6d 61 6e 75 61 6c 20 74 65 78 74 2d 70 72 6f 70 65 72 74 79 20 73 65 61 ad.of.a.manual.text-property.sea
3ab40 72 63 68 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 74 68 69 73 20 69 73 20 66 rch,................;;.this.is.f
3ab60 72 61 67 69 6c 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 76 2d 73 74 61 72 74 20 ragile................(ov-start.
3ab80 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (save-excursion.................
3aba0 20 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 73 74 61 72 74 2d 6d 61 72 6b ...........(goto-char.start-mark
3abc0 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 28 er)............................(
3abe0 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 27 67 text-property-search-backward.'g
3ac00 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 20 20 20 20 20 ptel.'response).................
3ac20 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 20 20 20 ...........(point)))............
3ac40 20 20 20 20 28 6f 76 20 28 6f 72 20 28 63 64 72 2d 73 61 66 65 20 28 67 65 74 2d 63 68 61 72 2d ....(ov.(or.(cdr-safe.(get-char-
3ac60 70 72 6f 70 65 72 74 79 2d 61 6e 64 2d 6f 76 65 72 6c 61 79 0a 20 20 20 20 20 20 20 20 20 20 20 property-and-overlay............
3ac80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 61 72 74 2d 6d 61 72 .......................start-mar
3aca0 6b 65 72 20 27 67 70 74 65 6c 2d 74 6f 6f 6c 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ker.'gptel-tool))...............
3acc0 20 20 20 20 20 20 20 20 20 28 6d 61 6b 65 2d 6f 76 65 72 6c 61 79 20 6f 76 2d 73 74 61 72 74 20 .........(make-overlay.ov-start.
3ace0 28 6f 72 20 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 20 73 74 61 72 74 2d 6d 61 72 6b 65 72 (or.tracking-marker.start-marker
3ad00 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20 49 66 20 74 68 65 20 63 75 72 73 6f 72 )))))...........;;.If.the.cursor
3ad20 20 69 73 20 61 74 20 74 68 65 20 6f 76 65 72 6c 61 79 2d 65 6e 64 2c 20 69 74 20 65 6e 64 73 20 .is.at.the.overlay-end,.it.ends.
3ad40 75 70 20 6f 75 74 73 69 64 65 2c 20 73 6f 20 6d 6f 76 65 20 69 74 20 62 61 63 6b 0a 20 20 20 20 up.outside,.so.move.it.back.....
3ad60 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 0a 20 20 ......(unless.tracking-marker...
3ad80 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 3d 20 28 70 6f 69 6e 74 29 20 73 74 61 72 74 ..........(when.(=.(point).start
3ada0 2d 6d 61 72 6b 65 72 29 20 28 69 67 6e 6f 72 65 2d 65 72 72 6f 72 73 20 28 62 61 63 6b 77 61 72 -marker).(ignore-errors.(backwar
3adc0 64 2d 63 68 61 72 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 63 61 73 65 2d 64 6f 6c 69 d-char))))...........(pcase-doli
3ade0 73 74 20 28 60 28 2c 74 6f 6f 6c 2d 73 70 65 63 20 2c 61 72 67 2d 76 61 6c 75 65 73 20 5f 29 20 st.(`(,tool-spec.,arg-values._).
3ae00 74 6f 6f 6c 2d 63 61 6c 6c 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 67 tool-calls).............(push.(g
3ae20 70 74 65 6c 2d 2d 66 6f 72 6d 61 74 2d 74 6f 6f 6c 2d 63 61 6c 6c 20 28 67 70 74 65 6c 2d 74 6f ptel--format-tool-call.(gptel-to
3ae40 6f 6c 2d 6e 61 6d 65 20 74 6f 6f 6c 2d 73 70 65 63 29 20 61 72 67 2d 76 61 6c 75 65 73 29 0a 20 ol-name.tool-spec).arg-values)..
3ae60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 72 6d 2d 73 74 72 69 6e 67 73 .................confirm-strings
3ae80 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 63 6f 6e 63 61 74 20 28 70 72 6f 70 ))...........(push.(concat.(prop
3aea0 65 72 74 69 7a 65 20 22 5c 6e 22 20 27 66 61 63 65 20 27 28 3a 69 6e 68 65 72 69 74 20 66 6f 6e ertize."\n".'face.'(:inherit.fon
3aec0 74 2d 6c 6f 63 6b 2d 73 74 72 69 6e 67 2d 66 61 63 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 t-lock-string-face..............
3aee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
3af00 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 65 6e .............:underline.t.:exten
3af20 64 20 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 72 6d 2d 73 d.t))).................confirm-s
3af40 74 72 69 6e 67 73 29 0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20 41 64 64 20 63 6f 6e 66 69 72 6d trings)...........;;.Add.confirm
3af60 61 74 69 6f 6e 20 70 72 6f 6d 70 74 20 74 6f 20 74 68 65 20 6f 76 65 72 6c 61 79 0a 20 20 20 20 ation.prompt.to.the.overlay.....
3af80 20 20 20 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75 74 20 6f 76 20 27 61 66 74 65 72 2d 73 74 72 ......(overlay-put.ov.'after-str
3afa0 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 28 61 70 70 6c ing........................(appl
3afc0 79 20 23 27 63 6f 6e 63 61 74 20 28 6e 72 65 76 65 72 73 65 20 63 6f 6e 66 69 72 6d 2d 73 74 72 y.#'concat.(nreverse.confirm-str
3afe0 69 6e 67 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75 74 20 6f ings)))...........(overlay-put.o
3b000 76 20 27 6d 6f 75 73 65 2d 66 61 63 65 20 27 68 69 67 68 6c 69 67 68 74 29 0a 20 20 20 20 20 20 v.'mouse-face.'highlight).......
3b020 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 74 6f 6f 6c 20 ....(overlay-put.ov.'gptel-tool.
3b040 74 6f 6f 6c 2d 63 61 6c 6c 73 29 0a 20 20 20 20 20 20 20 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 tool-calls)...........(overlay-p
3b060 75 74 20 6f 76 20 27 68 65 6c 70 2d 65 63 68 6f 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ut.ov.'help-echo................
3b080 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 22 54 6f 6f 6c 20 63 61 6c 6c 28 73 29 20 72 65 ........(concat."Tool.call(s).re
3b0a0 71 75 65 73 74 65 64 3a 20 22 20 61 63 74 69 6f 6e 73 2d 73 74 72 69 6e 67 29 29 0a 20 20 20 20 quested:.".actions-string)).....
3b0c0 20 20 20 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75 74 20 6f 76 20 27 6b 65 79 6d 61 70 0a 20 20 ......(overlay-put.ov.'keymap...
3b0e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 65 66 69 6e 65 2d 6b 65 79 .....................(define-key
3b100 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 22 3c 6d map.........................."<m
3b120 6f 75 73 65 2d 31 3e 22 20 23 27 67 70 74 65 6c 2d 2d 64 69 73 70 61 74 63 68 2d 74 6f 6f 6c 2d ouse-1>".#'gptel--dispatch-tool-
3b140 63 61 6c 6c 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 calls.........................."
3b160 43 2d 63 20 43 2d 63 22 20 23 27 67 70 74 65 6c 2d 2d 61 63 63 65 70 74 2d 74 6f 6f 6c 2d 63 61 C-c.C-c".#'gptel--accept-tool-ca
3b180 6c 6c 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 43 2d lls.........................."C-
3b1a0 63 20 43 2d 6b 22 20 23 27 67 70 74 65 6c 2d 2d 72 65 6a 65 63 74 2d 74 6f 6f 6c 2d 63 61 6c 6c c.C-k".#'gptel--reject-tool-call
3b1c0 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 22 43 2d 63 20 s.........................."C-c.
3b1e0 43 2d 69 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c C-i"..........................(l
3b200 61 6d 62 64 61 20 28 29 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 20 20 20 20 20 20 20 ambda.().(interactive)..........
3b220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 73 65 6c 65 63 74 65 64 ..................(with-selected
3b240 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 20 20 20 20 -window.........................
3b260 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 6c .......(gptel--inspect-fsm.gptel
3b280 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 20 --fsm-last).....................
3b2a0 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 .........(goto-char.(point-min))
3b2c0 0a 20 20 20 20 20 20 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 ..............................(w
3b2e0 68 65 6e 20 28 73 65 61 72 63 68 2d 66 6f 72 77 61 72 64 2d 72 65 67 65 78 70 20 22 5e 3a 74 6f hen.(search-forward-regexp."^:to
3b300 6f 6c 2d 75 73 65 22 20 6e 69 6c 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ol-use".nil.t)..................
3b320 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 30 29 0a 20 ..............(forward-line.0)..
3b340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 68 ..............................(h
3b360 6c 2d 6c 69 6e 65 2d 68 69 67 68 6c 69 67 68 74 29 29 29 29 29 29 29 29 29 29 29 0a 0a 28 64 65 l-line-highlight)))))))))))..(de
3b380 66 75 6e 20 67 70 74 65 6c 2d 2d 64 69 73 70 6c 61 79 2d 74 6f 6f 6c 2d 72 65 73 75 6c 74 73 20 fun.gptel--display-tool-results.
3b3a0 28 74 6f 6f 6c 2d 72 65 73 75 6c 74 73 20 69 6e 66 6f 29 0a 20 20 22 49 6e 73 65 72 74 20 54 4f (tool-results.info)..."Insert.TO
3b3c0 4f 4c 2d 52 45 53 55 4c 54 53 20 69 6e 74 6f 20 62 75 66 66 65 72 2e 0a 0a 54 4f 4f 4c 2d 52 45 OL-RESULTS.into.buffer...TOOL-RE
3b3e0 53 55 4c 54 53 20 69 73 0a 0a 20 28 28 74 6f 6f 6c 20 61 72 67 73 20 72 65 73 75 6c 74 29 20 2e SULTS.is...((tool.args.result)..
3b400 2e 2e 29 0a 0a 66 6f 72 20 74 6f 6f 6c 20 63 61 6c 6c 20 72 65 73 75 6c 74 73 2e 20 20 49 4e 46 ..)..for.tool.call.results...INF
3b420 4f 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 73 74 61 74 65 20 6f 66 20 74 68 65 20 72 65 71 75 O.contains.the.state.of.the.requ
3b440 65 73 74 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 73 74 61 72 74 2d 6d 61 72 6b 65 72 20 28 70 6c est."...(let*.((start-marker.(pl
3b460 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 70 6f 73 69 74 69 6f 6e 29 29 0a 20 20 20 20 20 20 20 ist-get.info.:position))........
3b480 20 20 28 74 6f 6f 6c 2d 6d 61 72 6b 65 72 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a ..(tool-marker.(plist-get.info.:
3b4a0 74 6f 6f 6c 2d 6d 61 72 6b 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 28 74 72 61 63 6b 69 6e 67 tool-marker))..........(tracking
3b4c0 2d 6d 61 72 6b 65 72 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 74 72 61 63 6b 69 6e -marker.(plist-get.info.:trackin
3b4e0 67 2d 6d 61 72 6b 65 72 29 29 29 0a 20 20 20 20 3b 3b 20 49 6e 73 65 72 74 20 74 6f 6f 6c 20 72 g-marker))).....;;.Insert.tool.r
3b500 65 73 75 6c 74 73 0a 20 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 69 6e 63 6c 75 64 65 2d 74 esults.....(when.gptel-include-t
3b520 6f 6f 6c 2d 72 65 73 75 6c 74 73 0a 20 20 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d ool-results.......(with-current-
3b540 62 75 66 66 65 72 20 28 6d 61 72 6b 65 72 2d 62 75 66 66 65 72 20 73 74 61 72 74 2d 6d 61 72 6b buffer.(marker-buffer.start-mark
3b560 65 72 29 0a 20 20 20 20 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 0a 20 20 20 20 20 20 20 20 20 66 6f er).........(cl-loop..........fo
3b580 72 20 28 74 6f 6f 6c 20 61 72 67 73 20 72 65 73 75 6c 74 29 20 69 6e 20 74 6f 6f 6c 2d 72 65 73 r.(tool.args.result).in.tool-res
3b5a0 75 6c 74 73 0a 20 20 20 20 20 20 20 20 20 77 69 74 68 20 69 6e 63 6c 75 64 65 2d 6e 61 6d 65 73 ults..........with.include-names
3b5c0 20 3d 0a 20 20 20 20 20 20 20 20 20 28 6d 61 70 63 61 72 20 23 27 67 70 74 65 6c 2d 74 6f 6f 6c .=..........(mapcar.#'gptel-tool
3b5e0 2d 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 72 65 6d 6f 76 -name..................(cl-remov
3b600 65 2d 69 66 2d 6e 6f 74 20 23 27 67 70 74 65 6c 2d 74 6f 6f 6c 2d 69 6e 63 6c 75 64 65 20 28 70 e-if-not.#'gptel-tool-include.(p
3b620 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 74 6f 6f 6c 73 29 29 29 0a 20 20 20 20 20 20 20 20 list-get.info.:tools))).........
3b640 20 69 66 20 28 6f 72 20 28 65 71 20 67 70 74 65 6c 2d 69 6e 63 6c 75 64 65 2d 74 6f 6f 6c 2d 72 .if.(or.(eq.gptel-include-tool-r
3b660 65 73 75 6c 74 73 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 65 6d 62 65 esults.t).................(membe
3b680 72 20 28 67 70 74 65 6c 2d 74 6f 6f 6c 2d 6e 61 6d 65 20 74 6f 6f 6c 29 20 69 6e 63 6c 75 64 65 r.(gptel-tool-name.tool).include
3b6a0 2d 6e 61 6d 65 73 29 29 0a 20 20 20 20 20 20 20 20 20 64 6f 20 28 66 75 6e 63 61 6c 6c 0a 20 20 -names))..........do.(funcall...
3b6c0 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 63 61 6c 6c ...........(plist-get.info.:call
3b6e0 62 61 63 6b 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 6e 61 6d 65 20 back)..............(let*.((name.
3b700 28 67 70 74 65 6c 2d 74 6f 6f 6c 2d 6e 61 6d 65 20 74 6f 6f 6c 29 29 0a 20 20 20 20 20 20 20 20 (gptel-tool-name.tool)).........
3b720 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 70 61 72 61 74 6f 72 20 28 69 66 20 28 61 6e 64 20 ............(separator.(if.(and.
3b740 74 6f 6f 6c 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 tool-marker.tracking-marker.....
3b760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
3b780 20 20 20 20 28 3d 20 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 20 74 6f 6f 6c 2d 6d 61 72 6b ....(=.tracking-marker.tool-mark
3b7a0 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 20 20 er))............................
3b7c0 20 20 20 20 20 20 20 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 ........"\n"....................
3b7e0 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 70 ..............gptel-response-sep
3b800 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 20 20 20 20 28 74 6f arator)).....................(to
3b820 6f 6c 2d 75 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 54 ol-use......................;;.T
3b840 4f 44 4f 28 74 6f 6f 6c 29 20 61 6c 73 6f 20 63 68 65 63 6b 20 61 72 67 73 20 73 69 6e 63 65 20 ODO(tool).also.check.args.since.
3b860 74 68 65 72 65 20 6d 61 79 20 62 65 20 6d 6f 72 65 20 74 68 61 6e 0a 20 20 20 20 20 20 20 20 20 there.may.be.more.than..........
3b880 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 6f 6e 65 20 63 61 6c 6c 2f 72 65 73 75 6c 74 20 66 ............;;.one.call/result.f
3b8a0 6f 72 20 74 68 65 20 73 61 6d 65 20 74 6f 6f 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 or.the.same.tool................
3b8c0 20 20 20 20 20 20 28 63 6c 2d 66 69 6e 64 2d 69 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ......(cl-find-if...............
3b8e0 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 74 75 29 20 28 65 71 75 61 6c 20 28 70 6c 69 ........(lambda.(tu).(equal.(pli
3b900 73 74 2d 67 65 74 20 74 75 20 3a 6e 61 6d 65 29 20 6e 61 6d 65 29 29 0a 20 20 20 20 20 20 20 20 st-get.tu.:name).name)).........
3b920 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 3a 74 ..............(plist-get.info.:t
3b940 6f 6f 6c 2d 75 73 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 ool-use))).....................(
3b960 69 64 20 28 70 6c 69 73 74 2d 67 65 74 20 74 6f 6f 6c 2d 75 73 65 20 3a 69 64 29 29 0a 20 20 20 id.(plist-get.tool-use.:id))....
3b980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 69 73 70 6c 61 79 2d 63 61 6c 6c 20 28 .................(display-call.(
3b9a0 66 6f 72 6d 61 74 20 22 28 25 73 20 25 73 29 22 20 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 format."(%s.%s)".name...........
3b9c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
3b9e0 28 73 74 72 69 6e 67 2d 74 72 69 6d 20 28 70 72 69 6e 31 2d 74 6f 2d 73 74 72 69 6e 67 20 61 72 (string-trim.(prin1-to-string.ar
3ba00 67 73 29 20 22 28 22 20 22 29 22 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 gs)."(".")")))..................
3ba20 20 20 20 28 63 61 6c 6c 20 28 70 72 69 6e 31 2d 74 6f 2d 73 74 72 69 6e 67 20 60 28 3a 6e 61 6d ...(call.(prin1-to-string.`(:nam
3ba40 65 20 2c 6e 61 6d 65 20 3a 61 72 67 73 20 2c 61 72 67 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 e.,name.:args.,args)))..........
3ba60 20 20 20 20 20 20 20 20 20 20 20 28 74 72 75 6e 63 61 74 65 64 2d 63 61 6c 6c 20 28 74 72 75 6e ...........(truncated-call.(trun
3ba80 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............
3baa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 69 73 70 6c 61 ..........................displa
3bac0 79 2d 63 61 6c 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 y-call..........................
3bae0 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6c 6f 6f 72 20 28 2a 20 28 77 69 6e 64 6f 77 2d 77 69 ............(floor.(*.(window-wi
3bb00 64 74 68 29 20 30 2e 36 29 29 20 30 20 6e 69 6c 20 22 20 2e 2e 2e 29 22 29 29 29 0a 20 20 20 20 dth).0.6)).0.nil."....)"))).....
3bb20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 64 65 72 69 76 65 64 2d 6d 6f 64 65 2d 70 20 27 ...........(if.(derived-mode-p.'
3bb40 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 28 63 6f org-mode)....................(co
3bb60 6e 63 61 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 70 61 72 61 74 ncat.....................separat
3bb80 6f 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 23 2b 62 65 67 69 6e 5f or....................."#+begin_
3bba0 74 6f 6f 6c 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 75 6e 63 tool.".....................trunc
3bbc0 61 74 65 64 2d 63 61 6c 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 ated-call.....................(p
3bbe0 72 6f 70 65 72 74 69 7a 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 ropertize......................(
3bc00 63 6f 6e 63 61 74 20 22 5c 6e 22 20 63 61 6c 6c 20 22 5c 6e 5c 6e 22 20 28 6f 72 67 2d 65 73 63 concat."\n".call."\n\n".(org-esc
3bc20 61 70 65 2d 63 6f 64 65 2d 69 6e 2d 73 74 72 69 6e 67 20 72 65 73 75 6c 74 29 29 0a 20 20 20 20 ape-code-in-string.result)).....
3bc40 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..
3bc60 20 2c 69 64 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 5c 6e 23 2b .,id))....................."\n#+
3bc80 65 6e 64 5f 74 6f 6f 6c 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 54 end_tool")..................;;.T
3bca0 4f 44 4f 28 74 6f 6f 6c 29 20 65 6c 73 65 20 62 72 61 6e 63 68 20 69 73 20 68 61 6e 64 6c 69 6e ODO(tool).else.branch.is.handlin
3bcc0 67 20 61 6c 6c 20 66 72 6f 6e 74 2d 65 6e 64 73 20 61 73 20 6d 61 72 6b 64 6f 77 6e 2e 0a 20 20 g.all.front-ends.as.markdown....
3bce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 41 74 20 6c 65 61 73 74 20 65 73 63 61 70 ...............;;.At.least.escap
3bd00 65 20 6d 61 72 6b 64 6f 77 6e 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f e.markdown...................(co
3bd20 6e 63 61 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 70 61 72 61 74 6f 72 ncat...................separator
3bd40 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 6c 29 ...................;;.TODO(tool)
3bd60 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 6e 73 .remove.properties.and.strip.ins
3bd80 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 20 20 tead.of.ignoring................
3bda0 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 28 66 6f 72 6d 61 74 20 22 60 60 60 20 74 6f 6f 6c ...(propertize.(format."```.tool
3bdc0 20 25 73 22 20 74 72 75 6e 63 61 74 65 64 2d 63 61 6c 6c 29 20 27 67 70 74 65 6c 20 27 69 67 6e .%s".truncated-call).'gptel.'ign
3bde0 6f 72 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 ore)...................(properti
3be00 7a 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 54 4f 44 4f 28 74 6f ze....................;;.TODO(to
3be20 6f 6c 29 20 65 73 63 61 70 65 20 6d 61 72 6b 64 6f 77 6e 20 69 6e 20 72 65 73 75 6c 74 0a 20 20 ol).escape.markdown.in.result...
3be40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 22 5c 6e 22 20 63 61 .................(concat."\n".ca
3be60 6c 6c 20 22 5c 6e 5c 6e 22 20 72 65 73 75 6c 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ll."\n\n".result)...............
3be80 20 20 20 20 20 27 67 70 74 65 6c 20 60 28 74 6f 6f 6c 20 2e 20 2c 69 64 29 29 0a 20 20 20 20 20 .....'gptel.`(tool...,id))......
3bea0 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 54 4f 44 4f 28 74 6f 6f 6c 29 20 72 65 6d 6f 76 .............;;.TODO(tool).remov
3bec0 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 65 61 64 20 6f e.properties.and.strip.instead.o
3bee0 66 20 69 67 6e 6f 72 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 f.ignoring...................(pr
3bf00 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 72 65 29 opertize."\n```".'gptel.'ignore)
3bf20 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 66 6f 0a 20 20 20 20 20 20 20 20 20 20 )))..............info...........
3bf40 20 20 20 27 72 61 77 29 0a 20 20 20 20 20 20 20 20 20 3b 3b 20 74 6f 6f 6c 2d 72 65 73 75 6c 74 ...'raw)..........;;.tool-result
3bf60 20 69 6e 73 65 72 74 69 6f 6e 20 68 61 73 20 75 70 64 61 74 65 64 20 74 68 65 20 74 72 61 63 6b .insertion.has.updated.the.track
3bf80 69 6e 67 20 6d 61 72 6b 65 72 0a 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 74 72 61 63 ing.marker..........(unless.trac
3bfa0 6b 69 6e 67 2d 6d 61 72 6b 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 74 72 61 king-marker............(setq.tra
3bfc0 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 74 72 cking-marker.(plist-get.info.:tr
3bfe0 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 69 66 20 74 6f acking-marker)))..........(if.to
3c000 6f 6c 2d 6d 61 72 6b 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 76 65 2d 6d ol-marker................(move-m
3c020 61 72 6b 65 72 20 74 6f 6f 6c 2d 6d 61 72 6b 65 72 20 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 arker.tool-marker.tracking-marke
3c040 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 74 6f 6f 6c 2d 6d 61 72 6b 65 r)..............(setq.tool-marke
3c060 72 20 28 63 6f 70 79 2d 6d 61 72 6b 65 72 20 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 20 6e r.(copy-marker.tracking-marker.n
3c080 69 6c 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 il))..............(plist-put.inf
3c0a0 6f 20 3a 74 6f 6f 6c 2d 6d 61 72 6b 65 72 20 74 6f 6f 6c 2d 6d 61 72 6b 65 72 29 29 0a 20 20 20 o.:tool-marker.tool-marker))....
3c0c0 20 20 20 20 20 20 28 77 68 65 6e 20 28 64 65 72 69 76 65 64 2d 6d 6f 64 65 2d 70 20 27 6f 72 67 ......(when.(derived-mode-p.'org
3c0e0 2d 6d 6f 64 65 29 20 3b 66 6f 6c 64 20 64 72 61 77 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 28 -mode).;fold.drawer............(
3c100 69 67 6e 6f 72 65 2d 65 72 72 6f 72 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 61 76 65 ignore-errors..............(save
3c120 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d -excursion................(goto-
3c140 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 20 20 20 char.tracking-marker)...........
3c160 20 20 20 20 20 28 62 65 67 69 6e 6e 69 6e 67 2d 6f 66 2d 6c 69 6e 65 29 0a 20 20 20 20 20 20 20 .....(beginning-of-line)........
3c180 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 6c 6f 6f 6b 69 6e 67 2d 61 74 20 22 5e 23 5c 5c 2b ........(when.(looking-at."^#\\+
3c1a0 65 6e 64 5f 74 6f 6f 6c 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 67 end_tool")..................(org
3c1c0 2d 63 79 63 6c 65 29 29 29 29 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d -cycle))))))))))..(defun.gptel--
3c1e0 66 6f 72 6d 61 74 2d 74 6f 6f 6c 2d 63 61 6c 6c 20 28 6e 61 6d 65 20 61 72 67 2d 76 61 6c 75 65 format-tool-call.(name.arg-value
3c200 73 29 0a 20 20 22 46 6f 72 6d 61 74 20 61 20 74 6f 6f 6c 20 63 61 6c 6c 20 66 6f 72 20 64 69 73 s)..."Format.a.tool.call.for.dis
3c220 70 6c 61 79 20 69 6e 20 74 68 65 20 62 75 66 66 65 72 2e 0a 0a 4e 41 4d 45 20 61 6e 64 20 41 52 play.in.the.buffer...NAME.and.AR
3c240 47 2d 56 41 4c 55 45 53 20 61 72 65 20 74 68 65 20 6e 61 6d 65 20 61 6e 64 20 61 72 67 75 6d 65 G-VALUES.are.the.name.and.argume
3c260 6e 74 73 20 66 6f 72 20 74 68 65 20 63 61 6c 6c 2e 22 0a 20 20 28 66 6f 72 6d 61 74 20 22 28 25 nts.for.the.call."...(format."(%
3c280 73 20 25 73 29 5c 6e 22 0a 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 6e s.%s)\n"...........(propertize.n
3c2a0 61 6d 65 20 27 66 61 63 65 20 27 66 6f 6e 74 2d 6c 6f 63 6b 2d 6b 65 79 77 6f 72 64 2d 66 61 63 ame.'face.'font-lock-keyword-fac
3c2c0 65 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 0a 20 20 20 20 20 20 20 e)...........(propertize........
3c2e0 20 20 20 20 28 6d 61 70 63 6f 6e 63 61 74 20 28 6c 61 6d 62 64 61 20 28 61 72 67 29 0a 20 20 20 ....(mapconcat.(lambda.(arg)....
3c300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 20 28 28 73 74 72 .....................(cond.((str
3c320 69 6e 67 70 20 61 72 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ingp.arg).......................
3c340 20 20 20 20 20 20 20 20 20 28 70 72 69 6e 31 2d 74 6f 2d 73 74 72 69 6e 67 0a 20 20 20 20 20 20 .........(prin1-to-string.......
3c360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 70 6c 61 ..........................(repla
3c380 63 65 2d 72 65 67 65 78 70 2d 69 6e 2d 73 74 72 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 ce-regexp-in-string.............
3c3a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 5c 6e 22 20 22 e2 ae 90 22 20 ....................."\n"."...".
3c3c0 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.......
3c3e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
3c400 20 20 20 20 20 61 72 67 20 28 66 6c 6f 6f 72 20 28 77 69 6e 64 6f 77 2d 77 69 64 74 68 29 20 32 .....arg.(floor.(window-width).2
3c420 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 )...............................
3c440 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 69 6c 20 6e 69 6c 20 74 29 29 29 29 0a 20 20 20 20 20 .............nil.nil.t))))......
3c460 20 20 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 20 28 70 72 69 .........................(t.(pri
3c480 6e 31 2d 74 6f 2d 73 74 72 69 6e 67 20 61 72 67 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 n1-to-string.arg))))............
3c4a0 20 20 20 20 20 20 20 20 20 20 20 61 72 67 2d 76 61 6c 75 65 73 20 22 20 22 29 0a 20 20 20 20 20 ...........arg-values.".")......
3c4c0 20 20 20 20 20 20 27 66 61 63 65 20 27 66 6f 6e 74 2d 6c 6f 63 6b 2d 63 6f 6e 73 74 61 6e 74 2d ......'face.'font-lock-constant-
3c4e0 66 61 63 65 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 61 63 63 65 70 74 2d 74 6f face)))..(defun.gptel--accept-to
3c500 6f 6c 2d 63 61 6c 6c 73 20 28 26 6f 70 74 69 6f 6e 61 6c 20 72 65 73 70 6f 6e 73 65 20 6f 76 29 ol-calls.(&optional.response.ov)
3c520 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 20 28 70 63 61 73 65 2d 6c 65 74 20 28 28 60 28 2c ...(interactive.(pcase-let.((`(,
3c540 72 65 73 70 20 2e 20 2c 6f 29 20 28 67 65 74 2d 63 68 61 72 2d 70 72 6f 70 65 72 74 79 2d 61 6e resp...,o).(get-char-property-an
3c560 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 20 20 20 20 d-overlay.......................
3c580 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 67 70 .....................(point).'gp
3c5a0 74 65 6c 2d 74 6f 6f 6c 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 tel-tool)))..................(li
3c5c0 73 74 20 72 65 73 70 20 6f 29 29 29 0a 20 20 28 67 70 74 65 6c 2d 2d 75 70 64 61 74 65 2d 73 74 st.resp.o)))...(gptel--update-st
3c5e0 61 74 75 73 20 22 20 43 61 6c 6c 69 6e 67 20 74 6f 6f 6c 2e 2e 2e 22 20 27 6d 6f 64 65 2d 6c 69 atus.".Calling.tool...".'mode-li
3c600 6e 65 2d 65 6d 70 68 61 73 69 73 29 0a 20 20 28 6d 65 73 73 61 67 65 20 22 43 6f 6e 74 69 6e 75 ne-emphasis)...(message."Continu
3c620 69 6e 67 20 71 75 65 72 79 2e 2e 2e 22 29 0a 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 28 74 ing.query...")...(cl-loop.for.(t
3c640 6f 6f 6c 2d 73 70 65 63 20 61 72 67 2d 76 61 6c 75 65 73 20 70 72 6f 63 65 73 73 2d 74 6f 6f 6c ool-spec.arg-values.process-tool
3c660 2d 72 65 73 75 6c 74 29 20 69 6e 20 72 65 73 70 6f 6e 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 -result).in.response............
3c680 64 6f 0a 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 67 70 74 65 6c 2d 74 6f 6f 6c 2d 61 73 do............(if.(gptel-tool-as
3c6a0 79 6e 63 20 74 6f 6f 6c 2d 73 70 65 63 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 ync.tool-spec)................(a
3c6c0 70 70 6c 79 20 28 67 70 74 65 6c 2d 74 6f 6f 6c 2d 66 75 6e 63 74 69 6f 6e 20 74 6f 6f 6c 2d 73 pply.(gptel-tool-function.tool-s
3c6e0 70 65 63 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 pec).......................proce
3c700 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 20 20 20 20 ss-tool-result.arg-values)......
3c720 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 72 65 73 75 6c 74 0a 20 20 20 20 20 20 20 20 20 20 ........(let.((result...........
3c740 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20 65 72 72 64 61 74 ..........(condition-case.errdat
3c760 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 70 70 6c 79 a.........................(apply
3c780 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 63 29 .(gptel-tool-function.tool-spec)
3c7a0 20 61 72 67 2d 76 61 6c 75 65 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .arg-values)....................
3c7c0 20 20 20 28 65 72 72 6f 72 20 28 6d 61 70 63 6f 6e 63 61 74 20 23 27 67 70 74 65 6c 2d 2d 74 6f ...(error.(mapconcat.#'gptel--to
3c7e0 2d 73 74 72 69 6e 67 20 65 72 72 64 61 74 61 20 22 20 22 29 29 29 29 29 0a 20 20 20 20 20 20 20 -string.errdata.".")))))........
3c800 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 72 65 ........(funcall.process-tool-re
3c820 73 75 6c 74 20 72 65 73 75 6c 74 29 29 29 29 0a 20 20 28 61 6e 64 20 28 6f 76 65 72 6c 61 79 70 sult.result))))...(and.(overlayp
3c840 20 6f 76 29 20 28 64 65 6c 65 74 65 2d 6f 76 65 72 6c 61 79 20 6f 76 29 29 29 0a 0a 28 64 65 66 .ov).(delete-overlay.ov)))..(def
3c860 75 6e 20 67 70 74 65 6c 2d 2d 72 65 6a 65 63 74 2d 74 6f 6f 6c 2d 63 61 6c 6c 73 20 28 26 6f 70 un.gptel--reject-tool-calls.(&op
3c880 74 69 6f 6e 61 6c 20 5f 72 65 73 70 6f 6e 73 65 20 6f 76 29 0a 20 20 28 69 6e 74 65 72 61 63 74 tional._response.ov)...(interact
3c8a0 69 76 65 20 28 70 63 61 73 65 2d 6c 65 74 20 28 28 60 28 2c 72 65 73 70 20 2e 20 2c 6f 29 20 28 ive.(pcase-let.((`(,resp...,o).(
3c8c0 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...
3c8e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
3c900 20 20 20 20 20 20 20 20 20 28 70 6f 69 6e 74 29 20 27 67 70 74 65 6c 2d 74 6f 6f 6c 29 29 29 0a .........(point).'gptel-tool))).
3c920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 72 65 73 70 20 6f 29 29 29 .................(list.resp.o)))
3c940 0a 20 20 28 67 70 74 65 6c 2d 2d 75 70 64 61 74 65 2d 73 74 61 74 75 73 20 22 20 54 6f 6f 6c 73 ...(gptel--update-status.".Tools
3c960 20 63 61 6e 63 65 6c 6c 65 64 22 20 27 65 72 72 6f 72 29 0a 20 20 28 6d 65 73 73 61 67 65 20 28 .cancelled".'error)...(message.(
3c980 73 75 62 73 74 69 74 75 74 65 2d 63 6f 6d 6d 61 6e 64 2d 6b 65 79 73 0a 20 20 20 20 20 20 20 20 substitute-command-keys.........
3c9a0 20 20 20 20 22 54 6f 6f 6c 20 63 61 6c 6c 73 20 63 61 6e 63 65 6c 65 64 2e 20 20 5c 5c 5b 67 70 ...."Tool.calls.canceled...\\[gp
3c9c0 74 65 6c 2d 6d 65 6e 75 5d 20 74 6f 20 63 6f 6e 74 69 6e 75 65 20 74 68 65 6d 21 22 29 29 0a 20 tel-menu].to.continue.them!"))..
3c9e0 20 28 61 6e 64 20 28 6f 76 65 72 6c 61 79 70 20 6f 76 29 20 28 64 65 6c 65 74 65 2d 6f 76 65 72 .(and.(overlayp.ov).(delete-over
3ca00 6c 61 79 20 6f 76 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 64 69 73 70 61 74 63 lay.ov)))..(defun.gptel--dispatc
3ca20 68 2d 74 6f 6f 6c 2d 63 61 6c 6c 73 20 28 63 68 6f 69 63 65 29 0a 20 20 28 69 6e 74 65 72 61 63 h-tool-calls.(choice)...(interac
3ca40 74 69 76 65 0a 20 20 20 28 6c 69 73 74 0a 20 20 20 20 28 6c 65 74 20 28 28 63 68 6f 69 63 65 73 tive....(list.....(let.((choices
3ca60 20 27 28 28 3f 79 20 22 79 65 73 22 29 20 28 3f 6e 20 22 64 6f 20 6e 6f 74 68 69 6e 67 22 29 0a .'((?y."yes").(?n."do.nothing").
3ca80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 3f 6b 20 22 63 61 6e 63 65 6c .....................(?k."cancel
3caa0 20 72 65 71 75 65 73 74 22 29 20 28 3f 69 20 22 69 6e 73 70 65 63 74 20 63 61 6c 6c 28 73 29 22 .request").(?i."inspect.call(s)"
3cac0 29 29 29 29 0a 20 20 20 20 20 20 28 72 65 61 64 2d 6d 75 6c 74 69 70 6c 65 2d 63 68 6f 69 63 65 )))).......(read-multiple-choice
3cae0 20 22 52 75 6e 20 74 6f 6f 6c 20 63 61 6c 6c 73 3f 20 22 20 63 68 6f 69 63 65 73 29 29 29 29 0a ."Run.tool.calls?.".choices)))).
3cb00 20 20 28 70 63 61 73 65 20 28 63 61 72 20 63 68 6f 69 63 65 29 0a 20 20 20 20 28 3f 79 20 28 63 ..(pcase.(car.choice).....(?y.(c
3cb20 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 61 63 63 65 70 all-interactively.#'gptel--accep
3cb40 74 2d 74 6f 6f 6c 2d 63 61 6c 6c 73 29 29 0a 20 20 20 20 28 3f 6b 20 28 63 61 6c 6c 2d 69 6e 74 t-tool-calls)).....(?k.(call-int
3cb60 65 72 61 63 74 69 76 65 6c 79 20 23 27 67 70 74 65 6c 2d 2d 72 65 6a 65 63 74 2d 74 6f 6f 6c 2d eractively.#'gptel--reject-tool-
3cb80 63 61 6c 6c 73 29 29 0a 20 20 20 20 28 3f 69 20 28 67 70 74 65 6c 2d 2d 69 6e 73 70 65 63 74 2d calls)).....(?i.(gptel--inspect-
3cba0 66 73 6d 20 67 70 74 65 6c 2d 2d 66 73 6d 2d 6c 61 73 74 29 29 29 29 0a 0a 0c 0a 3b 3b 3b 20 52 fsm.gptel--fsm-last))))....;;;.R
3cbc0 65 73 70 6f 6e 73 65 20 74 77 65 61 6b 69 6e 67 20 63 6f 6d 6d 61 6e 64 73 0a 0a 28 64 65 66 75 esponse.tweaking.commands..(defu
3cbe0 6e 20 67 70 74 65 6c 2d 2d 61 74 74 61 63 68 2d 72 65 73 70 6f 6e 73 65 2d 68 69 73 74 6f 72 79 n.gptel--attach-response-history
3cc00 20 28 68 69 73 74 6f 72 79 20 26 6f 70 74 69 6f 6e 61 6c 20 62 75 66 29 0a 20 20 22 41 74 74 61 .(history.&optional.buf)..."Atta
3cc20 63 68 20 48 49 53 54 4f 52 59 20 74 6f 20 74 68 65 20 6e 65 78 74 20 67 70 74 65 6c 20 72 65 73 ch.HISTORY.to.the.next.gptel.res
3cc40 70 6f 6e 73 65 20 69 6e 20 62 75 66 66 65 72 20 42 55 46 2e 0a 0a 48 49 53 54 4f 52 59 20 69 73 ponse.in.buffer.BUF...HISTORY.is
3cc60 20 61 20 6c 69 73 74 20 6f 66 20 73 74 72 69 6e 67 73 20 74 79 70 69 63 61 6c 6c 79 20 63 6f 6e .a.list.of.strings.typically.con
3cc80 74 61 69 6e 69 6e 67 20 74 65 78 74 20 72 65 70 6c 61 63 65 64 0a 62 79 20 67 70 74 65 6c 2e 20 taining.text.replaced.by.gptel..
3cca0 20 42 55 46 20 69 73 20 74 68 65 20 63 75 72 72 65 6e 74 20 62 75 66 66 65 72 20 69 66 20 6e 6f .BUF.is.the.current.buffer.if.no
3ccc0 74 20 73 70 65 63 69 66 69 65 64 2e 0a 0a 54 68 69 73 20 69 73 20 75 73 65 64 20 74 6f 20 6d 61 t.specified...This.is.used.to.ma
3cce0 69 6e 74 61 69 6e 20 76 61 72 69 61 6e 74 73 20 6f 66 20 70 72 6f 6d 70 74 73 20 6f 72 20 72 65 intain.variants.of.prompts.or.re
3cd00 73 70 6f 6e 73 65 73 20 74 6f 20 64 69 66 66 0a 61 67 61 69 6e 73 74 20 69 66 20 72 65 71 75 69 sponses.to.diff.against.if.requi
3cd20 72 65 64 2e 22 0a 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 6f 72 red."...(with-current-buffer.(or
3cd40 20 62 75 66 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29 0a 20 20 20 20 28 6c 65 74 72 .buf.(current-buffer)).....(letr
3cd60 65 63 20 28 28 67 70 74 65 6c 2d 2d 61 74 74 61 63 68 2d 61 66 74 65 72 0a 20 20 20 20 20 20 20 ec.((gptel--attach-after........
3cd80 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 62 20 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 .......(lambda.(b.e)............
3cda0 20 20 20 20 20 28 77 68 65 6e 20 28 61 6e 64 20 62 20 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 .....(when.(and.b.e)............
3cdc0 20 20 20 20 20 20 20 28 61 64 64 2d 74 65 78 74 2d 70 72 6f 70 65 72 74 69 65 73 0a 20 20 20 20 .......(add-text-properties.....
3cde0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 20 65 20 60 28 67 70 74 65 6c 2d 68 69 73 74 6f ...............b.e.`(gptel-histo
3ce00 72 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2c 28 61 70 ry..........................,(ap
3ce20 70 65 6e 64 20 28 65 6e 73 75 72 65 2d 6c 69 73 74 20 68 69 73 74 6f 72 79 29 0a 20 20 20 20 20 pend.(ensure-list.history)......
3ce40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 65 74 2d 63 68 61 72 2d ......................(get-char-
3ce60 70 72 6f 70 65 72 74 79 20 28 31 2d 20 65 29 20 27 67 70 74 65 6c 2d 68 69 73 74 6f 72 79 29 29 property.(1-.e).'gptel-history))
3ce80 0a 20 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 6e 74 2d ..........................front-
3cea0 73 74 69 63 6b 79 20 28 67 70 74 65 6c 20 67 70 74 65 6c 2d 68 69 73 74 6f 72 79 29 29 29 29 0a sticky.(gptel.gptel-history)))).
3cec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 6d 6f 76 65 2d 68 6f 6f 6b 20 27 67 70 ................(remove-hook.'gp
3cee0 74 65 6c 2d 70 6f 73 74 2d 72 65 73 70 6f 6e 73 65 2d 66 75 6e 63 74 69 6f 6e 73 0a 20 20 20 20 tel-post-response-functions.....
3cf00 20 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--
3cf20 61 74 74 61 63 68 2d 61 66 74 65 72 20 27 6c 6f 63 61 6c 29 29 29 29 0a 20 20 20 20 20 20 28 61 attach-after.'local)))).......(a
3cf40 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
3cf60 63 74 69 6f 6e 73 20 67 70 74 65 6c 2d 2d 61 74 74 61 63 68 2d 61 66 74 65 72 0a 20 20 20 20 20 ctions.gptel--attach-after......
3cf80 20 20 20 20 20 20 20 20 20 20 20 6e 69 6c 20 27 6c 6f 63 61 6c 29 29 29 29 0a 0a 28 64 65 66 75 ...........nil.'local))))..(defu
3cfa0 6e 20 67 70 74 65 6c 2d 2d 65 64 69 66 66 20 28 26 6f 70 74 69 6f 6e 61 6c 20 61 72 67 20 62 6f n.gptel--ediff.(&optional.arg.bo
3cfc0 75 6e 64 73 2d 66 75 6e 63 29 0a 20 20 22 45 64 69 66 66 20 72 65 73 70 6f 6e 73 65 20 61 74 20 unds-func)..."Ediff.response.at.
3cfe0 70 6f 69 6e 74 20 61 67 61 69 6e 73 74 20 70 72 65 76 69 6f 75 73 20 67 70 74 65 6c 20 72 65 73 point.against.previous.gptel.res
3d000 70 6f 6e 73 65 73 2e 0a 0a 49 66 20 70 72 65 66 69 78 20 41 52 47 20 69 73 20 6e 6f 6e 2d 6e 69 ponses...If.prefix.ARG.is.non-ni
3d020 6c 2c 20 73 65 6c 65 63 74 20 74 68 65 20 70 72 65 76 69 6f 75 73 20 72 65 73 70 6f 6e 73 65 20 l,.select.the.previous.response.
3d040 74 6f 20 65 64 69 66 66 0a 61 67 61 69 6e 73 74 20 69 6e 74 65 72 61 63 74 69 76 65 6c 79 2e 0a to.ediff.against.interactively..
3d060 0a 49 66 20 73 70 65 63 69 66 69 65 64 2c 20 75 73 65 20 42 4f 55 4e 44 53 2d 46 55 4e 43 20 74 .If.specified,.use.BOUNDS-FUNC.t
3d080 6f 20 63 6f 6d 70 75 74 65 20 74 68 65 20 62 6f 75 6e 64 73 20 6f 66 20 74 68 65 0a 72 65 73 70 o.compute.the.bounds.of.the.resp
3d0a0 6f 6e 73 65 20 61 74 20 70 6f 69 6e 74 2e 20 20 54 68 69 73 20 63 61 6e 20 62 65 20 75 73 65 64 onse.at.point...This.can.be.used
3d0c0 20 74 6f 20 69 6e 63 6c 75 64 65 20 61 64 64 69 74 69 6f 6e 61 6c 0a 63 6f 6e 74 65 78 74 20 66 .to.include.additional.context.f
3d0e0 6f 72 20 74 68 65 20 65 64 69 66 66 20 73 65 73 73 69 6f 6e 2e 22 0a 20 20 28 69 6e 74 65 72 61 or.the.ediff.session."...(intera
3d100 63 74 69 76 65 20 22 50 22 29 0a 20 20 28 77 68 65 6e 20 28 67 70 74 65 6c 2d 2d 61 74 2d 72 65 ctive."P")...(when.(gptel--at-re
3d120 73 70 6f 6e 73 65 2d 68 69 73 74 6f 72 79 2d 70 29 0a 20 20 20 20 28 70 63 61 73 65 2d 6c 65 74 sponse-history-p).....(pcase-let
3d140 2a 20 28 28 60 28 2c 62 65 67 20 2e 20 2c 65 6e 64 29 20 28 66 75 6e 63 61 6c 6c 20 28 6f 72 20 *.((`(,beg...,end).(funcall.(or.
3d160 62 6f 75 6e 64 73 2d 66 75 6e 63 20 23 27 67 70 74 65 6c 2d 2d 67 65 74 2d 72 65 73 70 6f 6e 73 bounds-func.#'gptel--get-respons
3d180 65 2d 62 6f 75 6e 64 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 e-bounds)))..................(pr
3d1a0 65 76 2d 72 65 73 70 6f 6e 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 ev-response...................(i
3d1c0 66 20 61 72 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6d f.arg.......................(com
3d1e0 70 6c 65 74 69 6e 67 2d 72 65 61 64 20 22 43 68 6f 6f 73 65 20 72 65 73 70 6f 6e 73 65 20 76 61 pleting-read."Choose.response.va
3d200 72 69 61 6e 74 20 74 6f 20 64 69 66 66 20 61 67 61 69 6e 73 74 3a 20 22 0a 20 20 20 20 20 20 20 riant.to.diff.against:."........
3d220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
3d240 28 67 65 74 2d 63 68 61 72 2d 70 72 6f 70 65 72 74 79 20 28 70 6f 69 6e 74 29 20 27 67 70 74 65 (get-char-property.(point).'gpte
3d260 6c 2d 68 69 73 74 6f 72 79 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 l-history)......................
3d280 20 20 20 20 20 20 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 20 ..................nil.t)........
3d2a0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 61 72 2d 73 61 66 65 20 28 67 65 74 2d 63 68 61 72 .............(car-safe.(get-char
3d2c0 2d 70 72 6f 70 65 72 74 79 20 28 70 6f 69 6e 74 29 20 27 67 70 74 65 6c 2d 68 69 73 74 6f 72 79 -property.(point).'gptel-history
3d2e0 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 2d 6d 6f ))))..................(buffer-mo
3d300 64 65 20 6d 61 6a 6f 72 2d 6d 6f 64 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 de.major-mode)..................
3d320 28 62 75 66 6e 61 6d 65 20 28 62 75 66 66 65 72 2d 6e 61 6d 65 29 29 0a 20 20 20 20 20 20 20 20 (bufname.(buffer-name)).........
3d340 20 20 20 20 20 20 20 20 20 28 60 28 2c 6e 65 77 2d 62 75 66 20 2c 6e 65 77 2d 62 65 67 20 2c 6e .........(`(,new-buf.,new-beg.,n
3d360 65 77 2d 65 6e 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 69 74 68 2d ew-end)...................(with-
3d380 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 current-buffer..................
3d3a0 20 20 20 20 20 28 67 65 74 2d 62 75 66 66 65 72 2d 63 72 65 61 74 65 20 28 63 6f 6e 63 61 74 20 .....(get-buffer-create.(concat.
3d3c0 62 75 66 6e 61 6d 65 20 22 2d 50 52 45 56 49 4f 55 53 2d 2a 22 29 29 0a 20 20 20 20 20 20 20 20 bufname."-PREVIOUS-*")).........
3d3e0 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-
3d400 6f 6e 6c 79 20 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 only.t)).......................(
3d420 65 72 61 73 65 2d 62 75 66 66 65 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 erase-buffer)...................
3d440 20 20 20 20 28 64 65 6c 61 79 2d 6d 6f 64 65 2d 68 6f 6f 6b 73 20 28 66 75 6e 63 61 6c 6c 20 62 ....(delay-mode-hooks.(funcall.b
3d460 75 66 66 65 72 2d 6d 6f 64 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 uffer-mode))....................
3d480 20 20 20 28 76 69 73 75 61 6c 2d 6c 69 6e 65 2d 6d 6f 64 65 29 0a 20 20 20 20 20 20 20 20 20 20 ...(visual-line-mode)...........
3d4a0 20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 70 72 65 76 2d 72 65 73 70 6f 6e 73 ............(insert.prev-respons
3d4c0 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 e).......................(goto-c
3d4e0 68 61 72 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 har.(point-min))................
3d500 20 20 20 20 20 20 20 28 6c 69 73 74 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 20 28 70 .......(list.(current-buffer).(p
3d520 6f 69 6e 74 2d 6d 69 6e 29 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 29 29 29 29 0a 20 20 20 20 20 oint-min).(point-max))))))......
3d540 20 28 75 6e 6c 65 73 73 20 70 72 65 76 2d 72 65 73 70 6f 6e 73 65 20 28 75 73 65 72 2d 65 72 72 .(unless.prev-response.(user-err
3d560 6f 72 20 22 67 70 74 65 6c 20 72 65 73 70 6f 6e 73 65 20 69 73 20 61 64 64 69 74 69 76 65 3a 20 or."gptel.response.is.additive:.
3d580 6e 6f 20 63 68 61 6e 67 65 73 20 74 6f 20 65 64 69 66 66 22 29 29 0a 20 20 20 20 20 20 28 72 65 no.changes.to.ediff")).......(re
3d5a0 71 75 69 72 65 20 27 65 64 69 66 66 29 0a 20 20 20 20 20 20 28 6c 65 74 72 65 63 20 28 28 63 77 quire.'ediff).......(letrec.((cw
3d5c0 63 20 28 63 75 72 72 65 6e 74 2d 77 69 6e 64 6f 77 2d 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 29 c.(current-window-configuration)
3d5e0 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 65 64 69 66 66 2d 72 )................(gptel--ediff-r
3d600 65 73 74 6f 72 65 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 estore.................(lambda.(
3d620 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 77 69 6e 64 6f )...................(when.(windo
3d640 77 2d 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2d 70 20 63 77 63 29 0a 20 20 20 20 20 20 20 20 20 w-configuration-p.cwc)..........
3d660 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 2d 77 69 6e 64 6f 77 2d 63 6f 6e 66 69 67 75 72 61 ...........(set-window-configura
3d680 74 69 6f 6e 20 63 77 63 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6b 69 tion.cwc))...................(ki
3d6a0 6c 6c 2d 62 75 66 66 65 72 20 28 67 65 74 2d 62 75 66 66 65 72 20 28 63 6f 6e 63 61 74 20 62 75 ll-buffer.(get-buffer.(concat.bu
3d6c0 66 6e 61 6d 65 20 22 2d 50 52 45 56 49 4f 55 53 2d 2a 22 29 29 29 0a 20 20 20 20 20 20 20 20 20 fname."-PREVIOUS-*")))..........
3d6e0 20 20 20 20 20 20 20 20 20 28 6b 69 6c 6c 2d 62 75 66 66 65 72 20 28 67 65 74 2d 62 75 66 66 65 .........(kill-buffer.(get-buffe
3d700 72 20 28 63 6f 6e 63 61 74 20 62 75 66 6e 61 6d 65 20 22 2d 43 55 52 52 45 4e 54 2d 2a 22 29 29 r.(concat.bufname."-CURRENT-*"))
3d720 29 0a 20 20 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 )...................(remove-hook
3d740 20 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 .'ediff-quit-hook.gptel--ediff-r
3d760 65 73 74 6f 72 65 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 61 64 64 2d 68 6f 6f 6b 20 27 65 64 estore)))).........(add-hook.'ed
3d780 69 66 66 2d 71 75 69 74 2d 68 6f 6f 6b 20 67 70 74 65 6c 2d 2d 65 64 69 66 66 2d 72 65 73 74 6f iff-quit-hook.gptel--ediff-resto
3d7a0 72 65 29 0a 20 20 20 20 20 20 20 20 28 61 70 70 6c 79 0a 20 20 20 20 20 20 20 20 20 23 27 65 64 re).........(apply..........#'ed
3d7c0 69 66 66 2d 72 65 67 69 6f 6e 73 2d 69 6e 74 65 72 6e 61 6c 0a 20 20 20 20 20 20 20 20 20 28 67 iff-regions-internal..........(g
3d7e0 65 74 2d 62 75 66 66 65 72 20 28 65 64 69 66 66 2d 6d 61 6b 65 2d 63 6c 6f 6e 65 64 2d 62 75 66 et-buffer.(ediff-make-cloned-buf
3d800 66 65 72 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 20 22 2d 43 55 52 52 45 4e 54 2d 2a fer.(current-buffer)."-CURRENT-*
3d820 22 29 29 0a 20 20 20 20 20 20 20 20 20 62 65 67 20 65 6e 64 20 6e 65 77 2d 62 75 66 20 6e 65 77 "))..........beg.end.new-buf.new
3d840 2d 62 65 67 20 6e 65 77 2d 65 6e 64 0a 20 20 20 20 20 20 20 20 20 6e 69 6c 0a 20 20 20 20 20 20 -beg.new-end..........nil.......
3d860 20 20 20 28 6c 69 73 74 20 27 65 64 69 66 66 2d 72 65 67 69 6f 6e 73 2d 77 6f 72 64 77 69 73 65 ...(list.'ediff-regions-wordwise
3d880 20 27 77 6f 72 64 2d 77 69 73 65 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 3b 3b 20 28 69 66 .'word-wise.nil)..........;;.(if
3d8a0 20 28 74 72 61 6e 73 69 65 6e 74 2d 61 72 67 2d 76 61 6c 75 65 20 22 2d 77 22 20 61 72 67 73 29 .(transient-arg-value."-w".args)
3d8c0 0a 20 20 20 20 20 20 20 20 20 3b 3b 20 20 20 20 20 28 6c 69 73 74 20 27 65 64 69 66 66 2d 72 65 ..........;;.....(list.'ediff-re
3d8e0 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 20 gions-wordwise.'word-wise.nil)..
3d900 20 20 20 20 20 20 20 20 3b 3b 20 20 20 28 6c 69 73 74 20 27 65 64 69 66 66 2d 72 65 67 69 6f 6e ........;;...(list.'ediff-region
3d920 73 2d 6c 69 6e 65 77 69 73 65 20 6e 69 6c 20 6e 69 6c 29 29 0a 20 20 20 20 20 20 20 20 20 29 29 s-linewise.nil.nil))..........))
3d940 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 6d 61 72 6b 2d 72 65 73 70 6f 6e 73 65 )))..(defun.gptel--mark-response
3d960 20 28 29 0a 20 20 22 4d 61 72 6b 20 67 70 74 65 6c 20 72 65 73 70 6f 6e 73 65 20 61 74 20 70 6f .()..."Mark.gptel.response.at.po
3d980 69 6e 74 2c 20 69 66 20 61 6e 79 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 int,.if.any."...(interactive)...
3d9a0 28 75 6e 6c 65 73 73 20 28 67 70 74 65 6c 2d 2d 69 6e 2d 72 65 73 70 6f 6e 73 65 2d 70 29 20 28 (unless.(gptel--in-response-p).(
3d9c0 75 73 65 72 2d 65 72 72 6f 72 20 22 4e 6f 20 67 70 74 65 6c 20 72 65 73 70 6f 6e 73 65 20 61 74 user-error."No.gptel.response.at
3d9e0 20 70 6f 69 6e 74 22 29 29 0a 20 20 28 70 63 61 73 65 2d 6c 65 74 20 28 28 60 28 2c 62 65 67 20 .point"))...(pcase-let.((`(,beg.
3da00 2e 20 2c 65 6e 64 29 20 28 67 70 74 65 6c 2d 2d 67 65 74 2d 72 65 73 70 6f 6e 73 65 2d 62 6f 75 ..,end).(gptel--get-response-bou
3da20 6e 64 73 29 29 29 0a 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 62 65 67 29 20 28 70 75 73 68 nds))).....(goto-char.beg).(push
3da40 2d 6d 61 72 6b 29 20 28 67 6f 74 6f 2d 63 68 61 72 20 65 6e 64 29 20 28 61 63 74 69 76 61 74 65 -mark).(goto-char.end).(activate
3da60 2d 6d 61 72 6b 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 70 72 65 76 69 6f 75 73 -mark)))..(defun.gptel--previous
3da80 2d 76 61 72 69 61 6e 74 20 28 26 6f 70 74 69 6f 6e 61 6c 20 61 72 67 29 0a 20 20 22 53 77 69 74 -variant.(&optional.arg)..."Swit
3daa0 63 68 20 74 6f 20 70 72 65 76 69 6f 75 73 20 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 20 61 74 ch.to.previous.gptel-response.at
3dac0 20 74 68 69 73 20 70 6f 69 6e 74 2c 20 69 66 20 69 74 20 65 78 69 73 74 73 2e 22 0a 20 20 28 69 .this.point,.if.it.exists."...(i
3dae0 6e 74 65 72 61 63 74 69 76 65 20 22 70 22 29 0a 20 20 28 70 63 61 73 65 2d 6c 65 74 2a 20 28 28 nteractive."p")...(pcase-let*.((
3db00 60 28 2c 62 65 67 20 2e 20 2c 65 6e 64 29 20 28 67 70 74 65 6c 2d 2d 67 65 74 2d 72 65 73 70 6f `(,beg...,end).(gptel--get-respo
3db20 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 20 20 20 28 68 69 73 nse-bounds))................(his
3db40 74 6f 72 79 20 28 67 65 74 2d 63 68 61 72 2d 70 72 6f 70 65 72 74 79 20 28 70 6f 69 6e 74 29 20 tory.(get-char-property.(point).
3db60 27 67 70 74 65 6c 2d 68 69 73 74 6f 72 79 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 'gptel-history))................
3db80 28 61 6c 74 2d 72 65 73 70 6f 6e 73 65 20 28 63 61 72 2d 73 61 66 65 20 68 69 73 74 6f 72 79 29 (alt-response.(car-safe.history)
3dba0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 66 66 73 65 74 29 29 0a 20 20 20 20 28 )................(offset)).....(
3dbc0 75 6e 6c 65 73 73 20 28 61 6e 64 20 68 69 73 74 6f 72 79 20 61 6c 74 2d 72 65 73 70 6f 6e 73 65 unless.(and.history.alt-response
3dbe0 29 0a 20 20 20 20 20 20 28 75 73 65 72 2d 65 72 72 6f 72 20 22 4e 6f 20 76 61 72 69 61 6e 74 20 ).......(user-error."No.variant.
3dc00 72 65 73 70 6f 6e 73 65 73 20 61 76 61 69 6c 61 62 6c 65 22 29 29 0a 20 20 20 20 28 69 66 20 28 responses.available")).....(if.(
3dc20 3e 20 61 72 67 20 30 29 0a 20 20 20 20 20 20 20 20 28 73 65 74 71 20 68 69 73 74 6f 72 79 20 28 >.arg.0).........(setq.history.(
3dc40 61 70 70 65 6e 64 20 28 63 64 72 20 68 69 73 74 6f 72 79 29 0a 20 20 20 20 20 20 20 20 20 20 20 append.(cdr.history)............
3dc60 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 62 75 66 66 65 72 ...................(list.(buffer
3dc80 2d 73 75 62 73 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 20 62 65 67 20 65 6e 64 -substring-no-properties.beg.end
3dca0 29 29 29 29 0a 20 20 20 20 20 20 28 73 65 74 71 0a 20 20 20 20 20 20 20 61 6c 74 2d 72 65 73 70 )))).......(setq........alt-resp
3dcc0 6f 6e 73 65 20 28 63 61 72 20 28 6c 61 73 74 20 68 69 73 74 6f 72 79 29 29 0a 20 20 20 20 20 20 onse.(car.(last.history)).......
3dce0 20 68 69 73 74 6f 72 79 20 28 63 6f 6e 73 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 .history.(cons.(buffer-substring
3dd00 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 20 62 65 67 20 65 6e 64 29 0a 20 20 20 20 20 20 20 20 -no-properties.beg.end).........
3dd20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 62 75 74 6c 61 73 74 20 68 69 73 74 6f 72 79 29 29 .............(nbutlast.history))
3dd40 29 29 0a 20 20 20 20 28 61 64 64 2d 74 65 78 74 2d 70 72 6f 70 65 72 74 69 65 73 0a 20 20 20 20 )).....(add-text-properties.....
3dd60 20 20 20 20 20 20 20 20 20 30 20 28 6c 65 6e 67 74 68 20 61 6c 74 2d 72 65 73 70 6f 6e 73 65 29 .........0.(length.alt-response)
3dd80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 60 28 67 70 74 65 6c 20 72 65 73 70 6f 6e 73 65 20 67 ..............`(gptel.response.g
3dda0 70 74 65 6c 2d 68 69 73 74 6f 72 79 20 2c 68 69 73 74 6f 72 79 29 0a 20 20 20 20 20 20 20 20 20 ptel-history.,history)..........
3ddc0 20 20 20 20 61 6c 74 2d 72 65 73 70 6f 6e 73 65 29 0a 20 20 20 20 28 73 65 74 71 20 6f 66 66 73 ....alt-response).....(setq.offs
3dde0 65 74 20 28 6d 69 6e 20 28 2d 20 28 70 6f 69 6e 74 29 20 62 65 67 29 20 28 31 2d 20 28 6c 65 6e et.(min.(-.(point).beg).(1-.(len
3de00 67 74 68 20 61 6c 74 2d 72 65 73 70 6f 6e 73 65 29 29 29 29 0a 20 20 20 20 28 64 65 6c 65 74 65 gth.alt-response)))).....(delete
3de20 2d 72 65 67 69 6f 6e 20 62 65 67 20 65 6e 64 29 0a 20 20 20 20 28 69 6e 73 65 72 74 20 61 6c 74 -region.beg.end).....(insert.alt
3de40 2d 72 65 73 70 6f 6e 73 65 29 0a 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 2b 20 62 65 67 -response).....(goto-char.(+.beg
3de60 20 6f 66 66 73 65 74 29 29 0a 20 20 20 20 28 70 75 6c 73 65 2d 6d 6f 6d 65 6e 74 61 72 79 2d 68 .offset)).....(pulse-momentary-h
3de80 69 67 68 6c 69 67 68 74 2d 72 65 67 69 6f 6e 20 62 65 67 20 28 2b 20 62 65 67 20 28 6c 65 6e 67 ighlight-region.beg.(+.beg.(leng
3dea0 74 68 20 61 6c 74 2d 72 65 73 70 6f 6e 73 65 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 th.alt-response)))))..(defun.gpt
3dec0 65 6c 2d 2d 6e 65 78 74 2d 76 61 72 69 61 6e 74 20 28 26 6f 70 74 69 6f 6e 61 6c 20 61 72 67 29 el--next-variant.(&optional.arg)
3dee0 0a 20 20 22 53 77 69 74 63 68 20 74 6f 20 6e 65 78 74 20 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 ..."Switch.to.next.gptel-respons
3df00 65 20 61 74 20 74 68 69 73 20 70 6f 69 6e 74 2c 20 69 66 20 69 74 20 65 78 69 73 74 73 2e 22 0a e.at.this.point,.if.it.exists.".
3df20 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 20 22 70 22 29 0a 20 20 28 67 70 74 65 6c 2d 2d 70 72 ..(interactive."p")...(gptel--pr
3df40 65 76 69 6f 75 73 2d 76 61 72 69 61 6e 74 20 28 2d 20 61 72 67 29 29 29 0a 0a 28 70 72 6f 76 69 evious-variant.(-.arg)))..(provi
3df60 64 65 20 27 67 70 74 65 6c 29 0a 3b 3b 3b 20 67 70 74 65 6c 2e 65 6c 20 65 6e 64 73 20 68 65 72 de.'gptel).;;;.gptel.el.ends.her
3df80 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 75 67 2d 72 65 e..;;.Local.Variables:.;;.bug-re
3dfa0 66 65 72 65 6e 63 65 2d 75 72 6c 2d 66 6f 72 6d 61 74 3a 20 22 68 74 74 70 73 3a 2f 2f 67 69 74 ference-url-format:."https://git
3dfc0 68 75 62 2e 63 6f 6d 2f 6b 61 72 74 68 69 6e 6b 2f 67 70 74 65 6c 2f 69 73 73 75 65 73 2f 25 73 hub.com/karthink/gptel/issues/%s
3dfe0 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:.......................
3e000 67 70 74 65 6c 2d 30 2e 39 2e 38 2f 67 70 74 65 6c 2d 61 6e 74 68 72 6f 70 69 63 2e 65 6c 00 00 gptel-0.9.8/gptel-anthropic.el..
3e020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3e040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3e060 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
3e080 30 30 36 37 30 35 33 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 34 37 33 37 00 20 30 00 00 00 0067053.00000000000.014737..0...
3e0a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3e0c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3e0e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3e100 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...................
3e120 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...................
3e140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3e160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3e180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3e1a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3e1c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3e1e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3e200 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
3e220 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..-*-
3e240 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
3e260 79 72 69 67 68 74 20 28 43 29 20 32 30 32 33 20 20 4b 61 72 74 68 69 6b 20 43 68 69 6b 6d 61 67 yright.(C).2023..Karthik.Chikmag
3e280 61 6c 75 72 0a 0a 3b 3b 20 41 75 74 68 6f 72 3a 20 4b 61 72 74 68 69 6b 20 43 68 69 6b 6d 61 67 alur..;;.Author:.Karthik.Chikmag
3e2a0 61 6c 75 72 20 3c 6b 61 72 74 68 69 6b 63 68 69 6b 6d 61 67 61 6c 75 72 40 67 6d 61 69 6c 2e 63 alur.<karthikchikmagalur@gmail.c
3e2c0 6f 6d 3e 0a 0a 3b 3b 20 54 68 69 73 20 70 72 6f 67 72 61 6d 20 69 73 20 66 72 65 65 20 73 6f 66 om>..;;.This.program.is.free.sof
3e2e0 74 77 61 72 65 3b 20 79 6f 75 20 63 61 6e 20 72 65 64 69 73 74 72 69 62 75 74 65 20 69 74 20 61 tware;.you.can.redistribute.it.a
3e300 6e 64 2f 6f 72 20 6d 6f 64 69 66 79 0a 3b 3b 20 69 74 20 75 6e 64 65 72 20 74 68 65 20 74 65 72 nd/or.modify.;;.it.under.the.ter
3e320 6d 73 20 6f 66 20 74 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 ms.of.the.GNU.General.Public.Lic
3e340 65 6e 73 65 20 61 73 20 70 75 62 6c 69 73 68 65 64 20 62 79 0a 3b 3b 20 74 68 65 20 46 72 65 65 ense.as.published.by.;;.the.Free
3e360 20 53 6f 66 74 77 61 72 65 20 46 6f 75 6e 64 61 74 69 6f 6e 2c 20 65 69 74 68 65 72 20 76 65 72 .Software.Foundation,.either.ver
3e380 73 69 6f 6e 20 33 20 6f 66 20 74 68 65 20 4c 69 63 65 6e 73 65 2c 20 6f 72 0a 3b 3b 20 28 61 74 sion.3.of.the.License,.or.;;.(at
3e3a0 20 79 6f 75 72 20 6f 70 74 69 6f 6e 29 20 61 6e 79 20 6c 61 74 65 72 20 76 65 72 73 69 6f 6e 2e .your.option).any.later.version.
3e3c0 0a 0a 3b 3b 20 54 68 69 73 20 70 72 6f 67 72 61 6d 20 69 73 20 64 69 73 74 72 69 62 75 74 65 64 ..;;.This.program.is.distributed
3e3e0 20 69 6e 20 74 68 65 20 68 6f 70 65 20 74 68 61 74 20 69 74 20 77 69 6c 6c 20 62 65 20 75 73 65 .in.the.hope.that.it.will.be.use
3e400 66 75 6c 2c 0a 3b 3b 20 62 75 74 20 57 49 54 48 4f 55 54 20 41 4e 59 20 57 41 52 52 41 4e 54 59 ful,.;;.but.WITHOUT.ANY.WARRANTY
3e420 3b 20 77 69 74 68 6f 75 74 20 65 76 65 6e 20 74 68 65 20 69 6d 70 6c 69 65 64 20 77 61 72 72 61 ;.without.even.the.implied.warra
3e440 6e 74 79 20 6f 66 0a 3b 3b 20 4d 45 52 43 48 41 4e 54 41 42 49 4c 49 54 59 20 6f 72 20 46 49 54 nty.of.;;.MERCHANTABILITY.or.FIT
3e460 4e 45 53 53 20 46 4f 52 20 41 20 50 41 52 54 49 43 55 4c 41 52 20 50 55 52 50 4f 53 45 2e 20 20 NESS.FOR.A.PARTICULAR.PURPOSE...
3e480 53 65 65 20 74 68 65 0a 3b 3b 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 See.the.;;.GNU.General.Public.Li
3e4a0 63 65 6e 73 65 20 66 6f 72 20 6d 6f 72 65 20 64 65 74 61 69 6c 73 2e 0a 0a 3b 3b 20 59 6f 75 20 cense.for.more.details...;;.You.
3e4c0 73 68 6f 75 6c 64 20 68 61 76 65 20 72 65 63 65 69 76 65 64 20 61 20 63 6f 70 79 20 6f 66 20 74 should.have.received.a.copy.of.t
3e4e0 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 0a 3b 3b he.GNU.General.Public.License.;;
3e500 20 61 6c 6f 6e 67 20 77 69 74 68 20 74 68 69 73 20 70 72 6f 67 72 61 6d 2e 20 20 49 66 20 6e 6f .along.with.this.program...If.no
3e520 74 2c 20 73 65 65 20 3c 68 74 74 70 73 3a 2f 2f 77 77 77 2e 67 6e 75 2e 6f 72 67 2f 6c 69 63 65 t,.see.<https://www.gnu.org/lice
3e540 6e 73 65 73 2f 3e 2e 0a 0a 3b 3b 3b 20 43 6f 6d 6d 65 6e 74 61 72 79 3a 0a 0a 3b 3b 20 54 68 69 nses/>...;;;.Commentary:..;;.Thi
3e560 73 20 66 69 6c 65 20 61 64 64 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20 41 6e 74 68 72 6f 70 69 s.file.adds.support.for.Anthropi
3e580 63 27 73 20 4d 65 73 73 61 67 65 73 20 41 50 49 20 74 6f 20 67 70 74 65 6c 0a 0a 3b 3b 3b 20 43 c's.Messages.API.to.gptel..;;;.C
3e5a0 6f 64 65 3a 0a 28 72 65 71 75 69 72 65 20 27 63 6c 2d 67 65 6e 65 72 69 63 29 0a 28 65 76 61 6c ode:.(require.'cl-generic).(eval
3e5c0 2d 77 68 65 6e 2d 63 6f 6d 70 69 6c 65 0a 20 20 28 72 65 71 75 69 72 65 20 27 63 6c 2d 6c 69 62 -when-compile...(require.'cl-lib
3e5e0 29 29 0a 28 72 65 71 75 69 72 65 20 27 6d 61 70 29 0a 28 72 65 71 75 69 72 65 20 27 67 70 74 65 )).(require.'map).(require.'gpte
3e600 6c 29 0a 0a 28 64 65 66 76 61 72 20 6a 73 6f 6e 2d 6f 62 6a 65 63 74 2d 74 79 70 65 29 0a 0a 28 l)..(defvar.json-object-type)..(
3e620 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 70 72 6f 70 2d 6d 61 74 63 68 2d 76 61 6c 75 declare-function.prop-match-valu
3e640 65 20 22 74 65 78 74 2d 70 72 6f 70 65 72 74 79 2d 73 65 61 72 63 68 22 29 0a 28 64 65 63 6c 61 e."text-property-search").(decla
3e660 72 65 2d 66 75 6e 63 74 69 6f 6e 20 74 65 78 74 2d 70 72 6f 70 65 72 74 79 2d 73 65 61 72 63 68 re-function.text-property-search
3e680 2d 62 61 63 6b 77 61 72 64 20 22 74 65 78 74 2d 70 72 6f 70 65 72 74 79 2d 73 65 61 72 63 68 22 -backward."text-property-search"
3e6a0 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 6a 73 6f 6e 2d 72 65 61 64 20 22 6a ).(declare-function.json-read."j
3e6c0 73 6f 6e 22 20 28 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 son".()).(declare-function.gptel
3e6e0 2d 63 6f 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 -context--wrap."gptel-context").
3e700 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d (declare-function.gptel-context-
3e720 2d 63 6f 6c 6c 65 63 74 2d 6d 65 64 69 61 20 22 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 22 29 0a -collect-media."gptel-context").
3e740 0a 3b 3b 3b 20 41 6e 74 68 72 6f 70 69 63 20 28 4d 65 73 73 61 67 65 73 20 41 50 49 29 0a 28 63 .;;;.Anthropic.(Messages.API).(c
3e760 6c 2d 64 65 66 73 74 72 75 63 74 20 28 67 70 74 65 6c 2d 61 6e 74 68 72 6f 70 69 63 20 28 3a 63 l-defstruct.(gptel-anthropic.(:c
3e780 6f 6e 73 74 72 75 63 74 6f 72 20 67 70 74 65 6c 2d 2d 6d 61 6b 65 2d 61 6e 74 68 72 6f 70 69 63 onstructor.gptel--make-anthropic
3e7a0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 )...............................
3e7c0 20 28 3a 63 6f 70 69 65 72 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .(:copier.nil)..................
3e7e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 3a 69 6e 63 6c 75 64 65 20 67 70 74 65 6c 2d 62 61 ..............(:include.gptel-ba
3e800 63 6b 65 6e 64 29 29 29 0a 0a 3b 3b 20 4e 4f 54 45 20 74 68 65 20 63 72 75 63 69 61 6c 20 64 69 ckend)))..;;.NOTE.the.crucial.di
3e820 66 66 65 72 65 6e 63 65 20 62 65 74 77 65 65 6e 0a 3b 3b 20 2d 20 28 70 75 73 68 20 76 61 6c 20 fference.between.;;.-.(push.val.
3e840 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 6b 65 79 29 29 20 61 6e 64 0a 3b 3b 20 20 20 (plist-get.info.:key)).and.;;...
3e860 28 70 6c 69 73 74 2d 70 75 74 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 6b 65 79 29 (plist-put.(plist-get.info.:key)
3e880 20 28 63 6f 6e 73 20 76 61 6c 20 2e 2e 2e 29 29 0a 3b 3b 0a 3b 3b 20 2d 20 28 73 65 74 66 20 28 .(cons.val....)).;;.;;.-.(setf.(
3e8a0 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 6b 65 79 29 20 76 61 6c 29 20 61 6e 64 0a 3b 3b plist-get.info.:key).val).and.;;
3e8c0 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 6b 65 79 20 76 61 6c 29 0a 3b 3b 0a ...(plist-put.info.:key.val).;;.
3e8e0 3b 3b 20 69 6e 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 66 75 6e 63 74 69 6f 6e 2e 20 20 54 ;;.in.the.following.function...T
3e900 68 65 20 66 69 72 73 74 20 76 61 72 69 61 6e 74 20 63 6f 6e 73 65 73 20 61 74 20 74 68 65 20 68 he.first.variant.conses.at.the.h
3e920 65 61 64 20 6f 66 20 69 6e 66 6f 2c 20 74 68 65 0a 3b 3b 20 73 65 63 6f 6e 64 20 6f 6e 65 20 61 ead.of.info,.the.;;.second.one.a
3e940 74 20 74 68 65 20 74 61 69 6c 2e 20 20 54 68 69 73 20 6d 65 61 6e 73 20 6f 6e 6c 79 20 74 68 65 t.the.tail...This.means.only.the
3e960 20 73 65 63 6f 6e 64 20 6f 70 74 69 6f 6e 20 69 73 20 76 69 61 62 6c 65 20 66 6f 72 0a 3b 3b 20 .second.option.is.viable.for.;;.
3e980 6d 75 74 61 74 69 6e 67 20 61 20 70 6c 69 73 74 20 66 75 6e 63 74 69 6f 6e 20 61 72 67 75 6d 65 mutating.a.plist.function.argume
3e9a0 6e 74 20 74 68 61 74 27 73 20 70 61 73 73 65 64 20 62 79 20 72 65 66 65 72 65 6e 63 65 2e 0a 3b nt.that's.passed.by.reference..;
3e9c0 3b 20 44 6f 20 4e 4f 54 20 63 68 61 6e 67 65 20 74 68 65 20 70 6c 69 73 74 2d 70 75 74 20 74 6f ;.Do.NOT.change.the.plist-put.to
3e9e0 20 70 75 73 68 20 6f 72 20 73 65 74 66 21 0a 0a 3b 3b 20 4e 4f 54 45 3a 20 54 68 65 20 73 74 72 .push.or.setf!..;;.NOTE:.The.str
3ea00 65 61 6d 20 70 61 72 73 65 72 20 6c 6f 6f 6b 73 20 63 6f 6d 70 6c 69 63 61 74 65 64 20 6f 6e 6c eam.parser.looks.complicated.onl
3ea20 79 20 62 65 63 61 75 73 65 20 69 74 20 68 61 6e 64 6c 65 73 20 73 74 72 65 61 6d 69 6e 67 0a 3b y.because.it.handles.streaming.;
3ea40 3b 20 74 6f 6f 6c 20 63 61 6c 6c 73 2e 20 20 53 74 72 65 61 6d 20 70 61 72 73 69 6e 67 20 69 73 ;.tool.calls...Stream.parsing.is
3ea60 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 6e 67 20 74 68 69 .simple:.if.you.are.studying.thi
3ea80 73 20 63 6f 64 65 2c 20 6c 6f 6f 6b 20 61 74 0a 3b 3b 20 61 20 63 6f 6d 6d 69 74 20 66 72 6f 6d s.code,.look.at.;;.a.commit.from
3eaa0 20 62 65 66 6f 72 65 20 74 6f 6f 6c 2d 75 73 65 20 73 75 70 70 6f 72 74 20 77 61 73 20 61 64 64 .before.tool-use.support.was.add
3eac0 65 64 20 74 6f 20 67 70 74 65 6c 2e 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c ed.to.gptel..(cl-defmethod.gptel
3eae0 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 65 6e 64 20 67 -curl--parse-stream.((_backend.g
3eb00 70 74 65 6c 2d 61 6e 74 68 72 6f 70 69 63 29 20 69 6e 66 6f 29 0a 20 20 22 50 61 72 73 65 20 61 ptel-anthropic).info)..."Parse.a
3eb20 6e 20 41 6e 74 68 72 6f 70 69 63 20 64 61 74 61 20 73 74 72 65 61 6d 2e 0a 0a 52 65 74 75 72 6e n.Anthropic.data.stream...Return
3eb40 20 74 68 65 20 74 65 78 74 20 72 65 73 70 6f 6e 73 65 20 61 63 63 75 6d 75 6c 61 74 65 64 20 73 .the.text.response.accumulated.s
3eb60 69 6e 63 65 20 74 68 65 20 6c 61 73 74 20 63 61 6c 6c 20 74 6f 20 74 68 69 73 0a 66 75 6e 63 74 ince.the.last.call.to.this.funct
3eb80 69 6f 6e 2e 20 20 41 64 64 69 74 69 6f 6e 61 6c 6c 79 2c 20 6d 75 74 61 74 65 20 73 74 61 74 65 ion...Additionally,.mutate.state
3eba0 20 49 4e 46 4f 20 74 6f 20 61 64 64 20 74 6f 6f 6c 2d 75 73 65 0a 69 6e 66 6f 72 6d 61 74 69 6f .INFO.to.add.tool-use.informatio
3ebc0 6e 20 69 66 20 74 68 65 20 73 74 72 65 61 6d 20 63 6f 6e 74 61 69 6e 73 20 69 74 2e 20 20 4e 6f n.if.the.stream.contains.it...No
3ebe0 74 20 6d 79 20 62 65 73 74 20 77 6f 72 6b 2c 20 49 20 6b 6e 6f 77 2e 22 0a 20 20 28 6c 65 74 2a t.my.best.work,.I.know."...(let*
3ec00 20 28 28 63 6f 6e 74 65 6e 74 2d 73 74 72 73 29 0a 20 20 20 20 20 20 20 20 20 28 70 74 20 28 70 .((content-strs)..........(pt.(p
3ec20 6f 69 6e 74 29 29 29 0a 20 20 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20 6e 69 6c 0a oint))).....(condition-case.nil.
3ec40 20 20 20 20 20 20 20 20 28 77 68 69 6c 65 20 28 72 65 2d 73 65 61 72 63 68 2d 66 6f 72 77 61 72 ........(while.(re-search-forwar
3ec60 64 20 22 5e 65 76 65 6e 74 3a 20 22 20 6e 69 6c 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 d."^event:.".nil.t)...........(s
3ec80 65 74 71 20 70 74 20 28 6d 61 74 63 68 2d 62 65 67 69 6e 6e 69 6e 67 20 30 29 29 0a 20 20 20 20 etq.pt.(match-beginning.0)).....
3eca0 20 20 20 20 20 20 28 69 66 20 28 65 71 75 61 6c 20 28 6c 69 6e 65 2d 65 6e 64 2d 70 6f 73 69 74 ......(if.(equal.(line-end-posit
3ecc0 69 6f 6e 29 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ion).(point-max))...............
3ece0 28 65 72 72 6f 72 20 22 44 61 74 61 20 62 6c 6f 63 6b 20 69 6e 63 6f 6d 70 6c 65 74 65 22 29 29 (error."Data.block.incomplete"))
3ed00 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 28 28 6c 6f ...........(cond............((lo
3ed20 6f 6b 69 6e 67 2d 61 74 20 22 63 6f 6e 74 65 6e 74 5f 62 6c 6f 63 6b 5f 64 65 6c 74 61 22 29 20 oking-at."content_block_delta").
3ed40 3b 63 6f 6c 6c 65 63 74 20 69 6e 63 72 65 6d 65 6e 74 61 6c 0a 20 20 20 20 20 20 20 20 20 20 20 ;collect.incremental............
3ed60 20 28 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 .(forward-line.1).(forward-char.
3ed80 35 29 20 20 3b 74 65 78 74 2c 20 74 6f 6f 6c 20 6f 72 20 74 68 69 6e 6b 69 6e 67 20 62 6c 6f 63 5)..;text,.tool.or.thinking.bloc
3eda0 6b 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 64 65 6c 74 61 k.............(when-let*.((delta
3edc0 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).:
3ede0 64 65 6c 74 61 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 2d 6c 65 74 2a 20 delta)))...............(if-let*.
3ee00 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 74 65 78 74 ((content.(plist-get.delta.:text
3ee20 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 6e 6f 74 )).........................((not
3ee40 20 28 65 71 20 63 6f 6e 74 65 6e 74 20 3a 6e 75 6c 6c 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 .(eq.content.:null))))..........
3ee60 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 63 6f 6e 74 65 6e 74 20 63 6f 6e 74 65 6e 74 2d 73 .........(push.content.content-s
3ee80 74 72 73 29 20 3b 63 6f 6c 6c 65 63 74 20 74 65 78 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 trs).;collect.text..............
3eea0 20 20 20 28 69 66 2d 6c 65 74 2a 20 28 28 70 61 72 74 69 61 6c 2d 6a 73 6f 6e 20 28 70 6c 69 73 ...(if-let*.((partial-json.(plis
3eec0 74 2d 67 65 74 20 64 65 6c 74 61 20 3a 70 61 72 74 69 61 6c 5f 6a 73 6f 6e 29 29 29 0a 20 20 20 t-get.delta.:partial_json)))....
3eee0 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 20 20 20 20 .................(plist-put.....
3ef00 20 20 20 20 20 3b 63 6f 6c 6c 65 63 74 20 70 61 72 74 69 61 6c 20 74 6f 6f 6c 20 69 6e 70 75 74 .....;collect.partial.tool.input
3ef20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 66 6f 20 3a 70 61 72 74 ......................info.:part
3ef40 69 61 6c 5f 6a 73 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 ial_json......................(c
3ef60 6f 6e 73 20 70 61 72 74 69 61 6c 2d 6a 73 6f 6e 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f ons.partial-json.(plist-get.info
3ef80 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 20 20 20 .:partial_json)))...............
3efa0 20 20 20 20 28 69 66 2d 6c 65 74 2a 20 28 28 74 68 69 6e 6b 69 6e 67 20 28 70 6c 69 73 74 2d 67 ....(if-let*.((thinking.(plist-g
3efc0 65 74 20 64 65 6c 74 61 20 3a 74 68 69 6e 6b 69 6e 67 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 et.delta.:thinking)))...........
3efe0 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 61 ............(plist-put.info.:rea
3f000 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 20 20 soning..........................
3f020 20 20 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 69 6e 66 6f 20 ........(concat.(plist-get.info.
3f040 3a 72 65 61 73 6f 6e 69 6e 67 29 20 74 68 69 6e 6b 69 6e 67 29 29 29 29 29 29 29 0a 20 20 20 20 :reasoning).thinking))))))).....
3f060 20 20 20 20 20 20 20 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 ...................((looking-at.
3f080 22 63 6f 6e 74 65 6e 74 5f 62 6c 6f 63 6b 5f 73 74 61 72 74 22 29 20 3b 49 73 20 74 68 65 20 66 "content_block_start").;Is.the.f
3f0a0 6f 6c 6c 6f 77 69 6e 67 20 62 6c 6f 63 6b 20 74 65 78 74 20 6f 72 20 74 6f 6f 6c 2d 75 73 65 3f ollowing.block.text.or.tool-use?
3f0c0 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 28 66 .............(forward-line.1).(f
3f0e0 6f 72 77 61 72 64 2d 63 68 61 72 20 35 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e orward-char.5).............(when
3f100 2d 6c 65 74 2a 20 28 28 63 62 6c 6f 63 6b 20 28 70 6c 69 73 74 2d 67 65 74 20 28 67 70 74 65 6c -let*.((cblock.(plist-get.(gptel
3f120 2d 2d 6a 73 6f 6e 2d 72 65 61 64 29 20 3a 63 6f 6e 74 65 6e 74 5f 62 6c 6f 63 6b 29 29 29 0a 20 --json-read).:content_block)))..
3f140 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 63 61 73 65 20 28 70 6c 69 73 74 2d 67 65 74 20 63 .............(pcase.(plist-get.c
3f160 62 6c 6f 63 6b 20 3a 74 79 70 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 22 74 block.:type).................("t
3f180 65 78 74 22 20 28 70 75 73 68 20 28 70 6c 69 73 74 2d 67 65 74 20 63 62 6c 6f 63 6b 20 3a 74 65 ext".(push.(plist-get.cblock.:te
3f1a0 78 74 29 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 20 xt).content-strs))..............
3f1c0 20 20 20 28 22 74 6f 6f 6c 5f 75 73 65 22 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a ...("tool_use".(plist-put.info.:
3f1e0 74 6f 6f 6c 2d 75 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 tool-use........................
3f200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 20 28 6c 69 73 74 20 3a 69 64 20 ................(cons.(list.:id.
3f220 28 70 6c 69 73 74 2d 67 65 74 20 63 62 6c 6f 63 6b 20 3a 69 64 29 0a 20 20 20 20 20 20 20 20 20 (plist-get.cblock.:id)..........
3f240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
3f260 20 20 20 20 20 20 20 20 20 20 3a 6e 61 6d 65 20 28 70 6c 69 73 74 2d 67 65 74 20 63 62 6c 6f 63 ..........:name.(plist-get.cbloc
3f280 6b 20 3a 6e 61 6d 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 k.:name)).......................
3f2a0 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
3f2c0 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 20 20 20 20 t.info.:tool-use))))............
3f2e0 20 20 20 20 20 28 22 74 68 69 6e 6b 69 6e 67 22 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f .....("thinking".(plist-put.info
3f300 20 3a 72 65 61 73 6f 6e 69 6e 67 20 28 70 6c 69 73 74 2d 67 65 74 20 63 62 6c 6f 63 6b 20 3a 74 .:reasoning.(plist-get.cblock.:t
3f320 68 69 6e 6b 69 6e 67 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 hinking))..................(plis
3f340 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 6b 20 27 69 6e 29 t-put.info.:reasoning-block.'in)
3f360 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 28 28 6c 6f ))))........................((lo
3f380 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 74 6f 70 22 29 0a 20 oking-at."content_block_stop")..
3f3a0 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 ...........(cond..............((
3f3c0 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 20 20 20 plist-get.info.:partial_json)...
3f3e0 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 20 20 20 20 20 20 20 ;End.of.tool.block..............
3f400 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
3f420 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 6e 70 75 74 73 0a 20 l.;Combine.partial.tool.inputs..
3f440 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 61 72 67 73 2d 6a 73 .................(let*.((args-js
3f460 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 72 73 65 20 28 70 6c on.(apply.#'concat.(nreverse.(pl
3f480 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 70 61 72 74 69 61 6c 5f 6a 73 6f 6e 29 29 29 29 0a 20 ist-get.info.:partial_json))))..
3f4a0 20 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 2d 64 65 ........................(args-de
3f4c0 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 6d 65 6e 74 20 73 74 coded..;Handle.blank.argument.st
3f4e0 72 69 6e 67 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rings...........................
3f500 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 6a 73 6f 6e 29 0a 20 (if.(string-empty-p.args-json)..
3f520 20 20 20 20 20 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
3f540 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 20 61 72 67 73 2d 6a .(gptel--json-read-string.args-j
3f560 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 20 20 20 3b 3b 20 41 son)))).....................;;.A
3f580 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 63 61 6c 6c 20 73 70 dd.the.input.to.the.tool-call.sp
3f5a0 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 6c 69 73 74 2d 70 75 ec.....................(plist-pu
3f5c0 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 6f 6f 6c 2d 75 73 65 t.(car.(plist-get.info.:tool-use
3f5e0 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 20 20 20 20 20 20 20 )).:input.args-decoded))........
3f600 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 61 6e 20 65 72 72 6f .........;;.If.there.was.an.erro
3f620 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 65 20 69 67 6e 6f 72 r.in.reading.that.tool,.we.ignor
3f640 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 54 4f 44 4f 28 74 6f e.it:.................;;.TODO(to
3f660 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 74 65 72 0a 20 20 20 ol).handle.this.error.better....
3f680 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 28 70 6c 69 73 74 2d .............(error.(pop.(plist-
3f6a0 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 4f 44 4f 3a 20 6e 72 get.info.:tool-use)))).;TODO:.nr
3f6c0 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 20 20 20 20 20 20 20 everse.:tool-use.list...........
3f6e0 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 70 61 72 74 69 61 6c 5f 6a 73 6f ....(plist-put.info.:partial_jso
3f700 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 71 20 28 70 6c 69 73 n.nil))...............((eq.(plis
3f720 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 69 6e t-get.info.:reasoning-block).'in
3f740 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 0a 20 20 20 20 20 20 ).;End.of.reasoning.block.......
3f760 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 69 ........(plist-put.info.:reasoni
3f780 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 64 20 6f 66 20 72 65 ng-block.t)))).;Signal.end.of.re
3f7a0 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 20 20 20 20 20 20 20 asoning.stream.to.filter........
3f7c0 20 20 20 20 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 ................((looking-at."me
3f7e0 73 73 61 67 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 ssage_delta").............;;.col
3f800 6c 65 63 74 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 lect.stop_reason,.usage_tokens.a
3f820 6e 64 20 70 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 nd.prepare.tools.............(fo
3f840 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 0a 20 rward-line.1).(forward-char.5)..
3f860 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 65 ...........(when-let*.((tool-use
3f880 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 20 .(plist-get.info.:tool-use)))...
3f8a0 20 20 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 ............(let*.((data.(plist-
3f8c0 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 20 20 20 20 get.info.:data))................
3f8e0 20 20 20 20 20 20 28 70 72 6f 6d 70 74 73 20 28 70 6c 69 73 74 2d 67 65 74 20 64 61 74 61 20 3a ......(prompts.(plist-get.data.:
3f900 6d 65 73 73 61 67 65 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 messages))).................(pli
3f920 73 74 2d 70 75 74 20 3b 20 41 70 70 65 6e 64 20 61 20 43 4f 50 59 20 6f 66 20 72 65 73 70 6f 6e st-put.;.Append.a.COPY.of.respon
3f940 73 65 20 74 65 78 74 20 2b 20 74 6f 6f 6c 2d 75 73 65 20 74 6f 20 74 68 65 20 70 72 6f 6d 70 74 se.text.+.tool-use.to.the.prompt
3f960 73 20 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 20 3a 6d 65 s.list..................data.:me
3f980 73 73 61 67 65 73 0a 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 ssages..................(vconcat
3f9a0 0a 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 0a 20 20 20 20 20 ...................prompts......
3f9c0 20 20 20 20 20 20 20 20 20 20 20 20 20 60 28 28 3a 72 6f 6c 65 20 22 61 73 73 69 73 74 61 6e 74 .............`((:role."assistant
3f9e0 22 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 6e 74 20 "......................:content.
3fa00 2c 28 76 63 6f 6e 63 61 74 20 3b 49 6e 73 65 72 74 20 61 6e 79 20 4c 4c 4d 20 74 65 78 74 0a 20 ,(vconcat.;Insert.any.LLM.text..
3fa20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 ...............................(
3fa40 61 6e 64 2d 6c 65 74 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 and-let*.((strs.(plist-get.info.
3fa60 3a 70 61 72 74 69 61 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 :partial_text)))................
3fa80 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 6c 69 73 74 20 3a 74 ..................(list.(list.:t
3faa0 79 70 65 20 22 74 65 78 74 22 20 3a 74 65 78 74 20 28 61 70 70 6c 79 20 23 27 63 6f 6e 63 61 74 ype."text".:text.(apply.#'concat
3fac0 20 28 6e 72 65 76 65 72 73 65 20 73 74 72 73 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 .(nreverse.strs)))))............
3fae0 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
3fb00 6d 62 64 61 20 28 74 6f 6f 6c 2d 63 61 6c 6c 29 20 3b 66 6f 6c 6c 6f 77 65 64 20 62 79 20 74 68 mbda.(tool-call).;followed.by.th
3fb20 65 20 74 6f 6f 6c 20 63 61 6c 6c 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 e.tool.calls....................
3fb40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 70 70 65 6e 64 20 28 .......................(append.(
3fb60 6c 69 73 74 20 3a 74 79 70 65 20 22 74 6f 6f 6c 5f 75 73 65 22 29 0a 20 20 20 20 20 20 20 20 20 list.:type."tool_use")..........
3fb80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
3fba0 20 20 28 63 6f 70 79 2d 73 65 71 75 65 6e 63 65 20 74 6f 6f 6c 2d 63 61 6c 6c 29 29 29 0a 20 20 ..(copy-sequence.tool-call)))...
3fbc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 ...............................t
3fbe0 6f 6f 6c 2d 75 73 65 29 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 ool-use)))))).................(p
3fc00 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 70 61 72 74 69 61 6c 5f 74 65 78 74 20 6e 69 6c 29 list-put.info.:partial_text.nil)
3fc20 20 3b 20 43 6c 65 61 72 20 61 6e 79 20 63 61 70 74 75 72 65 64 20 74 65 78 74 0a 20 20 20 20 20 .;.Clear.any.captured.text......
3fc40 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 54 68 65 6e 20 73 68 61 70 65 20 74 68 65 20 74 6f 6f ...........;;.Then.shape.the.too
3fc60 6c 2d 75 73 65 20 62 6c 6f 63 6b 20 62 79 20 61 64 64 69 6e 67 20 61 72 67 73 20 73 6f 20 77 65 l-use.block.by.adding.args.so.we
3fc80 20 63 61 6e 20 63 61 6c 6c 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 73 0a 20 20 20 20 20 20 20 20 .can.call.the.functions.........
3fca0 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 2d 63 61 6c 6c ........(mapc.(lambda.(tool-call
3fcc0 29 0a 20 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
3fce0 2d 70 75 74 20 74 6f 6f 6c 2d 63 61 6c 6c 20 3a 61 72 67 73 20 28 70 6c 69 73 74 2d 67 65 74 20 -put.tool-call.:args.(plist-get.
3fd00 74 6f 6f 6c 2d 63 61 6c 6c 20 3a 69 6e 70 75 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 tool-call.:input))..............
3fd20 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.
3fd40 3a 69 6e 70 75 74 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 :input.nil).....................
3fd60 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 69 64 20 28 67 70 ....(plist-put.tool-call.:id.(gp
3fd80 74 65 6c 2d 2d 61 6e 74 68 72 6f 70 69 63 2d 75 6e 66 6f 72 6d 61 74 2d 74 6f 6f 6c 2d 69 64 0a tel--anthropic-unformat-tool-id.
3fda0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
3fdc0 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
3fde0 6c 2d 63 61 6c 6c 20 3a 69 64 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 l-call.:id))))..................
3fe00 20 20 20 20 20 74 6f 6f 6c 2d 75 73 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 .....tool-use))).............(wh
3fe20 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 6e 2d en-let*.((response.(gptel--json-
3fe40 72 65 61 64 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 read)))...............(plist-put
3fe60 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 20 20 .info.:output-tokens............
3fe80 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 20 72 65 ..............(map-nested-elt.re
3fea0 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 73 29 29 sponse.'(:usage.:output_tokens))
3fec0 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 66 6f 20 )...............(plist-put.info.
3fee0 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 20 20 20 :stop-reason....................
3ff00 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.'
3ff20 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 20 20 20 (:delta.:stop_reason))))))).....
3ff40 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 20 28 6c ..(error.(goto-char.pt))).....(l
3ff60 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 6f 6e 63 et.((response-text.(apply.#'conc
3ff80 61 74 20 28 6e 72 65 76 65 72 73 65 20 63 6f 6e 74 65 6e 74 2d 73 74 72 73 29 29 29 29 0a 20 20 at.(nreverse.content-strs))))...
3ffa0 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 65 73 70 ....(unless.(string-empty-p.resp
3ffc0 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 20 69 6e onse-text).........(plist-put.in
3ffe0 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 20 20 20 fo.:partial_text................
40000 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 74 2d 67 ....(cons.response-text.(plist-g
40020 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 20 20 20 et.info.:partial_text)))).......
40040 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.
40060 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
40080 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)
400a0 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
400c0 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
400e0 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
40100 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
40120 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.
40140 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
40160 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........
40180 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.'
401a0 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-
401c0 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
401e0 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
40200 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.=.
40220 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.(
40240 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
40260 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
40280 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
402a0 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.
402c0 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
402e0 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
40300 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
40320 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.....
40340 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
40360 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
40380 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....
403a0 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
403c0 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
403e0 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
40400 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
40420 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))).
40440 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.:
40460 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
40480 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.
404a0 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
404c0 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
404e0 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
40500 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
40520 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
40540 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
40560 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)).......
40580 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).....
405a0 20 20 28 70 6c 69 73 74 2d 70 75 74 20 63 61 6c 6c 20 3a 69 64 20 28 67 70 74 65 6c 2d 2d 61 6e ..(plist-put.call.:id.(gptel--an
405c0 74 68 72 6f 70 69 63 2d 75 6e 66 6f 72 6d 61 74 2d 74 6f 6f 6c 2d 69 64 0a 20 20 20 20 20 20 20 thropic-unformat-tool-id........
405e0 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 63 ....................(plist-get.c
40600 61 6c 6c 20 3a 69 64 29 29 29 0a 20 20 20 20 20 20 63 6f 6c 6c 65 63 74 20 63 61 6c 6c 20 69 6e all.:id))).......collect.call.in
40620 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 74 to.calls.......finally.do.(plist
40640 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 20 -put.info.:tool-use.calls)))....
40660 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 73 finally.return....(and.content-s
40680 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 73 trs.(apply.#'concat.content-strs
406a0 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 65 ))))..(cl-defmethod.gptel--reque
406c0 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 69 st-data.((backend.gptel-anthropi
406e0 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 50 c).prompts)..."JSON.encode.PROMP
40700 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 6c TS.for.sending.to.ChatGPT."...(l
40720 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 6d et.((prompts-plist..........`(:m
40740 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 6d odel.,(gptel--model-name.gptel-m
40760 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 70 odel)............:stream.,(or.gp
40780 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 20 tel-stream.:json-false).........
407a0 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 6f ...:max_tokens.,(or.gptel-max-to
407c0 6b 65 6e 73 20 31 30 32 34 29 0a 20 20 20 20 20 20 20 20 20 20 20 3a 6d 65 73 73 61 67 65 73 20 kens.1024)............:messages.
407e0 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 2d [,@prompts]))).....(when.gptel--
40800 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 6f system-message.......(if.(and.(o
40820 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 74 r.(eq.gptel-cache.t).(memq.'syst
40840 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 20 em.gptel-cache))................
40860 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 29 (gptel--model-capable-p.'cache))
40880 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 73 ...........;;.gptel--system-mess
408a0 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 67 age.is.guaranteed.to.be.a.string
408c0 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 6c ...........(plist-put.prompts-pl
408e0 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 20 ist.:system.....................
40900 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 73 .`[(:type."text".:text.,gptel--s
40920 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 20 ystem-message...................
40940 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 68 ......:cache_control.(:type."eph
40960 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 70 emeral"))]).........(plist-put.p
40980 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 74 rompts-plist.:system.gptel--syst
409a0 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 65 em-message))).....(when.gptel-te
409c0 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 70 mperature.......(plist-put.promp
409e0 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 70 ts-plist.:temperature.gptel-temp
40a00 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 6f erature)).....(when.gptel-use-to
40a20 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 6f ols.......(when.(eq.gptel-use-to
40a40 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 70 ols.'force).........(plist-put.p
40a60 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 70 rompts-plist.:tool_choice.'(:typ
40a80 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 6f e."any"))).......(when.gptel-too
40aa0 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 67 ls.........(let.((tools-array.(g
40ac0 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 2d ptel--parse-tools.backend.gptel-
40ae0 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 72 tools)))...........(plist-put.pr
40b00 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 0a ompts-plist.:tools.tools-array).
40b20 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 74 ..........(when.(and.(or.(eq.gpt
40b40 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 61 el-cache.t).(memq.'tool.gptel-ca
40b60 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 65 che))......................(gpte
40b80 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 20 l--model-capable-p.'cache)).....
40ba0 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 79 ........(nconc.(aref.tools-array
40bc0 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 20 .(1-.(length.tools-array))).....
40be0 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 20 ...............'(:cache_control.
40c00 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 3b (:type."ephemeral"))))))).....;;
40c20 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 6c .Merge.request.params.with.model
40c40 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 2d .and.backend.params......(gptel-
40c60 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 74 -merge-plists......prompts-plist
40c80 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 72 ......(gptel-backend-request-par
40ca0 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 2d ams.gptel-backend)......(gptel--
40cc0 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 65 model-request-params..gptel-mode
40ce0 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 73 l))))..(cl-defmethod.gptel--pars
40d00 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 70 e-tools.((_backend.gptel-anthrop
40d20 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 65 ic).tools)..."Parse.TOOLS.to.the
40d40 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 73 .Anthropic.API.tool.definition.s
40d60 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 2d pec...TOOLS.is.a.list.of.`gptel-
40d80 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 63 tool'.structs,.which.see."...(vc
40da0 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 6f oncat....(mapcar.....(lambda.(to
40dc0 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 6f ol).......(list.:name.(gptel-too
40de0 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 69 l-name.tool).............:descri
40e00 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 6f ption.(gptel-tool-description.to
40e20 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 4e ol).............:input_schema.;N
40e40 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 65 OTE:.Anthropic.wants."{}".if.the
40e60 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 6c .function.takes.no.args,.not.nul
40e80 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 63 l.............(list.:type."objec
40ea0 74 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 70 72 6f 70 65 72 74 69 65 73 t"...................:properties
40ec0 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 70 0a 20 20 20 20 ...................(cl-loop.....
40ee0 20 20 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 ...............for.arg.in.(gptel
40f00 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 20 20 -tool-args.tool)................
40f20 20 20 20 20 66 6f 72 20 6e 61 6d 65 20 3d 20 28 70 6c 69 73 74 2d 67 65 74 20 61 72 67 20 3a 6e ....for.name.=.(plist-get.arg.:n
40f40 61 6d 65 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 74 79 70 65 ame)....................for.type
40f60 20 3d 20 28 70 6c 69 73 74 2d 67 65 74 20 61 72 67 20 3a 74 79 70 65 29 0a 20 20 20 20 20 20 20 .=.(plist-get.arg.:type)........
40f80 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 72 20 28 61 ............for.newname.=.(or.(a
40fa0 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 20 20 20 20 nd.(keywordp.name).name)........
40fc0 20 20 20 20 20 20 20 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
40fe0 61 6b 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 ake-symbol.(concat.":".name)))..
41000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 65 6e 75 6d 20 3d 20 28 70 6c ..................for.enum.=.(pl
41020 69 73 74 2d 67 65 74 20 61 72 67 20 3a 65 6e 75 6d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ist-get.arg.:enum)..............
41040 20 20 20 20 20 20 61 70 70 65 6e 64 20 28 6c 69 73 74 20 6e 65 77 6e 61 6d 65 0a 20 20 20 20 20 ......append.(list.newname......
41060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 60 28 3a 74 79 ...........................`(:ty
41080 70 65 20 2c 28 70 6c 69 73 74 2d 67 65 74 20 61 72 67 20 3a 74 79 70 65 29 0a 20 20 20 20 20 20 pe.,(plist-get.arg.:type).......
410a0 20 20 20 20 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 64 65 73 ............................:des
410c0 63 72 69 70 74 69 6f 6e 20 2c 28 70 6c 69 73 74 2d 67 65 74 20 61 72 67 20 3a 64 65 73 63 72 69 cription.,(plist-get.arg.:descri
410e0 70 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 ption)..........................
41100 20 20 20 20 20 20 20 20 20 2c 40 28 69 66 20 65 6e 75 6d 20 28 6c 69 73 74 20 3a 65 6e 75 6d 20 .........,@(if.enum.(list.:enum.
41120 28 76 63 6f 6e 63 61 74 20 65 6e 75 6d 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (vconcat.enum)))................
41140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2c 40 28 63 6f 6e 64 0a 20 20 20 20 20 ...................,@(cond......
41160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
41180 28 28 65 71 75 61 6c 20 74 79 70 65 20 22 6f 62 6a 65 63 74 22 29 0a 20 20 20 20 20 20 20 20 20 ((equal.type."object")..........
411a0 20 20 20 20 20 20 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
411c0 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..............................
411e0 20 20 20 20 20 20 20 20 20 20 3a 70 72 6f 70 65 72 74 69 65 73 20 28 70 6c 69 73 74 2d 67 65 74 ..........:properties.(plist-get
41200 20 61 72 67 20 3a 70 72 6f 70 65 72 74 69 65 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .arg.:properties)...............
41220 20 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 72 65 71 75 69 72 .........................:requir
41240 65 64 20 28 6f 72 20 28 70 6c 69 73 74 2d 67 65 74 20 61 72 67 20 3a 72 65 71 75 69 72 65 64 29 ed.(or.(plist-get.arg.:required)
41260 20 5b 5d 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 .[])))..........................
41280 20 20 20 20 20 20 20 20 20 20 20 20 28 28 65 71 75 61 6c 20 74 79 70 65 20 22 61 72 72 61 79 22 ............((equal.type."array"
412a0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 )...............................
412c0 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 3a 69 74 65 6d 73 20 28 70 6c 69 73 74 2d 67 65 74 20 ........(list.:items.(plist-get.
412e0 61 72 67 20 3a 69 74 65 6d 73 29 29 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 arg.:items)))))))...............
41300 20 20 20 20 3a 72 65 71 75 69 72 65 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ....:required...................
41320 28 76 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 28 64 65 6c (vconcat....................(del
41340 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 20 20 20 20 20 20 20 q.nil.(mapcar...................
41360 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 28 ............(lambda.(arg).(and.(
41380 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 20 not.(plist-get.arg.:optional))..
413a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
413c0 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 20 3a 6e 61 6d 65 29 ...........(plist-get.arg.:name)
413e0 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 ))..............................
41400 20 28 67 70 74 65 6c 2d 74 6f 6f 6c 2d 61 72 67 73 20 74 6f 6f 6c 29 29 29 29 29 29 29 0a 20 20 .(gptel-tool-args.tool)))))))...
41420 20 20 28 65 6e 73 75 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 ..(ensure-list.tools))))..(cl-de
41440 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 75 6c 74 fmethod.gptel--parse-tool-result
41460 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 70 69 63 29 20 74 6f s.((_backend.gptel-anthropic).to
41480 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
414a0 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-
414c0 55 53 45 2e 0a 0a 54 4f 4f 4c 2d 55 53 45 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 70 6c 69 73 USE...TOOL-USE.is.a.list.of.plis
414e0 74 73 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 6f 6f 6c 20 6e 61 6d 65 73 2c 20 61 72 67 75 6d 65 ts.containing.tool.names,.argume
41500 6e 74 73 20 61 6e 64 20 63 61 6c 6c 20 72 65 73 75 6c 74 73 2e 22 0a 20 20 3b 3b 20 28 64 65 63 nts.and.call.results."...;;.(dec
41520 6c 61 72 65 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 6c 69 lare.(side-effect-free.t))...(li
41540 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 6e 74 65 6e 74 0a 20 st....:role."user"....:content..
41560 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 20 20 20 28 6c 61 6d ..(vconcat.....(mapcar......(lam
41580 62 64 61 20 28 74 6f 6f 6c 2d 63 61 6c 6c 29 0a 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 72 bda.(tool-call)........(let*.((r
415a0 65 73 75 6c 74 20 28 70 6c 69 73 74 2d 67 65 74 20 74 6f 6f 6c 2d 63 61 6c 6c 20 3a 72 65 73 75 esult.(plist-get.tool-call.:resu
415c0 6c 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 74 65 64 0a 20 20 lt))...............(formatted...
415e0 20 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 74 6f 6f 6c 5f 72 .............(list.:type."tool_r
41600 65 73 75 6c 74 22 0a 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 esult"......................:too
41620 6c 5f 75 73 65 5f 69 64 20 28 67 70 74 65 6c 2d 2d 61 6e 74 68 72 6f 70 69 63 2d 66 6f 72 6d 61 l_use_id.(gptel--anthropic-forma
41640 74 2d 74 6f 6f 6c 2d 69 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 t-tool-id.......................
41660 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 6c 2d 63 61 6c .............(plist-get.tool-cal
41680 6c 20 3a 69 64 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 6f l.:id))......................:co
416a0 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 20 72 65 73 75 6c ntent.(if.(stringp.result).resul
416c0 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...............................
416e0 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 29 29 29 29 0a 20 ..(prin1-to-string.result)))))..
41700 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 20 20 20 20 20 20 ........(prog1.formatted........
41720 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 63 61 6c 6c 20 3a ....(when.(plist-get.tool-call.:
41740 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 2d 70 75 74 20 66 error)..............(plist-put.f
41760 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 20 20 20 20 20 74 ormatted.:is_error.t)))))......t
41780 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 67 70 74 65 6c 2d ool-use))))..;;.NOTE:.No.`gptel-
417a0 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 75 69 72 65 64 20 -inject-prompt'.method.required.
417c0 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 0a 3b 3b 20 74 68 for.gptel-anthropic,.since.;;.th
417e0 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 6e 65 72 69 63 20 is.is.handled.by.its.defgeneric.
41800 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 61 6e implementation..(defun.gptel--an
41820 74 68 72 6f 70 69 63 2d 66 6f 72 6d 61 74 2d 74 6f 6f 6c 2d 69 64 20 28 74 6f 6f 6c 2d 69 64 29 thropic-format-tool-id.(tool-id)
41840 0a 20 20 28 69 66 20 28 73 74 72 69 6e 67 2d 70 72 65 66 69 78 2d 70 20 22 74 6f 6f 6c 75 5f 22 ...(if.(string-prefix-p."toolu_"
41860 20 74 6f 6f 6c 2d 69 64 29 0a 20 20 20 20 20 20 74 6f 6f 6c 2d 69 64 0a 20 20 20 20 28 66 6f 72 .tool-id).......tool-id.....(for
41880 6d 61 74 20 22 74 6f 6f 6c 75 5f 25 73 22 20 74 6f 6f 6c 2d 69 64 29 29 29 0a 0a 28 64 65 66 75 mat."toolu_%s".tool-id)))..(defu
418a0 6e 20 67 70 74 65 6c 2d 2d 61 6e 74 68 72 6f 70 69 63 2d 75 6e 66 6f 72 6d 61 74 2d 74 6f 6f 6c n.gptel--anthropic-unformat-tool
418c0 2d 69 64 20 28 74 6f 6f 6c 2d 69 64 29 0a 20 20 28 6f 72 20 28 61 6e 64 20 28 73 74 72 69 6e 67 -id.(tool-id)...(or.(and.(string
418e0 2d 6d 61 74 63 68 20 22 74 6f 6f 6c 75 5f 5c 5c 28 2e 2b 5c 5c 29 22 20 74 6f 6f 6c 2d 69 64 29 -match."toolu_\\(.+\\)".tool-id)
41900 0a 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 20 31 20 74 6f 6f 6c ............(match-string.1.tool
41920 2d 69 64 29 29 0a 20 20 20 20 20 20 28 70 72 6f 67 6e 0a 20 20 20 20 20 20 20 20 28 6d 65 73 73 -id)).......(progn.........(mess
41940 61 67 65 20 22 55 6e 65 78 70 65 63 74 65 64 20 74 6f 6f 6c 5f 63 61 6c 6c 5f 69 64 20 66 6f 72 age."Unexpected.tool_call_id.for
41960 6d 61 74 3a 20 25 73 22 20 74 6f 6f 6c 2d 69 64 29 0a 20 20 20 20 20 20 20 20 74 6f 6f 6c 2d 69 mat:.%s".tool-id).........tool-i
41980 64 29 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 2d 70 61 72 73 65 d)))..(cl-defmethod.gptel--parse
419a0 2d 6c 69 73 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 -list.((_backend.gptel-anthropic
419c0 29 20 70 72 6f 6d 70 74 2d 6c 69 73 74 29 0a 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 74 65 ).prompt-list)...(cl-loop.for.te
419e0 78 74 20 69 6e 20 70 72 6f 6d 70 74 2d 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 xt.in.prompt-list............for
41a00 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 20 20 20 20 .role.=.t.then.(not.role).......
41a20 20 20 20 20 20 69 66 20 74 65 78 74 0a 20 20 20 20 20 20 20 20 20 20 20 63 6f 6c 6c 65 63 74 20 .....if.text............collect.
41a40 28 6c 69 73 74 20 3a 72 6f 6c 65 20 28 69 66 20 72 6f 6c 65 20 22 75 73 65 72 22 20 22 61 73 73 (list.:role.(if.role."user"."ass
41a60 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 20 20 istant")........................
41a80 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 78 74 ..:content.`[(:type."text".:text
41aa0 20 2c 74 65 78 74 29 5d 29 0a 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 6f 20 70 72 6f 6d 70 74 .,text)])............into.prompt
41ac0 73 0a 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 20 64 6f 0a 20 20 20 20 20 20 20 20 s............finally.do.........
41ae0 20 20 20 3b 3b 20 63 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 ...;;.cache.messages.if.required
41b00 3a 20 61 64 64 20 63 61 63 68 65 5f 63 6f 6e 74 72 6f 6c 20 74 6f 20 74 68 65 20 6c 61 73 74 20 :.add.cache_control.to.the.last.
41b20 6d 65 73 73 61 67 65 0a 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 61 6e 64 20 28 6f 72 20 message............(if.(and.(or.
41b40 28 65 71 20 67 70 74 65 6c 2d 63 61 63 68 65 20 74 29 20 28 6d 65 6d 71 20 27 6d 65 73 73 61 67 (eq.gptel-cache.t).(memq.'messag
41b60 65 20 67 70 74 65 6c 2d 63 61 63 68 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 e.gptel-cache)).................
41b80 20 20 20 20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 63 61 70 61 62 6c 65 2d 70 20 27 63 61 63 ....(gptel--model-capable-p.'cac
41ba0 68 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 63 6f 6e 63 20 28 61 72 65 66 he))................(nconc.(aref
41bc0 20 28 70 6c 69 73 74 2d 67 65 74 20 28 63 61 72 20 28 6c 61 73 74 20 70 72 6f 6d 70 74 73 29 29 .(plist-get.(car.(last.prompts))
41be0 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 20 20 20 20 20 .:content).0)...................
41c00 20 20 20 20 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 ....'(:cache_control.(:type."eph
41c20 65 6d 65 72 61 6c 22 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 20 72 emeral"))))............finally.r
41c40 65 74 75 72 6e 20 70 72 6f 6d 70 74 73 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 67 eturn.prompts))..(cl-defmethod.g
41c60 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 67 70 74 ptel--parse-buffer.((backend.gpt
41c80 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 61 78 2d 65 6e 74 72 el-anthropic).&optional.max-entr
41ca0 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.
41cc0 28 70 6f 69 6e 74 29 29 0a 20 20 20 20 20 20 20 20 28 69 6e 63 6c 75 64 65 2d 6d 65 64 69 61 20 (point)).........(include-media.
41ce0 28 61 6e 64 20 67 70 74 65 6c 2d 74 72 61 63 6b 2d 6d 65 64 69 61 20 28 6f 72 20 28 67 70 74 65 (and.gptel-track-media.(or.(gpte
41d00 6c 2d 2d 6d 6f 64 65 6c 2d 63 61 70 61 62 6c 65 2d 70 20 27 6d 65 64 69 61 29 0a 20 20 20 20 20 l--model-capable-p.'media)......
41d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
41d40 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 63 61 70 61 62 .............(gptel--model-capab
41d60 6c 65 2d 70 20 27 75 72 6c 29 29 29 29 29 0a 20 20 20 20 28 69 66 20 28 6f 72 20 67 70 74 65 6c le-p.'url))))).....(if.(or.gptel
41d80 2d 6d 6f 64 65 20 67 70 74 65 6c 2d 74 72 61 63 6b 2d 72 65 73 70 6f 6e 73 65 29 0a 20 20 20 20 -mode.gptel-track-response).....
41da0 20 20 20 20 28 77 68 69 6c 65 20 28 61 6e 64 20 28 6f 72 20 28 6e 6f 74 20 6d 61 78 2d 65 6e 74 ....(while.(and.(or.(not.max-ent
41dc0 72 69 65 73 29 20 28 3e 3d 20 6d 61 78 2d 65 6e 74 72 69 65 73 20 30 29 29 0a 20 20 20 20 20 20 ries).(>=.max-entries.0)).......
41de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 72 65 76 69 6f ..............(goto-char.(previo
41e00 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.......
41e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6f 69 6e 74 ..........................(point
41e40 29 20 27 67 70 74 65 6c 20 6e 69 6c 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 29 0a 20 20 20 20 20 ).'gptel.nil.(point-min)))......
41e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 6f 74 20 28 3d 20 28 70 6f 69 6e 74 29 20 70 ...............(not.(=.(point).p
41e80 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 74 69 rev-pt)))...........;;.HACK.Unti
41ea0 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 6c 75 l.we.can.find.a.more.robust.solu
41ec0 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 72 65 tion.for.editing...........;;.re
41ee0 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 6e 69 sponses,.ignore.prompts.containi
41f00 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 20 20 ng.only.whitespace,.as.the......
41f20 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 6e 64 .....;;.Anthropic.API.can't.hand
41f40 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 23 33 le.it...See.#452,.#409,.#406,.#3
41f60 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 65 63 51.and.#321...........;;.We.chec
41f80 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 67 20 k.for.blank.prompts.by.skipping.
41fa0 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 20 20 whitespace.and.comparing........
41fc0 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 75 73 ...;;.point.against.the.previous
41fe0 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 72 73 ............(unless.(save-excurs
42000 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 28 3e ion.(skip-syntax-forward.".").(>
42020 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 20 20 =.(point).prev-pt)).............
42040 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 6e 74 (pcase.(get-char-property.(point
42060 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 6f 6e ).'gptel)...............('respon
42080 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 28 63 se................(when-let*.((c
420a0 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 20 20 ontent..........................
420c0 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 20 20 ...(gptel--trim-prefixes........
420e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 2d 73 75 ......................(buffer-su
42100 62 73 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 20 28 70 6f 69 6e 74 29 20 70 72 bstring-no-properties.(point).pr
42120 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 65 6e ev-pt))))..................(when
42140 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 29 0a .(not.(string-blank-p.content)).
42160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 6c 69 73 74 20 3a ...................(push.(list.:
42180 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 65 6e role."assistant".:content.conten
421a0 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 60 28 t).prompts))))...............(`(
421c0 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 76 65 tool...,id)................(save
421e0 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 6f 6e -excursion..................(con
42200 64 69 74 69 6f 6e 2d 63 61 73 65 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 dition-case.nil.................
42220 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 63 75 .....(let*.((tool-call.(read.(cu
42240 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 20 20 rrent-buffer))).................
42260 20 20 20 20 20 20 20 20 20 20 20 20 28 69 64 20 28 67 70 74 65 6c 2d 2d 61 6e 74 68 72 6f 70 69 ............(id.(gptel--anthropi
42280 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 20 20 20 20 20 c-format-tool-id.id))...........
422a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 61 6d 65 20 28 70 6c 69 73 74 2d 67 ..................(name.(plist-g
422c0 65 74 20 74 6f 6f 6c 2d 63 61 6c 6c 20 3a 6e 61 6d 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 et.tool-call.:name))............
422e0 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 28 70 6c 69 .................(arguments.(pli
42300 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 20 20 20 20 20 st-get.tool-call.:args))).......
42320 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 6f 6f 6c .................(plist-put.tool
42340 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 20 20 20 20 20 -call.:id.id)...................
42360 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 74 6f 6f 6c 2d 63 61 6c 6c 20 3a 72 65 73 75 6c .....(plist-put.tool-call.:resul
42380 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...............................
423a0 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 69 ....(string-trim.(buffer-substri
423c0 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ng-no-properties................
423e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
42400 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 20 20 .(point).prev-pt))).............
42420 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 72 73 65 2d 74 ...........(push.(gptel--parse-t
42440 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 2d 63 ool-results.backend.(list.tool-c
42460 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 20 20 20 20 20 all))...........................
42480 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 20 ...prompts).....................
424a0 20 20 20 28 70 75 73 68 20 28 6c 69 73 74 20 3a 72 6f 6c 65 20 22 61 73 73 69 73 74 61 6e 74 22 ...(push.(list.:role."assistant"
424c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
424e0 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 6c 5f 75 73 65 ....:content.`[(.:type."tool_use
42500 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 20 20 20 20 20 ".:id.,id.:name.,name...........
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 20 20 20 20 ................................
42540 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 20 20 20 20 20 ......:input.,arguments)])......
42560 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 29 ........................prompts)
42580 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 6f 66 2d 66 69 )....................((end-of-fi
425a0 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 20 20 le.invalid-read-syntax).........
425c0 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
425e0 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 6f 6e 20 6c 69 uld.not.parse.tool-call.%s.on.li
42600 6e 65 20 25 73 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ne.%s"..........................
42620 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 2d 61 74 2d 70 ............id.(line-number-at-p
42640 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 20 20 20 20 20 os.(point))))))))...............
42660 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 69 6c 20 20 20 ('ignore)...............('nil...
42680 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 6c 65 3a 20 70 ..................;.user.role:.p
426a0 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 20 20 20 20 20 ossibly.with.media..............
426c0 20 20 28 69 66 20 69 6e 63 6c 75 64 65 2d 6d 65 64 69 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 ..(if.include-media.............
426e0 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 63 6f 6e 74 65 6e 74 20 28 67 70 74 .......(when-let*.((content.(gpt
42700 65 6c 2d 2d 61 6e 74 68 72 6f 70 69 63 2d 70 61 72 73 65 2d 6d 75 6c 74 69 70 61 72 74 0a 20 20 el--anthropic-parse-multipart...
42720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
42740 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 6d 65 64 69 61 2d 6c 69 6e 6b 73 .......(gptel--parse-media-links
42760 20 6d 61 6a 6f 72 2d 6d 6f 64 65 20 28 70 6f 69 6e 74 29 20 70 72 65 76 2d 70 74 29 29 29 29 0a .major-mode.(point).prev-pt)))).
42780 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 3e 20 28 6c .....................(when.(>.(l
427a0 65 6e 67 74 68 20 63 6f 6e 74 65 6e 74 29 20 30 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ength.content).0)...............
427c0 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 75 73 65 72 .........(push.(list.:role."user
427e0 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 29 29 0a 20 ".:content.content).prompts)))..
42800 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
42820 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 20 tent.(gptel--trim-prefixes......
42840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
42860 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 65 ..(buffer-substring-no-propertie
42880 73 20 28 70 6f 69 6e 74 29 20 70 72 65 76 2d 70 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 s.(point).prev-pt))))...........
428a0 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 75 73 65 72 .........(push.(list.:role."user
428c0 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 29 29 29 29 ".:content.content).prompts)))))
428e0 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 28 70 6f 69 6e 74 )...........(setq.prev-pt.(point
42900 29 29 0a 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 ))...........(and.max-entries.(c
42920 6c 2d 64 65 63 66 20 6d 61 78 2d 65 6e 74 72 69 65 73 29 29 29 0a 20 20 20 20 20 20 28 77 68 65 l-decf.max-entries))).......(whe
42940 6e 2d 6c 65 74 2a 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 n-let*.((content.(string-trim.(b
42960 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...
42980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
429a0 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 29 29 .......(point-min).(point-max)))
429c0 29 29 0a 20 20 20 20 20 20 20 20 3b 3b 20 58 58 58 20 66 61 69 6c 73 20 69 66 20 63 6f 6e 74 65 )).........;;.XXX.fails.if.conte
429e0 6e 74 20 69 73 20 65 6d 70 74 79 2e 20 20 54 68 65 20 63 6f 72 72 65 63 74 20 65 72 72 6f 72 20 nt.is.empty...The.correct.error.
42a00 62 65 68 61 76 69 6f 72 20 69 73 20 6c 65 66 74 20 74 6f 0a 20 20 20 20 20 20 20 20 3b 3b 20 61 behavior.is.left.to.........;;.a
42a20 20 66 75 74 75 72 65 20 64 69 73 63 75 73 73 69 6f 6e 2e 0a 20 20 20 20 20 20 20 20 28 70 75 73 .future.discussion..........(pus
42a40 68 20 28 6c 69 73 74 20 3a 72 6f 6c 65 20 22 75 73 65 72 22 20 3a 63 6f 6e 74 65 6e 74 20 63 6f h.(list.:role."user".:content.co
42a60 6e 74 65 6e 74 29 20 70 72 6f 6d 70 74 73 29 29 29 0a 20 20 20 20 3b 3b 20 43 61 63 68 65 20 6d ntent).prompts))).....;;.Cache.m
42a80 65 73 73 61 67 65 73 20 69 66 20 72 65 71 75 69 72 65 64 3a 20 61 64 64 20 63 61 63 68 65 5f 63 essages.if.required:.add.cache_c
42aa0 6f 6e 74 72 6f 6c 20 74 6f 20 74 68 65 20 6c 61 73 74 20 6d 65 73 73 61 67 65 0a 20 20 20 20 28 ontrol.to.the.last.message.....(
42ac0 69 66 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 if.(and.(or.(eq.gptel-cache.t).(
42ae0 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)).....
42b00 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
42b20 20 27 63 61 63 68 65 29 29 0a 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 6c 61 73 74 2d 6d 65 .'cache)).........(let.((last-me
42b40 73 73 61 67 65 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 ssage.(plist-get.(car.(last.prom
42b60 70 74 73 29 29 20 3a 63 6f 6e 74 65 6e 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 69 66 20 pts)).:content)))...........(if.
42b80 28 73 74 72 69 6e 67 70 20 6c 61 73 74 2d 6d 65 73 73 61 67 65 29 0a 20 20 20 20 20 20 20 20 20 (stringp.last-message)..........
42ba0 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 .....(plist-put................(
42bc0 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 0a 20 20 20 car.(last.prompts)).:content....
42be0 20 20 20 20 20 20 20 20 20 20 20 20 60 5b 28 3a 74 79 70 65 20 22 74 65 78 74 22 20 3a 74 65 78 ............`[(:type."text".:tex
42c00 74 20 2c 6c 61 73 74 2d 6d 65 73 73 61 67 65 20 3a 63 61 63 68 65 5f 63 6f 6e 74 72 6f 6c 20 28 t.,last-message.:cache_control.(
42c20 3a 74 79 70 65 20 22 65 70 68 65 6d 65 72 61 6c 22 29 29 5d 29 0a 20 20 20 20 20 20 20 20 20 20 :type."ephemeral"))])...........
42c40 20 20 28 6e 63 6f 6e 63 20 28 61 72 65 66 20 28 70 6c 69 73 74 2d 67 65 74 20 28 63 61 72 20 28 ..(nconc.(aref.(plist-get.(car.(
42c60 6c 61 73 74 20 70 72 6f 6d 70 74 73 29 29 20 3a 63 6f 6e 74 65 6e 74 29 20 30 29 0a 20 20 20 20 last.prompts)).:content).0).....
42c80 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 20 ...............'(:cache_control.
42ca0 28 3a 74 79 70 65 20 22 65 70 68 65 6d 65 72 61 6c 22 29 29 29 29 29 29 0a 20 20 20 20 70 72 6f (:type."ephemeral")))))).....pro
42cc0 6d 70 74 73 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 mpts))..(defun.gptel--anthropic-
42ce0 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
42d00 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
42d20 68 65 20 41 6e 74 68 72 6f 70 69 63 20 41 50 49 20 66 6f 72 6d 61 74 2e 0a 0a 54 68 65 20 69 6e he.Anthropic.API.format...The.in
42d40 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 20 28 28 3a put.is.an.alist.of.the.form..((:
42d60 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 61 20 5c 22 text.\"some.text\")...(:media.\"
42d80 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 22 69 6d 61 /path/to/media.png\".:mime.\"ima
42da0 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 78 74 5c 22 ge/png\")...(:text.\"More.text\"
42dc0 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 6f 66 20 65 ))...The.output.is.a.vector.of.e
42de0 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 61 74 65 0a ntries.in.a.backend-appropriate.
42e00 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 61 72 74 20 format."...(cl-loop....for.part.
42e20 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 20 20 77 69 in.parts....for.n.upfrom.1....wi
42e40 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 77 69 74 68 th.last.=.(length.parts)....with
42e60 20 74 79 70 65 0a 20 20 20 66 6f 72 20 74 65 78 74 20 3d 20 28 70 6c 69 73 74 2d 67 65 74 20 70 .type....for.text.=.(plist-get.p
42e80 61 72 74 20 3a 74 65 78 74 29 0a 20 20 20 66 6f 72 20 6d 69 6d 65 20 3d 20 28 70 6c 69 73 74 2d art.:text)....for.mime.=.(plist-
42ea0 67 65 74 20 70 61 72 74 20 3a 6d 69 6d 65 29 0a 20 20 20 66 6f 72 20 6d 65 64 69 61 20 3d 20 28 get.part.:mime)....for.media.=.(
42ec0 70 6c 69 73 74 2d 67 65 74 20 70 61 72 74 20 3a 6d 65 64 69 61 29 0a 20 20 20 69 66 20 74 65 78 plist-get.part.:media)....if.tex
42ee0 74 20 64 6f 0a 20 20 20 28 61 6e 64 20 28 6f 72 20 28 3d 20 6e 20 31 29 20 28 3d 20 6e 20 6c 61 t.do....(and.(or.(=.n.1).(=.n.la
42f00 73 74 29 29 20 28 73 65 74 71 20 74 65 78 74 20 28 67 70 74 65 6c 2d 2d 74 72 69 6d 2d 70 72 65 st)).(setq.text.(gptel--trim-pre
42f20 66 69 78 65 73 20 74 65 78 74 29 29 29 20 61 6e 64 0a 20 20 20 69 66 20 74 65 78 74 0a 20 20 20 fixes.text))).and....if.text....
42f40 63 6f 6c 6c 65 63 74 20 60 28 3a 74 79 70 65 20 22 74 65 78 74 22 20 3a 74 65 78 74 20 2c 74 65 collect.`(:type."text".:text.,te
42f60 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 65 xt).into.parts-array.end....else
42f80 20 69 66 20 6d 65 64 69 61 0a 20 20 20 64 6f 0a 20 20 20 28 73 65 74 71 20 74 79 70 65 20 28 63 .if.media....do....(setq.type.(c
42fa0 6f 6e 64 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 43 75 72 72 65 6e 74 ond.....................;Current
42fc0 6c 79 20 73 75 70 70 6f 72 74 65 64 3a 20 49 6d 61 67 65 73 20 61 6e 64 20 50 44 46 73 0a 20 20 ly.supported:.Images.and.PDFs...
42fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 65 71 75 61 6c 20 28 73 75 62 73 74 72 69 6e 67 20 .............((equal.(substring.
43000 6d 69 6d 65 20 30 20 35 29 20 22 69 6d 61 67 65 22 29 20 22 69 6d 61 67 65 22 29 0a 20 20 20 20 mime.0.5)."image")."image").....
43020 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 4e 4f 54 45 3a 20 4f 6e 6c 79 20 43 6c 61 75 64 65 20 ...........;;.NOTE:.Only.Claude.
43040 33 2e 35 20 53 6f 6e 6e 65 74 20 73 75 70 70 6f 72 74 73 20 50 44 46 20 64 6f 63 75 6d 65 6e 74 3.5.Sonnet.supports.PDF.document
43060 73 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 65 71 75 61 6c 20 6d 69 6d 65 20 22 s:................((equal.mime."
43080 61 70 70 6c 69 63 61 74 69 6f 6e 2f 70 64 66 22 29 20 22 64 6f 63 75 6d 65 6e 74 22 29 0a 20 20 application/pdf")."document")...
430a0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 20 28 65 72 72 6f 72 20 28 63 6f 6e 63 61 74 20 22 .............(t.(error.(concat."
430c0 28 67 70 74 65 6c 2d 61 6e 74 68 72 6f 70 69 63 29 20 52 65 71 75 65 73 74 20 61 62 6f 72 74 65 (gptel-anthropic).Request.aborte
430e0 64 3a 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 d:."............................
43100 20 20 20 20 20 20 22 74 72 79 69 6e 67 20 74 6f 20 73 65 6e 64 20 75 6e 73 75 70 70 6f 72 74 65 ......"trying.to.send.unsupporte
43120 64 20 4d 49 4d 45 20 74 79 70 65 20 25 73 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 d.MIME.type.%s")................
43140 20 20 20 20 20 20 20 20 20 20 6d 69 6d 65 29 29 29 29 0a 20 20 20 61 6e 64 20 63 6f 6c 6c 65 63 ..........mime))))....and.collec
43160 74 0a 20 20 20 60 28 3a 74 79 70 65 20 2c 74 79 70 65 0a 20 20 20 20 20 3a 73 6f 75 72 63 65 20 t....`(:type.,type......:source.
43180 28 3a 74 79 70 65 20 22 62 61 73 65 36 34 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6d (:type."base64"...............:m
431a0 65 64 69 61 5f 74 79 70 65 20 2c 28 70 6c 69 73 74 2d 67 65 74 20 70 61 72 74 20 3a 6d 69 6d 65 edia_type.,(plist-get.part.:mime
431c0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 64 61 74 61 20 2c 28 67 70 74 65 6c 2d 2d 62 )...............:data.,(gptel--b
431e0 61 73 65 36 34 2d 65 6e 63 6f 64 65 20 6d 65 64 69 61 29 29 0a 20 20 20 20 20 3b 3b 20 54 4f 44 ase64-encode.media))......;;.TOD
43200 4f 20 4d 61 6b 65 20 6d 65 64 69 61 20 63 61 63 68 69 6e 67 20 61 20 75 73 65 72 20 6f 70 74 69 O.Make.media.caching.a.user.opti
43220 6f 6e 0a 20 20 20 20 20 2c 40 28 61 6e 64 20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 63 61 70 on......,@(and.(gptel--model-cap
43240 61 62 6c 65 2d 70 20 27 63 61 63 68 65 29 0a 20 20 20 20 20 20 20 20 27 28 3a 63 61 63 68 65 5f able-p.'cache).........'(:cache_
43260 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 0a 20 control.(:type."ephemeral"))))..
43280 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
432a0 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
432c0 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
432e0 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).
43300 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.........................
43320 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-
43340 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
43360 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.
43380 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-
433a0 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.
433c0 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."...(
433e0 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
43400 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
43420 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
43440 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
43460 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
43480 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).......
434a0 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..........
434c0 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
434e0 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).......
43500 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
43520 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
43540 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
43560 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
43580 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)....................
435a0 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)))).............(
435c0 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
435e0 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
43600 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
43620 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)
43640 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
43660 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
43680 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)).
436a0 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
436c0 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
436e0 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)))........................
43700 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".
43720 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))................
43740 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)
43760 0a 20 20 20 20 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
43780 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
437a0 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))))..;
437c0 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
437e0 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
43800 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
43820 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).;;...............
43840 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.;;......
43860 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
43880 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)).;;.......
438a0 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.`((
438c0 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)).;
438e0 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 ;...............................
43900 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)).;;..............
43920 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))).;;....
43940 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
43960 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
43980 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-
439a0 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
439c0 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
439e0 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
43a00 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
43a20 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
43a40 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
43a60 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
43a80 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
43aa0 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......
43ac0 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
43ae0 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 2d 35 2d 73 6f 6e e."2025-02").....(claude-3-5-son
43b00 6e 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 net-20241022......:description."
43b20 48 69 67 68 65 73 74 20 6c 65 76 65 6c 20 6f 66 20 69 6e 74 65 6c 6c 69 67 65 6e 63 65 20 61 6e Highest.level.of.intelligence.an
43b40 64 20 63 61 70 61 62 69 6c 69 74 79 22 0a 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 d.capability"......:capabilities
43b60 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
43b80 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
43ba0 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
43bc0 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
43be0 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......
43c00 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
43c20 65 20 22 32 30 32 34 2d 30 34 22 29 0a 20 20 20 20 28 63 6c 61 75 64 65 2d 33 2d 35 2d 73 6f 6e e."2024-04").....(claude-3-5-son
43c40 6e 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 net-20240620......:description."
43c60 48 69 67 68 65 73 74 20 6c 65 76 65 6c 20 6f 66 20 69 6e 74 65 6c 6c 69 67 65 6e 63 65 20 61 6e Highest.level.of.intelligence.an
43c80 64 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 d.capability.(earlier.version)".
43ca0 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
43cc0 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
43ce0 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"
43d00 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
43d20 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......
43d40 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
43d60 65 20 22 32 30 32 34 2d 30 34 22 29 0a 20 20 20 20 28 63 6c 61 75 64 65 2d 33 2d 35 2d 68 61 69 e."2024-04").....(claude-3-5-hai
43d80 6b 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 ku-20241022......:description."I
43da0 6e 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 ntelligence.at.blazing.speeds"..
43dc0 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 63 61 63 68 ....:capabilities.(tool-use.cach
43de0 65 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 e)......:context-window.200.....
43e00 20 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 .:input-cost.1.00......:output-c
43e20 6f 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 ost.5.00......:cutoff-date."2024
43e40 2d 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 -07").....(claude-3-opus-2024022
43e60 39 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 9......:description."Top-level.p
43e80 65 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 erformance,.intelligence,.fluenc
43ea0 79 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 y,.and.understanding"......:capa
43ec0 62 69 6c 69 74 69 65 73 20 28 6d 65 64 69 61 20 74 6f 6f 6c 2d 75 73 65 20 63 61 63 68 65 29 0a bilities.(media.tool-use.cache).
43ee0 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"."
43f00 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
43f20 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 20 20 bp")......:context-window.200...
43f40 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 31 35 0a 20 20 20 20 20 3a 6f 75 74 70 75 74 2d 63 ...:input-cost.15......:output-c
43f60 6f 73 74 20 37 35 0a 20 20 20 20 20 3a 63 75 74 6f 66 66 2d 64 61 74 65 20 22 32 30 32 33 2d 30 ost.75......:cutoff-date."2023-0
43f80 38 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 8").....(claude-3-sonnet-2024022
43fa0 39 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 9......:description."Balance.of.
43fc0 69 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 intelligence.and.speed.(legacy.m
43fe0 6f 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 odel)"......:capabilities.(media
44000 20 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 .tool-use)......:mime-types.("im
44020 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 66 age/jpeg"."image/png"."image/gif
44040 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 77 69 "."image/webp")......:context-wi
44060 6e 64 6f 77 20 32 30 30 0a 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 33 0a 20 20 20 20 ndow.200......:input-cost.3.....
44080 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 31 35 0a 20 20 20 20 20 3a 63 75 74 6f 66 66 2d 64 61 .:output-cost.15......:cutoff-da
440a0 74 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 te."2023-08").....(claude-3-haik
440c0 75 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 u-20240307......:description."Fa
440e0 73 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 st.and.most.compact.model.for.ne
44100 61 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 ar-instant.responsiveness"......
44120 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 74 6f 6f 6c 2d 75 73 65 20 63 61 63 68 65 29 0a 20 :capabilities.(tool-use.cache)..
44140 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 6e ....:context-window.200......:in
44160 70 75 74 2d 63 6f 73 74 20 30 2e 32 35 0a 20 20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 put-cost.0.25......:output-cost.
44180 31 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 1.25......:cutoff-date."2023-08"
441a0 29 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 ))..."List.of.available.Anthropi
441c0 63 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 c.models.and.associated.properti
441e0 65 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 es..Keys:..-.`:description':.a.b
44200 72 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 rief.description.of.the.model...
44220 2d 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 -.`:capabilities':.a.list.of.cap
44240 61 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 abilities.supported.by.the.model
44260 2e 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 ...-.`:mime-types':.a.list.of.su
44280 70 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 pported.MIME.types.for.media.fil
442a0 65 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 es...-.`:context-window':.the.co
442c0 6e 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 ntext.window.size,.in.thousands.
442e0 6f 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 of.tokens...-.`:input-cost':.the
44300 20 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 .input.cost,.in.US.dollars.per.m
44320 69 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 illion.tokens...-.`:output-cost'
44340 3a 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 :.the.output.cost,.in.US.dollars
44360 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 63 75 74 6f 66 66 .per.million.tokens...-.`:cutoff
44380 2d 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 -date':.the.knowledge.cutoff.dat
443a0 65 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 e...-.`:request-params':.a.plist
443c0 20 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 .of.additional.request.parameter
443e0 73 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 s.to...include.when.using.this.m
44400 6f 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 odel...Information.about.the.Ant
44420 68 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 hropic.models.was.obtained.from.
44440 74 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 the.following.comparison.table:.
44460 0a 3c 68 74 74 70 73 3a 2f 2f 64 6f 63 73 2e 61 6e 74 68 72 6f 70 69 63 2e 63 6f 6d 2f 65 6e 2f .<https://docs.anthropic.com/en/
44480 64 6f 63 73 2f 61 62 6f 75 74 2d 63 6c 61 75 64 65 2f 6d 6f 64 65 6c 73 23 6d 6f 64 65 6c 2d 63 docs/about-claude/models#model-c
444a0 6f 6d 70 61 72 69 73 6f 6e 2d 74 61 62 6c 65 3e 22 29 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f omparison-table>")..;;;###autolo
444c0 61 64 0a 28 63 6c 2d 64 65 66 75 6e 20 67 70 74 65 6c 2d 6d 61 6b 65 2d 61 6e 74 68 72 6f 70 69 ad.(cl-defun.gptel-make-anthropi
444e0 63 0a 20 20 20 20 28 6e 61 6d 65 20 26 6b 65 79 20 63 75 72 6c 2d 61 72 67 73 20 73 74 72 65 61 c.....(name.&key.curl-args.strea
44500 6d 20 6b 65 79 20 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 0a 20 20 20 20 20 20 20 20 20 20 28 m.key.request-params...........(
44520 68 65 61 64 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 29 20 28 77 68 header............(lambda.().(wh
44540 65 6e 2d 6c 65 74 2a 20 28 28 6b 65 79 20 28 67 70 74 65 6c 2d 2d 67 65 74 2d 61 70 69 2d 6b 65 en-let*.((key.(gptel--get-api-ke
44560 79 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 60 28 28 22 78 2d 61 70 y)))....................`(("x-ap
44580 69 2d 6b 65 79 22 20 2e 20 2c 6b 65 79 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 i-key"...,key)..................
445a0 20 20 20 20 28 22 61 6e 74 68 72 6f 70 69 63 2d 76 65 72 73 69 6f 6e 22 20 2e 20 22 32 30 32 33 ....("anthropic-version"..."2023
445c0 2d 30 36 2d 30 31 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 22 -06-01")......................("
445e0 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 30 39 2d anthropic-beta"..."pdfs-2024-09-
44600 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 6e 74 68 25")......................("anth
44620 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 2d 32 30 ropic-beta"..."prompt-caching-20
44640 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 65 6c 73 24-07-31")))))...........(models
44660 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 20 20 20 .gptel--anthropic-models).......
44680 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 29 0a 20 ....(host."api.anthropic.com")..
446a0 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 20 20 20 .........(protocol."https").....
446c0 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 22 29 29 ......(endpoint."/v1/messages"))
446e0 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 2d 63 6f ..."Register.an.Anthropic.API-co
44700 6d 70 61 74 69 62 6c 65 20 62 61 63 6b 65 6e 64 20 66 6f 72 20 67 70 74 65 6c 20 77 69 74 68 20 mpatible.backend.for.gptel.with.
44720 4e 41 4d 45 2e 0a 0a 4b 65 79 77 6f 72 64 20 61 72 67 75 6d 65 6e 74 73 3a 0a 0a 43 55 52 4c 2d NAME...Keyword.arguments:..CURL-
44740 41 52 47 53 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 61 64 64 ARGS.(optional).is.a.list.of.add
44760 69 74 69 6f 6e 61 6c 20 43 75 72 6c 20 61 72 67 75 6d 65 6e 74 73 2e 0a 0a 48 4f 53 54 20 28 6f itional.Curl.arguments...HOST.(o
44780 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 70 69 2e ptional).is.the.API.host,.\"api.
447a0 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 4d 4f 44 anthropic.com\".by.default...MOD
447c0 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 64 65 6c ELS.is.a.list.of.available.model
447e0 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 6c 6c 79 .names,.as.symbols..Additionally
44800 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 4c 4d 20 ,.you.can.specify.supported.LLM.
44820 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 6f 6f 6c capabilities.like.vision.or.tool
44840 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 74 68 65 -use.by.appending.a.plist.to.the
44860 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 20 69 6e .model.with.more.information,.in
44880 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 73 74 29 .the.form...(model-name...plist)
448a0 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 6f 67 6e ..For.a.list.of.currently.recogn
448c0 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 61 6e 74 ized.plist.keys,.see.`gptel--ant
448e0 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 20 61 20 hropic-models'..An.example.of.a.
44900 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
44920 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.\\='
44940 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 20 20 20 (claude-3-haiku-20240307........
44960 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 2d 33 2d .......;Simple.specs...claude-3-
44980 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 6f 6e 6e opus-20240229...(claude-3-5-sonn
449a0 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 70 65 63 et-20240620...........;Full.spec
449c0 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 66 20 69 ....:description..\"Balance.of.i
449e0 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 61 70 61 ntelligence.and.speed\"....:capa
44a00 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 20 3a 6d bilities.(media.tool.json)....:m
44a20 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 5c 22 69 ime-types....(\"image/jpeg\".\"i
44a40 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 61 67 65 mage/png\".\"image/gif\".\"image
44a60 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 61 6e 20 /webp\")))..STREAM.is.a.boolean.
44a80 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 64 to.toggle.streaming.responses,.d
44aa0 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 74 efaults.to.false...PROTOCOL.(opt
44ac0 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 68 ional).specifies.the.protocol,.h
44ae0 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 69 ttps.by.default...ENDPOINT.(opti
44b00 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 6f onal).is.the.API.endpoint.for.co
44b20 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 73 mpletions,.defaults.to.\"/v1/mes
44b40 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 66 sages\"...HEADER.(optional).is.f
44b60 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
44b80 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 20 61 th.each.request...It.should.be.a
44ba0 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
44bc0 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 74 2d 54 s.an.alist,.like:..((\"Content-T
44be0 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 29 0a 0a ype\"...\"application/json\"))..
44c00 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 20 69 73 KEY.is.a.variable.whose.value.is
44c20 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 74 0a 72 .the.API.key,.or.function.that.r
44c40 65 74 75 72 6e 73 20 74 68 65 20 6b 65 79 2e 0a 0a 52 45 51 55 45 53 54 2d 50 41 52 41 4d 53 20 eturns.the.key...REQUEST-PARAMS.
44c60 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 61 20 70 6c 69 73 74 20 6f 66 20 61 64 64 69 74 69 6f (optional).is.a.plist.of.additio
44c80 6e 61 6c 20 48 54 54 50 20 72 65 71 75 65 73 74 0a 70 61 72 61 6d 65 74 65 72 73 20 28 61 73 20 nal.HTTP.request.parameters.(as.
44ca0 70 6c 69 73 74 20 6b 65 79 73 29 20 61 6e 64 20 76 61 6c 75 65 73 20 73 75 70 70 6f 72 74 65 64 plist.keys).and.values.supported
44cc0 20 62 79 20 74 68 65 20 41 50 49 2e 20 20 55 73 65 0a 74 68 65 73 65 20 74 6f 20 73 65 74 20 70 .by.the.API...Use.these.to.set.p
44ce0 61 72 61 6d 65 74 65 72 73 20 74 68 61 74 20 67 70 74 65 6c 20 64 6f 65 73 20 6e 6f 74 20 70 72 arameters.that.gptel.does.not.pr
44d00 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 6c ovide.user.options.for."...(decl
44d20 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 64 are.(indent.1))...(let.((backend
44d40 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 20 20 20 .(gptel--make-anthropic.........
44d60 20 20 20 20 20 20 20 20 20 20 3a 63 75 72 6c 2d 61 72 67 73 20 63 75 72 6c 2d 61 72 67 73 0a 20 ..........:curl-args.curl-args..
44d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6e 61 6d 65 20 6e 61 6d 65 0a 20 20 20 20 .................:name.name.....
44da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 68 6f 73 74 20 68 6f 73 74 0a 20 20 20 20 20 20 20 ..............:host.host........
44dc0 20 20 20 20 20 20 20 20 20 20 20 3a 68 65 61 64 65 72 20 68 65 61 64 65 72 0a 20 20 20 20 20 20 ...........:header.header.......
44de0 20 20 20 20 20 20 20 20 20 20 20 20 3a 6b 65 79 20 6b 65 79 0a 20 20 20 20 20 20 20 20 20 20 20 ............:key.key............
44e00 20 20 20 20 20 20 20 3a 6d 6f 64 65 6c 73 20 28 67 70 74 65 6c 2d 2d 70 72 6f 63 65 73 73 2d 6d .......:models.(gptel--process-m
44e20 6f 64 65 6c 73 20 6d 6f 64 65 6c 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 odels.models)...................
44e40 3a 70 72 6f 74 6f 63 6f 6c 20 70 72 6f 74 6f 63 6f 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 :protocol.protocol..............
44e60 20 20 20 20 20 3a 65 6e 64 70 6f 69 6e 74 20 65 6e 64 70 6f 69 6e 74 0a 20 20 20 20 20 20 20 20 .....:endpoint.endpoint.........
44e80 20 20 20 20 20 20 20 20 20 20 3a 73 74 72 65 61 6d 20 73 74 72 65 61 6d 0a 20 20 20 20 20 20 20 ..........:stream.stream........
44ea0 20 20 20 20 20 20 20 20 20 20 20 3a 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 20 72 65 71 75 65 ...........:request-params.reque
44ec0 73 74 2d 70 61 72 61 6d 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 75 72 6c st-params...................:url
44ee0 20 28 69 66 20 70 72 6f 74 6f 63 6f 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .(if.protocol...................
44f00 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 70 72 6f 74 6f 63 6f 6c 20 22 3a 2f 2f 22 20 .........(concat.protocol."://".
44f20 68 6f 73 74 20 65 6e 64 70 6f 69 6e 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 host.endpoint)..................
44f40 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 68 6f 73 74 20 65 6e 64 70 6f 69 6e 74 29 29 29 ........(concat.host.endpoint)))
44f60 29 29 0a 20 20 20 20 28 70 72 6f 67 31 20 62 61 63 6b 65 6e 64 0a 20 20 20 20 20 20 28 73 65 74 )).....(prog1.backend.......(set
44f80 66 20 28 61 6c 69 73 74 2d 67 65 74 20 6e 61 6d 65 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 62 f.(alist-get.name.gptel--known-b
44fa0 61 63 6b 65 6e 64 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e ackends........................n
44fc0 69 6c 20 6e 69 6c 20 23 27 65 71 75 61 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 il.nil.#'equal).................
44fe0 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 6c 2d 61 ..backend))))..(provide.'gptel-a
45000 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 2e 65 6c nthropic).;;;.gptel-anthropic.el
45020 20 65 6e 64 73 20 68 65 72 65 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ends.here......................
45040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
45060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
45080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
450a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
450c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
450e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
45100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
45120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
45140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
45160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
45180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
451a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
451c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
451e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
45200 67 70 74 65 6c 2d 30 2e 39 2e 38 2f 4c 49 43 45 4e 53 45 00 00 00 00 00 00 00 00 00 00 00 00 00 gptel-0.9.8/LICENSE.............
45220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
45240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
45260 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
45280 30 31 30 34 35 31 31 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 32 33 31 31 00 20 30 00 00 00 0104511.00000000000.012311..0...
452a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
452c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
452e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
45300 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...................
45320 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...................
45340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
45360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
45380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
453a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
453c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
453e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
45400 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.
45420 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..................
45440 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...
45460 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
45480 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
454a0 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
454c0 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
454e0 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
45500 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....
45520 20 20 20 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
45540 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
45560 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
45580 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
455a0 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
455c0 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
455e0 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
45600 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.
45620 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
45640 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
45660 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
45680 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
456a0 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
456c0 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
456e0 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
45700 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
45720 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
45740 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
45760 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
45780 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
457a0 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
457c0 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
457e0 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
45800 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
45820 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
45840 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
45860 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
45880 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
458a0 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.
458c0 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.
458e0 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
45900 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
45920 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
45940 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
45960 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
45980 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
459a0 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
459c0 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.
459e0 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
45a00 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
45a20 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
45a40 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
45a60 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
45a80 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
45aa0 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.
45ac0 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
45ae0 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
45b00 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
45b20 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
45b40 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
45b60 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
45b80 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
45ba0 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
45bc0 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
45be0 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).
45c00 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
45c20 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
45c40 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.
45c60 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
45c80 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
45ca0 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.
45cc0 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
45ce0 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.
45d00 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.
45d20 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
45d40 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
45d60 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
45d80 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
45da0 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
45dc0 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
45de0 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
45e00 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
45e20 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.
45e40 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
45e60 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
45e80 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
45ea0 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
45ec0 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
45ee0 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
45f00 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
45f20 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.
45f40 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
45f60 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..
45f80 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
45fa0 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
45fc0 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.
45fe0 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
46000 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
46020 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
46040 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
46060 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
46080 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
460a0 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
460c0 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
460e0 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
46100 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.
46120 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
46140 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
46160 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
46180 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
461a0 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
461c0 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
461e0 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
46200 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
46220 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........................
46240 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
46260 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
46280 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
462a0 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
462c0 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
462e0 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
46300 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
46320 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
46340 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
46360 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.
46380 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
463a0 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
463c0 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.
463e0 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
46400 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
46420 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
46440 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.
46460 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
46480 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
464a0 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.
464c0 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
464e0 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
46500 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
46520 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...
46540 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
46560 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
46580 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
465a0 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
465c0 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
465e0 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
46600 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
46620 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
46640 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
46660 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.
46680 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.
466a0 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.
466c0 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
466e0 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
46700 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.
46720 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
46740 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
46760 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
46780 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
467a0 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
467c0 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"
467e0 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.
46800 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
46820 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
46840 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,.
46860 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
46880 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
468a0 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
468c0 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
468e0 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
46900 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
46920 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
46940 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
46960 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,
46980 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
469a0 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
469c0 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.
469e0 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.
46a00 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
46a20 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
46a40 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..
46a60 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.
46a80 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
46aa0 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
46ac0 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.
46ae0 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
46b00 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
46b20 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.
46b40 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
46b60 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
46b80 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
46ba0 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
46bc0 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
46be0 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
46c00 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
46c20 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
46c40 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
46c60 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
46c80 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
46ca0 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
46cc0 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
46ce0 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
46d00 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
46d20 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
46d40 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
46d60 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
46d80 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
46da0 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
46dc0 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
46de0 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
46e00 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
46e20 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.
46e40 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
46e60 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,
46e80 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
46ea0 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.
46ec0 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
46ee0 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
46f00 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'
46f20 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
46f40 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
46f60 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
46f80 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.
46fa0 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
46fc0 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
46fe0 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
47000 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
47020 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,
47040 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.
47060 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
47080 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
470a0 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,.
470c0 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
470e0 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
47100 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
47120 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
47140 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
47160 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
47180 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.
471a0 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
471c0 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
471e0 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
47200 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.
47220 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
47240 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
47260 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,.
47280 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
472a0 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
472c0 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
472e0 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
47300 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
47320 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
47340 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
47360 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,.
47380 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
473a0 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
473c0 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
473e0 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
47400 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
47420 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
47440 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
47460 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.
47480 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
474a0 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
474c0 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
474e0 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
47500 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
47520 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
47540 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.
47560 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
47580 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
475a0 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
475c0 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
475e0 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
47600 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
47620 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
47640 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
47660 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.
47680 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
476a0 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
476c0 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
476e0 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
47700 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
47720 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
47740 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.
47760 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
47780 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
477a0 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
477c0 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
477e0 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
47800 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.
47820 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
47840 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
47860 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
47880 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
478a0 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
478c0 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
478e0 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
47900 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
47920 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
47940 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
47960 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
47980 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.
479a0 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.
479c0 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
479e0 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
47a00 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
47a20 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
47a40 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
47a60 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
47a80 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
47aa0 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
47ac0 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
47ae0 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
47b00 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
47b20 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
47b40 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
47b60 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
47b80 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
47ba0 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
47bc0 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
47be0 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
47c00 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.
47c20 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.
47c40 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
47c60 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
47c80 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.
47ca0 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
47cc0 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.
47ce0 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
47d00 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.
47d20 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
47d40 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
47d60 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
47d80 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.
47da0 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.
47dc0 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
47de0 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
47e00 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.
47e20 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).
47e40 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
47e60 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
47e80 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
47ea0 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.
47ec0 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
47ee0 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
47f00 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".
47f20 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
47f40 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
47f60 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
47f80 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
47fa0 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
47fc0 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
47fe0 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
48000 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
48020 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
48040 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
48060 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
48080 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,
480a0 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.
480c0 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
480e0 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
48100 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
48120 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
48140 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
48160 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
48180 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
481a0 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,.
481c0 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
481e0 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
48200 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
48220 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.
48240 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
48260 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
48280 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
482a0 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
482c0 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
482e0 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
48300 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.
48320 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.
48340 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
48360 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
48380 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
483a0 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
483c0 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
483e0 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
48400 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
48420 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
48440 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
48460 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
48480 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,.
484a0 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
484c0 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
484e0 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.
48500 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:..
48520 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
48540 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
48560 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
48580 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
485a0 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
485c0 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
485e0 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
48600 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
48620 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
48640 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
48660 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.
48680 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
486a0 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.
486c0 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....
486e0 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
48700 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
48720 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
48740 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
48760 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
48780 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
487a0 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
487c0 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
487e0 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
48800 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
48820 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.
48840 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
48860 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
48880 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
488a0 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
488c0 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
488e0 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
48900 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
48920 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
48940 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.
48960 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
48980 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
489a0 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
489c0 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.
489e0 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
48a00 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
48a20 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
48a40 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
48a60 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
48a80 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
48aa0 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.
48ac0 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....
48ae0 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
48b00 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...
48b20 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
48b40 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
48b60 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.
48b80 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
48ba0 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
48bc0 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.
48be0 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
48c00 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,.
48c20 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.
48c40 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
48c60 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.....
48c80 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
48ca0 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
48cc0 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.
48ce0 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..
48d00 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
48d20 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
48d40 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
48d60 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
48d80 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.
48da0 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.
48dc0 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.
48de0 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
48e00 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
48e20 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
48e40 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
48e60 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
48e80 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
48ea0 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
48ec0 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
48ee0 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
48f00 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
48f20 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
48f40 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
48f60 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
48f80 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
48fa0 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
48fc0 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
48fe0 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
49000 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.
49020 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
49040 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
49060 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
49080 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
490a0 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
490c0 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.
490e0 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
49100 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
49120 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
49140 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..
49160 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
49180 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
491a0 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
491c0 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,.
491e0 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
49200 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
49220 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
49240 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
49260 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
49280 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
492a0 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
492c0 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
492e0 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
49300 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
49320 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
49340 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.
49360 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
49380 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
493a0 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
493c0 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
493e0 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.
49400 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
49420 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
49440 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
49460 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
49480 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
494a0 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
494c0 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
494e0 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
49500 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
49520 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
49540 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
49560 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
49580 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
495a0 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
495c0 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
495e0 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
49600 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
49620 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
49640 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
49660 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
49680 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
496a0 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
496c0 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
496e0 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
49700 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
49720 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
49740 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.
49760 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
49780 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
497a0 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
497c0 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
497e0 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
49800 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
49820 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
49840 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
49860 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
49880 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
498a0 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
498c0 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
498e0 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
49900 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
49920 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
49940 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.
49960 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...
49980 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
499a0 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
499c0 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
499e0 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
49a00 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..
49a20 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.
49a40 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
49a60 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
49a80 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,.
49aa0 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
49ac0 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
49ae0 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
49b00 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.
49b20 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
49b40 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
49b60 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.
49b80 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
49ba0 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
49bc0 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
49be0 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
49c00 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
49c20 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.
49c40 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
49c60 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
49c80 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
49ca0 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
49cc0 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
49ce0 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
49d00 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
49d20 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
49d40 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.
49d60 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,
49d80 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
49da0 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.
49dc0 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
49de0 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.
49e00 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:.....
49e20 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
49e40 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.
49e60 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
49e80 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).
49ea0 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
49ec0 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.
49ee0 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.
49f00 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
49f20 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
49f40 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
49f60 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
49f80 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..
49fa0 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
49fc0 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
49fe0 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
4a000 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
4a020 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
4a040 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
4a060 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
4a080 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
4a0a0 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.
4a0c0 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,
4a0e0 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
4a100 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
4a120 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.
4a140 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.
4a160 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
4a180 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
4a1a0 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.
4a1c0 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
4a1e0 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
4a200 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...
4a220 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...
4a240 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
4a260 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
4a280 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
4a2a0 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
4a2c0 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
4a2e0 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
4a300 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
4a320 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.
4a340 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
4a360 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
4a380 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
4a3a0 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
4a3c0 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
4a3e0 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
4a400 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.
4a420 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
4a440 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.
4a460 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
4a480 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
4a4a0 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.
4a4c0 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
4a4e0 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,
4a500 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
4a520 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,.
4a540 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.
4a560 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
4a580 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
4a5a0 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
4a5c0 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.
4a5e0 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
4a600 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
4a620 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....
4a640 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
4a660 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
4a680 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.
4a6a0 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
4a6c0 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
4a6e0 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
4a700 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
4a720 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
4a740 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
4a760 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
4a780 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
4a7a0 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
4a7c0 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
4a7e0 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
4a800 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.
4a820 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
4a840 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
4a860 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
4a880 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
4a8a0 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
4a8c0 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.
4a8e0 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.
4a900 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
4a920 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
4a940 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.
4a960 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
4a980 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
4a9a0 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
4a9c0 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
4a9e0 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,.
4aa00 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
4aa20 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
4aa40 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.
4aa60 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
4aa80 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
4aaa0 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
4aac0 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
4aae0 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
4ab00 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
4ab20 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
4ab40 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
4ab60 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
4ab80 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.
4aba0 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
4abc0 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
4abe0 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
4ac00 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
4ac20 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
4ac40 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
4ac60 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
4ac80 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
4aca0 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
4acc0 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
4ace0 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
4ad00 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
4ad20 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
4ad40 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
4ad60 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
4ad80 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,.
4ada0 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.
4adc0 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
4ade0 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.
4ae00 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
4ae20 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
4ae40 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
4ae60 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,.
4ae80 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
4aea0 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.
4aec0 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
4aee0 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
4af00 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
4af20 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
4af40 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
4af60 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
4af80 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
4afa0 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
4afc0 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
4afe0 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
4b000 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
4b020 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
4b040 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
4b060 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
4b080 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
4b0a0 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
4b0c0 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
4b0e0 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
4b100 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
4b120 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
4b140 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
4b160 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.
4b180 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
4b1a0 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
4b1c0 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
4b1e0 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.
4b200 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
4b220 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.
4b240 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
4b260 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
4b280 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
4b2a0 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)
4b2c0 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.
4b2e0 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
4b300 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
4b320 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
4b340 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."
4b360 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
4b380 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
4b3a0 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
4b3c0 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.
4b3e0 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
4b400 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
4b420 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."
4b440 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
4b460 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
4b480 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
4b4a0 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
4b4c0 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
4b4e0 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
4b500 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
4b520 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,.
4b540 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
4b560 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
4b580 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.
4b5a0 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
4b5c0 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
4b5e0 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
4b600 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
4b620 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
4b640 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
4b660 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
4b680 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
4b6a0 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
4b6c0 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.
4b6e0 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,
4b700 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
4b720 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.
4b740 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
4b760 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
4b780 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
4b7a0 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
4b7c0 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.
4b7e0 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
4b800 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
4b820 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
4b840 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
4b860 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
4b880 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
4b8a0 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
4b8c0 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
4b8e0 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
4b900 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
4b920 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
4b940 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
4b960 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
4b980 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
4b9a0 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
4b9c0 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
4b9e0 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.
4ba00 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
4ba20 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
4ba40 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
4ba60 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
4ba80 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).
4baa0 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.
4bac0 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
4bae0 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
4bb00 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..."
4bb20 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
4bb40 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
4bb60 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
4bb80 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
4bba0 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
4bbc0 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
4bbe0 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
4bc00 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
4bc20 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
4bc40 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
4bc60 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
4bc80 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
4bca0 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
4bcc0 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
4bce0 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
4bd00 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
4bd20 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,
4bd40 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
4bd60 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
4bd80 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
4bda0 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
4bdc0 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
4bde0 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.
4be00 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
4be20 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
4be40 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
4be60 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
4be80 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.
4bea0 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
4bec0 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
4bee0 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.
4bf00 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
4bf20 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
4bf40 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
4bf60 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
4bf80 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
4bfa0 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.
4bfc0 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
4bfe0 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
4c000 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
4c020 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
4c040 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
4c060 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
4c080 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
4c0a0 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
4c0c0 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
4c0e0 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
4c100 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
4c120 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
4c140 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.
4c160 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
4c180 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
4c1a0 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
4c1c0 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
4c1e0 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
4c200 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
4c220 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
4c240 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
4c260 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
4c280 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
4c2a0 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
4c2c0 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
4c2e0 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
4c300 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
4c320 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
4c340 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
4c360 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
4c380 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
4c3a0 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.
4c3c0 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,
4c3e0 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
4c400 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
4c420 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
4c440 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.
4c460 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
4c480 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,
4c4a0 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.
4c4c0 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
4c4e0 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
4c500 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
4c520 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
4c540 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
4c560 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
4c580 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
4c5a0 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
4c5c0 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
4c5e0 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
4c600 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
4c620 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
4c640 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
4c660 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
4c680 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
4c6a0 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
4c6c0 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
4c6e0 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
4c700 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
4c720 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
4c740 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
4c760 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.
4c780 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.
4c7a0 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
4c7c0 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
4c7e0 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
4c800 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
4c820 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
4c840 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
4c860 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
4c880 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
4c8a0 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
4c8c0 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.
4c8e0 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
4c900 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"
4c920 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
4c940 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
4c960 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
4c980 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
4c9a0 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
4c9c0 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
4c9e0 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
4ca00 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
4ca20 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
4ca40 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
4ca60 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
4ca80 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
4caa0 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
4cac0 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.
4cae0 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
4cb00 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
4cb20 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
4cb40 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
4cb60 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.
4cb80 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
4cba0 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
4cbc0 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
4cbe0 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.
4cc00 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.
4cc20 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
4cc40 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.
4cc60 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,.
4cc80 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
4cca0 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
4ccc0 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
4cce0 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
4cd00 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
4cd20 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.
4cd40 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,
4cd60 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
4cd80 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
4cda0 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
4cdc0 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.
4cde0 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
4ce00 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.
4ce20 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
4ce40 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
4ce60 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...
4ce80 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...
4cea0 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
4cec0 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.
4cee0 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
4cf00 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
4cf20 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
4cf40 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
4cf60 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
4cf80 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
4cfa0 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.
4cfc0 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
4cfe0 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
4d000 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
4d020 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
4d040 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
4d060 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.
4d080 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
4d0a0 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
4d0c0 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.
4d0e0 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.....
4d100 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
4d120 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
4d140 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
4d160 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.
4d180 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
4d1a0 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
4d1c0 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
4d1e0 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
4d200 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
4d220 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
4d240 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
4d260 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
4d280 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.
4d2a0 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
4d2c0 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........
4d2e0 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
4d300 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
4d320 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
4d340 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
4d360 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.
4d380 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
4d3a0 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
4d3c0 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
4d3e0 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
4d400 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
4d420 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.
4d440 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
4d460 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.
4d480 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
4d4a0 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
4d4c0 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
4d4e0 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
4d500 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
4d520 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
4d540 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.(
4d560 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}.....
4d580 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:.
4d5a0 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
4d5c0 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.
4d5e0 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
4d600 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
4d620 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.
4d640 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
4d660 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.....
4d680 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
4d6a0 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
4d6c0 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;.
4d6e0 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
4d700 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
4d720 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
4d740 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
4d760 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
4d780 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.
4d7a0 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..
4d7c0 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.
4d7e0 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
4d800 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.
4d820 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
4d840 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
4d860 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,
4d880 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
4d8a0 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
4d8c0 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}..
4d8e0 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}
4d900 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
4d920 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
4d940 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
4d960 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
4d980 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
4d9a0 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
4d9c0 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
4d9e0 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
4da00 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
4da20 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
4da40 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
4da60 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
4da80 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
4daa0 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
4dac0 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
4dae0 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
4db00 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
4db20 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
4db40 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.
4db60 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.
4db80 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
4dba0 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
4dbc0 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
4dbe0 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
4dc00 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
4dc20 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.
4dc40 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
4dc60 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
4dc80 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
4dca0 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
4dcc0 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
4dce0 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
4dd00 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
4dd20 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
4dd40 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>.........................
4dd60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4dd80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4dda0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4ddc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4dde0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4de00 67 70 74 65 6c 2d 30 2e 39 2e 38 2f 67 70 74 65 6c 2d 70 6b 67 2e 65 6c 00 00 00 00 00 00 00 00 gptel-0.9.8/gptel-pkg.el........
4de20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4de40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4de60 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
4de80 30 30 30 30 37 35 31 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 33 35 32 31 00 20 30 00 00 00 0000751.00000000000.013521..0...
4dea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4dec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4dee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4df00 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...................
4df20 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...................
4df40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4df60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4df80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4dfa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4dfc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4dfe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4e000 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
4e020 20 66 72 6f 6d 20 67 70 74 65 6c 2e 65 6c 20 20 2d 2a 2d 20 6d 6f 64 65 3a 20 6c 69 73 70 2d 64 .from.gptel.el..-*-.mode:.lisp-d
4e040 61 74 61 3b 20 6e 6f 2d 62 79 74 65 2d 63 6f 6d 70 69 6c 65 3a 20 74 20 2d 2a 2d 0a 28 64 65 66 ata;.no-byte-compile:.t.-*-.(def
4e060 69 6e 65 2d 70 61 63 6b 61 67 65 20 22 67 70 74 65 6c 22 20 22 30 2e 39 2e 38 22 20 22 49 6e 74 ine-package."gptel"."0.9.8"."Int
4e080 65 72 61 63 74 20 77 69 74 68 20 43 68 61 74 47 50 54 20 6f 72 20 6f 74 68 65 72 20 4c 4c 4d 73 eract.with.ChatGPT.or.other.LLMs
4e0a0 22 20 27 28 28 65 6d 61 63 73 20 22 32 37 2e 31 22 29 20 28 74 72 61 6e 73 69 65 6e 74 20 22 30 ".'((emacs."27.1").(transient."0
4e0c0 2e 37 2e 34 22 29 20 28 63 6f 6d 70 61 74 20 22 32 39 2e 31 2e 34 2e 31 22 29 29 20 3a 63 6f 6d .7.4").(compat."29.1.4.1")).:com
4e0e0 6d 69 74 20 22 34 63 35 66 37 65 36 39 35 33 63 33 65 34 64 61 63 33 36 62 34 63 39 63 66 34 62 mit."4c5f7e6953c3e4dac36b4c9cf4b
4e100 34 61 32 63 38 35 34 66 65 62 66 61 64 22 20 3a 61 75 74 68 6f 72 73 20 27 28 28 22 4b 61 72 74 4a2c854febfad".:authors.'(("Kart
4e120 68 69 6b 20 43 68 69 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 hik.Chikmagalur"..."karthik.chik
4e140 6d 61 67 61 6c 75 72 40 67 6d 61 69 6c 2e 63 6f 6d 22 29 29 20 3a 6d 61 69 6e 74 61 69 6e 65 72 magalur@gmail.com")).:maintainer
4e160 20 27 28 22 4b 61 72 74 68 69 6b 20 43 68 69 6b 6d 61 67 61 6c 75 72 22 20 2e 20 22 6b 61 72 74 .'("Karthik.Chikmagalur"..."kart
4e180 68 69 6b 2e 63 68 69 6b 6d 61 67 61 6c 75 72 40 67 6d 61 69 6c 2e 63 6f 6d 22 29 20 3a 6b 65 79 hik.chikmagalur@gmail.com").:key
4e1a0 77 6f 72 64 73 20 27 28 22 63 6f 6e 76 65 6e 69 65 6e 63 65 22 20 22 74 6f 6f 6c 73 22 29 20 3a words.'("convenience"."tools").:
4e1c0 75 72 6c 20 22 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6b 61 72 74 68 69 6e 6b url."https://github.com/karthink
4e1e0 2f 67 70 74 65 6c 22 29 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 /gptel")........................
4e200 67 70 74 65 6c 2d 30 2e 39 2e 38 2f 67 70 74 65 6c 2d 67 65 6d 69 6e 69 2e 65 6c 00 00 00 00 00 gptel-0.9.8/gptel-gemini.el.....
4e220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4e240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4e260 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
4e280 30 30 35 32 30 33 36 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 34 32 31 33 00 20 30 00 00 00 0052036.00000000000.014213..0...
4e2a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4e2c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4e2e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4e300 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...................
4e320 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...................
4e340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4e360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4e380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4e3a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4e3c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4e3e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4e400 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.
4e420 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-
4e440 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
4e460 29 20 32 30 32 33 20 20 4b 61 72 74 68 69 6b 20 43 68 69 6b 6d 61 67 61 6c 75 72 0a 0a 3b 3b 20 ).2023..Karthik.Chikmagalur..;;.
4e480 41 75 74 68 6f 72 3a 20 4b 61 72 74 68 69 6b 20 43 68 69 6b 6d 61 67 61 6c 75 72 20 3c 6b 61 72 Author:.Karthik.Chikmagalur.<kar
4e4a0 74 68 69 6b 63 68 69 6b 6d 61 67 61 6c 75 72 40 67 6d 61 69 6c 2e 63 6f 6d 3e 0a 0a 3b 3b 20 54 thikchikmagalur@gmail.com>..;;.T
4e4c0 68 69 73 20 70 72 6f 67 72 61 6d 20 69 73 20 66 72 65 65 20 73 6f 66 74 77 61 72 65 3b 20 79 6f his.program.is.free.software;.yo
4e4e0 75 20 63 61 6e 20 72 65 64 69 73 74 72 69 62 75 74 65 20 69 74 20 61 6e 64 2f 6f 72 20 6d 6f 64 u.can.redistribute.it.and/or.mod
4e500 69 66 79 0a 3b 3b 20 69 74 20 75 6e 64 65 72 20 74 68 65 20 74 65 72 6d 73 20 6f 66 20 74 68 65 ify.;;.it.under.the.terms.of.the
4e520 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 61 73 20 70 .GNU.General.Public.License.as.p
4e540 75 62 6c 69 73 68 65 64 20 62 79 0a 3b 3b 20 74 68 65 20 46 72 65 65 20 53 6f 66 74 77 61 72 65 ublished.by.;;.the.Free.Software
4e560 20 46 6f 75 6e 64 61 74 69 6f 6e 2c 20 65 69 74 68 65 72 20 76 65 72 73 69 6f 6e 20 33 20 6f 66 .Foundation,.either.version.3.of
4e580 20 74 68 65 20 4c 69 63 65 6e 73 65 2c 20 6f 72 0a 3b 3b 20 28 61 74 20 79 6f 75 72 20 6f 70 74 .the.License,.or.;;.(at.your.opt
4e5a0 69 6f 6e 29 20 61 6e 79 20 6c 61 74 65 72 20 76 65 72 73 69 6f 6e 2e 0a 0a 3b 3b 20 54 68 69 73 ion).any.later.version...;;.This
4e5c0 20 70 72 6f 67 72 61 6d 20 69 73 20 64 69 73 74 72 69 62 75 74 65 64 20 69 6e 20 74 68 65 20 68 .program.is.distributed.in.the.h
4e5e0 6f 70 65 20 74 68 61 74 20 69 74 20 77 69 6c 6c 20 62 65 20 75 73 65 66 75 6c 2c 0a 3b 3b 20 62 ope.that.it.will.be.useful,.;;.b
4e600 75 74 20 57 49 54 48 4f 55 54 20 41 4e 59 20 57 41 52 52 41 4e 54 59 3b 20 77 69 74 68 6f 75 74 ut.WITHOUT.ANY.WARRANTY;.without
4e620 20 65 76 65 6e 20 74 68 65 20 69 6d 70 6c 69 65 64 20 77 61 72 72 61 6e 74 79 20 6f 66 0a 3b 3b .even.the.implied.warranty.of.;;
4e640 20 4d 45 52 43 48 41 4e 54 41 42 49 4c 49 54 59 20 6f 72 20 46 49 54 4e 45 53 53 20 46 4f 52 20 .MERCHANTABILITY.or.FITNESS.FOR.
4e660 41 20 50 41 52 54 49 43 55 4c 41 52 20 50 55 52 50 4f 53 45 2e 20 20 53 65 65 20 74 68 65 0a 3b A.PARTICULAR.PURPOSE...See.the.;
4e680 3b 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 66 6f 72 ;.GNU.General.Public.License.for
4e6a0 20 6d 6f 72 65 20 64 65 74 61 69 6c 73 2e 0a 0a 3b 3b 20 59 6f 75 20 73 68 6f 75 6c 64 20 68 61 .more.details...;;.You.should.ha
4e6c0 76 65 20 72 65 63 65 69 76 65 64 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20 47 4e 55 20 47 65 ve.received.a.copy.of.the.GNU.Ge
4e6e0 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 0a 3b 3b 20 61 6c 6f 6e 67 20 77 69 neral.Public.License.;;.along.wi
4e700 74 68 20 74 68 69 73 20 70 72 6f 67 72 61 6d 2e 20 20 49 66 20 6e 6f 74 2c 20 73 65 65 20 3c 68 th.this.program...If.not,.see.<h
4e720 74 74 70 73 3a 2f 2f 77 77 77 2e 67 6e 75 2e 6f 72 67 2f 6c 69 63 65 6e 73 65 73 2f 3e 2e 0a 0a ttps://www.gnu.org/licenses/>...
4e740 3b 3b 3b 20 43 6f 6d 6d 65 6e 74 61 72 79 3a 0a 0a 3b 3b 20 54 68 69 73 20 66 69 6c 65 20 61 64 ;;;.Commentary:..;;.This.file.ad
4e760 64 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20 74 68 65 20 47 65 6d 69 6e 69 20 41 50 49 20 74 6f ds.support.for.the.Gemini.API.to
4e780 20 67 70 74 65 6c 0a 0a 3b 3b 3b 20 43 6f 64 65 3a 0a 28 72 65 71 75 69 72 65 20 27 67 70 74 65 .gptel..;;;.Code:.(require.'gpte
4e7a0 6c 29 0a 28 72 65 71 75 69 72 65 20 27 63 6c 2d 67 65 6e 65 72 69 63 29 0a 28 72 65 71 75 69 72 l).(require.'cl-generic).(requir
4e7c0 65 20 27 6d 61 70 29 0a 28 65 76 61 6c 2d 77 68 65 6e 2d 63 6f 6d 70 69 6c 65 20 28 72 65 71 75 e.'map).(eval-when-compile.(requ
4e7e0 69 72 65 20 27 63 6c 2d 6c 69 62 29 29 0a 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e ire.'cl-lib))..(declare-function
4e800 20 70 72 6f 70 2d 6d 61 74 63 68 2d 76 61 6c 75 65 20 22 74 65 78 74 2d 70 72 6f 70 65 72 74 79 .prop-match-value."text-property
4e820 2d 73 65 61 72 63 68 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 74 65 78 74 -search").(declare-function.text
4e840 2d 70 72 6f 70 65 72 74 79 2d 73 65 61 72 63 68 2d 62 61 63 6b 77 61 72 64 20 22 74 65 78 74 2d -property-search-backward."text-
4e860 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
4e880 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 61 72 65 2d 66 ion.json-read."json").(declare-f
4e8a0 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 70 74 unction.gptel-context--wrap."gpt
4e8c0 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 20 67 el-context").(declare-function.g
4e8e0 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 70 74 ptel-context--collect-media."gpt
4e900 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 62 6a 65 63 74 el-context").(defvar.json-object
4e920 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 74 72 75 63 74 -type)..;;;.Gemini.(cl-defstruct
4e940 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 75 63 74 6f 72 .....(gptel-gemini.(:constructor
4e960 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 20 20 20 20 20 .gptel--make-gemini)............
4e980 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)............
4e9a0 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))
4e9c0 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 6e 20 74 68 65 )..;;.TODO:.Using.alt=sse.in.the
4e9e0 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 6e 41 49 20 73 .query.url.generates.an.OpenAI.s
4ea00 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 20 77 69 74 68 tyle.streaming.;;.response,.with
4ea20 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 61 79 62 65 20 .more.immediate.updates...Maybe.
4ea40 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 64 0a 3b 3b 20 we.should.switch.to.that.and.;;.
4ea60 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 28 63 6c 2d 64 rewrite.the.stream.parser?.(cl-d
4ea80 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
4eaa0 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 69 6e 66 6f 29 m.((_backend.gptel-gemini).info)
4eac0 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 65 61 6d 2e 0a ..."Parse.a.Gemini.data.stream..
4eae0 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 63 63 75 6d 75 .Return.the.text.response.accumu
4eb00 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 6f 20 74 68 69 lated.since.the.last.call.to.thi
4eb20 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 6d 75 74 61 74 s.function...Additionally,.mutat
4eb40 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 65 0a 69 6e 66 e.state.INFO.to.add.tool-use.inf
4eb60 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 61 69 6e 73 20 ormation.if.the.stream.contains.
4eb80 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 29 29 0a 20 20 it."...(let*.((content-strs))...
4eba0 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 28 77 ..(condition-case.nil.........(w
4ebc0 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 20 22 7b 22 20 hile.(prog1.(search-forward."{".
4ebe0 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 20 32 39 2e 31 nil.t).;.while-let.is.Emacs.29.1
4ec00 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 63 6b 77 61 72 +.only..................(backwar
4ec20 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 6d 61 74 63 68 d-char.1))...........(save-match
4ec40 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 2a 20 28 28 72 -data.............(when-let*.((r
4ec60 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 0a 20 20 20 20 esponse.(gptel--json-read)).....
4ec80 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 67 70 74 65 6c ....................(text.(gptel
4eca0 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 20 20 20 --parse-response................
4ecc0 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.
4ece0 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 20 20 20 20 20 :backend).......................
4ed00 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 6c 75 64 65 29 .........response.info.'include)
4ed20 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 20 63 6f 6e 74 ))...............(push.text.cont
4ed40 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 20 20 20 20 20 ent-strs)))).......(error.......
4ed60 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 6d 61 74 63 68 2d 62 65 67 69 6e 6e 69 6e 67 20 30 29 29 .(goto-char.(match-beginning.0))
4ed80 29 29 0a 20 20 20 20 28 61 70 70 6c 79 20 23 27 63 6f 6e 63 61 74 20 28 6e 72 65 76 65 72 73 65 )).....(apply.#'concat.(nreverse
4eda0 20 63 6f 6e 74 65 6e 74 2d 73 74 72 73 29 29 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 .content-strs))))..(cl-defmethod
4edc0 20 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 72 65 73 70 6f 6e 73 65 20 28 28 5f 62 61 63 6b 65 6e .gptel--parse-response.((_backen
4ede0 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 66 6f 0a 20 20 d.gptel-gemini).response.info...
4ee00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
4ee20 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 20 20 22 50 61 ...&optional.include-text)..."Pa
4ee40 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 67 29 20 52 45 rse.an.Gemini.(non-streaming).RE
4ee60 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 74 2e SPONSE.and.return.response.text.
4ee80 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 6e 73 ..Mutate.state.INFO.with.respons
4eea0 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 54 20 69 73 20 e.metadata...If.INCLUDE-TEXT.is.
4eec0 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 65 78 74 20 69 non-nil,.include.response.text.i
4eee0 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 2a 20 28 28 63 n.the.prompts.list."...(let*.((c
4ef00 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 73 65 20 27 28 and0.(map-nested-elt.response.'(
4ef20 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 70 61 72 74 73 :candidates.0)))..........(parts
4ef40 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 6f 6e 74 65 6e .(map-nested-elt.cand0.'(:conten
4ef60 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 20 69 6e 66 6f t.:parts)))).....(plist-put.info
4ef80 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 6e 64 30 20 3a .:stop-reason.(plist-get.cand0.:
4efa0 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 75 74 20 69 6e finishReason)).....(plist-put.in
4efc0 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 20 20 20 20 20 fo.:output-tokens...............
4efe0 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 20 20 20 20 20 .(map-nested-elt................
4f000 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 3a 63 61 6e 64 .response.'(:usageMetadata.:cand
4f020 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 2d 6c 6f 6f 70 idatesTokenCount))).....(cl-loop
4f040 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 0a 20 20 20 20 ......for.part.across.parts.....
4f060 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 74 65 78 74 29 .for.tx.=.(plist-get.part.:text)
4f080 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 78 20 3a 6e 75 ......if.(and.tx.(not.(eq.tx.:nu
4f0a0 6c 6c 29 29 29 20 63 6f 6c 6c 65 63 74 20 74 78 20 69 6e 74 6f 20 63 6f 6e 74 65 6e 74 2d 73 74 ll))).collect.tx.into.content-st
4f0c0 72 73 0a 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 70 6c 69 73 74 2d 67 65 74 20 70 61 72 74 20 rs......else.if.(plist-get.part.
4f0e0 3a 66 75 6e 63 74 69 6f 6e 43 61 6c 6c 29 0a 20 20 20 20 20 63 6f 6c 6c 65 63 74 20 28 63 6f 70 :functionCall)......collect.(cop
4f100 79 2d 73 65 71 75 65 6e 63 65 20 69 74 29 20 69 6e 74 6f 20 74 6f 6f 6c 2d 75 73 65 0a 20 20 20 y-sequence.it).into.tool-use....
4f120 20 20 66 69 6e 61 6c 6c 79 20 64 6f 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..finally.do....................
4f140 20 20 20 20 20 3b 41 64 64 20 74 65 78 74 20 61 6e 64 20 74 6f 6f 6c 2d 63 61 6c 6c 73 20 74 6f .....;Add.text.and.tool-calls.to
4f160 20 70 72 6f 6d 70 74 73 20 6c 69 73 74 0a 20 20 20 20 20 28 77 68 65 6e 20 28 6f 72 20 74 6f 6f .prompts.list......(when.(or.too
4f180 6c 2d 75 73 65 20 69 6e 63 6c 75 64 65 2d 74 65 78 74 29 0a 20 20 20 20 20 20 20 28 6c 65 74 2a l-use.include-text)........(let*
4f1a0 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 29 29 0a .((data.(plist-get.info.:data)).
4f1c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 6d 70 74 73 20 28 70 6c 69 73 74 2d 67 65 ..............(prompts.(plist-ge
4f1e0 74 20 64 61 74 61 20 3a 63 6f 6e 74 65 6e 74 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 t.data.:contents))..............
4f200 20 28 6c 61 73 74 2d 70 72 6f 6d 70 74 20 28 61 72 65 66 20 70 72 6f 6d 70 74 73 20 28 31 2d 20 .(last-prompt.(aref.prompts.(1-.
4f220 28 6c 65 6e 67 74 68 20 70 72 6f 6d 70 74 73 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 69 (length.prompts)))))..........(i
4f240 66 20 28 65 71 75 61 6c 20 28 70 6c 69 73 74 2d 67 65 74 20 6c 61 73 74 2d 70 72 6f 6d 70 74 20 f.(equal.(plist-get.last-prompt.
4f260 3a 72 6f 6c 65 29 20 22 6d 6f 64 65 6c 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 :role)."model")..............;;.
4f280 57 68 65 6e 20 73 74 72 65 61 6d 69 6e 67 2c 20 74 68 65 20 6c 61 73 74 20 70 72 6f 6d 70 74 20 When.streaming,.the.last.prompt.
4f2a0 6d 61 79 20 61 6c 72 65 61 64 79 20 68 61 76 65 20 74 68 65 20 72 6f 6c 65 0a 20 20 20 20 20 20 may.already.have.the.role.......
4f2c0 20 20 20 20 20 20 20 3b 3b 20 22 6d 6f 64 65 6c 22 20 66 72 6f 6d 20 70 72 69 6f 72 20 63 61 6c .......;;."model".from.prior.cal
4f2e0 6c 73 20 74 6f 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 2e 20 20 41 70 70 65 6e 64 20 74 6f 20 ls.to.this.function...Append.to.
4f300 69 74 73 20 70 61 72 74 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 69 6e 73 74 65 61 its.parts..............;;.instea
4f320 64 20 6f 66 20 61 64 64 69 6e 67 20 61 20 6e 65 77 20 6d 6f 64 65 6c 20 72 6f 6c 65 20 74 68 65 d.of.adding.a.new.model.role.the
4f340 6e 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 6c 61 73 74 2d n...............(plist-put.last-
4f360 70 72 6f 6d 70 74 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 prompt.:parts...................
4f380 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 6c 61 73 74 2d 70 ......(vconcat.(plist-get.last-p
4f3a0 72 6f 6d 70 74 20 3a 70 61 72 74 73 29 20 70 61 72 74 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 rompt.:parts).parts))...........
4f3c0 20 28 70 6c 69 73 74 2d 70 75 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 6f .(plist-put...................;o
4f3e0 74 68 65 72 77 69 73 65 20 63 72 65 61 74 65 20 61 20 6e 65 77 20 22 6d 6f 64 65 6c 22 20 72 6f therwise.create.a.new."model".ro
4f400 6c 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 20 3a 63 6f 6e 74 65 6e 74 73 0a 20 20 le.............data.:contents...
4f420 20 20 20 20 20 20 20 20 20 20 28 76 63 6f 6e 63 61 74 20 70 72 6f 6d 70 74 73 20 60 28 28 3a 72 ..........(vconcat.prompts.`((:r
4f440 6f 6c 65 20 22 6d 6f 64 65 6c 22 20 3a 70 61 72 74 73 20 2c 70 61 72 74 73 29 29 29 29 29 29 29 ole."model".:parts.,parts)))))))
4f460 0a 20 20 20 20 20 28 77 68 65 6e 20 74 6f 6f 6c 2d 75 73 65 20 20 20 20 20 20 20 20 20 20 20 20 ......(when.tool-use............
4f480 20 20 20 20 20 20 20 20 3b 43 61 70 74 75 72 65 20 74 6f 6f 6c 20 63 61 6c 6c 20 64 61 74 61 20 ........;Capture.tool.call.data.
4f4a0 66 6f 72 20 72 75 6e 6e 69 6e 67 20 74 6f 6f 6c 73 0a 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d for.running.tools........(plist-
4f4c0 70 75 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 put.info.:tool-use..............
4f4e0 20 20 20 20 20 28 6e 63 6f 6e 63 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 74 6f 6f .....(nconc.(plist-get.info.:too
4f500 6c 2d 75 73 65 29 20 74 6f 6f 6c 2d 75 73 65 29 29 29 0a 20 20 20 20 20 66 69 6e 61 6c 6c 79 20 l-use).tool-use)))......finally.
4f520 72 65 74 75 72 6e 0a 20 20 20 20 20 28 61 6e 64 20 63 6f 6e 74 65 6e 74 2d 73 74 72 73 20 28 61 return......(and.content-strs.(a
4f540 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 73 29 29 29 29 29 0a pply.#'concat.content-strs))))).
4f560 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 61 .(cl-defmethod.gptel--request-da
4f580 74 61 20 28 28 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 67 65 6d 69 6e 69 29 20 70 72 6f 6d 70 ta.((backend.gptel-gemini).promp
4f5a0 74 73 29 0a 20 20 22 4a 53 4f 4e 20 65 6e 63 6f 64 65 20 50 52 4f 4d 50 54 53 20 66 6f 72 20 73 ts)..."JSON.encode.PROMPTS.for.s
4f5c0 65 6e 64 69 6e 67 20 74 6f 20 47 65 6d 69 6e 69 2e 22 0a 20 20 28 6c 65 74 20 28 28 70 72 6f 6d ending.to.Gemini."...(let.((prom
4f5e0 70 74 73 2d 70 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 60 28 3a 63 6f 6e 74 65 6e 74 73 20 5b pts-plist..........`(:contents.[
4f600 2c 40 70 72 6f 6d 70 74 73 5d 0a 20 20 20 20 20 20 20 20 20 20 20 3a 73 61 66 65 74 79 53 65 74 ,@prompts]............:safetySet
4f620 74 69 6e 67 73 20 5b 28 3a 63 61 74 65 67 6f 72 79 20 22 48 41 52 4d 5f 43 41 54 45 47 4f 52 59 tings.[(:category."HARM_CATEGORY
4f640 5f 48 41 52 41 53 53 4d 45 4e 54 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 _HARASSMENT"....................
4f660 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 4e 4f 4e 45 ..........:threshold."BLOCK_NONE
4f680 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 28 ").............................(
4f6a0 3a 63 61 74 65 67 6f 72 79 20 22 48 41 52 4d 5f 43 41 54 45 47 4f 52 59 5f 53 45 58 55 41 4c 4c :category."HARM_CATEGORY_SEXUALL
4f6c0 59 5f 45 58 50 4c 49 43 49 54 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 Y_EXPLICIT".....................
4f6e0 20 20 20 20 20 20 20 20 20 3a 74 68 72 65 73 68 6f 6c 64 20 22 42 4c 4f 43 4b 5f 4e 4f 4e 45 22 .........:threshold."BLOCK_NONE"
4f700 29 0a 20 20 20 20 20 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 ).............................(:
4f720 63 61 74 65 67 6f 72 79 20 22 48 41 52 4d 5f 43 41 54 45 47 4f 52 59 5f 44 41 4e 47 45 52 4f 55 category."HARM_CATEGORY_DANGEROU
4f740 53 5f 43 4f 4e 54 45 4e 54 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 S_CONTENT"......................
4f760 20 20 20 20 20 20 20 20 3a 74 68 72 65 73 68 6f 6c 64 20 22 42 4c 4f 43 4b 5f 4e 4f 4e 45 22 29 ........:threshold."BLOCK_NONE")
4f780 0a 20 20 20 20 20 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
4f7a0 61 74 65 67 6f 72 79 20 22 48 41 52 4d 5f 43 41 54 45 47 4f 52 59 5f 48 41 54 45 5f 53 50 45 45 ategory."HARM_CATEGORY_HATE_SPEE
4f7c0 43 48 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 CH".............................
4f7e0 20 3a 74 68 72 65 73 68 6f 6c 64 20 22 42 4c 4f 43 4b 5f 4e 4f 4e 45 22 29 5d 29 29 0a 20 20 20 .:threshold."BLOCK_NONE")]))....
4f800 20 20 20 20 20 70 61 72 61 6d 73 29 0a 20 20 20 20 28 69 66 20 67 70 74 65 6c 2d 2d 73 79 73 74 .....params).....(if.gptel--syst
4f820 65 6d 2d 6d 65 73 73 61 67 65 0a 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 70 72 em-message.........(plist-put.pr
4f840 6f 6d 70 74 73 2d 70 6c 69 73 74 20 3a 73 79 73 74 65 6d 5f 69 6e 73 74 72 75 63 74 69 6f 6e 0a ompts-plist.:system_instruction.
4f860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 60 28 3a 70 61 72 74 73 20 28 3a 74 65 ...................`(:parts.(:te
4f880 78 74 20 2c 67 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 xt.,gptel--system-message))))...
4f8a0 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 75 73 65 2d 74 6f 6f 6c 73 0a 20 20 20 20 20 20 28 77 ..(when.gptel-use-tools.......(w
4f8c0 68 65 6e 20 28 65 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 0a hen.(eq.gptel-use-tools.'force).
4f8e0 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 70 72 6f 6d 70 74 73 2d 70 6c 69 73 74 ........(plist-put.prompts-plist
4f900 20 3a 74 6f 6f 6c 5f 63 6f 6e 66 69 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .:tool_config...................
4f920 20 27 28 3a 66 75 6e 63 74 69 6f 6e 5f 63 61 6c 6c 69 6e 67 5f 63 6f 6e 66 69 67 20 28 3a 6d 6f .'(:function_calling_config.(:mo
4f940 64 65 20 22 41 4e 59 22 29 29 29 29 0a 20 20 20 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 74 de."ANY")))).......(when.gptel-t
4f960 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 74 73 2d ools.........(plist-put.prompts-
4f980 70 6c 69 73 74 20 3a 74 6f 6f 6c 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 plist.:tools....................
4f9a0 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 70 74 65 (gptel--parse-tools.backend.gpte
4f9c0 6c 2d 74 6f 6f 6c 73 29 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 74 65 6d 70 l-tools)))).....(when.gptel-temp
4f9e0 65 72 61 74 75 72 65 0a 20 20 20 20 20 20 28 73 65 74 71 20 70 61 72 61 6d 73 0a 20 20 20 20 20 erature.......(setq.params......
4fa00 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 70 61 72 61 6d 73 0a 20 20 20 20 20 20 20 .......(plist-put.params........
4fa20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 74 65 6d 70 65 72 61 74 75 72 65 20 28 6d 61 ................:temperature.(ma
4fa40 78 20 67 70 74 65 6c 2d 74 65 6d 70 65 72 61 74 75 72 65 20 31 2e 30 29 29 29 29 0a 20 20 20 20 x.gptel-temperature.1.0)))).....
4fa60 28 77 68 65 6e 20 67 70 74 65 6c 2d 6d 61 78 2d 74 6f 6b 65 6e 73 0a 20 20 20 20 20 20 28 73 65 (when.gptel-max-tokens.......(se
4fa80 74 71 20 70 61 72 61 6d 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 tq.params.............(plist-put
4faa0 20 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 20 20 20 20 20 3a .params........................:
4fac0 6d 61 78 4f 75 74 70 75 74 54 6f 6b 65 6e 73 20 67 70 74 65 6c 2d 6d 61 78 2d 74 6f 6b 65 6e 73 maxOutputTokens.gptel-max-tokens
4fae0 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 70 61 72 61 6d 73 0a 20 20 20 20 20 20 28 70 6c 69 73 ))).....(when.params.......(plis
4fb00 74 2d 70 75 74 20 70 72 6f 6d 70 74 73 2d 70 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 t-put.prompts-plist.............
4fb20 20 20 20 20 20 3a 67 65 6e 65 72 61 74 69 6f 6e 43 6f 6e 66 69 67 20 70 61 72 61 6d 73 29 29 0a .....:generationConfig.params)).
4fb40 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 77 69 74 68 ....;;.Merge.request.params.with
4fb60 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 20 20 20 28 .model.and.backend.params......(
4fb80 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 6d 70 74 73 gptel--merge-plists......prompts
4fba0 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 65 71 75 65 -plist......(gptel-backend-reque
4fbc0 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 20 20 28 67 st-params.gptel-backend)......(g
4fbe0 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 67 70 74 65 ptel--model-request-params..gpte
4fc00 6c 2d 6d 6f 64 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 l-model))))..(cl-defmethod.gptel
4fc20 2d 2d 70 61 72 73 65 2d 74 6f 6f 6c 73 20 28 28 5f 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 67 --parse-tools.((_backend.gptel-g
4fc40 65 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 emini).tools)..."Parse.TOOLS.to.
4fc60 74 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 the.Gemini.API.tool.definition.s
4fc80 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 2d pec...TOOLS.is.a.list.of.`gptel-
4fca0 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 63 6c tool'.structs,.which.see."...(cl
4fcc0 2d 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 -loop....for.tool.in.(ensure-lis
4fce0 74 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 t.tools)....collect....(list....
4fd00 20 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 .:name.(gptel-tool-name.tool)...
4fd20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 28 67 70 74 65 6c 2d 74 6f 6f 6c 2d 64 65 73 63 72 ..:description.(gptel-tool-descr
4fd40 69 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 iption.tool).....:parameters....
4fd60 20 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 .(if.(not.(gptel-tool-args.tool)
4fd80 29 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 )..........:null...........;NOTE
4fda0 3a 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 :.Gemini.wants.:null.if.the.func
4fdc0 74 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 tion.takes.no.args.......(list.:
4fde0 74 79 70 65 20 22 6f 62 6a 65 63 74 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 70 72 6f 70 65 type."object".............:prope
4fe00 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 70 0a 20 20 20 20 20 rties.............(cl-loop......
4fe20 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 6c 2d 61 ........for.arg.in.(gptel-tool-a
4fe40 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 72 20 6e 61 6d 65 20 rgs.tool)..............for.name.
4fe60 3d 20 28 70 6c 69 73 74 2d 67 65 74 20 61 72 67 20 3a 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 =.(plist-get.arg.:name).........
4fe80 20 20 20 20 20 66 6f 72 20 74 79 70 65 20 3d 20 28 70 6c 69 73 74 2d 67 65 74 20 61 72 67 20 3a .....for.type.=.(plist-get.arg.:
4fea0 74 79 70 65 29 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 type)..............for.newname.=
4fec0 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 6d 65 29 0a .(or.(and.(keywordp.name).name).
4fee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 ...............................(
4ff00 6d 61 6b 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 make-symbol.(concat.":".name))).
4ff20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 65 6e 75 6d 20 3d 20 28 70 6c 69 73 74 2d 67 .............for.enum.=.(plist-g
4ff40 65 74 20 61 72 67 20 3a 65 6e 75 6d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 61 70 70 65 6e et.arg.:enum)..............appen
4ff60 64 20 28 6c 69 73 74 20 6e 65 77 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 d.(list.newname.................
4ff80 20 20 20 20 20 20 20 20 20 20 60 28 3a 74 79 70 65 20 2c 28 70 6c 69 73 74 2d 67 65 74 20 61 72 ..........`(:type.,(plist-get.ar
4ffa0 67 20 3a 74 79 70 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 g.:type)........................
4ffc0 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 2c 28 70 6c 69 73 74 2d 67 65 74 20 61 72 .....:description.,(plist-get.ar
4ffe0 67 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 g.:description).................
50000 20 20 20 20 20 20 20 20 20 20 20 20 2c 40 28 69 66 20 65 6e 75 6d 20 28 6c 69 73 74 20 3a 65 6e ............,@(if.enum.(list.:en
50020 75 6d 20 28 76 63 6f 6e 63 61 74 20 65 6e 75 6d 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 um.(vconcat.enum))).............
50040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2c 40 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 ................,@(cond.........
50060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 65 71 75 61 6c 20 74 .......................((equal.t
50080 79 70 65 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 20 20 20 20 ype."object")...................
500a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 3a 70 61 72 61 6d 65 74 65 72 73 20 ..............(list.:parameters.
500c0 28 70 6c 69 73 74 2d 67 65 74 20 61 72 67 20 3a 70 61 72 61 6d 65 74 65 72 73 29 29 29 0a 20 20 (plist-get.arg.:parameters)))...
500e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 65 .............................((e
50100 71 75 61 6c 20 74 79 70 65 20 22 61 72 72 61 79 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 qual.type."array")..............
50120 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 69 74 65 6d 73 20 ...................(list.:items.
50140 28 70 6c 69 73 74 2d 67 65 74 20 61 72 67 20 3a 69 74 65 6d 73 29 29 29 29 29 29 29 0a 20 20 20 (plist-get.arg.:items)))))))....
50160 20 20 20 20 20 20 20 20 20 3a 72 65 71 75 69 72 65 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 .........:required.............(
50180 76 63 6f 6e 63 61 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 65 6c 71 20 6e 69 6c 20 28 vconcat..............(delq.nil.(
501a0 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 20 20 20 20 28 mapcar.........................(
501c0 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 69 73 74 2d 67 65 lambda.(arg).(and.(not.(plist-ge
501e0 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 20 20 20 20 20 20 t.arg.:optional))...............
50200 20 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
50220 65 74 20 61 72 67 20 3a 6e 61 6d 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 et.arg.:name))).................
50240 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 6c 29 29 29 ........(gptel-tool-args.tool)))
50260 29 29 29 29 0a 20 20 20 69 6e 74 6f 20 74 6f 6f 6c 2d 73 70 65 63 73 0a 20 20 20 66 69 6e 61 6c ))))....into.tool-specs....final
50280 6c 79 20 72 65 74 75 72 6e 20 60 5b 28 3a 66 75 6e 63 74 69 6f 6e 5f 64 65 63 6c 61 72 61 74 69 ly.return.`[(:function_declarati
502a0 6f 6e 73 20 2c 28 76 63 6f 6e 63 61 74 20 74 6f 6f 6c 2d 73 70 65 63 73 29 29 5d 29 29 0a 0a 28 ons.,(vconcat.tool-specs))]))..(
502c0 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 2d 72 cl-defmethod.gptel--parse-tool-r
502e0 65 73 75 6c 74 73 20 28 28 5f 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 67 65 6d 69 6e 69 29 20 esults.((_backend.gptel-gemini).
50300 74 6f 6f 6c 2d 75 73 65 29 0a 20 20 22 52 65 74 75 72 6e 20 61 20 70 72 6f 6d 70 74 20 63 6f 6e tool-use)..."Return.a.prompt.con
50320 74 61 69 6e 69 6e 67 20 74 6f 6f 6c 20 63 61 6c 6c 20 72 65 73 75 6c 74 73 20 69 6e 20 54 4f 4f taining.tool.call.results.in.TOO
50340 4c 2d 55 53 45 2e 22 0a 20 20 28 6c 69 73 74 0a 20 20 20 3a 72 6f 6c 65 20 22 75 73 65 72 22 0a L-USE."...(list....:role."user".
50360 20 20 20 3a 70 61 72 74 73 0a 20 20 20 28 76 63 6f 6e 63 61 74 0a 20 20 20 20 28 6d 61 70 63 61 ...:parts....(vconcat.....(mapca
50380 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)......
503a0 20 20 28 6c 65 74 20 28 28 72 65 73 75 6c 74 20 28 70 6c 69 73 74 2d 67 65 74 20 74 6f 6f 6c 2d ..(let.((result.(plist-get.tool-
503c0 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 28 6e 61 6d call.:result))..............(nam
503e0 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 6d 65 29 29 29 0a e.(plist-get.tool-call.:name))).
50400 20 20 20 20 20 20 20 20 20 60 28 3a 66 75 6e 63 74 69 6f 6e 52 65 73 70 6f 6e 73 65 0a 20 20 20 .........`(:functionResponse....
50420 20 20 20 20 20 20 20 20 28 3a 6e 61 6d 65 20 2c 6e 61 6d 65 20 3a 72 65 73 70 6f 6e 73 65 0a 20 ........(:name.,name.:response..
50440 20 20 20 20 20 20 20 20 20 20 20 28 3a 6e 61 6d 65 20 2c 6e 61 6d 65 20 3a 63 6f 6e 74 65 6e 74 ...........(:name.,name.:content
50460 20 2c 72 65 73 75 6c 74 29 29 29 29 29 0a 20 20 20 20 20 74 6f 6f 6c 2d 75 73 65 29 29 29 29 0a .,result)))))......tool-use)))).
50480 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 2d 69 6e 6a 65 63 74 2d 70 72 6f .(cl-defmethod.gptel--inject-pro
504a0 6d 70 74 20 28 28 5f 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 67 65 6d 69 6e 69 29 20 64 61 74 mpt.((_backend.gptel-gemini).dat
504c0 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 6f 6e a.new-prompt.&optional._position
504e0 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 74 69 )..."Append.NEW-PROMPT.to.existi
50500 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 53 65 65 20 67 ng.prompts.in.query.DATA...See.g
50520 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 66 75 6c 6c 20 64 eneric.implementation.for.full.d
50540 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 2e 22 0a 20 20 28 6c 65 74 20 28 28 70 72 6f 6d 70 74 73 20 ocumentation."...(let.((prompts.
50560 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 29 0a 20 20 20 (plist-get.data.:contents)))....
50580 20 28 70 6c 69 73 74 2d 70 75 74 20 64 61 74 61 20 3a 63 6f 6e 74 65 6e 74 73 20 28 76 63 6f 6e .(plist-put.data.:contents.(vcon
505a0 63 61 74 20 70 72 6f 6d 70 74 73 20 28 6c 69 73 74 20 6e 65 77 2d 70 72 6f 6d 70 74 29 29 29 29 cat.prompts.(list.new-prompt))))
505c0 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 6c 69 )..(cl-defmethod.gptel--parse-li
505e0 73 74 20 28 28 5f 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 67 65 6d 69 6e 69 29 20 70 72 6f 6d st.((_backend.gptel-gemini).prom
50600 70 74 2d 6c 69 73 74 29 0a 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 74 65 78 74 20 69 6e 20 pt-list)...(cl-loop.for.text.in.
50620 70 72 6f 6d 70 74 2d 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 72 6f 6c 65 20 prompt-list............for.role.
50640 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 20 69 =.t.then.(not.role)............i
50660 66 20 74 65 78 74 0a 20 20 20 20 20 20 20 20 20 20 20 69 66 20 72 6f 6c 65 0a 20 20 20 20 20 20 f.text............if.role.......
50680 20 20 20 20 20 63 6f 6c 6c 65 63 74 20 28 6c 69 73 74 20 3a 72 6f 6c 65 20 22 75 73 65 72 22 20 .....collect.(list.:role."user".
506a0 3a 70 61 72 74 73 20 60 5b 28 3a 74 65 78 74 20 2c 74 65 78 74 29 5d 29 20 69 6e 74 6f 20 70 72 :parts.`[(:text.,text)]).into.pr
506c0 6f 6d 70 74 73 0a 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 63 6f 6c 6c 65 63 74 20 28 6c ompts............else.collect.(l
506e0 69 73 74 20 3a 72 6f 6c 65 20 22 6d 6f 64 65 6c 22 20 3a 70 61 72 74 73 20 60 28 3a 74 65 78 74 ist.:role."model".:parts.`(:text
50700 20 2c 74 65 78 74 29 29 20 69 6e 74 6f 20 70 72 6f 6d 70 74 73 0a 20 20 20 20 20 20 20 20 20 20 .,text)).into.prompts...........
50720 20 66 69 6e 61 6c 6c 79 20 72 65 74 75 72 6e 20 70 72 6f 6d 70 74 73 29 29 0a 0a 28 63 6c 2d 64 .finally.return.prompts))..(cl-d
50740 65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 62 75 66 66 65 72 20 28 28 62 efmethod.gptel--parse-buffer.((b
50760 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 67 65 6d 69 6e 69 29 20 26 6f 70 74 69 6f 6e 61 6c 20 6d ackend.gptel-gemini).&optional.m
50780 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
507a0 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 69 6e 63 6c 75 64 65 rev-pt.(point)).........(include
507c0 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 65 64 69 61 20 28 6f -media.(and.gptel-track-media.(o
507e0 72 20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 63 61 70 61 62 6c 65 2d 70 20 27 6d 65 64 69 61 r.(gptel--model-capable-p.'media
50800 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 )...............................
50820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 ....................(gptel--mode
50840 6c 2d 63 61 70 61 62 6c 65 2d 70 20 27 75 72 6c 29 29 29 29 29 0a 20 20 20 20 28 69 66 20 28 6f l-capable-p.'url))))).....(if.(o
50860 72 20 67 70 74 65 6c 2d 6d 6f 64 65 20 67 70 74 65 6c 2d 74 72 61 63 6b 2d 72 65 73 70 6f 6e 73 r.gptel-mode.gptel-track-respons
50880 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 6e 6f 74 20 e).........(while.(and.(or.(not.
508a0 6d 61 78 2d 65 6e 74 72 69 65 73 29 20 28 3e 3d 20 6d 61 78 2d 65 6e 74 72 69 65 73 20 30 29 29 max-entries).(>=.max-entries.0))
508c0 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.
508e0 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 65 (previous-single-property-change
50900 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
50920 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 29 .(point).'gptel.nil.(point-min))
50940 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 3d 20 28 70 ).....................(not.(=.(p
50960 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 70 63 61 73 oint).prev-pt)))...........(pcas
50980 65 20 28 67 65 74 2d 63 68 61 72 2d 70 72 6f 70 65 72 74 79 20 28 70 6f 69 6e 74 29 20 27 67 70 e.(get-char-property.(point).'gp
509a0 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 20 20 20 20 tel).............('response.....
509c0 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 63 6f 6e 74 65 6e 74 20 28 67 .........(when-let*.((content.(g
509e0 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 20 20 ptel--trim-prefixes.............
50a00 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 73 .......................(buffer-s
50a20 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 70 ubstring-no-properties.(point).p
50a40 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 75 73 68 20 rev-pt))))................(push.
50a60 28 6c 69 73 74 20 3a 72 6f 6c 65 20 22 6d 6f 64 65 6c 22 20 3a 70 61 72 74 73 20 28 6c 69 73 74 (list.:role."model".:parts.(list
50a80 20 3a 74 65 78 74 20 63 6f 6e 74 65 6e 74 29 29 20 70 72 6f 6d 70 74 73 29 29 29 0a 20 20 20 20 .:text.content)).prompts))).....
50aa0 20 20 20 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 ........(`(tool...,_id).........
50ac0 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............
50ae0 20 20 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 ....(condition-case.nil.........
50b00 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 74 6f 6f 6c 2d 63 61 6c 6c 20 28 72 65 ...........(let*.((tool-call.(re
50b20 61 64 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 ad.(current-buffer)))...........
50b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 61 6d 65 20 28 70 6c 69 73 74 2d 67 65 74 ................(name.(plist-get
50b60 20 74 6f 6f 6c 2d 63 61 6c 6c 20 3a 6e 61 6d 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 .tool-call.:name))..............
50b80 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 72 67 75 6d 65 6e 74 73 20 20 28 70 6c 69 73 74 2d .............(arguments..(plist-
50ba0 67 65 74 20 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 get.tool-call.:args)))..........
50bc0 20 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 ............(plist-put.tool-call
50be0 20 3a 72 65 73 75 6c 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .:result........................
50c00 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
50c20 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...........
50c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
50c60 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 20 20 ....(point).prev-pt)))..........
50c80 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 72 73 65 2d ............(push.(gptel--parse-
50ca0 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 2d tool-results.backend.(list.tool-
50cc0 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 20 20 20 20 call))..........................
50ce0 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 20 20 ..prompts)......................
50d00 28 70 75 73 68 20 28 6c 69 73 74 20 3a 72 6f 6c 65 20 22 6d 6f 64 65 6c 22 0a 20 20 20 20 20 20 (push.(list.:role."model".......
50d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 70 61 72 74 ...........................:part
50d40 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...............................
50d60 20 20 20 28 76 65 63 74 6f 72 20 60 28 3a 66 75 6e 63 74 69 6f 6e 43 61 6c 6c 20 28 20 3a 6e 61 ...(vector.`(:functionCall.(.:na
50d80 6d 65 20 2c 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 me.,name........................
50da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
50dc0 20 20 20 20 3a 61 72 67 73 20 2c 61 72 67 75 6d 65 6e 74 73 29 29 29 29 0a 20 20 20 20 20 20 20 ....:args.,arguments))))........
50de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 6d 70 74 73 29 29 0a 20 20 ....................prompts))...
50e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 65 6e 64 2d 6f 66 2d 66 69 6c 65 20 69 6e 76 ...............((end-of-file.inv
50e20 61 6c 69 64 2d 72 65 61 64 2d 73 79 6e 74 61 78 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 alid-read-syntax)...............
50e40 20 20 20 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 ....(message.(format."Could.not.
50e60 70 61 72 73 65 20 74 6f 6f 6c 2d 63 61 6c 6c 20 6f 6e 20 6c 69 6e 65 20 25 73 22 0a 20 20 20 20 parse.tool-call.on.line.%s".....
50e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 ...............................(
50ea0 6c 69 6e 65 2d 6e 75 6d 62 65 72 2d 61 74 2d 70 6f 73 20 28 70 6f 69 6e 74 29 29 29 29 29 29 29 line-number-at-pos.(point)))))))
50ec0 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 20 20 20 ).............('ignore).........
50ee0 20 20 20 20 28 27 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 69 6e 63 6c 75 ....('nil..............(if.inclu
50f00 64 65 2d 6d 65 64 69 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 2d de-media..................(when-
50f20 6c 65 74 2a 20 28 28 63 6f 6e 74 65 6e 74 20 28 67 70 74 65 6c 2d 2d 67 65 6d 69 6e 69 2d 70 61 let*.((content.(gptel--gemini-pa
50f40 72 73 65 2d 6d 75 6c 74 69 70 61 72 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rse-multipart...................
50f60 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 61 72 .....................(gptel--par
50f80 73 65 2d 6d 65 64 69 61 2d 6c 69 6e 6b 73 20 6d 61 6a 6f 72 2d 6d 6f 64 65 20 28 70 6f 69 6e 74 se-media-links.major-mode.(point
50fa0 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 20 ).prev-pt))))...................
50fc0 20 28 77 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 .(when.(>.(length.content).0)...
50fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 6c 69 73 74 20 3a ...................(push.(list.:
51000 72 6f 6c 65 20 22 75 73 65 72 22 20 3a 70 61 72 74 73 20 63 6f 6e 74 65 6e 74 29 20 70 72 6f 6d role."user".:parts.content).prom
51020 70 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 pts)))................(when-let*
51040 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 78 65 73 .((content.(gptel--trim-prefixes
51060 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
51080 20 20 20 20 20 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 ......(buffer-substring-no-prope
510a0 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...........................
510c0 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6f 69 6e 74 29 20 70 72 65 76 2d 70 74 29 29 29 29 0a ............(point).prev-pt)))).
510e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 6c 69 73 74 20 3a 72 6f .................(push.(list.:ro
51100 6c 65 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 63 6f 6e 74 65 le."user".:parts.`[(:text.,conte
51120 6e 74 29 5d 29 20 70 72 6f 6d 70 74 73 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 65 nt)]).prompts)))))...........(se
51140 74 71 20 70 72 65 76 2d 70 74 20 28 70 6f 69 6e 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 61 tq.prev-pt.(point))...........(a
51160 6e 64 20 6d 61 78 2d 65 6e 74 72 69 65 73 20 28 63 6c 2d 64 65 63 66 20 6d 61 78 2d 65 6e 74 72 nd.max-entries.(cl-decf.max-entr
51180 69 65 73 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 ies))).......(let.((content.(str
511a0 69 6e 67 2d 74 72 69 6d 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 2d 6e 6f 2d 70 72 ing-trim.(buffer-substring-no-pr
511c0 6f 70 65 72 74 69 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 operties........................
511e0 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 6e 74 2d 6d ............(point-min).(point-m
51200 61 78 29 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 ax))))).........(push.(list.:rol
51220 65 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 63 6f 6e 74 65 6e e."user".:parts.`[(:text.,conten
51240 74 29 5d 29 20 70 72 6f 6d 70 74 73 29 29 29 0a 20 20 20 20 70 72 6f 6d 70 74 73 29 29 0a 0a 28 t)]).prompts))).....prompts))..(
51260 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 67 65 6d 69 6e 69 2d 70 61 72 73 65 2d 6d 75 6c 74 69 70 defun.gptel--gemini-parse-multip
51280 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 61 art.(parts)..."Convert.a.multipa
512a0 72 74 20 70 72 6f 6d 70 74 20 50 41 52 54 53 20 74 6f 20 74 68 65 20 47 65 6d 69 6e 69 20 41 50 rt.prompt.PARTS.to.the.Gemini.AP
512c0 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 6e 20 61 6c 69 73 74 I.format...The.input.is.an.alist
512e0 20 6f 66 20 74 68 65 20 66 6f 72 6d 0a 20 28 28 3a 74 65 78 74 20 5c 22 73 6f 6d 65 20 74 65 78 .of.the.form..((:text.\"some.tex
51300 74 5c 22 29 0a 20 20 28 3a 6d 65 64 69 61 20 5c 22 2f 70 61 74 68 2f 74 6f 2f 6d 65 64 69 61 2e t\")...(:media.\"/path/to/media.
51320 70 6e 67 5c 22 20 3a 6d 69 6d 65 20 5c 22 69 6d 61 67 65 2f 70 6e 67 5c 22 29 0a 20 20 28 3a 74 png\".:mime.\"image/png\")...(:t
51340 65 78 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 ext.\"More.text\"))...The.output
51360 20 69 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 61 20 62 61 63 .is.a.vector.of.entries.in.a.bac
51380 6b 65 6e 64 2d 61 70 70 72 6f 70 72 69 61 74 65 0a 66 6f 72 6d 61 74 2e 22 0a 20 20 28 63 6c 2d kend-appropriate.format."...(cl-
513a0 6c 6f 6f 70 0a 20 20 20 66 6f 72 20 70 61 72 74 20 69 6e 20 70 61 72 74 73 0a 20 20 20 66 6f 72 loop....for.part.in.parts....for
513c0 20 6e 20 75 70 66 72 6f 6d 20 31 0a 20 20 20 77 69 74 68 20 6c 61 73 74 20 3d 20 28 6c 65 6e 67 .n.upfrom.1....with.last.=.(leng
513e0 74 68 20 70 61 72 74 73 29 0a 20 20 20 66 6f 72 20 74 65 78 74 20 3d 20 28 70 6c 69 73 74 2d 67 th.parts)....for.text.=.(plist-g
51400 65 74 20 70 61 72 74 20 3a 74 65 78 74 29 0a 20 20 20 66 6f 72 20 6d 65 64 69 61 20 3d 20 28 70 et.part.:text)....for.media.=.(p
51420 6c 69 73 74 2d 67 65 74 20 70 61 72 74 20 3a 6d 65 64 69 61 29 0a 20 20 20 69 66 20 74 65 78 74 list-get.part.:media)....if.text
51440 20 64 6f 0a 20 20 20 28 61 6e 64 20 28 6f 72 20 28 3d 20 6e 20 31 29 20 28 3d 20 6e 20 6c 61 73 .do....(and.(or.(=.n.1).(=.n.las
51460 74 29 29 20 28 73 65 74 71 20 74 65 78 74 20 28 67 70 74 65 6c 2d 2d 74 72 69 6d 2d 70 72 65 66 t)).(setq.text.(gptel--trim-pref
51480 69 78 65 73 20 74 65 78 74 29 29 29 20 61 6e 64 0a 20 20 20 69 66 20 74 65 78 74 0a 20 20 20 63 ixes.text))).and....if.text....c
514a0 6f 6c 6c 65 63 74 20 28 6c 69 73 74 20 3a 74 65 78 74 20 74 65 78 74 29 20 69 6e 74 6f 20 70 61 ollect.(list.:text.text).into.pa
514c0 72 74 73 2d 61 72 72 61 79 20 65 6e 64 0a 20 20 20 65 6c 73 65 20 69 66 20 6d 65 64 69 61 0a 20 rts-array.end....else.if.media..
514e0 20 20 63 6f 6c 6c 65 63 74 0a 20 20 20 60 28 3a 69 6e 6c 69 6e 65 5f 64 61 74 61 0a 20 20 20 20 ..collect....`(:inline_data.....
51500 20 28 3a 6d 69 6d 65 5f 74 79 70 65 20 2c 28 70 6c 69 73 74 2d 67 65 74 20 70 61 72 74 20 3a 6d .(:mime_type.,(plist-get.part.:m
51520 69 6d 65 29 0a 20 20 20 20 20 20 3a 64 61 74 61 20 2c 28 67 70 74 65 6c 2d 2d 62 61 73 65 36 34 ime).......:data.,(gptel--base64
51540 2d 65 6e 63 6f 64 65 20 6d 65 64 69 61 29 29 29 0a 20 20 20 69 6e 74 6f 20 70 61 72 74 73 2d 61 -encode.media)))....into.parts-a
51560 72 72 61 79 0a 20 20 20 66 69 6e 61 6c 6c 79 20 72 65 74 75 72 6e 20 28 76 63 6f 6e 63 61 74 20 rray....finally.return.(vconcat.
51580 70 61 72 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 parts-array)))..(cl-defmethod.gp
515a0 74 65 6c 2d 2d 77 72 61 70 2d 75 73 65 72 2d 70 72 6f 6d 70 74 20 28 28 5f 62 61 63 6b 65 6e 64 tel--wrap-user-prompt.((_backend
515c0 20 67 70 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 .gptel-gemini).prompts..........
515e0 20 20 20 20 20 20 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 ..............................&o
51600 70 74 69 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 ptional.inject-media)..."Wrap.th
51620 65 20 6c 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 e.last.user.prompt.in.PROMPTS.wi
51640 74 68 20 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 th.the.context.string...If.INJEC
51660 54 2d 4d 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 T-MEDIA.is.non-nil.wrap.it.with.
51680 62 61 73 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 base64-encoded.media.files.in.th
516a0 65 20 63 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 e.context."...(if.inject-media..
516c0 20 20 20 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 .....;;.Wrap.the.first.user.prom
516e0 70 74 20 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 pt.with.included.media.files/con
51700 74 65 78 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 texts.......(when-let*.((media-l
51720 69 73 74 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 ist.(gptel-context--collect-medi
51740 61 29 29 29 0a 20 20 20 20 20 20 20 20 28 63 6c 2d 63 61 6c 6c 66 20 28 6c 61 6d 62 64 61 20 28 a))).........(cl-callf.(lambda.(
51760 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 28 76 63 current).....................(vc
51780 6f 6e 63 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 oncat.(gptel--gemini-parse-multi
517a0 70 61 72 74 20 6d 65 64 69 61 2d 6c 69 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 part.media-list)................
517c0 20 20 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 ..............current)).........
517e0 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 70 61 ....(plist-get.(car.prompts).:pa
51800 72 74 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 73 65 72 rts))).....;;.Wrap.the.last.user
51820 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 6e 74 65 .prompt.with.included.text.conte
51840 78 74 73 0a 20 20 20 20 28 63 6c 2d 63 61 6c 6c 66 20 28 6c 61 6d 62 64 61 20 28 63 75 72 72 65 xts.....(cl-callf.(lambda.(curre
51860 6e 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 2d 6c 65 74 2a 20 28 28 77 nt).................(if-let*.((w
51880 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 70 20 6e 69 6c 29 rapped.(gptel-context--wrap.nil)
518a0 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 76 63 6f 6e 63 61 74 20 )).....................(vconcat.
518c0 60 28 28 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 `((:text.,wrapped)).current)....
518e0 20 20 20 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 ...............current))........
51900 20 28 70 6c 69 73 74 2d 67 65 74 20 28 63 61 72 20 28 6c 61 73 74 20 70 72 6f 6d 70 74 73 29 29 .(plist-get.(car.(last.prompts))
51920 20 3a 70 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 .:parts))))..(defconst.gptel--ge
51940 6d 69 6e 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 mini-models...'((gemini-1.5-pro-
51960 6c 61 74 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 latest......:description."Google
51980 27 73 20 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 's.latest.model.with.enhanced.ca
519a0 70 61 62 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 pabilities.across.various.tasks"
519c0 0a 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 74 6f 6f 6c 2d 75 73 65 20 6a 73 ......:capabilities.(tool-use.js
519e0 6f 6e 20 6d 65 64 69 61 29 0a 20 20 20 20 20 3a 6d 69 6d 65 2d 74 79 70 65 73 20 28 22 69 6d 61 on.media)......:mime-types.("ima
51a00 67 65 2f 70 6e 67 22 20 22 69 6d 61 67 65 2f 6a 70 65 67 22 20 22 69 6d 61 67 65 2f 77 65 62 70 ge/png"."image/jpeg"."image/webp
51a20 22 20 22 69 6d 61 67 65 2f 68 65 69 63 22 20 22 69 6d 61 67 65 2f 68 65 69 66 22 0a 20 20 20 20 "."image/heic"."image/heif".....
51a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 70 64 66 22 20 .............."application/pdf".
51a60 22 74 65 78 74 2f 70 6c 61 69 6e 22 20 22 74 65 78 74 2f 63 73 76 22 20 22 74 65 78 74 2f 68 74 "text/plain"."text/csv"."text/ht
51a80 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 32 30 30 30 0a 20 ml")......:context-window.2000..
51aa0 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 20 69 73 20 68 ....;;.input.&.output.price.is.h
51ac0 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 6f 6b 65 6e 73 alved.for.prompts.of.128k.tokens
51ae0 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 32 2e 35 30 0a 20 .or.less......:input-cost.2.50..
51b00 20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 31 30 0a 20 20 20 20 20 3a 63 75 74 6f 66 66 ....:output-cost.10......:cutoff
51b20 2d 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 32 2e 30 -date."2024-05").....(gemini-2.0
51b40 2d 66 6c 61 73 68 2d 65 78 70 0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 4e 65 -flash-exp......:description."Ne
51b60 78 74 20 67 65 6e 65 72 61 74 69 6f 6e 20 66 65 61 74 75 72 65 73 2c 20 73 75 70 65 72 69 6f 72 xt.generation.features,.superior
51b80 20 73 70 65 65 64 2c 20 6e 61 74 69 76 65 20 74 6f 6f 6c 20 75 73 65 22 0a 20 20 20 20 20 3a 63 .speed,.native.tool.use"......:c
51ba0 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
51bc0 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".
51be0 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
51c00 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".............
51c20 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
51c40 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")....
51c60 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 63 75 74 ..:context-window.1000......:cut
51c80 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 69 2d off-date."2024-12").....(gemini-
51ca0 31 2e 35 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 1.5-flash......:description."A.f
51cc0 61 73 74 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 aster,.more.efficient.version.of
51ce0 20 47 65 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 .Gemini.1.5.optimized.for.speed"
51d00 0a 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 74 6f 6f 6c 2d 75 73 65 20 6a 73 ......:capabilities.(tool-use.js
51d20 6f 6e 20 6d 65 64 69 61 29 0a 20 20 20 20 20 3a 6d 69 6d 65 2d 74 79 70 65 73 20 28 22 69 6d 61 on.media)......:mime-types.("ima
51d40 67 65 2f 70 6e 67 22 20 22 69 6d 61 67 65 2f 6a 70 65 67 22 20 22 69 6d 61 67 65 2f 77 65 62 70 ge/png"."image/jpeg"."image/webp
51d60 22 20 22 69 6d 61 67 65 2f 68 65 69 63 22 20 22 69 6d 61 67 65 2f 68 65 69 66 22 0a 20 20 20 20 "."image/heic"."image/heif".....
51d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 70 64 66 22 20 .............."application/pdf".
51da0 22 74 65 78 74 2f 70 6c 61 69 6e 22 20 22 74 65 78 74 2f 63 73 76 22 20 22 74 65 78 74 2f 68 74 "text/plain"."text/csv"."text/ht
51dc0 6d 6c 22 29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 31 30 30 30 0a 20 ml")......:context-window.1000..
51de0 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 20 69 73 20 68 ....;;.input.&.output.price.is.h
51e00 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 6f 6b 65 6e 73 alved.for.prompts.of.128k.tokens
51e20 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 2e 31 35 0a 20 .or.less......:input-cost.0.15..
51e40 20 20 20 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 ....:output-cost.0.60......:cuto
51e60 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 65 6d 69 6e 69 2d 31 ff-date."2024-05").....(gemini-1
51e80 2e 35 2d 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 .5-flash-8b......:description."H
51ea0 69 67 68 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 igh.volume.and.lower.intelligenc
51ec0 65 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 74 6f 6f e.tasks"......:capabilities.(too
51ee0 6c 2d 75 73 65 20 6a 73 6f 6e 20 6d 65 64 69 61 29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d l-use.json.media)......:context-
51f00 77 69 6e 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 window.1000......:mime-types.("i
51f20 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 65 mage/png"."image/jpeg"."image/we
51f40 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 20 bp"."image/heic"."image/heif"...
51f60 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 66 ................"application/pdf
51f80 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 2f "."text/plain"."text/csv"."text/
51fa0 68 74 6d 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 html")......;;.input.&.output.pr
51fc0 69 63 65 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 ice.is.halved.for.prompts.of.128
51fe0 6b 20 74 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 k.tokens.or.less......:input-cos
52000 74 20 30 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 t.0.075......:output-cost.0.30..
52020 20 20 20 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 ....:cutoff-date."2024-10").....
52040 28 67 65 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 (gemini-exp-1206......:descripti
52060 6f 6e 20 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 on."Improved.coding,.reasoning.a
52080 6e 64 20 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 nd.vision.capabilities"......:ca
520a0 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 29 pabilities.(tool-use.json.media)
520c0 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 22 ......:mime-types.("image/png"."
520e0 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 2f image/jpeg"."image/webp"."image/
52100 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 20 heic"."image/heif"..............
52120 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 61 ....."application/pdf"."text/pla
52140 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 20 in"."text/csv"."text/html").....
52160 20 3a 63 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 .:cutoff-date."2024-12").....(ge
52180 6d 69 6e 69 2d 32 2e 30 2d 66 6c 61 73 68 0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e mini-2.0-flash......:description
521a0 20 22 4e 65 78 74 20 67 65 6e 2c 20 68 69 67 68 20 73 70 65 65 64 2c 20 6d 75 6c 74 69 6d 6f 64 ."Next.gen,.high.speed,.multimod
521c0 61 6c 20 66 6f 72 20 61 20 64 69 76 65 72 73 65 20 76 61 72 69 65 74 79 20 6f 66 20 74 61 73 6b al.for.a.diverse.variety.of.task
521e0 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 20 s"......:capabilities.(tool-use.
52200 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 69 json.media)......:mime-types.("i
52220 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 65 mage/png"."image/jpeg"."image/we
52240 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 20 bp"."image/heic"."image/heif"...
52260 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 66 ................"application/pdf
52280 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 2f "."text/plain"."text/csv"."text/
522a0 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 30 30 html")......:context-window.1000
522c0 0a 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 30 2e 31 30 0a 20 20 20 20 20 3a 6f 75 74 ......:input-cost.0.10......:out
522e0 70 75 74 2d 63 6f 73 74 20 30 2e 34 30 0a 20 20 20 20 20 3a 63 75 74 6f 66 66 2d 64 61 74 65 20 put-cost.0.40......:cutoff-date.
52300 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 30 2d 66 6c 61 73 68 "2024-08").....(gemini-2.0-flash
52320 2d 6c 69 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 -lite-preview-02-05......:descri
52340 70 74 69 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 ption."Gemini.2.0.Flash.model.op
52360 74 69 6d 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 timized.for.cost.efficiency.and.
52380 6c 6f 77 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 low.latency"......:capabilities.
523a0 28 6a 73 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 (json)......:context-window.1000
523c0 0a 20 20 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 ......:input-cost.0.075......:ou
523e0 74 70 75 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 tput-cost.0.30......:cutoff-date
52400 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 30 2d 70 72 6f 2d ."2024-08").....(gemini-2.0-pro-
52420 65 78 70 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 exp-02-05......:description."Nex
52440 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 6f t.gen,.high.speed,.multimodal.fo
52460 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 20 r.a.diverse.variety.of.tasks"...
52480 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 29 ...:capabilities.(tool-use.json)
524a0 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 20 ......:context-window.2000......
524c0 3a 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 :input-cost.0.00......:output-co
524e0 73 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 34 2d st.0.00......:cutoff-date."2024-
52500 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 74 68 69 6e 6b 08").....(gemini-2.0-flash-think
52520 69 6e 67 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 ing-exp-01-21......:description.
52540 22 4e 65 78 74 20 67 65 6e 2c 20 68 69 67 68 20 73 70 65 65 64 2c 20 6d 75 6c 74 69 6d 6f 64 61 "Next.gen,.high.speed,.multimoda
52560 6c 20 66 6f 72 20 61 20 64 69 76 65 72 73 65 20 76 61 72 69 65 74 79 20 6f 66 20 74 61 73 6b 73 l.for.a.diverse.variety.of.tasks
52580 22 0a 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 6a 73 6f 6e 29 0a 20 20 20 20 "......:capabilities.(json).....
525a0 20 3a 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 .:input-cost.0.00......:output-c
525c0 6f 73 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 34 ost.0.00......:cutoff-date."2024
525e0 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 65 78 70 0a -08").....(gemini-2.0-flash-exp.
52600 20 20 20 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 .....:description."Multi-modal,.
52620 73 74 72 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 streaming,.tool.use.2000.RPM"...
52640 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.
52660 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/
52680 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"."
526a0 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"........
526c0 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
526e0 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"
52700 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.....
52720 20 3a 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 .:input-cost.0.00......:output-c
52740 6f 73 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 34 ost.0.00......:cutoff-date."2024
52760 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 74 68 69 6e -08").....(gemini-2.0-flash-thin
52780 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
527a0 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
527c0 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."
527e0 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
52800 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....
52820 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
52840 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
52860 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"..................
52880 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
528a0 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
528c0 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.
528e0 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
52900 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
52920 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...-.
52940 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
52960 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..
52980 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
529a0 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
529c0 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
529e0 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
52a00 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
52a20 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
52a40 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':.
52a60 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
52a80 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
52aa0 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.
52ac0 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
52ae0 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.
52b00 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
52b20 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
52b40 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
52b60 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.
52b80 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
52ba0 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
52bc0 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 22 29 0a 0a 3b 3b tive-ai/docs/learn/models>")..;;
52be0 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
52c00 65 2d 67 65 6d 69 6e 69 0a 20 20 20 20 28 6e 61 6d 65 20 26 6b 65 79 20 63 75 72 6c 2d 61 72 67 e-gemini.....(name.&key.curl-arg
52c20 73 20 68 65 61 64 65 72 20 6b 65 79 20 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 0a 20 20 20 20 s.header.key.request-params.....
52c40 20 20 20 20 20 20 28 73 74 72 65 61 6d 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 28 68 6f ......(stream.nil)...........(ho
52c60 73 74 20 22 67 65 6e 65 72 61 74 69 76 65 6c 61 6e 67 75 61 67 65 2e 67 6f 6f 67 6c 65 61 70 69 st."generativelanguage.googleapi
52c80 73 2e 63 6f 6d 22 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 74 6f 63 6f 6c 20 22 68 74 74 s.com")...........(protocol."htt
52ca0 70 73 22 29 0a 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 65 6c 73 20 67 70 74 65 6c 2d 2d 67 65 ps")...........(models.gptel--ge
52cc0 6d 69 6e 69 2d 6d 6f 64 65 6c 73 29 0a 20 20 20 20 20 20 20 20 20 20 28 65 6e 64 70 6f 69 6e 74 mini-models)...........(endpoint
52ce0 20 22 2f 76 31 62 65 74 61 2f 6d 6f 64 65 6c 73 22 29 29 0a 0a 20 20 22 52 65 67 69 73 74 65 72 ."/v1beta/models"))...."Register
52d00 20 61 20 47 65 6d 69 6e 69 20 62 61 63 6b 65 6e 64 20 66 6f 72 20 67 70 74 65 6c 20 77 69 74 68 .a.Gemini.backend.for.gptel.with
52d20 20 4e 41 4d 45 2e 0a 0a 4b 65 79 77 6f 72 64 20 61 72 67 75 6d 65 6e 74 73 3a 0a 0a 43 55 52 4c .NAME...Keyword.arguments:..CURL
52d40 2d 41 52 47 53 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 61 64 -ARGS.(optional).is.a.list.of.ad
52d60 64 69 74 69 6f 6e 61 6c 20 43 75 72 6c 20 61 72 67 75 6d 65 6e 74 73 2e 0a 0a 48 4f 53 54 20 28 ditional.Curl.arguments...HOST.(
52d80 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 74 68 65 20 41 50 49 20 68 6f 73 74 2c 20 64 65 66 61 75 optional).is.the.API.host,.defau
52da0 6c 74 73 20 74 6f 0a 5c 22 67 65 6e 65 72 61 74 69 76 65 6c 61 6e 67 75 61 67 65 2e 67 6f 6f 67 lts.to.\"generativelanguage.goog
52dc0 6c 65 61 70 69 73 2e 63 6f 6d 5c 22 2e 0a 0a 4d 4f 44 45 4c 53 20 69 73 20 61 20 6c 69 73 74 20 leapis.com\"...MODELS.is.a.list.
52de0 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 6d of.available.model.names,.as.sym
52e00 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 63 bols..Additionally,.you.can.spec
52e20 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 6c ify.supported.LLM.capabilities.l
52e40 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 64 ike.vision.or.tool-use.by.append
52e60 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 6f ing.a.plist.to.the.model.with.mo
52e80 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 6d re.information,.in.the.form...(m
52ea0 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 6f odel-name...plist)..For.a.list.o
52ec0 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 79 f.currently.recognized.plist.key
52ee0 73 2c 20 73 65 65 0a 60 67 70 74 65 6c 2d 2d 67 65 6d 69 6e 69 2d 6d 6f 64 65 6c 73 27 2e 20 41 s,.see.`gptel--gemini-models'..A
52f00 6e 20 65 78 61 6d 70 6c 65 20 6f 66 20 61 20 6d 6f 64 65 6c 20 73 70 65 63 69 66 69 63 61 74 69 n.example.of.a.model.specificati
52f20 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 63 73 on.including.both.kinds.of.specs
52f40 3a 0a 0a 3a 6d 6f 64 65 6c 73 0a 5c 5c 3d 27 28 67 65 6d 69 6e 69 2d 32 2e 30 2d 66 6c 61 73 68 :..:models.\\='(gemini-2.0-flash
52f60 2d 6c 69 74 65 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 53 69 6d 70 6c 65 20 73 70 65 63 73 -lite..............;Simple.specs
52f80 0a 20 20 67 65 6d 69 6e 69 2d 31 2e 35 2d 66 6c 61 73 68 0a 20 20 28 67 65 6d 69 6e 69 2d 31 2e ...gemini-1.5-flash...(gemini-1.
52fa0 35 2d 70 72 6f 2d 6c 61 74 65 73 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 46 75 6c 5-pro-latest................;Ful
52fc0 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 43 6f 6d 70 l.spec....:description....\"Comp
52fe0 6c 65 78 20 72 65 61 73 6f 6e 69 6e 67 20 74 61 73 6b 73 2c 20 70 72 6f 62 6c 65 6d 20 73 6f 6c lex.reasoning.tasks,.problem.sol
53000 76 69 6e 67 20 61 6e 64 20 64 61 74 61 20 65 78 74 72 61 63 74 69 6f 6e 5c 22 0a 20 20 20 3a 63 ving.and.data.extraction\"....:c
53020 61 70 61 62 69 6c 69 74 69 65 73 20 28 74 6f 6f 6c 20 6a 73 6f 6e 29 0a 20 20 20 3a 6d 69 6d 65 apabilities.(tool.json)....:mime
53040 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 5c 22 69 6d 61 67 -types....(\"image/jpeg\".\"imag
53060 65 2f 70 6e 67 5c 22 20 5c 22 69 6d 61 67 65 2f 77 65 62 70 5c 22 20 5c 22 69 6d 61 67 65 2f 68 e/png\".\"image/webp\".\"image/h
53080 65 69 63 5c 22 29 29 29 0a 0a 0a 53 54 52 45 41 4d 20 69 73 20 61 20 62 6f 6f 6c 65 61 6e 20 74 eic\")))...STREAM.is.a.boolean.t
530a0 6f 20 65 6e 61 62 6c 65 20 73 74 72 65 61 6d 69 6e 67 20 72 65 73 70 6f 6e 73 65 73 2c 20 64 65 o.enable.streaming.responses,.de
530c0 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 74 69 faults.to.false...PROTOCOL.(opti
530e0 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 5c 22 onal).specifies.the.protocol,.\"
53100 68 74 74 70 73 5c 22 20 62 79 20 64 65 66 61 75 6c 74 2e 0a 0a 45 4e 44 50 4f 49 4e 54 20 28 6f https\".by.default...ENDPOINT.(o
53120 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
53140 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 62 .completions,.defaults.to.\"/v1b
53160 65 74 61 2f 6d 6f 64 65 6c 73 5c 22 2e 0a 0a 48 45 41 44 45 52 20 28 6f 70 74 69 6f 6e 61 6c 29 eta/models\"...HEADER.(optional)
53180 20 69 73 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 68 65 61 64 65 72 73 20 74 6f 20 73 65 .is.for.additional.headers.to.se
531a0 6e 64 20 77 69 74 68 20 65 61 63 68 0a 72 65 71 75 65 73 74 2e 20 20 49 74 20 73 68 6f 75 6c 64 nd.with.each.request...It.should
531c0 20 62 65 20 61 6e 20 61 6c 69 73 74 20 6f 72 20 61 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 .be.an.alist.or.a.function.that.
531e0 72 65 74 75 6e 73 20 61 6e 0a 61 6c 69 73 74 2c 20 6c 69 6b 65 3a 0a 20 28 28 5c 22 43 6f 6e 74 retuns.an.alist,.like:..((\"Cont
53200 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 5c ent-Type\"...\"application/json\
53220 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 6c "))..KEY.(optional).is.a.variabl
53240 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 72 e.whose.value.is.the.API.key,.or
53260 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 0a .function.that.returns.the.key..
53280 0a 52 45 51 55 45 53 54 2d 50 41 52 41 4d 53 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 61 20 .REQUEST-PARAMS.(optional).is.a.
532a0 70 6c 69 73 74 20 6f 66 20 61 64 64 69 74 69 6f 6e 61 6c 20 48 54 54 50 20 72 65 71 75 65 73 74 plist.of.additional.HTTP.request
532c0 0a 70 61 72 61 6d 65 74 65 72 73 20 28 61 73 20 70 6c 69 73 74 20 6b 65 79 73 29 20 61 6e 64 20 .parameters.(as.plist.keys).and.
532e0 76 61 6c 75 65 73 20 73 75 70 70 6f 72 74 65 64 20 62 79 20 74 68 65 20 41 50 49 2e 20 20 55 73 values.supported.by.the.API...Us
53300 65 0a 74 68 65 73 65 20 74 6f 20 73 65 74 20 70 61 72 61 6d 65 74 65 72 73 20 74 68 61 74 20 67 e.these.to.set.parameters.that.g
53320 70 74 65 6c 20 64 6f 65 73 20 6e 6f 74 20 70 72 6f 76 69 64 65 20 75 73 65 72 20 6f 70 74 69 6f ptel.does.not.provide.user.optio
53340 6e 73 0a 66 6f 72 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 69 6e 64 65 6e 74 20 31 29 29 0a ns.for."...(declare.(indent.1)).
53360 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 67 65 ..(let.((backend.(gptel--make-ge
53380 6d 69 6e 69 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 75 72 6c 2d 61 72 67 mini...................:curl-arg
533a0 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 3a 6e s.curl-args...................:n
533c0 61 6d 65 20 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 68 6f 73 74 ame.name...................:host
533e0 20 68 6f 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 68 65 61 64 65 72 20 .host...................:header.
53400 68 65 61 64 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6d 6f 64 65 6c 73 header...................:models
53420 20 28 67 70 74 65 6c 2d 2d 70 72 6f 63 65 73 73 2d 6d 6f 64 65 6c 73 20 6d 6f 64 65 6c 73 29 0a .(gptel--process-models.models).
53440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 70 72 6f 74 6f 63 6f 6c 20 70 72 6f 74 ..................:protocol.prot
53460 6f 63 6f 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 65 6e 64 70 6f 69 6e 74 ocol...................:endpoint
53480 20 65 6e 64 70 6f 69 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 73 74 72 .endpoint...................:str
534a0 65 61 6d 20 73 74 72 65 61 6d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 72 65 eam.stream...................:re
534c0 71 75 65 73 74 2d 70 61 72 61 6d 73 20 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 0a 20 20 20 20 quest-params.request-params.....
534e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6b 65 79 20 6b 65 79 0a 20 20 20 20 20 20 20 20 20 ..............:key.key..........
53500 20 20 20 20 20 20 20 20 20 3a 75 72 6c 20 28 6c 61 6d 62 64 61 20 28 29 0a 20 20 20 20 20 20 20 .........:url.(lambda.()........
53520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 6d 65 74 68 6f 64 20 ..................(let.((method.
53540 28 69 66 20 28 61 6e 64 20 73 74 72 65 61 6d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (if.(and.stream.................
53560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
53580 67 70 74 65 6c 2d 73 74 72 65 61 6d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 gptel-stream)...................
535a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 73 74 72 65 61 6d ........................."stream
535c0 47 65 6e 65 72 61 74 65 43 6f 6e 74 65 6e 74 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 GenerateContent"................
535e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 67 65 6e 65 72 .........................."gener
53600 61 74 65 43 6f 6e 74 65 6e 74 22 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ateContent")))..................
53620 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 25 73 3a 2f 2f 25 73 25 73 2f 25 73 3a ..........(format."%s://%s%s/%s:
53640 25 73 3f 6b 65 79 3d 25 73 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 %s?key=%s"......................
53660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 74 6f 63 6f 6c 0a 20 20 20 20 20 20 20 20 20 ..............protocol..........
53680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 6f 73 74 0a 20 ..........................host..
536a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
536c0 20 20 65 6e 64 70 6f 69 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..endpoint......................
536e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 0a 20 20 20 20 20 20 ..............gptel-model.......
53700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 74 .............................met
53720 68 6f 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 hod.............................
53740 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 67 65 74 2d 61 70 69 2d 6b 65 79 29 29 29 29 29 29 .......(gptel--get-api-key))))))
53760 29 0a 20 20 20 20 28 70 72 6f 67 31 20 62 61 63 6b 65 6e 64 0a 20 20 20 20 20 20 28 73 65 74 66 ).....(prog1.backend.......(setf
53780 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
537a0 63 6b 65 6e 64 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 69 ckends........................ni
537c0 6c 20 6e 69 6c 20 23 27 65 71 75 61 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 61 63 6b 65 l.nil.#'equal).............backe
537e0 6e 64 29 29 29 29 0a 0a 28 70 72 6f 76 69 64 65 20 27 67 70 74 65 6c 2d 67 65 6d 69 6e 69 29 0a nd))))..(provide.'gptel-gemini).
53800 3b 3b 3b 20 67 70 74 65 6c 2d 67 65 6d 69 6e 69 2e 65 6c 20 65 6e 64 73 20 68 65 72 65 0a 00 00 ;;;.gptel-gemini.el.ends.here...
53820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
53840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
53860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
53880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
538a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
538c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
538e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
53900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
53920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
53940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
53960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
53980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
539a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
539c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
539e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
53a00 67 70 74 65 6c 2d 30 2e 39 2e 38 2f 67 70 74 65 6c 2d 74 72 61 6e 73 69 65 6e 74 2e 65 6c 00 00 gptel-0.9.8/gptel-transient.el..
53a20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
53a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
53a60 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
53a80 30 32 30 30 30 36 37 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 34 37 35 31 00 20 30 00 00 00 0200067.00000000000.014751..0...
53aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
53ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
53ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
53b00 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...................
53b20 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...................
53b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
53b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
53b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
53ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
53bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
53be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
53c00 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
53c20 69 65 6e 74 20 6d 65 6e 75 20 66 6f 72 20 47 50 54 65 6c 20 20 2d 2a 2d 20 6c 65 78 69 63 61 6c ient.menu.for.GPTel..-*-.lexical
53c40 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.(
53c60 43 29 20 32 30 32 33 20 20 4b 61 72 74 68 69 6b 20 43 68 69 6b 6d 61 67 61 6c 75 72 0a 0a 3b 3b C).2023..Karthik.Chikmagalur..;;
53c80 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
53ca0 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
53cc0 65 79 77 6f 72 64 73 3a 20 63 6f 6e 76 65 6e 69 65 6e 63 65 0a 0a 3b 3b 20 53 50 44 58 2d 4c 69 eywords:.convenience..;;.SPDX-Li
53ce0 63 65 6e 73 65 2d 49 64 65 6e 74 69 66 69 65 72 3a 20 47 50 4c 2d 33 2e 30 2d 6f 72 2d 6c 61 74 cense-Identifier:.GPL-3.0-or-lat
53d00 65 72 0a 0a 3b 3b 20 54 68 69 73 20 70 72 6f 67 72 61 6d 20 69 73 20 66 72 65 65 20 73 6f 66 74 er..;;.This.program.is.free.soft
53d20 77 61 72 65 3b 20 79 6f 75 20 63 61 6e 20 72 65 64 69 73 74 72 69 62 75 74 65 20 69 74 20 61 6e ware;.you.can.redistribute.it.an
53d40 64 2f 6f 72 20 6d 6f 64 69 66 79 0a 3b 3b 20 69 74 20 75 6e 64 65 72 20 74 68 65 20 74 65 72 6d d/or.modify.;;.it.under.the.term
53d60 73 20 6f 66 20 74 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 s.of.the.GNU.General.Public.Lice
53d80 6e 73 65 20 61 73 20 70 75 62 6c 69 73 68 65 64 20 62 79 0a 3b 3b 20 74 68 65 20 46 72 65 65 20 nse.as.published.by.;;.the.Free.
53da0 53 6f 66 74 77 61 72 65 20 46 6f 75 6e 64 61 74 69 6f 6e 2c 20 65 69 74 68 65 72 20 76 65 72 73 Software.Foundation,.either.vers
53dc0 69 6f 6e 20 33 20 6f 66 20 74 68 65 20 4c 69 63 65 6e 73 65 2c 20 6f 72 0a 3b 3b 20 28 61 74 20 ion.3.of.the.License,.or.;;.(at.
53de0 79 6f 75 72 20 6f 70 74 69 6f 6e 29 20 61 6e 79 20 6c 61 74 65 72 20 76 65 72 73 69 6f 6e 2e 0a your.option).any.later.version..
53e00 0a 3b 3b 20 54 68 69 73 20 70 72 6f 67 72 61 6d 20 69 73 20 64 69 73 74 72 69 62 75 74 65 64 20 .;;.This.program.is.distributed.
53e20 69 6e 20 74 68 65 20 68 6f 70 65 20 74 68 61 74 20 69 74 20 77 69 6c 6c 20 62 65 20 75 73 65 66 in.the.hope.that.it.will.be.usef
53e40 75 6c 2c 0a 3b 3b 20 62 75 74 20 57 49 54 48 4f 55 54 20 41 4e 59 20 57 41 52 52 41 4e 54 59 3b ul,.;;.but.WITHOUT.ANY.WARRANTY;
53e60 20 77 69 74 68 6f 75 74 20 65 76 65 6e 20 74 68 65 20 69 6d 70 6c 69 65 64 20 77 61 72 72 61 6e .without.even.the.implied.warran
53e80 74 79 20 6f 66 0a 3b 3b 20 4d 45 52 43 48 41 4e 54 41 42 49 4c 49 54 59 20 6f 72 20 46 49 54 4e ty.of.;;.MERCHANTABILITY.or.FITN
53ea0 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
53ec0 65 65 20 74 68 65 0a 3b 3b 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 ee.the.;;.GNU.General.Public.Lic
53ee0 65 6e 73 65 20 66 6f 72 20 6d 6f 72 65 20 64 65 74 61 69 6c 73 2e 0a 0a 3b 3b 20 59 6f 75 20 73 ense.for.more.details...;;.You.s
53f00 68 6f 75 6c 64 20 68 61 76 65 20 72 65 63 65 69 76 65 64 20 61 20 63 6f 70 79 20 6f 66 20 74 68 hould.have.received.a.copy.of.th
53f20 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 0a 3b 3b 20 e.GNU.General.Public.License.;;.
53f40 61 6c 6f 6e 67 20 77 69 74 68 20 74 68 69 73 20 70 72 6f 67 72 61 6d 2e 20 20 49 66 20 6e 6f 74 along.with.this.program...If.not
53f60 2c 20 73 65 65 20 3c 68 74 74 70 73 3a 2f 2f 77 77 77 2e 67 6e 75 2e 6f 72 67 2f 6c 69 63 65 6e ,.see.<https://www.gnu.org/licen
53f80 73 65 73 2f 3e 2e 0a 0a 3b 3b 3b 20 43 6f 6d 6d 65 6e 74 61 72 79 3a 0a 0a 3b 3b 0a 0a 3b 3b 3b ses/>...;;;.Commentary:..;;..;;;
53fa0 20 43 6f 64 65 3a 0a 28 72 65 71 75 69 72 65 20 27 63 6c 2d 6c 69 62 29 0a 28 72 65 71 75 69 72 .Code:.(require.'cl-lib).(requir
53fc0 65 20 27 67 70 74 65 6c 29 0a 28 72 65 71 75 69 72 65 20 27 74 72 61 6e 73 69 65 6e 74 29 0a 0a e.'gptel).(require.'transient)..
53fe0 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 65 64 69 66 66 2d 72 65 67 69 6f 6e 73 2d (declare-function.ediff-regions-
54000 69 6e 74 65 72 6e 61 6c 20 22 65 64 69 66 66 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 internal."ediff").(declare-funct
54020 69 6f 6e 20 65 64 69 66 66 2d 6d 61 6b 65 2d 63 6c 6f 6e 65 64 2d 62 75 66 66 65 72 20 22 65 64 ion.ediff-make-cloned-buffer."ed
54040 69 66 66 2d 75 74 69 6c 73 22 29 0a 0a 0c 0a 3b 3b 20 2a 20 48 65 6c 70 65 72 20 66 75 6e 63 74 iff-utils")....;;.*.Helper.funct
54060 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 6c 20 67 70 74 ions.and.vars..(defvar-local.gpt
54080 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 22 4c 69 73 74 el--rewrite-overlays.nil..."List
540a0 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 20 69 6e 20 74 .of.active.rewrite.overlays.in.t
540c0 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 2d 72 65 77 72 he.buffer.")..(defun.gptel--rewr
540e0 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 22 45 6e 73 75 ite-sanitize-overlays.()..."Ensu
54100 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 20 69 6e 20 62 re.gptel's.rewrite.overlays.in.b
54120 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 65 74 71 20 67 uffer.are.consistent."...(setq.g
54140 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6f 76 65 72 6c 61 79 73 0a 20 20 20 20 20 20 20 20 28 ptel--rewrite-overlays.........(
54160 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 62 75 66 66 65 cl-delete-if-not.#'overlay-buffe
54180 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 67 70 74 65 r...........................gpte
541a0 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 66 76 61 72 20 l--rewrite-overlays)))..(defvar.
541c0 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 69 6c 0a 20 20 gptel--set-buffer-locally.nil...
541e0 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 60 67 70 74 65 "Set.model.parameters.from.`gpte
54200 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 66 65 63 74 73 l-menu'.buffer-locally...Affects
54220 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 0a 28 64 65 66 .the.system.message.too.")..(def
54240 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 79 6d 20 76 61 un.gptel--set-with-scope.(sym.va
54260 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 20 53 59 4d 42 lue.&optional.scope)..."Set.SYMB
54280 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 77 69 74 68 20 OL's.symbol-value.to.VALUE.with.
542a0 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 69 74 20 62 75 SCOPE...If.SCOPE.is.t,.set.it.bu
542c0 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 2c 20 72 65 73 ffer-locally..If.SCOPE.is.1,.res
542e0 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 72 65 71 75 65 et.it.after.the.next.gptel-reque
54300 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 65 61 72 20 61 st..(oneshot).Otherwise,.clear.a
54320 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 65 74 20 69 74 ny.buffer-local.value.and.set.it
54340 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 28 70 63 61 73 s.default.global.value."...(pcas
54360 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 74 65 6c 2d 68 e.scope.....(1.(put.sym.'gptel-h
54380 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 20 20 20 20 20 istory.(symbol-value.sym))......
543a0 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 65 74 72 65 63 ..(set.sym.value)........(letrec
543c0 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 20 20 20 20 20 .((restore-value................
543e0 20 20 28 6c 61 6d 62 64 61 20 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..(lambda.()....................
54400 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 71 75 65 73 74 (remove-hook.'gptel-post-request
54420 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 20 20 20 20 20 -hook.restore-value)............
54440 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 20 20 3b 20 52 ........(run-at-time.........;.R
54460 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 62 69 6e 64 69 equired.to.work.around.let.bindi
54480 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 69 6c 20 28 6c ngs.....................0.nil.(l
544a0 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 65 20 74 68 69 ambda.(s)........;.otherwise.thi
544c0 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 20 20 20 20 20 s.change.is.overwritten!........
544e0 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 20 28 67 65 74 .....................(set.s.(get
54500 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 20 20 20 20 20 .s.'gptel-history)).............
54520 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 65 6c 2d 68 69 ................(put.s.'gptel-hi
54540 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 20 20 20 20 20 story.nil)).....................
54560 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 27 67 70 74 65 sym))))..........(add-hook.'gpte
54580 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 2d 76 61 6c 75 l-post-request-hook.restore-valu
545a0 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 61 6c 2d 76 61 e))).....('t.(set.(make-local-va
545c0 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 28 6b 69 6c 6c riable.sym).value)).....(_.(kill
545e0 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 20 28 73 65 74 -local-variable.sym)........(set
54600 20 73 79 6d 20 76 61 6c 75 65 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 67 65 .sym.value))))..(defun.gptel--ge
54620 74 2d 64 69 72 65 63 74 69 76 65 20 28 61 72 67 73 29 0a 20 20 22 46 69 6e 64 20 74 68 65 20 61 t-directive.(args)..."Find.the.a
54640 64 64 69 74 69 6f 6e 61 6c 20 64 69 72 65 63 74 69 76 65 20 69 6e 20 74 68 65 20 74 72 61 6e 73 dditional.directive.in.the.trans
54660 69 65 6e 74 20 41 52 47 53 2e 0a 0a 4d 65 61 6e 74 20 74 6f 20 62 65 20 63 61 6c 6c 65 64 20 77 ient.ARGS...Meant.to.be.called.w
54680 68 65 6e 20 60 67 70 74 65 6c 2d 6d 65 6e 75 27 20 69 73 20 61 63 74 69 76 65 2e 22 0a 20 20 28 hen.`gptel-menu'.is.active."...(
546a0 63 6c 2d 73 6f 6d 65 20 28 6c 61 6d 62 64 61 20 28 73 29 20 28 61 6e 64 20 28 73 74 72 69 6e 67 cl-some.(lambda.(s).(and.(string
546c0 70 20 73 29 20 28 73 74 72 69 6e 67 2d 70 72 65 66 69 78 2d 70 20 22 3a 22 20 73 29 0a 20 20 20 p.s).(string-prefix-p.":".s)....
546e0 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 20 73 ....................(substring.s
54700 20 31 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 72 67 73 29 29 0a 0a .1)))...................args))..
54720 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 69 6e 73 74 72 75 63 74 69 6f 6e 73 2d 6d 61 6b 65 2d (defun.gptel--instructions-make-
54740 6f 76 65 72 6c 61 79 20 28 74 65 78 74 20 26 6f 70 74 69 6f 6e 61 6c 20 6f 76 29 0a 20 20 22 4d overlay.(text.&optional.ov)..."M
54760 61 6b 65 20 6f 72 20 6d 6f 76 65 20 6f 76 65 72 6c 61 79 20 4f 56 20 77 69 74 68 20 54 45 58 54 ake.or.move.overlay.OV.with.TEXT
54780 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 3b 3b 20 4d 6f 76 65 ."...(save-excursion.....;;.Move
547a0 20 70 6f 69 6e 74 20 74 6f 20 6f 76 65 72 6c 61 79 20 70 6f 73 69 74 69 6f 6e 0a 20 20 20 20 28 .point.to.overlay.position.....(
547c0 63 6f 6e 64 0a 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 cond......((use-region-p).......
547e0 28 69 66 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 72 65 (if.(pos-visible-in-window-p.(re
54800 67 69 6f 6e 2d 62 65 67 69 6e 6e 69 6e 67 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f gion-beginning))...........(goto
54820 2d 63 68 61 72 20 28 72 65 67 69 6f 6e 2d 62 65 67 69 6e 6e 69 6e 67 29 29 29 29 0a 20 20 20 20 -char.(region-beginning)))).....
54840 20 28 28 67 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 20 20 28 .((gptel--in-response-p).......(
54860 67 70 74 65 6c 2d 62 65 67 69 6e 6e 69 6e 67 2d 6f 66 2d 72 65 73 70 6f 6e 73 65 29 0a 20 20 20 gptel-beginning-of-response)....
54880 20 20 20 28 73 6b 69 70 2d 63 68 61 72 73 2d 66 6f 72 77 61 72 64 20 22 5c 6e 20 5c 74 22 29 29 ...(skip-chars-forward."\n.\t"))
548a0 0a 20 20 20 20 20 28 74 20 28 74 65 78 74 2d 70 72 6f 70 65 72 74 79 2d 73 65 61 72 63 68 2d 62 ......(t.(text-property-search-b
548c0 61 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 ackward.'gptel.'response).......
548e0 20 20 28 73 6b 69 70 2d 63 68 61 72 73 2d 66 6f 72 77 61 72 64 20 22 5c 6e 20 5c 74 22 29 29 29 ..(skip-chars-forward."\n.\t")))
54900 0a 20 20 20 20 3b 3b 20 4d 61 6b 65 20 6f 76 65 72 6c 61 79 0a 20 20 20 20 28 69 66 20 28 61 6e .....;;.Make.overlay.....(if.(an
54920 64 20 6f 76 20 28 6f 76 65 72 6c 61 79 70 20 6f 76 29 29 0a 20 20 20 20 20 20 20 20 28 6d 6f 76 d.ov.(overlayp.ov)).........(mov
54940 65 2d 6f 76 65 72 6c 61 79 20 6f 76 20 28 70 6f 69 6e 74 29 20 28 70 6f 69 6e 74 29 20 28 63 75 e-overlay.ov.(point).(point).(cu
54960 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29 0a 20 20 20 20 20 20 28 73 65 74 71 20 6f 76 20 28 6d rrent-buffer)).......(setq.ov.(m
54980 61 6b 65 2d 6f 76 65 72 6c 61 79 20 28 70 6f 69 6e 74 29 20 28 70 6f 69 6e 74 29 20 6e 69 6c 20 ake-overlay.(point).(point).nil.
549a0 74 29 29 29 0a 20 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75 74 20 6f 76 20 27 62 65 66 6f 72 65 t))).....(overlay-put.ov.'before
549c0 2d 73 74 72 69 6e 67 20 6e 69 6c 29 0a 20 20 20 20 3b 3b 20 28 75 6e 6c 65 73 73 20 28 6f 72 20 -string.nil).....;;.(unless.(or.
549e0 28 62 6f 62 70 29 20 28 65 71 20 28 63 68 61 72 2d 62 65 66 6f 72 65 29 20 22 5c 6e 22 29 29 0a (bobp).(eq.(char-before)."\n")).
54a00 20 20 20 20 3b 3b 20 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 ....;;...(overlay-put.ov.'before
54a20 2d 73 74 72 69 6e 67 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 5c 6e 22 20 27 66 6f 6e 74 2d 6c -string.(propertize."\n".'font-l
54a40 6f 63 6b 2d 66 61 63 65 20 27 73 68 61 64 6f 77 29 29 29 0a 20 20 20 20 28 6f 76 65 72 6c 61 79 ock-face.'shadow))).....(overlay
54a60 2d 70 75 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 28 6f -put.ov.'category.'gptel).....(o
54a80 76 65 72 6c 61 79 2d 70 75 74 0a 20 20 20 20 20 6f 76 20 27 61 66 74 65 72 2d 73 74 72 69 6e 67 verlay-put......ov.'after-string
54aa0 0a 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 28 63 6f 6e 63 61 ......(concat.(propertize.(conca
54ac0 74 20 22 44 49 52 45 43 54 49 56 45 3a 20 22 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 20 20 t."DIRECTIVE:.".text)...........
54ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 66 6f 6e 74 2d 6c 6f 63 6b 2d 66 61 63 65 20 27 ...............'font-lock-face.'
54b00 28 3a 69 6e 68 65 72 69 74 20 73 68 61 64 6f 77 20 3a 77 65 69 67 68 74 20 62 6f 6c 64 20 20 3a (:inherit.shadow.:weight.bold..:
54b20 62 6f 78 20 74 29 29 0a 20 20 20 20 20 20 22 5c 6e 22 29 29 0a 20 20 20 20 6f 76 29 29 0a 0a 28 box.t))......."\n")).....ov))..(
54b40 64 65 66 63 6f 6e 73 74 20 67 70 74 65 6c 2d 2d 72 65 61 64 2d 77 69 74 68 2d 70 72 65 66 69 78 defconst.gptel--read-with-prefix
54b60 2d 68 65 6c 70 0a 20 20 28 63 6f 6e 63 61 74 0a 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 -help...(concat....(propertize."
54b80 28 22 20 27 66 61 63 65 20 27 64 65 66 61 75 6c 74 29 0a 20 20 20 28 70 72 6f 70 65 72 74 69 7a (".'face.'default)....(propertiz
54ba0 65 20 22 54 41 42 22 20 27 66 61 63 65 20 27 68 65 6c 70 2d 6b 65 79 2d 62 69 6e 64 69 6e 67 29 e."TAB".'face.'help-key-binding)
54bc0 0a 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 3a 20 65 78 70 61 6e 64 2c 20 22 20 27 66 61 ....(propertize.":.expand,.".'fa
54be0 63 65 20 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 6e ce.'default)....(propertize."M-n
54c00 22 20 27 66 61 63 65 20 27 68 65 6c 70 2d 6b 65 79 2d 62 69 6e 64 69 6e 67 29 0a 20 20 20 28 70 ".'face.'help-key-binding)....(p
54c20 72 6f 70 65 72 74 69 7a 65 20 22 2f 22 20 27 66 61 63 65 20 27 64 65 66 61 75 6c 74 29 0a 20 20 ropertize."/".'face.'default)...
54c40 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 4d 2d 70 22 20 27 66 61 63 65 20 27 68 65 6c 70 2d 6b .(propertize."M-p".'face.'help-k
54c60 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 6e 65 ey-binding)....(propertize.":.ne
54c80 78 74 2f 70 72 65 76 69 6f 75 73 29 20 22 20 27 66 61 63 65 20 27 64 65 66 61 75 6c 74 29 29 0a xt/previous).".'face.'default)).
54ca0 20 20 22 48 65 6c 70 20 73 74 72 69 6e 67 20 3b 54 4f 44 4f 3a 20 22 29 0a 0a 28 64 65 66 75 6e .."Help.string.;TODO:.")..(defun
54cc0 20 67 70 74 65 6c 2d 2d 72 65 61 64 2d 77 69 74 68 2d 70 72 65 66 69 78 20 28 70 72 65 66 69 78 .gptel--read-with-prefix.(prefix
54ce0 29 0a 20 20 22 53 68 6f 77 20 73 74 72 69 6e 67 20 50 52 45 46 49 58 20 69 6e 20 74 68 65 20 6d )..."Show.string.PREFIX.in.the.m
54d00 69 6e 69 62 75 66 66 65 72 20 61 66 74 65 72 20 74 68 65 20 6d 69 6e 69 62 75 66 66 65 72 20 70 inibuffer.after.the.minibuffer.p
54d20 72 6f 6d 70 74 2e 0a 0a 50 52 45 46 49 58 20 69 73 20 73 68 6f 77 6e 20 69 6e 20 61 6e 20 6f 76 rompt...PREFIX.is.shown.in.an.ov
54d40 65 72 6c 61 79 2e 20 20 52 65 70 65 61 74 65 64 20 63 61 6c 6c 73 20 74 6f 20 74 68 69 73 20 66 erlay...Repeated.calls.to.this.f
54d60 75 6e 63 74 69 6f 6e 0a 77 69 6c 6c 20 74 6f 67 67 6c 65 20 69 74 73 20 76 69 73 69 62 69 6c 69 unction.will.toggle.its.visibili
54d80 74 79 20 73 74 61 74 65 2e 22 0a 20 20 28 75 6e 6c 65 73 73 20 28 6d 69 6e 69 62 75 66 66 65 72 ty.state."...(unless.(minibuffer
54da0 70 29 0a 20 20 20 20 28 75 73 65 72 2d 65 72 72 6f 72 20 22 54 68 69 73 20 63 6f 6d 6d 61 6e 64 p).....(user-error."This.command
54dc0 20 69 73 20 69 6e 74 65 6e 64 65 64 20 74 6f 20 62 65 20 75 73 65 64 20 69 6e 20 74 68 65 20 6d .is.intended.to.be.used.in.the.m
54de0 69 6e 69 62 75 66 66 65 72 2e 22 29 29 0a 20 20 28 6c 65 74 2a 20 28 28 75 70 64 61 74 65 0a 20 inibuffer."))...(let*.((update..
54e00 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 6f 76 20 73 29 0a 20 20 20 20 20 20 20 20 20 ........(lambda.(ov.s)..........
54e20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 76 20 27 61 ..(overlay-put.............ov.'a
54e40 66 74 65 72 2d 73 74 72 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 73 20 28 fter-string.............(and.s.(
54e60 63 6f 6e 63 61 74 20 28 70 72 6f 70 65 72 74 69 7a 65 20 28 63 6f 6e 63 61 74 20 22 5c 6e 22 20 concat.(propertize.(concat."\n".
54e80 73 20 22 5c 6e 22 29 20 27 66 61 63 65 20 27 73 68 61 64 6f 77 29 0a 20 20 20 20 20 20 20 20 20 s."\n").'face.'shadow)..........
54ea0 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 65 70 61 72 61 74 6f ..................(make-separato
54ec0 72 2d 6c 69 6e 65 29 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 6d 61 78 2d 77 69 64 74 68 r-line))))))..........(max-width
54ee0 20 28 2d 20 28 77 69 6e 64 6f 77 2d 77 69 64 74 68 29 20 28 6d 69 6e 69 62 75 66 66 65 72 2d 70 .(-.(window-width).(minibuffer-p
54f00 72 6f 6d 70 74 2d 65 6e 64 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 6d 61 78 20 28 6f 72 20 6d rompt-end)))..........(max.(or.m
54f20 61 78 2d 6d 69 6e 69 2d 77 69 6e 64 6f 77 2d 68 65 69 67 68 74 20 30 2e 34 29 29 0a 20 20 20 20 ax-mini-window-height.0.4)).....
54f40 20 20 20 20 20 28 6d 61 78 2d 68 65 69 67 68 74 20 28 2d 20 28 6f 72 20 28 61 6e 64 20 28 6e 61 .....(max-height.(-.(or.(and.(na
54f60 74 6e 75 6d 70 20 6d 61 78 29 20 6d 61 78 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 tnump.max).max).................
54f80 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6c 6f 6f 72 20 28 2a 20 6d 61 78 20 28 66 72 61 6d 65 ............(floor.(*.max.(frame
54fa0 2d 68 65 69 67 68 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -height)))).....................
54fc0 20 20 20 20 35 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 28 61 6e 64 20 70 72 65 66 69 78 20 28 ....5))).....(when.(and.prefix.(
54fe0 6e 6f 74 20 28 73 74 72 69 6e 67 2d 65 6d 70 74 79 2d 70 20 70 72 65 66 69 78 29 29 20 28 3e 20 not.(string-empty-p.prefix)).(>.
55000 6d 61 78 2d 68 65 69 67 68 74 20 31 29 29 0a 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 76 69 73 max-height.1)).......(unless.vis
55020 75 61 6c 2d 6c 69 6e 65 2d 6d 6f 64 65 20 28 76 69 73 75 61 6c 2d 6c 69 6e 65 2d 6d 6f 64 65 20 ual-line-mode.(visual-line-mode.
55040 31 29 29 0a 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 6d 69 6e 69 62 75 66 66 65 72 1)).......(goto-char.(minibuffer
55060 2d 70 72 6f 6d 70 74 2d 65 6e 64 29 29 0a 20 20 20 20 20 20 28 70 63 61 73 65 2d 6c 65 74 20 28 -prompt-end)).......(pcase-let.(
55080 28 60 28 2c 70 72 6f 70 20 2e 20 2c 6f 76 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (`(,prop...,ov).................
550a0 20 20 20 28 67 65 74 2d 63 68 61 72 2d 70 72 6f 70 65 72 74 79 2d 61 6e 64 2d 6f 76 65 72 6c 61 ...(get-char-property-and-overla
550c0 79 0a 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 y.....................(point-min
550e0 29 20 27 67 70 74 65 6c 29 29 29 0a 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 6f 76 0a 20 ).'gptel))).........(unless.ov..
55100 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 6f 76 20 28 6d 61 6b 65 2d 6f 76 65 72 6c 61 79 0a .........(setq.ov.(make-overlay.
55120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 ....................(point-min).
55140 28 6d 69 6e 69 62 75 66 66 65 72 2d 70 72 6f 6d 70 74 2d 65 6e 64 29 20 6e 69 6c 20 74 29 29 29 (minibuffer-prompt-end).nil.t)))
55160 0a 20 20 20 20 20 20 20 20 28 70 63 61 73 65 20 70 72 6f 70 0a 20 20 20 20 20 20 20 20 20 20 28 .........(pcase.prop...........(
55180 27 70 61 72 74 69 61 6c 0a 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 3e 20 28 6c 65 6e 67 'partial............(if.(>.(leng
551a0 74 68 20 70 72 65 66 69 78 29 20 6d 61 78 2d 77 69 64 74 68 29 0a 20 20 20 20 20 20 20 20 20 20 th.prefix).max-width)...........
551c0 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 28 6f 76 .....(progn..................(ov
551e0 65 72 6c 61 79 2d 70 75 74 20 6f 76 20 27 67 70 74 65 6c 20 27 70 72 65 66 69 78 29 0a 20 20 20 erlay-put.ov.'gptel.'prefix)....
55200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 64 69 73 70 2d 73 69 7a 65 0a 20 ..............(let.((disp-size..
55220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 20 .......................(cl-loop.
55240 66 6f 72 20 63 68 61 72 20 61 63 72 6f 73 73 20 70 72 65 66 69 78 0a 20 20 20 20 20 20 20 20 20 for.char.across.prefix..........
55260 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 6f 72 20 69 64 78 20 ........................for.idx.
55280 75 70 66 72 6f 6d 20 30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 upfrom.0........................
552a0 20 20 20 20 20 20 20 20 20 20 77 69 74 68 20 6e 20 3d 20 30 20 77 69 74 68 20 6d 61 78 2d 6c 65 ..........with.n.=.0.with.max-le
552c0 6e 67 74 68 20 3d 20 28 2a 20 6d 61 78 2d 68 65 69 67 68 74 20 6d 61 78 2d 77 69 64 74 68 29 0a ngth.=.(*.max-height.max-width).
552e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
55300 20 69 66 20 28 65 71 20 63 68 61 72 20 3f 5c 6e 29 20 64 6f 20 28 63 6c 2d 69 6e 63 66 20 6e 29 .if.(eq.char.?\n).do.(cl-incf.n)
55320 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
55340 20 20 69 66 20 28 3e 20 6e 20 6d 61 78 2d 68 65 69 67 68 74 29 20 72 65 74 75 72 6e 20 69 64 78 ..if.(>.n.max-height).return.idx
55360 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
55380 20 20 69 66 20 28 3e 20 69 64 78 20 6d 61 78 2d 6c 65 6e 67 74 68 29 0a 20 20 20 20 20 20 20 20 ..if.(>.idx.max-length).........
553a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 .........................return.
553c0 69 64 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 idx.............................
553e0 20 20 20 20 20 66 69 6e 61 6c 6c 79 20 72 65 74 75 72 6e 20 6e 69 6c 29 29 29 0a 20 20 20 20 20 .....finally.return.nil)))......
55400 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 61 74 65 20 6f 76 ..............(funcall.update.ov
55420 0a 20 20 20 20 20 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
55440 20 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......................
55460 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
55480 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 20 20 20 20 idth............................
554a0 20 20 20 20 20 20 70 72 65 66 69 78 20 64 69 73 70 2d 73 69 7a 65 20 20 6e 69 6c 20 6e 69 6c 20 ......prefix.disp-size..nil.nil.
554c0 27 65 6c 6c 69 70 73 69 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 'ellipsis)......................
554e0 20 20 20 20 20 20 20 20 20 70 72 65 66 69 78 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 .........prefix)))).............
55500 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 65 29 0a 20 .(overlay-put.ov.'gptel.'hide)..
55520 20 20 20 20 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 6e ............(funcall.update.ov.n
55540 69 6c 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 27 70 72 65 66 69 78 20 28 6f 76 65 72 6c 61 il)))...........('prefix.(overla
55560 79 2d 70 75 74 20 6f 76 20 27 67 70 74 65 6c 20 27 68 69 64 65 29 0a 20 20 20 20 20 20 20 20 20 y-put.ov.'gptel.'hide)..........
55580 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 6e 69 6c 29 29 ........(funcall.update.ov.nil))
555a0 0a 20 20 20 20 20 20 20 20 20 20 28 5f 20 28 6f 76 65 72 6c 61 79 2d 70 75 74 20 6f 76 20 27 67 ...........(_.(overlay-put.ov.'g
555c0 70 74 65 6c 20 27 70 61 72 74 69 61 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e ptel.'partial)..............(fun
555e0 63 61 6c 6c 20 75 70 64 61 74 65 20 6f 76 20 28 74 72 75 6e 63 61 74 65 2d 73 74 72 69 6e 67 2d call.update.ov.(truncate-string-
55600 74 6f 2d 77 69 64 74 68 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 to-width........................
55620 20 20 20 20 20 20 20 20 20 20 70 72 65 66 69 78 20 6d 61 78 2d 77 69 64 74 68 20 6e 69 6c 20 6e ..........prefix.max-width.nil.n
55640 69 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 il..............................
55660 20 20 20 20 27 65 6c 6c 69 70 73 69 73 29 29 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 ....'ellipsis))))))))..(defun.gp
55680 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 20 28 70 72 6f 6d tel--transient-read-number.(prom
556a0 70 74 20 5f 69 6e 69 74 69 61 6c 2d 69 6e 70 75 74 20 68 69 73 74 6f 72 79 29 0a 20 20 22 52 65 pt._initial-input.history)..."Re
556c0 61 64 20 61 20 6e 75 6d 65 72 69 63 20 76 61 6c 75 65 20 66 72 6f 6d 20 74 68 65 20 6d 69 6e 69 ad.a.numeric.value.from.the.mini
556e0 62 75 66 66 65 72 2e 0a 0a 50 52 4f 4d 50 54 2c 20 5f 49 4e 49 54 49 41 4c 2d 49 4e 50 55 54 20 buffer...PROMPT,._INITIAL-INPUT.
55700 61 6e 64 20 48 49 53 54 4f 52 59 20 61 72 65 20 61 73 20 69 6e 20 74 68 65 20 74 72 61 6e 73 69 and.HISTORY.are.as.in.the.transi
55720 65 6e 74 20 72 65 61 64 65 72 0a 64 6f 63 75 6d 65 6e 74 69 6f 6e 2e 20 20 52 65 74 75 72 6e 20 ent.reader.documention...Return.
55740 6e 69 6c 20 69 66 20 75 73 65 72 20 64 6f 65 73 20 6e 6f 74 20 70 72 6f 76 69 64 65 20 61 20 6e nil.if.user.does.not.provide.a.n
55760 75 6d 62 65 72 2c 20 66 6f 72 20 64 65 66 61 75 6c 74 2e 22 0a 20 20 3b 3b 20 57 6f 72 6b 61 72 umber,.for.default."...;;.Workar
55780 6f 75 6e 64 20 66 6f 72 20 62 75 67 67 79 20 74 72 61 6e 73 69 65 6e 74 20 62 65 68 61 76 69 6f ound.for.buggy.transient.behavio
557a0 75 72 20 77 68 65 6e 20 64 65 61 6c 69 6e 67 20 77 69 74 68 0a 20 20 3b 3b 20 6e 6f 6e 2d 73 74 ur.when.dealing.with...;;.non-st
557c0 72 69 6e 67 20 76 61 6c 75 65 73 2e 20 20 53 65 65 3a 20 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 ring.values...See:.https://githu
557e0 62 2e 63 6f 6d 2f 6d 61 67 69 74 2f 74 72 61 6e 73 69 65 6e 74 2f 69 73 73 75 65 73 2f 31 37 32 b.com/magit/transient/issues/172
55800 0a 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 76 61 6c 20 28 73 79 6d 62 6f 6c 2d 76 61 6c 75 ...(when-let*.((val.(symbol-valu
55820 65 20 68 69 73 74 6f 72 79 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 28 6e 6f 74 20 28 73 74 72 e.history))).....(when.(not.(str
55840 69 6e 67 70 20 28 63 61 72 20 76 61 6c 29 29 29 0a 20 20 20 20 20 20 28 73 65 74 63 61 72 20 76 ingp.(car.val))).......(setcar.v
55860 61 6c 20 28 6e 75 6d 62 65 72 2d 74 6f 2d 73 74 72 69 6e 67 20 28 63 61 72 20 76 61 6c 29 29 29 al.(number-to-string.(car.val)))
55880 29 29 0a 20 20 28 6c 65 74 2a 20 28 28 6d 69 6e 69 62 75 66 66 65 72 2d 64 65 66 61 75 6c 74 2d ))...(let*.((minibuffer-default-
558a0 70 72 6f 6d 70 74 2d 66 6f 72 6d 61 74 20 22 22 29 0a 09 20 28 6e 75 6d 20 28 72 65 61 64 2d 6e prompt-format."")...(num.(read-n
558c0 75 6d 62 65 72 20 70 72 6f 6d 70 74 20 2d 31 20 68 69 73 74 6f 72 79 29 29 29 0a 20 20 20 20 28 umber.prompt.-1.history))).....(
558e0 69 66 20 28 3d 20 6e 75 6d 20 2d 31 29 20 6e 69 6c 20 6e 75 6d 29 29 29 0a 0a 28 64 65 66 75 6e if.(=.num.-1).nil.num)))..(defun
55900 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 20 28 26 6f .gptel-system-prompt--format.(&o
55920 70 74 69 6f 6e 61 6c 20 6d 65 73 73 61 67 65 29 0a 20 20 22 46 6f 72 6d 61 74 20 74 68 65 20 73 ptional.message)..."Format.the.s
55940 79 73 74 65 6d 20 4d 45 53 53 41 47 45 20 66 6f 72 20 64 69 73 70 6c 61 79 20 69 6e 20 67 70 74 ystem.MESSAGE.for.display.in.gpt
55960 65 6c 27 73 20 74 72 61 6e 73 69 65 6e 74 20 6d 65 6e 75 73 2e 0a 0a 48 61 6e 64 6c 65 20 66 6f el's.transient.menus...Handle.fo
55980 72 6d 61 74 74 69 6e 67 20 66 6f 72 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 73 20 77 68 65 rmatting.for.system.messages.whe
559a0 6e 20 74 68 65 20 61 63 74 69 76 65 0a 60 67 70 74 65 6c 2d 6d 6f 64 65 6c 27 20 64 6f 65 73 20 n.the.active.`gptel-model'.does.
559c0 6e 6f 74 20 73 75 70 70 6f 72 74 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 73 2e 22 0a 20 20 not.support.system.messages."...
559e0 28 73 65 74 71 20 6d 65 73 73 61 67 65 20 28 6f 72 20 6d 65 73 73 61 67 65 20 67 70 74 65 6c 2d (setq.message.(or.message.gptel-
55a00 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 29 29 0a 20 20 28 69 66 20 28 67 70 74 65 6c 2d 2d -system-message))...(if.(gptel--
55a20 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 0a 20 20 20 20 20 model-capable-p.'nosystem)......
55a40 20 28 63 6f 6e 63 61 74 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 5b 4e 6f 20 73 79 73 74 65 6d .(concat.(propertize."[No.system
55a60 20 6d 65 73 73 61 67 65 20 73 75 70 70 6f 72 74 20 66 6f 72 20 6d 6f 64 65 6c 20 22 0a 20 20 20 .message.support.for.model."....
55a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 66 61 63 65 20 27 74 72 .......................'face.'tr
55aa0 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 28 ansient-heading)...............(
55ac0 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 6e 61 6d 65 20 67 70 propertize.(gptel--model-name.gp
55ae0 74 65 6c 2d 6d 6f 64 65 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 tel-model)......................
55b00 20 20 20 20 20 27 66 61 63 65 20 27 77 61 72 6e 69 6e 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 .....'face.'warning)............
55b20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 5d 22 20 27 66 61 63 65 20 27 74 72 61 6e 73 69 ...(propertize."]".'face.'transi
55b40 65 6e 74 2d 68 65 61 64 69 6e 67 29 29 0a 20 20 20 20 28 69 66 20 6d 65 73 73 61 67 65 0a 20 20 ent-heading)).....(if.message...
55b60 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 74 69 76 65 ......(gptel--describe-directive
55b80 0a 20 20 20 20 20 20 20 20 20 6d 65 73 73 61 67 65 20 28 6d 61 78 20 28 2d 20 28 77 69 6e 64 6f ..........message.(max.(-.(windo
55ba0 77 2d 77 69 64 74 68 29 20 31 32 29 20 31 34 29 20 22 e2 ae 90 20 22 29 0a 20 20 20 20 20 20 22 w-width).12).14)."....")......."
55bc0 5b 4e 6f 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 20 73 65 74 5d 22 29 29 29 0a 0a 28 64 65 [No.system.message.set]")))..(de
55be0 66 75 6e 20 67 70 74 65 6c 2d 2d 74 6f 6f 6c 73 2d 69 6e 69 74 2d 76 61 6c 75 65 20 28 6f 62 6a fun.gptel--tools-init-value.(obj
55c00 29 0a 20 20 22 53 65 74 20 74 68 65 20 69 6e 69 74 69 61 6c 20 73 74 61 74 65 20 6f 66 20 61 20 )..."Set.the.initial.state.of.a.
55c20 74 6f 6f 6c 20 4f 42 4a 20 69 6e 20 60 67 70 74 65 6c 2d 74 6f 6f 6c 73 27 2e 0a 0a 4f 42 4a 20 tool.OBJ.in.`gptel-tools'...OBJ.
55c40 69 73 20 61 20 74 6f 6f 6c 2d 69 6e 66 69 78 20 6f 66 20 74 79 70 65 20 60 67 70 74 65 6c 2d 2d is.a.tool-infix.of.type.`gptel--
55c60 73 77 69 74 63 68 27 2e 22 0a 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 6e 61 6d 65 20 28 63 switch'."...(when-let*.((name.(c
55c80 61 72 20 28 6d 65 6d 62 65 72 20 28 6f 72 65 66 20 6f 62 6a 20 61 72 67 75 6d 65 6e 74 29 0a 20 ar.(member.(oref.obj.argument)..
55ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
55cc0 28 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 (mapcar.#'gptel-tool-name.gptel-
55ce0 74 6f 6f 6c 73 29 29 29 29 29 0a 20 20 20 20 28 6f 73 65 74 20 6f 62 6a 20 76 61 6c 75 65 20 28 tools))))).....(oset.obj.value.(
55d00 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 29 29 29 list.(oref.obj.category).name)))
55d20 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 64 2d 70 )..(defvar.gptel--crowdsourced-p
55d40 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 68 75 62 rompts-url..."https://raw.github
55d60 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 74 67 70 usercontent.com/f/awesome-chatgp
55d80 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 20 22 55 t-prompts/main/prompts.csv"..."U
55da0 52 4c 20 66 6f 72 20 63 72 6f 77 64 73 6f 75 72 63 65 64 20 4c 4c 4d 20 73 79 73 74 65 6d 20 70 RL.for.crowdsourced.LLM.system.p
55dc0 72 6f 6d 70 74 73 2e 22 29 0a 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d 2d 63 72 6f 77 64 73 rompts.")..(defvar.gptel--crowds
55de0 6f 75 72 63 65 64 2d 70 72 6f 6d 70 74 73 0a 20 20 28 6d 61 6b 65 2d 68 61 73 68 2d 74 61 62 6c ourced-prompts...(make-hash-tabl
55e00 65 20 3a 74 65 73 74 20 23 27 65 71 75 61 6c 29 0a 20 20 22 43 72 6f 77 64 73 6f 75 72 63 65 64 e.:test.#'equal)..."Crowdsourced
55e20 20 4c 4c 4d 20 73 79 73 74 65 6d 20 70 72 6f 6d 70 74 73 2e 22 29 0a 0a 28 64 65 66 75 6e 20 67 .LLM.system.prompts.")..(defun.g
55e40 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 65 61 64 ptel--read-csv-column.()..."Read
55e60 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 6e 74 20 .next.CSV.column.in.the.current.
55e80 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 20 61 6e buffer...Supports.both.quoted.an
55ea0 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 30 29 2e d.non-quoted.columns.(RFC.4180).
55ec0 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 20 20 28 "...(let.((start.(point))).....(
55ee0 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 6c 75 6d unless.(eolp).......(let.((colum
55f00 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 3f 5c 22 n.......(if.(eq.(char-after).?\"
55f20 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 20 22 5c )....(when.(re-search-forward."\
55f40 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 65 6e 64 ",\\|\"$".nil.t)......(let.((end
55f60 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 20 28 62 .(match-beginning.0)))........(b
55f80 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 2b uffer-substring-no-properties.(+
55fa0 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 29 20 65 .start.1).(if.(eolp).(-.end.1).e
55fc0 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 66 6f 72 nd)))).........(when.(search-for
55fe0 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 74 29 0a ward.",".(line-end-position).t).
56000 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 67 20 30 ...(let.((end.(match-beginning.0
56020 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 2d 70 72 )))......(buffer-substring-no-pr
56040 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 72 69 6e operties.start.end))))))..(strin
56060 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 29 29 29 g-replace."\"\""."\"".column))))
56080 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 2d 70 72 )..(defun.gptel--crowdsourced-pr
560a0 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 63 72 6f ompts.()..."Acquire.and.read.cro
560c0 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 0a 0a 54 wdsourced.LLM.system.prompts...T
560e0 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 6c 65 20 hese.are.stored.in.the.variable.
56100 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 2c 0a 77 `gptel--crowdsourced-prompts',.w
56120 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 65 2d 70 hich.see."...(when.(hash-table-p
56140 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 0a 20 20 .gptel--crowdsourced-prompts)...
56160 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 70 74 65 ..(when.(hash-table-empty-p.gpte
56180 6c 2d 2d 63 72 6f 77 64 73 6f 75 72 63 65 64 2d 70 72 6f 6d 70 74 73 29 0a 20 20 20 20 20 20 28 l--crowdsourced-prompts).......(
561a0 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 6d 70 74 unless.gptel-crowdsourced-prompt
561c0 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 20 6e 69 s-file.........(run-at-time.0.ni
561e0 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 20 20 20 l.#'gptel-system-prompt)........
56200 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 20 70 72 .(user-error."No.crowdsourced.pr
56220 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 65 73 73 ompts.available")).......(unless
56240 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 6f 77 64 .(and.(file-exists-p.gptel-crowd
56260 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 20 20 20 sourced-prompts-file)...........
56280 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 20 20 20 .........(time-less-p...........
562a0 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 72 65 6e ..........(time-subtract.(curren
562c0 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 20 20 20 t-time).(days-to-time.14))......
562e0 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 65 2d 6d ...............(file-attribute-m
56300 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 20 20 20 odification-time................
56320 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 63 72 6f ......(file-attributes.gptel-cro
56340 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 20 20 20 wdsourced-prompts-file))))......
56360 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 20 20 20 ...(when.(y-or-n-p..............
56380 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 74 63 68 ..(concat................."Fetch
563a0 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 66 72 6f .crowdsourced.system.prompts.fro
563c0 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 7a 65 20 m.".................(propertize.
563e0 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 2d 63 68 "https://github.com/f/awesome-ch
56400 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 20 20 20 atgpt-prompts".'face.'link).....
56420 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 3b 20 46 ............"?"))...........;;.F
56440 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 22 46 65 etch.file...........(message."Fe
56460 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 20 28 6c tching.prompts...")...........(l
56480 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 20 67 70 et.((dir.(file-name-directory.gp
564a0 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 29 29 29 tel-crowdsourced-prompts-file)))
564c0 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 69 73 74 .............(unless.(file-exist
564e0 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 61 72 65 s-p.dir).(mkdir.dir.'create-pare
56500 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 70 79 2d nts)).............(if.(url-copy-
56520 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 70 74 73 file.gptel--crowdsourced-prompts
56540 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 20 20 20 -url............................
56560 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 73 2d 66 ....gptel-crowdsourced-prompts-f
56580 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 20 20 20 ile.............................
565a0 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 6d 65 73 ...'ok-if-already-exists)...(mes
565c0 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 65 2e 22 sage."Fetching.prompts....done."
565e0 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 6c 64 20 )...............(message."Could.
56600 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 29 29 0a not.retrieve.new.prompts."))))).
56620 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 2d 70 20 ......(if.(not.(file-readable-p.
56640 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 29 gptel-crowdsourced-prompts-file)
56660 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 4e 6f 20 )...........(progn.(message."No.
56680 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 65 22 29 crowdsourced.prompts.available")
566a0 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 61 63 74 ..................(call-interact
566c0 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 0a 20 20 ively.#'gptel-system-prompt))...
566e0 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 20 20 20 ......(with-temp-buffer.........
56700 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 2d 63 72 ..(insert-file-contents.gptel-cr
56720 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)........
56740 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 0a 20 20 20 20 20 ...(goto-char.(point-min))......
56760 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 20 20 20 .....(forward-line.1)...........
56780 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 6e 2d 6c (while.(not.(eobp))......(when-l
567a0 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 6c 75 6d et*.((act.(gptel--read-csv-colum
567c0 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 73 76 2d n))....(prompt.(gptel--read-csv-
567e0 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 70 74 20 column)))...(puthash.act.prompt.
56800 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 09 20 gptel--crowdsourced-prompts))...
56820 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 20 67 70 .....(forward-line.1))))).....gp
56840 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 28 64 65 tel--crowdsourced-prompts))..(de
56860 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 74 65 78 fun.gptel--describe-infix-contex
56880 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 74 2d 2d t.()...(if.(null.gptel-context--
568a0 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 65 74 2a alist)."Context".....(pcase-let*
568c0 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 6e 74 65 .........((contexts.(gptel-conte
568e0 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 72 2d 63 xt--collect))..........(buffer-c
56900 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 20 20 20 ount.(length.contexts)).........
56920 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 20 20 20 .(`(,file-count.,ov-count)......
56940 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 20 20 20 .....(if.(>.buffer-count.0).....
56960 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 69 6c 65 ..........(cl-loop.for.(buf-file
56980 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 20 20 20 ...ovs).in.contexts.............
569a0 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 6c 65 29 ...........if.(bufferp.buf-file)
569c0 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 6c 65 6e ........................sum.(len
569e0 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 20 20 20 gth.ovs).into.ov-count..........
56a00 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 69 6e 67 ..............else.count.(string
56a20 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 20 20 20 p.buf-file).into.file-count.....
56a40 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 72 ...................finally.retur
56a60 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 0a 20 20 n.(list.file-count.ov-count))...
56a80 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 20 28 63 ..........(list.0.0)))).......(c
56aa0 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 20 20 20 oncat."Context.("...............
56ac0 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 6f 6e 63 (propertize................(conc
56ae0 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 2d 63 6f at.................(and.(>.ov-co
56b00 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 66 6f 72 unt.0)......................(for
56b20 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 25 73 22 mat."%d.region%s.in.%d.buffer%s"
56b40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 76 ..............................ov
56b60 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 20 22 22 -count.(if.(>.ov-count.1)."s".""
56b80 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 )..............................(
56ba0 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 20 20 20 -.buffer-count.file-count)......
56bc0 20 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 20 28 ........................(if.(>.(
56be0 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 29 20 22 .-.buffer-count.file-count).1)."
56c00 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 20 28 3e s".""))).................(and.(>
56c20 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 20 20 20 .file-count.0)..................
56c40 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 20 20 20 ....(format."%s%d.file%s".......
56c60 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 20 6f 76 .......................(if.(>.ov
56c80 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 0a 20 20 -count.0).",."."").file-count...
56ca0 20 20 20 20 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.(
56cc0 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 20 20 20 >.file-count.1)."s".""))))......
56ce0 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 20 20 20 ..........'face.'warning).......
56d00 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 2d 2d 64 ........")"))))..(defun.gptel--d
56d20 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 63 72 69 escribe-suffix-send.()..."Descri
56d40 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 69 78 2d be.the.action.of.`gptel--suffix-
56d60 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 28 70 72 send'."...(cl-flet.((ptv.(s).(pr
56d80 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 20 20 20 opertize.s.'face.'warning)).....
56da0 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 73 20 27 ........(pth.(s).(propertize.s.'
56dc0 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 20 20 28 face.'transient-heading))).....(
56de0 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 74 2d 63 let*.((args.(or.(and.transient-c
56e00 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 20 20 20 urrent-command..................
56e20 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 73 69 65 .........(transient-args.transie
56e40 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 20 20 20 nt-current-command))............
56e60 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 61 74 65 ...;;.Not.yet.exported,.simulate
56e80 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 20 20 20 ...HACK:.We.are.accessing.......
56ea0 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 61 6c 20 ........;;.Transient's.internal.
56ec0 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 65 73 2e variables.here.for.live.updates.
56ee0 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 65 6e 74 ...............(let*.((transient
56f00 2d 63 75 72 72 65 6e 74 2d 63 6f 6d 6d 61 6e 64 20 28 6f 72 65 66 20 74 72 61 6e 73 69 65 6e 74 -current-command.(oref.transient
56f20 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 20 20 20 --prefix.command))..............
56f40 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 66 66 69 ........(transient-current-suffi
56f60 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 20 20 20 xes.transient--suffixes)).......
56f80 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 73 69 ..........(transient-args.transi
56fa0 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 20 20 20 ent-current-command)))).........
56fc0 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 28 69 66 ...(lbeg.(line-number-at-pos.(if
56fe0 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 6e 69 6e .(use-region-p).(region-beginnin
57000 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)..............................
57020 20 20 20 20 20 20 20 20 20 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 29 29 0a 20 20 20 20 20 20 20 ..........(point-min))))........
57040 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 20 28 69 ....(lend.(line-number-at-pos.(i
57060 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 0a 20 20 f.(use-region-p).(region-end)...
57080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
570a0 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 74 65 78 .....(point))))............(ltex
570c0 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 20 20 20 t.(ptv.(if.(>.lend.lbeg)........
570e0 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
57100 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 20 20 20 ines.%d-%d)".lbeg.lend).........
57120 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 69 6e 65 .................(format.".(line
57140 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 73 74 29 .%d)".lbeg))))............(dest)
57160 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 28 63 6f .(context)).......(setq.dest.(co
57180 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 20 22 65 nd...................((member."e
571a0 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 20 20 20 ".args).(ptv."echo.area"))......
571c0 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 73 29 20 .............((member."k".args).
571e0 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 20 20 20 (ptv."kill-ring"))..............
57200 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 20 20 20 .....((cl-some.(lambda.(s)......
57220 20 20 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 73 .........................(and.(s
57240 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 3f 67 20 tringp.s).(memq.(aref.s.0).'(?g.
57260 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 20 20 20 ?b))............................
57280 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 67 20 73 ........(not.(equal.(substring.s
572a0 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 20 20 20 .1).(buffer-name))).............
572c0 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 28 .......................(concat.(
572e0 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 67 20 73 pth."buffer.").(ptv.(substring.s
57300 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 20 20 20 .1))))).........................
57320 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 65 78 74 ....args)))).......(setq.context
57340 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 78 74 2d .............(and.gptel-context-
57360 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 28 28 6c -alist..................(let.((l
57380 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 74 29 29 c.(length.gptel-context--alist))
573a0 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 28 70 74 )....................(concat.(pt
573c0 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 74 20 22 h.".along.with.").(ptv.(format."
573e0 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 20 20 20 %d".lc))........................
57400 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 75 72 63 ....(pth.(concat.".context.sourc
57420 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 20 20 20 e".(and.(/=.lc.1)."s")))))))....
57440 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 20 20 20 ...(cond.((member."m".args).....
57460 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 72 6f 6d .........(concat.(pth."Read.prom
57480 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 0a 20 20 pt.from.").(ptv."minibuffer")...
574a0 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 20 20 20 ...................context......
574c0 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 63 61 74 ................(if.dest.(concat
574e0 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 0a 20 20 .(pth.",.response.to.").dest)...
57500 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 74 .....................(concat.(pt
57520 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 22 29 29 h.",.insert.response.at.point"))
57540 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 61 72 67 ))).............((member."y".arg
57560 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 22 53 65 s)..............(concat.(pth."Se
57580 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 63 61 74 nd.prompt.from.")........(concat
575a0 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 28 69 66 .(ptv."kill-ring.(").........(if
575c0 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 6e 67 29 -let*.((val.(car-safe.kill-ring)
575e0 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 6e 6f 2d )............(val.(substring-no-
57600 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 6c 65 6e properties.val))............(len
57620 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 6e 63 61 .(length.val)))......(ptv.(conca
57640 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...............................
57660 20 20 20 20 20 20 20 20 20 22 5c 22 22 20 28 73 74 72 69 6e 67 2d 72 65 70 6c 61 63 65 0a 09 09 ........."\"".(string-replace...
57680 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 28 74 72 ........"\n"."..."...........(tr
576a0 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 20 20 20 uncate-string-to-width..........
576c0 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 20 20 20 ..val.20.nil.nil.t))............
576e0 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 20 20 20 "\"".(when.(>.len.20)...........
57700 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 09 09 20 .(concat.............",.".......
57720 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 6c 65 20 ......(file-size-human-readable.
57740 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 61 72 73 len.'si.".").............".chars
57760 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 70 74 79 ")))).........(propertize."empty
57780 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 29 22 29 ".'face.'error)).......(ptv.")")
577a0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 65 78 74 0a 20 )......................context..
577c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 64 65 73 74 20 28 63 6f ....................(if.dest.(co
577e0 6e 63 61 74 20 28 70 74 68 20 22 2c 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 22 29 20 64 65 73 74 ncat.(pth.",.response.to.").dest
57800 29 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 )........................(concat
57820 20 28 70 74 68 20 22 2c 20 69 6e 73 65 72 74 20 72 65 73 70 6f 6e 73 65 20 61 74 20 70 6f 69 6e .(pth.",.insert.response.at.poin
57840 74 22 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 28 6d 65 6d 62 65 72 20 22 69 22 t"))))).............((member."i"
57860 20 61 72 67 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 72 65 67 20 .args)..............(let*.((reg.
57880 28 75 73 65 2d 72 65 67 69 6f 6e 2d 70 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (use-region-p)).................
578a0 20 20 20 20 28 73 72 63 20 28 70 74 76 20 28 69 66 20 72 65 67 20 22 73 65 6c 65 63 74 69 6f 6e ....(src.(ptv.(if.reg."selection
578c0 22 20 28 62 75 66 66 65 72 2d 6e 61 6d 65 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 ".(buffer-name))))).............
578e0 20 20 20 28 69 66 20 64 65 73 74 20 28 63 6f 6e 63 61 74 20 28 70 74 68 20 22 53 65 6e 64 20 22 ...(if.dest.(concat.(pth."Send."
57900 29 20 73 72 63 20 6c 74 65 78 74 20 63 6f 6e 74 65 78 74 20 28 70 74 68 20 22 2c 20 77 69 74 68 ).src.ltext.context.(pth.",.with
57920 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .response.to.").................
57940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 74 76 20 64 65 73 74 29 20 28 70 74 68 20 ................(ptv.dest).(pth.
57960 22 3b 20 6b 69 6c 6c 22 29 20 6c 74 65 78 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ";.kill").ltext.................
57980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 28 6e 6f 74 20 72 65 67 29 20 28 ................(and.(not.reg).(
579a0 63 6f 6e 63 61 74 20 28 70 74 68 20 22 20 69 6e 20 22 29 20 73 72 63 29 29 29 0a 20 20 20 20 20 concat.(pth.".in.").src)))......
579c0 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 28 70 74 68 20 22 52 65 70 6c 61 63 ............(concat.(pth."Replac
579e0 65 20 22 29 20 73 72 63 20 6c 74 65 78 74 20 28 70 74 68 20 22 20 77 69 74 68 20 72 65 73 70 6f e.").src.ltext.(pth.".with.respo
57a00 6e 73 65 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 nse")..........................(
57a20 61 6e 64 20 63 6f 6e 74 65 78 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 and.context.....................
57a40 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 28 70 74 68 20 22 20 28 20 77 69 74 68 22 ..........(concat.(pth.".(.with"
57a60 29 20 28 73 75 62 73 74 72 69 6e 67 20 63 6f 6e 74 65 78 74 20 31 31 29 20 22 20 29 22 29 29 29 ).(substring.context.11).".)")))
57a80 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 28 75 73 65 2d 72 65 67 69 6f 6e 2d 70 29 0a ))).............((use-region-p).
57aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 28 70 74 68 20 22 53 65 6e 64 20 .............(concat.(pth."Send.
57ac0 22 29 20 28 70 74 76 20 22 73 65 6c 65 63 74 69 6f 6e 22 29 20 6c 74 65 78 74 0a 20 20 20 20 20 ").(ptv."selection").ltext......
57ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 65 78 74 20 28 69 66 20 64 65 73 74 ................context.(if.dest
57b00 20 28 63 6f 6e 63 61 74 20 28 70 74 68 20 22 2c 20 77 69 74 68 20 72 65 73 70 6f 6e 73 65 20 74 .(concat.(pth.",.with.response.t
57b20 6f 20 22 29 20 64 65 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 o.").dest)......................
57b40 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 28 70 74 68 20 22 2c 20 69 6e 73 65 72 74 ..........(concat.(pth.",.insert
57b60 20 72 65 73 70 6f 6e 73 65 20 61 74 20 72 65 67 69 6f 6e 20 65 6e 64 22 29 29 29 29 29 0a 20 20 .response.at.region.end")))))...
57b80 20 20 20 20 20 20 20 20 20 20 28 74 20 28 63 6f 6e 63 61 74 20 28 70 74 68 20 22 53 65 6e 64 20 ..........(t.(concat.(pth."Send.
57ba0 22 29 20 28 70 74 76 20 28 62 75 66 66 65 72 2d 6e 61 6d 65 29 29 20 6c 74 65 78 74 0a 20 20 20 ").(ptv.(buffer-name)).ltext....
57bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 65 78 74 20 28 69 66 20 ....................context.(if.
57be0 64 65 73 74 20 28 63 6f 6e 63 61 74 20 28 70 74 68 20 22 2c 20 77 69 74 68 20 72 65 73 70 6f 6e dest.(concat.(pth.",.with.respon
57c00 73 65 20 74 6f 20 22 29 20 64 65 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 se.to.").dest)..................
57c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 28 70 74 68 20 22 2c 20 ................(concat.(pth.",.
57c40 69 6e 73 65 72 74 20 72 65 73 70 6f 6e 73 65 20 61 74 20 70 6f 69 6e 74 22 29 29 29 29 29 29 29 insert.response.at.point")))))))
57c60 29 29 0a 0a 0c 0a 3b 3b 20 2a 20 54 72 61 6e 73 69 65 6e 74 20 63 6c 61 73 73 65 73 20 61 6e 64 ))....;;.*.Transient.classes.and
57c80 20 6d 65 74 68 6f 64 73 20 66 6f 72 20 67 70 74 65 6c 0a 0a 28 64 65 66 63 6c 61 73 73 20 67 70 .methods.for.gptel..(defclass.gp
57ca0 74 65 6c 2d 6c 69 73 70 2d 76 61 72 69 61 62 6c 65 20 28 74 72 61 6e 73 69 65 6e 74 2d 6c 69 73 tel-lisp-variable.(transient-lis
57cc0 70 2d 76 61 72 69 61 62 6c 65 29 0a 20 20 28 28 64 69 73 70 6c 61 79 2d 6e 69 6c 20 3a 69 6e 69 p-variable)...((display-nil.:ini
57ce0 74 61 72 67 20 3a 64 69 73 70 6c 61 79 2d 6e 69 6c 29 20 20 3b 53 74 72 69 6e 67 20 74 6f 20 64 targ.:display-nil)..;String.to.d
57d00 69 73 70 6c 61 79 20 69 66 20 76 61 6c 75 65 20 69 66 20 6e 69 6c 0a 20 20 20 28 64 69 73 70 6c isplay.if.value.if.nil....(displ
57d20 61 79 2d 6d 61 70 20 3a 69 6e 69 74 61 72 67 20 3a 64 69 73 70 6c 61 79 2d 6d 61 70 20 3a 69 6e ay-map.:initarg.:display-map.:in
57d40 69 74 66 6f 72 6d 20 6e 69 6c 29 29 20 3b 44 69 73 70 6c 61 79 20 73 74 72 69 6e 67 20 66 72 6f itform.nil)).;Display.string.fro
57d60 6d 20 61 6c 69 73 74 20 64 69 73 70 6c 61 79 2d 6d 61 70 0a 20 20 22 4c 69 73 70 20 76 61 72 69 m.alist.display-map..."Lisp.vari
57d80 61 62 6c 65 73 20 74 68 61 74 20 73 68 6f 77 20 3a 64 69 73 70 6c 61 79 2d 6e 69 6c 20 69 6e 73 ables.that.show.:display-nil.ins
57da0 74 65 61 64 20 6f 66 20 6e 69 6c 2e 22 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 74 72 tead.of.nil.")..(cl-defmethod.tr
57dc0 61 6e 73 69 65 6e 74 2d 66 6f 72 6d 61 74 2d 76 61 6c 75 65 20 28 28 6f 62 6a 20 67 70 74 65 6c ansient-format-value.((obj.gptel
57de0 2d 6c 69 73 70 2d 76 61 72 69 61 62 6c 65 29 29 0a 20 20 28 6c 65 74 20 28 28 64 69 73 70 6c 61 -lisp-variable))...(let.((displa
57e00 79 2d 76 61 6c 75 65 0a 20 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 73 6c 6f 74 73 20 28 76 61 y-value..........(with-slots.(va
57e20 6c 75 65 20 64 69 73 70 6c 61 79 2d 6e 69 6c 20 64 69 73 70 6c 61 79 2d 6d 61 70 29 20 6f 62 6a lue.display-nil.display-map).obj
57e40 0a 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 20 28 28 6e 75 6c 6c 20 76 61 6c 75 65 29 20 ............(cond.((null.value).
57e60 64 69 73 70 6c 61 79 2d 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 display-nil)..................(d
57e80 69 73 70 6c 61 79 2d 6d 61 70 20 28 6f 72 20 28 63 64 72 20 28 61 73 73 6f 63 20 76 61 6c 75 65 isplay-map.(or.(cdr.(assoc.value
57ea0 20 64 69 73 70 6c 61 79 2d 6d 61 70 29 29 20 76 61 6c 75 65 29 29 0a 20 20 20 20 20 20 20 20 20 .display-map)).value))..........
57ec0 20 20 20 20 20 20 20 20 28 74 20 76 61 6c 75 65 29 29 29 29 29 0a 20 20 20 20 28 70 72 6f 70 65 ........(t.value))))).....(prope
57ee0 72 74 69 7a 65 0a 20 20 20 20 20 28 69 66 20 28 73 74 72 69 6e 67 70 20 64 69 73 70 6c 61 79 2d rtize......(if.(stringp.display-
57f00 76 61 6c 75 65 29 20 64 69 73 70 6c 61 79 2d 76 61 6c 75 65 20 28 70 72 69 6e 31 2d 74 6f 2d 73 value).display-value.(prin1-to-s
57f20 74 72 69 6e 67 20 64 69 73 70 6c 61 79 2d 76 61 6c 75 65 29 29 0a 20 20 20 20 20 27 66 61 63 65 tring.display-value))......'face
57f40 20 27 74 72 61 6e 73 69 65 6e 74 2d 76 61 6c 75 65 29 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 .'transient-value)))..(cl-defmet
57f60 68 6f 64 20 74 72 61 6e 73 69 65 6e 74 2d 69 6e 66 69 78 2d 73 65 74 20 28 28 6f 62 6a 20 67 70 hod.transient-infix-set.((obj.gp
57f80 74 65 6c 2d 6c 69 73 70 2d 76 61 72 69 61 62 6c 65 29 20 76 61 6c 75 65 29 0a 20 20 28 66 75 6e tel-lisp-variable).value)...(fun
57fa0 63 61 6c 6c 20 28 6f 72 65 66 20 6f 62 6a 20 73 65 74 2d 76 61 6c 75 65 29 0a 20 20 20 20 20 20 call.(oref.obj.set-value).......
57fc0 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 20 .....(oref.obj.variable)........
57fe0 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 0a 20 20 20 20 20 ....(oset.obj.value.value)......
58000 20 20 20 20 20 20 67 70 74 65 6c 2d 2d 73 65 74 2d 62 75 66 66 65 72 2d 6c 6f 63 61 6c 6c 79 29 ......gptel--set-buffer-locally)
58020 29 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 20 28 74 72 61 6e )..(defclass.gptel--switch.(tran
58040 73 69 65 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 sient-switch)...((category.:init
58060 61 72 67 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 arg.:category))..."Class.used.fo
58080 72 20 61 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 r.arguments.that.share.a.categor
580a0 79 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 69 6e y.")..(cl-defmethod.transient-in
580c0 66 69 78 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 fix-set.((obj.gptel--switch).val
580e0 75 65 29 0a 20 20 22 54 68 65 20 56 41 4c 55 45 20 6f 66 20 61 20 67 70 74 65 6c 2d 2d 73 77 69 ue)..."The.VALUE.of.a.gptel--swi
58100 74 63 68 20 4f 42 4a 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 74 68 65 20 63 61 74 65 67 6f 72 tch.OBJ.is.a.list.of.the.categor
58120 79 0a 20 61 6e 64 20 61 72 67 75 6d 65 6e 74 2c 20 65 2e 67 2e 20 28 5c 22 66 69 6c 65 73 79 73 y..and.argument,.e.g..(\"filesys
58140 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 69 66 20 76 61 6c tem\".\"read_file\")."...(if.val
58160 75 65 0a 20 20 20 20 20 20 28 6f 73 65 74 20 6f 62 6a 20 76 61 6c 75 65 20 28 6c 69 73 74 20 28 ue.......(oset.obj.value.(list.(
58180 6f 72 65 66 20 6f 62 6a 20 63 61 74 65 67 6f 72 79 29 20 76 61 6c 75 65 29 29 0a 20 20 20 20 28 oref.obj.category).value)).....(
581a0 6f 73 65 74 20 6f 62 6a 20 76 61 6c 75 65 20 6e 69 6c 29 29 29 0a 0a 28 64 65 66 63 6c 61 73 73 oset.obj.value.nil)))..(defclass
581c0 20 67 70 74 65 6c 2d 2d 73 77 69 74 63 68 2d 63 61 74 65 67 6f 72 79 20 28 74 72 61 6e 73 69 65 .gptel--switch-category.(transie
581e0 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
58200 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
58220 72 67 75 6d 65 6e 74 73 20 74 68 61 74 20 73 77 69 74 63 68 20 61 20 67 72 6f 75 70 20 6f 66 20 rguments.that.switch.a.group.of.
58240 6f 74 68 65 72 20 61 72 67 75 6d 65 6e 74 73 2e 0a 0a 54 68 65 69 72 20 6f 77 6e 20 76 61 6c 75 other.arguments...Their.own.valu
58260 65 20 69 73 20 69 67 6e 6f 72 65 64 22 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 74 72 e.is.ignored")..(cl-defmethod.tr
58280 61 6e 73 69 65 6e 74 2d 69 6e 66 69 78 2d 73 65 74 20 28 28 6f 62 6a 20 67 70 74 65 6c 2d 2d 73 ansient-infix-set.((obj.gptel--s
582a0 77 69 74 63 68 2d 63 61 74 65 67 6f 72 79 29 20 76 61 6c 75 65 29 0a 20 20 22 57 68 65 6e 20 73 witch-category).value)..."When.s
582c0 65 74 74 69 6e 67 20 56 41 4c 55 45 2c 20 73 65 74 20 61 6c 6c 20 6f 70 74 69 6f 6e 73 20 69 6e etting.VALUE,.set.all.options.in
582e0 20 74 68 65 20 63 61 74 65 67 6f 72 79 20 6f 66 20 4f 42 4a 2e 22 0a 20 20 28 64 6f 6c 69 73 74 .the.category.of.OBJ."...(dolist
58300 20 28 73 75 66 66 69 78 2d 6f 62 6a 20 74 72 61 6e 73 69 65 6e 74 2d 2d 73 75 66 66 69 78 65 73 .(suffix-obj.transient--suffixes
58320 29 0a 20 20 20 20 3b 3b 20 46 69 6e 64 20 61 6c 6c 20 73 75 66 66 69 78 65 73 20 74 68 61 74 20 ).....;;.Find.all.suffixes.that.
58340 68 61 76 65 20 74 68 69 73 20 63 61 74 65 67 6f 72 79 0a 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 have.this.category.....(when-let
58360 2a 20 28 28 28 63 6c 2d 74 79 70 65 70 20 73 75 66 66 69 78 2d 6f 62 6a 20 27 67 70 74 65 6c 2d *.(((cl-typep.suffix-obj.'gptel-
58380 2d 73 77 69 74 63 68 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 65 71 75 61 -switch)).................((equa
583a0 6c 20 28 6f 72 65 66 20 73 75 66 66 69 78 2d 6f 62 6a 20 63 61 74 65 67 6f 72 79 29 0a 20 20 20 l.(oref.suffix-obj.category)....
583c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 65 66 20 6f 62 6a 20 63 .....................(oref.obj.c
583e0 61 74 65 67 6f 72 79 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 72 67 20 ategory))).................(arg.
58400 28 69 66 20 28 73 6c 6f 74 2d 62 6f 75 6e 64 70 20 73 75 66 66 69 78 2d 6f 62 6a 20 27 61 72 67 (if.(slot-boundp.suffix-obj.'arg
58420 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 20 20 20 20 ument)..........................
58440 28 6f 72 65 66 20 73 75 66 66 69 78 2d 6f 62 6a 20 61 72 67 75 6d 65 6e 74 29 0a 20 20 20 20 20 (oref.suffix-obj.argument)......
58460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 65 66 20 6f 62 6a 20 61 72 67 75 ..................(oref.obj.argu
58480 6d 65 6e 74 2d 66 6f 72 6d 61 74 29 29 29 29 0a 20 20 20 20 20 20 3b 3b 20 54 75 72 6e 20 6f 6e ment-format)))).......;;.Turn.on
584a0 2f 6f 66 66 20 61 6c 6c 20 6d 65 6d 62 65 72 73 20 69 6e 20 63 61 74 65 67 6f 72 79 0a 20 20 20 /off.all.members.in.category....
584c0 20 20 20 28 69 66 20 76 61 6c 75 65 0a 20 20 20 20 20 20 20 20 20 20 28 74 72 61 6e 73 69 65 6e ...(if.value...........(transien
584e0 74 2d 69 6e 66 69 78 2d 73 65 74 20 73 75 66 66 69 78 2d 6f 62 6a 20 61 72 67 29 0a 20 20 20 20 t-infix-set.suffix-obj.arg).....
58500 20 20 20 20 28 74 72 61 6e 73 69 65 6e 74 2d 69 6e 66 69 78 2d 73 65 74 20 73 75 66 66 69 78 2d ....(transient-infix-set.suffix-
58520 6f 62 6a 20 6e 69 6c 29 29 29 29 0a 20 20 3b 3b 20 46 69 6e 61 6c 6c 79 20 73 65 74 20 74 68 65 obj.nil))))...;;.Finally.set.the
58540 20 22 76 61 6c 75 65 22 20 6f 66 20 74 68 65 20 63 61 74 65 67 6f 72 79 20 69 74 73 65 6c 66 0a ."value".of.the.category.itself.
58560 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 0a 0a 28 64 65 66 63 ..(oset.obj.value.value))..(defc
58580 6c 61 73 73 20 67 70 74 65 6c 2d 2d 73 77 69 74 63 68 65 73 20 28 67 70 74 65 6c 2d 6c 69 73 70 lass.gptel--switches.(gptel-lisp
585a0 2d 76 61 72 69 61 62 6c 65 29 0a 20 20 28 28 64 69 73 70 6c 61 79 2d 69 66 2d 74 72 75 65 20 3a -variable)...((display-if-true.:
585c0 69 6e 69 74 61 72 67 20 3a 64 69 73 70 6c 61 79 2d 69 66 2d 74 72 75 65 20 3a 69 6e 69 74 66 6f initarg.:display-if-true.:initfo
585e0 72 6d 20 22 54 72 75 65 22 29 0a 20 20 20 28 64 69 73 70 6c 61 79 2d 69 66 2d 66 61 6c 73 65 20 rm."True")....(display-if-false.
58600 3a 69 6e 69 74 61 72 67 20 3a 64 69 73 70 6c 61 79 2d 69 66 2d 66 61 6c 73 65 20 3a 69 6e 69 74 :initarg.:display-if-false.:init
58620 66 6f 72 6d 20 22 46 61 6c 73 65 22 29 29 0a 20 20 22 42 6f 6f 6c 65 61 6e 20 6c 69 73 70 20 76 form."False"))..."Boolean.lisp.v
58640 61 72 69 61 62 6c 65 20 63 6c 61 73 73 20 66 6f 72 20 67 70 74 65 6c 2d 74 72 61 6e 73 69 65 6e ariable.class.for.gptel-transien
58660 74 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 69 6e t.")..(cl-defmethod.transient-in
58680 66 69 78 2d 72 65 61 64 20 28 28 6f 62 6a 20 67 70 74 65 6c 2d 2d 73 77 69 74 63 68 65 73 29 29 fix-read.((obj.gptel--switches))
586a0 0a 20 20 22 43 79 63 6c 65 20 74 68 72 6f 75 67 68 20 74 68 65 20 6d 75 74 75 61 6c 6c 79 20 65 ..."Cycle.through.the.mutually.e
586c0 78 63 6c 75 73 69 76 65 20 73 77 69 74 63 68 65 73 2e 22 0a 20 20 28 6e 6f 74 20 28 6f 72 65 66 xclusive.switches."...(not.(oref
586e0 20 6f 62 6a 20 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 .obj.value)))..(cl-defmethod.tra
58700 6e 73 69 65 6e 74 2d 66 6f 72 6d 61 74 2d 76 61 6c 75 65 20 28 28 6f 62 6a 20 67 70 74 65 6c 2d nsient-format-value.((obj.gptel-
58720 2d 73 77 69 74 63 68 65 73 29 29 0a 20 20 28 77 69 74 68 2d 73 6c 6f 74 73 20 28 76 61 6c 75 65 -switches))...(with-slots.(value
58740 20 64 69 73 70 6c 61 79 2d 69 66 2d 74 72 75 65 20 64 69 73 70 6c 61 79 2d 69 66 2d 66 61 6c 73 .display-if-true.display-if-fals
58760 65 29 20 6f 62 6a 0a 20 20 20 20 20 20 28 66 6f 72 6d 61 74 0a 20 20 20 20 20 20 20 28 70 72 6f e).obj.......(format........(pro
58780 70 65 72 74 69 7a 65 20 22 28 25 73 29 22 20 27 66 61 63 65 20 27 74 72 61 6e 73 69 65 6e 74 2d pertize."(%s)".'face.'transient-
587a0 64 65 6c 69 6d 69 74 65 72 29 0a 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 0a 20 20 20 20 20 20 delimiter)........(concat.......
587c0 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 64 69 73 70 6c 61 79 2d 69 66 2d 66 61 6c 73 65 0a 20 ..(propertize.display-if-false..
587e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 66 61 63 65 20 28 69 66 20 76 61 6c ...................'face.(if.val
58800 75 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 20 27 74 72 ue.'transient-inactive-value.'tr
58820 61 6e 73 69 65 6e 74 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 ansient-value)).........(propert
58840 69 7a 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 ize."|".'face.'transient-delimit
58860 65 72 29 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 er).........(propertize.display-
58880 69 66 2d 74 72 75 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 if-true.....................'fac
588a0 65 20 28 69 66 20 76 61 6c 75 65 20 27 74 72 61 6e 73 69 65 6e 74 2d 76 61 6c 75 65 20 27 74 72 e.(if.value.'transient-value.'tr
588c0 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 64 ansient-inactive-value))))))..(d
588e0 65 66 63 6c 61 73 73 20 67 70 74 65 6c 2d 2d 73 63 6f 70 65 20 28 67 70 74 65 6c 2d 2d 73 77 69 efclass.gptel--scope.(gptel--swi
58900 74 63 68 65 73 29 0a 20 20 28 28 64 69 73 70 6c 61 79 2d 69 66 2d 74 72 75 65 20 3a 69 6e 69 74 tches)...((display-if-true.:init
58920 61 72 67 20 3a 64 69 73 70 6c 61 79 2d 69 66 2d 74 72 75 65 20 3a 69 6e 69 74 66 6f 72 6d 20 22 arg.:display-if-true.:initform."
58940 62 75 66 66 65 72 22 29 0a 20 20 20 28 64 69 73 70 6c 61 79 2d 69 66 2d 66 61 6c 73 65 20 3a 69 buffer")....(display-if-false.:i
58960 6e 69 74 61 72 67 20 3a 64 69 73 70 6c 61 79 2d 69 66 2d 66 61 6c 73 65 20 3a 69 6e 69 74 66 6f nitarg.:display-if-false.:initfo
58980 72 6d 20 22 67 6c 6f 62 61 6c 22 29 29 0a 20 20 22 53 69 6e 67 6c 65 74 6f 6e 20 6c 69 73 70 20 rm."global"))..."Singleton.lisp.
589a0 76 61 72 69 61 62 6c 65 20 63 6c 61 73 73 20 66 6f 72 20 60 67 70 74 65 6c 2d 2d 73 65 74 2d 62 variable.class.for.`gptel--set-b
589c0 75 66 66 65 72 2d 6c 6f 63 61 6c 6c 79 27 2e 0a 0a 54 68 69 73 20 69 73 20 75 73 65 64 20 6f 6e uffer-locally'...This.is.used.on
589e0 6c 79 20 66 6f 72 20 73 65 74 74 69 6e 67 20 74 68 69 73 20 76 61 72 69 61 62 6c 65 20 76 69 61 ly.for.setting.this.variable.via
58a00 20 60 67 70 74 65 6c 2d 6d 65 6e 75 27 2e 22 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 .`gptel-menu'.")..(cl-defmethod.
58a20 74 72 61 6e 73 69 65 6e 74 2d 69 6e 66 69 78 2d 72 65 61 64 20 28 28 6f 62 6a 20 67 70 74 65 6c transient-infix-read.((obj.gptel
58a40 2d 2d 73 63 6f 70 65 29 29 0a 20 20 22 43 79 63 6c 65 20 74 68 72 6f 75 67 68 20 74 68 65 20 6d --scope))..."Cycle.through.the.m
58a60 75 74 75 61 6c 6c 79 20 65 78 63 6c 75 73 69 76 65 20 73 77 69 74 63 68 65 73 2e 22 0a 20 20 28 utually.exclusive.switches."...(
58a80 77 69 74 68 2d 73 6c 6f 74 73 20 28 76 61 6c 75 65 29 20 6f 62 6a 0a 20 20 20 20 28 70 63 61 73 with-slots.(value).obj.....(pcas
58aa0 65 20 76 61 6c 75 65 0a 20 20 20 20 20 20 28 27 74 20 28 6d 65 73 73 61 67 65 20 22 50 61 72 61 e.value.......('t.(message."Para
58ac0 6d 65 74 65 72 73 20 77 69 6c 6c 20 62 65 20 73 65 74 20 66 6f 72 20 74 68 65 20 6e 65 78 74 20 meters.will.be.set.for.the.next.
58ae0 72 65 71 75 65 73 74 20 6f 6e 6c 79 22 29 29 0a 20 20 20 20 20 20 28 27 6e 69 6c 20 28 6d 65 73 request.only")).......('nil.(mes
58b00 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 62 75 66 sage."Parameters.will.be.set.buf
58b20 66 65 72 2d 6c 6f 63 61 6c 6c 79 22 29 29 0a 20 20 20 20 20 20 28 31 20 28 6d 65 73 73 61 67 65 fer-locally")).......(1.(message
58b40 20 22 50 61 72 61 6d 65 74 65 72 73 20 77 69 6c 6c 20 62 65 20 73 65 74 20 67 6c 6f 62 61 6c 6c ."Parameters.will.be.set.globall
58b60 79 22 29 29 29 0a 20 20 20 20 28 70 63 61 73 65 20 76 61 6c 75 65 20 28 27 74 20 31 29 20 28 27 y"))).....(pcase.value.('t.1).('
58b80 6e 69 6c 20 74 29 20 28 31 20 6e 69 6c 29 29 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 nil.t).(1.nil))))..(cl-defmethod
58ba0 20 74 72 61 6e 73 69 65 6e 74 2d 66 6f 72 6d 61 74 2d 76 61 6c 75 65 20 28 28 6f 62 6a 20 67 70 .transient-format-value.((obj.gp
58bc0 74 65 6c 2d 2d 73 63 6f 70 65 29 29 0a 20 20 28 77 69 74 68 2d 73 6c 6f 74 73 20 28 76 61 6c 75 tel--scope))...(with-slots.(valu
58be0 65 20 64 69 73 70 6c 61 79 2d 69 66 2d 74 72 75 65 20 64 69 73 70 6c 61 79 2d 69 66 2d 66 61 6c e.display-if-true.display-if-fal
58c00 73 65 29 20 6f 62 6a 0a 20 20 20 20 20 20 28 66 6f 72 6d 61 74 0a 20 20 20 20 20 20 20 28 70 72 se).obj.......(format........(pr
58c20 6f 70 65 72 74 69 7a 65 20 22 28 25 73 29 22 20 27 66 61 63 65 20 27 74 72 61 6e 73 69 65 6e 74 opertize."(%s)".'face.'transient
58c40 2d 64 65 6c 69 6d 69 74 65 72 29 0a 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 0a 20 20 20 20 20 -delimiter)........(concat......
58c60 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 64 69 73 70 6c 61 79 2d 69 66 2d 66 61 6c 73 65 0a ...(propertize.display-if-false.
58c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 66 61 63 65 20 28 69 66 20 28 6e ....................'face.(if.(n
58ca0 75 6c 6c 20 76 61 6c 75 65 29 20 27 74 72 61 6e 73 69 65 6e 74 2d 76 61 6c 75 65 20 27 74 72 61 ull.value).'transient-value.'tra
58cc0 6e 73 69 65 6e 74 2d 69 6e 61 63 74 69 76 65 2d 76 61 6c 75 65 29 29 0a 20 20 20 20 20 20 20 20 nsient-inactive-value)).........
58ce0 28 70 72 6f 70 65 72 74 69 7a 65 20 22 7c 22 20 27 66 61 63 65 20 27 74 72 61 6e 73 69 65 6e 74 (propertize."|".'face.'transient
58d00 2d 64 65 6c 69 6d 69 74 65 72 29 0a 20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 -delimiter).........(propertize.
58d20 64 69 73 70 6c 61 79 2d 69 66 2d 74 72 75 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 display-if-true.................
58d40 20 20 20 20 27 66 61 63 65 20 28 69 66 20 28 65 71 20 76 61 6c 75 65 20 74 29 20 27 74 72 61 6e ....'face.(if.(eq.value.t).'tran
58d60 73 69 65 6e 74 2d 76 61 6c 75 65 20 27 74 72 61 6e 73 69 65 6e 74 2d 69 6e 61 63 74 69 76 65 2d sient-value.'transient-inactive-
58d80 76 61 6c 75 65 29 29 0a 20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 7c 22 20 value)).........(propertize."|".
58da0 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).....
58dc0 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 6f 6e 65 73 68 6f 74 22 20 27 66 61 63 65 0a ....(propertize."oneshot".'face.
58de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 65 71 6c 20 76 61 6c ....................(if.(eql.val
58e00 75 65 20 31 29 20 27 74 72 61 6e 73 69 65 6e 74 2d 76 61 6c 75 65 20 27 74 72 61 6e 73 69 65 6e ue.1).'transient-value.'transien
58e20 74 2d 69 6e 61 63 74 69 76 65 2d 76 61 6c 75 65 29 29 29 29 29 29 0a 0a 28 63 6c 2d 64 65 66 6d t-inactive-value))))))..(cl-defm
58e40 65 74 68 6f 64 20 74 72 61 6e 73 69 65 6e 74 2d 69 6e 66 69 78 2d 73 65 74 20 28 28 6f 62 6a 20 ethod.transient-infix-set.((obj.
58e60 67 70 74 65 6c 2d 2d 73 63 6f 70 65 29 20 76 61 6c 75 65 29 0a 20 20 28 66 75 6e 63 61 6c 6c 20 gptel--scope).value)...(funcall.
58e80 28 6f 72 65 66 20 6f 62 6a 20 73 65 74 2d 76 61 6c 75 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 (oref.obj.set-value)............
58ea0 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 28 (oref.obj.variable)............(
58ec0 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 28 64 65 66 63 6c 61 oset.obj.value.value)))..(defcla
58ee0 73 73 20 67 70 74 65 6c 2d 70 72 6f 76 69 64 65 72 2d 76 61 72 69 61 62 6c 65 20 28 74 72 61 6e ss.gptel-provider-variable.(tran
58f00 73 69 65 6e 74 2d 6c 69 73 70 2d 76 61 72 69 61 62 6c 65 29 0a 20 20 28 28 62 61 63 6b 65 6e 64 sient-lisp-variable)...((backend
58f20 20 20 20 20 20 20 20 3a 69 6e 69 74 61 72 67 20 3a 62 61 63 6b 65 6e 64 29 0a 20 20 20 28 62 61 .......:initarg.:backend)....(ba
58f40 63 6b 65 6e 64 2d 76 61 6c 75 65 20 3a 69 6e 69 74 61 72 67 20 3a 62 61 63 6b 65 6e 64 2d 76 61 ckend-value.:initarg.:backend-va
58f60 6c 75 65 29 0a 20 20 20 28 61 6c 77 61 79 73 2d 72 65 61 64 20 3a 69 6e 69 74 66 6f 72 6d 20 74 lue)....(always-read.:initform.t
58f80 29 0a 20 20 20 28 73 65 74 2d 76 61 6c 75 65 20 3a 69 6e 69 74 61 72 67 20 3a 73 65 74 2d 76 61 )....(set-value.:initarg.:set-va
58fa0 6c 75 65 20 3a 69 6e 69 74 66 6f 72 6d 20 23 27 73 65 74 29 29 0a 20 20 22 43 6c 61 73 73 20 75 lue.:initform.#'set))..."Class.u
58fc0 73 65 64 20 66 6f 72 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 73 2e 22 29 0a 0a 28 63 6c 2d 64 sed.for.gptel-backends.")..(cl-d
58fe0 65 66 6d 65 74 68 6f 64 20 74 72 61 6e 73 69 65 6e 74 2d 66 6f 72 6d 61 74 2d 76 61 6c 75 65 20 efmethod.transient-format-value.
59000 28 28 6f 62 6a 20 67 70 74 65 6c 2d 70 72 6f 76 69 64 65 72 2d 76 61 72 69 61 62 6c 65 29 29 0a ((obj.gptel-provider-variable)).
59020 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 28 63 6f 6e 63 61 74 0a 20 20 20 20 20 20 20 20 20 20 ..(propertize.(concat...........
59040 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 20 .....(gptel-backend-name........
59060 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 28 6f 72 .........(buffer-local-value.(or
59080 65 66 20 6f 62 6a 20 62 61 63 6b 65 6e 64 29 20 74 72 61 6e 73 69 65 6e 74 2d 2d 6f 72 69 67 69 ef.obj.backend).transient--origi
590a0 6e 61 6c 2d 62 75 66 66 65 72 29 29 20 22 3a 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 nal-buffer)).":"................
590c0 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 6e 61 6d 65 20 28 6f 72 65 66 20 6f 62 6a 20 76 61 6c (gptel--model-name.(oref.obj.val
590e0 75 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 66 61 63 65 20 27 74 72 61 6e 73 ue)))...............'face.'trans
59100 69 65 6e 74 2d 76 61 6c 75 65 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 74 72 61 6e ient-value))..(cl-defmethod.tran
59120 73 69 65 6e 74 2d 69 6e 66 69 78 2d 73 65 74 20 28 28 6f 62 6a 20 67 70 74 65 6c 2d 70 72 6f 76 sient-infix-set.((obj.gptel-prov
59140 69 64 65 72 2d 76 61 72 69 61 62 6c 65 29 20 76 61 6c 75 65 29 0a 20 20 28 70 63 61 73 65 2d 6c ider-variable).value)...(pcase-l
59160 65 74 20 28 28 60 28 2c 62 61 63 6b 65 6e 64 2d 76 61 6c 75 65 20 2c 6d 6f 64 65 6c 2d 76 61 6c et.((`(,backend-value.,model-val
59180 75 65 29 20 76 61 6c 75 65 29 29 0a 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 28 6f 72 65 66 20 6f ue).value)).....(funcall.(oref.o
591a0 62 6a 20 73 65 74 2d 76 61 6c 75 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 65 66 bj.set-value)..............(oref
591c0 20 6f 62 6a 20 76 61 72 69 61 62 6c 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 73 65 .obj.variable)..............(ose
591e0 74 20 6f 62 6a 20 76 61 6c 75 65 20 6d 6f 64 65 6c 2d 76 61 6c 75 65 29 0a 20 20 20 20 20 20 20 t.obj.value.model-value)........
59200 20 20 20 20 20 20 67 70 74 65 6c 2d 2d 73 65 74 2d 62 75 66 66 65 72 2d 6c 6f 63 61 6c 6c 79 29 ......gptel--set-buffer-locally)
59220 0a 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 28 6f 72 65 66 20 6f 62 6a 20 73 65 74 2d 76 61 6c 75 .....(funcall.(oref.obj.set-valu
59240 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 65 66 20 6f 62 6a 20 62 61 63 6b 65 6e e)..............(oref.obj.backen
59260 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 73 65 74 20 6f 62 6a 20 62 61 63 6b 65 6e d)..............(oset.obj.backen
59280 64 2d 76 61 6c 75 65 20 62 61 63 6b 65 6e 64 2d 76 61 6c 75 65 29 0a 20 20 20 20 20 20 20 20 20 d-value.backend-value)..........
592a0 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)).
592c0 20 20 28 74 72 61 6e 73 69 65 6e 74 2d 73 65 74 75 70 29 29 0a 0a 28 64 65 66 63 6c 61 73 73 20 ..(transient-setup))..(defclass.
592e0 67 70 74 65 6c 2d 6f 70 74 69 6f 6e 2d 6f 76 65 72 6c 61 69 64 20 28 74 72 61 6e 73 69 65 6e 74 gptel-option-overlaid.(transient
59300 2d 6f 70 74 69 6f 6e 29 0a 20 20 28 28 64 69 73 70 6c 61 79 2d 6e 69 6c 20 3a 69 6e 69 74 61 72 -option)...((display-nil.:initar
59320 67 20 3a 64 69 73 70 6c 61 79 2d 6e 69 6c 29 0a 20 20 20 28 6f 76 65 72 6c 61 79 20 3a 69 6e 69 g.:display-nil)....(overlay.:ini
59340 74 61 72 67 20 3a 6f 76 65 72 6c 61 79 29 29 0a 20 20 22 54 72 61 6e 73 69 65 6e 74 20 6f 70 74 targ.:overlay))..."Transient.opt
59360 69 6f 6e 73 20 66 6f 72 20 6f 76 65 72 6c 61 79 73 20 64 69 73 70 6c 61 79 65 64 20 69 6e 20 74 ions.for.overlays.displayed.in.t
59380 68 65 20 77 6f 72 6b 69 6e 67 20 62 75 66 66 65 72 2e 22 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 he.working.buffer.")..(cl-defmet
593a0 68 6f 64 20 74 72 61 6e 73 69 65 6e 74 2d 66 6f 72 6d 61 74 2d 76 61 6c 75 65 20 28 28 6f 62 6a hod.transient-format-value.((obj
593c0 20 67 70 74 65 6c 2d 6f 70 74 69 6f 6e 2d 6f 76 65 72 6c 61 69 64 29 29 0a 20 20 22 53 65 74 20 .gptel-option-overlaid))..."Set.
593e0 75 70 20 74 68 65 20 69 6e 2d 62 75 66 66 65 72 20 6f 76 65 72 6c 61 79 20 66 6f 72 20 61 64 64 up.the.in-buffer.overlay.for.add
59400 69 74 69 6f 6e 61 6c 20 64 69 72 65 63 74 69 76 65 2c 20 61 20 73 74 72 69 6e 67 2e 0a 0a 41 6c itional.directive,.a.string...Al
59420 73 6f 20 66 6f 72 6d 61 74 20 69 74 73 20 76 61 6c 75 65 20 69 6e 20 74 68 65 20 54 72 61 6e 73 so.format.its.value.in.the.Trans
59440 69 65 6e 74 20 6d 65 6e 75 2e 22 0a 20 20 28 6c 65 74 20 28 28 76 61 6c 75 65 20 28 6f 72 65 66 ient.menu."...(let.((value.(oref
59460 20 6f 62 6a 20 76 61 6c 75 65 29 29 0a 20 20 20 20 20 20 20 20 28 6f 76 20 20 20 20 28 6f 72 65 .obj.value)).........(ov....(ore
59480 66 20 6f 62 6a 20 6f 76 65 72 6c 61 79 29 29 0a 20 20 20 20 20 20 20 20 28 61 72 67 75 6d 65 6e f.obj.overlay)).........(argumen
594a0 74 20 28 6f 72 65 66 20 6f 62 6a 20 61 72 67 75 6d 65 6e 74 29 29 29 0a 20 20 20 20 3b 3b 20 4d t.(oref.obj.argument))).....;;.M
594c0 61 6b 69 6e 67 20 61 6e 20 6f 76 65 72 6c 61 79 0a 20 20 20 20 28 69 66 20 28 6f 72 20 28 6e 6f aking.an.overlay.....(if.(or.(no
594e0 74 20 76 61 6c 75 65 29 20 28 73 74 72 69 6e 67 2d 65 6d 70 74 79 2d 70 20 76 61 6c 75 65 29 29 t.value).(string-empty-p.value))
59500 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 6f 76 20 28 64 65 6c 65 74 65 2d 6f 76 65 72 6c 61 .........(when.ov.(delete-overla
59520 79 20 6f 76 29 29 0a 20 20 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 y.ov)).......(with-current-buffe
59540 72 20 74 72 61 6e 73 69 65 6e 74 2d 2d 6f 72 69 67 69 6e 61 6c 2d 62 75 66 66 65 72 0a 20 20 20 r.transient--original-buffer....
59560 20 20 20 20 20 28 6f 73 65 74 20 6f 62 6a 20 6f 76 65 72 6c 61 79 20 28 67 70 74 65 6c 2d 2d 69 .....(oset.obj.overlay.(gptel--i
59580 6e 73 74 72 75 63 74 69 6f 6e 73 2d 6d 61 6b 65 2d 6f 76 65 72 6c 61 79 20 76 61 6c 75 65 20 6f nstructions-make-overlay.value.o
595a0 76 29 29 29 0a 20 20 20 20 20 20 28 6c 65 74 72 65 63 20 28 28 6f 76 2d 63 6c 65 61 72 2d 68 6f v))).......(letrec.((ov-clear-ho
595c0 6f 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 29 20 28 77 ok.................(lambda.().(w
595e0 68 65 6e 2d 6c 65 74 2a 20 28 28 6f 76 20 28 6f 72 65 66 20 6f 62 6a 20 6f 76 65 72 6c 61 79 29 hen-let*.((ov.(oref.obj.overlay)
59600 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 )...............................
59620 20 20 20 20 28 28 6f 76 65 72 6c 61 79 70 20 6f 76 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 ....((overlayp.ov)))............
59640 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 6d 6f 76 65 2d 68 6f 6f 6b 20 27 74 72 61 6e 73 .............(remove-hook.'trans
59660 69 65 6e 74 2d 65 78 69 74 2d 68 6f 6f 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ient-exit-hook..................
59680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 76 2d 63 6c 65 61 72 2d 68 6f 6f ....................ov-clear-hoo
596a0 6b 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 65 6c 65 k).........................(dele
596c0 74 65 2d 6f 76 65 72 6c 61 79 20 6f 76 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 61 64 64 2d te-overlay.ov))))).........(add-
596e0 68 6f 6f 6b 20 27 74 72 61 6e 73 69 65 6e 74 2d 65 78 69 74 2d 68 6f 6f 6b 20 6f 76 2d 63 6c 65 hook.'transient-exit-hook.ov-cle
59700 61 72 2d 68 6f 6f 6b 29 29 29 0a 20 20 20 20 3b 3b 20 55 70 64 61 74 69 6e 67 20 74 72 61 6e 73 ar-hook))).....;;.Updating.trans
59720 69 65 6e 74 20 6d 65 6e 75 20 64 69 73 70 6c 61 79 0a 20 20 20 20 28 69 66 20 76 61 6c 75 65 0a ient.menu.display.....(if.value.
59740 20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 28 63 6f 6e 63 61 74 20 61 72 67 75 ........(propertize.(concat.argu
59760 6d 65 6e 74 20 28 74 72 75 6e 63 61 74 65 2d 73 74 72 69 6e 67 2d 74 6f 2d 77 69 64 74 68 20 76 ment.(truncate-string-to-width.v
59780 61 6c 75 65 20 33 35 20 6e 69 6c 20 6e 69 6c 20 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 alue.35.nil.nil.t)).............
597a0 20 20 20 20 20 20 20 20 27 66 61 63 65 20 27 74 72 61 6e 73 69 65 6e 74 2d 76 61 6c 75 65 29 0a ........'face.'transient-value).
597c0 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 0a 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 ......(propertize........(concat
597e0 20 22 28 22 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 28 6f 72 65 66 20 6f 62 6a 20 64 69 73 70 ."(".(symbol-name.(oref.obj.disp
59800 6c 61 79 2d 6e 69 6c 29 29 20 22 29 22 29 0a 20 20 20 20 20 20 20 27 66 61 63 65 20 27 74 72 61 lay-nil)).")")........'face.'tra
59820 6e 73 69 65 6e 74 2d 69 6e 61 63 74 69 76 65 2d 76 61 6c 75 65 29 29 29 29 0a 0a 0c 0a 3b 3b 20 nsient-inactive-value))))....;;.
59840 2a 20 54 72 61 6e 73 69 65 6e 74 20 50 72 65 66 69 78 65 73 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f *.Transient.Prefixes..;;;###auto
59860 6c 6f 61 64 20 28 61 75 74 6f 6c 6f 61 64 20 27 67 70 74 65 6c 2d 6d 65 6e 75 20 22 67 70 74 65 load.(autoload.'gptel-menu."gpte
59880 6c 2d 74 72 61 6e 73 69 65 6e 74 22 20 6e 69 6c 20 74 29 0a 28 74 72 61 6e 73 69 65 6e 74 2d 64 l-transient".nil.t).(transient-d
598a0 65 66 69 6e 65 2d 70 72 65 66 69 78 20 67 70 74 65 6c 2d 6d 65 6e 75 20 28 29 0a 20 20 22 43 68 efine-prefix.gptel-menu.()..."Ch
598c0 61 6e 67 65 20 70 61 72 61 6d 65 74 65 72 73 20 6f 66 20 70 72 6f 6d 70 74 20 74 6f 20 73 65 6e ange.parameters.of.prompt.to.sen
598e0 64 20 74 6f 20 74 68 65 20 4c 4c 4d 2e 22 0a 20 20 3a 69 6e 63 6f 6d 70 61 74 69 62 6c 65 20 27 d.to.the.LLM."...:incompatible.'
59900 28 28 22 6d 22 20 22 79 22 20 22 69 22 29 20 28 22 65 22 20 22 67 22 20 22 62 22 20 22 6b 22 29 (("m"."y"."i").("e"."g"."b"."k")
59920 29 0a 20 20 3b 3b 20 3a 76 61 6c 75 65 20 28 6c 69 73 74 20 28 63 6f 6e 63 61 74 20 22 62 22 20 )...;;.:value.(list.(concat."b".
59940 28 62 75 66 66 65 72 2d 6e 61 6d 65 29 29 29 0a 20 20 5b 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 (buffer-name)))...[:description.
59960 67 70 74 65 6c 2d 73 79 73 74 65 6d 2d 70 72 6f 6d 70 74 2d 2d 66 6f 72 6d 61 74 0a 20 20 20 5b gptel-system-prompt--format....[
59980 22 22 0a 20 20 20 20 3a 69 66 20 28 6c 61 6d 62 64 61 20 28 29 20 28 6e 6f 74 20 28 67 70 74 65 "".....:if.(lambda.().(not.(gpte
599a0 6c 2d 2d 6d 6f 64 65 6c 2d 63 61 70 61 62 6c 65 2d 70 20 27 6e 6f 73 79 73 74 65 6d 29 29 29 0a l--model-capable-p.'nosystem))).
599c0 20 20 20 20 22 49 6e 73 74 72 75 63 74 69 6f 6e 73 22 0a 20 20 20 20 28 22 73 22 20 22 53 65 74 ...."Instructions".....("s"."Set
599e0 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 22 20 67 70 74 65 6c 2d 73 79 73 74 65 6d 2d 70 72 .system.message".gptel-system-pr
59a00 6f 6d 70 74 20 3a 74 72 61 6e 73 69 65 6e 74 20 74 29 0a 20 20 20 20 28 67 70 74 65 6c 2d 2d 69 ompt.:transient.t).....(gptel--i
59a20 6e 66 69 78 2d 61 64 64 2d 64 69 72 65 63 74 69 76 65 29 5d 0a 20 20 20 5b 3a 70 61 64 2d 6b 65 nfix-add-directive)]....[:pad-ke
59a40 79 73 20 74 20 22 22 0a 20 20 20 20 28 3a 69 6e 66 6f 20 23 27 67 70 74 65 6c 2d 2d 64 65 73 63 ys.t."".....(:info.#'gptel--desc
59a60 72 69 62 65 2d 69 6e 66 69 78 2d 63 6f 6e 74 65 78 74 0a 20 20 20 20 20 3a 66 61 63 65 20 74 72 ribe-infix-context......:face.tr
59a80 61 6e 73 69 65 6e 74 2d 68 65 61 64 69 6e 67 20 3a 66 6f 72 6d 61 74 20 22 25 64 22 29 0a 20 20 ansient-heading.:format."%d")...
59aa0 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 72 65 67 69 ..(gptel--infix-context-add-regi
59ac0 6f 6e 29 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 on).....(gptel--infix-context-ad
59ae0 64 2d 62 75 66 66 65 72 29 0a 20 20 20 20 28 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 63 6f 6e 74 d-buffer).....(gptel--infix-cont
59b00 65 78 74 2d 61 64 64 2d 66 69 6c 65 29 0a 20 20 20 20 28 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d ext-add-file).....(gptel--infix-
59b20 63 6f 6e 74 65 78 74 2d 72 65 6d 6f 76 65 2d 61 6c 6c 29 0a 20 20 20 20 28 67 70 74 65 6c 2d 2d context-remove-all).....(gptel--
59b40 73 75 66 66 69 78 2d 63 6f 6e 74 65 78 74 2d 62 75 66 66 65 72 29 5d 0a 20 20 20 5b 3a 70 61 64 suffix-context-buffer)]....[:pad
59b60 2d 6b 65 79 73 20 74 0a 20 20 20 20 3a 69 66 20 28 6c 61 6d 62 64 61 20 28 29 20 28 61 6e 64 20 -keys.t.....:if.(lambda.().(and.
59b80 67 70 74 65 6c 2d 75 73 65 2d 74 6f 6f 6c 73 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 74 6f 6f gptel-use-tools.gptel--known-too
59ba0 6c 73 29 29 0a 20 20 20 20 22 22 20 28 3a 69 6e 66 6f 0a 20 20 20 20 20 20 20 20 28 6c 61 6d 62 ls))....."".(:info.........(lamb
59bc0 64 61 20 28 29 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 0a 20 20 20 20 20 20 20 20 da.()...........(concat.........
59be0 20 20 20 22 54 6f 6f 6c 73 22 20 28 61 6e 64 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 0a 20 20 20 20 ..."Tools".(and.gptel-tools.....
59c00 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 20 28 22 ....................(concat.".("
59c20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 28 66 6f 72 6d 61 74 20 22 25 64 20 73 65 6c 65 63 74 65 .(propertize.(format."%d.selecte
59c40 64 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 d"..............................
59c60 20 20 20 20 20 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
59c80 67 74 68 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 gth.gptel-tools))...............
59ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
59cc0 20 20 20 27 66 61 63 65 20 27 77 61 72 6e 69 6e 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ...'face.'warning)..............
59ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 29 22 29 29 29 29 0a 20 20 20 20 20 ...................")"))))......
59d00 20 20 20 3a 66 6f 72 6d 61 74 20 22 25 64 22 20 3a 66 61 63 65 20 74 72 61 6e 73 69 65 6e 74 2d ...:format."%d".:face.transient-
59d20 68 65 61 64 69 6e 67 29 0a 20 20 20 20 28 22 74 22 20 22 53 65 6c 65 63 74 20 74 6f 6f 6c 73 22 heading).....("t"."Select.tools"
59d40 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 20 3a 74 72 61 6e 73 69 65 6e 74 20 74 29 0a 20 20 20 20 28 .gptel-tools.:transient.t).....(
59d60 22 54 22 20 22 43 6f 6e 74 69 6e 75 65 20 74 6f 6f 6c 20 63 61 6c 6c 73 22 0a 20 20 20 20 20 28 "T"."Continue.tool.calls"......(
59d80 6c 61 6d 62 64 61 20 28 29 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 20 28 67 70 74 65 6c 2d 2d lambda.().(interactive).(gptel--
59da0 68 61 6e 64 6c 65 2d 74 6f 6f 6c 2d 75 73 65 20 67 70 74 65 6c 2d 2d 66 73 6d 2d 6c 61 73 74 29 handle-tool-use.gptel--fsm-last)
59dc0 29 0a 20 20 20 20 20 3a 69 66 20 28 6c 61 6d 62 64 61 20 28 29 20 28 61 6e 64 20 67 70 74 65 6c )......:if.(lambda.().(and.gptel
59de0 2d 2d 66 73 6d 2d 6c 61 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 --fsm-last.....................(
59e00 65 71 20 28 67 70 74 65 6c 2d 66 73 6d 2d 73 74 61 74 65 20 67 70 74 65 6c 2d 2d 66 73 6d 2d 6c eq.(gptel-fsm-state.gptel--fsm-l
59e20 61 73 74 29 20 27 54 4f 4f 4c 29 29 29 29 5d 5d 0a 20 20 5b 5b 22 52 65 71 75 65 73 74 20 50 61 ast).'TOOL))))]]...[["Request.Pa
59e40 72 61 6d 65 74 65 72 73 22 0a 20 20 20 20 28 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 76 61 72 69 rameters".....(gptel--infix-vari
59e60 61 62 6c 65 2d 73 63 6f 70 65 29 0a 20 20 20 20 28 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 70 72 able-scope).....(gptel--infix-pr
59e80 6f 76 69 64 65 72 29 0a 20 20 20 20 28 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 6d 61 78 2d 74 6f ovider).....(gptel--infix-max-to
59ea0 6b 65 6e 73 29 0a 20 20 20 20 28 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 6e 75 6d 2d 6d 65 73 73 kens).....(gptel--infix-num-mess
59ec0 61 67 65 73 2d 74 6f 2d 73 65 6e 64 0a 20 20 20 20 20 3a 69 66 20 28 6c 61 6d 62 64 61 20 28 29 ages-to-send......:if.(lambda.()
59ee0 20 28 61 6e 64 20 67 70 74 65 6c 2d 65 78 70 65 72 74 2d 63 6f 6d 6d 61 6e 64 73 0a 20 20 20 20 .(and.gptel-expert-commands.....
59f00 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 6d 6f 64 65 20 67 ................(or.gptel-mode.g
59f20 70 74 65 6c 2d 74 72 61 63 6b 2d 72 65 73 70 6f 6e 73 65 29 29 29 29 0a 20 20 20 20 28 67 70 74 ptel-track-response)))).....(gpt
59f40 65 6c 2d 2d 69 6e 66 69 78 2d 74 65 6d 70 65 72 61 74 75 72 65 20 3a 69 66 20 28 6c 61 6d 62 64 el--infix-temperature.:if.(lambd
59f60 61 20 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 29 0a 20 20 20 a.().gptel-expert-commands))....
59f80 20 28 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 75 73 65 2d 63 6f 6e 74 65 78 74 29 0a 20 20 20 20 .(gptel--infix-use-context).....
59fa0 28 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 69 6e 63 6c 75 64 65 2d 72 65 61 73 6f 6e 69 6e 67 29 (gptel--infix-include-reasoning)
59fc0 0a 20 20 20 20 28 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 75 73 65 2d 74 6f 6f 6c 73 29 0a 20 20 .....(gptel--infix-use-tools)...
59fe0 20 20 28 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 74 72 61 63 6b 2d 72 65 73 70 6f 6e 73 65 0a 20 ..(gptel--infix-track-response..
5a000 20 20 20 20 3a 69 66 20 28 6c 61 6d 62 64 61 20 28 29 20 28 61 6e 64 20 67 70 74 65 6c 2d 65 78 ....:if.(lambda.().(and.gptel-ex
5a020 70 65 72 74 2d 63 6f 6d 6d 61 6e 64 73 20 28 6e 6f 74 20 67 70 74 65 6c 2d 6d 6f 64 65 29 29 29 pert-commands.(not.gptel-mode)))
5a040 29 0a 20 20 20 20 28 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 74 72 61 63 6b 2d 6d 65 64 69 61 0a ).....(gptel--infix-track-media.
5a060 20 20 20 20 20 3a 69 66 20 28 6c 61 6d 62 64 61 20 28 29 20 28 61 6e 64 20 67 70 74 65 6c 2d 6d .....:if.(lambda.().(and.gptel-m
5a080 6f 64 65 20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 63 61 70 61 62 6c 65 2d 70 20 27 6d 65 64 ode.(gptel--model-capable-p.'med
5a0a0 69 61 29 29 29 29 5d 0a 20 20 20 5b 22 20 3c 50 72 6f 6d 70 74 20 66 72 6f 6d 22 0a 20 20 20 20 ia))))]....[".<Prompt.from".....
5a0c0 28 22 6d 22 20 22 4d 69 6e 69 62 75 66 66 65 72 20 69 6e 73 74 65 61 64 22 20 22 6d 22 29 0a 20 ("m"."Minibuffer.instead"."m")..
5a0e0 20 20 20 28 22 79 22 20 22 4b 69 6c 6c 2d 72 69 6e 67 20 69 6e 73 74 65 61 64 22 20 22 79 22 29 ...("y"."Kill-ring.instead"."y")
5a100 0a 20 20 20 20 22 22 0a 20 20 20 20 28 22 69 22 20 22 52 65 73 70 6f 6e 64 20 69 6e 20 70 6c 61 ....."".....("i"."Respond.in.pla
5a120 63 65 22 20 22 69 22 29 5d 0a 20 20 20 5b 22 20 3e 52 65 73 70 6f 6e 73 65 20 74 6f 22 0a 20 20 ce"."i")]....[".>Response.to"...
5a140 20 20 28 22 65 22 20 22 45 63 68 6f 20 61 72 65 61 22 20 22 65 22 29 0a 20 20 20 20 28 22 62 22 ..("e"."Echo.area"."e").....("b"
5a160 20 22 4f 74 68 65 72 20 62 75 66 66 65 72 22 20 22 62 22 0a 20 20 20 20 20 3a 63 6c 61 73 73 20 ."Other.buffer"."b"......:class.
5a180 74 72 61 6e 73 69 65 6e 74 2d 6f 70 74 69 6f 6e 0a 20 20 20 20 20 3a 70 72 6f 6d 70 74 20 22 4f transient-option......:prompt."O
5a1a0 75 74 70 75 74 20 74 6f 20 62 75 66 66 65 72 3a 20 22 0a 20 20 20 20 20 3a 72 65 61 64 65 72 20 utput.to.buffer:."......:reader.
5a1c0 28 6c 61 6d 62 64 61 20 28 70 72 6f 6d 70 74 20 5f 20 5f 68 69 73 74 6f 72 79 29 0a 20 20 20 20 (lambda.(prompt._._history).....
5a1e0 20 20 20 20 20 20 20 20 20 20 20 28 72 65 61 64 2d 62 75 66 66 65 72 20 70 72 6f 6d 70 74 20 28 ...........(read-buffer.prompt.(
5a200 62 75 66 66 65 72 2d 6e 61 6d 65 20 28 6f 74 68 65 72 2d 62 75 66 66 65 72 29 29 20 6e 69 6c 29 buffer-name.(other-buffer)).nil)
5a220 29 29 0a 20 20 20 20 28 22 67 22 20 22 67 70 74 65 6c 20 73 65 73 73 69 6f 6e 22 20 22 67 22 0a )).....("g"."gptel.session"."g".
5a240 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....
5a260 20 20 3a 70 72 6f 6d 70 74 20 22 45 78 69 73 74 69 6e 67 20 6f 72 20 6e 65 77 20 67 70 74 65 6c ..:prompt."Existing.or.new.gptel
5a280 20 73 65 73 73 69 6f 6e 3a 20 22 0a 20 20 20 20 20 3a 72 65 61 64 65 72 0a 20 20 20 20 20 28 6c .session:."......:reader......(l
5a2a0 61 6d 62 64 61 20 28 70 72 6f 6d 70 74 20 5f 20 5f 68 69 73 74 6f 72 79 29 0a 20 20 20 20 20 20 ambda.(prompt._._history).......
5a2c0 20 28 72 65 61 64 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 70 72 6f 6d 70 74 20 28 67 65 .(read-buffer.........prompt.(ge
5a2e0 6e 65 72 61 74 65 2d 6e 65 77 2d 62 75 66 66 65 72 2d 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 nerate-new-buffer-name..........
5a300 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 22 2a 22 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e .......(concat."*".(gptel-backen
5a320 64 2d 6e 61 6d 65 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 20 22 2a 22 29 29 0a 20 20 20 20 d-name.gptel-backend)."*")).....
5a340 20 20 20 20 6e 69 6c 20 28 6c 61 6d 62 64 61 20 28 62 75 66 2d 6e 61 6d 65 29 0a 20 20 20 20 20 ....nil.(lambda.(buf-name)......
5a360 20 20 20 20 20 20 20 20 20 28 69 66 20 28 63 6f 6e 73 70 20 62 75 66 2d 6e 61 6d 65 29 20 28 73 .........(if.(consp.buf-name).(s
5a380 65 74 71 20 62 75 66 2d 6e 61 6d 65 20 28 63 61 72 20 62 75 66 2d 6e 61 6d 65 29 29 29 0a 20 20 etq.buf-name.(car.buf-name)))...
5a3a0 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 62 75 66 20 28 67 65 74 2d 62 75 66 66 ............(let.((buf.(get-buff
5a3c0 65 72 20 62 75 66 2d 6e 61 6d 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 er.buf-name))).................(
5a3e0 61 6e 64 20 28 62 75 66 66 65 72 2d 6c 6f 63 61 6c 2d 76 61 6c 75 65 20 27 67 70 74 65 6c 2d 6d and.(buffer-local-value.'gptel-m
5a400 6f 64 65 20 62 75 66 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e ode.buf)......................(n
5a420 6f 74 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 29 29 29 29 29 ot.(eq.(current-buffer).buf)))))
5a440 29 29 29 0a 20 20 20 20 28 22 6b 22 20 22 4b 69 6c 6c 2d 72 69 6e 67 22 20 22 6b 22 29 5d 5d 0a ))).....("k"."Kill-ring"."k")]].
5a460 20 20 5b 5b 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 28 6c 61 6d 62 64 61 20 28 29 20 28 63 6f 6e ..[[:description.(lambda.().(con
5a480 63 61 74 20 28 61 6e 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 cat.(and.gptel--rewrite-overlays
5a4a0 20 22 43 6f 6e 74 69 6e 75 65 20 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ."Continue.")...................
5a4c0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 52 65 77 72 69 74 65 22 29 29 0a 20 20 20 20 3a 69 66 ............."Rewrite")).....:if
5a4e0 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 6f 6e 2d 70 29 0a 20 .(lambda.().(or.(use-region-p)..
5a500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 67 70 74 65 6c 2d 2d 72 65 77 .................(and.gptel--rew
5a520 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 20 20 20 20 20 rite-overlays...................
5a540 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 73 61 6e 69 74 69 7a 65 2d 6f 76 .....(gptel--rewrite-sanitize-ov
5a560 65 72 6c 61 79 73 29 29 29 29 0a 20 20 20 20 28 22 72 22 0a 20 20 20 20 20 28 6c 61 6d 62 64 61 erlays)))).....("r"......(lambda
5a580 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 79 20 28 70 6f 69 6e .().(if.(get-char-property.(poin
5a5a0 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 20 20 20 t).'gptel-rewrite)..............
5a5c0 20 20 22 49 74 65 72 61 74 65 22 20 22 52 65 77 72 69 74 65 22 29 29 0a 20 20 20 20 20 67 70 74 .."Iterate"."Rewrite"))......gpt
5a5e0 65 6c 2d 72 65 77 72 69 74 65 29 5d 0a 20 20 20 5b 22 54 77 65 61 6b 20 52 65 73 70 6f 6e 73 65 el-rewrite)]....["Tweak.Response
5a600 22 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 20 3a 70 61 64 2d ".:if.gptel--in-response-p.:pad-
5a620 6b 65 79 73 20 74 0a 20 20 20 20 28 22 53 50 43 22 20 22 4d 61 72 6b 22 20 67 70 74 65 6c 2d 2d keys.t.....("SPC"."Mark".gptel--
5a640 6d 61 72 6b 2d 72 65 73 70 6f 6e 73 65 29 0a 20 20 20 20 28 22 4d 2d 52 45 54 22 20 22 52 65 67 mark-response).....("M-RET"."Reg
5a660 65 6e 65 72 61 74 65 22 20 67 70 74 65 6c 2d 2d 72 65 67 65 6e 65 72 61 74 65 20 3a 69 66 20 67 enerate".gptel--regenerate.:if.g
5a680 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 22 50 22 20 22 50 ptel--in-response-p).....("P"."P
5a6a0 72 65 76 69 6f 75 73 20 76 61 72 69 61 6e 74 22 20 67 70 74 65 6c 2d 2d 70 72 65 76 69 6f 75 73 revious.variant".gptel--previous
5a6c0 2d 76 61 72 69 61 6e 74 0a 20 20 20 20 20 3a 69 66 20 67 70 74 65 6c 2d 2d 61 74 2d 72 65 73 70 -variant......:if.gptel--at-resp
5a6e0 6f 6e 73 65 2d 68 69 73 74 6f 72 79 2d 70 0a 20 20 20 20 20 3a 74 72 61 6e 73 69 65 6e 74 20 74 onse-history-p......:transient.t
5a700 29 0a 20 20 20 20 28 22 4e 22 20 22 4e 65 78 74 20 76 61 72 69 61 6e 74 22 20 67 70 74 65 6c 2d ).....("N"."Next.variant".gptel-
5a720 2d 70 72 65 76 69 6f 75 73 2d 76 61 72 69 61 6e 74 0a 20 20 20 20 20 3a 69 66 20 67 70 74 65 6c -previous-variant......:if.gptel
5a740 2d 2d 61 74 2d 72 65 73 70 6f 6e 73 65 2d 68 69 73 74 6f 72 79 2d 70 0a 20 20 20 20 20 3a 74 72 --at-response-history-p......:tr
5a760 61 6e 73 69 65 6e 74 20 74 29 0a 20 20 20 20 28 22 45 22 20 22 45 64 69 66 66 20 70 72 65 76 69 ansient.t).....("E"."Ediff.previ
5a780 6f 75 73 22 20 67 70 74 65 6c 2d 2d 65 64 69 66 66 0a 20 20 20 20 20 3a 69 66 20 67 70 74 65 6c ous".gptel--ediff......:if.gptel
5a7a0 2d 2d 61 74 2d 72 65 73 70 6f 6e 73 65 2d 68 69 73 74 6f 72 79 2d 70 29 5d 0a 20 20 20 5b 22 44 --at-response-history-p)]....["D
5a7c0 72 79 20 52 75 6e 22 20 3a 69 66 20 28 6c 61 6d 62 64 61 20 28 29 20 28 6f 72 20 67 70 74 65 6c ry.Run".:if.(lambda.().(or.gptel
5a7e0 2d 6c 6f 67 2d 6c 65 76 65 6c 20 67 70 74 65 6c 2d 65 78 70 65 72 74 2d 63 6f 6d 6d 61 6e 64 73 -log-level.gptel-expert-commands
5a800 29 29 0a 20 20 20 20 28 22 49 22 20 22 49 6e 73 70 65 63 74 20 71 75 65 72 79 20 28 4c 69 73 70 )).....("I"."Inspect.query.(Lisp
5a820 29 22 0a 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 29 0a 20 20 20 20 20 20 20 22 49 6e 73 70 65 )"......(lambda.()........"Inspe
5a840 63 74 20 74 68 65 20 71 75 65 72 79 20 74 68 61 74 20 77 69 6c 6c 20 62 65 20 73 65 6e 74 20 61 ct.the.query.that.will.be.sent.a
5a860 73 20 61 20 6c 69 73 70 20 6f 62 6a 65 63 74 2e 22 0a 20 20 20 20 20 20 20 28 69 6e 74 65 72 61 s.a.lisp.object."........(intera
5a880 63 74 69 76 65 29 0a 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 73 61 6e 69 74 69 7a 65 2d 6d ctive)........(gptel--sanitize-m
5a8a0 6f 64 65 6c 29 0a 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 69 6e 73 70 65 63 74 2d 71 75 65 odel)........(gptel--inspect-que
5a8c0 72 79 0a 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 73 75 66 66 69 78 2d 73 65 6e 64 0a 20 ry.........(gptel--suffix-send..
5a8e0 20 20 20 20 20 20 20 20 28 63 6f 6e 73 20 22 49 22 20 28 74 72 61 6e 73 69 65 6e 74 2d 61 72 67 ........(cons."I".(transient-arg
5a900 73 20 74 72 61 6e 73 69 65 6e 74 2d 63 75 72 72 65 6e 74 2d 63 6f 6d 6d 61 6e 64 29 29 29 29 29 s.transient-current-command)))))
5a920 29 0a 20 20 20 20 28 22 4a 22 20 22 49 6e 73 70 65 63 74 20 71 75 65 72 79 20 28 4a 53 4f 4e 29 ).....("J"."Inspect.query.(JSON)
5a940 22 0a 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 29 0a 20 20 20 20 20 20 20 22 49 6e 73 70 65 63 "......(lambda.()........"Inspec
5a960 74 20 74 68 65 20 71 75 65 72 79 20 74 68 61 74 20 77 69 6c 6c 20 62 65 20 73 65 6e 74 20 61 73 t.the.query.that.will.be.sent.as
5a980 20 61 20 4a 53 4f 4e 20 6f 62 6a 65 63 74 2e 22 0a 20 20 20 20 20 20 20 28 69 6e 74 65 72 61 63 .a.JSON.object."........(interac
5a9a0 74 69 76 65 29 0a 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 73 61 6e 69 74 69 7a 65 2d 6d 6f tive)........(gptel--sanitize-mo
5a9c0 64 65 6c 29 0a 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 69 6e 73 70 65 63 74 2d 71 75 65 72 del)........(gptel--inspect-quer
5a9e0 79 0a 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 73 75 66 66 69 78 2d 73 65 6e 64 0a 20 20 y.........(gptel--suffix-send...
5aa00 20 20 20 20 20 20 20 28 63 6f 6e 73 20 22 49 22 20 28 74 72 61 6e 73 69 65 6e 74 2d 61 72 67 73 .......(cons."I".(transient-args
5aa20 20 74 72 61 6e 73 69 65 6e 74 2d 63 75 72 72 65 6e 74 2d 63 6f 6d 6d 61 6e 64 29 29 29 0a 20 20 .transient-current-command)))...
5aa40 20 20 20 20 20 20 27 6a 73 6f 6e 29 29 29 5d 5d 0a 20 20 5b 28 67 70 74 65 6c 2d 2d 73 75 66 66 ......'json)))]]...[(gptel--suff
5aa60 69 78 2d 73 65 6e 64 29 5d 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 28 67 70 74 ix-send)]...(interactive)...(gpt
5aa80 65 6c 2d 2d 73 61 6e 69 74 69 7a 65 2d 6d 6f 64 65 6c 29 0a 20 20 28 74 72 61 6e 73 69 65 6e 74 el--sanitize-model)...(transient
5aaa0 2d 73 65 74 75 70 20 27 67 70 74 65 6c 2d 6d 65 6e 75 29 29 0a 0a 3b 3b 20 2a 2a 20 50 72 65 66 -setup.'gptel-menu))..;;.**.Pref
5aac0 69 78 20 66 6f 72 20 73 65 74 74 69 6e 67 20 74 68 65 20 73 79 73 74 65 6d 20 70 72 6f 6d 70 74 ix.for.setting.the.system.prompt
5aae0 2e 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 73 65 74 75 70 2d 64 69 72 65 63 74 69 76 65 ...(defun.gptel--setup-directive
5ab00 2d 6d 65 6e 75 20 28 73 79 6d 20 6d 73 67 20 26 6f 70 74 69 6f 6e 61 6c 20 65 78 74 65 72 6e 61 -menu.(sym.msg.&optional.externa
5ab20 6c 29 0a 20 20 22 52 65 74 75 72 6e 20 61 20 6c 69 73 74 20 6f 66 20 74 72 61 6e 73 69 65 6e 74 l)..."Return.a.list.of.transient
5ab40 20 69 6e 66 69 78 20 64 65 66 69 6e 69 74 69 6f 6e 73 20 66 6f 72 20 73 65 74 74 69 6e 67 20 67 .infix.definitions.for.setting.g
5ab60 70 74 65 6c 0a 64 69 72 65 63 74 69 76 65 73 2e 0a 0a 53 59 4d 20 69 73 20 74 68 65 20 73 79 6d ptel.directives...SYM.is.the.sym
5ab80 62 6f 6c 20 77 68 6f 73 65 20 76 61 6c 75 65 20 69 73 20 73 65 74 20 74 6f 20 74 68 65 20 73 65 bol.whose.value.is.set.to.the.se
5aba0 6c 65 63 74 65 64 20 64 69 72 65 63 74 69 76 65 2e 2e 0a 4d 53 47 20 69 73 20 74 68 65 20 6d 65 lected.directive...MSG.is.the.me
5abc0 61 6e 69 6e 67 20 6f 66 20 73 79 6d 62 6f 6c 2c 20 75 73 65 64 20 77 68 65 6e 20 6d 65 73 73 61 aning.of.symbol,.used.when.messa
5abe0 67 69 6e 67 2e 0a 49 66 20 45 58 54 45 52 4e 41 4c 20 69 73 20 6e 6f 6e 2d 6e 69 6c 2c 20 69 6e ging..If.EXTERNAL.is.non-nil,.in
5ac00 63 6c 75 64 65 20 65 78 74 65 72 6e 61 6c 20 73 6f 75 72 63 65 73 20 6f 66 20 64 69 72 65 63 74 clude.external.sources.of.direct
5ac20 69 76 65 73 2e 22 0a 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 28 74 79 70 65 20 2e 20 70 72 ives."...(cl-loop.for.(type...pr
5ac40 6f 6d 70 74 29 20 69 6e 20 67 70 74 65 6c 2d 64 69 72 65 63 74 69 76 65 73 0a 20 20 20 20 20 20 ompt).in.gptel-directives.......
5ac60 20 20 20 20 20 3b 3b 20 41 76 6f 69 64 20 63 6c 61 73 68 65 73 20 77 69 74 68 20 74 68 65 20 63 .....;;.Avoid.clashes.with.the.c
5ac80 75 73 74 6f 6d 20 64 69 72 65 63 74 69 76 65 20 6b 65 79 0a 20 20 20 20 20 20 20 20 20 20 20 77 ustom.directive.key............w
5aca0 69 74 68 20 75 6e 75 73 65 64 2d 6b 65 79 73 20 3d 20 28 64 65 6c 65 74 65 20 3f 73 20 28 6e 75 ith.unused-keys.=.(delete.?s.(nu
5acc0 6d 62 65 72 2d 73 65 71 75 65 6e 63 65 20 3f 61 20 3f 7a 29 29 0a 20 20 20 20 20 20 20 20 20 20 mber-sequence.?a.?z))...........
5ace0 20 77 69 74 68 20 77 69 64 74 68 20 3d 20 28 77 69 6e 64 6f 77 2d 77 69 64 74 68 29 0a 20 20 20 .with.width.=.(window-width)....
5ad00 20 20 20 20 20 20 20 20 66 6f 72 20 6e 61 6d 65 20 3d 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 ........for.name.=.(symbol-name.
5ad20 74 79 70 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 6b 65 79 20 3d 20 28 73 65 71 2d type)............for.key.=.(seq-
5ad40 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 20 75 6e 75 73 65 find.(lambda.(k).(member.k.unuse
5ad60 64 2d 6b 65 79 73 29 29 20 6e 61 6d 65 20 28 73 65 71 2d 66 69 72 73 74 20 75 6e 75 73 65 64 2d d-keys)).name.(seq-first.unused-
5ad80 6b 65 79 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 64 6f 20 28 73 65 74 71 20 75 6e 75 73 65 keys))............do.(setq.unuse
5ada0 64 2d 6b 65 79 73 20 28 64 65 6c 65 74 65 20 6b 65 79 20 75 6e 75 73 65 64 2d 6b 65 79 73 29 29 d-keys.(delete.key.unused-keys))
5adc0 0a 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 54 68 65 20 65 78 70 6c 69 63 69 74 20 64 65 63 6c ............;;.The.explicit.decl
5ade0 61 72 61 74 69 6f 6e 20 22 3a 74 72 61 6e 73 69 65 6e 74 20 74 72 61 6e 73 69 65 6e 74 2d 2d 64 aration.":transient.transient--d
5ae00 6f 2d 72 65 74 75 72 6e 22 20 68 65 72 65 0a 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 61 70 70 o-return".here............;;.app
5ae20 65 61 72 73 20 74 6f 20 62 65 20 72 65 71 75 69 72 65 64 20 66 6f 72 20 54 72 61 6e 73 69 65 6e ears.to.be.required.for.Transien
5ae40 74 20 76 30 2e 35 20 61 6e 64 20 75 70 2e 20 20 57 69 74 68 6f 75 74 20 69 74 2c 20 74 68 65 73 t.v0.5.and.up...Without.it,.thes
5ae60 65 0a 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 61 72 65 20 74 72 65 61 74 65 64 20 61 73 20 73 e............;;.are.treated.as.s
5ae80 75 66 66 69 78 65 73 20 77 68 65 6e 20 69 6e 76 6f 6b 69 6e 67 20 60 67 70 74 65 6c 2d 73 79 73 uffixes.when.invoking.`gptel-sys
5aea0 74 65 6d 2d 70 72 6f 6d 70 74 27 20 64 69 72 65 63 74 6c 79 2c 0a 20 20 20 20 20 20 20 20 20 20 tem-prompt'.directly,...........
5aec0 20 3b 3b 20 61 6e 64 20 69 6e 66 69 78 65 73 20 77 68 65 6e 20 67 6f 69 6e 67 20 74 68 72 6f 75 .;;.and.infixes.when.going.throu
5aee0 67 68 20 60 67 70 74 65 6c 2d 6d 65 6e 75 27 2e 0a 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 54 gh.`gptel-menu'.............;;.T
5af00 4f 44 4f 3a 20 52 61 69 73 65 20 61 6e 20 69 73 73 75 65 20 77 69 74 68 20 54 72 61 6e 73 69 65 ODO:.Raise.an.issue.with.Transie
5af20 6e 74 2e 0a 20 20 20 20 20 20 20 20 20 20 20 63 6f 6c 6c 65 63 74 0a 20 20 20 20 20 20 20 20 20 nt.............collect..........
5af40 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 73 74 20 6b ..(list.(key-description.(list.k
5af60 65 79 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 28 63 ey))..................(concat.(c
5af80 61 70 69 74 61 6c 69 7a 65 20 6e 61 6d 65 29 20 22 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 apitalize.name).".".............
5afa0 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 20 22 20 27 64 69 .............(propertize.".".'di
5afc0 73 70 6c 61 79 20 27 28 73 70 61 63 65 20 3a 61 6c 69 67 6e 2d 74 6f 20 32 30 29 29 0a 20 20 20 splay.'(space.:align-to.20))....
5afe0 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
5b000 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e e...........................(con
5b020 63 61 74 20 22 28 22 20 28 67 70 74 65 6c 2d 2d 64 65 73 63 72 69 62 65 2d 64 69 72 65 63 74 69 cat."(".(gptel--describe-directi
5b040 76 65 20 70 72 6f 6d 70 74 20 28 2d 20 77 69 64 74 68 20 33 30 29 29 20 22 29 22 29 0a 20 20 20 ve.prompt.(-.width.30)).")")....
5b060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 66 61 63 65 20 27 73 68 .......................'face.'sh
5b080 61 64 6f 77 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 60 28 6c 61 6d 62 64 61 adow))..................`(lambda
5b0a0 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)...............
5b0c0 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 25 73 3a 20 25 73 22 20 2c 6d 73 67 20 2c 28 67 ......(message."%s:.%s".,msg.,(g
5b0e0 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 72 6f 6d 70 74 20 ptel--describe-directive.prompt.
5b100 31 30 30 20 22 e2 ae 90 20 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 100."...."))....................
5b120 20 28 67 70 74 65 6c 2d 2d 73 65 74 2d 77 69 74 68 2d 73 63 6f 70 65 20 27 2c 73 79 6d 20 27 2c .(gptel--set-with-scope.',sym.',
5b140 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 6f 63 61 6c 6c 79 prompt.gptel--set-buffer-locally
5b160 29 29 0a 09 20 20 20 20 20 20 20 20 20 3a 74 72 61 6e 73 69 65 6e 74 20 27 74 72 61 6e 73 69 65 ))...........:transient.'transie
5b180 6e 74 2d 2d 64 6f 2d 72 65 74 75 72 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 6f 20 70 nt--do-return)............into.p
5b1a0 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 66 69 6e 61 6c 6c rompt-suffixes............finall
5b1c0 79 20 72 65 74 75 72 6e 0a 20 20 20 20 20 20 20 20 20 20 20 28 6e 63 6f 6e 63 0a 20 20 20 20 20 y.return............(nconc......
5b1e0 20 20 20 20 20 20 20 70 72 6f 6d 70 74 2d 73 75 66 66 69 78 65 73 0a 20 20 20 20 20 20 20 20 20 .......prompt-suffixes..........
5b200 20 20 20 28 6c 69 73 74 20 28 6c 69 73 74 20 22 44 45 4c 22 20 22 4e 6f 6e 65 22 0a 20 20 20 20 ...(list.(list."DEL"."None".....
5b220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 60 28 6c 61 6d 62 64 61 20 28 29 20 ....................`(lambda.().
5b240 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)...................
5b260 20 20 20 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 25 73 20 75 6e 73 65 74 22 20 2c 6d 73 .........(message."%s.unset".,ms
5b280 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 28 67 g)............................(g
5b2a0 70 74 65 6c 2d 2d 73 65 74 2d 77 69 74 68 2d 73 63 6f 70 65 20 27 2c 73 79 6d 20 6e 69 6c 20 67 ptel--set-with-scope.',sym.nil.g
5b2c0 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 20 20 20 20 20 ptel--set-buffer-locally))......
5b2e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 74 72 61 6e 73 69 65 6e 74 20 27 74 ...................:transient.'t
5b300 72 61 6e 73 69 65 6e 74 2d 2d 64 6f 2d 72 65 74 75 72 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 ransient--do-return))...........
5b320 20 20 28 61 6e 64 20 65 78 74 65 72 6e 61 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..(and.external.................
5b340 20 28 6c 69 73 74 20 28 6c 69 73 74 20 22 53 50 43 22 20 22 50 69 63 6b 20 63 72 6f 77 64 73 6f .(list.(list."SPC"."Pick.crowdso
5b360 75 72 63 65 64 20 70 72 6f 6d 70 74 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 urced.prompt"...................
5b380 20 20 20 20 20 20 20 20 20 20 20 27 67 70 74 65 6c 2d 2d 72 65 61 64 2d 63 72 6f 77 64 73 6f 75 ...........'gptel--read-crowdsou
5b3a0 72 63 65 64 2d 70 72 6f 6d 70 74 0a 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 4e 4f rced-prompt................;;.NO
5b3c0 54 45 3a 20 51 75 69 74 74 69 6e 67 20 74 68 65 20 63 6f 6d 70 6c 65 74 69 6e 67 20 72 65 61 64 TE:.Quitting.the.completing.read
5b3e0 20 77 68 65 6e 20 70 69 63 6b 69 6e 67 20 61 0a 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 3b .when.picking.a................;
5b400 3b 20 63 72 6f 77 64 73 6f 75 72 63 65 64 20 70 72 6f 6d 70 74 20 77 69 6c 6c 20 63 61 75 73 65 ;.crowdsourced.prompt.will.cause
5b420 20 74 68 65 20 74 72 61 6e 73 69 65 6e 74 20 74 6f 20 65 78 69 74 0a 09 09 20 20 20 20 20 20 20 .the.transient.to.exit..........
5b440 20 20 20 20 20 20 3b 3b 20 69 6e 73 74 65 61 64 20 6f 66 20 72 65 74 75 72 6e 69 6e 67 20 74 6f ......;;.instead.of.returning.to
5b460 20 74 68 65 20 73 79 73 74 65 6d 20 70 72 6f 6d 70 74 20 6d 65 6e 75 2e 0a 20 20 20 20 20 20 20 .the.system.prompt.menu.........
5b480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 74 72 61 6e 73 69 65 6e 74 ......................:transient
5b4a0 20 27 74 72 61 6e 73 69 65 6e 74 2d 2d 64 6f 2d 65 78 69 74 29 29 29 29 29 29 0a 0a 3b 3b 3b 23 .'transient--do-exit))))))..;;;#
5b4c0 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 73 79 73 74 ##autoload.(autoload.'gptel-syst
5b4e0 65 6d 2d 70 72 6f 6d 70 74 20 22 67 70 74 65 6c 2d 74 72 61 6e 73 69 65 6e 74 22 20 6e 69 6c 20 em-prompt."gptel-transient".nil.
5b500 74 29 0a 28 74 72 61 6e 73 69 65 6e 74 2d 64 65 66 69 6e 65 2d 70 72 65 66 69 78 20 67 70 74 65 t).(transient-define-prefix.gpte
5b520 6c 2d 73 79 73 74 65 6d 2d 70 72 6f 6d 70 74 20 28 29 0a 20 20 22 53 65 74 20 74 68 65 20 4c 4c l-system-prompt.()..."Set.the.LL
5b540 4d 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 20 66 6f 72 20 4c 4c 4d 20 69 6e 74 65 72 61 63 M.system.message.for.LLM.interac
5b560 74 69 6f 6e 73 2e 0a 0a 54 68 65 20 5c 22 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 5c 22 20 65 tions...The.\"system.message\".e
5b580 73 74 61 62 6c 69 73 68 65 73 20 64 69 72 65 63 74 69 76 65 73 20 66 6f 72 20 74 68 65 20 63 68 stablishes.directives.for.the.ch
5b5a0 61 74 0a 73 65 73 73 69 6f 6e 20 61 6e 64 20 6d 6f 64 69 66 69 65 73 20 74 68 65 20 62 65 68 61 at.session.and.modifies.the.beha
5b5c0 76 69 6f 72 20 6f 66 20 74 68 65 20 4c 4c 4d 2e 20 53 6f 6d 65 20 65 78 61 6d 70 6c 65 73 20 6f vior.of.the.LLM..Some.examples.o
5b5e0 66 0a 73 79 73 74 65 6d 20 70 72 6f 6d 70 74 73 20 61 72 65 3a 0a 0a 59 6f 75 20 61 72 65 20 61 f.system.prompts.are:..You.are.a
5b600 20 68 65 6c 70 66 75 6c 20 61 73 73 69 73 74 61 6e 74 2e 20 41 6e 73 77 65 72 20 61 73 20 63 6f .helpful.assistant..Answer.as.co
5b620 6e 63 69 73 65 6c 79 20 61 73 20 70 6f 73 73 69 62 6c 65 2e 0a 52 65 70 6c 79 20 6f 6e 6c 79 20 ncisely.as.possible..Reply.only.
5b640 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 6f 73 65 with.shell.commands.and.no.prose
5b660 2e 0a 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.
5b680 76 65 72 73 65 2e 0a 0a 4d 6f 72 65 20 65 78 74 65 6e 73 69 76 65 20 73 79 73 74 65 6d 20 6d 65 verse...More.extensive.system.me
5b6a0 73 73 61 67 65 73 20 63 61 6e 20 62 65 20 75 73 65 66 75 6c 20 66 6f 72 20 73 70 65 63 69 66 69 ssages.can.be.useful.for.specifi
5b6c0 63 20 74 61 73 6b 73 2e 0a 0a 43 75 73 74 6f 6d 69 7a 65 20 60 67 70 74 65 6c 2d 64 69 72 65 63 c.tasks...Customize.`gptel-direc
5b6e0 74 69 76 65 73 27 20 66 6f 72 20 74 61 73 6b 2d 73 70 65 63 69 66 69 63 20 70 72 6f 6d 70 74 73 tives'.for.task-specific.prompts
5b700 2e 22 0a 20 20 5b 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 67 70 74 65 6c 2d 73 79 73 74 65 6d 2d ."...[:description.gptel-system-
5b720 70 72 6f 6d 70 74 2d 2d 66 6f 72 6d 61 74 0a 20 20 20 5b 28 67 70 74 65 6c 2d 2d 73 75 66 66 69 prompt--format....[(gptel--suffi
5b740 78 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 29 5d 0a 20 20 20 5b 28 67 70 74 65 6c 2d 2d 69 x-system-message)]....[(gptel--i
5b760 6e 66 69 78 2d 76 61 72 69 61 62 6c 65 2d 73 63 6f 70 65 29 5d 5d 0a 20 20 20 5b 3a 63 6c 61 73 nfix-variable-scope)]]....[:clas
5b780 73 20 74 72 61 6e 73 69 65 6e 74 2d 63 6f 6c 75 6d 6e 0a 20 20 20 20 3a 73 65 74 75 70 2d 63 68 s.transient-column.....:setup-ch
5b7a0 69 6c 64 72 65 6e 0a 20 20 20 20 28 6c 61 6d 62 64 61 20 28 5f 29 20 28 74 72 61 6e 73 69 65 6e ildren.....(lambda.(_).(transien
5b7c0 74 2d 70 61 72 73 65 2d 73 75 66 66 69 78 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 27 67 70 t-parse-suffixes.............'gp
5b7e0 74 65 6c 2d 73 79 73 74 65 6d 2d 70 72 6f 6d 70 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 67 tel-system-prompt.............(g
5b800 70 74 65 6c 2d 2d 73 65 74 75 70 2d 64 69 72 65 63 74 69 76 65 2d 6d 65 6e 75 0a 20 20 20 20 20 ptel--setup-directive-menu......
5b820 20 20 20 20 20 20 20 20 27 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 20 22 ........'gptel--system-message."
5b840 44 69 72 65 63 74 69 76 65 22 20 74 29 29 29 0a 20 20 20 20 3a 70 61 64 2d 6b 65 79 73 20 74 5d Directive".t))).....:pad-keys.t]
5b860 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 67 20 74 6f )..;;.**.Prefix.for.selecting.to
5b880 6f 6c 73 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 20 28 61 75 74 6f 6c 6f 61 64 20 27 67 ols..;;;###autoload.(autoload.'g
5b8a0 70 74 65 6c 2d 74 6f 6f 6c 73 20 22 67 70 74 65 6c 2d 74 72 61 6e 73 69 65 6e 74 22 20 6e 69 6c ptel-tools."gptel-transient".nil
5b8c0 20 74 29 0a 28 74 72 61 6e 73 69 65 6e 74 2d 64 65 66 69 6e 65 2d 70 72 65 66 69 78 20 67 70 74 .t).(transient-define-prefix.gpt
5b8e0 65 6c 2d 74 6f 6f 6c 73 20 28 29 0a 20 20 22 53 65 6c 65 63 74 20 74 6f 6f 6c 73 20 74 6f 20 69 el-tools.()..."Select.tools.to.i
5b900 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 0a 54 6f 6f nclude.with.gptel.requests...Too
5b920 6c 73 20 61 72 65 20 6f 72 67 61 6e 69 7a 65 64 20 69 6e 74 6f 20 63 61 74 65 67 6f 72 69 65 73 ls.are.organized.into.categories
5b940 2e 20 20 53 65 6c 65 63 74 69 6e 67 20 74 68 65 20 63 61 74 65 67 6f 72 79 0a 74 6f 67 67 6c 65 ...Selecting.the.category.toggle
5b960 73 20 61 6c 6c 20 74 68 65 20 74 6f 6f 6c 73 20 77 69 74 68 20 74 68 61 74 20 63 61 74 65 67 6f s.all.the.tools.with.that.catego
5b980 72 79 2e 0a 0a 54 6f 20 61 64 64 20 74 6f 6f 6c 73 20 74 6f 20 74 68 69 73 20 6c 69 73 74 2c 20 ry...To.add.tools.to.this.list,.
5b9a0 75 73 65 20 60 67 70 74 65 6c 2d 6d 61 6b 65 2d 74 6f 6f 6c 27 2c 20 77 68 69 63 68 20 73 65 65 use.`gptel-make-tool',.which.see
5b9c0 2e 0a 0a 55 73 69 6e 67 20 74 68 65 20 73 63 6f 70 65 20 6f 70 74 69 6f 6e 2c 20 79 6f 75 20 63 ...Using.the.scope.option,.you.c
5b9e0 61 6e 20 73 65 74 20 74 6f 6f 6c 73 20 74 6f 20 75 73 65 20 77 69 74 68 20 67 70 74 65 6c 0a 72 an.set.tools.to.use.with.gptel.r
5ba00 65 71 75 65 73 74 73 20 67 6c 6f 62 61 6c 6c 79 2c 20 69 6e 20 74 68 69 73 20 62 75 66 66 65 72 equests.globally,.in.this.buffer
5ba20 20 6f 72 20 66 6f 72 20 74 68 65 20 6e 65 78 74 20 72 65 71 75 65 73 74 0a 6f 6e 6c 79 20 28 5c .or.for.the.next.request.only.(\
5ba40 22 6f 6e 65 73 68 6f 74 5c 22 29 2e 22 0a 20 20 5b 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 50 "oneshot\")."...[:description."P
5ba60 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 6e rovide.the.LLM.with.tools.to.run
5ba80 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 65 .tasks.for.you"....["".....(gpte
5baa0 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 70 l--infix-variable-scope).....(gp
5bac0 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 6c tel--infix-use-tools).....(gptel
5bae0 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 20 --infix-confirm-tool-calls).....
5bb00 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 6c (gptel--infix-include-tool-resul
5bb20 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 20 ts)]....["".....("RET"."Confirm.
5bb40 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 61 72 67 73 29 0a 20 selection"......(lambda.(args)..
5bb60 20 20 20 20 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 20 28 6c 69 73 74 20 28 74 72 61 6e 73 69 ......(interactive.(list.(transi
5bb80 65 6e 74 2d 61 72 67 73 20 74 72 61 6e 73 69 65 6e 74 2d 63 75 72 72 65 6e 74 2d 63 6f 6d 6d 61 ent-args.transient-current-comma
5bba0 6e 64 29 29 29 0a 20 20 20 20 20 20 20 3b 3b 20 54 68 65 72 65 20 61 72 65 20 74 77 6f 20 6b 69 nd)))........;;.There.are.two.ki
5bbc0 6e 64 73 20 6f 66 20 41 52 47 53 3a 20 63 61 74 65 67 6f 72 69 65 73 20 77 69 74 68 20 76 61 6c nds.of.ARGS:.categories.with.val
5bbe0 75 65 20 22 28 2a 29 22 2c 20 61 6e 64 20 6c 69 73 74 73 20 6f 66 0a 20 20 20 20 20 20 20 3b 3b ue."(*)",.and.lists.of........;;
5bc00 20 74 68 65 20 74 79 70 65 20 27 28 22 63 61 74 65 67 6f 72 79 22 20 22 74 6f 6f 6c 5f 6e 61 6d .the.type.'("category"."tool_nam
5bc20 65 22 29 2e 20 20 57 65 20 6f 6e 6c 79 20 77 61 6e 74 20 74 68 65 20 6c 61 74 74 65 72 2c 20 74 e")...We.only.want.the.latter,.t
5bc40 6f 20 75 73 65 20 61 6e 0a 20 20 20 20 20 20 20 3b 3b 20 69 6e 64 65 78 20 69 6e 74 6f 20 60 67 o.use.an........;;.index.into.`g
5bc60 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 62 61 63 6b 65 6e 64 73 2e 27 0a 20 20 20 20 20 20 20 28 67 ptel--known-backends.'........(g
5bc80 70 74 65 6c 2d 2d 73 65 74 2d 77 69 74 68 2d 73 63 6f 70 65 0a 20 20 20 20 20 20 20 20 27 67 70 ptel--set-with-scope.........'gp
5bca0 74 65 6c 2d 74 6f 6f 6c 73 0a 20 20 20 20 20 20 20 20 28 6d 61 70 63 61 72 20 28 6c 61 6d 62 64 tel-tools.........(mapcar.(lambd
5bcc0 61 20 28 63 61 74 65 67 6f 72 79 2d 61 6e 64 2d 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 20 20 a.(category-and-name)...........
5bce0 20 20 20 20 20 20 20 20 28 6d 61 70 2d 6e 65 73 74 65 64 2d 65 6c 74 20 67 70 74 65 6c 2d 2d 6b ........(map-nested-elt.gptel--k
5bd00 6e 6f 77 6e 2d 74 6f 6f 6c 73 20 63 61 74 65 67 6f 72 79 2d 61 6e 64 2d 6e 61 6d 65 29 29 0a 20 nown-tools.category-and-name))..
5bd20 20 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 2d 6e 6f 74 ...............(cl-delete-if-not
5bd40 20 23 27 63 6f 6e 73 70 20 61 72 67 73 29 29 0a 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 2d 73 .#'consp.args)).........gptel--s
5bd60 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 3a 74 72 61 6e 73 69 et-buffer-locally))......:transi
5bd80 65 6e 74 20 74 72 61 6e 73 69 65 6e 74 2d 2d 64 6f 2d 72 65 74 75 72 6e 29 0a 20 20 20 20 28 22 ent.transient--do-return).....("
5bda0 71 22 20 22 43 61 6e 63 65 6c 22 20 74 72 61 6e 73 69 65 6e 74 2d 71 75 69 74 2d 6f 6e 65 29 5d q"."Cancel".transient-quit-one)]
5bdc0 5d 0a 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 6e 0a 20 20 20 ]...[:class.transient-column....
5bde0 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 0a 20 :setup-children....(lambda.(_)..
5be00 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 20 20 ....(transient-parse-suffixes...
5be20 20 20 20 20 27 67 70 74 65 6c 2d 74 6f 6f 6c 73 0a 20 20 20 20 20 20 28 63 64 72 0a 20 20 20 20 ....'gptel-tools.......(cdr.....
5be40 20 20 20 28 63 6c 2d 6c 6f 6f 70 20 20 20 20 20 20 20 20 20 20 3b 6c 6f 6f 70 20 74 68 72 6f 75 ...(cl-loop..........;loop.throu
5be60 67 68 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 20 74 6f 6f 6c 73 20 61 6e 64 20 63 6f 6c 6c 65 63 gh.gptel--known.tools.and.collec
5be80 74 20 63 61 74 65 67 6f 72 69 65 73 0a 20 20 20 20 20 20 20 20 66 6f 72 20 28 63 61 74 65 67 6f t.categories.........for.(catego
5bea0 72 79 20 2e 20 74 6f 6f 6c 73 2d 61 6c 69 73 74 29 20 69 6e 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 ry...tools-alist).in.gptel--know
5bec0 6e 2d 74 6f 6f 6c 73 0a 20 20 20 20 20 20 20 20 77 69 74 68 20 75 6e 75 73 65 64 2d 6b 65 79 73 n-tools.........with.unused-keys
5bee0 20 3d 20 28 64 65 6c 65 74 65 20 3f 71 20 28 6e 75 6d 62 65 72 2d 73 65 71 75 65 6e 63 65 20 3f .=.(delete.?q.(number-sequence.?
5bf00 61 20 3f 7a 29 29 0a 20 20 20 20 20 20 20 20 66 6f 72 20 63 61 74 65 67 6f 72 79 2d 6b 65 79 20 a.?z)).........for.category-key.
5bf20 3d 20 28 73 65 71 2d 66 69 6e 64 20 28 6c 61 6d 62 64 61 20 28 6b 29 20 28 6d 65 6d 62 65 72 20 =.(seq-find.(lambda.(k).(member.
5bf40 6b 20 75 6e 75 73 65 64 2d 6b 65 79 73 29 29 20 63 61 74 65 67 6f 72 79 0a 20 20 20 20 20 20 20 k.unused-keys)).category........
5bf60 20 20 20 20 20 20 20 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 ..............................(s
5bf80 65 71 2d 66 69 72 73 74 20 75 6e 75 73 65 64 2d 6b 65 79 73 29 29 0a 20 20 20 20 20 20 20 20 64 eq-first.unused-keys)).........d
5bfa0 6f 20 28 73 65 74 71 20 75 6e 75 73 65 64 2d 6b 65 79 73 20 28 64 65 6c 65 74 65 20 63 61 74 65 o.(setq.unused-keys.(delete.cate
5bfc0 67 6f 72 79 2d 6b 65 79 20 75 6e 75 73 65 64 2d 6b 65 79 73 29 29 0a 20 20 20 20 20 20 20 20 6e gory-key.unused-keys)).........n
5bfe0 63 6f 6e 63 0a 20 20 20 20 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 20 20 20 20 20 20 20 20 20 20 20 conc.........(cl-loop...........
5c000 20 20 20 20 20 20 20 20 20 3b 66 6f 72 20 65 61 63 68 20 63 61 74 65 67 6f 72 79 2c 20 63 6f 6c .........;for.each.category,.col
5c020 6c 65 63 74 20 74 6f 6f 6c 73 20 61 73 20 69 6e 66 69 78 65 73 0a 20 20 20 20 20 20 20 20 20 66 lect.tools.as.infixes..........f
5c040 6f 72 20 28 6e 61 6d 65 20 2e 20 74 6f 6f 6c 29 20 69 6e 20 74 6f 6f 6c 73 2d 61 6c 69 73 74 0a or.(name...tool).in.tools-alist.
5c060 20 20 20 20 20 20 20 20 20 77 69 74 68 20 74 6f 6f 6c 2d 6b 65 79 73 20 3d 20 28 64 65 6c 65 74 .........with.tool-keys.=.(delet
5c080 65 20 63 61 74 65 67 6f 72 79 2d 6b 65 79 20 28 6e 75 6d 62 65 72 2d 73 65 71 75 65 6e 63 65 20 e.category-key.(number-sequence.
5c0a0 3f 61 20 3f 7a 29 29 0a 20 20 20 20 20 20 20 20 20 66 6f 72 20 74 6f 6f 6c 2d 6b 65 79 20 3d 20 ?a.?z))..........for.tool-key.=.
5c0c0 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 20 (seq-find.(lambda.(k).(member.k.
5c0e0 74 6f 6f 6c 2d 6b 65 79 73 29 29 20 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 tool-keys)).name................
5c100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 71 2d 66 69 72 73 74 20 74 6f ...................(seq-first.to
5c120 6f 6c 2d 6b 65 79 73 29 29 0a 20 20 20 20 20 20 20 20 20 64 6f 20 28 73 65 74 71 20 74 6f 6f 6c ol-keys))..........do.(setq.tool
5c140 2d 6b 65 79 73 20 28 64 65 6c 65 74 65 20 74 6f 6f 6c 2d 6b 65 79 20 74 6f 6f 6c 2d 6b 65 79 73 -keys.(delete.tool-key.tool-keys
5c160 29 29 0a 20 20 20 20 20 20 20 20 20 63 6f 6c 6c 65 63 74 20 20 20 20 20 20 20 20 20 20 20 3b 45 ))..........collect...........;E
5c180 61 63 68 20 6c 69 73 74 20 69 73 20 61 20 74 72 61 6e 73 69 65 6e 74 20 69 6e 66 69 78 20 6f 66 ach.list.is.a.transient.infix.of
5c1a0 20 74 79 70 65 20 67 70 74 65 6c 2d 2d 73 77 69 74 63 68 0a 20 20 20 20 20 20 20 20 20 28 6c 69 .type.gptel--switch..........(li
5c1c0 73 74 20 28 6b 65 79 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 28 6c 69 73 74 20 63 61 74 65 67 6f st.(key-description.(list.catego
5c1e0 72 79 2d 6b 65 79 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 ry-key.tool-key))...............
5c200 20 28 63 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 .(concat.(make-string.(max.(-.20
5c220 20 28 6c 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 .(length.name)).0).?.)..........
5c240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 0a 20 20 20 20 20 20 ..............(propertize.......
5c260 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 28 22 20 28 67 ..................(concat."(".(g
5c280 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 20 20 20 20 ptel--describe-directive........
5c2a0 20 20 20 20 20 20 20 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
5c2c0 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).(-.(
5c2e0 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))..............
5c300 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 20 ...................")").........
5c320 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 29 0a ................'face.'shadow)).
5c340 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 6d 65 20 ...............(gptel-tool-name.
5c360 74 6f 6f 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 66 6f 72 6d 61 74 20 22 20 25 tool)................:format.".%
5c380 6b 20 25 76 20 25 64 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 69 6e 69 74 2d 76 61 k.%v.%d"................:init-va
5c3a0 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 75 65 0a 20 20 lue.#'gptel--tools-init-value...
5c3c0 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 77 69 74 .............:class.'gptel--swit
5c3e0 63 68 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 61 74 65 67 6f 72 79 20 63 61 74 65 ch................:category.cate
5c400 67 6f 72 79 29 0a 20 20 20 20 20 20 20 20 20 69 6e 74 6f 20 69 6e 66 69 78 65 73 2d 66 6f 72 2d gory)..........into.infixes-for-
5c420 63 61 74 65 67 6f 72 79 0a 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 20 72 65 74 75 72 6e category..........finally.return
5c440 0a 20 20 20 20 20 20 20 20 20 28 69 64 65 6e 74 69 74 79 20 3b 54 4f 44 4f 28 74 6f 6f 6c 29 3a ..........(identity.;TODO(tool):
5c460 20 52 65 70 6c 61 63 65 20 77 69 74 68 20 76 63 6f 6e 63 61 74 20 66 6f 72 20 67 72 6f 75 70 73 .Replace.with.vconcat.for.groups
5c480 20 73 65 70 61 72 61 74 65 64 20 62 79 20 63 61 74 65 67 6f 72 79 0a 20 20 20 20 20 20 20 20 20 .separated.by.category..........
5c4a0 20 3b 3b 20 41 64 64 20 61 20 63 61 74 65 67 6f 72 79 20 68 65 61 64 65 72 20 74 68 61 74 20 63 .;;.Add.a.category.header.that.c
5c4c0 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 74 6f 67 67 6c 65 20 61 6c 6c 20 74 6f 6f 6c 73 20 69 an.be.used.to.toggle.all.tools.i
5c4e0 6e 20 74 68 61 74 20 63 61 74 65 67 6f 72 79 0a 20 20 20 20 20 20 20 20 20 20 28 6e 63 6f 6e 63 n.that.category...........(nconc
5c500 20 28 6c 69 73 74 20 22 20 22 20 28 6c 69 73 74 20 28 6b 65 79 2d 64 65 73 63 72 69 70 74 69 6f .(list.".".(list.(key-descriptio
5c520 6e 20 28 6c 69 73 74 20 63 61 74 65 67 6f 72 79 2d 6b 65 79 20 63 61 74 65 67 6f 72 79 2d 6b 65 n.(list.category-key.category-ke
5c540 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 20 y)).............................
5c560 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 28 63 6f 6e 63 61 74 .....(concat.(propertize.(concat
5c580 20 28 63 61 70 69 74 61 6c 69 7a 65 20 63 61 74 65 67 6f 72 79 29 20 22 20 74 6f 6f 6c 73 22 29 .(capitalize.category).".tools")
5c5a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
5c5c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 66 61 63 65 20 27 74 72 61 ......................'face.'tra
5c5e0 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 20 nsient-heading).................
5c600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 6b 65 2d 73 .........................(make-s
5c620 74 72 69 6e 67 20 28 6d 61 78 20 28 2d 20 31 34 20 28 6c 65 6e 67 74 68 20 63 61 74 65 67 6f 72 tring.(max.(-.14.(length.categor
5c640 79 29 29 20 30 29 20 3f 20 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 y)).0).?.)).....................
5c660 20 20 20 20 20 20 20 20 20 20 20 20 20 22 28 2a 29 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ............."(*)"..............
5c680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 66 6f 72 6d 61 74 20 22 20 25 6b ....................:format.".%k
5c6a0 20 25 64 20 25 76 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .%d.%v".........................
5c6c0 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 77 69 74 63 68 2d 63 .........:class.'gptel--switch-c
5c6e0 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 20 20 20 20 20 20 20 ategory.........................
5c700 20 20 20 20 20 20 20 20 20 3a 63 61 74 65 67 6f 72 79 20 63 61 74 65 67 6f 72 79 29 29 0a 20 20 .........:category.category))...
5c720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 66 69 78 65 73 2d 66 6f 72 2d 63 61 74 65 67 ...............infixes-for-categ
5c740 6f 72 79 29 29 29 29 29 29 29 5d 29 0a 0a 0c 0a 3b 3b 20 2a 20 54 72 61 6e 73 69 65 6e 74 20 49 ory)))))))])....;;.*.Transient.I
5c760 6e 66 69 78 65 73 0a 0a 3b 3b 20 2a 2a 20 49 6e 66 69 78 65 73 20 66 6f 72 20 63 6f 6e 74 65 78 nfixes..;;.**.Infixes.for.contex
5c780 74 20 61 67 67 72 65 67 61 74 69 6f 6e 0a 0a 28 74 72 61 6e 73 69 65 6e 74 2d 64 65 66 69 6e 65 t.aggregation..(transient-define
5c7a0 2d 69 6e 66 69 78 20 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 75 73 65 2d 63 6f 6e 74 65 78 74 20 -infix.gptel--infix-use-context.
5c7c0 28 29 0a 20 20 22 44 65 73 63 72 69 62 65 20 74 61 72 67 65 74 20 64 65 73 74 69 6e 61 74 69 6f ()..."Describe.target.destinatio
5c7e0 6e 20 66 6f 72 20 63 6f 6e 74 65 78 74 20 69 6e 6a 65 63 74 69 6f 6e 2e 0a 0a 67 70 74 65 6c 20 n.for.context.injection...gptel.
5c800 77 69 6c 6c 20 69 6e 63 6c 75 64 65 20 77 69 74 68 20 74 68 65 20 4c 4c 4d 20 72 65 71 75 65 73 will.include.with.the.LLM.reques
5c820 74 20 61 6e 79 20 61 64 64 69 74 69 6f 6e 61 6c 20 63 6f 6e 74 65 78 74 0a 61 64 64 65 64 20 77 t.any.additional.context.added.w
5c840 69 74 68 20 60 67 70 74 65 6c 2d 61 64 64 27 2e 20 20 54 68 69 73 20 63 6f 6e 74 65 78 74 20 63 ith.`gptel-add'...This.context.c
5c860 61 6e 20 62 65 20 69 67 6e 6f 72 65 64 2c 20 69 6e 63 6c 75 64 65 64 0a 77 69 74 68 20 74 68 65 an.be.ignored,.included.with.the
5c880 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 20 6f 72 20 69 6e 63 6c 75 64 65 64 20 77 69 74 68 .system.message.or.included.with
5c8a0 20 74 68 65 20 75 73 65 72 20 70 72 6f 6d 70 74 2e 0a 0a 57 68 65 72 65 20 69 6e 20 74 68 65 20 .the.user.prompt...Where.in.the.
5c8c0 72 65 71 75 65 73 74 20 74 68 69 73 20 63 6f 6e 74 65 78 74 20 69 73 20 69 6e 63 6c 75 64 65 64 request.this.context.is.included
5c8e0 20 64 65 70 65 6e 64 73 20 6f 6e 20 74 68 65 0a 76 61 6c 75 65 20 6f 66 20 60 67 70 74 65 6c 2d .depends.on.the.value.of.`gptel-
5c900 75 73 65 2d 63 6f 6e 74 65 78 74 27 2c 20 73 65 74 20 66 72 6f 6d 20 68 65 72 65 2e 22 0a 20 20 use-context',.set.from.here."...
5c920 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 49 6e 63 6c 75 64 65 20 63 6f 6e 74 65 78 74 22 0a 20 :description."Include.context"..
5c940 20 3a 63 6c 61 73 73 20 27 67 70 74 65 6c 2d 6c 69 73 70 2d 76 61 72 69 61 62 6c 65 0a 20 20 3a .:class.'gptel-lisp-variable...:
5c960 76 61 72 69 61 62 6c 65 20 27 67 70 74 65 6c 2d 75 73 65 2d 63 6f 6e 74 65 78 74 0a 20 20 3a 66 variable.'gptel-use-context...:f
5c980 6f 72 6d 61 74 20 22 20 25 6b 20 25 64 20 25 76 22 0a 20 20 3a 73 65 74 2d 76 61 6c 75 65 20 23 ormat.".%k.%d.%v"...:set-value.#
5c9a0 27 67 70 74 65 6c 2d 2d 73 65 74 2d 77 69 74 68 2d 73 63 6f 70 65 0a 20 20 3a 64 69 73 70 6c 61 'gptel--set-with-scope...:displa
5c9c0 79 2d 6e 69 6c 20 22 4e 6f 22 0a 20 20 3a 64 69 73 70 6c 61 79 2d 6d 61 70 20 27 28 28 6e 69 6c y-nil."No"...:display-map.'((nil
5c9e0 20 20 20 20 2e 20 22 4e 6f 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 79 ......"No")..................(sy
5ca00 73 74 65 6d 20 2e 20 22 77 69 74 68 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 22 29 0a 20 20 stem..."with.system.message")...
5ca20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 73 65 72 20 20 20 2e 20 22 77 69 74 68 20 75 ...............(user....."with.u
5ca40 73 65 72 20 70 72 6f 6d 70 74 22 29 29 0a 20 20 3a 6b 65 79 20 22 2d 69 22 0a 20 20 3a 72 65 61 ser.prompt"))...:key."-i"...:rea
5ca60 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._)....
5ca80 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 4e 6f 22 .........(let*.((choices.'(("No"
5caa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 ....................nil)........
5cac0 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 77 69 74 68 20 73 79 .......................("with.sy
5cae0 73 74 65 6d 20 6d 65 73 73 61 67 65 22 20 2e 20 73 79 73 74 65 6d 29 0a 20 20 20 20 20 20 20 20 stem.message"...system).........
5cb00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 22 77 69 74 68 20 75 73 65 ......................("with.use
5cb20 72 20 70 72 6f 6d 70 74 22 20 20 20 20 2e 20 75 73 65 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 r.prompt"......user)))..........
5cb40 20 20 20 20 20 20 20 20 20 20 28 64 65 73 74 69 6e 61 74 69 6f 6e 20 28 63 6f 6d 70 6c 65 74 69 ..........(destination.(completi
5cb60 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))).
5cb80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 64 72 20 28 61 73 73 6f 63 20 64 65 73 74 69 6e ..............(cdr.(assoc.destin
5cba0 61 74 69 6f 6e 20 63 68 6f 69 63 65 73 29 29 29 29 29 0a 0a 3b 3b 20 2a 2a 20 49 6e 66 69 78 65 ation.choices)))))..;;.**.Infixe
5cbc0 73 20 66 6f 72 20 6d 6f 64 65 6c 20 70 61 72 61 6d 65 74 65 72 73 0a 0a 28 74 72 61 6e 73 69 65 s.for.model.parameters..(transie
5cbe0 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 76 61 72 nt-define-infix.gptel--infix-var
5cc00 69 61 62 6c 65 2d 73 63 6f 70 65 20 28 29 0a 20 20 22 53 65 74 20 67 70 74 65 6c 27 73 20 6d 6f iable-scope.()..."Set.gptel's.mo
5cc20 64 65 6c 20 70 61 72 61 6d 65 74 65 72 73 20 61 6e 64 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 del.parameters.and.system.messag
5cc40 65 20 69 6e 20 74 68 69 73 20 62 75 66 66 65 72 20 6f 72 20 67 6c 6f 62 61 6c 6c 79 2e 22 0a 20 e.in.this.buffer.or.globally."..
5cc60 20 3a 61 72 67 75 6d 65 6e 74 20 22 73 63 6f 70 65 22 0a 20 20 3a 76 61 72 69 61 62 6c 65 20 27 .:argument."scope"...:variable.'
5cc80 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 0a 20 20 3a 63 6c 61 gptel--set-buffer-locally...:cla
5cca0 73 73 20 27 67 70 74 65 6c 2d 2d 73 63 6f 70 65 0a 20 20 3a 66 6f 72 6d 61 74 20 22 20 20 25 6b ss.'gptel--scope...:format."..%k
5ccc0 20 25 64 20 25 76 22 0a 20 20 3a 6b 65 79 20 22 3d 22 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f .%d.%v"...:key."="...:descriptio
5cce0 6e 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 53 63 6f 70 65 22 20 27 66 61 63 65 20 27 74 72 61 n.(propertize."Scope".'face.'tra
5cd00 6e 73 69 65 6e 74 2d 69 6e 61 63 74 69 76 65 2d 61 72 67 75 6d 65 6e 74 29 29 0a 0a 28 74 72 61 nsient-inactive-argument))..(tra
5cd20 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 69 78 nsient-define-infix.gptel--infix
5cd40 2d 6e 75 6d 2d 6d 65 73 73 61 67 65 73 2d 74 6f 2d 73 65 6e 64 20 28 29 0a 20 20 22 4e 75 6d 62 -num-messages-to-send.()..."Numb
5cd60 65 72 20 6f 66 20 72 65 63 65 6e 74 20 6d 65 73 73 61 67 65 73 20 74 6f 20 73 65 6e 64 20 77 69 er.of.recent.messages.to.send.wi
5cd80 74 68 20 65 61 63 68 20 65 78 63 68 61 6e 67 65 2e 0a 0a 42 79 20 64 65 66 61 75 6c 74 2c 20 74 th.each.exchange...By.default,.t
5cda0 68 65 20 66 75 6c 6c 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 20 68 69 73 74 6f 72 79 20 69 73 20 he.full.conversation.history.is.
5cdc0 73 65 6e 74 20 77 69 74 68 20 65 76 65 72 79 20 6e 65 77 0a 70 72 6f 6d 70 74 2e 20 54 68 69 73 sent.with.every.new.prompt..This
5cde0 20 72 65 74 61 69 6e 73 20 74 68 65 20 66 75 6c 6c 20 63 6f 6e 74 65 78 74 20 6f 66 20 74 68 65 .retains.the.full.context.of.the
5ce00 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 2c 20 62 75 74 0a 63 61 6e 20 62 65 20 65 78 70 65 6e 73 .conversation,.but.can.be.expens
5ce20 69 76 65 20 69 6e 20 74 6f 6b 65 6e 20 73 69 7a 65 2e 20 53 65 74 20 68 6f 77 20 6d 61 6e 79 20 ive.in.token.size..Set.how.many.
5ce40 72 65 63 65 6e 74 20 6d 65 73 73 61 67 65 73 20 74 6f 0a 69 6e 63 6c 75 64 65 2e 22 0a 20 20 3a recent.messages.to.include."...:
5ce60 64 65 73 63 72 69 70 74 69 6f 6e 20 22 70 72 65 76 69 6f 75 73 20 72 65 73 70 6f 6e 73 65 73 22 description."previous.responses"
5ce80 0a 20 20 3a 63 6c 61 73 73 20 27 67 70 74 65 6c 2d 6c 69 73 70 2d 76 61 72 69 61 62 6c 65 0a 20 ...:class.'gptel-lisp-variable..
5cea0 20 3a 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 .:variable.'gptel--num-messages-
5cec0 74 6f 2d 73 65 6e 64 0a 20 20 3a 73 65 74 2d 76 61 6c 75 65 20 23 27 67 70 74 65 6c 2d 2d 73 65 to-send...:set-value.#'gptel--se
5cee0 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 27 61 6c 6c t-with-scope...:display-nil.'all
5cf00 0a 20 20 3a 66 6f 72 6d 61 74 20 22 20 25 6b 20 25 76 20 25 64 22 0a 20 20 3a 6b 65 79 20 22 2d ...:format.".%k.%v.%d"...:key."-
5cf20 6e 22 0a 20 20 3a 70 72 6f 6d 70 74 20 22 4e 75 6d 62 65 72 20 6f 66 20 70 61 73 74 20 6d 65 73 n"...:prompt."Number.of.past.mes
5cf40 73 61 67 65 73 20 74 6f 20 69 6e 63 6c 75 64 65 20 66 6f 72 20 63 6f 6e 74 65 78 74 20 28 6c 65 sages.to.include.for.context.(le
5cf60 61 76 65 20 65 6d 70 74 79 20 66 6f 72 20 61 6c 6c 29 3a 20 22 0a 20 20 3a 72 65 61 64 65 72 20 ave.empty.for.all):."...:reader.
5cf80 27 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 'gptel--transient-read-number)..
5cfa0 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 69 (transient-define-infix.gptel--i
5cfc0 6e 66 69 78 2d 6d 61 78 2d 74 6f 6b 65 6e 73 20 28 29 0a 20 20 22 4d 61 78 20 74 6f 6b 65 6e 73 nfix-max-tokens.()..."Max.tokens
5cfe0 20 70 65 72 20 72 65 73 70 6f 6e 73 65 2e 0a 0a 54 68 69 73 20 69 73 20 72 6f 75 67 68 6c 79 20 .per.response...This.is.roughly.
5d000 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 77 6f 72 64 73 20 69 6e 20 74 68 65 20 72 65 73 70 6f the.number.of.words.in.the.respo
5d020 6e 73 65 2e 20 31 30 30 2d 33 30 30 20 69 73 20 61 0a 72 65 61 73 6f 6e 61 62 6c 65 20 72 61 6e nse..100-300.is.a.reasonable.ran
5d040 67 65 20 66 6f 72 20 73 68 6f 72 74 20 61 6e 73 77 65 72 73 2c 20 34 30 30 20 6f 72 20 6d 6f 72 ge.for.short.answers,.400.or.mor
5d060 65 20 66 6f 72 20 6c 6f 6e 67 65 72 0a 72 65 73 70 6f 6e 73 65 73 2e 22 0a 20 20 3a 64 65 73 63 e.for.longer.responses."...:desc
5d080 72 69 70 74 69 6f 6e 20 22 52 65 73 70 6f 6e 73 65 20 6c 65 6e 67 74 68 20 28 74 6f 6b 65 6e 73 ription."Response.length.(tokens
5d0a0 29 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 )"...:class.'gptel-lisp-variable
5d0c0 0a 20 20 3a 76 61 72 69 61 62 6c 65 20 27 67 70 74 65 6c 2d 6d 61 78 2d 74 6f 6b 65 6e 73 0a 20 ...:variable.'gptel-max-tokens..
5d0e0 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 2d 73 63 .:set-value.#'gptel--set-with-sc
5d100 6f 70 65 0a 20 20 3a 64 69 73 70 6c 61 79 2d 6e 69 6c 20 27 61 75 74 6f 0a 20 20 3a 6b 65 79 20 ope...:display-nil.'auto...:key.
5d120 22 2d 63 22 0a 20 20 3a 70 72 6f 6d 70 74 20 22 52 65 73 70 6f 6e 73 65 20 6c 65 6e 67 74 68 20 "-c"...:prompt."Response.length.
5d140 69 6e 20 74 6f 6b 65 6e 73 20 28 6c 65 61 76 65 20 65 6d 70 74 79 3a 20 64 65 66 61 75 6c 74 2c in.tokens.(leave.empty:.default,
5d160 20 38 30 2d 32 30 30 3a 20 73 68 6f 72 74 2c 20 32 30 30 2d 35 30 30 3a 20 6c 6f 6e 67 29 3a 20 .80-200:.short,.200-500:.long):.
5d180 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 65 6e 74 2d 72 65 "...:reader.'gptel--transient-re
5d1a0 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 69 6e 65 2d 69 6e ad-number)..(transient-define-in
5d1c0 66 69 78 20 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 70 72 6f 76 69 64 65 72 20 28 29 0a 20 20 22 fix.gptel--infix-provider.()..."
5d1e0 41 49 20 50 72 6f 76 69 64 65 72 20 66 6f 72 20 43 68 61 74 2e 22 0a 20 20 3a 64 65 73 63 72 69 AI.Provider.for.Chat."...:descri
5d200 70 74 69 6f 6e 20 22 4d 6f 64 65 6c 22 0a 20 20 3a 63 6c 61 73 73 20 27 67 70 74 65 6c 2d 70 72 ption."Model"...:class.'gptel-pr
5d220 6f 76 69 64 65 72 2d 76 61 72 69 61 62 6c 65 0a 20 20 3a 70 72 6f 6d 70 74 20 22 4d 6f 64 65 6c ovider-variable...:prompt."Model
5d240 3a 20 22 0a 20 20 3a 76 61 72 69 61 62 6c 65 20 27 67 70 74 65 6c 2d 6d 6f 64 65 6c 0a 20 20 3a :."...:variable.'gptel-model...:
5d260 73 65 74 2d 76 61 6c 75 65 20 23 27 67 70 74 65 6c 2d 2d 73 65 74 2d 77 69 74 68 2d 73 63 6f 70 set-value.#'gptel--set-with-scop
5d280 65 0a 20 20 3a 62 61 63 6b 65 6e 64 20 27 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 0a 20 20 3a 6b e...:backend.'gptel-backend...:k
5d2a0 65 79 20 22 2d 6d 22 0a 20 20 3a 72 65 61 64 65 72 20 28 6c 61 6d 62 64 61 20 28 70 72 6f 6d 70 ey."-m"...:reader.(lambda.(promp
5d2c0 74 20 26 72 65 73 74 20 5f 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 0a t.&rest._).............(cl-loop.
5d2e0 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 6e 61 6d 65 20 2e 20 62 61 63 6b 65 6e 64 .............for.(name...backend
5d300 29 20 69 6e 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 62 61 63 6b 65 6e 64 73 0a 20 20 20 20 20 ).in.gptel--known-backends......
5d320 20 20 20 20 20 20 20 20 6e 63 6f 6e 63 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 6d 6f 64 65 6c ........nconc.(cl-loop.for.model
5d340 20 69 6e 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 6d 6f 64 65 6c 73 20 62 61 63 6b 65 6e .in.(gptel-backend-models.backen
5d360 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 d).............................c
5d380 6f 6c 6c 65 63 74 20 28 6c 69 73 74 20 28 63 6f 6e 63 61 74 20 6e 61 6d 65 20 22 3a 22 20 28 67 ollect.(list.(concat.name.":".(g
5d3a0 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 6e 61 6d 65 20 6d 6f 64 65 6c 29 29 0a 20 20 20 20 20 20 20 ptel--model-name.model))........
5d3c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
5d3e0 20 20 20 62 61 63 6b 65 6e 64 20 6d 6f 64 65 6c 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ...backend.model))..............
5d400 69 6e 74 6f 20 6d 6f 64 65 6c 73 2d 61 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 77 into.models-alist..............w
5d420 69 74 68 20 63 6f 6d 70 6c 65 74 69 6f 6e 2d 65 78 74 72 61 2d 70 72 6f 70 65 72 74 69 65 73 20 ith.completion-extra-properties.
5d440 3d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 60 28 3a 61 6e 6e 6f 74 61 74 69 6f 6e 2d 66 75 6e =..............`(:annotation-fun
5d460 63 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2c 28 6c 61 6d 62 64 61 20 28 63 ction................,(lambda.(c
5d480 6f 6d 70 29 0a 09 09 20 20 28 6c 65 74 2a 20 28 28 6d 6f 64 65 6c 20 28 6e 74 68 20 32 20 28 61 omp).....(let*.((model.(nth.2.(a
5d4a0 73 73 6f 63 20 63 6f 6d 70 20 6d 6f 64 65 6c 73 2d 61 6c 69 73 74 29 29 29 0a 09 09 09 20 28 64 ssoc.comp.models-alist))).....(d
5d4c0 65 73 63 20 28 67 65 74 20 6d 6f 64 65 6c 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 29 29 0a 09 09 esc.(get.model.:description))...
5d4e0 09 20 28 63 61 70 73 20 28 67 65 74 20 6d 6f 64 65 6c 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 ..(caps.(get.model.:capabilities
5d500 29 29 0a 09 09 09 20 28 63 6f 6e 74 65 78 74 20 28 67 65 74 20 6d 6f 64 65 6c 20 3a 63 6f 6e 74 )).....(context.(get.model.:cont
5d520 65 78 74 2d 77 69 6e 64 6f 77 29 29 0a 09 09 09 20 28 69 6e 70 75 74 2d 63 6f 73 74 20 28 67 65 ext-window)).....(input-cost.(ge
5d540 74 20 6d 6f 64 65 6c 20 3a 69 6e 70 75 74 2d 63 6f 73 74 29 29 0a 09 09 09 20 28 6f 75 74 70 75 t.model.:input-cost)).....(outpu
5d560 74 2d 63 6f 73 74 20 28 67 65 74 20 6d 6f 64 65 6c 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 29 29 t-cost.(get.model.:output-cost))
5d580 0a 09 09 09 20 28 63 75 74 6f 66 66 20 28 67 65 74 20 6d 6f 64 65 6c 20 3a 63 75 74 6f 66 66 2d .....(cutoff.(get.model.:cutoff-
5d5a0 64 61 74 65 29 29 29 0a 09 09 20 20 20 20 28 77 68 65 6e 20 28 6f 72 20 64 65 73 63 20 63 61 70 date))).......(when.(or.desc.cap
5d5c0 73 20 63 6f 6e 74 65 78 74 20 69 6e 70 75 74 2d 63 6f 73 74 20 6f 75 74 70 75 74 2d 63 6f 73 74 s.context.input-cost.output-cost
5d5e0 20 63 75 74 6f 66 66 29 0a 09 09 20 20 20 20 20 20 28 63 6f 6e 63 61 74 0a 09 09 20 20 20 20 20 .cutoff).........(concat........
5d600 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 60 28 73 70 61 ..(propertize.".".'display.`(spa
5d620 63 65 20 3a 61 6c 69 67 6e 2d 74 6f 20 34 30 29 29 0a 09 09 20 20 20 20 20 20 20 28 77 68 65 6e ce.:align-to.40))..........(when
5d640 20 64 65 73 63 20 28 74 72 75 6e 63 61 74 65 2d 73 74 72 69 6e 67 2d 74 6f 2d 77 69 64 74 68 20 .desc.(truncate-string-to-width.
5d660 64 65 73 63 20 37 30 20 6e 69 6c 20 3f 20 74 20 74 29 29 0a 09 09 20 20 20 20 20 20 20 22 20 22 desc.70.nil.?.t.t)).........."."
5d680 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 73 70 61 63 .(propertize.".".'display.`(spac
5d6a0 65 20 3a 61 6c 69 67 6e 2d 74 6f 20 31 31 32 29 29 0a 09 09 20 20 20 20 20 20 20 28 77 68 65 6e e.:align-to.112))..........(when
5d6c0 20 63 61 70 73 20 28 74 72 75 6e 63 61 74 65 2d 73 74 72 69 6e 67 2d 74 6f 2d 77 69 64 74 68 20 .caps.(truncate-string-to-width.
5d6e0 28 70 72 69 6e 31 2d 74 6f 2d 73 74 72 69 6e 67 20 63 61 70 73 29 20 32 31 20 6e 69 6c 20 3f 20 (prin1-to-string.caps).21.nil.?.
5d700 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."
5d720 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 33 .".'display.`(space.:align-to.13
5d740 34 29 29 0a 09 09 20 20 20 20 20 20 20 28 77 68 65 6e 20 63 6f 6e 74 65 78 74 20 28 66 6f 72 6d 4))..........(when.context.(form
5d760 61 74 20 22 25 35 64 6b 22 20 63 6f 6e 74 65 78 74 29 29 0a 09 09 20 20 20 20 20 20 20 22 20 22 at."%5dk".context)).........."."
5d780 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 73 70 61 63 .(propertize.".".'display.`(spac
5d7a0 65 20 3a 61 6c 69 67 6e 2d 74 6f 20 31 34 32 29 29 0a 09 09 20 20 20 20 20 20 20 28 77 68 65 6e e.:align-to.142))..........(when
5d7c0 20 69 6e 70 75 74 2d 63 6f 73 74 20 28 66 6f 72 6d 61 74 20 22 24 25 35 2e 32 66 20 69 6e 22 20 .input-cost.(format."$%5.2f.in".
5d7e0 69 6e 70 75 74 2d 63 6f 73 74 29 29 0a 09 09 20 20 20 20 20 20 20 28 69 66 20 28 61 6e 64 20 69 input-cost))..........(if.(and.i
5d800 6e 70 75 74 2d 63 6f 73 74 20 6f 75 74 70 75 74 2d 63 6f 73 74 29 20 22 2c 22 20 22 20 22 29 0a nput-cost.output-cost).",".".").
5d820 09 09 20 20 20 20 20 20 20 22 20 22 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 20 22 20 27 64 69 .........".".(propertize.".".'di
5d840 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 35 33 29 29 0a 09 09 splay.`(space.:align-to.153))...
5d860 20 20 20 20 20 20 20 28 77 68 65 6e 20 6f 75 74 70 75 74 2d 63 6f 73 74 20 28 66 6f 72 6d 61 74 .......(when.output-cost.(format
5d880 20 22 24 25 36 2e 32 66 20 6f 75 74 22 20 6f 75 74 70 75 74 2d 63 6f 73 74 29 29 0a 09 09 20 20 ."$%6.2f.out".output-cost)).....
5d8a0 20 20 20 20 20 22 20 22 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 20 22 20 27 64 69 73 70 6c 61 .....".".(propertize.".".'displa
5d8c0 79 20 60 28 73 70 61 63 65 20 3a 61 6c 69 67 6e 2d 74 6f 20 31 36 36 29 29 0a 09 09 20 20 20 20 y.`(space.:align-to.166)).......
5d8e0 20 20 20 63 75 74 6f 66 66 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 ...cutoff)))))..............fina
5d900 6c 6c 79 20 72 65 74 75 72 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 64 72 20 28 61 73 lly.return..............(cdr.(as
5d920 73 6f 63 20 28 63 6f 6d 70 6c 65 74 69 6e 67 2d 72 65 61 64 20 70 72 6f 6d 70 74 20 6d 6f 64 65 soc.(completing-read.prompt.mode
5d940 6c 73 2d 61 6c 69 73 74 20 6e 69 6c 20 74 20 6e 69 6c 20 6e 69 6c 0a 09 09 09 09 09 20 20 28 63 ls-alist.nil.t.nil.nil........(c
5d960 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 65 6c 2d oncat.(gptel-backend-name.gptel-
5d980 62 61 63 6b 65 6e 64 29 20 22 3a 22 0a 09 09 09 09 09 09 20 20 28 67 70 74 65 6c 2d 2d 6d 6f 64 backend).":".........(gptel--mod
5d9a0 65 6c 2d 6e 61 6d 65 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 29 29 29 0a 20 20 20 20 20 20 20 20 20 el-name.gptel-model)))..........
5d9c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 65 6c 73 2d 61 6c 69 73 74 29 29 29 29 ................models-alist))))
5d9e0 29 0a 0a 28 74 72 61 6e 73 69 65 6e 74 2d 64 65 66 69 6e 65 2d 69 6e 66 69 78 20 67 70 74 65 6c )..(transient-define-infix.gptel
5da00 2d 2d 69 6e 66 69 78 2d 74 65 6d 70 65 72 61 74 75 72 65 20 28 29 0a 20 20 22 54 65 6d 70 65 72 --infix-temperature.()..."Temper
5da20 61 74 75 72 65 20 6f 66 20 72 65 71 75 65 73 74 2e 22 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f ature.of.request."...:descriptio
5da40 6e 20 22 54 65 6d 70 65 72 61 74 75 72 65 20 28 30 20 2d 20 32 2e 30 29 22 0a 20 20 3a 64 69 73 n."Temperature.(0.-.2.0)"...:dis
5da60 70 6c 61 79 2d 6e 69 6c 20 22 64 65 66 61 75 6c 74 22 0a 20 20 3a 63 6c 61 73 73 20 27 67 70 74 play-nil."default"...:class.'gpt
5da80 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
5daa0 74 65 6c 2d 74 65 6d 70 65 72 61 74 75 72 65 0a 20 20 3a 73 65 74 2d 76 61 6c 75 65 20 23 27 67 tel-temperature...:set-value.#'g
5dac0 70 74 65 6c 2d 2d 73 65 74 2d 77 69 74 68 2d 73 63 6f 70 65 0a 20 20 3a 6b 65 79 20 22 2d 54 22 ptel--set-with-scope...:key."-T"
5dae0 0a 20 20 3a 70 72 6f 6d 70 74 20 22 54 65 6d 70 65 72 61 74 75 72 65 20 63 6f 6e 74 72 6f 6c 73 ...:prompt."Temperature.controls
5db00 20 74 68 65 20 72 65 73 70 6f 6e 73 65 20 72 61 6e 64 6f 6d 6e 65 73 73 20 28 30 2e 30 2d 32 2e .the.response.randomness.(0.0-2.
5db20 30 2c 20 6c 65 61 76 65 20 65 6d 70 74 79 20 66 6f 72 20 41 50 49 20 64 65 66 61 75 6c 74 29 3a 0,.leave.empty.for.API.default):
5db40 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 65 6e 74 2d 72 ."...:reader.'gptel--transient-r
5db60 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 69 6e 65 2d 69 ead-number)..(transient-define-i
5db80 6e 66 69 78 20 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 74 72 61 63 6b 2d 72 65 73 70 6f 6e 73 65 nfix.gptel--infix-track-response
5dba0 20 28 29 0a 20 20 22 44 69 73 74 69 6e 67 75 69 73 68 20 62 65 74 77 65 65 6e 20 75 73 65 72 20 .()..."Distinguish.between.user.
5dbc0 6d 65 73 73 61 67 65 73 20 61 6e 64 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 73 2e 0a 0a 57 68 65 messages.and.LLM.responses...Whe
5dbe0 6e 20 63 72 65 61 74 69 6e 67 20 61 20 70 72 6f 6d 70 74 20 74 6f 20 73 65 6e 64 20 74 6f 20 74 n.creating.a.prompt.to.send.to.t
5dc00 68 65 20 4c 4c 4d 2c 20 67 70 74 65 6c 20 64 69 73 74 69 6e 67 75 69 73 68 65 73 0a 62 65 74 77 he.LLM,.gptel.distinguishes.betw
5dc20 65 65 6e 20 74 65 78 74 20 65 6e 74 65 72 65 64 20 62 79 20 74 68 65 20 75 73 65 72 20 61 6e 64 een.text.entered.by.the.user.and
5dc40 20 70 61 73 74 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 73 2e 20 20 54 68 69 73 20 69 73 0a 72 65 .past.LLM.responses...This.is.re
5dc60 71 75 69 72 65 64 20 66 6f 72 20 6d 75 6c 74 69 2d 74 75 72 6e 20 63 6f 6e 76 65 72 73 61 74 69 quired.for.multi-turn.conversati
5dc80 6f 6e 73 2c 20 61 6e 64 20 69 73 20 61 6c 77 61 79 73 20 74 68 65 20 63 61 73 65 20 69 6e 0a 64 ons,.and.is.always.the.case.in.d
5dca0 65 64 69 63 61 74 65 64 20 63 68 61 74 20 62 75 66 66 65 72 73 20 28 69 6e 20 60 67 70 74 65 6c edicated.chat.buffers.(in.`gptel
5dcc0 2d 6d 6f 64 65 27 29 2e 0a 0a 49 6e 20 72 65 67 75 6c 61 72 20 62 75 66 66 65 72 73 2c 20 79 6f -mode')...In.regular.buffers,.yo
5dce0 75 20 63 61 6e 20 74 6f 67 67 6c 65 20 74 68 69 73 20 62 65 68 61 76 69 6f 72 20 68 65 72 65 20 u.can.toggle.this.behavior.here.
5dd00 6f 72 20 62 79 0a 63 75 73 74 6f 6d 69 7a 69 6e 67 20 60 67 70 74 65 6c 2d 74 72 61 63 6b 2d 72 or.by.customizing.`gptel-track-r
5dd20 65 73 70 6f 6e 73 65 27 2e 20 20 57 68 65 6e 20 72 65 73 70 6f 6e 73 65 20 74 72 61 63 6b 69 6e esponse'...When.response.trackin
5dd40 67 20 69 73 0a 74 75 72 6e 65 64 20 6f 66 66 2c 20 61 6c 6c 20 74 65 78 74 20 77 69 6c 6c 20 62 g.is.turned.off,.all.text.will.b
5dd60 65 20 61 73 73 69 67 6e 65 64 20 74 68 65 20 5c 22 75 73 65 72 5c 22 20 72 6f 6c 65 20 77 68 65 e.assigned.the.\"user\".role.whe
5dd80 6e 0a 71 75 65 72 79 69 6e 67 20 74 68 65 20 4c 4c 4d 2e 22 0a 20 20 3a 64 65 73 63 72 69 70 74 n.querying.the.LLM."...:descript
5dda0 69 6f 6e 20 22 54 72 61 63 6b 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 73 22 0a 20 20 3a 63 6c 61 ion."Track.LLM.responses"...:cla
5ddc0 73 73 20 27 67 70 74 65 6c 2d 2d 73 77 69 74 63 68 65 73 0a 20 20 3a 76 61 72 69 61 62 6c 65 20 ss.'gptel--switches...:variable.
5dde0 27 67 70 74 65 6c 2d 74 72 61 63 6b 2d 72 65 73 70 6f 6e 73 65 0a 20 20 3a 73 65 74 2d 76 61 6c 'gptel-track-response...:set-val
5de00 75 65 20 23 27 67 70 74 65 6c 2d 2d 73 65 74 2d 77 69 74 68 2d 73 63 6f 70 65 0a 20 20 3a 64 69 ue.#'gptel--set-with-scope...:di
5de20 73 70 6c 61 79 2d 69 66 2d 74 72 75 65 20 22 59 65 73 22 0a 20 20 3a 64 69 73 70 6c 61 79 2d 69 splay-if-true."Yes"...:display-i
5de40 66 2d 66 61 6c 73 65 20 22 4e 6f 22 0a 20 20 3a 6b 65 79 20 22 2d 52 22 29 0a 0a 28 74 72 61 6e f-false."No"...:key."-R")..(tran
5de60 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 69 78 2d sient-define-infix.gptel--infix-
5de80 74 72 61 63 6b 2d 6d 65 64 69 61 20 28 29 0a 20 20 22 53 65 6e 64 20 6d 65 64 69 61 20 66 72 6f track-media.()..."Send.media.fro
5dea0 6d 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 74 68 65 20 70 72 m.\"standalone\".links.in.the.pr
5dec0 6f 6d 70 74 2e 0a 0a 57 68 65 6e 20 74 68 65 20 61 63 74 69 76 65 20 60 67 70 74 65 6c 2d 6d 6f ompt...When.the.active.`gptel-mo
5dee0 64 65 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 del'.supports.it,.gptel.can.send
5df00 20 69 6d 61 67 65 73 0a 6f 72 20 6f 74 68 65 72 20 6d 65 64 69 61 20 66 72 6f 6d 20 6c 69 6e 6b .images.or.other.media.from.link
5df20 73 20 69 6e 20 74 68 65 20 62 75 66 66 65 72 20 74 6f 20 74 68 65 20 4c 4c 4d 2e 20 20 4f 6e 6c s.in.the.buffer.to.the.LLM...Onl
5df40 79 0a 5c 22 73 74 61 6e 64 61 6c 6f 6e 65 5c 22 20 6c 69 6e 6b 73 20 61 72 65 20 63 6f 6e 73 69 y.\"standalone\".links.are.consi
5df60 64 65 72 65 64 3a 20 74 68 65 73 65 20 61 72 65 20 6c 69 6e 6b 73 20 6f 6e 20 74 68 65 69 72 20 dered:.these.are.links.on.their.
5df80 6f 77 6e 0a 6c 69 6e 65 20 77 69 74 68 20 6e 6f 20 73 75 72 72 6f 75 6e 64 69 6e 67 20 74 65 78 own.line.with.no.surrounding.tex
5dfa0 74 2e 0a 0a 57 68 61 74 20 6c 69 6e 6b 20 74 79 70 65 73 20 61 72 65 20 73 65 6e 74 20 64 65 70 t...What.link.types.are.sent.dep
5dfc0 65 6e 64 73 20 6f 6e 20 74 68 65 20 6d 69 6d 65 2d 74 79 70 65 73 20 74 68 65 20 6d 6f 64 65 6c ends.on.the.mime-types.the.model
5dfe0 0a 73 75 70 70 6f 72 74 73 2e 20 20 53 65 65 20 60 67 70 74 65 6c 2d 74 72 61 63 6b 2d 6d 65 64 .supports...See.`gptel-track-med
5e000 69 61 27 20 66 6f 72 20 6d 6f 72 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 22 0a 20 20 3a 64 65 ia'.for.more.information."...:de
5e020 73 63 72 69 70 74 69 6f 6e 20 22 53 65 6e 64 20 6d 65 64 69 61 20 66 72 6f 6d 20 6c 69 6e 6b 73 scription."Send.media.from.links
5e040 22 0a 20 20 3a 63 6c 61 73 73 20 27 67 70 74 65 6c 2d 2d 73 77 69 74 63 68 65 73 0a 20 20 3a 76 "...:class.'gptel--switches...:v
5e060 61 72 69 61 62 6c 65 20 27 67 70 74 65 6c 2d 74 72 61 63 6b 2d 6d 65 64 69 61 0a 20 20 3a 73 65 ariable.'gptel-track-media...:se
5e080 74 2d 76 61 6c 75 65 20 23 27 67 70 74 65 6c 2d 2d 73 65 74 2d 77 69 74 68 2d 73 63 6f 70 65 0a t-value.#'gptel--set-with-scope.
5e0a0 20 20 3a 64 69 73 70 6c 61 79 2d 69 66 2d 74 72 75 65 20 22 59 65 73 22 0a 20 20 3a 64 69 73 70 ..:display-if-true."Yes"...:disp
5e0c0 6c 61 79 2d 69 66 2d 66 61 6c 73 65 20 22 4e 6f 22 0a 20 20 3a 6b 65 79 20 22 2d 49 22 29 0a 0a lay-if-false."No"...:key."-I")..
5e0e0 3b 3b 20 2a 2a 20 49 6e 66 69 78 65 73 20 66 6f 72 20 61 64 64 69 6e 67 20 61 6e 64 20 72 65 6d ;;.**.Infixes.for.adding.and.rem
5e100 6f 76 69 6e 67 20 63 6f 6e 74 65 78 74 0a 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e oving.context..(declare-function
5e120 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61 74 2d 70 6f 69 6e 74 20 22 67 70 74 65 6c 2d .gptel-context--at-point."gptel-
5e140 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
5e160 6c 2d 61 64 64 20 22 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 22 29 0a 0a 28 74 72 61 6e 73 69 65 l-add."gptel-context")..(transie
5e180 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
5e1a0 6e 74 65 78 74 2d 61 64 64 2d 72 65 67 69 6f 6e 20 28 29 0a 20 20 22 41 64 64 20 63 75 72 72 65 ntext-add-region.()..."Add.curre
5e1c0 6e 74 20 72 65 67 69 6f 6e 20 74 6f 20 67 70 74 65 6c 27 73 20 63 6f 6e 74 65 78 74 2e 22 0a 20 nt.region.to.gptel's.context."..
5e1e0 20 3a 74 72 61 6e 73 69 65 6e 74 20 27 74 72 61 6e 73 69 65 6e 74 2d 2d 64 6f 2d 73 74 61 79 0a .:transient.'transient--do-stay.
5e200 20 20 3a 6b 65 79 20 22 2d 72 22 0a 20 20 3a 69 66 20 28 6c 61 6d 62 64 61 20 28 29 20 28 6f 72 ..:key."-r"...:if.(lambda.().(or
5e220 20 28 75 73 65 2d 72 65 67 69 6f 6e 2d 70 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .(use-region-p).................
5e240 28 61 6e 64 20 28 66 62 6f 75 6e 64 70 20 27 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61 74 (and.(fboundp.'gptel-context--at
5e260 2d 70 6f 69 6e 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 -point)......................(gp
5e280 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61 74 2d 70 6f 69 6e 74 29 29 29 29 0a 20 20 3a 64 65 73 tel-context--at-point))))...:des
5e2a0 63 72 69 70 74 69 6f 6e 0a 20 20 28 6c 61 6d 62 64 61 20 28 29 0a 20 20 20 20 28 69 66 20 28 61 cription...(lambda.().....(if.(a
5e2c0 6e 64 20 28 66 62 6f 75 6e 64 70 20 27 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61 74 2d 70 nd.(fboundp.'gptel-context--at-p
5e2e0 6f 69 6e 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 63 6f 6e 74 65 78 oint)..............(gptel-contex
5e300 74 2d 2d 61 74 2d 70 6f 69 6e 74 29 29 0a 20 20 20 20 20 20 20 20 22 52 65 6d 6f 76 65 20 63 6f t--at-point))........."Remove.co
5e320 6e 74 65 78 74 20 61 74 20 70 6f 69 6e 74 22 0a 20 20 20 20 20 20 22 41 64 64 20 72 65 67 69 6f ntext.at.point"......."Add.regio
5e340 6e 20 74 6f 20 63 6f 6e 74 65 78 74 22 29 29 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a n.to.context"))...(interactive).
5e360 20 20 28 67 70 74 65 6c 2d 61 64 64 29 0a 20 20 28 74 72 61 6e 73 69 65 6e 74 2d 73 65 74 75 70 ..(gptel-add)...(transient-setup
5e380 29 29 0a 0a 28 74 72 61 6e 73 69 65 6e 74 2d 64 65 66 69 6e 65 2d 73 75 66 66 69 78 20 67 70 74 ))..(transient-define-suffix.gpt
5e3a0 65 6c 2d 2d 69 6e 66 69 78 2d 63 6f 6e 74 65 78 74 2d 61 64 64 2d 62 75 66 66 65 72 20 28 29 0a el--infix-context-add-buffer.().
5e3c0 20 20 22 41 64 64 20 61 20 62 75 66 66 65 72 20 74 6f 20 67 70 74 65 6c 27 73 20 63 6f 6e 74 65 .."Add.a.buffer.to.gptel's.conte
5e3e0 78 74 2e 22 0a 20 20 3a 74 72 61 6e 73 69 65 6e 74 20 27 74 72 61 6e 73 69 65 6e 74 2d 2d 64 6f xt."...:transient.'transient--do
5e400 2d 73 74 61 79 0a 20 20 3a 6b 65 79 20 22 2d 62 22 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e -stay...:key."-b"...:description
5e420 20 22 41 64 64 20 61 20 62 75 66 66 65 72 20 74 6f 20 63 6f 6e 74 65 78 74 22 0a 20 20 28 69 6e ."Add.a.buffer.to.context"...(in
5e440 74 65 72 61 63 74 69 76 65 29 0a 20 20 28 67 70 74 65 6c 2d 61 64 64 20 27 28 34 29 29 0a 20 20 teractive)...(gptel-add.'(4))...
5e460 28 74 72 61 6e 73 69 65 6e 74 2d 73 65 74 75 70 29 29 0a 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e (transient-setup))..(declare-fun
5e480 63 74 69 6f 6e 20 67 70 74 65 6c 2d 61 64 64 2d 66 69 6c 65 20 22 67 70 74 65 6c 2d 63 6f 6e 74 ction.gptel-add-file."gptel-cont
5e4a0 65 78 74 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 67 70 74 65 6c 2d 63 6f ext").(declare-function.gptel-co
5e4c0 6e 74 65 78 74 2d 72 65 6d 6f 76 65 2d 61 6c 6c 20 22 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 22 ntext-remove-all."gptel-context"
5e4e0 29 0a 0a 28 74 72 61 6e 73 69 65 6e 74 2d 64 65 66 69 6e 65 2d 73 75 66 66 69 78 20 67 70 74 65 )..(transient-define-suffix.gpte
5e500 6c 2d 2d 69 6e 66 69 78 2d 63 6f 6e 74 65 78 74 2d 61 64 64 2d 66 69 6c 65 20 28 29 0a 20 20 22 l--infix-context-add-file.()..."
5e520 41 64 64 20 61 20 66 69 6c 65 20 74 6f 20 67 70 74 65 6c 27 73 20 63 6f 6e 74 65 78 74 2e 22 0a Add.a.file.to.gptel's.context.".
5e540 20 20 3a 74 72 61 6e 73 69 65 6e 74 20 27 74 72 61 6e 73 69 65 6e 74 2d 2d 64 6f 2d 73 74 61 79 ..:transient.'transient--do-stay
5e560 0a 20 20 3a 6b 65 79 20 22 2d 66 22 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 41 64 64 ...:key."-f"...:description."Add
5e580 20 61 20 66 69 6c 65 20 74 6f 20 63 6f 6e 74 65 78 74 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 .a.file.to.context"...(interacti
5e5a0 76 65 29 0a 20 20 28 63 61 6c 6c 2d 69 6e 74 65 72 61 63 74 69 76 65 6c 79 20 23 27 67 70 74 65 ve)...(call-interactively.#'gpte
5e5c0 6c 2d 61 64 64 2d 66 69 6c 65 29 0a 20 20 28 74 72 61 6e 73 69 65 6e 74 2d 73 65 74 75 70 29 29 l-add-file)...(transient-setup))
5e5e0 0a 0a 28 74 72 61 6e 73 69 65 6e 74 2d 64 65 66 69 6e 65 2d 73 75 66 66 69 78 20 67 70 74 65 6c ..(transient-define-suffix.gptel
5e600 2d 2d 69 6e 66 69 78 2d 63 6f 6e 74 65 78 74 2d 72 65 6d 6f 76 65 2d 61 6c 6c 20 28 29 0a 20 20 --infix-context-remove-all.()...
5e620 22 43 6c 65 61 72 20 67 70 74 65 6c 27 73 20 63 6f 6e 74 65 78 74 2e 22 0a 20 20 3a 69 66 20 28 "Clear.gptel's.context."...:if.(
5e640 6c 61 6d 62 64 61 20 28 29 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61 6c 69 73 74 29 0a lambda.().gptel-context--alist).
5e660 20 20 3a 74 72 61 6e 73 69 65 6e 74 20 27 74 72 61 6e 73 69 65 6e 74 2d 2d 64 6f 2d 73 74 61 79 ..:transient.'transient--do-stay
5e680 0a 20 20 3a 6b 65 79 20 22 2d 64 22 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 52 65 6d ...:key."-d"...:description."Rem
5e6a0 6f 76 65 20 61 6c 6c 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 28 67 70 74 65 ove.all"...(interactive)...(gpte
5e6c0 6c 2d 63 6f 6e 74 65 78 74 2d 72 65 6d 6f 76 65 2d 61 6c 6c 20 74 29 0a 20 20 28 74 72 61 6e 73 l-context-remove-all.t)...(trans
5e6e0 69 65 6e 74 2d 73 65 74 75 70 29 29 0a 0a 3b 3b 20 2a 2a 20 49 6e 66 69 78 20 66 6f 72 20 61 64 ient-setup))..;;.**.Infix.for.ad
5e700 64 69 74 69 6f 6e 61 6c 20 64 69 72 65 63 74 69 76 65 0a 0a 28 74 72 61 6e 73 69 65 6e 74 2d 64 ditional.directive..(transient-d
5e720 65 66 69 6e 65 2d 69 6e 66 69 78 20 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 61 64 64 2d 64 69 72 efine-infix.gptel--infix-add-dir
5e740 65 63 74 69 76 65 20 28 29 0a 20 20 22 41 64 64 69 74 69 6f 6e 61 6c 20 64 69 72 65 63 74 69 76 ective.()..."Additional.directiv
5e760 65 20 69 6e 74 65 6e 64 65 64 20 66 6f 72 20 74 68 65 20 6e 65 78 74 20 71 75 65 72 79 20 6f 6e e.intended.for.the.next.query.on
5e780 6c 79 2e 0a 0a 54 68 69 73 20 69 73 20 75 73 65 66 75 6c 20 74 6f 20 64 65 66 69 6e 65 20 61 20 ly...This.is.useful.to.define.a.
5e7a0 71 75 69 63 6b 20 74 61 73 6b 20 6f 6e 20 74 6f 70 20 6f 66 20 61 20 6d 6f 72 65 20 65 78 74 65 quick.task.on.top.of.a.more.exte
5e7c0 6e 73 69 76 65 0a 6f 72 20 64 65 74 61 69 6c 65 64 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 nsive.or.detailed.system.message
5e7e0 2e 0a 0a 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 77 69 74 68 20 63 6f 64 65 2f 74 65 78 74 20 73 ...For.example,.with.code/text.s
5e800 65 6c 65 63 74 65 64 3a 0a 0a 2d 20 52 65 77 72 69 74 65 20 74 68 69 73 20 66 75 6e 63 74 69 6f elected:..-.Rewrite.this.functio
5e820 6e 20 74 6f 20 64 6f 20 58 20 77 68 69 6c 65 20 61 76 6f 69 64 69 6e 67 20 59 2e 0a 2d 20 43 68 n.to.do.X.while.avoiding.Y..-.Ch
5e840 61 6e 67 65 20 74 68 65 20 74 6f 6e 65 20 6f 66 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 70 ange.the.tone.of.the.following.p
5e860 61 72 61 67 72 61 70 68 20 74 6f 20 62 65 20 6d 6f 72 65 20 64 69 72 65 63 74 2e 0a 0a 4f 72 20 aragraph.to.be.more.direct...Or.
5e880 69 6e 20 61 6e 20 65 78 74 65 6e 64 65 64 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 3a 0a 0a 2d 20 in.an.extended.conversation:..-.
5e8a0 50 68 72 61 73 65 20 79 6f 75 20 6e 65 78 74 20 72 65 73 70 6f 6e 73 65 20 69 6e 20 74 65 6e 20 Phrase.you.next.response.in.ten.
5e8c0 77 6f 72 64 73 20 6f 72 20 6c 65 73 73 2e 0a 2d 20 50 72 65 74 65 6e 64 20 66 6f 72 20 6e 6f 77 words.or.less..-.Pretend.for.now
5e8e0 20 74 68 61 74 20 79 6f 75 27 72 65 20 61 6e 20 61 6e 74 68 72 6f 70 6f 6c 6f 67 69 73 74 2e 22 .that.you're.an.anthropologist."
5e900 0a 20 20 3a 63 6c 61 73 73 20 27 67 70 74 65 6c 2d 6f 70 74 69 6f 6e 2d 6f 76 65 72 6c 61 69 64 ...:class.'gptel-option-overlaid
5e920 0a 20 20 3b 3b 20 3a 76 61 72 69 61 62 6c 65 20 27 67 70 74 65 6c 2d 2d 69 6e 73 74 72 75 63 74 ...;;.:variable.'gptel--instruct
5e940 69 6f 6e 73 0a 20 20 3a 64 69 73 70 6c 61 79 2d 6e 69 6c 20 27 6e 6f 6e 65 0a 20 20 3a 6f 76 65 ions...:display-nil.'none...:ove
5e960 72 6c 61 79 20 6e 69 6c 0a 20 20 3a 61 72 67 75 6d 65 6e 74 20 22 3a 22 0a 20 20 3a 70 72 6f 6d rlay.nil...:argument.":"...:prom
5e980 70 74 20 28 63 6f 6e 63 61 74 20 22 41 64 64 20 69 6e 73 74 72 75 63 74 69 6f 6e 73 20 66 6f 72 pt.(concat."Add.instructions.for
5e9a0 20 6e 65 78 74 20 72 65 71 75 65 73 74 20 6f 6e 6c 79 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 .next.request.only."............
5e9c0 20 20 20 20 20 20 20 67 70 74 65 6c 2d 2d 72 65 61 64 2d 77 69 74 68 2d 70 72 65 66 69 78 2d 68 .......gptel--read-with-prefix-h
5e9e0 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 20 69 elp)...:reader.(lambda.(prompt.i
5ea00 6e 69 74 69 61 6c 20 68 69 73 74 6f 72 79 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 nitial.history).............(let
5ea20 2a 20 28 28 64 69 72 65 63 74 69 76 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 *.((directive...................
5ea40 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 72 65 63 74 ..(car-safe.(gptel--parse-direct
5ea60 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 20 27 72 61 77 29 29 ive.gptel--system-message.'raw))
5ea80 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 65 2d 70 72 65 66 )....................(cycle-pref
5eaa0 69 78 20 28 6c 61 6d 62 64 61 20 28 29 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 20 20 ix.(lambda.().(interactive).....
5eac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 ...............................(
5eae0 67 70 74 65 6c 2d 2d 72 65 61 64 2d 77 69 74 68 2d 70 72 65 66 69 78 20 64 69 72 65 63 74 69 76 gptel--read-with-prefix.directiv
5eb00 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 69 6e 69 62 75 66 e)))....................(minibuf
5eb20 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 20 20 20 20 20 20 20 fer-local-map...................
5eb40 20 20 28 6d 61 6b 65 2d 63 6f 6d 70 6f 73 65 64 2d 6b 65 79 6d 61 70 0a 20 20 20 20 20 20 20 20 ..(make-composed-keymap.........
5eb60 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 65 66 69 6e 65 2d 6b 65 79 6d 61 70 20 22 54 41 42 .............(define-keymap."TAB
5eb80 22 20 63 79 63 6c 65 2d 70 72 65 66 69 78 20 22 3c 74 61 62 3e 22 20 63 79 63 6c 65 2d 70 72 65 ".cycle-prefix."<tab>".cycle-pre
5eba0 66 69 78 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 69 6e 69 62 75 fix)......................minibu
5ebc0 66 66 65 72 2d 6c 6f 63 61 6c 2d 6d 61 70 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ffer-local-map))................
5ebe0 20 20 20 20 28 65 78 74 72 61 20 28 6d 69 6e 69 62 75 66 66 65 72 2d 77 69 74 68 2d 73 65 74 75 ....(extra.(minibuffer-with-setu
5ec00 70 2d 68 6f 6f 6b 20 63 79 63 6c 65 2d 70 72 65 66 69 78 0a 20 20 20 20 20 20 20 20 20 20 20 20 p-hook.cycle-prefix.............
5ec20 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 20 70 72 6f ................(read-string.pro
5ec40 6d 70 74 20 28 6f 72 20 69 6e 69 74 69 61 6c 20 22 20 22 29 20 68 69 73 74 6f 72 79 29 29 29 29 mpt.(or.initial.".").history))))
5ec60 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 69 6e 67 2d 65 ...............(unless.(string-e
5ec80 6d 70 74 79 2d 70 20 65 78 74 72 61 29 20 65 78 74 72 61 29 29 29 0a 20 20 3a 66 6f 72 6d 61 74 mpty-p.extra).extra)))...:format
5eca0 20 22 20 25 6b 20 25 64 20 25 76 22 0a 20 20 3a 6b 65 79 20 22 64 22 0a 20 20 3a 61 72 67 75 6d .".%k.%d.%v"...:key."d"...:argum
5ecc0 65 6e 74 20 22 3a 22 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 41 64 64 20 69 6e 73 74 ent.":"...:description."Add.inst
5ece0 72 75 63 74 69 6f 6e 22 0a 20 20 3a 74 72 61 6e 73 69 65 6e 74 20 74 29 0a 0a 3b 3b 20 2a 2a 20 ruction"...:transient.t)..;;.**.
5ed00 49 6e 66 69 78 20 66 6f 72 20 72 65 61 73 6f 6e 69 6e 67 20 62 6c 6f 63 6b 20 63 6f 6e 74 72 6f Infix.for.reasoning.block.contro
5ed20 6c 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 l..(transient-define-infix.gptel
5ed40 2d 2d 69 6e 66 69 78 2d 69 6e 63 6c 75 64 65 2d 72 65 61 73 6f 6e 69 6e 67 20 28 29 0a 20 20 22 --infix-include-reasoning.()..."
5ed60 48 6f 77 20 74 6f 20 68 61 6e 64 6c 65 20 72 65 61 73 6f 6e 69 6e 67 2f 74 68 69 6e 6b 69 6e 67 How.to.handle.reasoning/thinking
5ed80 20 72 65 73 70 6f 6e 73 65 20 62 6c 6f 63 6b 73 2e 0a 0a 53 6f 6d 65 20 4c 4c 4d 73 20 69 6e 63 .response.blocks...Some.LLMs.inc
5eda0 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 74 68 69 6e 6b lude.in.their.response.a.\"think
5edc0 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 6d 70 72 6f 76 ing\".section...This.text.improv
5ede0 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 20 66 69 6e 61 es.the.quality.of.the.LLM's.fina
5ee00 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 74 65 72 65 73 l.output,.but.may.not.be.interes
5ee20 74 69 6e 67 20 74 6f 20 79 6f 75 20 62 79 20 69 74 73 65 6c 66 2e 0a 0a 59 6f 75 20 63 61 6e 20 ting.to.you.by.itself...You.can.
5ee40 63 6f 6e 74 72 6f 6c 20 68 6f 77 20 67 70 74 65 6c 20 73 68 6f 75 6c 64 20 68 61 6e 64 6c 65 20 control.how.gptel.should.handle.
5ee60 74 68 65 20 74 68 69 6e 6b 69 6e 67 20 62 6c 6f 63 6b 73 20 76 69 61 0a 74 68 69 73 20 6f 70 74 the.thinking.blocks.via.this.opt
5ee80 69 6f 6e 2c 20 6f 72 20 62 79 20 73 65 74 74 69 6e 67 20 74 68 65 20 76 61 72 69 61 62 6c 65 20 ion,.or.by.setting.the.variable.
5eea0 60 67 70 74 65 6c 2d 69 6e 63 6c 75 64 65 2d 72 65 61 73 6f 6e 69 6e 67 27 0a 76 69 61 20 65 6c `gptel-include-reasoning'.via.el
5eec0 69 73 70 2c 20 77 68 69 63 68 20 73 65 65 2e 0a 0a 41 76 61 69 6c 61 62 6c 65 20 62 65 68 61 76 isp,.which.see...Available.behav
5eee0 69 6f 72 73 20 61 72 65 0a 2d 20 74 6f 20 69 6e 63 6c 75 64 65 20 74 68 69 6e 6b 69 6e 67 20 62 iors.are.-.to.include.thinking.b
5ef00 6c 6f 63 6b 73 20 77 69 74 68 20 74 68 65 20 72 65 73 70 6f 6e 73 65 2c 0a 2d 20 74 6f 20 6f 6d locks.with.the.response,.-.to.om
5ef20 69 74 20 74 68 65 6d 20 65 6e 74 69 72 65 6c 79 2c 0a 2d 20 74 6f 20 69 6e 63 6c 75 64 65 20 74 it.them.entirely,.-.to.include.t
5ef40 68 65 6d 20 62 75 74 20 69 67 6e 6f 72 65 20 74 68 65 6d 20 69 6e 20 63 6f 6e 73 65 71 75 65 6e hem.but.ignore.them.in.consequen
5ef60 74 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 20 74 75 72 6e 73 2c 20 61 6e 64 0a 2d 20 74 6f 20 61 t.conversation.turns,.and.-.to.a
5ef80 70 70 65 6e 64 20 74 68 65 6d 20 74 6f 20 61 20 62 75 66 66 65 72 20 6f 66 20 79 6f 75 72 20 63 ppend.them.to.a.buffer.of.your.c
5efa0 68 6f 6f 73 69 6e 67 2e 22 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 49 6e 63 6c 75 64 hoosing."...:description."Includ
5efc0 65 20 72 65 61 73 6f 6e 69 6e 67 22 0a 20 20 3a 63 6c 61 73 73 20 27 67 70 74 65 6c 2d 6c 69 73 e.reasoning"...:class.'gptel-lis
5efe0 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 69 6e p-variable...:variable.'gptel-in
5f000 63 6c 75 64 65 2d 72 65 61 73 6f 6e 69 6e 67 0a 20 20 3a 66 6f 72 6d 61 74 20 22 20 25 6b 20 25 clude-reasoning...:format.".%k.%
5f020 64 20 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 d.%v"...:set-value.#'gptel--set-
5f040 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 4e 6f 22 0a 20 with-scope...:display-nil."No"..
5f060 20 3a 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 .:display-map.'((nil......"No").
5f080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 67 6e 6f 72 65 20 2e 20 22 61 6e 64 20 .................(ignore..."and.
5f0a0 69 67 6e 6f 72 65 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 20 20 20 20 ignore")..................(t....
5f0c0 20 20 2e 20 22 77 69 74 68 20 72 65 73 70 6f 6e 73 65 22 29 29 0a 20 20 3a 6b 65 79 20 22 2d 76 ...."with.response"))...:key."-v
5f0e0 22 0a 20 20 3a 70 72 6f 6d 70 74 20 22 49 6e 63 6c 75 64 65 20 72 65 61 73 6f 6e 69 6e 67 3a 20 "...:prompt."Include.reasoning:.
5f100 22 0a 20 20 3a 72 65 61 64 65 72 20 28 6c 61 6d 62 64 61 20 28 70 72 6f 6d 70 74 20 26 72 65 73 "...:reader.(lambda.(prompt.&res
5f120 74 20 5f 29 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 t._).............(let*.((choices
5f140 20 27 28 28 22 6e 6f 22 20 20 20 20 20 2e 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 .'(("no".......nil).............
5f160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 22 69 67 6e 6f 72 65 22 20 2e 20 69 67 ..................("ignore"...ig
5f180 6e 6f 72 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 nore)...........................
5f1a0 20 20 20 20 28 22 79 65 73 22 20 20 20 20 2e 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ....("yes"......t)..............
5f1c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 22 6f 74 68 65 72 20 62 75 66 66 65 72 22 .................("other.buffer"
5f1e0 20 2e 20 62 75 66 66 65 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ...buffer)))....................
5f200 28 64 65 73 74 69 6e 61 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (destination....................
5f220 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 65 73 .(completing-read.prompt.choices
5f240 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 69 66 20 28 65 71 75 .nil.t)))...............(if.(equ
5f260 61 6c 20 64 65 73 74 69 6e 61 74 69 6f 6e 20 22 6f 74 68 65 72 20 62 75 66 66 65 72 22 29 0a 20 al.destination."other.buffer")..
5f280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 61 64 2d 62 75 66 66 65 72 20 22 41 .................(read-buffer."A
5f2a0 70 70 65 6e 64 20 72 65 61 73 6f 6e 69 6e 67 20 74 6f 20 62 75 66 66 65 72 3a 20 22 29 0a 20 20 ppend.reasoning.to.buffer:.")...
5f2c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 64 72 20 28 61 73 73 6f 63 20 64 65 73 74 69 6e ..............(cdr.(assoc.destin
5f2e0 61 74 69 6f 6e 20 63 68 6f 69 63 65 73 29 29 29 29 29 29 0a 0a 3b 3b 20 2a 2a 20 49 6e 66 69 78 ation.choices))))))..;;.**.Infix
5f300 65 73 20 66 6f 72 20 74 6f 6f 6c 20 75 73 65 0a 0a 28 74 72 61 6e 73 69 65 6e 74 2d 64 65 66 69 es.for.tool.use..(transient-defi
5f320 6e 65 2d 69 6e 66 69 78 20 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 75 73 65 2d 74 6f 6f 6c 73 20 ne-infix.gptel--infix-use-tools.
5f340 28 29 0a 20 20 22 57 68 65 74 68 65 72 20 4c 4c 4d 20 74 6f 6f 6c 20 75 73 65 20 77 69 74 68 20 ()..."Whether.LLM.tool.use.with.
5f360 67 70 74 65 6c 20 69 73 20 65 6e 61 62 6c 65 64 2e 0a 0a 54 68 69 73 20 69 73 20 61 20 74 68 72 gptel.is.enabled...This.is.a.thr
5f380 65 65 2d 77 61 79 20 74 6f 67 67 6c 65 2e 20 20 41 73 73 75 6d 69 6e 67 20 6f 6e 65 20 6f 72 20 ee-way.toggle...Assuming.one.or.
5f3a0 6d 6f 72 65 20 74 6f 6f 6c 73 20 74 6f 20 62 65 0a 73 65 6e 74 20 77 69 74 68 20 72 65 71 75 65 more.tools.to.be.sent.with.reque
5f3c0 73 74 73 20 68 61 76 65 20 62 65 65 6e 20 73 65 6c 65 63 74 65 64 2c 20 74 6f 6f 6c 20 75 73 65 sts.have.been.selected,.tool.use
5f3e0 20 63 61 6e 20 62 65 0a 0a 2d 20 64 69 73 61 62 6c 65 64 2c 0a 2d 20 65 6e 61 62 6c 65 64 2c 20 .can.be..-.disabled,.-.enabled,.
5f400 77 68 65 72 65 20 74 68 65 20 4c 4c 4d 20 6d 61 79 20 63 68 6f 6f 73 65 20 74 6f 20 72 65 73 70 where.the.LLM.may.choose.to.resp
5f420 6f 6e 64 20 77 69 74 68 20 74 6f 6f 6c 20 63 61 6c 6c 73 0a 2d 20 66 6f 72 63 65 64 2c 20 77 68 ond.with.tool.calls.-.forced,.wh
5f440 65 72 65 20 74 68 65 20 4c 4c 4d 20 6d 75 73 74 20 72 65 73 70 6f 6e 64 20 77 69 74 68 20 6f 6e ere.the.LLM.must.respond.with.on
5f460 65 20 6f 72 20 6d 6f 72 65 20 74 6f 6f 6c 20 63 61 6c 6c 73 2e 0a 0a 59 6f 75 20 63 61 6e 20 73 e.or.more.tool.calls...You.can.s
5f480 65 74 20 74 68 69 73 20 68 65 72 65 20 6f 72 20 62 79 20 63 75 73 74 6f 6d 69 7a 69 6e 67 20 60 et.this.here.or.by.customizing.`
5f4a0 67 70 74 65 6c 2d 75 73 65 2d 74 6f 6f 6c 73 27 2c 20 77 68 69 63 68 0a 73 65 65 2e 22 0a 20 20 gptel-use-tools',.which.see."...
5f4c0 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 55 73 65 20 74 6f 6f 6c 73 22 0a 20 20 3a 63 6c 61 73 :description."Use.tools"...:clas
5f4e0 73 20 27 67 70 74 65 6c 2d 6c 69 73 70 2d 76 61 72 69 61 62 6c 65 0a 20 20 3a 76 61 72 69 61 62 s.'gptel-lisp-variable...:variab
5f500 6c 65 20 27 67 70 74 65 6c 2d 75 73 65 2d 74 6f 6f 6c 73 0a 20 20 3a 73 65 74 2d 76 61 6c 75 65 le.'gptel-use-tools...:set-value
5f520 20 28 6c 61 6d 62 64 61 20 28 73 79 6d 20 76 61 6c 75 65 20 73 63 6f 70 65 29 0a 20 20 20 20 20 .(lambda.(sym.value.scope)......
5f540 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 6f 70 65 ..........(gptel--set-with-scope
5f560 20 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 .sym.value.scope)...............
5f580 20 28 74 72 61 6e 73 69 65 6e 74 2d 73 65 74 75 70 29 29 0a 20 20 3a 64 69 73 70 6c 61 79 2d 6e .(transient-setup))...:display-n
5f5a0 69 6c 20 22 6f 66 66 22 0a 20 20 3a 64 69 73 70 6c 61 79 2d 6d 61 70 20 27 28 28 6e 69 6c 20 20 il."off"...:display-map.'((nil..
5f5c0 20 2e 20 22 6f 66 66 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 20 20 20 ..."off")..................(t...
5f5e0 20 20 2e 20 22 6f 6e 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 63 ...."on")..................(forc
5f600 65 20 2e 20 22 66 6f 72 63 65 22 29 29 0a 20 20 3a 70 72 6f 6d 70 74 20 22 55 73 65 20 74 6f 6f e..."force"))...:prompt."Use.too
5f620 6c 73 3f 20 22 0a 20 20 3a 72 65 61 64 65 72 20 28 6c 61 6d 62 64 61 20 28 70 72 6f 6d 70 74 20 ls?."...:reader.(lambda.(prompt.
5f640 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 20 28 28 63 68 6f &rest._).............(let*.((cho
5f660 69 63 65 73 20 27 28 28 22 64 69 73 61 62 6c 65 22 20 2e 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 ices.'(("disable"...nil)........
5f680 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 65 6e 61 62 6c 65 22 .......................("enable"
5f6a0 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 20 20 ....t)..........................
5f6c0 20 20 20 20 20 28 22 66 6f 72 63 65 22 20 20 20 2e 20 66 6f 72 63 65 29 29 29 0a 20 20 20 20 20 .....("force".....force)))......
5f6e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 65 66 20 28 63 6f 6d 70 6c 65 74 69 6e 67 2d ..............(pref.(completing-
5f700 72 65 61 64 20 70 72 6f 6d 70 74 20 63 68 6f 69 63 65 73 20 6e 69 6c 20 74 29 29 29 0a 20 20 20 read.prompt.choices.nil.t)))....
5f720 20 20 20 20 20 20 20 20 20 20 20 28 63 64 72 20 28 61 73 73 6f 63 20 70 72 65 66 20 63 68 6f 69 ...........(cdr.(assoc.pref.choi
5f740 63 65 73 29 29 29 29 0a 20 20 3a 6b 65 79 20 22 2d 74 22 29 0a 0a 28 74 72 61 6e 73 69 65 6e 74 ces))))...:key."-t")..(transient
5f760 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 63 6f 6e 66 69 -define-infix.gptel--infix-confi
5f780 72 6d 2d 74 6f 6f 6c 2d 63 61 6c 6c 73 20 28 29 0a 20 20 22 57 68 65 74 68 65 72 20 74 6f 6f 6c rm-tool-calls.()..."Whether.tool
5f7a0 20 63 61 6c 6c 73 20 73 68 6f 75 6c 64 20 77 61 69 74 20 66 6f 72 20 74 68 65 20 75 73 65 72 20 .calls.should.wait.for.the.user.
5f7c0 74 6f 20 72 75 6e 20 74 68 65 6d 2e 0a 0a 54 68 69 73 20 69 73 20 61 20 74 68 72 65 65 2d 77 61 to.run.them...This.is.a.three-wa
5f7e0 79 20 74 6f 67 67 6c 65 20 62 65 74 77 65 65 6e 20 74 68 65 73 65 20 62 65 68 61 76 69 6f 72 73 y.toggle.between.these.behaviors
5f800 3a 0a 0a 2d 20 41 6c 6c 20 74 6f 6f 6c 20 63 61 6c 6c 73 20 72 75 6e 20 77 69 74 68 6f 75 74 20 :..-.All.tool.calls.run.without.
5f820 63 6f 6e 66 69 72 6d 61 74 69 6f 6e 2e 0a 2d 20 41 6c 6c 20 74 6f 6f 6c 20 63 61 6c 6c 73 20 77 confirmation..-.All.tool.calls.w
5f840 61 69 74 20 66 6f 72 20 63 6f 6e 66 69 72 6d 61 74 69 6f 6e 2e 0a 2d 20 44 65 63 69 64 65 64 20 ait.for.confirmation..-.Decided.
5f860 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 65 per-tool,.according.to.the.value
5f880 20 6f 66 20 74 68 65 20 74 6f 6f 6c 20 73 70 65 63 27 73 0a 20 20 3a 63 6f 6e 66 69 72 6d 20 73 .of.the.tool.spec's...:confirm.s
5f8a0 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 70 lot...This.sets.the.variable.`gp
5f8c0 74 65 6c 2d 63 6f 6e 66 69 72 6d 2d 74 6f 6f 6c 2d 63 61 6c 6c 73 27 2c 20 77 68 69 63 68 20 73 tel-confirm-tool-calls',.which.s
5f8e0 65 65 2e 22 0a 20 20 3a 6b 65 79 20 22 2d 63 22 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 ee."...:key."-c"...:description.
5f900 22 43 6f 6e 66 69 72 6d 20 74 6f 6f 6c 20 63 61 6c 6c 73 22 0a 20 20 3a 63 6c 61 73 73 20 27 67 "Confirm.tool.calls"...:class.'g
5f920 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.'
5f940 67 70 74 65 6c 2d 63 6f 6e 66 69 72 6d 2d 74 6f 6f 6c 2d 63 61 6c 6c 73 0a 20 20 3a 73 65 74 2d gptel-confirm-tool-calls...:set-
5f960 76 61 6c 75 65 20 23 27 67 70 74 65 6c 2d 2d 73 65 74 2d 77 69 74 68 2d 73 63 6f 70 65 0a 20 20 value.#'gptel--set-with-scope...
5f980 3a 64 69 73 70 6c 61 79 2d 6e 69 6c 20 22 6e 65 76 65 72 22 0a 20 20 3a 64 69 73 70 6c 61 79 2d :display-nil."never"...:display-
5f9a0 6d 61 70 20 27 28 28 6e 69 6c 20 2e 20 22 6e 65 76 65 72 22 29 0a 20 20 20 20 20 20 20 20 20 20 map.'((nil..."never")...........
5f9c0 20 20 20 20 20 20 20 28 74 20 20 20 2e 20 22 61 6c 77 61 79 73 22 29 0a 20 20 20 20 20 20 20 20 .......(t....."always").........
5f9e0 20 20 20 20 20 20 20 20 20 28 61 75 74 6f 20 2e 20 22 61 75 74 6f 22 29 29 0a 20 20 3a 70 72 6f .........(auto..."auto"))...:pro
5fa00 6d 70 74 20 22 54 6f 6f 6c 20 63 61 6c 6c 73 20 72 65 71 75 69 72 65 20 63 6f 6e 66 69 72 6d 61 mpt."Tool.calls.require.confirma
5fa20 74 69 6f 6e 3f 20 22 0a 20 20 3a 72 65 61 64 65 72 20 28 6c 61 6d 62 64 61 20 28 70 72 6f 6d 70 tion?."...:reader.(lambda.(promp
5fa40 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 20 28 28 63 t.&rest._).............(let*.((c
5fa60 68 6f 69 63 65 73 20 27 28 28 22 6e 6f 22 20 20 20 2e 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 hoices.'(("no".....nil).........
5fa80 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 6c 77 61 79 73 22 20 ......................("always".
5faa0 2e 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..t)............................
5fac0 20 20 20 28 22 74 6f 6f 6c 20 64 65 63 69 64 65 73 22 20 2e 20 61 75 74 6f 29 29 29 0a 20 20 20 ...("tool.decides"...auto)))....
5fae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 65 66 20 28 63 6f 6d 70 6c 65 74 69 6e ................(pref.(completin
5fb00 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 20 g-read.prompt.choices.nil.t)))..
5fb20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 64 72 20 28 61 73 73 6f 63 20 70 72 65 66 20 63 68 .............(cdr.(assoc.pref.ch
5fb40 6f 69 63 65 73 29 29 29 29 29 0a 0a 28 74 72 61 6e 73 69 65 6e 74 2d 64 65 66 69 6e 65 2d 69 6e oices)))))..(transient-define-in
5fb60 66 69 78 20 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 fix.gptel--infix-include-tool-re
5fb80 73 75 6c 74 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 20 72 65 sults.()..."Whether.tool.call.re
5fba0 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.
5fbc0 72 65 73 70 6f 6e 73 65 2e 0a 0a 54 68 69 73 20 69 73 20 61 20 74 68 72 65 65 2d 77 61 79 20 74 response...This.is.a.three-way.t
5fbe0 6f 67 67 6c 65 20 62 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 oggle.between.these.behaviors:..
5fc00 2d 20 41 6c 6c 20 74 6f 6f 6c 20 72 65 73 75 6c 74 73 20 61 72 65 20 69 6e 63 6c 75 64 65 64 2e -.All.tool.results.are.included.
5fc20 0a 2d 20 4e 6f 20 74 6f 6f 6c 20 72 65 73 75 6c 74 73 20 61 72 65 20 69 6e 63 6c 75 64 65 64 2e .-.No.tool.results.are.included.
5fc40 0a 2d 20 44 65 63 69 64 65 64 20 70 65 72 2d 74 6f 6f 6c 2c 20 61 63 63 6f 72 64 69 6e 67 20 74 .-.Decided.per-tool,.according.t
5fc60 6f 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 74 6f 6f 6c 20 73 70 65 63 27 73 0a 20 o.the.value.of.the.tool.spec's..
5fc80 20 3a 69 6e 63 6c 75 64 65 20 73 6c 6f 74 2e 0a 0a 54 68 69 73 20 73 65 74 73 20 74 68 65 20 76 .:include.slot...This.sets.the.v
5fca0 61 72 69 61 62 6c 65 20 60 67 70 74 65 6c 2d 69 6e 63 6c 75 64 65 2d 74 6f 6f 6c 2d 72 65 73 75 ariable.`gptel-include-tool-resu
5fcc0 6c 74 73 27 2c 20 77 68 69 63 68 20 73 65 65 2e 22 0a 20 20 3a 6b 65 79 20 22 2d 69 22 0a 20 20 lts',.which.see."...:key."-i"...
5fce0 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 49 6e 63 6c 75 64 65 20 72 65 73 75 6c 74 73 20 20 20 :description."Include.results...
5fd00 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 0a "...:class.'gptel-lisp-variable.
5fd20 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 74 6f 6f 6c 2d ..:variable.'gptel-include-tool-
5fd40 72 65 73 75 6c 74 73 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 results...:set-value.#'gptel--se
5fd60 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 6e 65 76 t-with-scope...:display-nil."nev
5fd80 65 72 22 0a 20 20 3a 64 69 73 70 6c 61 79 2d 6d 61 70 20 27 28 28 6e 69 6c 20 2e 20 22 6e 65 76 er"...:display-map.'((nil..."nev
5fda0 65 72 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 20 20 20 2e 20 22 61 6c er")..................(t....."al
5fdc0 77 61 79 73 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 75 74 6f 20 2e 20 ways")..................(auto...
5fde0 22 61 75 74 6f 22 29 29 0a 20 20 3a 70 72 6f 6d 70 74 20 22 49 6e 63 6c 75 64 65 20 74 6f 6f 6c "auto"))...:prompt."Include.tool
5fe00 20 72 65 73 75 6c 74 73 20 69 6e 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 3f 20 22 0a 20 20 3a 72 .results.in.LLM.response?."...:r
5fe20 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._)..
5fe40 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 6e ...........(let*.((choices.'(("n
5fe60 65 76 65 72 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 ever".....nil)..................
5fe80 20 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 .............("always"...t).....
5fea0 20 20 20 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 ..........................("tool
5fec0 20 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 .decides"...auto))).............
5fee0 20 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 .......(pref.(completing-read.pr
5ff00 6f 6d 70 74 20 63 68 6f 69 63 65 73 20 6e 69 6c 20 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 ompt.choices.nil.t)))...........
5ff20 20 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 ....(cdr.(assoc.pref.choices))))
5ff40 29 0a 0a 0c 0a 3b 3b 20 2a 20 54 72 61 6e 73 69 65 6e 74 20 53 75 66 66 69 78 65 73 0a 0a 3b 3b )....;;.*.Transient.Suffixes..;;
5ff60 20 2a 2a 20 53 75 66 66 69 78 20 74 6f 20 73 65 6e 64 20 70 72 6f 6d 70 74 0a 0a 28 74 72 61 6e .**.Suffix.to.send.prompt..(tran
5ff80 73 69 65 6e 74 2d 64 65 66 69 6e 65 2d 73 75 66 66 69 78 20 67 70 74 65 6c 2d 2d 73 75 66 66 69 sient-define-suffix.gptel--suffi
5ffa0 78 2d 73 65 6e 64 20 28 61 72 67 73 29 0a 20 20 22 53 65 6e 64 20 41 52 47 53 2e 22 0a 20 20 3a x-send.(args)..."Send.ARGS."...:
5ffc0 6b 65 79 20 22 52 45 54 22 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 23 27 67 70 74 65 6c key."RET"...:description.#'gptel
5ffe0 2d 2d 64 65 73 63 72 69 62 65 2d 73 75 66 66 69 78 2d 73 65 6e 64 0a 20 20 28 69 6e 74 65 72 61 --describe-suffix-send...(intera
60000 63 74 69 76 65 20 28 6c 69 73 74 20 28 74 72 61 6e 73 69 65 6e 74 2d 61 72 67 73 0a 20 20 20 20 ctive.(list.(transient-args.....
60020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 20 74 72 61 6e 73 69 65 6e 74 2d ..................(or.transient-
60040 63 75 72 72 65 6e 74 2d 63 6f 6d 6d 61 6e 64 20 27 67 70 74 65 6c 2d 6d 65 6e 75 29 29 29 29 0a current-command.'gptel-menu)))).
60060 20 20 28 6c 65 74 20 28 28 73 74 72 65 61 6d 20 67 70 74 65 6c 2d 73 74 72 65 61 6d 29 0a 20 20 ..(let.((stream.gptel-stream)...
60080 20 20 20 20 20 20 28 69 6e 2d 70 6c 61 63 65 20 28 61 6e 64 20 28 6d 65 6d 62 65 72 20 22 69 22 ......(in-place.(and.(member."i"
600a0 20 61 72 67 73 29 20 74 29 29 0a 20 20 20 20 20 20 20 20 28 6f 75 74 70 75 74 2d 74 6f 2d 6f 74 .args).t)).........(output-to-ot
600c0 68 65 72 2d 62 75 66 66 65 72 2d 70 29 0a 20 20 20 20 20 20 20 20 28 62 61 63 6b 65 6e 64 20 67 her-buffer-p).........(backend.g
600e0 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 0a 20 20 20 20 20 20 20 20 28 6d 6f 64 65 6c 20 67 70 74 ptel-backend).........(model.gpt
60100 65 6c 2d 6d 6f 64 65 6c 29 0a 20 20 20 20 20 20 20 20 28 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 20 el-model).........(backend-name.
60120 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
60140 64 29 29 0a 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 29 20 28 70 6f 73 69 74 69 6f 6e 29 0a d)).........(buffer).(position).
60160 20 20 20 20 20 20 20 20 28 63 61 6c 6c 62 61 63 6b 29 20 28 67 70 74 65 6c 2d 62 75 66 66 65 72 ........(callback).(gptel-buffer
60180 2d 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 28 73 79 73 74 65 6d 2d 65 78 74 72 61 20 28 67 70 -name).........(system-extra.(gp
601a0 74 65 6c 2d 2d 67 65 74 2d 64 69 72 65 63 74 69 76 65 20 61 72 67 73 29 29 0a 20 20 20 20 20 20 tel--get-directive.args)).......
601c0 20 20 28 64 72 79 2d 72 75 6e 20 28 61 6e 64 20 28 6d 65 6d 62 65 72 20 22 49 22 20 61 72 67 73 ..(dry-run.(and.(member."I".args
601e0 29 20 74 29 29 0a 20 20 20 20 20 20 20 20 3b 3b 20 49 6e 70 75 74 20 72 65 64 69 72 65 63 74 69 ).t)).........;;.Input.redirecti
60200 6f 6e 3a 20 67 72 61 62 20 70 72 6f 6d 70 74 20 66 72 6f 6d 20 65 6c 73 65 77 68 65 72 65 3f 0a on:.grab.prompt.from.elsewhere?.
60220 20 20 20 20 20 20 20 20 28 70 72 6f 6d 70 74 0a 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 0a 20 ........(prompt..........(cond..
60240 20 20 20 20 20 20 20 20 20 28 28 6d 65 6d 62 65 72 20 22 6d 22 20 61 72 67 73 29 0a 20 20 20 20 .........((member."m".args).....
60260 20 20 20 20 20 20 20 28 72 65 61 64 2d 73 74 72 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 .......(read-string.............
60280 28 66 6f 72 6d 61 74 20 22 41 73 6b 20 25 73 3a 20 22 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e (format."Ask.%s:.".(gptel-backen
602a0 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 20 20 20 d-name.gptel-backend))..........
602c0 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 20 ...(and.(use-region-p)..........
602e0 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 6f ........(buffer-substring-no-pro
60300 70 65 72 74 69 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 67 69 6f perties...................(regio
60320 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 29 29 0a 20 20 n-beginning).(region-end)))))...
60340 20 20 20 20 20 20 20 20 28 28 6d 65 6d 62 65 72 20 22 79 22 20 61 72 67 73 29 0a 20 20 20 20 20 ........((member."y".args)......
60360 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 63 61 72 2d 73 61 66 65 20 6b 69 6c 6c 2d 72 69 6e ......(unless.(car-safe.kill-rin
60380 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 73 65 72 2d 65 72 72 6f 72 20 22 60 6b 69 g)..............(user-error."`ki
603a0 6c 6c 2d 72 69 6e 67 27 20 69 73 20 65 6d 70 74 79 21 20 20 4e 6f 74 68 69 6e 67 20 74 6f 20 73 ll-ring'.is.empty!..Nothing.to.s
603c0 65 6e 64 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 63 75 72 72 65 6e 74 2d 70 72 end"))............(if.current-pr
603e0 65 66 69 78 2d 61 72 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 61 64 2d 66 72 efix-arg................(read-fr
60400 6f 6d 2d 6b 69 6c 6c 2d 72 69 6e 67 20 22 50 72 6f 6d 70 74 20 66 72 6f 6d 20 6b 69 6c 6c 2d 72 om-kill-ring."Prompt.from.kill-r
60420 69 6e 67 3a 20 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 75 72 72 65 6e 74 2d 6b 69 ing:.")..............(current-ki
60440 6c 6c 20 30 29 29 29 29 29 29 0a 0a 20 20 20 20 3b 3b 20 4f 75 74 70 75 74 20 72 65 64 69 72 65 ll.0))))))......;;.Output.redire
60460 63 74 69 6f 6e 3a 20 53 65 6e 64 20 72 65 73 70 6f 6e 73 65 20 65 6c 73 65 77 68 65 72 65 3f 0a ction:.Send.response.elsewhere?.
60480 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 28 28 6d 65 6d 62 65 72 20 22 65 22 20 61 72 67 73 ....(cond......((member."e".args
604a0 29 0a 20 20 20 20 20 20 28 73 65 74 71 20 73 74 72 65 61 6d 20 6e 69 6c 29 0a 20 20 20 20 20 20 ).......(setq.stream.nil).......
604c0 28 73 65 74 71 20 63 61 6c 6c 62 61 63 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 (setq.callback.............(lamb
604e0 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 61 77 29 0a 20 20 da.(resp.info.&optional._raw)...
60500 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 20 20 20 20 20 20 ............(pcase.resp.........
60520 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 65 73 73 61 67 65 ........((pred.stringp).(message
60540 20 22 25 73 20 72 65 73 70 6f 6e 73 65 3a 20 25 73 22 20 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 20 ."%s.response:.%s".backend-name.
60560 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 74 6f 6f 6c 2d 63 resp)).................(`(tool-c
60580 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 2d 64 69 73 70 6c all...,tool-calls).(gptel--displ
605a0 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 20 27 6d ay-tool-calls.tool-calls.info.'m
605c0 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 20 20 28 60 28 74 inibuffer)).................(`(t
605e0 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 29 20 28 67 70 74 ool-result...,tool-results).(gpt
60600 65 6c 2d 2d 64 69 73 70 6c 61 79 2d 74 6f 6f 6c 2d 72 65 73 75 6c 74 73 20 74 6f 6f 6c 2d 72 65 el--display-tool-results.tool-re
60620 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 20 20 20 28 5f 20 sults.info)).................(_.
60640 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 69 73 74 2d 67 65 (when.(and.(null.resp).(plist-ge
60660 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 20 20 20 20 20 20 t.info.:error)).................
60680 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 20 65 72 72 6f 72 .....(message."%s.response.error
606a0 3a 20 25 73 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :.%s"...........................
606c0 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 74 20 69 6e 66 6f ....backend-name.(plist-get.info
606e0 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 6d 62 65 72 20 22 .:status))))))))......((member."
60700 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 6d 20 6e 69 6c 29 k".args).......(setq.stream.nil)
60720 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 20 20 20 20 20 20 .......(setq.callback...........
60740 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 6f 6e 61 6c 20 5f ..(lambda.(resp.info.&optional._
60760 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 72 65 73 70 0a 20 raw)...............(pcase.resp..
60780 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 6e 67 70 29 20 28 ...............((pred.stringp).(
607a0 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 20 20 20 20 20 20 kill-new.resp)..................
607c0 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 73 5c 22 20 63 6f (message."%s.response:.\"%s\".co
607e0 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 64 2d 6e 61 6d 65 pied.to.kill-ring.".backend-name
60800 0a 20 20 20 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
60820 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 33 30 29 29 29 0a cate-string-to-width.resp.30))).
60840 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 6c 6c 20 2e 20 2c ................(`(tool-call...,
60860 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 79 2d 74 6f 6f 6c tool-calls).(gptel--display-tool
60880 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 6e 69 62 75 66 66 -calls.tool-calls.info.'minibuff
608a0 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 6f 6c 2d 72 65 73 er)).................(`(tool-res
608c0 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 6c 2d 2d 64 69 73 ult...,tool-results).(gptel--dis
608e0 70 6c 61 79 2d 74 6f 6f 6c 2d 72 65 73 75 6c 74 73 20 74 6f 6f 6c 2d 72 65 73 75 6c 74 73 20 69 play-tool-results.tool-results.i
60900 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 77 68 65 6e 20 28 nfo)).................(_.(when.(
60920 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 20 69 6e 66 6f 20 and.(null.resp).(plist-get.info.
60940 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 20 20 20 20 28 6d :error))......................(m
60960 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 20 25 73 22 20 62 essage."%s.response.error:.%s".b
60980 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 20 ackend-name.....................
609a0 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 73 74 61 74 75 ..........(plist-get.info.:statu
609c0 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 6c 2d 62 75 66 66 s))))))))......((setq.gptel-buff
609e0 65 72 2d 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 73 6f 6d 65 20 28 6c 61 er-name.............(cl-some.(la
60a00 6d 62 64 61 20 28 73 29 20 28 61 6e 64 20 28 73 74 72 69 6e 67 70 20 73 29 20 28 73 74 72 69 6e mbda.(s).(and.(stringp.s).(strin
60a20 67 2d 70 72 65 66 69 78 2d 70 20 22 67 22 20 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 g-prefix-p."g".s)...............
60a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 75 62 73 74 72 69 6e 67 20 73 20 ...................(substring.s.
60a60 31 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 72 67 73 29 29 1)))......................args))
60a80 0a 20 20 20 20 20 20 28 73 65 74 71 20 6f 75 74 70 75 74 2d 74 6f 2d 6f 74 68 65 72 2d 62 75 66 .......(setq.output-to-other-buf
60aa0 66 65 72 2d 70 20 74 29 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 72 65 64 75 63 65 64 2d 70 72 fer-p.t).......(let.((reduced-pr
60ac0 6f 6d 70 74 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 46 6f 72 20 69 6e 73 65 72 74 69 6e 67 20 ompt.............;For.inserting.
60ae0 69 6e 74 6f 20 74 68 65 20 67 70 74 65 6c 20 62 75 66 66 65 72 20 61 73 0a 20 20 20 20 20 20 20 into.the.gptel.buffer.as........
60b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
60b20 20 3b 63 6f 6e 74 65 78 74 2c 20 6e 6f 74 20 74 68 65 20 70 72 6f 6d 70 74 20 75 73 65 64 20 66 .;context,.not.the.prompt.used.f
60b40 6f 72 20 74 68 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 or.the..........................
60b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 72 65 71 75 65 73 74 20 69 74 73 65 6c 66 0a 20 ...............;request.itself..
60b80 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 20 70 72 6f 6d 70 74 0a 20 20 20 20 20 20 20 20 20 ............(or.prompt..........
60ba0 20 20 20 20 20 20 20 20 28 69 66 20 28 75 73 65 2d 72 65 67 69 6f 6e 2d 70 29 0a 20 20 20 20 20 ........(if.(use-region-p)......
60bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e ................(buffer-substrin
60be0 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 20 28 72 65 67 69 6f 6e 2d 62 65 67 69 6e 6e 69 6e g-no-properties.(region-beginnin
60c00 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)..............................
60c20 20 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-
60c40 65 6e 64 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 end))....................(buffer
60c60 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 20 20 20 -substring-no-properties........
60c80 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....
60ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 65 78 74 2d 70 72 6f 70 65 72 74 ...................(text-propert
60cc0 79 2d 73 65 61 72 63 68 2d 62 61 63 6b 77 61 72 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 y-search-backward...............
60ce0 20 20 20 20 20 20 20 20 20 27 67 70 74 65 6c 20 27 72 65 73 70 6f 6e 73 65 0a 20 20 20 20 20 20 .........'gptel.'response.......
60d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 67 65 74 2d 63 68 61 72 .................(when.(get-char
60d20 2d 70 72 6f 70 65 72 74 79 20 28 6d 61 78 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28 31 2d 20 28 -property.(max.(point-min).(1-.(
60d40 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 point)))........................
60d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 67 70 74 65 6c 29 .........................'gptel)
60d80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 29 29 0a 20 20 ..........................t))...
60da0 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 0a 20 20 20 ....................(point))....
60dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 61 74 2d 77 6f 72 64 .................(gptel--at-word
60de0 2d 65 6e 64 20 28 70 6f 69 6e 74 29 29 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 63 6f 6e 64 -end.(point))))))).........(cond
60e00 0a 20 20 20 20 20 20 20 20 20 28 28 62 75 66 66 65 72 2d 6c 69 76 65 2d 70 20 28 67 65 74 2d 62 ..........((buffer-live-p.(get-b
60e20 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)).......
60e40 20 20 20 20 3b 3b 20 49 6e 73 65 72 74 20 69 6e 74 6f 20 65 78 69 73 74 69 6e 67 20 67 70 74 65 ....;;.Insert.into.existing.gpte
60e60 6c 20 73 65 73 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 67 6e 0a 20 20 20 20 20 l.session...........(progn......
60e80 20 20 20 20 20 20 20 28 73 65 74 71 20 62 75 66 66 65 72 20 28 67 65 74 2d 62 75 66 66 65 72 20 .......(setq.buffer.(get-buffer.
60ea0 67 70 74 65 6c 2d 62 75 66 66 65 72 2d 6e 61 6d 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 gptel-buffer-name)).............
60ec0 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.....
60ee0 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 61 78 29 ..........(goto-char.(point-max)
60f00 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 6f 72 20 62 75 66 66 )...............(unless.(or.buff
60f20 65 72 2d 72 65 61 64 2d 6f 6e 6c 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 er-read-only....................
60f40 20 20 20 20 20 20 20 28 67 65 74 2d 63 68 61 72 2d 70 72 6f 70 65 72 74 79 20 28 70 6f 69 6e 74 .......(get-char-property.(point
60f60 29 20 27 72 65 61 64 2d 6f 6e 6c 79 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 ).'read-only)).................(
60f80 69 6e 73 65 72 74 20 72 65 64 75 63 65 64 2d 70 72 6f 6d 70 74 29 29 0a 20 20 20 20 20 20 20 20 insert.reduced-prompt)).........
60fa0 20 20 20 20 20 20 28 73 65 74 71 20 70 6f 73 69 74 69 6f 6e 20 28 70 6f 69 6e 74 29 29 0a 20 20 ......(setq.position.(point))...
60fc0 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 65 6c 2d 6d 6f 64 ............(when.(and.gptel-mod
60fe0 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 20 20 20 20 20 20 e.(not.dry-run))................
61000 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
61020 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 20 20 3b 3b 20 49 ...".'warning)))))..........;;.I
61040 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 6f 6e 0a 20 20 20 nsert.into.new.gptel.session....
61060 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 20 20 20 20 20 20 ......(t.(setq.buffer...........
61080 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 72 2d 6e 61 6d 65 ........(gptel.gptel-buffer-name
610a0 0a 20 20 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
610c0 74 69 6f 6e 2d 63 61 73 65 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 tion-case.nil...................
610e0 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 67 65 74 2d 61 70 69 2d 6b 65 79 29 0a ...........(gptel--get-api-key).
61100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 65 72 72 ...........................((err
61120 6f 72 20 75 73 65 72 2d 65 72 72 6f 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 or.user-error)..................
61140 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 2d 6b 65 79 0a 20 ...........(setq.gptel-api-key..
61160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
61180 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 20 20 20 20 20 20 .(read-passwd...................
611a0 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 20 41 50 49 .................(format."%s.API
611c0 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 20 20 20 20 20 20 .key:.".........................
611e0 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 61 63 6b 65 6e ...................(gptel-backen
61200 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..........................
61220 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 61 63 6b 65 6e 64 ...................gptel-backend
61240 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 20 20 20 20 20 20 ))))))..........................
61260 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 20 20 20 3b 3b 20 reduced-prompt)).............;;.
61280 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 65 77 20 73 65 73 Set.backend.and.model.in.new.ses
612a0 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 20 20 20 20 20 20 sion.from.current.buffer........
612c0 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 72 .....(with-current-buffer.buffer
612e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 67 70 74 65 6c 2d 62 61 63 6b 65 ...............(setq.gptel-backe
61300 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 28 73 65 74 71 20 nd.backend)...............(setq.
61320 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 20 20 20 20 20 20 gptel-model.model)..............
61340 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 20 20 20 20 20 20 .(unless.dry-run................
61360 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
61380 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 20 20 20 20 28 73 ...".'warning))...............(s
613a0 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 0a 20 20 20 20 20 etq.position.(point)))))))......
613c0 28 28 73 65 74 71 20 67 70 74 65 6c 2d 62 75 66 66 65 72 2d 6e 61 6d 65 0a 20 20 20 20 20 20 20 ((setq.gptel-buffer-name........
613e0 20 20 20 20 20 28 63 6c 2d 73 6f 6d 65 20 28 6c 61 6d 62 64 61 20 28 73 29 20 28 61 6e 64 20 28 .....(cl-some.(lambda.(s).(and.(
61400 73 74 72 69 6e 67 70 20 73 29 20 28 73 74 72 69 6e 67 2d 70 72 65 66 69 78 2d 70 20 22 62 22 20 stringp.s).(string-prefix-p."b".
61420 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 s)..............................
61440 20 20 20 20 28 73 75 62 73 74 72 69 6e 67 20 73 20 31 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 ....(substring.s.1)))...........
61460 20 20 20 20 20 20 20 20 20 20 20 61 72 67 73 29 29 0a 20 20 20 20 20 20 28 73 65 74 71 20 6f 75 ...........args)).......(setq.ou
61480 74 70 75 74 2d 74 6f 2d 6f 74 68 65 72 2d 62 75 66 66 65 72 2d 70 20 74 29 0a 20 20 20 20 20 20 tput-to-other-buffer-p.t).......
614a0 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 72 65 61 74 65 20 (setq.buffer.(get-buffer-create.
614c0 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 28 77 69 74 68 2d gptel-buffer-name)).......(with-
614e0 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 71 20 70 6f 73 69 current-buffer.buffer.(setq.posi
61500 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 67 31 20 28 67 70 tion.(point)))))......(prog1.(gp
61520 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 20 20 20 20 20 20 tel-request.prompt..............
61540 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 74 2d 62 75 66 66 :buffer.(or.buffer.(current-buff
61560 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 6e 20 70 6f 73 69 er))..............:position.posi
61580 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 65 20 28 61 6e 64 tion..............:in-place.(and
615a0 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 74 68 65 72 2d 62 .in-place.(not.output-to-other-b
615c0 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 72 65 61 6d 20 73 uffer-p))..............:stream.s
615e0 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 0a 20 20 20 20 20 tream..............:system......
61600 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 20 20 20 20 20 20 ........(if.system-extra........
61620 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 64 69 74 69 6f 6e ..........(gptel--merge-addition
61640 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 0a 20 20 20 20 20 al-directive.system-extra)......
61660 20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 29 ..........gptel--system-message)
61680 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 6c 6c 62 61 63 6b ..............:callback.callback
616a0 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
616c0 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
616e0 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
61700 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........
61720 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
61740 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:.
61760 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
61780 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.
617a0 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
617c0 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
617e0 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
61800 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
61820 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-
61840 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).
61860 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
61880 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.
618a0 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.((
618c0 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)..........
618e0 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
61900 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.(
61920 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.
61940 20 20 20 20 20 20 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
61960 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))....
61980 20 20 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
619a0 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.......
619c0 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).'
619e0 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)))))...
61a00 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
61a20 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))))...
61a40 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
61a60 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
61a80 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
61aa0 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-
61ac0 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................
61ae0 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
61b00 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
61b20 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
61b40 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....
61b60 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
61b80 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:.".................
61ba0 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
61bc0 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))
61be0 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.......
61c00 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
61c20 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
61c40 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).......
61c60 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
61c80 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
61ca0 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
61cc0 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
61ce0 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
61d00 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
61d20 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
61d40 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
61d60 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
61d80 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
61da0 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
61dc0 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
61de0 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
61e00 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
61e20 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
61e40 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
61e60 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
61e80 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
61ea0 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-
61ec0 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
61ee0 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
61f00 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
61f20 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
61f40 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.
61f60 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.
61f80 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
61fa0 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
61fc0 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-
61fe0 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)..;;.
62000 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
62020 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.()...
62040 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
62060 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
62080 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-
620a0 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
620c0 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)).............
620e0 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
62100 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)).......
62120 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
62140 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
62160 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).......................
62180 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))).....
621a0 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..............
621c0 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.......
621e0 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
62200 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
62220 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-
62240 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
62260 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)))..........................
62280 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).......
622a0 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
622c0 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).
622e0 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.....
62300 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
62320 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
62340 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.(
62360 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
62380 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
623a0 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
623c0 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.#
623e0 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
62400 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--
62420 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
62440 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
62460 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
62480 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
624a0 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."...
624c0 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
624e0 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
62500 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
62520 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..
62540 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
62560 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
62580 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
625a0 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).........
625c0 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..........
625e0 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
62600 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
62620 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)......................
62640 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.....................
62660 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)...............
62680 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.""........
626a0 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
626c0 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.:
626e0 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))...................
62700 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
62720 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
62740 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).............................
62760 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
62780 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))))...........................
627a0 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
627c0 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--
627e0 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)))
62800 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))).........
62820 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
62840 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)
62860 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
62880 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
628a0 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
628c0 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
628e0 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)
62900 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
62920 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
62940 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
62960 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
62980 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
629a0 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
629c0 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
629e0 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--
62a00 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
62a20 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.".
62a40 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
62a60 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
62a80 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)..............
62aa0 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.................
62ac0 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
62ae0 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
62b00 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
62b20 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
62b40 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
62b60 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)).....(
62b80 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
62ba0 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
62bc0 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
62be0 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,
62c00 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
62c20 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-
62c40 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
62c60 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
62c80 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
62ca0 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.
62cc0 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
62ce0 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
62d00 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,.
62d20 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
62d40 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
62d60 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.".
62d80 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.((
62da0 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
62dc0 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-
62de0 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
62e00 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
62e20 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
62e40 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)))....
62e60 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
62e80 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
62ea0 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.
62ec0 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
62ee0 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
62f00 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).
62f20 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
62f40 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
62f60 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...............
62f80 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.
62fa0 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."...............
62fc0 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
62fe0 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)..........
63000 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.".
63020 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
63040 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
63060 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.
63080 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.......
630a0 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
630c0 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
630e0 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
63100 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"...
63120 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
63140 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
63160 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
63180 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.
631a0 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")......
631c0 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.........
631e0 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
63200 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
63220 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.'
63240 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-
63260 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)).......
63280 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
632a0 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
632c0 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
632e0 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
63300 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
63320 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.'
63340 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.
63360 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))).......(
63380 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).
633a0 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
633c0 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).........
633e0 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..
63400 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)..............
63420 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
63440 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
63460 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
63480 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.
634a0 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
634c0 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).
634e0 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)....
63500 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
63520 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
63540 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.....................
63560 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
63580 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.....................
635a0 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
635c0 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).................
635e0 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
63600 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))))........
63620 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
63640 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)
63660 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
63680 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))
636a0 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.....
636c0 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......
636e0 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.............
63700 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.()
63720 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
63740 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.".............
63760 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
63780 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.............
637a0 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
637c0 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)))
637e0 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-
63800 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.................
63820 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....
63840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
63860 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).;
63880 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..........
638a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
638c0 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
638e0 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)).........
63900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
63920 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)..............
63940 20 20 20 20 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
63960 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)))........
63980 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))..
639a0 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
639c0 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))))))
639e0 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
63a00 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
63a20 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
63a40 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
63a60 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
63a80 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
63aa0 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
63ac0 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
63ae0 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
63b00 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
63b20 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
63b40 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
63b60 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)...
63b80 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))..
63ba0 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
63bc0 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..;;.
63be0 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
63c00 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
63c20 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:..........
63c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
63c60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
63c80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
63ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
63cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
63ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
63d00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
63d20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
63d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
63d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
63d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
63da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
63dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
63de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
63e00 67 70 74 65 6c 2d 30 2e 39 2e 38 2f 67 70 74 65 6c 2d 6f 70 65 6e 61 69 2d 65 78 74 72 61 73 2e gptel-0.9.8/gptel-openai-extras.
63e20 65 6c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 el..............................
63e40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
63e60 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
63e80 30 30 33 34 36 33 31 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 35 35 32 33 00 20 30 00 00 00 0034631.00000000000.015523..0...
63ea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
63ec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
63ee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
63f00 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...................
63f20 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...................
63f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
63f60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
63f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
63fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
63fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
63fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
64000 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
64020 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.-*-.
64040 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
64060 72 69 67 68 74 20 28 43 29 20 32 30 32 33 20 20 4b 61 72 74 68 69 6b 20 43 68 69 6b 6d 61 67 61 right.(C).2023..Karthik.Chikmaga
64080 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 69 6b 6d 61 67 lur..;;.Authors:.Karthik.Chikmag
640a0 61 6c 75 72 20 3c 6b 61 72 74 68 69 6b 63 68 69 6b 6d 61 67 61 6c 75 72 40 67 6d 61 69 6c 2e 63 alur.<karthikchikmagalur@gmail.c
640c0 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 6f 67 72 61 6d om>.and.pirminj..;;.This.program
640e0 20 69 73 20 66 72 65 65 20 73 6f 66 74 77 61 72 65 3b 20 79 6f 75 20 63 61 6e 20 72 65 64 69 73 .is.free.software;.you.can.redis
64100 74 72 69 62 75 74 65 20 69 74 20 61 6e 64 2f 6f 72 20 6d 6f 64 69 66 79 0a 3b 3b 20 69 74 20 75 tribute.it.and/or.modify.;;.it.u
64120 6e 64 65 72 20 74 68 65 20 74 65 72 6d 73 20 6f 66 20 74 68 65 20 47 4e 55 20 47 65 6e 65 72 61 nder.the.terms.of.the.GNU.Genera
64140 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 61 73 20 70 75 62 6c 69 73 68 65 64 20 62 79 l.Public.License.as.published.by
64160 0a 3b 3b 20 74 68 65 20 46 72 65 65 20 53 6f 66 74 77 61 72 65 20 46 6f 75 6e 64 61 74 69 6f 6e .;;.the.Free.Software.Foundation
64180 2c 20 65 69 74 68 65 72 20 76 65 72 73 69 6f 6e 20 33 20 6f 66 20 74 68 65 20 4c 69 63 65 6e 73 ,.either.version.3.of.the.Licens
641a0 65 2c 20 6f 72 0a 3b 3b 20 28 61 74 20 79 6f 75 72 20 6f 70 74 69 6f 6e 29 20 61 6e 79 20 6c 61 e,.or.;;.(at.your.option).any.la
641c0 74 65 72 20 76 65 72 73 69 6f 6e 2e 0a 0a 3b 3b 20 54 68 69 73 20 70 72 6f 67 72 61 6d 20 69 73 ter.version...;;.This.program.is
641e0 20 64 69 73 74 72 69 62 75 74 65 64 20 69 6e 20 74 68 65 20 68 6f 70 65 20 74 68 61 74 20 69 74 .distributed.in.the.hope.that.it
64200 20 77 69 6c 6c 20 62 65 20 75 73 65 66 75 6c 2c 0a 3b 3b 20 62 75 74 20 57 49 54 48 4f 55 54 20 .will.be.useful,.;;.but.WITHOUT.
64220 41 4e 59 20 57 41 52 52 41 4e 54 59 3b 20 77 69 74 68 6f 75 74 20 65 76 65 6e 20 74 68 65 20 69 ANY.WARRANTY;.without.even.the.i
64240 6d 70 6c 69 65 64 20 77 61 72 72 61 6e 74 79 20 6f 66 0a 3b 3b 20 4d 45 52 43 48 41 4e 54 41 42 mplied.warranty.of.;;.MERCHANTAB
64260 49 4c 49 54 59 20 6f 72 20 46 49 54 4e 45 53 53 20 46 4f 52 20 41 20 50 41 52 54 49 43 55 4c 41 ILITY.or.FITNESS.FOR.A.PARTICULA
64280 52 20 50 55 52 50 4f 53 45 2e 20 20 53 65 65 20 74 68 65 0a 3b 3b 20 47 4e 55 20 47 65 6e 65 72 R.PURPOSE...See.the.;;.GNU.Gener
642a0 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 66 6f 72 20 6d 6f 72 65 20 64 65 74 61 69 al.Public.License.for.more.detai
642c0 6c 73 2e 0a 0a 3b 3b 20 59 6f 75 20 73 68 6f 75 6c 64 20 68 61 76 65 20 72 65 63 65 69 76 65 64 ls...;;.You.should.have.received
642e0 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 .a.copy.of.the.GNU.General.Publi
64300 63 20 4c 69 63 65 6e 73 65 0a 3b 3b 20 61 6c 6f 6e 67 20 77 69 74 68 20 74 68 69 73 20 70 72 6f c.License.;;.along.with.this.pro
64320 67 72 61 6d 2e 20 20 49 66 20 6e 6f 74 2c 20 73 65 65 20 3c 68 74 74 70 73 3a 2f 2f 77 77 77 2e gram...If.not,.see.<https://www.
64340 67 6e 75 2e 6f 72 67 2f 6c 69 63 65 6e 73 65 73 2f 3e 2e 0a 0a 3b 3b 3b 20 43 6f 6d 6d 65 6e 74 gnu.org/licenses/>...;;;.Comment
64360 61 72 79 3a 0a 0a 3b 3b 20 54 68 69 73 20 66 69 6c 65 20 61 64 64 73 20 73 75 70 70 6f 72 74 20 ary:..;;.This.file.adds.support.
64380 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 50 49 20 61 6e for.Privategpt's.Messages.API.an
643a0 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 20 66 65 61 74 d.;;.Perplexity's.Citations.feat
643c0 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 71 75 69 72 65 ure.to.gptel..;;;.Code:.(require
643e0 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 65 .'cl-generic).(eval-when-compile
64400 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 27 ...(require.'cl-lib)).(require.'
64420 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 76 61 72 20 6a map).(require.'gptel)..(defvar.j
64440 73 6f 6e 2d 6f 62 6a 65 63 74 2d 74 79 70 65 29 0a 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 son-object-type)..(declare-funct
64460 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 70 65 ion.prop-match-value."text-prope
64480 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 74 rty-search").(declare-function.t
644a0 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 74 65 ext-property-search-backward."te
644c0 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 66 75 xt-property-search").(declare-fu
644e0 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 0a 0a 0a 3b nction.json-read."json".())....;
64500 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 29 0a 28 63 6c ;;.Privategpt.(Messages.API).(cl
64520 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 74 20 28 3a 63 -defstruct.(gptel-privategpt.(:c
64540 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 61 74 65 67 70 onstructor.gptel--make-privategp
64560 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 t)..............................
64580 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 20 20 20 ..(:copier.nil).................
645a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 3a 69 6e 63 6c 75 64 65 20 67 70 74 65 6c 2d 6f ...............(:include.gptel-o
645c0 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 0a 28 64 65 66 penai))...context.sources)..(def
645e0 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 73 6f 75 72 63 un.gptel--privategpt-parse-sourc
64600 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 74 68 20 73 6f es.(response)...(cl-loop.with.so
64620 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 6f 75 72 63 65 urce-alist............for.source
64640 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 70 6f 6e 73 65 .across.(map-nested-elt.response
64660 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 20 20 20 20 20 .'(:choices.0.:sources))........
64680 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 65 6c 74 20 73 ....for.name.=.(map-nested-elt.s
646a0 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 64 61 74 61 20 ource.'(:document.:doc_metadata.
646c0 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 20 70 61 67 65 :file_name))............for.page
646e0 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 28 3a 64 6f 63 .=.(map-nested-elt.source.'(:doc
64700 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 61 62 65 6c 29 ument.:doc_metadata.:page_label)
64720 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 28 61 6c 69 73 )............do.(push.page.(alis
64740 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 20 6e 69 6c 20 t-get.name.source-alist.nil.nil.
64760 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 79 20 72 65 74 #'equal))............finally.ret
64780 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 20 28 66 69 6c urn............(cl-loop.for.(fil
647a0 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 72 63 65 2d 61 e-name...file-pages).in.source-a
647c0 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 72 20 70 61 67 list.....................for.pag
647e0 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 20 66 69 6c 65 es.=.(delete-dups.(delq.nil.file
64800 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 20 20 69 66 20 -pages)).....................if.
64820 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 6f 6c 6c 65 63 pages.....................collec
64840 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 66 69 6c 65 2d t.(format."-.%s.(page.%s)".file-
64860 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 70 61 67 65 73 name.(mapconcat.#'identity.pages
64880 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 20 69 6e 74 6f .",.")).....................into
648a0 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 20 20 20 20 20 .source-items...................
648c0 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 73 22 20 66 69 ..else.collect.(format."-.%s".fi
648e0 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 20 20 20 20 20 le-name).into.source-items......
64900 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 28 6d ...............finally.return.(m
64920 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 5c 6e 5c 6e 53 apconcat.#'identity.(cons."\n\nS
64940 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 29 29 29 29 0a ources:".source-items)."\n")))).
64960 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 65 0a 28 63 6c .;;.FIXME(tool).add.tool.use.(cl
64980 2d 64 65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 70 61 72 73 65 2d 73 74 72 -defmethod.gptel-curl--parse-str
649a0 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 65 67 70 74 29 eam.((_backend.gptel-privategpt)
649c0 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 72 73 29 29 0a .info)...(let*.((content-strs)).
649e0 20 20 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 ....(condition-case.nil.........
64a00 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 5e 64 61 74 61 (while.(re-search-forward."^data
64a20 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 61 74 63 68 2d :".nil.t)...........(save-match-
64a40 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 6e 67 2d 61 74 data.............(if.(looking-at
64a60 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 20 .".*\\[DONE\\]")................
64a80 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 67 20 28 70 6c .(when-let*.((sources-string.(pl
64aa0 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 20 20 20 20 20 ist-get.info.:sources)))........
64ac0 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 72 69 6e 67 20 ...........(push.sources-string.
64ae0 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 20 20 28 6c 65 content-strs))...............(le
64b00 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 65 61 64 29 29 t.((response.(gptel--json-read))
64b20 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 69 6e 66 6f 20 )...(unless.(or.(plist-get.info.
64b40 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 20 20 20 20 20 :sources).......................
64b60 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 74 2d 73 6f 75 ......(not.(gptel-privategpt-sou
64b80 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 6e 64 29 29 29 rces.(plist-get.info.:backend)))
64ba0 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 20 69 )...................(plist-put.i
64bc0 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 65 67 70 74 2d nfo.:sources.(gptel--privategpt-
64be0 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 09 28 6c 65 74 parse-sources.response)))...(let
64c00 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 65 73 70 6f 6e *.((delta.(map-nested-elt.respon
64c20 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 09 20 20 20 20 se.'(:choices.0.:delta))).......
64c40 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 61 20 3a 63 6f ...(content.(plist-get.delta.:co
64c60 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 63 6f 6e 74 65 ntent))).....(push.content.conte
64c80 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 20 20 20 20 20 nt-strs)))))).......(error......
64ca0 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 67 20 30 29 ..(goto-char.(match-beginning.0)
64cc0 29 29 29 0a 20 20 20 20 28 61 70 70 6c 79 20 23 27 63 6f 6e 63 61 74 20 28 6e 72 65 76 65 72 73 ))).....(apply.#'concat.(nrevers
64ce0 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 45 28 74 6f 6f e.content-strs))))..;;.FIXME(too
64d00 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 6f 64 20 67 70 l).add.tool.use.(cl-defmethod.gp
64d20 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
64d40 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 6e 66 6f 29 0a ptel-privategpt).response.info).
64d60 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 70 2d 6e 65 ..(let.((response-string.(map-ne
64d80 73 74 65 64 2d 65 6c 74 20 72 65 73 70 6f 6e 73 65 20 27 28 3a 63 68 6f 69 63 65 73 20 30 20 3a sted-elt.response.'(:choices.0.:
64da0 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 28 73 6f 75 message.:content))).........(sou
64dc0 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 76 61 74 65 67 rces-string.(and.(gptel-privateg
64de0 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 3a 62 61 63 6b pt-sources.(plist-get.info.:back
64e00 65 6e 64 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 end))...........................
64e20 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 2d 73 6f 75 72 ...(gptel--privategpt-parse-sour
64e40 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 74 20 72 65 73 ces.response)))).....(concat.res
64e60 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 29 29 29 0a 0a ponse-string.sources-string)))..
64e80 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 2d 72 65 71 75 65 73 74 2d 64 61 74 (cl-defmethod.gptel--request-dat
64ea0 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 70 74 29 20 70 a.((_backend.gptel-privategpt).p
64ec0 72 6f 6d 70 74 73 29 0a 20 20 22 4a 53 4f 4e 20 65 6e 63 6f 64 65 20 50 52 4f 4d 50 54 53 20 66 rompts)..."JSON.encode.PROMPTS.f
64ee0 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 6c 65 74 20 28 or.sending.to.ChatGPT."...(let.(
64f00 28 70 72 6f 6d 70 74 73 2d 70 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 60 28 3a 6d 6f 64 65 6c (prompts-plist..........`(:model
64f20 20 2c 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 6e 61 6d 65 20 67 70 74 65 6c 2d 6d 6f 64 65 6c .,(gptel--model-name.gptel-model
64f40 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 0a 09 20 20 20 ).....:messages.[,@prompts].....
64f60 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 69 76 61 74 65 :use_context.,(or.(gptel-private
64f80 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 3a 6a 73 6f 6e gpt-context.gptel-backend).:json
64fa0 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 73 20 2c 28 6f -false).....:include_sources.,(o
64fc0 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 20 67 70 74 65 r.(gptel-privategpt-sources.gpte
64fe0 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 20 20 20 20 20 l-backend).:json-false).........
65000 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 20 3a 6a 73 ...:stream.,(or.gptel-stream.:js
65020 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 20 67 70 74 65 on-false)))).....(when.(and.gpte
65040 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...............
65060 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 2d 70 20 27 6e .(not.(gptel--model-capable-p.'n
65080 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 20 70 72 6f 6d osystem))).......(plist-put.prom
650a0 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 74 65 6d 2d pts-plist.:system.gptel--system-
650c0 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 65 6d 70 65 72 message)).....(when.gptel-temper
650e0 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 70 74 73 2d 70 ature.......(plist-put.prompts-p
65100 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 70 65 72 61 74 list.:temperature.gptel-temperat
65120 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 6f 6b 65 6e 73 ure)).....(when.gptel-max-tokens
65140 0a 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 70 72 6f 6d 70 74 73 2d 70 6c 69 73 74 20 .......(plist-put.prompts-plist.
65160 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 73 29 29 0a 20 :max_tokens.gptel-max-tokens))..
65180 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 77 69 74 68 20 ...;;.Merge.request.params.with.
651a0 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 20 20 20 28 67 model.and.backend.params......(g
651c0 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 6d 70 74 73 2d ptel--merge-plists......prompts-
651e0 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 65 71 75 65 73 plist......(gptel-backend-reques
65200 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 20 20 28 67 70 t-params.gptel-backend)......(gp
65220 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 67 70 74 65 6c tel--model-request-params..gptel
65240 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 0a 28 63 6c 2d -model))))...;;;###autoload.(cl-
65260 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 0a 20 20 20 20 defun.gptel-make-privategpt.....
65280 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.
652a0 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
652c0 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 65 74 ............(lambda.().(when-let
652e0 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 0a 09 *.((key.(gptel--get-api-key)))..
65300 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 63 6f 6e 63 61 ....`(("Authorization"...,(conca
65320 74 20 22 42 65 61 72 65 72 20 22 20 6b 65 79 29 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 t."Bearer.".key))))))...........
65340 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 20 20 20 20 20 (host."localhost:8001").........
65360 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 65 6c 73 20 27 ..(protocol."http")....(models.'
65380 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 6e 64 70 6f 69 (private-gpt))...........(endpoi
653a0 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 20 20 20 20 20 nt."/v1/chat/completions")......
653c0 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 29 29 0a 20 20 .....(context.t).(sources.t))...
653e0 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 2d 63 6f 6d 70 "Register.an.Privategpt.API-comp
65400 61 74 69 62 6c 65 20 62 61 63 6b 65 6e 64 20 66 6f 72 20 67 70 74 65 6c 20 77 69 74 68 20 4e 41 atible.backend.for.gptel.with.NA
65420 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
65440 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
65460 69 6f 6e 61 6c 20 43 75 72 6c 20 61 72 67 75 6d 65 6e 74 73 2e 0a 0a 48 4f 53 54 20 28 6f 70 74 ional.Curl.arguments...HOST.(opt
65480 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 70 69 2e 70 72 ional).is.the.API.host,.\"api.pr
654a0 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 0a 4d 4f 44 45 ivategpt.com\".by.default...MODE
654c0 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 64 65 6c 20 LS.is.a.list.of.available.model.
654e0 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 20 74 6f 20 74 names...STREAM.is.a.boolean.to.t
65500 6f 67 67 6c 65 20 73 74 72 65 61 6d 69 6e 67 20 72 65 73 70 6f 6e 73 65 73 2c 20 64 65 66 61 75 oggle.streaming.responses,.defau
65520 6c 74 73 20 74 6f 0a 66 61 6c 73 65 2e 0a 0a 50 52 4f 54 4f 43 4f 4c 20 28 6f 70 74 69 6f 6e 61 lts.to.false...PROTOCOL.(optiona
65540 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
65560 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
65580 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
655a0 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 73 73 61 67 65 tions,.defaults.to.\"/v1/message
655c0 73 5c 22 2e 0a 0a 48 45 41 44 45 52 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 66 6f 72 20 61 s\"...HEADER.(optional).is.for.a
655e0 64 64 69 74 69 6f 6e 61 6c 20 68 65 61 64 65 72 73 20 74 6f 20 73 65 6e 64 20 77 69 74 68 20 65 dditional.headers.to.send.with.e
65600 61 63 68 0a 72 65 71 75 65 73 74 2e 20 49 74 20 73 68 6f 75 6c 64 20 62 65 20 61 6e 20 61 6c 69 ach.request..It.should.be.an.ali
65620 73 74 20 6f 72 20 61 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 72 65 74 75 6e 73 20 61 6e 0a st.or.a.function.that.retuns.an.
65640 61 6c 69 73 74 2c 20 6c 69 6b 65 3a 0a 28 28 5c 22 43 6f 6e 74 65 6e 74 2d 54 79 70 65 5c 22 20 alist,.like:.((\"Content-Type\".
65660 2e 20 5c 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 6a 73 6f 6e 5c 22 29 29 0a 0a 4b 45 59 20 69 73 ..\"application/json\"))..KEY.is
65680 20 61 20 76 61 72 69 61 62 6c 65 20 77 68 6f 73 65 20 76 61 6c 75 65 20 69 73 20 74 68 65 20 41 .a.variable.whose.value.is.the.A
656a0 50 49 20 6b 65 79 2c 20 6f 72 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 0a 72 65 74 75 72 6e 73 PI.key,.or.function.that.returns
656c0 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 43 45 53 3a 20 .the.key...CONTEXT.and.SOURCES:.
656e0 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 61 76 61 69 6c if.true.(the.default),.use.avail
65700 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 75 72 63 65 73 able.context.and.provide.sources
65720 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 61 74 65 20 74 .used.by.the.model.to.generate.t
65740 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 53 20 28 6f 70 he.response...REQUEST-PARAMS.(op
65760 74 69 6f 6e 61 6c 29 20 69 73 20 61 20 70 6c 69 73 74 20 6f 66 20 61 64 64 69 74 69 6f 6e 61 6c tional).is.a.plist.of.additional
65780 20 48 54 54 50 20 72 65 71 75 65 73 74 0a 70 61 72 61 6d 65 74 65 72 73 20 28 61 73 20 70 6c 69 .HTTP.request.parameters.(as.pli
657a0 73 74 20 6b 65 79 73 29 20 61 6e 64 20 76 61 6c 75 65 73 20 73 75 70 70 6f 72 74 65 64 20 62 79 st.keys).and.values.supported.by
657c0 20 74 68 65 20 41 50 49 2e 20 20 55 73 65 0a 74 68 65 73 65 20 74 6f 20 73 65 74 20 70 61 72 61 .the.API...Use.these.to.set.para
657e0 6d 65 74 65 72 73 20 74 68 61 74 20 67 70 74 65 6c 20 64 6f 65 73 20 6e 6f 74 20 70 72 6f 76 69 meters.that.gptel.does.not.provi
65800 64 65 20 75 73 65 72 20 6f 70 74 69 6f 6e 73 0a 66 6f 72 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 de.user.options.for."...(declare
65820 20 28 69 6e 64 65 6e 74 20 31 29 29 0a 20 20 28 6c 65 74 20 28 28 62 61 63 6b 65 6e 64 20 28 67 .(indent.1))...(let.((backend.(g
65840 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 20 20 20 20 20 ptel--make-privategpt...........
65860 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....
65880 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.......
658a0 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..........
658c0 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.........
658e0 20 20 20 20 20 20 20 20 20 20 3a 6b 65 79 20 6b 65 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ..........:key.key..............
65900 20 20 20 20 20 3a 6d 6f 64 65 6c 73 20 6d 6f 64 65 6c 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 .....:models.models.............
65920 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 20 20 ......:protocol.protocol........
65940 20 20 20 20 20 20 20 20 20 20 20 3a 65 6e 64 70 6f 69 6e 74 20 65 6e 64 70 6f 69 6e 74 0a 20 20 ...........:endpoint.endpoint...
65960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 73 74 72 65 61 6d 20 73 74 72 65 61 6d 0a 20 ................:stream.stream..
65980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 .................:request-params
659a0 20 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .request-params.................
659c0 20 20 3a 75 72 6c 20 28 69 66 20 70 72 6f 74 6f 63 6f 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 ..:url.(if.protocol.............
659e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 70 72 6f 74 6f 63 6f 6c 20 ...............(concat.protocol.
65a00 22 3a 2f 2f 22 20 68 6f 73 74 20 65 6e 64 70 6f 69 6e 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 "://".host.endpoint)............
65a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 68 6f 73 74 20 65 6e 64 70 6f ..............(concat.host.endpo
65a40 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 6e 74 65 78 74 int))...................:context
65a60 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 3a 73 6f 75 72 .context...................:sour
65a80 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 61 63 6b 65 6e ces.sources))).....(prog1.backen
65aa0 64 0a 20 20 20 20 20 20 28 73 65 74 66 20 28 61 6c 69 73 74 2d 67 65 74 20 6e 61 6d 65 20 67 70 d.......(setf.(alist-get.name.gp
65ac0 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 62 61 63 6b 65 6e 64 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 tel--known-backends.............
65ae0 20 20 20 20 20 20 20 20 20 20 20 6e 69 6c 20 6e 69 6c 20 23 27 65 71 75 61 6c 29 0a 20 20 20 20 ...........nil.nil.#'equal).....
65b00 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 65 72 70 6c 65 ........backend))))...;;;.Perple
65b20 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 65 72 70 6c 65 xity.(cl-defstruct.(gptel-perple
65b40 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 61 6b 65 2d 70 xity.(:constructor.gptel--make-p
65b60 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 29 0a 09 09 09 erplexity).....(:copier.nil)....
65b80 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 0a 28 64 65 66 .(:include.gptel-openai)))..(def
65ba0 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 73 65 2d 63 69 subst.gptel--perplexity-parse-ci
65bc0 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 28 28 63 6f 75 tations.(citations)...(let.((cou
65be0 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 69 74 61 74 69 nter.0)).....(concat."\n\nCitati
65c00 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 63 61 74 20 28 ons:\n".............(mapconcat.(
65c20 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 20 20 20 20 20 lambda.(url)....................
65c40 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 6e 74 65 72 29 ......(setq.counter.(1+.counter)
65c60 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d )..........................(form
65c80 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 20 20 20 20 20 at."[%d].%s".counter.url))......
65ca0 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 20 22 5c 6e 22 ..................citations."\n"
65cc0 29 29 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 2d 70 61 72 73 65 ))))..(cl-defmethod.gptel--parse
65ce0 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 70 65 72 70 6c -response.((_backend.gptel-perpl
65d00 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 61 72 73 65 20 exity).response._info)..."Parse.
65d20 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 45 2e 22 0a 20 Perplexity.response.RESPONSE."..
65d40 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 70 2d 6e 65 73 .(let.((response-string.(map-nes
65d60 74 65 64 2d 65 6c 74 20 72 65 73 70 6f 6e 73 65 20 27 28 3a 63 68 6f 69 63 65 73 20 30 20 3a 6d ted-elt.response.'(:choices.0.:m
65d80 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 28 63 69 74 61 essage.:content))).........(cita
65da0 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 69 74 61 74 69 tions-string.(when-let*.((citati
65dc0 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 74 69 6f 6e 73 ons.(map-elt.response.:citations
65de0 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 74 79 2d 70 61 )))........(gptel--perplexity-pa
65e00 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 0a 20 20 20 20 rse-citations.citations)))).....
65e20 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 61 74 69 6f 6e (concat.response-string.citation
65e40 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 67 70 74 65 6c s-string)))..(cl-defmethod.gptel
65e60 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 65 6e 64 20 67 -curl--parse-stream.((_backend.g
65e80 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 61 72 73 65 20 ptel-perplexity).info)..."Parse.
65ea0 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 6d 20 77 69 74 a.Perplexity.API.data.stream.wit
65ec0 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 65 63 74 20 63 h.INFO...If.available,.collect.c
65ee0 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 6c 75 64 65 20 itations.at.the.end.and.include.
65f00 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 28 6c 65 74 20 them.with.the.response."...(let.
65f20 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 29 29 29 0a 20 ((resp.(cl-call-next-method)))..
65f40 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 63 69 74 61 ...(unless.(plist-get.info.:cita
65f60 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 6e 0a 20 20 20 tions).......(save-excursion....
65f80 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 0a 20 20 20 .....(goto-char.(point-max))....
65fa0 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 20 28 70 6c 69 .....(when.(search-backward.(pli
65fc0 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 20 20 20 20 20 st-get.info.:token).............
65fe0 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 67 69 6e 6e 69 ...................(line-beginni
66000 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 66 6f 72 77 61 ng-position).t)...........(forwa
66020 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 28 72 65 2d 73 rd-line.0)...........(when.(re-s
66040 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 6c 20 74 29 0a earch-backward."^data:.".nil.t).
66060 20 20 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 6d 61 74 63 68 2d 65 6e ............(goto-char.(match-en
66080 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 72 72 6f 72 73 d.0)).............(ignore-errors
660a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 63 68 75 6e ...............(when-let*.((chun
660c0 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 20 20 20 20 20 k.(gptel--json-read))...........
660e0 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 28 6d 61 70 2d ................(citations.(map-
66100 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 20 20 20 20 20 elt.chunk.:citations))).........
66120 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 74 61 74 69 6f ........(plist-put.info.:citatio
66140 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 20 72 65 73 70 ns.t).................(setq.resp
66160 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 65 78 69 74 79 .(concat.resp.(gptel--perplexity
66180 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 20 20 20 20 20 -parse-citations................
661a0 20 20 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 69 74 61 74 69 ..........................citati
661c0 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 3b 23 23 23 61 ons))))))))).....resp))..;;;###a
661e0 75 74 6f 6c 6f 61 64 0a 28 63 6c 2d 64 65 66 75 6e 20 67 70 74 65 6c 2d 6d 61 6b 65 2d 70 65 72 utoload.(cl-defun.gptel-make-per
66200 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 2d 61 72 67 73 plexity.....(name.&key.curl-args
66220 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 65 72 20 0a 20 .stream.key...........(header...
66240 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*.
66260 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)))....
66280 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
662a0 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)))))
662c0 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 65 78 69 74 )...........(host."api.perplexit
662e0 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 68 74 74 70 y.ai")...........(protocol."http
66300 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 73 2e 70 65 s")...........;;.https://docs.pe
66320 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 64 73 0a 20 rplexity.ai/guides/model-cards..
66340 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 61 72 2d 70 .........(models.'(sonar.sonar-p
66360 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 73 6f 6e 69 ro.sonar-reasoning.sonar-reasoni
66380 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 0a 20 20 20 ng-pro.sonar-deep-research))....
663a0 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 6c 65 74 69 .......(endpoint."/chat/completi
663c0 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 6d 73 29 0a ons")...........request-params).
663e0 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 6b 65 6e 64 .."Register.a.Perplexity.backend
66400 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
66420 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).
66440 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
66460 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.
66480 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 69 5c 22 20 API.host,.\"api.perplexity.ai\".
664a0 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 74 20 6f 66 by.default...MODELS.is.a.list.of
664c0 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 45 41 4d 20 .available.model.names...STREAM.
664e0 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
66500 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 6e 61 6c 29 .responses...PROTOCOL.(optional)
66520 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
66540 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).
66560 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
66580 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 20 61 ons...HEADER.(optional).is.for.a
665a0 64 64 69 74 69 6f 6e 61 6c 20 68 65 61 64 65 72 73 20 74 6f 20 73 65 6e 64 20 77 69 74 68 20 65 dditional.headers.to.send.with.e
665c0 61 63 68 0a 72 65 71 75 65 73 74 2e 20 49 74 20 73 68 6f 75 6c 64 20 62 65 20 61 6e 20 61 6c 69 ach.request..It.should.be.an.ali
665e0 73 74 20 6f 72 20 61 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 72 65 74 75 72 6e 73 20 61 6e st.or.a.function.that.returns.an
66600 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 68 6f 73 65 .alist...KEY.is.a.variable.whose
66620 20 76 61 6c 75 65 20 69 73 20 74 68 65 20 41 50 49 20 6b 65 79 2c 20 6f 72 20 66 75 6e 63 74 69 .value.is.the.API.key,.or.functi
66640 6f 6e 20 74 68 61 74 0a 72 65 74 75 72 6e 73 20 74 68 65 20 6b 65 79 2e 0a 0a 52 45 51 55 45 53 on.that.returns.the.key...REQUES
66660 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
66680 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
666a0 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 29 0a 20 20 ters."...(declare.(indent.1))...
666c0 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 70 65 72 70 (let.((backend.(gptel--make-perp
666e0 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 72 6c 2d 61 lexity...................:curl-a
66700 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...................
66720 3a 6e 61 6d 65 20 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 68 6f :name.name...................:ho
66740 73 74 20 68 6f 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 68 65 61 64 65 st.host...................:heade
66760 72 20 68 65 61 64 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6b 65 79 20 r.header...................:key.
66780 6b 65 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6d 6f 64 65 6c 73 20 6d 6f key...................:models.mo
667a0 64 65 6c 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 70 72 6f 74 6f 63 6f 6c dels...................:protocol
667c0 20 70 72 6f 74 6f 63 6f 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 65 6e 64 .protocol...................:end
667e0 70 6f 69 6e 74 20 65 6e 64 70 6f 69 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 point.endpoint..................
66800 20 3a 73 74 72 65 61 6d 20 73 74 72 65 61 6d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .:stream.stream.................
66820 20 20 3a 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 20 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 ..:request-params.request-params
66840 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 75 72 6c 20 28 69 66 20 70 72 6f 74 ...................:url.(if.prot
66860 6f 63 6f 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ocol............................
66880 28 63 6f 6e 63 61 74 20 70 72 6f 74 6f 63 6f 6c 20 22 3a 2f 2f 22 20 68 6f 73 74 20 65 6e 64 70 (concat.protocol."://".host.endp
668a0 6f 69 6e 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 oint)..........................(
668c0 63 6f 6e 63 61 74 20 68 6f 73 74 20 65 6e 64 70 6f 69 6e 74 29 29 29 29 29 0a 20 20 20 20 28 70 concat.host.endpoint))))).....(p
668e0 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-
66900 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..
66920 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.#'
66940 65 71 75 61 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 61 63 6b 65 6e 64 29 29 29 29 0a 0a equal).............backend))))..
66960 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 67 70 74 65 ;;;.Deepseek.(cl-defstruct.(gpte
66980 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 70 65 6e 61 l-deepseek.(:include.gptel-opena
669a0 69 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 i)..............................
669c0 20 28 3a 63 6f 70 69 65 72 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .(:copier.nil)..................
669e0 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 70 74 65 6c .............(:constructor.gptel
66a00 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 65 74 68 6f --make-deepseek)))..(cl-defmetho
66a20 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 62 65 66 6f d.gptel-curl--parse-stream.:befo
66a40 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 29 20 69 6e re.((_backend.gptel-deepseek).in
66a60 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 63 6b 20 73 fo)..."Capture.reasoning.block.s
66a80 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 28 65 71 20 tream.into.INFO."...(unless.(eq.
66aa0 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 63 6b (plist-get.info.:reasoning-block
66ac0 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 0a 20 20 20 ).'done).....(save-excursion....
66ae0 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 61 74 63 68 ...(ignore-errors.........(catch
66b00 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 73 65 61 72 .'done...........(while.(re-sear
66b20 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 20 20 20 20 ch-forward."^data:".nil.t)......
66b40 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 20 22 20 2a .......(unless.(looking-at-p.".*
66b60 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 77 68 65 6e \\[DONE\\]")...............(when
66b80 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 6e 2d 72 65 -let*.((response.(gptel--json-re
66ba0 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 20 20 20 28 ad))...........................(
66bc0 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 73 65 20 27 delta.(map-nested-elt.response.'
66be0 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 20 20 20 20 (:choices.0.:delta))))..........
66c00 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 28 70 6c 69 .......(if-let*.((reasoning.(pli
66c20 73 74 2d 67 65 74 20 64 65 6c 74 61 20 3a 72 65 61 73 6f 6e 69 6e 67 5f 63 6f 6e 74 65 6e 74 29 st-get.delta.:reasoning_content)
66c40 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 6e 6f )...........................((no
66c60 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 20 20 20 20 t.(eq.reasoning.:null)))).......
66c80 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 77 69 6c 6c ..............;;.:reasoning.will
66ca0 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 71 75 65 73 .be.consumed.by.the.gptel-reques
66cc0 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 20 20 20 3b t.callback.....................;
66ce0 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 6c 74 65 72 ;.and.reset.by.the.stream.filter
66d00 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 2d 70 75 74 ......................(plist-put
66d20 20 69 6e 66 6f 20 3a 72 65 61 73 6f 6e 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .info.:reasoning................
66d40 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 73 74 2d 67 ................(concat.(plist-g
66d60 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 67 29 29 0a et.info.:reasoning).reasoning)).
66d80 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 28 63 ..................(when-let*.((c
66da0 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 74 65 6e 74 ontent.(plist-get.delta.:content
66dc0 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 ))..............................
66de0 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 0a 20 20 20 .((not.(eq.content.:null))))....
66e00 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 65 6d 62 .................(if.(plist-memb
66e20 65 72 20 64 65 6c 74 61 20 3a 72 65 61 73 6f 6e 69 6e 67 5f 63 6f 6e 74 65 6e 74 29 20 3b 43 68 er.delta.:reasoning_content).;Ch
66e40 65 63 6b 20 66 6f 72 20 72 65 61 73 6f 6e 69 6e 67 20 6d 6f 64 65 6c 0a 20 20 20 20 20 20 20 20 eck.for.reasoning.model.........
66e60 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.
66e80 3a 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 :reasoning-block.t).;End.of.stre
66ea0 61 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 aming.reasoning.block...........
66ec0 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 61 ............(plist-put.info.:rea
66ee0 73 6f 6e 69 6e 67 2d 62 6c 6f 63 6b 20 27 64 6f 6e 65 29 29 20 3b 4e 6f 74 20 75 73 69 6e 67 20 soning-block.'done)).;Not.using.
66f00 61 20 72 65 61 73 6f 6e 69 6e 67 20 6d 6f 64 65 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 a.reasoning.model...............
66f20 20 20 20 20 20 20 28 74 68 72 6f 77 20 27 64 6f 6e 65 20 74 29 29 29 29 29 29 29 29 29 29 29 0a ......(throw.'done.t))))))))))).
66f40 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 73 70 .(cl-defmethod.gptel--parse-resp
66f60 6f 6e 73 65 20 3a 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 onse.:before.((_backend.gptel-de
66f80 65 70 73 65 65 6b 29 20 72 65 73 70 6f 6e 73 65 20 69 6e 66 6f 29 0a 20 20 22 43 61 70 74 75 72 epseek).response.info)..."Captur
66fa0 65 20 72 65 61 73 6f 6e 69 6e 67 20 62 6c 6f 63 6b 20 69 6e 20 52 45 53 50 4f 4e 53 45 20 69 6e e.reasoning.block.in.RESPONSE.in
66fc0 74 6f 20 49 4e 46 4f 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 63 68 6f 69 63 65 30 20 28 6d 61 70 to.INFO."...(let*.((choice0.(map
66fe0 2d 6e 65 73 74 65 64 2d 65 6c 74 20 72 65 73 70 6f 6e 73 65 20 27 28 3a 63 68 6f 69 63 65 73 20 -nested-elt.response.'(:choices.
67000 30 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 28 70 6c 69 73 74 2d 67 65 0)))..........(message.(plist-ge
67020 74 20 63 68 6f 69 63 65 30 20 3a 6d 65 73 73 61 67 65 29 29 0a 20 20 20 20 20 20 20 20 20 28 72 t.choice0.:message))..........(r
67040 65 61 73 6f 6e 69 6e 67 20 28 70 6c 69 73 74 2d 67 65 74 20 6d 65 73 73 61 67 65 20 3a 72 65 61 easoning.(plist-get.message.:rea
67060 73 6f 6e 69 6e 67 5f 63 6f 6e 74 65 6e 74 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 28 61 6e 64 soning_content))).....(when.(and
67080 20 28 73 74 72 69 6e 67 70 20 72 65 61 73 6f 6e 69 6e 67 29 20 28 6c 65 6e 67 74 68 3e 20 72 65 .(stringp.reasoning).(length>.re
670a0 61 73 6f 6e 69 6e 67 20 30 29 29 0a 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 asoning.0)).......(plist-put.inf
670c0 6f 20 3a 72 65 61 73 6f 6e 69 6e 67 20 72 65 61 73 6f 6e 69 6e 67 29 29 29 29 0a 0a 28 63 6c 2d o.:reasoning.reasoning))))..(cl-
670e0 64 65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 62 75 66 66 65 72 20 3a 61 defmethod.gptel--parse-buffer.:a
67100 72 6f 75 6e 64 20 28 28 5f 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 64 65 65 70 73 65 65 6b 29 round.((_backend.gptel-deepseek)
67120 20 6d 61 78 2d 65 6e 74 72 69 65 73 29 0a 20 20 22 4d 65 72 67 65 20 73 75 63 63 65 73 73 69 76 .max-entries)..."Merge.successiv
67140 65 20 70 72 6f 6d 70 74 73 20 69 6e 20 74 68 65 20 70 72 6f 6d 70 74 73 20 6c 69 73 74 20 74 68 e.prompts.in.the.prompts.list.th
67160 61 74 20 68 61 76 65 20 74 68 65 20 73 61 6d 65 20 72 6f 6c 65 2e 0a 0a 54 68 65 20 44 65 65 70 at.have.the.same.role...The.Deep
67180 73 65 65 6b 20 41 50 49 20 72 65 71 75 69 72 65 73 20 73 74 72 69 63 74 6c 79 20 61 6c 74 65 72 seek.API.requires.strictly.alter
671a0 6e 61 74 69 6e 67 20 72 6f 6c 65 73 20 28 75 73 65 72 2f 61 73 73 69 73 74 61 6e 74 29 20 69 6e nating.roles.(user/assistant).in
671c0 20 6d 65 73 73 61 67 65 73 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 70 72 6f 6d 70 74 73 20 28 63 .messages."...(let*.((prompts.(c
671e0 6c 2d 63 61 6c 6c 2d 6e 65 78 74 2d 6d 65 74 68 6f 64 29 29 0a 20 20 20 20 20 20 20 20 20 28 69 l-call-next-method))..........(i
67200 6e 64 65 78 20 70 72 6f 6d 70 74 73 29 29 0a 20 20 20 20 28 70 72 6f 67 31 20 70 72 6f 6d 70 74 ndex.prompts)).....(prog1.prompt
67220 73 0a 20 20 20 20 20 20 28 77 68 69 6c 65 20 69 6e 64 65 78 0a 20 20 20 20 20 20 20 20 28 6c 65 s.......(while.index.........(le
67240 74 20 28 28 70 31 20 28 63 61 72 20 69 6e 64 65 78 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 t.((p1.(car.index)).............
67260 20 20 28 70 32 20 28 63 61 64 72 20 69 6e 64 65 78 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 ..(p2.(cadr.index)).............
67280 20 20 28 72 65 73 74 20 28 63 64 72 20 69 6e 64 65 78 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 ..(rest.(cdr.index)))...........
672a0 28 77 68 65 6e 20 28 61 6e 64 20 70 32 20 28 65 71 75 61 6c 20 28 70 6c 69 73 74 2d 67 65 74 20 (when.(and.p2.(equal.(plist-get.
672c0 70 31 20 3a 72 6f 6c 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 p1.:role).......................
672e0 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 67 65 74 20 70 32 20 3a 72 6f 6c 65 29 29 29 0a .........(plist-get.p2.:role))).
67300 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 66 20 28 70 6c 69 73 74 2d 67 65 74 20 70 31 20 ............(setf.(plist-get.p1.
67320 3a 63 6f 6e 74 65 6e 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e :content)...................(con
67340 63 61 74 20 28 70 6c 69 73 74 2d 67 65 74 20 70 31 20 3a 63 6f 6e 74 65 6e 74 29 20 22 5c 6e 22 cat.(plist-get.p1.:content)."\n"
67360 0a 20 20 20 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
67380 74 2d 67 65 74 20 70 32 20 3a 63 6f 6e 74 65 6e 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 t-get.p2.:content)))............
673a0 20 28 73 65 74 63 64 72 20 69 6e 64 65 78 20 28 63 64 72 20 72 65 73 74 29 29 29 0a 20 20 20 20 .(setcdr.index.(cdr.rest))).....
673c0 20 20 20 20 20 20 28 73 65 74 71 20 69 6e 64 65 78 20 28 63 64 72 20 69 6e 64 65 78 29 29 29 29 ......(setq.index.(cdr.index))))
673e0 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 20 67 70 )))..;;;###autoload.(cl-defun.gp
67400 74 65 6c 2d 6d 61 6b 65 2d 64 65 65 70 73 65 65 6b 0a 20 20 20 20 28 6e 61 6d 65 20 26 6b 65 79 tel-make-deepseek.....(name.&key
67420 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 73 74 2d 70 61 .curl-args.stream.key.request-pa
67440 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 62 64 61 20 28 rams...........(header.(lambda.(
67460 29 20 28 77 68 65 6e 2d 6c 65 74 20 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
67480 2d 6b 65 79 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -key))..........................
674a0 20 60 28 28 22 41 75 74 68 6f 72 69 7a 61 74 69 6f 6e 22 20 2e 20 2c 28 63 6f 6e 63 61 74 20 22 .`(("Authorization"...,(concat."
674c0 42 65 61 72 65 72 20 22 20 6b 65 79 29 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 68 6f Bearer.".key))))))...........(ho
674e0 73 74 20 22 61 70 69 2e 64 65 65 70 73 65 65 6b 2e 63 6f 6d 22 29 0a 20 20 20 20 20 20 20 20 20 st."api.deepseek.com")..........
67500 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
67520 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").
67540 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 65 6c 73 20 27 28 28 64 65 65 70 73 65 65 6b 2d 72 65 ..........(models.'((deepseek-re
67560 61 73 6f 6e 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 61 70 asoner......................:cap
67580 61 62 69 6c 69 74 69 65 73 20 28 74 6f 6f 6c 20 72 65 61 73 6f 6e 69 6e 67 29 0a 20 20 20 20 20 abilities.(tool.reasoning)......
675a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 ................:context-window.
675c0 36 34 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 64......................:input-c
675e0 6f 73 74 20 30 2e 35 35 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6f ost.0.55......................:o
67600 75 74 70 75 74 2d 63 6f 73 74 20 32 2e 31 39 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 utput-cost.2.19)................
67620 20 20 20 20 20 28 64 65 65 70 73 65 65 6b 2d 63 68 61 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 .....(deepseek-chat.............
67640 20 20 20 20 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 74 6f 6f 6c 29 0a 20 20 .........:capabilities.(tool)...
67660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 ...................:context-wind
67680 6f 77 20 36 34 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 69 6e 70 75 ow.64......................:inpu
676a0 74 2d 63 6f 73 74 20 30 2e 32 37 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 t-cost.0.27.....................
676c0 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 31 2e 31 30 29 29 29 29 0a 20 20 22 52 65 67 69 73 74 .:output-cost.1.10))))..."Regist
676e0 65 72 20 61 20 44 65 65 70 53 65 65 6b 20 62 61 63 6b 65 6e 64 20 66 6f 72 20 67 70 74 65 6c 20 er.a.DeepSeek.backend.for.gptel.
67700 77 69 74 68 20 4e 41 4d 45 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 69 6e 64 65 6e 74 20 31 with.NAME."...(declare.(indent.1
67720 29 29 0a 20 20 28 6c 65 74 20 28 28 62 61 63 6b 65 6e 64 20 28 67 70 74 65 6c 2d 2d 6d 61 6b 65 ))...(let.((backend.(gptel--make
67740 2d 64 65 65 70 73 65 65 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6e 61 6d -deepseek...................:nam
67760 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
67780 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
677a0 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.
677c0 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
677e0 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)........
67800 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...
67820 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
67840 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
67860 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
67880 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............
678a0 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 20 .......:curl-args.curl-args.....
678c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 75 72 6c 20 28 63 6f 6e 63 61 74 20 70 72 6f 74 6f ..............:url.(concat.proto
678e0 63 6f 6c 20 22 3a 2f 2f 22 20 68 6f 73 74 20 65 6e 64 70 6f 69 6e 74 29 29 29 29 0a 20 20 20 20 col."://".host.endpoint)))).....
67900 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 6f (setf.(alist-get.name.gptel--kno
67920 77 6e 2d 62 61 63 6b 65 6e 64 73 20 6e 69 6c 20 6e 69 6c 20 23 27 65 71 75 61 6c 29 20 62 61 63 wn-backends.nil.nil.#'equal).bac
67940 6b 65 6e 64 29 0a 20 20 20 20 62 61 63 6b 65 6e 64 29 29 0a 0a 28 70 72 6f 76 69 64 65 20 27 67 kend).....backend))..(provide.'g
67960 70 74 65 6c 2d 6f 70 65 6e 61 69 2d 65 78 74 72 61 73 29 0a 3b 3b 3b 20 67 70 74 65 6c 2d 6f 70 ptel-openai-extras).;;;.gptel-op
67980 65 6e 61 69 2d 65 78 74 72 61 73 2e 65 6c 20 65 6e 64 73 20 68 65 72 65 0a 00 00 00 00 00 00 00 enai-extras.el.ends.here........
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 67 70 74 65 6c 2d 30 2e 39 2e 38 2f 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2e 65 6c 00 00 00 00 gptel-0.9.8/gptel-context.el....
67a20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
67a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
67a60 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
67a80 30 30 36 33 33 37 31 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 34 34 33 33 00 20 30 00 00 00 0063371.00000000000.014433..0...
67aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
67ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
67ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
67b00 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...................
67b20 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...................
67b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
67b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
67b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
67ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
67bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
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 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
67c20 20 61 67 67 72 65 67 61 74 6f 72 20 66 6f 72 20 47 50 54 65 6c 20 20 2d 2a 2d 20 6c 65 78 69 63 .aggregator.for.GPTel..-*-.lexic
67c40 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
67c60 20 28 43 29 20 32 30 32 33 20 20 4b 61 72 74 68 69 6b 20 43 68 69 6b 6d 61 67 61 6c 75 72 0a 0a .(C).2023..Karthik.Chikmagalur..
67c80 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 63 74 40 64 61 ;;.Author:.daedsidog.<contact@da
67ca0 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 6f 6e 76 65 6e edsidog.com>.;;.Keywords:.conven
67cc0 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 65 6e 73 65 2d ience,.buffers..;;.SPDX-License-
67ce0 49 64 65 6e 74 69 66 69 65 72 3a 20 47 50 4c 2d 33 2e 30 2d 6f 72 2d 6c 61 74 65 72 0a 0a 3b 3b Identifier:.GPL-3.0-or-later..;;
67d00 20 54 68 69 73 20 70 72 6f 67 72 61 6d 20 69 73 20 66 72 65 65 20 73 6f 66 74 77 61 72 65 3b 20 .This.program.is.free.software;.
67d20 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
67d40 6f 64 69 66 79 0a 3b 3b 20 69 74 20 75 6e 64 65 72 20 74 68 65 20 74 65 72 6d 73 20 6f 66 20 74 odify.;;.it.under.the.terms.of.t
67d60 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 73 he.GNU.General.Public.License.as
67d80 20 70 75 62 6c 69 73 68 65 64 20 62 79 0a 3b 3b 20 74 68 65 20 46 72 65 65 20 53 6f 66 74 77 61 .published.by.;;.the.Free.Softwa
67da0 72 65 20 46 6f 75 6e 64 61 74 69 6f 6e 2c 20 65 69 74 68 65 72 20 76 65 72 73 69 6f 6e 20 33 20 re.Foundation,.either.version.3.
67dc0 6f 66 20 74 68 65 20 4c 69 63 65 6e 73 65 2c 20 6f 72 0a 3b 3b 20 28 61 74 20 79 6f 75 72 20 6f of.the.License,.or.;;.(at.your.o
67de0 70 74 69 6f 6e 29 20 61 6e 79 20 6c 61 74 65 72 20 76 65 72 73 69 6f 6e 2e 0a 0a 3b 3b 20 54 68 ption).any.later.version...;;.Th
67e00 69 73 20 70 72 6f 67 72 61 6d 20 69 73 20 64 69 73 74 72 69 62 75 74 65 64 20 69 6e 20 74 68 65 is.program.is.distributed.in.the
67e20 20 68 6f 70 65 20 74 68 61 74 20 69 74 20 77 69 6c 6c 20 62 65 20 75 73 65 66 75 6c 2c 0a 3b 3b .hope.that.it.will.be.useful,.;;
67e40 20 62 75 74 20 57 49 54 48 4f 55 54 20 41 4e 59 20 57 41 52 52 41 4e 54 59 3b 20 77 69 74 68 6f .but.WITHOUT.ANY.WARRANTY;.witho
67e60 75 74 20 65 76 65 6e 20 74 68 65 20 69 6d 70 6c 69 65 64 20 77 61 72 72 61 6e 74 79 20 6f 66 0a ut.even.the.implied.warranty.of.
67e80 3b 3b 20 4d 45 52 43 48 41 4e 54 41 42 49 4c 49 54 59 20 6f 72 20 46 49 54 4e 45 53 53 20 46 4f ;;.MERCHANTABILITY.or.FITNESS.FO
67ea0 52 20 41 20 50 41 52 54 49 43 55 4c 41 52 20 50 55 52 50 4f 53 45 2e 20 20 53 65 65 20 74 68 65 R.A.PARTICULAR.PURPOSE...See.the
67ec0 0a 3b 3b 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 66 .;;.GNU.General.Public.License.f
67ee0 6f 72 20 6d 6f 72 65 20 64 65 74 61 69 6c 73 2e 0a 0a 3b 3b 20 59 6f 75 20 73 68 6f 75 6c 64 20 or.more.details...;;.You.should.
67f00 68 61 76 65 20 72 65 63 65 69 76 65 64 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20 47 4e 55 20 have.received.a.copy.of.the.GNU.
67f20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 0a 3b 3b 20 61 6c 6f 6e 67 20 General.Public.License.;;.along.
67f40 77 69 74 68 20 74 68 69 73 20 70 72 6f 67 72 61 6d 2e 20 20 49 66 20 6e 6f 74 2c 20 73 65 65 20 with.this.program...If.not,.see.
67f60 3c 68 74 74 70 73 3a 2f 2f 77 77 77 2e 67 6e 75 2e 6f 72 67 2f 6c 69 63 65 6e 73 65 73 2f 3e 2e <https://www.gnu.org/licenses/>.
67f80 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 6f 6e 74 65 78 ..;;;.Commentary:..;;.The.contex
67fa0 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 79 20 63 72 65 t.allows.you.to.conveniently.cre
67fc0 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 65 64 0a 3b 3b ate.contexts.which.can.be.fed.;;
67fe0 20 74 6f 20 47 50 54 65 6c 2e 0a 0a 3b 3b 3b 20 43 6f 64 65 3a 0a 0a 3b 3b 3b 20 2d 2a 2d 20 6c .to.GPTel...;;;.Code:..;;;.-*-.l
68000 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 69 72 65 20 27 exical-binding:.t.-*-.(require.'
68020 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 64 65 63 6c 61 gptel).(require.'cl-lib)..(decla
68040 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 65 6c 2d 74 72 re-function.gptel-menu."gptel-tr
68060 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 64 69 72 65 ansient").(declare-function.dire
68080 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 0a 28 64 65 63 d-get-marked-files."dired").(dec
680a0 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 6d 65 2d 72 65 lare-function.image-file-name-re
680c0 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 2d 66 75 6e 63 gexp."image-file").(declare-func
680e0 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 0a 28 64 65 66 tion.create-image."image")..(def
68100 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 74 2d 66 61 63 face.gptel-context-highlight-fac
68120 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 28 6d 69 6e 2d e...'((((background.dark)..(min-
68140 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 61 79 34 22 20 colors.88)).:background."gray4".
68160 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 64 20 6c 69 67 :extend.t).....(((background.lig
68180 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 72 6f 75 6e 64 ht).(min-colors.88)).:background
681a0 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 20 20 28 74 20 ."alice.blue".:extend.t).....(t.
681c0 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 65 20 75 73 65 :inherit.mode-line))..."Face.use
681e0 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 74 73 20 69 6e d.to.highlight.gptel.contexts.in
68200 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 0a 0a 28 64 65 .buffers."...:group.'gptel)..(de
68220 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 6e 2d 66 61 63 fface.gptel-context-deletion-fac
68240 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 63 6f 6c 6f 72 e...'((((class.color).(min-color
68260 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 20 20 20 20 20 s.257).(background.light))......
68280 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 6e 64 20 74 29 :background."#ffeeee".:extend.t)
682a0 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 6f 72 73 .....(((class.color).(min-colors
682c0 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 20 20 20 3a 62 .88).(background.light))......:b
682e0 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 20 74 29 0a 20 ackground."#ffdddd".:extend.t)..
68300 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 6f 72 73 20 38 ...(((class.color).(min-colors.8
68320 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 3a 62 61 63 6b 8).(background.dark))......:back
68340 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 0a 20 20 20 20 ground."#553333".:extend.t).....
68360 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 64 20 22 72 65 (((class.color)).:foreground."re
68380 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 20 74 6f 20 68 d".:extend.t))..."Face.used.to.h
683a0 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 62 65 20 64 65 ighlight.gptel.contexts.to.be.de
683c0 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 65 6c 20 63 6f leted...This.is.used.in.gptel.co
683e0 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 70 74 65 6c 29 ntext.buffers."...:group.'gptel)
68400 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 77 72 61 70 2d ..(defcustom.gptel-context-wrap-
68420 66 75 6e 63 74 69 6f 6e 20 23 27 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 77 72 61 70 2d 64 function.#'gptel-context--wrap-d
68440 65 66 61 75 6c 74 0a 20 20 22 46 75 6e 63 74 69 6f 6e 20 74 6f 20 66 6f 72 6d 61 74 20 74 68 65 efault..."Function.to.format.the
68460 20 63 6f 6e 74 65 78 74 20 73 74 72 69 6e 67 20 73 65 6e 74 20 77 69 74 68 20 74 68 65 20 67 70 .context.string.sent.with.the.gp
68480 74 65 6c 20 72 65 71 75 65 73 74 2e 0a 0a 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 72 65 63 65 tel.request...This.function.rece
684a0 69 76 65 73 20 74 77 6f 20 61 72 67 75 6d 65 6e 74 2c 20 74 68 65 20 6d 65 73 73 61 67 65 20 74 ives.two.argument,.the.message.t
684c0 6f 20 77 72 61 70 20 77 69 74 68 20 74 68 65 0a 63 6f 6e 74 65 78 74 2c 20 61 6e 64 20 61 6e 20 o.wrap.with.the.context,.and.an.
684e0 61 6c 69 73 74 20 6f 66 20 63 6f 6e 74 65 78 74 73 20 6f 72 67 61 6e 69 7a 65 64 20 62 79 20 62 alist.of.contexts.organized.by.b
68500 75 66 66 65 72 2e 20 20 49 74 20 73 68 6f 75 6c 64 0a 72 65 74 75 72 6e 20 61 20 73 74 72 69 6e uffer...It.should.return.a.strin
68520 67 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 6d 65 73 73 61 67 65 20 61 6e 64 20 74 68 65 g.containing.the.message.and.the
68540 20 63 6f 6e 74 65 78 74 2c 20 66 6f 72 6d 61 74 74 65 64 20 61 73 0a 6e 65 63 65 73 73 61 72 79 .context,.formatted.as.necessary
68560 2e 0a 0a 54 68 65 20 6d 65 73 73 61 67 65 20 69 73 20 65 69 74 68 65 72 20 74 68 65 20 73 79 73 ...The.message.is.either.the.sys
68580 74 65 6d 20 6d 65 73 73 61 67 65 20 6f 72 20 74 68 65 20 6c 61 73 74 20 75 73 65 72 20 70 72 6f tem.message.or.the.last.user.pro
685a0 6d 70 74 2c 0a 61 73 20 63 6f 6e 66 69 67 75 72 65 64 20 62 79 20 60 67 70 74 65 6c 2d 75 73 65 mpt,.as.configured.by.`gptel-use
685c0 2d 63 6f 6e 74 65 78 74 27 2e 0a 0a 54 68 65 20 61 6c 69 73 74 20 6f 66 20 63 6f 6e 74 65 78 74 -context'...The.alist.of.context
685e0 73 20 69 73 20 73 74 72 75 63 74 75 72 65 64 20 61 73 20 66 6f 6c 6c 6f 77 73 3a 0a 0a 20 28 28 s.is.structured.as.follows:...((
68600 62 75 66 66 65 72 31 20 2e 20 28 6f 76 65 72 6c 61 79 31 20 6f 76 65 72 6c 61 79 32 29 0a 20 20 buffer1...(overlay1.overlay2)...
68620 28 5c 22 70 61 74 68 2f 74 6f 2f 66 69 6c 65 5c 22 29 0a 20 20 28 62 75 66 66 65 72 32 20 2e 20 (\"path/to/file\")...(buffer2...
68640 28 6f 76 65 72 6c 61 79 33 20 6f 76 65 72 6c 61 79 34 20 6f 76 65 72 6c 61 79 35 29 29 0a 20 20 (overlay3.overlay4.overlay5))...
68660 28 5c 22 70 61 74 68 2f 74 6f 2f 69 6d 61 67 65 2f 66 69 6c 65 5c 22 20 3a 6d 69 6d 65 20 5c 22 (\"path/to/image/file\".:mime.\"
68680 69 6d 61 67 65 2f 6a 70 65 67 5c 22 29 29 29 0a 0a 45 61 63 68 20 67 70 74 65 6c 20 5c 22 63 6f image/jpeg\")))..Each.gptel.\"co
686a0 6e 74 65 78 74 5c 22 20 69 73 20 65 69 74 68 65 72 20 61 20 66 69 6c 65 20 70 61 74 68 20 6f 72 ntext\".is.either.a.file.path.or
686c0 20 61 6e 20 6f 76 65 72 6c 61 79 20 69 6e 20 61 0a 62 75 66 66 65 72 2e 20 20 45 61 63 68 20 6f .an.overlay.in.a.buffer...Each.o
686e0 76 65 72 6c 61 79 20 63 6f 76 65 72 73 20 61 20 62 75 66 66 65 72 20 72 65 67 69 6f 6e 20 63 6f verlay.covers.a.buffer.region.co
68700 6e 74 61 69 6e 69 6e 67 20 74 68 65 0a 63 6f 6e 74 65 78 74 20 63 68 75 6e 6b 2e 20 20 54 68 69 ntaining.the.context.chunk...Thi
68720 73 20 69 73 20 61 63 63 65 73 73 69 62 6c 65 20 61 73 2c 20 66 6f 72 20 65 78 61 6d 70 6c 65 3a s.is.accessible.as,.for.example:
68740 0a 0a 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 31 0a ...(with-current-buffer.buffer1.
68760 20 20 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 20 28 6f 76 65 72 6c 61 79 2d 73 74 ...(buffer-substring.(overlay-st
68780 61 72 74 20 6f 76 65 72 6c 61 79 31 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 art.overlay1)...................
687a0 20 20 20 28 6f 76 65 72 6c 61 79 2d 65 6e 64 20 20 20 6f 76 65 72 6c 61 79 31 29 29 29 22 0a 20 ...(overlay-end...overlay1)))"..
687c0 20 3a 67 72 6f 75 70 20 27 67 70 74 65 6c 0a 20 20 3a 74 79 70 65 20 27 66 75 6e 63 74 69 6f 6e .:group.'gptel...:type.'function
687e0 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 61 64 64 20 28 26 6f 70 )..(defun.gptel-context-add.(&op
68800 74 69 6f 6e 61 6c 20 61 72 67 20 63 6f 6e 66 69 72 6d 29 0a 20 20 22 41 64 64 20 63 6f 6e 74 65 tional.arg.confirm)..."Add.conte
68820 78 74 20 74 6f 20 67 70 74 65 6c 20 69 6e 20 61 20 44 57 49 4d 20 66 61 73 68 69 6f 6e 2e 0a 0a xt.to.gptel.in.a.DWIM.fashion...
68840 2d 20 49 66 20 61 20 72 65 67 69 6f 6e 20 69 73 20 73 65 6c 65 63 74 65 64 2c 20 61 64 64 20 74 -.If.a.region.is.selected,.add.t
68860 68 65 20 73 65 6c 65 63 74 65 64 20 72 65 67 69 6f 6e 20 74 6f 20 74 68 65 0a 20 20 63 6f 6e 74 he.selected.region.to.the...cont
68880 65 78 74 2e 20 20 49 66 20 74 68 65 72 65 20 69 73 20 61 6c 72 65 61 64 79 20 61 20 67 70 74 65 ext...If.there.is.already.a.gpte
688a0 6c 20 63 6f 6e 74 65 78 74 20 61 74 20 70 6f 69 6e 74 2c 20 72 65 6d 6f 76 65 20 69 74 0a 20 20 l.context.at.point,.remove.it...
688c0 69 6e 73 74 65 61 64 2e 0a 0a 2d 20 49 66 20 69 6e 20 44 69 72 65 64 2c 20 61 64 64 20 6d 61 72 instead...-.If.in.Dired,.add.mar
688e0 6b 65 64 20 66 69 6c 65 73 20 6f 72 20 66 69 6c 65 20 61 74 20 70 6f 69 6e 74 20 74 6f 20 74 68 ked.files.or.file.at.point.to.th
68900 65 20 63 6f 6e 74 65 78 74 2e 20 49 66 0a 20 20 74 68 65 20 73 65 6c 65 63 74 69 6f 6e 20 69 6e e.context..If...the.selection.in
68920 63 6c 75 64 65 73 20 64 69 72 65 63 74 6f 72 69 65 73 2c 20 61 64 64 20 61 6c 6c 20 74 68 65 69 cludes.directories,.add.all.thei
68940 72 20 66 69 6c 65 73 20 72 65 63 75 72 73 69 76 65 6c 79 2c 0a 20 20 70 72 6f 6d 70 74 69 6e 67 r.files.recursively,...prompting
68960 20 74 68 65 20 75 73 65 72 20 66 6f 72 20 63 6f 6e 66 69 72 6d 61 74 69 6f 6e 20 69 66 20 63 61 .the.user.for.confirmation.if.ca
68980 6c 6c 65 64 20 69 6e 74 65 72 61 63 74 69 76 65 6c 79 20 6f 72 0a 20 20 43 4f 4e 46 49 52 4d 20 lled.interactively.or...CONFIRM.
689a0 69 73 20 6e 6f 6e 2d 6e 69 6c 2e 20 57 69 74 68 20 6e 65 67 61 74 69 76 65 20 70 72 65 66 69 78 is.non-nil..With.negative.prefix
689c0 20 41 52 47 2c 20 72 65 6d 6f 76 65 20 61 6c 6c 20 66 69 6c 65 73 20 66 72 6f 6d 0a 20 20 74 68 .ARG,.remove.all.files.from...th
689e0 65 20 63 6f 6e 74 65 78 74 20 69 6e 73 74 65 61 64 2e 0a 0a 2d 20 4f 74 68 65 72 77 69 73 65 20 e.context.instead...-.Otherwise.
68a00 61 64 64 20 74 68 65 20 63 75 72 72 65 6e 74 20 62 75 66 66 65 72 20 74 6f 20 74 68 65 20 63 6f add.the.current.buffer.to.the.co
68a20 6e 74 65 78 74 2e 20 20 57 69 74 68 20 70 6f 73 69 74 69 76 65 0a 20 20 70 72 65 66 69 78 20 41 ntext...With.positive...prefix.A
68a40 52 47 2c 20 70 72 6f 6d 70 74 20 66 6f 72 20 61 20 62 75 66 66 65 72 20 6e 61 6d 65 20 61 6e 64 RG,.prompt.for.a.buffer.name.and
68a60 20 61 64 64 20 69 74 20 74 6f 20 74 68 65 20 63 6f 6e 74 65 78 74 2e 0a 0a 2d 20 57 69 74 68 20 .add.it.to.the.context...-.With.
68a80 6e 65 67 61 74 69 76 65 20 70 72 65 66 69 78 20 41 52 47 2c 20 72 65 6d 6f 76 65 20 61 6c 6c 20 negative.prefix.ARG,.remove.all.
68aa0 67 70 74 65 6c 20 63 6f 6e 74 65 78 74 73 20 66 72 6f 6d 20 74 68 65 20 63 75 72 72 65 6e 74 0a gptel.contexts.from.the.current.
68ac0 20 20 62 75 66 66 65 72 2c 20 70 72 6f 6d 70 74 69 6e 67 20 74 68 65 20 75 73 65 72 20 66 6f 72 ..buffer,.prompting.the.user.for
68ae0 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 65 72 61 63 74 .confirmation.if.called.interact
68b00 69 76 65 6c 79 0a 20 20 6f 72 20 43 4f 4e 46 49 52 4d 20 69 73 20 6e 6f 6e 2d 6e 69 6c 2e 22 0a ively...or.CONFIRM.is.non-nil.".
68b20 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 20 22 50 5c 6e 70 22 29 0a 20 20 28 63 6f 6e 64 0a 20 ..(interactive."P\np")...(cond..
68b40 20 20 3b 3b 20 41 20 72 65 67 69 6f 6e 20 69 73 20 73 65 6c 65 63 74 65 64 2e 0a 20 20 20 28 28 ..;;.A.region.is.selected.....((
68b60 75 73 65 2d 72 65 67 69 6f 6e 2d 70 29 0a 20 20 20 20 28 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 use-region-p).....(gptel-context
68b80 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 0a 20 20 --add-region.(current-buffer)...
68ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
68bc0 28 72 65 67 69 6f 6e 2d 62 65 67 69 6e 6e 69 6e 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 (region-beginning)..............
68be0 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 65 6e 64 .....................(region-end
68c00 29 29 0a 20 20 20 20 28 64 65 61 63 74 69 76 61 74 65 2d 6d 61 72 6b 29 0a 20 20 20 20 28 6d 65 )).....(deactivate-mark).....(me
68c20 73 73 61 67 65 20 22 43 75 72 72 65 6e 74 20 72 65 67 69 6f 6e 20 61 64 64 65 64 20 61 73 20 63 ssage."Current.region.added.as.c
68c40 6f 6e 74 65 78 74 2e 22 29 29 0a 20 20 20 3b 3b 20 49 66 20 69 6e 20 64 69 72 65 64 0a 20 20 20 ontext."))....;;.If.in.dired....
68c60 28 28 64 65 72 69 76 65 64 2d 6d 6f 64 65 2d 70 20 27 64 69 72 65 64 2d 6d 6f 64 65 29 0a 20 20 ((derived-mode-p.'dired-mode)...
68c80 20 20 28 6c 65 74 2a 20 28 28 66 69 6c 65 73 20 28 64 69 72 65 64 2d 67 65 74 2d 6d 61 72 6b 65 ..(let*.((files.(dired-get-marke
68ca0 64 2d 66 69 6c 65 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 64 69 72 73 20 28 63 6c 2d 72 d-files))............(dirs.(cl-r
68cc0 65 6d 6f 76 65 2d 69 66 2d 6e 6f 74 20 23 27 66 69 6c 65 2d 64 69 72 65 63 74 6f 72 79 2d 70 20 emove-if-not.#'file-directory-p.
68ce0 66 69 6c 65 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 72 65 6d 6f 76 65 2d 70 20 28 3c 20 files))............(remove-p.(<.
68d00 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 09 (prefix-numeric-value.arg).0))..
68d20 20 20 20 28 61 63 74 69 6f 6e 2d 66 6e 20 28 69 66 20 72 65 6d 6f 76 65 2d 70 0a 09 09 09 20 20 ...(action-fn.(if.remove-p......
68d40 23 27 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 72 65 6d 6f 76 65 0a 09 09 09 23 27 67 70 74 65 #'gptel-context-remove....#'gpte
68d60 6c 2d 63 6f 6e 74 65 78 74 2d 61 64 64 2d 66 69 6c 65 29 29 29 0a 20 20 20 20 20 20 28 77 68 65 l-context-add-file))).......(whe
68d80 6e 20 28 6f 72 20 72 65 6d 6f 76 65 2d 70 20 28 6e 75 6c 6c 20 64 69 72 73 29 20 28 6e 75 6c 6c n.(or.remove-p.(null.dirs).(null
68da0 20 63 6f 6e 66 69 72 6d 29 0a 09 09 28 79 2d 6f 72 2d 6e 2d 70 20 28 66 6f 72 6d 61 74 20 22 52 .confirm)...(y-or-n-p.(format."R
68dc0 65 63 75 72 73 69 76 65 6c 79 20 61 64 64 20 66 69 6c 65 73 20 66 72 6f 6d 20 25 64 20 64 69 72 ecursively.add.files.from.%d.dir
68de0 65 63 74 6f 72 25 73 3f 20 22 0a 09 09 09 09 20 20 28 6c 65 6e 67 74 68 20 64 69 72 73 29 0a 09 ector%s?.".......(length.dirs)..
68e00 09 09 09 20 20 28 69 66 20 28 3d 20 28 6c 65 6e 67 74 68 20 64 69 72 73 29 20 31 29 20 22 79 22 .....(if.(=.(length.dirs).1)."y"
68e20 20 22 69 65 73 22 29 29 29 29 0a 09 28 6d 61 70 63 20 61 63 74 69 6f 6e 2d 66 6e 20 66 69 6c 65 ."ies"))))..(mapc.action-fn.file
68e40 73 29 29 29 29 0a 20 20 20 3b 3b 20 49 66 20 69 6e 20 61 6e 20 69 6d 61 67 65 20 62 75 66 66 65 s))))....;;.If.in.an.image.buffe
68e60 72 0a 20 20 20 28 28 61 6e 64 20 28 64 65 72 69 76 65 64 2d 6d 6f 64 65 2d 70 20 27 69 6d 61 67 r....((and.(derived-mode-p.'imag
68e80 65 2d 6d 6f 64 65 29 0a 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 63 e-mode)..........(gptel--model-c
68ea0 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 28 62 75 66 66 65 apable-p.'media)..........(buffe
68ec0 72 2d 66 69 6c 65 2d 6e 61 6d 65 29 29 0a 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 28 69 66 20 28 r-file-name)).....(funcall.(if.(
68ee0 61 6e 64 20 61 72 67 20 28 3c 20 28 70 72 65 66 69 78 2d 6e 75 6d 65 72 69 63 2d 76 61 6c 75 65 and.arg.(<.(prefix-numeric-value
68f00 20 61 72 67 29 20 30 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 27 67 70 74 65 6c 2d .arg).0))...............#'gptel-
68f20 63 6f 6e 74 65 78 74 2d 72 65 6d 6f 76 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 27 67 context-remove...............#'g
68f40 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 61 64 64 2d 66 69 6c 65 29 0a 20 20 20 20 20 20 20 20 20 ptel-context-add-file)..........
68f60 20 28 62 75 66 66 65 72 2d 66 69 6c 65 2d 6e 61 6d 65 29 29 29 0a 20 20 20 3b 3b 20 4e 6f 20 72 .(buffer-file-name)))....;;.No.r
68f80 65 67 69 6f 6e 20 69 73 20 73 65 6c 65 63 74 65 64 2c 20 61 6e 64 20 41 52 47 20 69 73 20 70 6f egion.is.selected,.and.ARG.is.po
68fa0 73 69 74 69 76 65 2e 0a 20 20 20 28 28 61 6e 64 20 61 72 67 20 28 3e 20 28 70 72 65 66 69 78 2d sitive.....((and.arg.(>.(prefix-
68fc0 6e 75 6d 65 72 69 63 2d 76 61 6c 75 65 20 61 72 67 29 20 30 29 29 0a 20 20 20 20 28 6c 65 74 2a numeric-value.arg).0)).....(let*
68fe0 20 28 28 62 75 66 66 65 72 2d 6e 61 6d 65 20 28 72 65 61 64 2d 62 75 66 66 65 72 20 22 43 68 6f .((buffer-name.(read-buffer."Cho
69000 6f 73 65 20 62 75 66 66 65 72 20 74 6f 20 61 64 64 20 61 73 20 63 6f 6e 74 65 78 74 3a 20 22 0a ose.buffer.to.add.as.context:.".
69020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
69040 20 20 20 20 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 20 74 29 29 0a 20 20 20 20 20 20 .....(current-buffer).t)).......
69060 20 20 20 20 20 28 73 74 61 72 74 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 .....(start.(with-current-buffer
69080 20 62 75 66 66 65 72 2d 6e 61 6d 65 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 29 0a 20 20 20 20 20 .buffer-name.(point-min)))......
690a0 20 20 20 20 20 20 28 65 6e 64 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 ......(end.(with-current-buffer.
690c0 62 75 66 66 65 72 2d 6e 61 6d 65 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 29 29 0a 20 20 20 20 20 buffer-name.(point-max))))......
690e0 20 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 0a 20 20 20 20 .(gptel-context--add-region.....
69100 20 20 20 28 67 65 74 2d 62 75 66 66 65 72 20 62 75 66 66 65 72 2d 6e 61 6d 65 29 20 73 74 61 72 ...(get-buffer.buffer-name).star
69120 74 20 65 6e 64 20 74 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 t.end.t).......(message."Buffer.
69140 27 25 73 27 20 61 64 64 65 64 20 61 73 20 63 6f 6e 74 65 78 74 2e 22 20 62 75 66 66 65 72 2d 6e '%s'.added.as.context.".buffer-n
69160 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 20 73 65 6c 65 63 74 ame)))....;;.No.region.is.select
69180 65 64 2c 20 61 6e 64 20 41 52 47 20 69 73 20 6e 65 67 61 74 69 76 65 2e 0a 20 20 20 28 28 61 6e ed,.and.ARG.is.negative.....((an
691a0 64 20 61 72 67 20 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 d.arg.(<.(prefix-numeric-value.a
691c0 72 67 29 20 30 29 29 0a 20 20 20 20 28 77 68 65 6e 20 28 6f 72 20 28 6e 75 6c 6c 20 63 6f 6e 66 rg).0)).....(when.(or.(null.conf
691e0 69 72 6d 29 0a 09 20 20 20 20 20 20 28 79 2d 6f 72 2d 6e 2d 70 20 22 52 65 6d 6f 76 65 20 61 6c irm)........(y-or-n-p."Remove.al
69200 6c 20 63 6f 6e 74 65 78 74 73 20 66 72 6f 6d 20 74 68 69 73 20 62 75 66 66 65 72 3f 20 22 29 29 l.contexts.from.this.buffer?."))
69220 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 72 65 6d 6f 76 65 64 2d 63 6f 6e 74 65 78 74 73 20 30 .......(let.((removed-contexts.0
69240 29 29 0a 20 20 20 20 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 63 6f 76 20 69 6e 0a 20 )).........(cl-loop.for.cov.in..
69260 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 74 2d 2d ................(gptel-context--
69280 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 20 28 70 6f 69 6e in-region.(current-buffer).(poin
692a0 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 20 20 20 20 20 20 20 t-min).(point-max)).............
692c0 20 20 20 20 20 64 6f 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 .....do.(progn..................
692e0 20 20 20 20 20 28 63 6c 2d 69 6e 63 66 20 72 65 6d 6f 76 65 64 2d 63 6f 6e 74 65 78 74 73 29 0a .....(cl-incf.removed-contexts).
69300 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 63 6f 6e ......................(gptel-con
69320 74 65 78 74 2d 72 65 6d 6f 76 65 20 63 6f 76 29 29 29 0a 20 20 20 20 20 20 20 20 28 6d 65 73 73 text-remove.cov))).........(mess
69340 61 67 65 20 28 66 6f 72 6d 61 74 20 22 25 64 20 63 6f 6e 74 65 78 74 25 73 20 72 65 6d 6f 76 65 age.(format."%d.context%s.remove
69360 64 20 66 72 6f 6d 20 63 75 72 72 65 6e 74 20 62 75 66 66 65 72 2e 22 0a 20 20 20 20 20 20 20 20 d.from.current.buffer.".........
69380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 6d 6f 76 65 64 2d 63 6f 6e 74 65 78 74 .................removed-context
693a0 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 69 66 20 28 s..........................(if.(
693c0 3d 20 72 65 6d 6f 76 65 64 2d 63 6f 6e 74 65 78 74 73 20 31 29 20 22 22 20 22 73 22 29 29 29 29 =.removed-contexts.1).""."s"))))
693e0 29 29 0a 20 20 20 28 74 20 3b 20 44 65 66 61 75 6c 74 20 62 65 68 61 76 69 6f 72 0a 20 20 20 20 ))....(t.;.Default.behavior.....
69400 28 69 66 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 0a 20 20 (if.(gptel-context--at-point)...
69420 20 20 20 20 20 20 28 70 72 6f 67 6e 0a 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 63 6f ......(progn...........(gptel-co
69440 6e 74 65 78 74 2d 72 65 6d 6f 76 65 20 28 63 61 72 20 28 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 ntext-remove.(car.(gptel-context
69460 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 20 20 20 --in-region.(current-buffer)....
69480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
694a0 20 20 20 20 20 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 ............................(max
694c0 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28 31 2d 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 20 .(point-min).(1-.(point)))......
694e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
69500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6f 69 6e 74 ..........................(point
69520 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 43 6f 6e 74 65 78 74 ))))...........(message."Context
69540 20 75 6e 64 65 72 20 70 6f 69 6e 74 20 68 61 73 20 62 65 65 6e 20 72 65 6d 6f 76 65 64 2e 22 29 .under.point.has.been.removed.")
69560 29 0a 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 72 65 67 69 ).......(gptel-context--add-regi
69580 6f 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 on.(current-buffer).(point-min).
695a0 28 70 6f 69 6e 74 2d 6d 61 78 29 20 74 29 0a 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 43 (point-max).t).......(message."C
695c0 75 72 72 65 6e 74 20 62 75 66 66 65 72 20 61 64 64 65 64 20 61 73 20 63 6f 6e 74 65 78 74 2e 22 urrent.buffer.added.as.context."
695e0 29 29 29 29 29 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 20 28 61 75 74 6f 6c 6f 61 64 20 )))))..;;;###autoload.(autoload.
69600 27 67 70 74 65 6c 2d 61 64 64 20 22 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 22 20 22 41 64 64 2f 'gptel-add."gptel-context"."Add/
69620 72 65 6d 6f 76 65 20 72 65 67 69 6f 6e 73 20 6f 72 20 62 75 66 66 65 72 73 20 66 72 6f 6d 20 67 remove.regions.or.buffers.from.g
69640 70 74 65 6c 27 73 20 63 6f 6e 74 65 78 74 2e 22 20 74 29 0a 28 64 65 66 61 6c 69 61 73 20 27 67 ptel's.context.".t).(defalias.'g
69660 70 74 65 6c 2d 61 64 64 20 23 27 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 61 64 64 29 0a 0a 28 ptel-add.#'gptel-context-add)..(
69680 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 66 69 6c 65 2d 62 69 6e 61 72 79 2d 70 20 28 70 61 74 68 defun.gptel--file-binary-p.(path
696a0 29 0a 20 20 22 43 68 65 63 6b 20 69 66 20 66 69 6c 65 20 61 74 20 50 41 54 48 20 69 73 20 72 65 )..."Check.if.file.at.PATH.is.re
696c0 61 64 61 62 6c 65 20 61 6e 64 20 62 69 6e 61 72 79 2e 22 0a 20 20 28 63 6f 6e 64 69 74 69 6f 6e adable.and.binary."...(condition
696e0 2d 63 61 73 65 20 6e 69 6c 0a 20 20 20 20 20 20 28 77 69 74 68 2d 74 65 6d 70 2d 62 75 66 66 65 -case.nil.......(with-temp-buffe
69700 72 0a 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 2d 66 69 6c 65 2d 63 6f 6e 74 65 6e 74 73 20 r.........(insert-file-contents.
69720 70 61 74 68 20 6e 69 6c 20 31 20 35 31 32 20 27 72 65 70 6c 61 63 65 29 0a 20 20 20 20 20 20 20 path.nil.1.512.'replace)........
69740 20 28 65 71 20 62 75 66 66 65 72 2d 66 69 6c 65 2d 63 6f 64 69 6e 67 2d 73 79 73 74 65 6d 20 27 .(eq.buffer-file-coding-system.'
69760 6e 6f 2d 63 6f 6e 76 65 72 73 69 6f 6e 29 29 0a 20 20 20 20 28 66 69 6c 65 2d 6d 69 73 73 69 6e no-conversion)).....(file-missin
69780 67 20 28 6d 65 73 73 61 67 65 20 22 46 69 6c 65 20 5c 22 25 73 5c 22 20 69 73 20 6e 6f 74 20 72 g.(message."File.\"%s\".is.not.r
697a0 65 61 64 61 62 6c 65 2e 22 20 70 61 74 68 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c eadable.".path))))..(defun.gptel
697c0 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 29 0a 20 -context--add-text-file.(path)..
697e0 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 6e 74 65 ."Add.text.file.at.PATH.to.conte
69800 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 29 20 67 xt."...(cl-pushnew.(list.path).g
69820 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 71 75 61 ptel-context--alist.:test.#'equa
69840 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 64 65 64 l)...(message."File.\"%s\".added
69860 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 28 64 65 .to.context.".path)...path)..(de
69880 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 2d 66 69 fun.gptel-context--add-binary-fi
698a0 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 61 74 20 le.(path)..."Add.binary.file.at.
698c0 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 0a 52 65 PATH.to.context.if.supported..Re
698e0 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 6e 6f 72 turn.PATH.if.added,.nil.if.ignor
69900 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 65 6c 2d ed."...(if-let*.(((gptel--model-
69920 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 20 20 28 capable-p.'media)).............(
69940 6d 69 6d 65 20 28 6d 61 69 6c 63 61 70 2d 66 69 6c 65 2d 6e 61 6d 65 2d 74 6f 2d 6d 69 6d 65 2d mime.(mailcap-file-name-to-mime-
69960 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 65 6c 2d type.path)).............((gptel-
69980 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 0a 20 20 -model-mime-capable-p.mime)))...
699a0 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 75 73 68 ....(prog1.path.........(cl-push
699c0 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 20 20 20 new.(list.path.:mime.mime)......
699e0 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 2d 61 6c ...............gptel-context--al
69a00 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 65 73 73 ist.:test.#'equal).........(mess
69a20 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 74 65 78 age."File.\"%s\".added.to.contex
69a40 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 72 69 6e t.".path)).....(message."Ignorin
69a60 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 73 5c 22 g.unsupported.binary.file.\"%s\"
69a80 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 74 65 6c .".path).....nil))..(defun.gptel
69aa0 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 20 61 63 -context--add-directory.(path.ac
69ac0 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 20 64 69 tion)..."Process.all.files.in.di
69ae0 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 41 43 54 rectory.at.PATH.according.to.ACT
69b00 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 60 61 64 ION..ACTION.should.be.either.`ad
69b20 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 65 73 20 d'.or.`remove'."...(let.((files.
69b40 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 70 61 74 (directory-files-recursively.pat
69b60 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 28 66 69 h.".".t))).....(mapc.(lambda.(fi
69b80 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 2d 64 69 le).............(unless.(file-di
69ba0 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 20 28 70 rectory-p.file)...............(p
69bc0 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 20 20 20 case-exhaustive.action..........
69be0 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 20 28 69 .......('add..................(i
69c00 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 0a 20 20 f.(gptel--file-binary-p.file)...
69c20 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
69c40 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 20 20 20 t--add-binary-file.file)........
69c60 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 64 64 2d ............(gptel-context--add-
69c80 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 20 20 20 text-file.file)))...............
69ca0 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 73 65 74 ..('remove..................(set
69cc0 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 78 74 2d f.(alist-get.file.gptel-context-
69ce0 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 69 6c 29 -alist.nil.'remove.#'equal).nil)
69d00 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 65 6e 20 ))))...........files).....(when.
69d20 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 73 73 61 (eq.action.'remove).......(messa
69d40 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 66 72 6f ge."Directory.\"%s\".removed.fro
69d60 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 67 70 74 m.context.".path))))..(defun.gpt
69d80 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 22 41 64 el-context-add-file.(path)..."Ad
69da0 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 65 6c 20 d.the.file.at.PATH.to.the.gptel.
69dc0 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 6f 72 79 context...If.PATH.is.a.directory
69de0 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 6e 20 69 ,.recursively.add.all.files.in.i
69e00 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 20 74 65 t..PATH.should.be.readable.as.te
69e20 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 66 69 6c xt."...(interactive."fChoose.fil
69e40 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 6e 64 20 e.to.add.to.context:.")...(cond.
69e60 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 70 74 65 ((file-directory-p.path)...(gpte
69e80 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 20 27 61 l-context--add-directory.path.'a
69ea0 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 70 61 74 dd))..((gptel--file-binary-p.pat
69ec0 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 64 64 2d h)..........(gptel-context--add-
69ee0 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 6f 6e 74 binary-file.path))..((gptel-cont
69f00 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 3b 3b 3b ext--add-text-file.path))))..;;;
69f20 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 64 64 ###autoload.(autoload.'gptel-add
69f40 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 6c 65 73 -file."gptel-context"."Add.files
69f60 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 61 6c 69 .to.gptel's.context.".t).(defali
69f80 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 6e 74 65 as.'gptel-add-file.#'gptel-conte
69fa0 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 6e 74 65 xt-add-file)..(defun.gptel-conte
69fc0 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 0a 20 20 xt-remove.(&optional.context)...
69fe0 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 72 6f 6d "Remove.the.CONTEXT.overlay.from
6a000 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 58 54 20 .the.contexts.list...If.CONTEXT.
6a020 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 74 20 70 is.nil,.removes.the.context.at.p
6a040 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 20 72 65 oint..If.selection.is.active,.re
6a060 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 65 63 74 moves.all.contexts.within.select
6a080 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 79 2c 20 ion..If.CONTEXT.is.a.directory,.
6a0a0 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 20 69 6e recursively.removes.all.files.in
6a0c0 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 6f 6e 74 .it."...(cond....((overlayp.cont
6a0e0 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 65 78 74 ext).....(delete-overlay.context
6a100 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 74 20 77 ).....;;.FIXME:.Quadratic.cost.w
6a120 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 78 74 73 hen.clearing.a.bunch.of.contexts
6a140 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 28 63 6c .at.once.....(unless.........(cl
6a160 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 73 74 2d -loop..........for.ov.in.(alist-
6a180 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 6e 74 65 get.(current-buffer).gptel-conte
6a1a0 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 6f 76 65 xt--alist)..........thereis.(ove
6a1c0 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 61 6c 69 rlay-start.ov)).......(setf.(ali
6a1e0 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
6a200 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 29 29 29 ntext--alist.nil.'remove).nil)))
6a220 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 20 20 20 ....((stringp.context)..........
6a240 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 20 20 20 .........;file.or.directory.....
6a260 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 29 0a 20 (if.(file-directory-p.context)..
6a280 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 72 65 63 .......(gptel-context--add-direc
6a2a0 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 73 65 74 tory.context.'remove).......(set
6a2c0 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 6e 74 65 f.(alist-get.context.gptel-conte
6a2e0 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
6a300 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 5c 22 20 il).......(message."File.\"%s\".
6a320 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 74 29 29 removed.from.context.".context))
6a340 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 77 68 65 )....((region-active-p).....(whe
6a360 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 65 78 74 n-let*.((contexts.(gptel-context
6a380 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 20 20 20 --in-region.(current-buffer)....
6a3a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
6a3c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 67 69 6f 6e 2d 62 65 67 69 6e 6e 69 .................(region-beginni
6a3e0 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 20 20 ng).............................
6a400 20 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-
6a420 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 78 20 69 end)))).......(cl-loop.for.ctx.i
6a440 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 20 63 74 n.contexts.do.(delete-overlay.ct
6a460 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 63 74 78 x))))....(t.....(when-let*.((ctx
6a480 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 20 20 20 .(gptel-context--at-point)))....
6a4a0 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 28 64 65 ...(delete-overlay.ctx)))))..(de
6a4c0 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 28 26 6f fun.gptel-context-remove-all.(&o
6a4e0 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 6c 20 67 ptional.verbose)..."Remove.all.g
6a500 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 6e 6f 6e ptel.context...If.VERBOSE.is.non
6a520 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 64 20 6d -nil,.ask.for.confirmation.and.m
6a540 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 63 74 69 essage.afterwards."...(interacti
6a560 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 6c 2d 63 ve.(list.t))...(if.(null.gptel-c
6a580 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 72 62 6f ontext--alist).......(when.verbo
6a5a0 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 20 73 6f se.(message."No.gptel.context.so
6a5c0 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 20 28 6f urces.to.remove.")).....(when.(o
6a5e0 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 6d 6f 76 r.(not.verbose).(y-or-n-p."Remov
6a600 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 6c 6f 6f e.all.context?.")).......(cl-loo
6a620 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 6e 20 67 p........for.(source...ovs).in.g
6a640 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 20 28 62 ptel-context--alist........if.(b
6a660 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 42 75 66 ufferp.source).do...........;Buf
6a680 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 20 20 28 fers.and.buffer.regions........(
6a6a0 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 76 73 29 mapc.#'gptel-context-remove.ovs)
6a6c0 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 74 2d 72 ........else.do.(gptel-context-r
6a6e0 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 20 74 79 emove.source).;files.or.other.ty
6a700 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 70 74 65 pes........finally.do.(setq.gpte
6a720 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 77 68 65 l-context--alist.nil))).....(whe
6a740 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 6c 6c 20 n.verbose.(message."Removed.all.
6a760 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 28 64 65 gptel.context.sources."))))..(de
6a780 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 61 79 20 fun.gptel-context--make-overlay.
6a7a0 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 0a 20 20 (start.end.&optional.advance)...
6a7c0 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 41 52 54 "Highlight.the.region.from.START
6a7e0 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 65 20 6f .to.END...ADVANCE.controls.the.o
6a800 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 28 6c 65 verlay.boundary.behavior."...(le
6a820 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 72 74 20 t.((overlay.(make-overlay.start.
6a840 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 29 29 29 end.nil.(not.advance).advance)))
6a860 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 61 70 6f .....(overlay-put.overlay.'evapo
6a880 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 6c 61 79 rate.t).....(overlay-put.overlay
6a8a0 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 68 74 2d .'face.'gptel-context-highlight-
6a8c0 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 79 20 27 face).....(overlay-put.overlay.'
6a8e0 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 65 72 6c gptel-context.t).....(push.overl
6a900 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 29 0a 20 ay.(alist-get.(current-buffer)..
6a920 20 20 20 20 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
6a940 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 79 29 29 l-context--alist)).....overlay))
6a960 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 2d 63 6f ..;;;###autoload.(defun.gptel-co
6a980 6e 74 65 78 74 2d 2d 77 72 61 70 20 28 6d 65 73 73 61 67 65 29 0a 20 20 22 57 72 61 70 20 4d 45 ntext--wrap.(message)..."Wrap.ME
6a9a0 53 53 41 47 45 20 77 69 74 68 20 63 6f 6e 74 65 78 74 20 73 74 72 69 6e 67 2e 22 0a 20 20 28 66 SSAGE.with.context.string."...(f
6a9c0 75 6e 63 61 6c 6c 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 77 72 61 70 2d 66 75 6e 63 74 69 uncall.gptel-context-wrap-functi
6a9e0 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 6d 65 73 73 61 67 65 20 28 67 70 74 65 6c 2d 63 6f 6e on............message.(gptel-con
6aa00 74 65 78 74 2d 2d 63 6f 6c 6c 65 63 74 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 63 text--collect)))..(defun.gptel-c
6aa20 6f 6e 74 65 78 74 2d 2d 77 72 61 70 2d 64 65 66 61 75 6c 74 20 28 6d 65 73 73 61 67 65 20 63 6f ontext--wrap-default.(message.co
6aa40 6e 74 65 78 74 73 29 0a 20 20 22 41 64 64 20 43 4f 4e 54 45 58 54 53 20 74 6f 20 4d 45 53 53 41 ntexts)..."Add.CONTEXTS.to.MESSA
6aa60 47 45 2e 0a 0a 4d 45 53 53 41 47 45 20 69 73 20 75 73 75 61 6c 6c 79 20 65 69 74 68 65 72 20 74 GE...MESSAGE.is.usually.either.t
6aa80 68 65 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 20 6f 72 20 74 68 65 20 75 73 65 72 20 70 72 he.system.message.or.the.user.pr
6aaa0 6f 6d 70 74 2e 0a 54 68 65 20 61 63 63 75 6d 75 6c 61 74 65 64 20 63 6f 6e 74 65 78 74 20 66 72 ompt..The.accumulated.context.fr
6aac0 6f 6d 20 43 4f 4e 54 45 58 54 53 20 69 73 20 61 70 70 65 6e 64 65 64 20 6f 72 20 70 72 65 70 65 om.CONTEXTS.is.appended.or.prepe
6aae0 6e 64 65 64 20 74 6f 0a 69 74 2c 20 72 65 73 70 65 63 74 69 76 65 6c 79 2e 22 0a 20 20 3b 3b 20 nded.to.it,.respectively."...;;.
6ab00 41 70 70 65 6e 64 20 63 6f 6e 74 65 78 74 20 62 65 66 6f 72 65 2f 61 66 74 65 72 20 73 79 73 74 Append.context.before/after.syst
6ab20 65 6d 20 6d 65 73 73 61 67 65 2e 0a 20 20 28 6c 65 74 20 28 28 63 6f 6e 74 65 78 74 2d 73 74 72 em.message....(let.((context-str
6ab40 69 6e 67 20 28 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 73 74 72 69 6e 67 20 63 6f 6e 74 65 ing.(gptel-context--string.conte
6ab60 78 74 73 29 29 29 0a 20 20 20 20 28 69 66 20 28 3e 20 28 6c 65 6e 67 74 68 20 63 6f 6e 74 65 78 xts))).....(if.(>.(length.contex
6ab80 74 2d 73 74 72 69 6e 67 29 20 30 29 0a 20 20 20 20 20 20 20 20 28 70 63 61 73 65 2d 65 78 68 61 t-string).0).........(pcase-exha
6aba0 75 73 74 69 76 65 20 67 70 74 65 6c 2d 75 73 65 2d 63 6f 6e 74 65 78 74 0a 20 20 20 20 20 20 20 ustive.gptel-use-context........
6abc0 20 20 20 28 27 73 79 73 74 65 6d 20 28 63 6f 6e 63 61 74 20 6d 65 73 73 61 67 65 20 22 5c 6e 5c ...('system.(concat.message."\n\
6abe0 6e 22 20 63 6f 6e 74 65 78 74 2d 73 74 72 69 6e 67 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 27 n".context-string))...........('
6ac00 75 73 65 72 20 20 20 28 63 6f 6e 63 61 74 20 63 6f 6e 74 65 78 74 2d 73 74 72 69 6e 67 20 22 5c user...(concat.context-string."\
6ac20 6e 5c 6e 22 20 6d 65 73 73 61 67 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 27 6e 69 6c 20 20 n\n".message))...........('nil..
6ac40 20 20 6d 65 73 73 61 67 65 29 29 0a 20 20 20 20 20 20 6d 65 73 73 61 67 65 29 29 29 0a 0a 28 64 ..message)).......message)))..(d
6ac60 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 65 64 69 efun.gptel-context--collect-medi
6ac80 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 6c 65 63 a.(&optional.contexts)..."Collec
6aca0 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 77 68 69 t.media.CONTEXTS...CONTEXTS,.whi
6acc0 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 61 72 79 ch.are.typically.paths.to.binary
6ace0 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 64 20 70 .files,.are.base64-encoded.and.p
6ad00 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 6f 6d 70 repended.to.the.first.user.promp
6ad20 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 20 28 6f t."...(cl-loop.for.context.in.(o
6ad40 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 73 74 29 r.contexts.gptel-context--alist)
6ad60 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 29 20 3d ............for.(path...props).=
6ad80 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 20 28 73 .context............when.(and.(s
6ada0 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 20 3a 6d tringp.path).(plist-get.props.:m
6adc0 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 73 20 3a ime))............collect.(cons.:
6ade0 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 70 74 65 media.context)))..(cl-defun.gpte
6ae00 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 20 72 65 l-context--add-region.(buffer.re
6ae20 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 74 69 6f gion-beginning.region-end.&optio
6ae40 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 6c 69 6d nal.advance)..."Add.region.delim
6ae60 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 49 4f 4e ited.by.REGION-BEGINNING,.REGION
6ae80 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 66 20 41 -END.in.BUFFER.as.context...If.A
6aea0 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 74 20 6f DVANCE.is.non-nil,.the.context.o
6aec0 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 68 65 20 verlay.envelopes.changes.at.the.
6aee0 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 76 65 20 beginning.and.end."...;;.Remove.
6af00 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 20 72 65 existing.contexts.in.the.same.re
6af20 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 2d 63 6f gion,.if.any....(mapc.#'gptel-co
6af40 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 6f 6e 74 ntext-remove.........(gptel-cont
6af60 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 62 65 67 ext--in-region.buffer.region-beg
6af80 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 28 77 69 inning.region-end))...(prog1.(wi
6afa0 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 20 20 20 th-current-buffer.buffer........
6afc0 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 6c 61 79 ....(gptel-context--make-overlay
6afe0 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 61 64 76 .region-beginning.region-end.adv
6b000 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 20 61 64 ance)).......(message."Region.ad
6b020 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 64 65 66 ded.to.context.buffer.")))..(def
6b040 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 62 75 66 un.gptel-context--in-region.(buf
6b060 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 6c 69 73 fer.start.end)..."Return.the.lis
6b080 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 67 69 76 t.of.context.overlays.in.the.giv
6b0a0 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 0a 53 54 en.region,.if.any,.in.BUFFER..ST
6b0c0 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 6e 20 64 ART.and.END.signify.the.region.d
6b0e0 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 75 66 66 elimiters."...(with-current-buff
6b100 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 6f 74 20 er.buffer.....(cl-remove-if-not.
6b120 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 27 67 70 (lambda.(ov).(overlay-get.ov.'gp
6b140 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 20 20 20 tel-context))...................
6b160 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 29 0a 0a ....(overlays-in.start.end))))..
6b180 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 74 20 28 (defun.gptel-context--at-point.(
6b1a0 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 61 79 20 )..."Return.the.context.overlay.
6b1c0 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 2d 69 66 at.point,.if.any."...(cl-find-if
6b1e0 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 27 67 .(lambda.(ov).(overlay-get.ov.'g
6b200 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 6f 76 ptel-context))...............(ov
6b220 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 75 74 6f erlays-at.(point))))..;;;###auto
6b240 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 6c 6c 65 load.(defun.gptel-context--colle
6b260 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 61 63 74 ct.()..."Get.the.list.of.all.act
6b280 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 65 74 20 ive.context.overlays."...;;.Get.
6b2a0 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 61 79 73 only.the.non-degenerate.overlays
6b2c0 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 65 20 6f ,.collect.them,.and.update.the.o
6b2e0 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 65 6c 2d verlays.variable....(setq.gptel-
6b300 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 6f 70 20 context--alist.........(cl-loop.
6b320 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 65 78 74 for.(buf...ovs).in.gptel-context
6b340 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 62 75 66 --alist..................if.(buf
6b360 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 20 20 20 fer-live-p.buf).................
6b380 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 77 68 65 ...if.(cl-loop.for.ov.in.ovs.whe
6b3a0 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 6f 76 29 n.(overlay-start.ov).collect.ov)
6b3c0 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 63 6f 6e ....................collect.(con
6b3e0 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 20 20 20 s.buf.it).into.elements.........
6b400 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 20 20 20 ...........end..................
6b420 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 69 6c 65 else.if.(and.(stringp.buf).(file
6b440 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 20 20 20 -exists-p.buf)).................
6b460 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 20 20 20 .if.(plist-get.ovs.:mime).......
6b480 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 6f 76 73 ...........collect.(cons.buf.ovs
6b4a0 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 20 20 20 ).into.elements.................
6b4c0 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 20 65 6c .else.collect.(list.buf).into.el
6b4e0 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 6c 79 20 ements..................finally.
6b500 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 74 65 6c return.elements)))..(defun.gptel
6b520 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 67 20 28 -context--insert-buffer-string.(
6b540 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 20 70 6f buffer.contexts)..."Insert.at.po
6b560 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 20 43 4f int.a.context.string.from.all.CO
6b580 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 28 69 73 NTEXTS.in.BUFFER.".....(let.((is
6b5a0 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 65 76 69 -top-snippet.t)...........(previ
6b5c0 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 6f 72 6d ous-line.1)).......(insert.(form
6b5e0 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 6e 61 6d at."In.buffer.`%s`:".(buffer-nam
6b600 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 6e 60 60 e.buffer))..............."\n\n``
6b620 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 28 62 75 `".(gptel--strip-mode-suffix.(bu
6b640 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 20 20 20 ffer-local-value................
6b660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
6b680 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 20 20 20 ....'major-mode.buffer))........
6b6a0 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 6f 6e 74 ......."\n").......(dolist.(cont
6b6c0 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 28 73 74 ext.contexts).........(let*.((st
6b6e0 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 20 20 20 art.(overlay-start.context))....
6b700 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 20 63 6f ............(end.(overlay-end.co
6b720 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 74 29 0a ntext))................content).
6b740 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 29 0a 20 ..........(let.(lineno.column)..
6b760 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.
6b780 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 2d 72 65 buffer...............(without-re
6b7a0 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 74 71 20 striction.................(setq.
6b7c0 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 61 72 74 lineno.(line-number-at-pos.start
6b7e0 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 75 6d 6e .t).......................column
6b800 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 74 61 72 .(save-excursion.(goto-char.star
6b820 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 t)..............................
6b840 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 6d 6e 29 ................(current-column)
6b860 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 6e 74 20 ).......................content.
6b880 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 20 (buffer-substring-no-properties.
6b8a0 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 57 65 20 start.end)))).............;;.We.
6b8c0 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 6e 75 6d do.not.need.to.insert.a.line.num
6b8e0 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 72 65 67 ber.indicator.if.we.have.two.reg
6b900 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 6d 65 20 ions.............;;.on.the.same.
6b920 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 67 69 6f line,.because.the.previous.regio
6b940 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 0a 20 20 n.should.have.already.put.the...
6b960 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 20 20 20 ..........;;.indicator..........
6b980 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 6c 69 6e ....(unless.(=.previous-line.lin
6b9a0 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 20 6c 69 eno)...............(unless.(=.li
6b9c0 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 73 73 20 neno.1).................(unless.
6b9e0 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 20 20 20 is-top-snippet..................
6ba00 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 20 20 20 .(insert."\n")).................
6ba20 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 29 5c 6e (insert.(format."....(Line.%d)\n
6ba40 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 71 20 70 ".lineno)))).............(setq.p
6ba60 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 20 20 20 revious-line.lineno)............
6ba80 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 72 74 20 .(unless.(zerop.column).(insert.
6baa0 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 6f 70 2d "....")).............(if.is-top-
6bac0 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 20 69 73 snippet.................(setq.is
6bae0 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 20 20 20 -top-snippet.nil)...............
6bb00 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 6e 6f 29 (unless.(=.previous-line.lineno)
6bb20 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 69 6e 73 .(insert."\n"))))...........(ins
6bb40 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 28 3e 3d ert.content))).......(unless.(>=
6bb60 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 65 78 74 .(overlay-end.(car.(last.context
6bb80 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 73 65 72 s))).(point-max)).........(inser
6bba0 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 60 60 60 t."\n...")).......(insert."\n```
6bbc0 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 69 6e 73 65 ")))..(defun.gptel-context--inse
6bbe0 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 49 6e 73 65 72 74 20 rt-file-string.(path)..."Insert.
6bc00 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 74 68 65 20 66 69 6c at.point.the.contents.of.the.fil
6bc20 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 28 69 6e 73 65 72 74 e.at.PATH.as.context."...(insert
6bc40 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 28 66 69 6c 65 2d 6e .(format."In.file.`%s`:".(file-n
6bc60 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 20 20 20 20 20 20 20 ame-nondirectory.path)).........
6bc80 20 20 22 5c 6e 5c 6e 60 60 60 5c 6e 22 29 0a 20 20 28 69 6e 73 65 72 74 2d 66 69 6c 65 2d 63 6f .."\n\n```\n")...(insert-file-co
6bca0 6e 74 65 6e 74 73 20 70 61 74 68 29 0a 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 ntents.path)...(goto-char.(point
6bcc0 2d 6d 61 78 29 29 0a 20 20 28 69 6e 73 65 72 74 20 22 5c 6e 60 60 60 5c 6e 22 29 29 0a 0a 28 64 -max))...(insert."\n```\n"))..(d
6bce0 65 66 75 6e 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 73 74 72 69 6e 67 20 28 63 6f 6e 74 efun.gptel-context--string.(cont
6bd00 65 78 74 2d 61 6c 69 73 74 29 0a 20 20 22 46 6f 72 6d 61 74 20 74 68 65 20 61 67 67 72 65 67 61 ext-alist)..."Format.the.aggrega
6bd20 74 65 64 20 67 70 74 65 6c 20 63 6f 6e 74 65 78 74 20 61 73 20 61 6e 6e 6f 74 61 74 65 64 20 6d ted.gptel.context.as.annotated.m
6bd40 61 72 6b 64 6f 77 6e 20 66 72 61 67 6d 65 6e 74 73 2e 0a 0a 52 65 74 75 72 6e 73 20 61 20 73 74 arkdown.fragments...Returns.a.st
6bd60 72 69 6e 67 2e 20 20 43 4f 4e 54 45 58 54 2d 41 4c 49 53 54 20 69 73 20 61 20 73 74 72 75 63 74 ring...CONTEXT-ALIST.is.a.struct
6bd80 75 72 65 20 63 6f 6e 74 61 69 6e 69 6e 67 0a 63 6f 6e 74 65 78 74 20 6f 76 65 72 6c 61 79 73 2c ure.containing.context.overlays,
6bda0 20 73 65 65 20 60 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61 6c 69 73 74 27 2e 22 0a 20 20 .see.`gptel-context--alist'."...
6bdc0 28 77 69 74 68 2d 74 65 6d 70 2d 62 75 66 66 65 72 0a 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 (with-temp-buffer.....(cl-loop.f
6bde0 6f 72 20 28 62 75 66 20 2e 20 6f 76 73 29 20 69 6e 20 63 6f 6e 74 65 78 74 2d 61 6c 69 73 74 0a or.(buf...ovs).in.context-alist.
6be00 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 29 0a 20 20 .............if.(bufferp.buf)...
6be20 20 20 20 20 20 20 20 20 20 20 20 64 6f 20 28 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 69 6e ...........do.(gptel-context--in
6be40 73 65 72 74 2d 62 75 66 66 65 72 2d 73 74 72 69 6e 67 20 62 75 66 20 6f 76 73 29 0a 20 20 20 20 sert-buffer-string.buf.ovs).....
6be60 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 6e 6f 74 20 28 70 6c 69 73 74 2d 67 65 74 .........else.if.(not.(plist-get
6be80 20 6f 76 73 20 3a 6d 69 6d 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 20 28 67 70 .ovs.:mime))..............do.(gp
6bea0 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 69 6e 73 65 72 74 2d 66 69 6c 65 2d 73 74 72 69 6e 67 20 tel-context--insert-file-string.
6bec0 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 65 72 74 buf).end..............do.(insert
6bee0 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 20 64 6f ."\n\n")..............finally.do
6bf00 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 6b 77 61 ..............(skip-chars-backwa
6bf20 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 65 6c 65 rd."\n\t\r.")..............(dele
6bf40 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 29 0a 20 te-region.(point).(point-max))..
6bf60 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 20 20 20 ............(unless.(bobp)......
6bf80 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 6e 29 ..........(goto-char.(point-min)
6bfa0 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 75 65 73 )................(insert."Reques
6bfc0 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 20 20 66 t.context:\n\n"))..............f
6bfe0 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 61 6e 64 inally.return...............(and
6c000 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 20 20 20 .(>.(buffer-size).0)............
6c020 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 3b 3b 3b ........(buffer-string)))))..;;;
6c040 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 63 74 69 .Major.mode.for.context.inspecti
6c060 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 65 6c 2d on.buffers.(defvar-keymap.gptel-
6c080 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 63 20 43 context-buffer-mode-map..."C-c.C
6c0a0 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 20 22 43 -c".#'gptel-context-confirm..."C
6c0c0 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 20 20 22 -c.C-k".#'gptel-context-quit..."
6c0e0 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 74 0a 20 RET".....#'gptel-context-visit..
6c100 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 78 74 0a ."n".......#'gptel-context-next.
6c120 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 72 65 76 .."p".......#'gptel-context-prev
6c140 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 65 78 74 ious..."d".......#'gptel-context
6c160 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 76 65 64 -flag-deletion)..(define-derived
6c180 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 64 65 20 -mode.gptel-context-buffer-mode.
6c1a0 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 20 20 22 special-mode."gptel-context"..."
6c1c0 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 74 65 78 Major-mode.for.inspecting.contex
6c1e0 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 70 74 65 t.used.by.gptel."...:group.'gpte
6c200 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 6f 6f 6b l...(add-hook.'post-command-hook
6c220 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 64 0a 20 .#'gptel-context--post-command..
6c240 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 61 6c 20 ...........nil.t)...(setq-local.
6c260 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 6c 2d 63 revert-buffer-function.#'gptel-c
6c280 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 6e 20 67 ontext--buffer-setup))..(defun.g
6c2a0 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 6f 70 74 ptel-context--buffer-setup.(&opt
6c2c0 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 29 0a 20 ional._ignore-auto._noconfirm)..
6c2e0 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 66 66 65 ."Set.up.the.gptel.context.buffe
6c300 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 65 74 2d r."...(with-current-buffer.(get-
6c320 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 2a 22 29 buffer-create."*gptel-context*")
6c340 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 64 65 29 .....(gptel-context-buffer-mode)
6c360 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 20 74 29 .....(let.((inhibit-read-only.t)
6c380 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 28 73 65 ).......(erase-buffer).......(se
6c3a0 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 20 20 20 tq.header-line-format...........
6c3c0 20 20 28 73 75 62 73 74 69 74 75 74 65 2d 63 6f 6d 6d 61 6e 64 2d 6b 65 79 73 0a 20 20 20 20 20 ..(substitute-command-keys......
6c3e0 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 22 5c ........(concat..............."\
6c400 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 5d 3a 20 \[gptel-context-flag-deletion]:.
6c420 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 20 20 20 Mark/unmark.deletion,.".........
6c440 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 2f 5c 5c ......"\\[gptel-context-next]/\\
6c460 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 74 2f 70 [gptel-context-previous]:.next/p
6c480 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 67 70 74 revious,."..............."\\[gpt
6c4a0 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 20 20 20 el-context-visit]:.visit,.".....
6c4c0 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 6f 6e 66 .........."\\[gptel-context-conf
6c4e0 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 22 5c 5c irm]:.apply,."..............."\\
6c500 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 20 22 0a [gptel-context-quit]:.cancel,.".
6c520 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 5d 3a 20 .............."\\[quit-window]:.
6c540 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 6e 0a 20 quit"))).......(save-excursion..
6c560 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 63 6f 6e .......(let.((contexts.gptel-con
6c580 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 6c 65 6e text--alist))...........(if.(len
6c5a0 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 20 20 28 gth>.contexts.0)...............(
6c5c0 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 20 20 20 let.(beg.ov.l1.l2)..............
6c5e0 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 76 73 29 ...(pcase-dolist.(`(,buf...,ovs)
6c600 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 28 69 66 .contexts)...................(if
6c620 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 20 20 20 .(bufferp.buf)..................
6c640 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 6d 65 20 .....;;.It's.a.buffer.with.some.
6c660 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 20 20 20 overlay(s)......................
6c680 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 20 20 20 .(dolist.(source-ov.ovs)........
6c6a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 .................(with-current-b
6c6c0 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 20 20 20 uffer.buf.......................
6c6e0 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 70 6f 73 ....(setq.l1.(line-number-at-pos
6c700 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 20 20 20 .(overlay-start.source-ov)).....
6c720 20 20 20 20 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 32 20 28 ............................l2.(
6c740 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 6e 64 20 line-number-at-pos.(overlay-end.
6c760 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 20 20 20 source-ov))))...................
6c780 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 72 6d 61 ......(insert.(propertize.(forma
6c7a0 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 3a 5c 6e t."In.buffer.%s.(lines.%d-%d):\n
6c7c0 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 20 20 20 \n".............................
6c7e0 20 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-
6c800 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 20 20 20 name.buf).l1.l2)................
6c820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 66 61 .............................'fa
6c840 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 20 20 20 ce.'bold))......................
6c860 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 20 20 20 ...(setq.beg.(point))...........
6c880 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 73 75 62 ..............(insert-buffer-sub
6c8a0 73 74 72 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 string..........................
6c8c0 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 20 28 6f buf.(overlay-start.source-ov).(o
6c8e0 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 20 20 20 verlay-end.source-ov))..........
6c900 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 20 20 20 ...............(insert."\n")....
6c920 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 20 28 6d .....................(setq.ov.(m
6c940 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 20 20 20 ake-overlay.beg.(point))).......
6c960 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 20 6f ..................(overlay-put.o
6c980 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 20 20 20 v.'gptel-context.source-ov).....
6c9a0 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
6c9c0 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)...........
6c9e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75 74 20 6f 76 20 27 65 ..............(overlay-put.ov.'e
6ca00 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 20 20 20 vaporate.t).....................
6ca20 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 74 6f 72 ....(insert."\n".(make-separator
6ca40 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 20 20 20 -line)."\n"))...................
6ca60 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 61 20 62 ..;;.BUF.is.a.file.path,.not.a.b
6ca80 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 73 65 72 uffer.....................(inser
6caa0 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 65 20 25 t.(propertize.(format."In.file.%
6cac0 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 72 79 20 s:\n\n".(file-name-nondirectory.
6cae0 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 20 20 20 buf))...........................
6cb00 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 20 20 20 ..............'face.'bold)).....
6cb20 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 69 6e 74 ................(setq.beg.(point
6cb40 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 2a 20 )).....................(if-let*.
6cb60 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 29 0a 20 ((mime.(plist-get.ovs.:mime)))..
6cb80 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 20 69 73 .......................;;.BUF.is
6cba0 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 20 20 20 .a.binary.file..................
6cbc0 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 63 68 2d .......(if-let*.(((string-match-
6cbe0 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 66 29 29 p.(image-file-name-regexp).buf))
6cc00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
6cc20 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 20 20 20 ...(img.(create-image.buf)))....
6cc40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 .........................(insert
6cc60 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 6c 61 79 -image.img."*").;.Can.be.display
6cc80 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 28 69 6e ed...........................(in
6cca0 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 20 20 20 sert............................
6ccc0 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 69 65 77 buf.".".(propertize."(No.preview
6cce0 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 20 20 20 .for.binary.file)"..............
6cd00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
6cd20 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 61 6e 74 ..'face.'(:inherit.shadow.:slant
6cd40 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 20 20 20 .italic)))).....................
6cd60 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 0a 20 20 ..(insert-file-contents.buf))...
6cd80 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
6cda0 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 20 28 69 int-max)).....................(i
6cdc0 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 20 20 20 nsert."\n").....................
6cde0 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 6f 69 6e (setq.ov.(make-overlay.beg.(poin
6ce00 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 72 6c 61 t))).....................(overla
6ce20 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 20 20 20 y-put.ov.'gptel-context.buf)....
6ce40 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
6ce60 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 20 20 20 .'gptel-overlay.t)..............
6ce80 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 72 61 74 .......(overlay-put.ov.'evaporat
6cea0 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 65 72 74 e.t).....................(insert
6cec0 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 5c 6e 22 ."\n".(make-separator-line)."\n"
6cee0 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 72 20 28 ))).................(goto-char.(
6cf00 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 65 72 74 point-min))).............(insert
6cf20 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 6f 6e 74 ."There.are.no.active.gptel.cont
6cf40 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 65 72 20 exts."))))).....(display-buffer.
6cf60 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (current-buffer)................
6cf80 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 77 69 6e .....`((display-buffer-reuse-win
6cfa0 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 73 70 6c dow........................displ
6cfc0 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 20 20 20 ay-buffer-reuse-mode-window.....
6cfe0 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 66 66 65 ...................display-buffe
6d000 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 20 20 20 r-below-selected)...............
6d020 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 65 6c 65 ........(body-function...,#'sele
6d040 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 20 20 20 ct-window)......................
6d060 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 6f 77 2d .(window-height...,#'fit-window-
6d080 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 2d 63 6f to-buffer)))))..(defvar.gptel-co
6d0a0 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 4c 61 73 ntext--buffer-reverse.nil..."Las
6d0c0 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 74 20 69 t.direction.of.cursor.movement.i
6d0e0 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 6f 6e 2d n.gptel.context.buffer...If.non-
6d100 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 65 6e 74 nil,.indicates.backward.movement
6d120 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 2d 2d 70 .")..(defalias.'gptel-context--p
6d140 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 74 2d 6f ost-command...(let.((highlight-o
6d160 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 20 3b 3b verlay)).....(lambda.().......;;
6d180 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 75 74 73 .Only.update.if.point.moved.outs
6d1a0 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 20 28 75 ide.the.current.region........(u
6d1c0 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 20 28 6f nless.(memq.highlight-overlay.(o
6d1e0 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 28 6c 65 verlays-at.(point))).........(le
6d200 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 20 20 20 t.((context-overlay.............
6d220 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 79 73 2d ...(cl-loop.for.ov.in.(overlays-
6d240 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 20 20 20 at.(point)).....................
6d260 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 20 6f 76 ....thereis.(and.(overlay-get.ov
6d280 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 20 20 20 .'gptel-overlay).ov)))).........
6d2a0 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 20 20 20 ..(when.highlight-overlay.......
6d2c0 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 6f 76 65 ......(overlay-put.highlight-ove
6d2e0 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 68 65 6e rlay.'face.nil))...........(when
6d300 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 28 6f 76 .context-overlay.............(ov
6d320 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 63 65 20 erlay-put.context-overlay.'face.
6d340 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 68 69 67 'highlight))...........(setq.hig
6d360 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 79 29 29 hlight-overlay.context-overlay))
6d380 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 73 69 74 ))))..(defun.gptel-context-visit
6d3a0 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 66 20 74 .()..."Display.the.location.of.t
6d3c0 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 73 20 6f his.gptel.context.chunk.in.its.o
6d3e0 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 76 65 29 riginal.buffer."...(interactive)
6d400 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 61 79 73 ...(let.((ov-here.(car.(overlays
6d420 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 28 28 73 -at.(point))))).....(if-let*.((s
6d440 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 70 74 65 ource.(overlay-get.ov-here.'gpte
6d460 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 66 20 28 l-context))...............(buf.(
6d480 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 20 20 20 if.(overlayp.source)............
6d4a0 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 6f 75 72 ............(overlay-buffer.sour
6d4c0 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 64 2d 66 ce)......................(find-f
6d4e0 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 20 20 20 ile-noselect.source)))..........
6d500 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 6c 61 79 .....(offset.(-.(point).(overlay
6d520 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 69 74 68 -start.ov-here)))).........(with
6d540 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 66 65 72 -selected-window.(display-buffer
6d560 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 66 20 28 .buf)...........(goto-char.(if.(
6d580 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 20 20 20 overlayp.source)................
6d5a0 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 63 65 29 ..........(overlay-start.source)
6d5c0 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 74 2d 6d ........................(point-m
6d5e0 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 20 6f 66 in)))...........(forward-char.of
6d600 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 20 20 20 fset)...........(recenter)).....
6d620 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 6e 20 66 ..(message."No.source.location.f
6d640 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 29 29 29 or.this.gptel.context.chunk.")))
6d660 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 28 29 0a )..(defun.gptel-context-next.().
6d680 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 20 63 68 .."Move.to.next.gptel.context.ch
6d6a0 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 28 28 6f unk."...(interactive)...(let.((o
6d6c0 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 6e 74 29 v-here.(car.(overlays-at.(point)
6d6e0 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 2d 6f 76 ))).........(next-start.(next-ov
6d700 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 77 68 65 erlay-change.(point)))).....(whe
6d720 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 74 61 72 n.(and.(/=.(point-max).next-star
6d740 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 69 6e 73 t).ov-here).......;;.We.were.ins
6d760 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 68 65 20 ide.the.overlay,.so.we.want.the.
6d780 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 20 20 20 next.overlay.change,.which......
6d7a0 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 20 6e 65 .;;.would.be.the.start.of.the.ne
6d7c0 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 73 74 61 xt.overlay........(setq.next-sta
6d7e0 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 73 74 61 rt.(next-overlay-change.next-sta
6d800 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 74 20 28 rt))).....(when.(/=.next-start.(
6d820 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 2d 63 6f point-max)).......(setq.gptel-co
6d840 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 20 20 20 ntext--buffer-reverse.nil)......
6d860 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 20 28 72 .(goto-char.next-start).......(r
6d880 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 29 20 34 ecenter.(floor.(window-height).4
6d8a0 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 72 65 76 )))))..(defun.gptel-context-prev
6d8c0 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 70 74 65 ious.()..."Move.to.previous.gpte
6d8e0 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 69 76 65 l.context.chunk."...(interactive
6d900 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 61 79 )...(let.((ov-here.(car.(overlay
6d920 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 2d 68 65 s-at.(point))))).....(when.ov-he
6d940 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 6f 76 2d re.(goto-char.(overlay-start.ov-
6d960 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 6f 6e 74 here))).....(let.((previous-cont
6d980 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 6e 67 65 ext-pos.(previous-overlay-change
6d9a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
6d9c0 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 6f 69 6e ..(previous-overlay-change.(poin
6d9e0 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 20 66 72 t))))).......;;.Prevent.point.fr
6da00 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 65 20 62 om.jumping.to.the.start.of.the.b
6da20 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 6f 75 73 uffer........(unless.(=.previous
6da40 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 20 20 20 -context-pos.(point-min)).......
6da60 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 2d 70 6f ..(goto-char.previous-context-po
6da80 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 77 69 6e s).........(recenter.(floor.(win
6daa0 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 20 67 70 dow-height).4)).........(setq.gp
6dac0 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 29 29 29 tel-context--buffer-reverse.t)))
6dae0 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 2d 64 65 ))..(defun.gptel-context-flag-de
6db00 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 78 74 20 letion.()..."Mark.gptel.context.
6db20 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 20 20 28 chunk.at.point.for.removal."...(
6db40 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 79 73 20 interactive)...(let*.((overlays.
6db60 28 69 66 20 28 75 73 65 2d 72 65 67 69 6f 6e 2d 70 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 (if.(use-region-p)..............
6db80 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 6e 2d 62 ..........(overlays-in.(region-b
6dba0 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 20 20 20 eginning).(region-end)).........
6dbc0 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 69 6e 74 .............(overlays-at.(point
6dbe0 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 20 20 20 ))))..........(deletion-ov).....
6dc00 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 66 2d 6e .....(marked-ovs.(cl-remove-if-n
6dc20 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.
6dc40 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 29 0a 20 'gptel-context-deletion-mark))..
6dc60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
6dc80 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 6b 65 64 ......overlays))).....(if.marked
6dca0 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 76 65 72 -ovs.........(mapc.#'delete-over
6dcc0 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 78 63 75 lay.marked-ovs).......(save-excu
6dce0 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 72 6c 61 rsion.........(dolist.(ov.overla
6dd00 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 67 65 74 ys)...........(when.(overlay-get
6dd20 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 20 20 20 .ov.'gptel-context).............
6dd40 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 29 0a 20 (goto-char.(overlay-start.ov))..
6dd60 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 28 6d 61 ...........(setq.deletion-ov.(ma
6dd80 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 20 28 6f ke-overlay.(overlay-start.ov).(o
6dda0 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 28 6f 76 verlay-end.ov))).............(ov
6ddc0 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 63 6f 6e erlay-put.deletion-ov.'gptel-con
6dde0 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 6f 6e 74 text.(overlay-get.ov.'gptel-cont
6de00 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 74 20 64 ext)).............(overlay-put.d
6de20 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 20 20 20 eletion-ov.'priority.-80).......
6de40 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 76 20 27 ......(overlay-put.deletion-ov.'
6de60 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 66 61 63 face.'gptel-context-deletion-fac
6de80 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 65 6c 65 e).............(overlay-put.dele
6dea0 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 6f 6e 2d tion-ov.'gptel-context-deletion-
6dec0 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 6f 6e 2d mark.t))))).....(if.(use-region-
6dee0 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 20 20 20 p).........(deactivate-mark)....
6df00 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 72 65 76 ...(if.gptel-context--buffer-rev
6df20 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 2d 70 72 erse...........(gptel-context-pr
6df40 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 74 2d 6e evious).........(gptel-context-n
6df60 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 74 2d 71 ext)))))..(defun.gptel-context-q
6df80 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 61 74 69 uit.()..."Cancel.pending.operati
6dfa0 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 75 2e 22 ons.and.return.to.gptel's.menu."
6dfc0 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 6f 77 29 ...(interactive)...(quit-window)
6dfe0 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 6c 2d 6d ...(call-interactively.#'gptel-m
6e000 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 6f 6e 66 enu))..(defun.gptel-context-conf
6e020 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 72 61 74 irm.()..."Confirm.pending.operat
6e040 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 75 2e ions.and.return.to.gptel's.menu.
6e060 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 20 61 6c "...(interactive)...;;.Delete.al
6e080 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 61 76 65 l.the.context.overlays.that.have
6e0a0 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 28 77 68 .been.marked.for.deletion....(wh
6e0c0 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 20 20 20 en-let*.((deletion-marks........
6e0e0 20 20 20 20 20 20 20 20 28 64 65 6c 71 20 6e 69 6c 20 28 6d 61 70 63 61 72 0a 20 20 20 20 20 20 ........(delq.nil.(mapcar.......
6e100 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 6f 76 29 ....................(lambda.(ov)
6e120 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 6e .............................(an
6e140 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 28 d..............................(
6e160 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 2d 64 65 overlay-get.ov.'gptel-context-de
6e180 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 20 20 20 letion-mark)....................
6e1a0 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 74 65 6c ..........(overlay-get.ov.'gptel
6e1c0 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 20 20 20 -context))).....................
6e1e0 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 29 20 28 ......(overlays-in.(point-min).(
6e200 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 70 74 65 point-max)))))).....(mapc.#'gpte
6e220 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 6b 73 29 l-context-remove.deletion-marks)
6e240 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 20 20 20 .....(gptel-context--collect)...
6e260 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 72 65 76 ........;Update.contexts.and.rev
6e280 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 2d 62 75 ert.buffer.(#482).....(revert-bu
6e2a0 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 29 0a 0a ffer))...(gptel-context-quit))..
6e2c0 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 67 70 74 (provide.'gptel-context).;;;.gpt
6e2e0 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 00 00 00 el-context.el.ends.here.........
6e300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6e320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6e340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6e360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6e380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6e3a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6e3c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6e3e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6e400 67 70 74 65 6c 2d 30 2e 39 2e 38 2f 4e 45 57 53 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 gptel-0.9.8/NEWS................
6e420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6e440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6e460 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
6e480 30 30 32 31 31 37 36 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 32 30 31 30 00 20 30 00 00 00 0021176.00000000000.012010..0...
6e4a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6e4c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6e4e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6e500 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...................
6e520 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...................
6e540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6e560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6e580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6e5a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6e5c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6e5e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6e600 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 20 32 30 #.-*-.mode:.org;.-*-..*.0.9.8.20
6e620 32 35 2d 30 33 2d 31 33 0a 0a 56 65 72 73 69 6f 6e 20 30 2e 39 2e 38 20 61 64 64 73 20 73 75 70 25-03-13..Version.0.9.8.adds.sup
6e640 70 6f 72 74 20 66 6f 72 20 6e 65 77 20 47 65 6d 69 6e 69 2c 20 41 6e 74 68 72 6f 70 69 63 2c 20 port.for.new.Gemini,.Anthropic,.
6e660 4f 70 65 6e 41 49 2c 0a 50 65 72 70 6c 65 78 69 74 79 2c 20 61 6e 64 20 44 65 65 70 53 65 65 6b OpenAI,.Perplexity,.and.DeepSeek
6e680 20 6d 6f 64 65 6c 73 2c 20 69 6e 74 72 6f 64 75 63 65 73 20 4c 4c 4d 20 74 6f 6f 6c 20 75 73 65 .models,.introduces.LLM.tool.use
6e6a0 2f 66 75 6e 63 74 69 6f 6e 0a 63 61 6c 6c 69 6e 67 2c 20 61 20 72 65 64 65 73 69 67 6e 20 6f 66 /function.calling,.a.redesign.of
6e6c0 20 7e 67 70 74 65 6c 2d 6d 65 6e 75 7e 2c 20 69 6e 63 6c 75 64 65 73 20 6e 65 77 20 63 75 73 74 .~gptel-menu~,.includes.new.cust
6e6e0 6f 6d 69 7a 61 74 69 6f 6e 20 68 6f 6f 6b 73 2c 0a 64 72 79 2d 72 75 6e 20 6f 70 74 69 6f 6e 73 omization.hooks,.dry-run.options
6e700 20 61 6e 64 20 72 65 66 69 6e 65 64 20 73 65 74 74 69 6e 67 73 2c 20 69 6d 70 72 6f 76 65 6d 65 .and.refined.settings,.improveme
6e720 6e 74 73 20 74 6f 20 74 68 65 20 72 65 77 72 69 74 65 0a 66 65 61 74 75 72 65 20 61 6e 64 20 63 nts.to.the.rewrite.feature.and.c
6e740 6f 6e 74 72 6f 6c 20 6f 66 20 4c 4c 4d 20 22 72 65 61 73 6f 6e 69 6e 67 22 20 63 6f 6e 74 65 6e ontrol.of.LLM."reasoning".conten
6e760 74 2e 0a 0a 2a 2a 20 42 72 65 61 6b 69 6e 67 20 63 68 61 6e 67 65 73 0a 0a 2d 20 7e 67 65 6d 69 t...**.Breaking.changes..-.~gemi
6e780 6e 69 2d 70 72 6f 7e 20 68 61 73 20 62 65 65 6e 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d 20 74 68 ni-pro~.has.been.removed.from.th
6e7a0 65 20 6c 69 73 74 20 6f 66 20 47 65 6d 69 6e 69 20 6d 6f 64 65 6c 73 2c 20 61 73 0a 20 20 74 68 e.list.of.Gemini.models,.as...th
6e7c0 69 73 20 6d 6f 64 65 6c 20 69 73 20 6e 6f 20 6c 6f 6e 67 65 72 20 73 75 70 70 6f 72 74 65 64 20 is.model.is.no.longer.supported.
6e7e0 62 79 20 74 68 65 20 47 65 6d 69 6e 69 20 41 50 49 2e 0a 0a 2d 20 53 65 6e 64 69 6e 67 20 61 6e by.the.Gemini.API...-.Sending.an
6e800 20 61 63 74 69 76 65 20 72 65 67 69 6f 6e 20 69 6e 20 4f 72 67 20 6d 6f 64 65 20 77 69 6c 6c 20 .active.region.in.Org.mode.will.
6e820 6e 6f 77 20 61 70 70 6c 79 20 4f 72 67 0a 20 20 6d 6f 64 65 2d 73 70 65 63 69 66 69 63 20 72 75 now.apply.Org...mode-specific.ru
6e840 6c 65 73 20 74 6f 20 74 68 65 20 74 65 78 74 2c 20 73 75 63 68 20 61 73 20 62 72 61 6e 63 68 69 les.to.the.text,.such.as.branchi
6e860 6e 67 20 63 6f 6e 74 65 78 74 2e 0a 0a 2d 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 6f 62 73 ng.context...-.The.following.obs
6e880 6f 6c 65 74 65 20 76 61 72 69 61 62 6c 65 73 20 61 6e 64 20 66 75 6e 63 74 69 6f 6e 73 20 68 61 olete.variables.and.functions.ha
6e8a0 76 65 20 62 65 65 6e 20 72 65 6d 6f 76 65 64 3a 0a 20 20 2d 20 7e 67 70 74 65 6c 2d 73 65 6e 64 ve.been.removed:...-.~gptel-send
6e8c0 2d 6d 65 6e 75 7e 3a 20 55 73 65 20 7e 67 70 74 65 6c 2d 6d 65 6e 75 7e 20 69 6e 73 74 65 61 64 -menu~:.Use.~gptel-menu~.instead
6e8e0 2e 0a 20 20 2d 20 7e 67 70 74 65 6c 2d 68 6f 73 74 7e 3a 20 55 73 65 20 7e 67 70 74 65 6c 2d 6d ....-.~gptel-host~:.Use.~gptel-m
6e900 61 6b 65 2d 6f 70 65 6e 61 69 7e 20 69 6e 73 74 65 61 64 2e 0a 20 20 2d 20 7e 67 70 74 65 6c 2d ake-openai~.instead....-.~gptel-
6e920 70 6c 61 79 62 61 63 6b 7e 3a 20 55 73 65 20 7e 67 70 74 65 6c 2d 73 74 72 65 61 6d 7e 20 69 6e playback~:.Use.~gptel-stream~.in
6e940 73 74 65 61 64 2e 0a 20 20 2d 20 7e 67 70 74 65 6c 2d 2d 64 65 62 75 67 7e 3a 20 55 73 65 20 7e stead....-.~gptel--debug~:.Use.~
6e960 67 70 74 65 6c 2d 6c 6f 67 2d 6c 65 76 65 6c 7e 20 69 6e 73 74 65 61 64 2e 0a 0a 2a 2a 20 4e 65 gptel-log-level~.instead...**.Ne
6e980 77 20 6d 6f 64 65 6c 73 20 61 6e 64 20 62 61 63 6b 65 6e 64 73 0a 0a 2d 20 41 64 64 20 73 75 70 w.models.and.backends..-.Add.sup
6e9a0 70 6f 72 74 20 66 6f 72 20 73 65 76 65 72 61 6c 20 6e 65 77 20 47 65 6d 69 6e 69 20 6d 6f 64 65 port.for.several.new.Gemini.mode
6e9c0 6c 73 20 69 6e 63 6c 75 64 69 6e 67 0a 20 20 7e 67 65 6d 69 6e 69 2d 32 2e 30 2d 66 6c 61 73 68 ls.including...~gemini-2.0-flash
6e9e0 7e 2c 20 7e 67 65 6d 69 6e 69 2d 32 2e 30 2d 70 72 6f 2d 65 78 70 7e 20 61 6e 64 0a 20 20 7e 67 ~,.~gemini-2.0-pro-exp~.and...~g
6ea00 65 6d 69 6e 69 2d 32 2e 30 2d 66 6c 61 73 68 2d 74 68 69 6e 6b 69 6e 67 2d 65 78 70 7e 2c 20 61 emini-2.0-flash-thinking-exp~,.a
6ea20 6d 6f 6e 67 20 6f 74 68 65 72 73 2e 0a 0a 2d 20 41 64 64 20 73 75 70 70 6f 72 74 20 66 6f 72 20 mong.others...-.Add.support.for.
6ea40 74 68 65 20 41 6e 74 68 72 6f 70 69 63 20 6d 6f 64 65 6c 20 7e 63 6c 61 75 64 65 2d 33 2d 37 2d the.Anthropic.model.~claude-3-7-
6ea60 73 6f 6e 6e 65 74 2d 32 30 32 35 30 32 31 39 7e 2c 0a 20 20 69 6e 63 6c 75 64 69 6e 67 20 69 74 sonnet-20250219~,...including.it
6ea80 73 20 22 72 65 61 73 6f 6e 69 6e 67 22 20 6f 75 74 70 75 74 2e 0a 0a 2d 20 41 64 64 20 73 75 70 s."reasoning".output...-.Add.sup
6eaa0 70 6f 72 74 20 66 6f 72 20 4f 70 65 6e 41 49 27 73 20 7e 6f 31 7e 2c 20 7e 6f 33 2d 6d 69 6e 69 port.for.OpenAI's.~o1~,.~o3-mini
6eac0 7e 20 61 6e 64 20 7e 67 70 74 2d 34 2e 35 2d 70 72 65 76 69 65 77 7e 0a 20 20 6d 6f 64 65 6c 73 ~.and.~gpt-4.5-preview~...models
6eae0 2e 0a 0a 2d 20 41 64 64 20 73 75 70 70 6f 72 74 20 66 6f 72 20 50 65 72 70 6c 65 78 69 74 79 2e ...-.Add.support.for.Perplexity.
6eb00 20 20 57 68 69 6c 65 20 67 70 74 65 6c 20 73 75 70 70 6f 72 74 65 64 20 50 65 72 70 6c 65 78 69 ..While.gptel.supported.Perplexi
6eb20 74 79 20 69 6e 0a 20 20 65 61 72 6c 69 65 72 20 72 65 6c 65 61 73 65 73 20 62 79 20 72 65 75 73 ty.in...earlier.releases.by.reus
6eb40 69 6e 67 20 69 74 73 20 4f 70 65 6e 41 49 20 73 75 70 70 6f 72 74 2c 20 74 68 65 72 65 20 69 73 ing.its.OpenAI.support,.there.is
6eb60 20 6e 6f 77 20 66 69 72 73 74 0a 20 20 63 6c 61 73 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20 74 .now.first...class.support.for.t
6eb80 68 65 20 50 65 72 70 6c 65 78 69 74 79 20 41 50 49 2c 20 69 6e 63 6c 75 64 69 6e 67 20 63 69 74 he.Perplexity.API,.including.cit
6eba0 61 74 69 6f 6e 73 2e 20 20 28 54 68 69 73 0a 20 20 66 65 61 74 75 72 65 20 77 61 73 20 61 64 64 ations...(This...feature.was.add
6ebc0 65 64 20 62 79 20 40 70 69 72 6d 69 6e 6a 2e 29 0a 0a 2d 20 41 64 64 20 73 75 70 70 6f 72 74 20 ed.by.@pirminj.)..-.Add.support.
6ebe0 66 6f 72 20 44 65 65 70 53 65 65 6b 2e 20 20 57 68 69 6c 65 20 67 70 74 65 6c 20 73 75 70 70 6f for.DeepSeek...While.gptel.suppo
6ec00 72 74 65 64 20 44 65 65 70 53 65 65 6b 20 69 6e 20 65 61 72 6c 69 65 72 0a 20 20 72 65 6c 65 61 rted.DeepSeek.in.earlier...relea
6ec20 73 65 73 20 62 79 20 72 65 75 73 69 6e 67 20 69 74 73 20 4f 70 65 6e 41 49 20 73 75 70 70 6f 72 ses.by.reusing.its.OpenAI.suppor
6ec40 74 2c 20 74 68 65 72 65 20 69 73 20 6e 6f 77 20 66 69 72 73 74 20 63 6c 61 73 73 0a 20 20 73 75 t,.there.is.now.first.class...su
6ec60 70 70 6f 72 74 20 66 6f 72 20 74 68 65 20 44 65 65 70 53 65 65 6b 20 41 50 49 2c 20 69 6e 63 6c pport.for.the.DeepSeek.API,.incl
6ec80 75 64 69 6e 67 20 73 75 70 70 6f 72 74 20 66 6f 72 20 68 61 6e 64 6c 69 6e 67 0a 20 20 22 72 65 uding.support.for.handling..."re
6eca0 61 73 6f 6e 69 6e 67 22 20 6f 75 74 70 75 74 2e 0a 0a 2a 2a 20 4e 65 77 20 66 65 61 74 75 72 65 asoning".output...**.New.feature
6ecc0 73 20 61 6e 64 20 55 49 20 63 68 61 6e 67 65 73 0a 0a 2d 20 7e 67 70 74 65 6c 2d 72 65 77 72 69 s.and.UI.changes..-.~gptel-rewri
6ece0 74 65 7e 20 6e 6f 77 20 73 75 70 70 6f 72 74 73 20 69 74 65 72 61 74 69 6e 67 20 6f 6e 20 72 65 te~.now.supports.iterating.on.re
6ed00 73 70 6f 6e 73 65 73 2e 0a 0a 2d 20 67 70 74 65 6c 20 73 75 70 70 6f 72 74 73 20 74 68 65 20 61 sponses...-.gptel.supports.the.a
6ed20 62 69 6c 69 74 79 20 74 6f 20 73 69 6d 75 6c 61 74 65 2f 64 72 79 2d 72 75 6e 20 72 65 71 75 65 bility.to.simulate/dry-run.reque
6ed40 73 74 73 20 73 6f 20 79 6f 75 20 63 61 6e 0a 20 20 73 65 65 20 65 78 61 63 74 6c 79 20 77 68 61 sts.so.you.can...see.exactly.wha
6ed60 74 20 77 69 6c 6c 20 62 65 20 73 65 6e 74 2e 20 20 54 68 69 73 20 70 61 79 6c 6f 61 64 20 70 72 t.will.be.sent...This.payload.pr
6ed80 65 76 69 65 77 20 63 61 6e 20 6e 6f 77 20 62 65 0a 20 20 65 64 69 74 65 64 20 69 6e 20 70 6c 61 eview.can.now.be...edited.in.pla
6eda0 63 65 20 61 6e 64 20 74 68 65 20 72 65 71 75 65 73 74 20 63 6f 6e 74 69 6e 75 65 64 2e 0a 0a 2d ce.and.the.request.continued...-
6edc0 20 44 69 72 65 63 74 6f 72 69 65 73 20 63 61 6e 20 6e 6f 77 20 62 65 20 61 64 64 65 64 20 74 6f .Directories.can.now.be.added.to
6ede0 20 67 70 74 65 6c 27 73 20 67 6c 6f 62 61 6c 20 63 6f 6e 74 65 78 74 2e 20 20 44 6f 69 6e 67 20 .gptel's.global.context...Doing.
6ee00 73 6f 0a 20 20 77 69 6c 6c 20 61 64 64 20 61 6c 6c 20 66 69 6c 65 73 20 69 6e 20 74 68 65 20 64 so...will.add.all.files.in.the.d
6ee20 69 72 65 63 74 6f 72 79 20 72 65 63 75 72 73 69 76 65 6c 79 2e 0a 0a 2d 20 22 4f 6e 65 73 68 6f irectory.recursively...-."Onesho
6ee40 74 22 20 73 65 74 74 69 6e 67 73 3a 20 77 68 65 6e 20 75 73 69 6e 67 20 67 70 74 65 6c 27 73 20 t".settings:.when.using.gptel's.
6ee60 54 72 61 6e 73 69 65 6e 74 20 6d 65 6e 75 73 2c 20 72 65 71 75 65 73 74 0a 20 20 70 61 72 61 6d Transient.menus,.request...param
6ee80 65 74 65 72 73 2c 20 64 69 72 65 63 74 69 76 65 73 20 61 6e 64 20 74 6f 6f 6c 73 20 63 61 6e 20 eters,.directives.and.tools.can.
6eea0 6e 6f 77 20 62 65 20 73 65 74 20 66 6f 72 20 74 68 65 20 6e 65 78 74 20 72 65 71 75 65 73 74 0a now.be.set.for.the.next.request.
6eec0 20 20 6f 6e 6c 79 20 69 6e 20 61 64 64 69 74 69 6f 6e 20 74 6f 20 67 6c 6f 62 61 6c 6c 79 20 61 ..only.in.addition.to.globally.a
6eee0 63 72 6f 73 73 20 74 68 65 20 45 6d 61 63 73 20 73 65 73 73 69 6f 6e 20 61 6e 64 0a 20 20 62 75 cross.the.Emacs.session.and...bu
6ef00 66 66 65 72 2d 6c 6f 63 61 6c 6c 79 2e 20 20 54 68 69 73 20 69 73 20 75 73 65 66 75 6c 20 66 6f ffer-locally...This.is.useful.fo
6ef20 72 20 6d 61 6b 69 6e 67 20 6f 6e 65 2d 6f 66 66 20 72 65 71 75 65 73 74 73 20 77 69 74 68 0a 20 r.making.one-off.requests.with..
6ef40 20 64 69 66 66 65 72 65 6e 74 20 73 65 74 74 69 6e 67 73 2e 0a 0a 2d 20 7e 67 70 74 65 6c 2d 6d .different.settings...-.~gptel-m
6ef60 6f 64 65 7e 20 63 61 6e 20 6e 6f 77 20 62 65 20 75 73 65 64 20 69 6e 20 61 6c 6c 20 6d 6f 64 65 ode~.can.now.be.used.in.all.mode
6ef80 73 20 64 65 72 69 76 65 64 20 66 72 6f 6d 20 7e 74 65 78 74 2d 6d 6f 64 65 7e 2e 0a 0a 2d 20 67 s.derived.from.~text-mode~...-.g
6efa0 70 74 65 6c 20 6e 6f 77 20 74 72 69 65 73 20 74 6f 20 68 61 6e 64 6c 65 20 4c 4c 4d 20 72 65 73 ptel.now.tries.to.handle.LLM.res
6efc0 70 6f 6e 73 65 73 20 74 68 61 74 20 61 72 65 20 69 6e 20 6d 69 78 65 64 0a 20 20 4f 72 67 2f 4d ponses.that.are.in.mixed...Org/M
6efe0 61 72 6b 64 6f 77 6e 20 6d 61 72 6b 75 70 20 63 6f 72 72 65 63 74 6c 79 2e 0a 0a 2d 20 41 64 64 arkdown.markup.correctly...-.Add
6f000 20 7e 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 7e 20 74 6f .~gptel-org-convert-response~.to
6f020 20 74 6f 67 67 6c 65 20 74 68 65 20 61 75 74 6f 6d 61 74 69 63 20 63 6f 6e 76 65 72 73 69 6f 6e .toggle.the.automatic.conversion
6f040 0a 20 20 6f 66 20 28 70 6f 73 73 69 62 6c 79 29 20 4d 61 72 6b 64 6f 77 6e 2d 66 6f 72 6d 61 74 ...of.(possibly).Markdown-format
6f060 74 65 64 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 73 20 74 6f 20 4f 72 67 20 6d 61 72 6b 75 70 20 ted.LLM.responses.to.Org.markup.
6f080 77 68 65 72 65 0a 20 20 61 70 70 72 6f 70 72 69 61 74 65 2e 0a 0a 2d 20 59 6f 75 20 63 61 6e 20 where...appropriate...-.You.can.
6f0a0 6e 6f 77 20 6c 6f 6f 6b 20 75 70 20 72 65 67 69 73 74 65 72 65 64 20 67 70 74 65 6c 20 62 61 63 now.look.up.registered.gptel.bac
6f0c0 6b 65 6e 64 73 20 75 73 69 6e 67 20 74 68 65 0a 20 20 7e 67 70 74 65 6c 2d 67 65 74 2d 62 61 63 kends.using.the...~gptel-get-bac
6f0e0 6b 65 6e 64 7e 20 66 75 6e 63 74 69 6f 6e 2e 20 20 54 68 69 73 20 69 73 20 69 6e 74 65 6e 64 65 kend~.function...This.is.intende
6f100 64 20 74 6f 20 6d 61 6b 65 20 73 63 72 69 70 74 69 6e 67 0a 20 20 61 6e 64 20 63 6f 6e 66 69 67 d.to.make.scripting...and.config
6f120 75 72 69 6e 67 20 67 70 74 65 6c 20 65 61 73 69 65 72 2e 20 20 7e 67 70 74 65 6c 2d 67 65 74 2d uring.gptel.easier...~gptel-get-
6f140 62 61 63 6b 65 6e 64 7e 20 69 73 20 61 20 67 65 6e 65 72 61 6c 69 7a 65 64 0a 20 20 76 61 72 69 backend~.is.a.generalized...vari
6f160 61 62 6c 65 20 73 6f 20 79 6f 75 20 63 61 6e 20 28 75 6e 29 73 65 74 20 62 61 63 6b 65 6e 64 73 able.so.you.can.(un)set.backends
6f180 20 77 69 74 68 20 7e 73 65 74 66 7e 2e 0a 0a 2d 20 54 6f 6f 6c 20 75 73 65 3a 20 67 70 74 65 6c .with.~setf~...-.Tool.use:.gptel
6f1a0 20 6e 6f 77 20 73 75 70 70 6f 72 74 73 20 4c 4c 4d 20 74 6f 6f 6c 20 75 73 65 2c 20 6f 72 20 66 .now.supports.LLM.tool.use,.or.f
6f1c0 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 69 6e 67 2e 0a 20 20 45 73 73 65 6e 74 69 61 6c 6c 79 20 79 unction.calling....Essentially.y
6f1e0 6f 75 20 63 61 6e 20 65 71 75 69 70 20 74 68 65 20 4c 4c 4d 20 77 69 74 68 20 63 61 70 61 62 69 ou.can.equip.the.LLM.with.capabi
6f200 6c 69 74 69 65 73 20 28 73 75 63 68 20 61 73 0a 20 20 66 69 6c 65 73 79 73 74 65 6d 20 61 63 63 lities.(such.as...filesystem.acc
6f220 65 73 73 2c 20 77 65 62 20 73 65 61 72 63 68 2c 20 63 6f 6e 74 72 6f 6c 20 6f 66 20 45 6d 61 63 ess,.web.search,.control.of.Emac
6f240 73 20 6f 72 20 69 6e 74 72 6f 73 70 65 63 74 69 6f 6e 20 6f 66 0a 20 20 45 6d 61 63 73 27 20 73 s.or.introspection.of...Emacs'.s
6f260 74 61 74 65 20 61 6e 64 20 6d 6f 72 65 29 20 74 68 61 74 20 69 74 20 63 61 6e 20 75 73 65 20 74 tate.and.more).that.it.can.use.t
6f280 6f 20 70 65 72 66 6f 72 6d 20 74 61 73 6b 73 20 66 6f 72 20 79 6f 75 2e 0a 20 20 67 70 74 65 6c o.perform.tasks.for.you....gptel
6f2a0 20 72 75 6e 73 20 74 68 65 73 65 20 74 6f 6f 6c 73 20 75 73 69 6e 67 20 61 72 67 75 6d 65 6e 74 .runs.these.tools.using.argument
6f2c0 20 76 61 6c 75 65 73 20 70 72 6f 76 69 64 65 64 20 62 79 20 74 68 65 20 4c 4c 4d 73 2e 0a 20 20 .values.provided.by.the.LLMs....
6f2e0 54 68 69 73 20 72 65 71 75 69 72 65 73 20 73 70 65 63 69 66 79 69 6e 67 20 74 6f 6f 6c 73 2c 20 This.requires.specifying.tools,.
6f300 77 68 69 63 68 20 61 72 65 20 65 6c 69 73 70 20 66 75 6e 63 74 69 6f 6e 73 20 77 69 74 68 20 70 which.are.elisp.functions.with.p
6f320 6c 61 69 6e 0a 20 20 74 65 78 74 20 64 65 73 63 72 69 70 74 69 6f 6e 73 20 6f 66 20 74 68 65 69 lain...text.descriptions.of.thei
6f340 72 20 61 72 67 75 6d 65 6e 74 73 20 61 6e 64 20 72 65 73 75 6c 74 73 2e 20 20 67 70 74 65 6c 20 r.arguments.and.results...gptel.
6f360 64 6f 65 73 20 6e 6f 74 0a 20 20 69 6e 63 6c 75 64 65 20 61 6e 79 20 74 6f 6f 6c 73 20 6f 75 74 does.not...include.any.tools.out
6f380 20 6f 66 20 74 68 65 20 62 6f 78 20 79 65 74 2e 0a 0a 2d 20 59 6f 75 20 63 61 6e 20 6c 6f 6f 6b .of.the.box.yet...-.You.can.look
6f3a0 20 75 70 20 72 65 67 69 73 74 65 72 65 64 20 67 70 74 65 6c 20 74 6f 6f 6c 73 20 75 73 69 6e 67 .up.registered.gptel.tools.using
6f3c0 20 74 68 65 20 7e 67 70 74 65 6c 2d 67 65 74 2d 74 6f 6f 6c 7e 0a 20 20 66 75 6e 63 74 69 6f 6e .the.~gptel-get-tool~...function
6f3e0 2e 20 20 54 68 69 73 20 69 73 20 69 6e 74 65 6e 64 65 64 20 74 6f 20 6d 61 6b 65 20 73 63 72 69 ...This.is.intended.to.make.scri
6f400 70 74 69 6e 67 20 61 6e 64 20 63 6f 6e 66 69 67 75 72 69 6e 67 20 67 70 74 65 6c 0a 20 20 65 61 pting.and.configuring.gptel...ea
6f420 73 69 65 72 2e 20 20 7e 67 70 74 65 6c 2d 67 65 74 2d 74 6f 6f 6c 7e 20 69 73 20 61 20 67 65 6e sier...~gptel-get-tool~.is.a.gen
6f440 65 72 61 6c 69 7a 65 64 20 76 61 72 69 61 62 6c 65 20 73 6f 20 79 6f 75 20 63 61 6e 0a 20 20 28 eralized.variable.so.you.can...(
6f460 75 6e 29 73 65 74 20 74 6f 6f 6c 73 20 77 69 74 68 20 7e 73 65 74 66 7e 2e 0a 0a 2d 20 4e 65 77 un)set.tools.with.~setf~...-.New
6f480 20 68 6f 6f 6b 73 20 66 6f 72 20 63 75 73 74 6f 6d 69 7a 61 74 69 6f 6e 3a 0a 20 20 2b 20 7e 67 .hooks.for.customization:...+.~g
6f4a0 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 66 69 6c 74 65 72 2d 68 6f 6f 6b 7e 20 72 75 6e 73 20 69 6e ptel-prompt-filter-hook~.runs.in
6f4c0 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 67 0a 20 .a.temporary.buffer.containing..
6f4e0 20 20 20 74 68 65 20 74 65 78 74 20 74 6f 20 62 65 20 73 65 6e 74 2c 20 62 65 66 6f 72 65 20 74 ...the.text.to.be.sent,.before.t
6f500 68 65 20 66 75 6c 6c 20 71 75 65 72 79 20 69 73 20 63 72 65 61 74 65 64 2e 20 20 49 74 20 63 61 he.full.query.is.created...It.ca
6f520 6e 20 62 65 0a 20 20 20 20 75 73 65 64 20 66 6f 72 20 61 72 62 69 74 72 61 72 79 20 74 65 78 74 n.be.....used.for.arbitrary.text
6f540 20 74 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 73 20 74 6f 20 74 68 65 20 73 6f 75 72 63 65 20 74 .transformations.to.the.source.t
6f560 65 78 74 2e 0a 20 20 2b 20 7e 67 70 74 65 6c 2d 70 6f 73 74 2d 72 65 71 75 65 73 74 2d 68 6f 6f ext....+.~gptel-post-request-hoo
6f580 6b 7e 20 72 75 6e 73 20 61 66 74 65 72 20 74 68 65 20 72 65 71 75 65 73 74 20 69 73 20 73 65 6e k~.runs.after.the.request.is.sen
6f5a0 74 2c 20 61 6e 64 0a 20 20 20 20 28 70 6f 73 73 69 62 6c 79 29 20 62 65 66 6f 72 65 20 61 6e 79 t,.and.....(possibly).before.any
6f5c0 20 72 65 73 70 6f 6e 73 65 20 69 73 20 72 65 63 65 69 76 65 64 2e 20 20 54 68 69 73 20 69 73 20 .response.is.received...This.is.
6f5e0 69 6e 74 65 6e 64 65 64 20 66 6f 72 0a 20 20 20 20 70 72 65 70 61 72 61 74 6f 72 79 2f 72 65 73 intended.for.....preparatory/res
6f600 65 74 20 63 6f 64 65 2e 0a 20 20 2b 20 7e 67 70 74 65 6c 2d 70 6f 73 74 2d 72 65 77 72 69 74 65 et.code....+.~gptel-post-rewrite
6f620 2d 68 6f 6f 6b 7e 20 72 75 6e 73 20 61 66 74 65 72 20 61 20 7e 67 70 74 65 6c 2d 72 65 77 72 69 -hook~.runs.after.a.~gptel-rewri
6f640 74 65 7e 20 72 65 71 75 65 73 74 20 69 73 0a 20 20 20 20 73 75 63 63 65 73 73 66 75 6c 6c 79 20 te~.request.is.....successfully.
6f660 61 6e 64 20 66 75 6c 6c 79 20 72 65 63 65 69 76 65 64 2e 0a 0a 2d 20 7e 67 70 74 65 6c 2d 6d 65 and.fully.received...-.~gptel-me
6f680 6e 75 7e 20 68 61 73 20 62 65 65 6e 20 72 65 64 65 73 69 67 6e 65 64 2e 20 20 49 74 20 6e 6f 77 nu~.has.been.redesigned...It.now
6f6a0 20 73 68 6f 77 73 20 61 20 76 65 72 62 6f 73 65 0a 20 20 64 65 73 63 72 69 70 74 69 6f 6e 20 6f .shows.a.verbose...description.o
6f6c0 66 20 77 68 61 74 20 77 69 6c 6c 20 62 65 20 73 65 6e 74 20 61 6e 64 20 77 68 65 72 65 20 74 68 f.what.will.be.sent.and.where.th
6f6e0 65 20 6f 75 74 70 75 74 20 77 69 6c 6c 20 67 6f 2e 20 20 54 68 69 73 0a 20 20 69 73 20 69 6e 74 e.output.will.go...This...is.int
6f700 65 6e 64 65 64 20 74 6f 20 70 72 6f 76 69 64 65 20 63 6c 61 72 69 74 79 20 6f 6e 20 67 70 74 65 ended.to.provide.clarity.on.gpte
6f720 6c 27 73 20 64 65 66 61 75 6c 74 20 70 72 6f 6d 70 74 69 6e 67 0a 20 20 62 65 68 61 76 69 6f 72 l's.default.prompting...behavior
6f740 2c 20 61 73 20 77 65 6c 6c 20 61 73 20 74 68 65 20 65 66 66 65 63 74 20 6f 66 20 74 68 65 20 76 ,.as.well.as.the.effect.of.the.v
6f760 61 72 69 6f 75 73 20 70 72 6f 6d 70 74 2f 72 65 73 70 6f 6e 73 65 0a 20 20 72 65 64 69 72 65 63 arious.prompt/response...redirec
6f780 74 69 6f 6e 20 69 74 20 70 72 6f 76 69 64 65 73 2e 20 20 49 6e 63 6f 6d 70 61 74 69 62 6c 65 20 tion.it.provides...Incompatible.
6f7a0 63 6f 6d 62 69 6e 61 74 69 6f 6e 73 20 6f 66 20 6f 70 74 69 6f 6e 73 20 61 72 65 0a 20 20 6e 6f combinations.of.options.are...no
6f7c0 77 20 64 69 73 61 6c 6c 6f 77 65 64 2e 0a 0a 2d 20 54 68 65 20 73 70 61 63 69 6e 67 20 62 65 74 w.disallowed...-.The.spacing.bet
6f7e0 77 65 65 6e 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20 70 72 6f 6d 70 74 20 61 6e 64 20 74 ween.the.end.of.the.prompt.and.t
6f800 68 65 20 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20 74 68 65 0a 20 20 72 65 73 70 6f 6e 73 65 20 69 he.beginning.of.the...response.i
6f820 6e 20 62 75 66 66 65 72 73 20 69 73 20 6e 6f 77 20 63 75 73 74 6f 6d 69 7a 61 62 6c 65 20 76 69 n.buffers.is.now.customizable.vi
6f840 61 0a 20 20 7e 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 73 65 70 61 72 61 74 6f 72 7e 2c 20 a...~gptel-response-separator~,.
6f860 61 6e 64 20 63 61 6e 20 62 65 20 61 6e 79 20 73 74 72 69 6e 67 2e 0a 0a 2d 20 7e 67 70 74 65 6c and.can.be.any.string...-.~gptel
6f880 2d 63 6f 6e 74 65 78 74 2d 72 65 6d 6f 76 65 2d 61 6c 6c 7e 20 69 73 20 6e 6f 77 20 61 6e 20 69 -context-remove-all~.is.now.an.i
6f8a0 6e 74 65 72 61 63 74 69 76 65 20 63 6f 6d 6d 61 6e 64 2e 0a 0a 2d 20 67 70 74 65 6c 20 6e 6f 77 nteractive.command...-.gptel.now
6f8c0 20 68 61 6e 64 6c 65 73 20 22 72 65 61 73 6f 6e 69 6e 67 22 20 63 6f 6e 74 65 6e 74 20 70 72 6f .handles."reasoning".content.pro
6f8e0 64 75 63 65 64 20 62 79 20 4c 4c 4d 73 2e 20 20 53 6f 6d 65 20 4c 4c 4d 73 0a 20 20 69 6e 63 6c duced.by.LLMs...Some.LLMs...incl
6f900 75 64 65 20 69 6e 20 74 68 65 69 72 20 72 65 73 70 6f 6e 73 65 20 61 20 22 74 68 69 6e 6b 69 6e ude.in.their.response.a."thinkin
6f920 67 22 20 6f 72 20 22 72 65 61 73 6f 6e 69 6e 67 22 20 73 65 63 74 69 6f 6e 2e 20 20 54 68 69 73 g".or."reasoning".section...This
6f940 0a 20 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 79 20 6f 66 20 ...text.improves.the.quality.of.
6f960 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 75 74 20 6d 61 the.LLM...s.final.output,.but.ma
6f980 79 20 6e 6f 74 20 62 65 0a 20 20 69 6e 74 65 72 65 73 74 69 6e 67 20 74 6f 20 79 6f 75 20 62 79 y.not.be...interesting.to.you.by
6f9a0 20 69 74 73 65 6c 66 2e 20 20 54 68 65 20 6e 65 77 20 75 73 65 72 20 6f 70 74 69 6f 6e 0a 20 20 .itself...The.new.user.option...
6f9c0 7e 67 70 74 65 6c 2d 69 6e 63 6c 75 64 65 2d 72 65 61 73 6f 6e 69 6e 67 7e 20 63 6f 6e 74 72 6f ~gptel-include-reasoning~.contro
6f9e0 6c 73 20 77 68 65 74 68 65 72 20 61 6e 64 20 68 6f 77 20 67 70 74 65 6c 20 64 69 73 70 6c 61 79 ls.whether.and.how.gptel.display
6fa00 73 0a 20 20 74 68 69 73 20 63 6f 6e 74 65 6e 74 2e 0a 0a 2d 20 28 41 6e 74 68 72 6f 70 69 63 20 s...this.content...-.(Anthropic.
6fa20 41 50 49 20 6f 6e 6c 79 29 20 53 6f 6d 65 20 4c 4c 4d 20 62 61 63 6b 65 6e 64 73 20 63 61 6e 20 API.only).Some.LLM.backends.can.
6fa40 63 61 63 68 65 20 63 6f 6e 74 65 6e 74 20 73 65 6e 74 20 74 6f 20 69 74 0a 20 20 62 79 20 67 70 cache.content.sent.to.it...by.gp
6fa60 74 65 6c 2c 20 73 6f 20 74 68 61 74 20 6f 6e 6c 79 20 74 68 65 20 6e 65 77 6c 79 20 69 6e 63 6c tel,.so.that.only.the.newly.incl
6fa80 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 0a 20 uded.part.of.the.text.needs.to..
6faa0 20 62 65 20 70 72 6f 63 65 73 73 65 64 20 6f 6e 20 73 75 62 73 65 71 75 65 6e 74 20 63 6f 6e 76 .be.processed.on.subsequent.conv
6fac0 65 72 73 61 74 69 6f 6e 20 74 75 72 6e 73 2e 20 20 54 68 69 73 20 72 65 73 75 6c 74 73 20 69 6e ersation.turns...This.results.in
6fae0 0a 20 20 66 61 73 74 65 72 20 61 6e 64 20 73 69 67 6e 69 66 69 63 61 6e 74 6c 79 20 63 68 65 61 ...faster.and.significantly.chea
6fb00 70 65 72 20 70 72 6f 63 65 73 73 69 6e 67 2e 20 54 68 65 20 6e 65 77 20 75 73 65 72 20 6f 70 74 per.processing..The.new.user.opt
6fb20 69 6f 6e 0a 20 20 7e 67 70 74 65 6c 2d 63 61 63 68 65 7e 20 63 61 6e 20 62 65 20 75 73 65 64 20 ion...~gptel-cache~.can.be.used.
6fb40 74 6f 20 73 70 65 63 69 66 79 20 63 61 63 68 69 6e 67 20 70 72 65 66 65 72 65 6e 63 65 73 20 66 to.specify.caching.preferences.f
6fb60 6f 72 0a 20 20 70 72 6f 6d 70 74 73 2c 20 74 68 65 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 or...prompts,.the.system.message
6fb80 20 61 6e 64 2f 6f 72 20 74 6f 6f 6c 20 64 65 66 69 6e 69 74 69 6f 6e 73 2e 20 20 54 68 69 73 20 .and/or.tool.definitions...This.
6fba0 69 73 0a 20 20 73 75 70 70 6f 72 74 65 64 20 6f 6e 6c 79 20 62 79 20 74 68 65 20 41 6e 74 68 72 is...supported.only.by.the.Anthr
6fbc0 6f 70 69 63 20 41 50 49 20 72 69 67 68 74 20 6e 6f 77 2e 0a 0a 2d 20 28 4f 72 67 20 6d 6f 64 65 opic.API.right.now...-.(Org.mode
6fbe0 29 20 4f 72 67 20 70 72 6f 70 65 72 74 79 20 64 72 61 77 65 72 73 20 61 72 65 20 6e 6f 77 20 73 ).Org.property.drawers.are.now.s
6fc00 74 72 69 70 70 65 64 20 66 72 6f 6d 20 74 68 65 20 70 72 6f 6d 70 74 0a 20 20 74 65 78 74 20 62 tripped.from.the.prompt...text.b
6fc20 65 66 6f 72 65 20 73 65 6e 64 69 6e 67 20 71 75 65 72 69 65 73 2e 20 20 59 6f 75 20 63 61 6e 20 efore.sending.queries...You.can.
6fc40 63 6f 6e 74 72 6f 6c 20 74 68 69 73 20 62 65 68 61 76 69 6f 72 20 6f 72 0a 20 20 73 70 65 63 69 control.this.behavior.or...speci
6fc60 66 79 20 61 64 64 69 74 69 6f 6e 61 6c 20 4f 72 67 20 65 6c 65 6d 65 6e 74 73 20 74 6f 20 69 67 fy.additional.Org.elements.to.ig
6fc80 6e 6f 72 65 20 76 69 61 0a 20 20 7e 67 70 74 65 6c 2d 6f 72 67 2d 69 67 6e 6f 72 65 2d 65 6c 65 nore.via...~gptel-org-ignore-ele
6fca0 6d 65 6e 74 73 7e 2e 20 20 28 46 6f 72 20 6d 6f 72 65 20 63 6f 6d 70 6c 65 78 20 70 72 65 2d 70 ments~...(For.more.complex.pre-p
6fcc0 72 6f 63 65 73 73 69 6e 67 20 79 6f 75 0a 20 20 63 61 6e 20 75 73 65 20 7e 67 70 74 65 6c 2d 70 rocessing.you...can.use.~gptel-p
6fce0 72 6f 6d 70 74 2d 66 69 6c 74 65 72 2d 68 6f 6f 6b 7e 2e 29 0a 0a 2a 2a 20 4e 6f 74 61 62 6c 65 rompt-filter-hook~.)..**.Notable
6fd00 20 42 75 67 20 66 69 78 65 73 0a 0a 2d 20 46 69 78 20 72 65 73 70 6f 6e 73 65 20 6d 69 78 2d 75 .Bug.fixes..-.Fix.response.mix-u
6fd20 70 20 77 68 65 6e 20 72 75 6e 6e 69 6e 67 20 63 6f 6e 63 75 72 72 65 6e 74 20 72 65 71 75 65 73 p.when.running.concurrent.reques
6fd40 74 73 20 69 6e 20 4f 72 67 20 6d 6f 64 65 0a 20 20 62 75 66 66 65 72 73 2e 0a 2d 20 67 70 74 65 ts.in.Org.mode...buffers..-.gpte
6fd60 6c 20 6e 6f 77 20 77 6f 72 6b 73 20 61 72 6f 75 6e 64 20 61 6e 20 4f 72 67 20 66 6f 6e 74 69 66 l.now.works.around.an.Org.fontif
6fd80 69 63 61 74 69 6f 6e 20 62 75 67 20 77 68 65 72 65 20 73 74 72 65 61 6d 69 6e 67 0a 20 20 72 65 ication.bug.where.streaming...re
6fda0 73 70 6f 6e 73 65 73 20 69 6e 20 4f 72 67 20 6d 6f 64 65 20 62 75 66 66 65 72 73 20 73 6f 6d 65 sponses.in.Org.mode.buffers.some
6fdc0 74 69 6d 65 73 20 63 61 75 73 65 64 20 73 6f 75 72 63 65 20 63 6f 64 65 20 62 6c 6f 63 6b 73 20 times.caused.source.code.blocks.
6fde0 74 6f 0a 20 20 72 65 6d 61 69 6e 20 75 6e 66 6f 6e 74 69 66 69 65 64 2e 0a 0a 2a 20 30 2e 39 2e to...remain.unfontified...*.0.9.
6fe00 37 20 32 30 32 34 2d 31 32 2d 30 34 0a 0a 56 65 72 73 69 6f 6e 20 30 2e 39 2e 37 20 61 64 64 73 7.2024-12-04..Version.0.9.7.adds
6fe20 20 64 79 6e 61 6d 69 63 20 64 69 72 65 63 74 69 76 65 73 2c 20 61 20 62 65 74 74 65 72 20 72 65 .dynamic.directives,.a.better.re
6fe40 77 72 69 74 65 20 69 6e 74 65 72 66 61 63 65 2c 0a 73 74 72 65 61 6d 69 6e 67 20 73 75 70 70 6f write.interface,.streaming.suppo
6fe60 72 74 20 74 6f 20 74 68 65 20 67 70 74 65 6c 20 72 65 71 75 65 73 74 20 41 50 49 2c 20 61 6e 64 rt.to.the.gptel.request.API,.and
6fe80 20 6d 6f 72 65 20 66 6c 65 78 69 62 6c 65 0a 6d 6f 64 65 6c 2f 62 61 63 6b 65 6e 64 20 63 6f 6e .more.flexible.model/backend.con
6fea0 66 69 67 75 72 61 74 69 6f 6e 2e 0a 0a 2a 2a 20 42 72 65 61 6b 69 6e 67 20 63 68 61 6e 67 65 73 figuration...**.Breaking.changes
6fec0 0a 7e 67 70 74 65 6c 2d 72 65 77 72 69 74 65 2d 6d 65 6e 75 7e 20 68 61 73 20 62 65 65 6e 20 6f .~gptel-rewrite-menu~.has.been.o
6fee0 62 73 6f 6c 65 74 65 64 2e 20 20 55 73 65 20 7e 67 70 74 65 6c 2d 72 65 77 72 69 74 65 7e 20 69 bsoleted...Use.~gptel-rewrite~.i
6ff00 6e 73 74 65 61 64 2e 0a 0a 2a 2a 20 42 61 63 6b 65 6e 64 73 0a 2d 20 41 64 64 20 73 75 70 70 6f nstead...**.Backends.-.Add.suppo
6ff20 72 74 20 66 6f 72 20 4f 70 65 6e 41 49 27 73 20 7e 6f 31 2d 70 72 65 76 69 65 77 7e 20 61 6e 64 rt.for.OpenAI's.~o1-preview~.and
6ff40 20 7e 6f 31 2d 6d 69 6e 69 7e 2e 0a 0a 2d 20 41 64 64 20 73 75 70 70 6f 72 74 20 66 6f 72 20 41 .~o1-mini~...-.Add.support.for.A
6ff60 6e 74 68 72 6f 70 69 63 27 73 20 43 6c 61 75 64 65 20 33 2e 35 20 48 61 69 6b 75 2e 0a 0a 2d 20 nthropic's.Claude.3.5.Haiku...-.
6ff80 41 64 64 20 73 75 70 70 6f 72 74 20 66 6f 72 20 78 41 49 2e 0a 0a 2d 20 41 64 64 20 73 75 70 70 Add.support.for.xAI...-.Add.supp
6ffa0 6f 72 74 20 66 6f 72 20 4e 6f 76 69 74 61 20 41 49 2e 0a 0a 2a 2a 20 4e 65 77 20 66 65 61 74 75 ort.for.Novita.AI...**.New.featu
6ffc0 72 65 73 20 61 6e 64 20 55 49 20 63 68 61 6e 67 65 73 0a 0a 2d 20 67 70 74 65 6c 27 73 20 64 69 res.and.UI.changes..-.gptel's.di
6ffe0 72 65 63 74 69 76 65 73 20 28 73 65 65 20 7e 67 70 74 65 6c 2d 64 69 72 65 63 74 69 76 65 73 7e rectives.(see.~gptel-directives~
70000 29 20 63 61 6e 20 6e 6f 77 20 62 65 20 64 79 6e 61 6d 69 63 2c 20 61 6e 64 0a 20 20 69 6e 63 6c ).can.now.be.dynamic,.and...incl
70020 75 64 65 20 6d 6f 72 65 20 74 68 61 6e 20 74 68 65 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 ude.more.than.the.system.message
70040 2e 20 20 59 6f 75 20 63 61 6e 20 22 70 72 65 2d 66 69 6c 6c 22 20 61 0a 20 20 63 6f 6e 76 65 72 ...You.can."pre-fill".a...conver
70060 73 61 74 69 6f 6e 20 77 69 74 68 20 63 61 6e 6e 65 64 20 75 73 65 72 2f 4c 4c 4d 20 6d 65 73 73 sation.with.canned.user/LLM.mess
70080 61 67 65 73 2e 20 20 44 69 72 65 63 74 69 76 65 73 20 63 61 6e 20 6e 6f 77 20 62 65 0a 20 20 66 ages...Directives.can.now.be...f
700a0 75 6e 63 74 69 6f 6e 73 20 74 68 61 74 20 64 79 6e 61 6d 69 63 61 6c 6c 79 20 67 65 6e 65 72 61 unctions.that.dynamically.genera
700c0 74 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 20 20 63 6f 6e 76 te.the.system.message.and...conv
700e0 65 72 73 61 74 69 6f 6e 20 68 69 73 74 6f 72 79 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20 63 75 ersation.history.based.on.the.cu
70100 72 72 65 6e 74 20 63 6f 6e 74 65 78 74 2e 20 20 54 68 69 73 20 70 61 76 65 73 20 74 68 65 0a 20 rrent.context...This.paves.the..
70120 20 77 61 79 20 66 6f 72 20 66 75 6c 6c 79 20 66 6c 65 78 69 62 6c 65 20 74 61 73 6b 2d 73 70 65 .way.for.fully.flexible.task-spe
70140 63 69 66 69 63 20 74 65 6d 70 6c 61 74 65 73 2c 20 77 68 69 63 68 20 74 68 65 20 55 49 20 64 6f cific.templates,.which.the.UI.do
70160 65 73 0a 20 20 6e 6f 74 20 79 65 74 20 73 75 70 70 6f 72 74 20 69 6e 20 66 75 6c 6c 2e 0a 0a 2d es...not.yet.support.in.full...-
70180 20 67 70 74 65 6c 27 73 20 72 65 77 72 69 74 65 20 69 6e 74 65 72 66 61 63 65 20 68 61 73 20 62 .gptel's.rewrite.interface.has.b
701a0 65 65 6e 20 72 65 77 6f 72 6b 65 64 2e 20 20 49 66 20 75 73 69 6e 67 20 61 20 73 74 72 65 61 6d een.reworked...If.using.a.stream
701c0 69 6e 67 0a 20 20 65 6e 64 70 6f 69 6e 74 2c 20 74 68 65 20 72 65 77 72 69 74 74 65 6e 20 74 65 ing...endpoint,.the.rewritten.te
701e0 78 74 20 69 73 20 73 74 72 65 61 6d 65 64 20 69 6e 20 61 73 20 61 20 70 72 65 76 69 65 77 20 70 xt.is.streamed.in.as.a.preview.p
70200 6c 61 63 65 64 20 6f 76 65 72 0a 20 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 2e 20 20 49 6e 20 61 laced.over...the.original...In.a
70220 6c 6c 20 63 61 73 65 73 2c 20 63 6c 69 63 6b 69 6e 67 20 6f 6e 20 74 68 65 20 70 72 65 76 69 65 ll.cases,.clicking.on.the.previe
70240 77 20 62 72 69 6e 67 73 20 75 70 20 61 0a 20 20 64 69 73 70 61 74 63 68 20 79 6f 75 20 63 61 6e w.brings.up.a...dispatch.you.can
70260 20 75 73 65 20 74 6f 20 65 61 73 69 6c 79 20 64 69 66 66 2c 20 65 64 69 66 66 2c 20 6d 65 72 67 .use.to.easily.diff,.ediff,.merg
70280 65 2c 20 61 63 63 65 70 74 20 6f 72 20 72 65 6a 65 63 74 0a 20 20 74 68 65 20 63 68 61 6e 67 65 e,.accept.or.reject...the.change
702a0 73 20 28 34 61 65 39 63 31 62 32 29 2c 20 61 6e 64 20 79 6f 75 20 63 61 6e 20 63 6f 6e 66 69 67 s.(4ae9c1b2),.and.you.can.config
702c0 75 72 65 20 67 70 74 65 6c 20 74 6f 20 72 75 6e 20 6f 6e 65 20 6f 66 0a 20 20 74 68 65 73 65 20 ure.gptel.to.run.one.of...these.
702e0 61 63 74 69 6f 6e 73 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2e 20 20 53 65 65 20 74 68 65 20 actions.automatically...See.the.
70300 52 45 41 44 4d 45 20 66 6f 72 20 65 78 61 6d 70 6c 65 73 2e 0a 0a 2d 20 7e 67 70 74 65 6c 2d 61 README.for.examples...-.~gptel-a
70320 62 6f 72 74 7e 2c 20 75 73 65 64 20 74 6f 20 63 61 6e 63 65 6c 20 72 65 71 75 65 73 74 73 20 69 bort~,.used.to.cancel.requests.i
70340 6e 20 70 72 6f 67 72 65 73 73 2c 20 6e 6f 77 20 77 6f 72 6b 73 20 61 63 72 6f 73 73 0a 20 20 74 n.progress,.now.works.across...t
70360 68 65 20 62 6f 61 72 64 2c 20 69 6e 63 6c 75 64 69 6e 67 20 77 68 65 6e 20 6e 6f 74 20 75 73 69 he.board,.including.when.not.usi
70380 6e 67 20 43 75 72 6c 20 6f 72 20 77 69 74 68 20 7e 67 70 74 65 6c 2d 72 65 77 72 69 74 65 7e 2e ng.Curl.or.with.~gptel-rewrite~.
703a0 0a 0a 2d 20 54 68 65 20 7e 67 70 74 65 6c 2d 72 65 71 75 65 73 74 7e 20 41 50 49 20 6e 6f 77 20 ..-.The.~gptel-request~.API.now.
703c0 65 78 70 6c 69 63 69 74 6c 79 20 73 75 70 70 6f 72 74 73 20 73 74 72 65 61 6d 69 6e 67 20 72 65 explicitly.supports.streaming.re
703e0 73 70 6f 6e 73 65 73 0a 20 20 2c 20 6d 61 6b 69 6e 67 20 69 74 20 65 61 73 79 20 74 6f 20 77 72 sponses...,.making.it.easy.to.wr
70400 69 74 65 20 79 6f 75 72 20 6f 77 6e 20 68 65 6c 70 65 72 73 20 6f 72 20 66 65 61 74 75 72 65 73 ite.your.own.helpers.or.features
70420 20 77 69 74 68 0a 20 20 73 74 72 65 61 6d 69 6e 67 20 73 75 70 70 6f 72 74 2e 20 20 54 68 65 20 .with...streaming.support...The.
70440 41 50 49 20 61 6c 73 6f 20 73 75 70 70 6f 72 74 73 20 7e 67 70 74 65 6c 2d 61 62 6f 72 74 7e 20 API.also.supports.~gptel-abort~.
70460 74 6f 20 73 74 6f 70 20 61 6e 64 0a 20 20 63 6c 65 61 6e 20 75 70 20 72 65 73 70 6f 6e 73 65 73 to.stop.and...clean.up.responses
70480 2e 0a 0a 2d 20 59 6f 75 20 63 61 6e 20 6e 6f 77 20 75 6e 73 65 74 20 74 68 65 20 73 79 73 74 65 ...-.You.can.now.unset.the.syste
704a0 6d 20 6d 65 73 73 61 67 65 20 2d 2d 20 64 69 66 66 65 72 65 6e 74 20 66 72 6f 6d 20 73 65 74 74 m.message.--.different.from.sett
704c0 69 6e 67 20 69 74 20 74 6f 0a 20 20 61 6e 20 65 6d 70 74 79 20 73 74 72 69 6e 67 2e 20 20 67 70 ing.it.to...an.empty.string...gp
704e0 74 65 6c 20 77 69 6c 6c 20 61 6c 73 6f 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 64 69 73 61 tel.will.also.automatically.disa
70500 62 6c 65 20 74 68 65 20 73 79 73 74 65 6d 0a 20 20 6d 65 73 73 61 67 65 20 77 68 65 6e 20 75 73 ble.the.system...message.when.us
70520 69 6e 67 20 6d 6f 64 65 6c 73 20 74 68 61 74 20 64 6f 6e 27 74 20 73 75 70 70 6f 72 74 20 69 74 ing.models.that.don't.support.it
70540 2e 0a 0a 2d 20 53 75 70 70 6f 72 74 20 66 6f 72 20 69 6e 63 6c 75 64 69 6e 67 20 50 44 46 73 20 ...-.Support.for.including.PDFs.
70560 77 69 74 68 20 72 65 71 75 65 73 74 73 20 74 6f 20 41 6e 74 68 72 6f 70 69 63 20 6d 6f 64 65 6c with.requests.to.Anthropic.model
70580 73 20 68 61 73 0a 20 20 62 65 65 6e 20 61 64 64 65 64 2e 20 20 28 54 68 65 73 65 20 71 75 65 72 s.has...been.added...(These.quer
705a0 69 65 73 20 61 72 65 20 63 61 63 68 65 64 2c 20 73 6f 20 79 6f 75 20 70 61 79 20 6f 6e 6c 79 20 ies.are.cached,.so.you.pay.only.
705c0 31 30 25 20 6f 66 20 74 68 65 0a 20 20 74 6f 6b 65 6e 20 63 6f 73 74 20 6f 66 20 74 68 65 20 50 10%.of.the...token.cost.of.the.P
705e0 44 46 20 69 6e 20 66 6f 6c 6c 6f 77 2d 75 70 20 71 75 65 72 69 65 73 2e 29 20 20 4e 6f 74 65 20 DF.in.follow-up.queries.)..Note.
70600 74 68 61 74 20 64 6f 63 75 6d 65 6e 74 0a 20 20 73 75 70 70 6f 72 74 20 28 50 44 46 73 20 65 74 that.document...support.(PDFs.et
70620 63 29 20 66 6f 72 20 47 65 6d 69 6e 69 20 6d 6f 64 65 6c 73 20 68 61 73 20 62 65 65 6e 20 61 76 c).for.Gemini.models.has.been.av
70640 61 69 6c 61 62 6c 65 20 73 69 6e 63 65 0a 20 20 76 30 2e 39 2e 35 2e 0a 0a 2d 20 57 68 65 6e 20 ailable.since...v0.9.5...-.When.
70660 64 65 66 69 6e 69 6e 67 20 61 20 67 70 74 65 6c 20 6d 6f 64 65 6c 20 6f 72 20 62 61 63 6b 65 6e defining.a.gptel.model.or.backen
70680 64 2c 20 79 6f 75 20 63 61 6e 20 73 70 65 63 69 66 79 20 61 72 62 69 74 72 61 72 79 0a 20 20 70 d,.you.can.specify.arbitrary...p
706a0 61 72 61 6d 65 74 65 72 73 20 74 6f 20 62 65 20 73 65 6e 74 20 77 69 74 68 20 65 61 63 68 20 72 arameters.to.be.sent.with.each.r
706c0 65 71 75 65 73 74 2e 20 20 54 68 69 73 20 69 6e 63 6c 75 64 65 73 20 74 68 65 20 28 6d 61 6e 79 equest...This.includes.the.(many
706e0 29 0a 20 20 41 50 49 20 6f 70 74 69 6f 6e 73 20 61 63 72 6f 73 73 20 61 6c 6c 20 41 50 49 73 20 )...API.options.across.all.APIs.
70700 74 68 61 74 20 67 70 74 65 6c 20 64 6f 65 73 20 6e 6f 74 20 79 65 74 20 70 72 6f 76 69 64 65 20 that.gptel.does.not.yet.provide.
70720 65 78 70 6c 69 63 69 74 0a 20 20 73 75 70 70 6f 72 74 20 66 6f 72 2e 0a 0a 2d 20 4e 65 77 20 74 explicit...support.for...-.New.t
70740 72 61 6e 73 69 65 6e 74 20 63 6f 6d 6d 61 6e 64 20 6f 70 74 69 6f 6e 20 74 6f 20 65 61 73 69 6c ransient.command.option.to.easil
70760 79 20 72 65 6d 6f 76 65 20 61 6c 6c 20 69 6e 63 6c 75 64 65 64 20 63 6f 6e 74 65 78 74 0a 20 20 y.remove.all.included.context...
70780 63 68 75 6e 6b 73 2e 0a 0a 2a 2a 20 4e 6f 74 61 62 6c 65 20 42 75 67 20 66 69 78 65 73 0a 2d 20 chunks...**.Notable.Bug.fixes.-.
707a0 50 72 65 73 73 69 6e 67 20 7e 52 45 54 7e 20 6f 6e 20 69 6e 63 6c 75 64 65 64 20 66 69 6c 65 73 Pressing.~RET~.on.included.files
707c0 20 69 6e 20 74 68 65 20 63 6f 6e 74 65 78 74 20 69 6e 73 70 65 63 74 6f 72 20 62 75 66 66 65 72 .in.the.context.inspector.buffer
707e0 20 6e 6f 77 0a 20 20 70 6f 70 73 20 75 70 20 74 68 65 20 66 69 6c 65 20 63 6f 72 72 65 63 74 6c .now...pops.up.the.file.correctl
70800 79 2e 0a 2d 20 41 50 49 20 6b 65 79 73 20 61 72 65 20 73 74 72 69 70 70 65 64 20 6f 66 20 77 68 y..-.API.keys.are.stripped.of.wh
70820 69 74 65 73 70 61 63 65 20 62 65 66 6f 72 65 20 73 65 6e 64 69 6e 67 2e 0a 2d 20 4d 75 6c 74 69 itespace.before.sending..-.Multi
70840 70 6c 65 20 55 49 2c 20 62 61 63 6b 65 6e 64 20 61 6e 64 20 70 72 6f 6d 70 74 20 63 6f 6e 73 74 ple.UI,.backend.and.prompt.const
70860 72 75 63 74 69 6f 6e 20 62 75 67 73 20 68 61 76 65 20 62 65 65 6e 20 66 69 78 65 64 2e 0a 00 00 ruction.bugs.have.been.fixed....
70880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
708a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
708c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
708e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
70900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
70920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
70940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
70960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
70980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
709a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
709c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
709e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
70a00 67 70 74 65 6c 2d 30 2e 39 2e 38 2f 67 70 74 65 6c 2d 72 65 77 72 69 74 65 2e 65 6c 00 00 00 00 gptel-0.9.8/gptel-rewrite.el....
70a20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
70a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
70a60 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
70a80 30 30 37 31 31 34 35 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 34 34 32 36 00 20 30 00 00 00 0071145.00000000000.014426..0...
70aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
70ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
70ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
70b00 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...................
70b20 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...................
70b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
70b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
70b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
70ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
70bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
70be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
70c00 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
70c20 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
70c40 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
70c60 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
70c80 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
70ca0 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>
70cc0 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
70ce0 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
70d00 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
70d20 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
70d40 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
70d60 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.;;
70d80 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
70da0 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,.
70dc0 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
70de0 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
70e00 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
70e20 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
70e40 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
70e60 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
70e80 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
70ea0 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.
70ec0 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.
70ee0 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.
70f00 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
70f20 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
70f40 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
70f60 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
70f80 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
70fa0 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)..(
70fc0 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
70fe0 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
71000 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
71020 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
71040 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")..
71060 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
71080 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.
710a0 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.
710c0 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
710e0 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
71100 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
71120 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.
71140 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
71160 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
71180 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
711a0 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
711c0 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
711e0 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
71200 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..
71220 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-
71240 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
71260 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
71280 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
712a0 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.
712c0 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
712e0 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
71300 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.
71320 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
71340 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:.
71360 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
71380 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
713a0 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
713c0 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
713e0 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
71400 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
71420 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
71440 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
71460 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
71480 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.
714a0 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
714c0 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
714e0 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
71500 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
71520 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.
71540 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
71560 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
71580 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
715a0 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
715c0 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
715e0 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
71600 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
71620 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
71640 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
71660 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
71680 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
716a0 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.
716c0 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
716e0 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
71700 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
71720 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).
71740 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
71760 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).....
71780 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
717a0 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
717c0 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)...........
717e0 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"))
71800 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
71820 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
71840 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)).
71860 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
71880 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
718a0 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))...
718c0 20 20 20 3a 62 61 63 6b 67 72 6f 75 6e 64 20 22 6c 69 67 68 74 20 67 6f 6c 64 65 6e 72 6f 64 20 ...:background."light.goldenrod.
718e0 79 65 6c 6c 6f 77 22 20 3a 65 78 74 65 6e 64 20 74 29 0a 20 20 20 20 28 74 20 3a 69 6e 68 65 72 yellow".:extend.t).....(t.:inher
71900 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 63 65 it.secondary-selection))..."Face
71920 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 20 70 .for.highlighting.regions.with.p
71940 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 74 65 ending.rewrites."...:group.'gpte
71960 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 79 6d l)..;;.*.Variables..(defvar-keym
71980 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 20 3a ap.gptel-rewrite-actions-map...:
719a0 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 61 63 doc."Keymap.for.gptel.rewrite.ac
719c0 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 65 6c tions.at.point."..."RET".#'gptel
719e0 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 3e 22 --rewrite-dispatch..."<mouse-1>"
71a00 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 43 2d .#'gptel--rewrite-dispatch..."C-
71a20 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 0a 20 c.C-a".#'gptel--rewrite-accept..
71a40 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 65 72 ."C-c.C-r".#'gptel--rewrite-iter
71a60 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 74 65 ate..."C-c.C-k".#'gptel--rewrite
71a80 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 65 77 -reject..."C-c.C-d".#'gptel--rew
71aa0 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 2d 72 rite-diff..."C-c.C-e".#'gptel--r
71ac0 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 65 6c ewrite-ediff..."C-c.C-n".#'gptel
71ae0 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 70 74 --rewrite-next..."C-c.C-p".#'gpt
71b00 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 6d 22 el--rewrite-previous..."C-c.C-m"
71b20 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 76 61 .#'gptel--rewrite-merge)..(defva
71b40 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 73 20 r-local.gptel--rewrite-overlays.
71b60 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 6f 76 nil..."List.of.active.rewrite.ov
71b80 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 61 72 erlays.in.the.buffer.")..(defvar
71ba0 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 6e 69 -local.gptel--rewrite-message.ni
71bc0 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 69 6f l..."Request-specific.instructio
71be0 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 22 29 ns.for.a.gptel-rewrite.action.")
71c00 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 20 74 ..;;.Add.the.rewrite.directive.t
71c20 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 61 6c o.`gptel-directives'.(unless.(al
71c40 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 76 65 ist-get.'rewrite.gptel-directive
71c60 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 74 69 s)...(add-to-list.'gptel-directi
71c80 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 69 74 ves.`(rewrite...,#'gptel--rewrit
71ca0 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 72 20 e-directive-default)))..(defvar.
71cc0 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 20 28 gptel--rewrite-directive...(or.(
71ce0 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
71d00 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 72 65 ves).......#'gptel--rewrite-dire
71d20 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 6d 20 ctive-default)..."Active.system.
71d40 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 54 68 message.for.rewrite.actions...Th
71d60 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 65 20 is.variable.is.for.internal.use.
71d80 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 65 0a only...To.customize.the.rewrite.
71da0 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 65 73 system.message,.set.a.system.mes
71dc0 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 65 73 sage.(or.function.that.generates
71de0 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 6c 75 .the.system.message).as.the.valu
71e00 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 65 6c e.of.the.`rewrite'.key.in.`gptel
71e20 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 65 74 -directives':...(setf.(alist-get
71e40 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 0a 20 .\\='rewrite.gptel-directives)..
71e60 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 67 65 ......#\\='my-rewrite-message-ge
71e80 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 7a 65 nerator)..You.can.also.customize
71ea0 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 6b 27 .`gptel-rewrite-directives-hook'
71ec0 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 74 65 .to.dynamically.inject.a.rewrite
71ee0 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 64 65 -specific.system.message.")..(de
71f00 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 65 66 fun.gptel--rewrite-directive-def
71f20 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 6f 72 ault.()..."Generic.directive.for
71f40 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 65 73 .rewriting.or.refactoring...Thes
71f60 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 63 20 e.are.instructions.not.specific.
71f80 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 6e 67 to.any.particular.required.chang
71fa0 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 65 72 e...The.returned.string.is.inter
71fc0 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 6f 72 preted.as.the.system.message.for
71fe0 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 79 6f .the.rewrite.request...To.use.yo
72000 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 69 76 ur.own,.add.a.different.directiv
72020 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 64 20 e.to.`gptel-directives',.or.add.
72040 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 6f 6f to.`gptel-rewrite-directives-hoo
72060 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 72 6b k',.which.see."...(or.(save-mark
72080 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 6f 6b -and-excursion.........(run-hook
720a0 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 20 20 -with-args-until-success........
720c0 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 6f 6b ..'gptel-rewrite-directives-hook
720e0 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 65 20 )).......(let*.((lang.(downcase.
72100 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 72 2d (gptel--strip-mode-suffix.major-
72120 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 28 69 mode)))..............(article.(i
72140 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 2d 70 f.(and.lang.(not.(string-empty-p
72160 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 20 20 .lang)).........................
72180 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 61 20 .......(memq.(aref.lang.0).'(?a.
721a0 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 20 20 ?e.?i.?o.?u)))..................
721c0 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 69 66 ........."an"."a"))).........(if
721e0 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 20 20 .(derived-mode-p.'prog-mode)....
72200 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 61 72 .........(format.(concat."You.ar
72220 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 20 20 e.%s.%s.programmer..."..........
72240 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 69 6e ..................."Follow.my.in
72260 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 65 20 structions.and.refactor.%s.code.
72280 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 20 20 I.provide.\n"...................
722a0 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 63 6f .........."-.Generate.ONLY.%s.co
722c0 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 20 20 de.as.output,.without.".........
722e0 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 6e 61 ...................."any.explana
72300 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 6e 22 tion.or.markdown.code.fences.\n"
72320 0a 20 20 20 20 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 ............................."-.
72340 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 61 62 Generate.code.in.full,.do.not.ab
72360 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 20 20 breviate.or.omit.code.\n".......
72380 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 74 20 ......................"-.Do.not.
723a0 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 20 61 ask.for.further.clarification,.a
723c0 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 20 20 nd.make.".......................
723e0 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 64 20 ......"any.assumptions.you.need.
72400 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 20 20 to.follow.instructions.").......
72420 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 67 20 ..............article.lang.lang.
72440 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 20 20 lang)...........(concat.........
72460 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 20 20 ...(if.(string-empty-p.lang)....
72480 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 2e 22 ............"You.are.an.editor."
724a0 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 20 25 ..............(format."You.are.%
724c0 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 20 20 s.%s.editor.".article.lang))....
724e0 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 6f 6e ........"..Follow.my.instruction
72500 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 65 78 s.and.improve.or.rewrite.the.tex
72520 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 6e 65 t.I.provide."............"..Gene
72540 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 2c 22 rate.ONLY.the.replacement.text,"
72560 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 61 6e ............".without.any.explan
72580 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 22 29 ation.or.markdown.code.fences.")
725a0 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 64 65 ))))..;;.*.Helper.functions..(de
725c0 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 61 6c fun.gptel--rewrite-key-help.(cal
725e0 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 66 75 lback)..."Eldoc.documentation.fu
72600 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 6e 73 nction.for.gptel.rewrite.actions
72620 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 6f 63 ...CALLBACK.is.supplied.by.Eldoc
72640 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 63 74 ,.see.`eldoc-documentation-funct
72660 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 77 72 ions'."...(when.(and.gptel--rewr
72680 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 2d 63 ite-overlays..............(get-c
726a0 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 72 har-property.(point).'gptel-rewr
726c0 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 20 20 ite)).......(funcall.callback...
726e0 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 74 65 .............(format.(substitute
72700 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 6c 61 -command-keys."%s.rewrite.availa
72720 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 61 63 ble:.accept.\\[gptel--rewrite-ac
72740 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 74 65 cept],.iterate.\\[gptel--rewrite
72760 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 72 69 -iterate],.clear.\\[gptel--rewri
72780 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 77 72 te-reject],.merge.\\[gptel--rewr
727a0 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 72 69 ite-merge],.diff.\\[gptel--rewri
727c0 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 77 72 te-diff].or.ediff.\\[gptel--rewr
727e0 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 20 20 ite-ediff]")....................
72800 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 6e 61 ....(propertize.(gptel--model-na
72820 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 6e 65 me.gptel-model).'face.'mode-line
72840 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 72 65 -emphasis)))))..(defun.gptel--re
72860 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 76 65 write-move.(search-func)..."Move
72880 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 69 74 .directionally.to.a.gptel.rewrit
728a0 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 0a 20 e.location.using.SEARCH-FUNC."..
728c0 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 70 65 .(let*.((ov.(cdr.(get-char-prope
728e0 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 2d 72 rty-and-overlay.(point).'gptel-r
72900 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 78 63 ewrite)))..........(pt.(save-exc
72920 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 20 20 ursion................(if.ov....
72940 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 20 20 ................(goto-char......
72960 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 2d 66 ...............(funcall.search-f
72980 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 72 65 unc.(overlay-start.ov).'gptel-re
729a0 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 2d 63 write))..................(goto-c
729c0 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 20 28 har...................(max.(1-.(
729e0 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 70 74 funcall.search-func.(point).'gpt
72a00 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 20 20 el-rewrite))....................
72a20 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 20 20 ....(point-min))))..............
72a40 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 20 27 ..(funcall.search-func.(point).'
72a60 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 2d 63 gptel-rewrite)))).....(if.(get-c
72a80 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 29 0a har-property.pt.'gptel-rewrite).
72aa0 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 75 73 ........(goto-char.pt).......(us
72ac0 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 65 67 er-error."No.further.rewrite.reg
72ae0 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 69 74 ions!"))))..(defun.gptel--rewrit
72b00 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 67 20 e-next.()..."Go.to.next.pending.
72b20 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 65 78 LLM.rewrite.in.buffer,.if.one.ex
72b40 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 6c 2d ists."...(interactive)...(gptel-
72b60 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 61 72 -rewrite-move.#'next-single-char
72b80 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 65 6c -property-change))..(defun.gptel
72ba0 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 20 70 --rewrite-previous.()..."Go.to.p
72bc0 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 20 62 revious.pending.LLM.rewrite.in.b
72be0 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 72 61 uffer,.if.one.exists."...(intera
72c00 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 23 27 ctive)...(gptel--rewrite-move.#'
72c20 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 63 68 previous-single-char-property-ch
72c40 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 6f 76 ange))..(defun.gptel--rewrite-ov
72c60 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 63 6b erlay-at.(&optional.pt)..."Check
72c80 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 74 20 .for.a.gptel.rewrite.overlay.at.
72ca0 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 62 6c PT.and.return.it...If.no.suitabl
72cc0 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 72 72 e.overlay.is.found,.raise.an.err
72ce0 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 65 20 or."...(pcase-let.((`(,response.
72d00 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 72 2d ..,ov)................(get-char-
72d20 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 6f 69 property-and-overlay.(or.pt.(poi
72d40 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 20 20 nt)).'gptel-rewrite))...........
72d60 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 0a 20 ....(diff-entire-buffers.nil))..
72d80 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 6c 64 ...(unless.ov.(user-error."Could
72da0 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 65 6e .not.find.region.being.rewritten
72dc0 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 72 2d .")).....(unless.response.(user-
72de0 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 20 66 error."No.LLM.output.available.f
72e00 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 28 64 or.this.rewrite.")).....ov))..(d
72e20 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 66 66 efun.gptel--rewrite-prepare-buff
72e40 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 61 72 er.(ovs.&optional.buf)..."Prepar
72e60 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 61 70 e.new.buffer.with.LLM.changes.ap
72e80 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 75 73 plied.and.return.it...This.is.us
72ea0 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 4f 4e ed.for.(e)diff.purposes...RESPON
72ec0 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 72 65 SE.is.the.LLM.response...OVS.are
72ee0 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 68 61 .the.overlays.specifying.the.cha
72f00 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 65 6e nged.regions..BUF.is.the.(curren
72f20 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 66 20 t).buffer."...(setq.buf.(or.buf.
72f40 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 6f 76 (overlay-buffer.(or.(car-safe.ov
72f60 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 66 65 s).ovs))))...(with-current-buffe
72f80 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 69 6e r.buf.....(let.((pmin.(point-min
72fa0 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 29 0a ))...........(pmax.(point-max)).
72fc0 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 20 20 ..........(pt...(point))........
72fe0 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 20 20 ...;;.(mode.major-mode).........
73000 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 2a 67 ..(newbuf.(get-buffer-create."*g
73020 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 69 74 ptel-diff*"))...........(inhibit
73040 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 69 74 -read-only.t)...........(inhibit
73060 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 69 63 -message.t)).......(save-restric
73080 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 77 69 tion.........(widen).........(wi
730a0 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 20 20 th-current-buffer.newbuf........
730c0 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 6e 73 ...(erase-buffer)...........(ins
730e0 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 20 20 ert-buffer-substring.buf))).....
73100 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 6e 65 77 62 75 66 0a 20 20 ..(with-current-buffer.newbuf...
73120 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 6d 61 ......(narrow-to-region.pmin.pma
73140 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 20 20 x).........(goto-char.pt).......
73160 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 6c 6f ..;;.We.mostly.just.want.font-lo
73180 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 6f 6f cking.........;;.(delay-mode-hoo
731a0 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 41 70 ks.(funcall.mode)).........;;.Ap
731c0 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 66 65 ply.the.changes.to.the.new.buffe
731e0 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 20 20 r.........(save-excursion.......
73200 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 20 6e ....(gptel--rewrite-accept.ovs.n
73220 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 20 52 ewbuf))).......newbuf)))..;;.*.R
73240 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 6e 20 ewrite.action.functions..(defun.
73260 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 61 6c gptel--rewrite-reject.(&optional
73280 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 70 6f .ovs)..."Clear.pending.LLM.respo
732a0 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 6e 74 nses.in.OVS.or.at.point."...(int
732c0 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 2d 6f eractive.(list.(gptel--rewrite-o
732e0 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 73 75 verlay-at)))...(dolist.(ov.(ensu
73300 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 2d 72 re-list.ovs)).....(setq.gptel--r
73320 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 2d 2d ewrite-overlays.(delq.ov.gptel--
73340 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 2d 6f rewrite-overlays)).....(delete-o
73360 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 65 77 verlay.ov))...(unless.gptel--rew
73380 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 20 27 rite-overlays.....(remove-hook.'
733a0 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 27 67 eldoc-documentation-functions.'g
733c0 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 29 0a ptel--rewrite-key-help.'local)).
733e0 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 4d 20 ..(message."Cleared.pending.LLM.
73400 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 2d 72 response(s)."))..(defun.gptel--r
73420 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 75 66 ewrite-accept.(&optional.ovs.buf
73440 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 65 73 )..."Apply.pending.LLM.responses
73460 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 68 65 .in.OVS.or.at.point...BUF.is.the
73480 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 20 74 .buffer.to.modify,.defaults.to.t
734a0 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 74 69 he.overlay.buffer."...(interacti
734c0 76 65 20 28 6c 69 73 74 20 28 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6f 76 65 72 6c 61 79 ve.(list.(gptel--rewrite-overlay
734e0 2d 61 74 29 29 29 0a 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 6f 76 2d 62 75 66 20 28 6f 76 -at)))...(when-let*.((ov-buf.(ov
73500 65 72 6c 61 79 2d 62 75 66 66 65 72 20 28 6f 72 20 28 63 61 72 2d 73 61 66 65 20 6f 76 73 29 20 erlay-buffer.(or.(car-safe.ovs).
73520 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 62 75 ovs)))...............(buf.(or.bu
73540 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 66 65 f.ov-buf))...............((buffe
73560 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 65 6e r-live-p.buf))).....(with-curren
73580 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 20 66 t-buffer.ov-buf.......(cl-loop.f
735a0 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 20 20 or.ov.in.(ensure-list.ovs)......
735c0 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 79 2d ..........for.ov-beg.=.(overlay-
735e0 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 76 2d start.ov)................for.ov-
73600 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 20 20 end.=.(overlay-end.ov)..........
73620 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 67 65 ......for.response.=.(overlay-ge
73640 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 20 20 t.ov.'gptel-rewrite)............
73660 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 2d 73 ....do.(overlay-put.ov.'before-s
73680 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 68 2d tring.nil)................(with-
736a0 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 20 20 current-buffer.buf..............
736c0 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 20 20 ....(goto-char.ov-beg)..........
736e0 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 6f 76 ........(delete-region.ov-beg.ov
73700 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 20 72 -end)..................(insert.r
73720 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 61 63 esponse)))).....(message."Replac
73740 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 6e 20 ed.region(s).with.LLM.output.in.
73760 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 66 65 buffer:.%s."..............(buffe
73780 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 67 70 r-name.ov-buf))))..(defalias.'gp
737a0 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 77 72 tel--rewrite-iterate.'gptel-rewr
737c0 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 72 65 ite..."Iterate.on.pending.LLM.re
737e0 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 65 6c sponse.at.point.")..(defun.gptel
73800 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 73 77 --rewrite-diff.(&optional.ovs.sw
73820 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 73 70 itches)..."Diff.pending.LLM.resp
73840 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 6e onses.in.OVS.or.at.point."...(in
73860 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 2d teractive.(list.(gptel--rewrite-
73880 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 76 2d overlay-at)))...(when-let*.((ov-
738a0 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 61 66 buf.(overlay-buffer.(or.(car-saf
738c0 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 62 75 e.ovs).ovs)))...............((bu
738e0 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 75 69 ffer-live-p.ov-buf))).....(requi
73900 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 67 70 re.'diff).....(let*.((newbuf.(gp
73920 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 73 29 tel--rewrite-prepare-buffer.ovs)
73940 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 6f 2d )............(diff-buf.(diff-no-
73960 73 65 6c 65 63 74 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 66 select.......................(if
73980 2d 6c 65 74 2a 20 28 28 62 75 66 2d 66 69 6c 65 20 28 62 75 66 66 65 72 2d 66 69 6c 65 2d 6e 61 -let*.((buf-file.(buffer-file-na
739a0 6d 65 20 6f 76 2d 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 me.ov-buf)))....................
739c0 20 20 20 20 20 20 20 28 65 78 70 61 6e 64 2d 66 69 6c 65 2d 6e 61 6d 65 20 62 75 66 2d 66 69 6c .......(expand-file-name.buf-fil
739e0 65 29 20 6f 76 2d 62 75 66 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 e).ov-buf)......................
73a00 20 6e 65 77 62 75 66 20 73 77 69 74 63 68 65 73 29 29 29 0a 20 20 20 20 20 20 28 77 69 74 68 2d .newbuf.switches))).......(with-
73a20 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 64 69 66 66 2d 62 75 66 0a 20 20 20 20 20 20 20 20 current-buffer.diff-buf.........
73a40 28 73 65 74 71 2d 6c 6f 63 61 6c 20 64 69 66 66 2d 6a 75 6d 70 2d 74 6f 2d 6f 6c 64 2d 66 69 6c (setq-local.diff-jump-to-old-fil
73a60 65 20 74 29 29 0a 20 20 20 20 20 20 28 64 69 73 70 6c 61 79 2d 62 75 66 66 65 72 20 64 69 66 66 e.t)).......(display-buffer.diff
73a80 2d 62 75 66 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d -buf))))..(defun.gptel--rewrite-
73aa0 65 64 69 66 66 20 28 26 6f 70 74 69 6f 6e 61 6c 20 6f 76 73 29 0a 20 20 22 45 64 69 66 66 20 70 ediff.(&optional.ovs)..."Ediff.p
73ac0 65 6e 64 69 6e 67 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 73 20 69 6e 20 4f 56 53 20 6f 72 20 61 ending.LLM.responses.in.OVS.or.a
73ae0 74 20 70 6f 69 6e 74 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 20 28 6c 69 73 74 20 28 t.point."...(interactive.(list.(
73b00 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)))...(
73b20 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
73b40 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)))....
73b60 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
73b80 66 29 29 29 0a 20 20 20 20 28 6c 65 74 72 65 63 20 28 28 6e 65 77 62 75 66 20 28 67 70 74 65 6c f))).....(letrec.((newbuf.(gptel
73ba0 2d 2d 72 65 77 72 69 74 65 2d 70 72 65 70 61 72 65 2d 62 75 66 66 65 72 20 6f 76 73 29 29 0a 20 --rewrite-prepare-buffer.ovs))..
73bc0 20 20 20 20 20 20 20 20 20 20 20 20 28 63 77 63 20 28 63 75 72 72 65 6e 74 2d 77 69 6e 64 6f 77 ............(cwc.(current-window
73be0 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 28 68 -configuration))..............(h
73c00 69 64 65 73 68 6f 77 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 26 ideshow...............(lambda.(&
73c20 6f 70 74 69 6f 6e 61 6c 20 72 65 73 74 6f 72 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 optional.restore)...............
73c40 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 29 29 ..(dolist.(ov.(ensure-list.ovs))
73c60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 ...................(when-let*.((
73c80 6f 76 65 72 6c 61 79 2d 62 75 66 66 65 72 20 6f 76 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 overlay-buffer.ov)).............
73ca0 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 64 69 73 70 20 28 6f 76 65 72 6c 61 79 2d 67 65 74 ........(let.((disp.(overlay-get
73cc0 20 6f 76 20 27 64 69 73 70 6c 61 79 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .ov.'display))..................
73ce0 20 20 20 20 20 20 20 20 20 28 73 74 6f 72 65 64 20 28 6f 76 65 72 6c 61 79 2d 67 65 74 20 6f 76 .........(stored.(overlay-get.ov
73d00 20 27 67 70 74 65 6c 2d 2d 65 64 69 66 66 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .'gptel--ediff)))...............
73d20 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 70 6c 61 79 ........(overlay-put.ov.'display
73d40 20 28 61 6e 64 20 72 65 73 74 6f 72 65 20 73 74 6f 72 65 64 29 29 0a 20 20 20 20 20 20 20 20 20 .(and.restore.stored))..........
73d60 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
73d80 74 65 6c 2d 2d 65 64 69 66 66 20 28 75 6e 6c 65 73 73 20 72 65 73 74 6f 72 65 20 64 69 73 70 29 tel--ediff.(unless.restore.disp)
73da0 29 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 65 64 69 66 ))))))..............(gptel--edif
73dc0 66 2d 72 65 73 74 6f 72 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 f-restore...............(lambda.
73de0 28 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 77 69 6e 64 6f 77 ().................(when.(window
73e00 2d 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2d 70 20 63 77 63 29 0a 20 20 20 20 20 20 20 20 20 20 -configuration-p.cwc)...........
73e20 20 20 20 20 20 20 20 20 28 73 65 74 2d 77 69 6e 64 6f 77 2d 63 6f 6e 66 69 67 75 72 61 74 69 6f ........(set-window-configuratio
73e40 6e 20 63 77 63 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c n.cwc)).................(funcall
73e60 20 68 69 64 65 73 68 6f 77 20 27 72 65 73 74 6f 72 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 .hideshow.'restore).............
73e80 20 20 20 20 28 72 65 6d 6f 76 65 2d 68 6f 6f 6b 20 27 65 64 69 66 66 2d 71 75 69 74 2d 68 6f 6f ....(remove-hook.'ediff-quit-hoo
73ea0 6b 20 67 70 74 65 6c 2d 2d 65 64 69 66 66 2d 72 65 73 74 6f 72 65 29 29 29 29 0a 20 20 20 20 20 k.gptel--ediff-restore))))......
73ec0 20 28 66 75 6e 63 61 6c 6c 20 68 69 64 65 73 68 6f 77 29 0a 20 20 20 20 20 20 28 61 64 64 2d 68 .(funcall.hideshow).......(add-h
73ee0 6f 6f 6b 20 27 65 64 69 66 66 2d 71 75 69 74 2d 68 6f 6f 6b 20 67 70 74 65 6c 2d 2d 65 64 69 66 ook.'ediff-quit-hook.gptel--edif
73f00 66 2d 72 65 73 74 6f 72 65 29 0a 20 20 20 20 20 20 28 65 64 69 66 66 2d 62 75 66 66 65 72 73 20 f-restore).......(ediff-buffers.
73f20 6f 76 2d 62 75 66 20 6e 65 77 62 75 66 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d ov-buf.newbuf))))..(defun.gptel-
73f40 2d 72 65 77 72 69 74 65 2d 6d 65 72 67 65 20 28 26 6f 70 74 69 6f 6e 61 6c 20 6f 76 73 29 0a 20 -rewrite-merge.(&optional.ovs)..
73f60 20 22 49 6e 73 65 72 74 20 70 65 6e 64 69 6e 67 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 73 20 69 ."Insert.pending.LLM.responses.i
73f80 6e 20 4f 56 53 20 61 73 20 6d 65 72 67 65 20 63 6f 6e 66 6c 69 63 74 73 2e 22 0a 20 20 28 69 6e n.OVS.as.merge.conflicts."...(in
73fa0 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 2d teractive.(list.(gptel--rewrite-
73fc0 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 76 2d overlay-at)))...(when-let*.((ov-
73fe0 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 61 66 buf.(overlay-buffer.(or.(car-saf
74000 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 62 75 e.ovs).ovs)))...............((bu
74020 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 77 69 74 68 2d ffer-live-p.ov-buf))).....(with-
74040 63 75 72 72 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 6c 65 74 current-buffer.ov-buf.......(let
74060 20 28 28 63 68 61 6e 67 65 64 29 29 0a 20 20 20 20 20 20 20 20 28 64 6f 6c 69 73 74 20 28 6f 76 .((changed)).........(dolist.(ov
74080 20 28 65 6e 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 28 73 .(ensure-list.ovs))...........(s
740a0 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 28 77 68 65 6e 2d ave-excursion.............(when-
740c0 6c 65 74 2a 20 28 28 6e 65 77 2d 73 74 72 20 28 6f 76 65 72 6c 61 79 2d 67 65 74 20 6f 76 20 27 let*.((new-str.(overlay-get.ov.'
740e0 67 70 74 65 6c 2d 72 65 77 72 69 74 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b gptel-rewrite)))...............;
74100 3b 20 49 6e 73 65 72 74 20 6d 65 72 67 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 6f ;.Insert.merge...............(go
74120 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 29 0a 20 20 20 20 to-char.(overlay-start.ov)).....
74140 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 74 ..........(unless.(bolp).(insert
74160 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 2d 62 65 ."\n"))...............(insert-be
74180 66 6f 72 65 2d 6d 61 72 6b 65 72 73 20 22 3c 3c 3c 3c 3c 3c 3c 20 6f 72 69 67 69 6e 61 6c 5c 6e fore-markers."<<<<<<<.original\n
741a0 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 72 20 28 6f 76 65 ")...............(goto-char.(ove
741c0 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 20 20 28 75 6e 6c rlay-end.ov))...............(unl
741e0 65 73 73 20 28 62 6f 6c 70 29 20 28 69 6e 73 65 72 74 20 22 5c 6e 22 29 29 0a 20 20 20 20 20 20 ess.(bolp).(insert."\n")).......
74200 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 ........(insert................"
74220 3d 3d 3d 3d 3d 3d 3d 5c 6e 22 20 6e 65 77 2d 73 74 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 =======\n".new-str..............
74240 20 20 22 5c 6e 3e 3e 3e 3e 3e 3e 3e 20 22 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 6e 61 .."\n>>>>>>>.".(gptel-backend-na
74260 6d 65 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 20 22 5c 6e 22 29 0a 20 20 20 20 20 20 20 20 me.gptel-backend)."\n").........
74280 20 20 20 20 20 20 28 73 65 74 71 20 63 68 61 6e 67 65 64 20 74 29 29 29 29 0a 20 20 20 20 20 20 ......(setq.changed.t)))).......
742a0 20 20 28 77 68 65 6e 20 63 68 61 6e 67 65 64 20 28 73 6d 65 72 67 65 2d 6d 6f 64 65 20 31 29 29 ..(when.changed.(smerge-mode.1))
742c0 29 0a 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 72 65 6a 65 63 74 20 6f ).......(gptel--rewrite-reject.o
742e0 76 73 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 64 69 vs))))..(defun.gptel--rewrite-di
74300 73 70 61 74 63 68 20 28 26 6f 70 74 69 6f 6e 61 6c 20 6f 76 20 63 69 29 0a 20 20 22 44 69 73 70 spatch.(&optional.ov.ci)..."Disp
74320 61 74 63 68 20 61 63 74 69 6f 6e 73 20 66 6f 72 20 67 70 74 65 6c 20 72 65 77 72 69 74 65 73 2e atch.actions.for.gptel.rewrites.
74340 0a 0a 4f 56 20 69 73 20 74 68 65 20 72 65 77 72 69 74 65 20 6f 76 65 72 6c 61 79 2c 20 43 49 20 ..OV.is.the.rewrite.overlay,.CI.
74360 69 73 20 74 72 75 65 20 66 6f 72 20 69 6e 74 65 72 61 63 74 69 76 65 20 63 61 6c 6c 73 2e 22 0a is.true.for.interactive.calls.".
74380 20 20 28 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 ..(interactive.(list.(gptel--rew
743a0 72 69 74 65 2d 6f 76 65 72 6c 61 79 2d 61 74 29 20 74 29 29 0a 20 20 28 6c 65 74 20 28 28 63 68 rite-overlay-at).t))...(let.((ch
743c0 6f 69 63 65 29 29 0a 20 20 20 20 28 75 6e 77 69 6e 64 2d 70 72 6f 74 65 63 74 0a 20 20 20 20 20 oice)).....(unwind-protect......
743e0 20 20 20 28 70 63 61 73 65 2d 6c 65 74 20 28 28 63 68 6f 69 63 65 73 20 27 28 28 3f 61 20 22 61 ...(pcase-let.((choices.'((?a."a
74400 63 63 65 70 74 22 29 20 28 3f 6b 20 22 72 65 6a 65 63 74 22 29 20 28 3f 72 20 22 69 74 65 72 61 ccept").(?k."reject").(?r."itera
74420 74 65 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 te")............................
74440 20 20 20 20 28 3f 6d 20 22 6d 65 72 67 65 22 29 20 28 3f 64 20 22 64 69 66 66 22 29 20 28 3f 65 ....(?m."merge").(?d."diff").(?e
74460 20 22 65 64 69 66 66 22 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ."ediff"))).....................
74480 28 68 69 6e 74 2d 73 74 72 20 28 63 6f 6e 63 61 74 20 22 5b 22 20 28 67 70 74 65 6c 2d 2d 6d 6f (hint-str.(concat."[".(gptel--mo
744a0 64 65 6c 2d 6e 61 6d 65 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 29 20 22 5d 5c 6e 22 29 29 29 0a 20 del-name.gptel-model)."]\n")))..
744c0 20 20 20 20 20 20 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75 74 0a 20 20 20 20 20 20 20 20 20 20 .........(overlay-put...........
744e0 20 6f 76 20 27 62 65 66 6f 72 65 2d 73 74 72 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 28 63 .ov.'before-string............(c
74500 6f 6e 63 61 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 65 71 20 28 63 oncat.............(unless.(eq.(c
74520 68 61 72 2d 62 65 66 6f 72 65 20 28 6f 76 65 72 6c 61 79 2d 73 74 61 72 74 20 6f 76 29 29 20 3f har-before.(overlay-start.ov)).?
74540 5c 6e 29 20 22 5c 6e 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a \n)."\n").............(propertiz
74560 65 20 22 52 45 57 52 49 54 45 20 52 45 41 44 59 3a 20 22 20 27 66 61 63 65 20 27 73 75 63 63 65 e."REWRITE.READY:.".'face.'succe
74580 73 73 29 0a 20 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 ss).............(mapconcat.(lamb
745a0 64 61 20 28 65 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 da.(e).(cdr.e)).(mapcar.#'rmc--a
745c0 64 64 2d 6b 65 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 dd-key-description.choices).",."
745e0 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 0a 20 20 20 20 20 20 ).............(propertize.......
74600 20 20 20 20 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 .......".".'display.`(space.:ali
74620 67 6e 2d 74 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 gn-to.(-.right.,(1+.(length.hint
74640 2d 73 74 72 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 -str))))).............(propertiz
74660 65 20 68 69 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 e.hint-str.'face.'success)))....
74680 20 20 20 20 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 .......(setq.choice.(read-multip
746a0 6c 65 2d 63 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 le-choice."Action:.".choices))).
746c0 20 20 20 20 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 ......(overlay-put.ov.'before-st
746e0 72 69 6e 67 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 ring.nil)).....(if.ci.........(c
74700 61 6c 6c 2d 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 all-interactively.(intern.(conca
74720 74 20 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 t."gptel--rewrite-".(cadr.choice
74740 29 29 29 29 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 )))).......(funcall.(intern.(con
74760 63 61 74 20 22 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 22 20 28 63 61 64 72 20 63 68 6f 69 cat."gptel--rewrite-".(cadr.choi
74780 63 65 29 29 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 ce))).ov))))..(defun.gptel--rewr
747a0 69 74 65 2d 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 ite-callback.(response.info)..."
747c0 43 61 6c 6c 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 Callback.for.gptel.rewrite.actio
747e0 6e 73 2e 0a 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 ns...Show.the.rewrite.result.in.
74800 61 6e 20 6f 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 an.overlay.over.the.original.tex
74820 74 2c 20 61 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 t,.and.set.up.dispatch.actions..
74840 0a 52 45 53 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 .RESPONSE.is.the.response.receiv
74860 65 64 2e 20 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 ed...It.may.also.be.t.(to.indica
74880 74 65 0a 73 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 te.success).nil.(to.indicate.fai
748a0 6c 75 72 65 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 lure),.or.the.symbol.`abort'...I
748c0 4e 46 4f 20 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 NFO.is.the.async.communication.c
748e0 68 61 6e 6e 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 hannel.for.the.rewrite.request."
74900 0a 20 20 28 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 ...(when-let*.((ov-and-buf.(plis
74920 74 2d 67 65 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 t-get.info.:context))...........
74940 20 20 20 20 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 ....(ov.(car.ov-and-buf)).......
74960 20 20 20 20 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 ........(proc-buf.(cdr.ov-and-bu
74980 66 29 29 0a 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 f))...............(buf.(overlay-
749a0 62 75 66 66 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 buffer.ov))).....(cond......((st
749c0 72 69 6e 67 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 ringp.response)................;
749e0 70 61 72 74 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 partial.or.fully.successful.resu
74a00 6c 74 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 70 72 lt.......(with-current-buffer.pr
74a20 6f 63 2d 62 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 oc-buf.....;auxiliary.buffer,.in
74a40 73 65 72 74 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 sert.text.here.and.copy.to.overl
74a60 61 79 0a 20 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 ay.........(let.((inhibit-modifi
74a80 63 61 74 69 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 cation-hooks.nil)...............
74aa0 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 20 (inhibit-read-only.t))..........
74ac0 20 28 77 68 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 .(when.(=.(buffer-size).0)......
74ae0 20 20 20 20 20 20 20 28 62 75 66 66 65 72 2d 64 69 73 61 62 6c 65 2d 75 6e 64 6f 29 0a 20 20 20 .......(buffer-disable-undo)....
74b00 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 2d .........(overlay-put.ov.'gptel-
74b20 72 65 77 72 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 rewrite.nil).............(insert
74b40 2d 62 75 66 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 -buffer-substring.buf.(overlay-s
74b60 74 61 72 74 20 6f 76 29 20 28 6f 76 65 72 6c 61 79 2d 65 6e 64 20 6f 76 29 29 0a 20 20 20 20 20 tart.ov).(overlay-end.ov))......
74b80 20 20 20 20 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 .......(when.(eq.(char-before.(p
74ba0 6f 69 6e 74 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 oint-max)).?\n)...............(p
74bc0 6c 69 73 74 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 list-put.info.:newline.t))......
74be0 20 20 20 20 20 20 20 28 64 65 6c 61 79 2d 6d 6f 64 65 2d 68 6f 6f 6b 73 20 28 66 75 6e 63 61 6c .......(delay-mode-hooks.(funcal
74c00 6c 20 28 62 75 66 66 65 72 2d 6c 6f 63 61 6c 2d 76 61 6c 75 65 20 27 6d 61 6a 6f 72 2d 6d 6f 64 l.(buffer-local-value.'major-mod
74c20 65 20 62 75 66 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 61 64 64 2d 74 65 78 74 2d 70 e.buf))).............(add-text-p
74c40 72 6f 70 65 72 74 69 65 73 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28 70 6f 69 6e 74 2d 6d 61 78 roperties.(point-min).(point-max
74c60 29 20 27 28 66 61 63 65 20 73 68 61 64 6f 77 20 66 6f 6e 74 2d 6c 6f 63 6b 2d 66 61 63 65 20 73 ).'(face.shadow.font-lock-face.s
74c80 68 61 64 6f 77 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 hadow)).............(goto-char.(
74ca0 70 6f 69 6e 74 2d 6d 69 6e 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 72 point-min)))...........(insert.r
74cc0 65 73 70 6f 6e 73 65 29 0a 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 65 6f 62 70 esponse)...........(unless.(eobp
74ce0 29 20 28 69 67 6e 6f 72 65 2d 65 72 72 6f 72 73 20 28 64 65 6c 65 74 65 2d 63 68 61 72 20 28 6c ).(ignore-errors.(delete-char.(l
74d00 65 6e 67 74 68 20 72 65 73 70 6f 6e 73 65 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 66 6f ength.response))))...........(fo
74d20 6e 74 2d 6c 6f 63 6b 2d 65 6e 73 75 72 65 29 0a 20 20 20 20 20 20 20 20 20 20 28 6f 76 65 72 6c nt-lock-ensure)...........(overl
74d40 61 79 2d 70 75 74 20 6f 76 20 27 64 69 73 70 6c 61 79 20 28 62 75 66 66 65 72 2d 73 74 72 69 6e ay-put.ov.'display.(buffer-strin
74d60 67 29 29 29 29 0a 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 70 6c 69 73 74 2d 67 65 74 20 69 g)))).......(unless.(plist-get.i
74d80 6e 66 6f 20 3a 73 74 72 65 61 6d 29 20 28 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 63 61 6c nfo.:stream).(gptel--rewrite-cal
74da0 6c 62 61 63 6b 20 74 20 69 6e 66 6f 29 29 29 0a 20 20 20 20 20 28 28 65 71 20 72 65 73 70 6f 6e lback.t.info)))......((eq.respon
74dc0 73 65 20 27 61 62 6f 72 74 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 72 65 71 75 65 73 74 se.'abort)..............;request
74de0 20 61 62 6f 72 74 65 64 0a 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 70 72 6f 63 .aborted.......(when-let*.((proc
74e00 2d 62 75 66 20 28 63 64 72 2d 73 61 66 65 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a -buf.(cdr-safe.(plist-get.info.:
74e20 63 6f 6e 74 65 78 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 6b 69 6c 6c 2d 62 75 66 66 65 72 context)))).........(kill-buffer
74e40 20 70 72 6f 63 2d 62 75 66 29 29 0a 20 20 20 20 20 20 28 64 65 6c 65 74 65 2d 6f 76 65 72 6c 61 .proc-buf)).......(delete-overla
74e60 79 20 6f 76 29 29 0a 20 20 20 20 20 28 28 6e 75 6c 6c 20 72 65 73 70 6f 6e 73 65 29 20 20 20 20 y.ov))......((null.response)....
74e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 66 69 6e 69 73 68 65 64 20 77 69 74 68 20 65 72 ...............;finished.with.er
74ea0 72 6f 72 0a 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 28 63 6f 6e 63 61 74 20 22 4c 4c 4d 20 ror.......(message.(concat."LLM.
74ec0 72 65 73 70 6f 6e 73 65 20 65 72 72 6f 72 3a 20 25 73 2e 20 52 65 77 72 69 74 65 20 69 6e 20 62 response.error:.%s..Rewrite.in.b
74ee0 75 66 66 65 72 20 25 73 20 63 61 6e 63 65 6c 65 64 2e 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 uffer.%s.canceled.")............
74f00 20 20 20 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 73 74 61 74 75 73 29 20 28 70 6c ....(plist-get.info.:status).(pl
74f20 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 62 75 66 66 65 72 29 29 0a 20 20 20 20 20 20 28 67 70 ist-get.info.:buffer)).......(gp
74f40 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 63 61 6c 6c 62 61 63 6b 20 27 61 62 6f 72 74 20 69 6e 66 tel--rewrite-callback.'abort.inf
74f60 6f 29 29 0a 20 20 20 20 20 28 28 63 6f 6e 73 70 20 72 65 73 70 6f 6e 73 65 29 29 20 3b 72 65 61 o))......((consp.response)).;rea
74f80 73 6f 6e 69 6e 67 20 6f 72 20 74 6f 6f 6c 20 63 61 6c 6c 73 20 2d 2d 20 64 6f 6e 27 74 20 63 61 soning.or.tool.calls.--.don't.ca
74fa0 72 65 20 61 6e 64 20 6e 6f 74 20 69 6d 70 6c 65 6d 65 6e 74 65 64 2c 20 72 65 73 70 65 63 74 69 re.and.not.implemented,.respecti
74fc0 76 65 6c 79 0a 20 20 20 20 20 28 74 20 28 6c 65 74 20 28 28 70 72 6f 63 2d 62 75 66 20 28 63 64 vely......(t.(let.((proc-buf.(cd
74fe0 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)
75000 29 29 20 3b 66 69 6e 69 73 68 65 64 20 73 75 63 63 65 73 73 66 75 6c 6c 79 0a 20 20 20 20 20 20 )).;finished.successfully.......
75020 20 20 20 20 20 20 20 20 28 6d 6b 62 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 3c 6d 6f 75 73 65 ........(mkb.(propertize."<mouse
75040 2d 31 3e 22 20 27 66 61 63 65 20 27 68 65 6c 70 2d 6b 65 79 2d 62 69 6e 64 69 6e 67 29 29 29 0a -1>".'face.'help-key-binding))).
75060 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 70 ..........(with-current-buffer.p
75080 72 6f 63 2d 62 75 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 69 6e 68 69 62 roc-buf.............(let.((inhib
750a0 69 74 2d 72 65 61 64 2d 6f 6e 6c 79 20 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 it-read-only.t))...............(
750c0 64 65 6c 65 74 65 2d 72 65 67 69 6f 6e 20 28 70 6f 69 6e 74 29 20 28 70 6f 69 6e 74 2d 6d 61 78 delete-region.(point).(point-max
750e0 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 52 75 6e 20 70 6f 73 74 2d 72 65 77 ))...............;;.Run.post-rew
75100 72 69 74 65 2d 66 75 6e 63 74 69 6f 6e 73 20 6f 6e 20 72 65 77 72 69 74 74 65 6e 20 74 65 78 74 rite-functions.on.rewritten.text
75120 20 69 6e 20 69 74 73 20 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 75 .in.its.buffer...............(ru
75140 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
75160 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
75180 74 2d 6d 61 78 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 t-max))...............(when.(and
751a0 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 20 .(plist-get.info.:newline)......
751c0 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 68 ....................(not.(eq.(ch
751e0 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 20 ar-before.(point-max)).?\n)))...
75200 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 20 ..............(insert."\n"))....
75220 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 20 ...........(font-lock-ensure))..
75240 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 70 ...........(overlay-put.ov.'disp
75260 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 20 lay.(buffer-string))............
75280 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 20 .(overlay-put.ov.'gptel-rewrite.
752a0 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 69 (buffer-string)).............(ki
752c0 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 28 ll-buffer.proc-buf))...........(
752e0 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 20 when.(buffer-live-p.buf)........
75300 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 20 .....(with-current-buffer.buf...
75320 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 67 ............(pulse-momentary-hig
75340 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 29 hlight-region.(overlay-start.ov)
75360 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 20 .(overlay-end.ov))..............
75380 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 2d .(add-hook.'eldoc-documentation-
753a0 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 68 functions.#'gptel--rewrite-key-h
753c0 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 3b elp.nil.'local)...............;;
753e0 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 20 .(overlay-put.ov.'gptel-rewrite.
75400 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 79 response)...............(overlay
75420 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 67 -put.ov.'face.'gptel-rewrite-hig
75440 68 6c 69 67 68 74 2d 66 61 63 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 76 65 72 hlight-face)...............(over
75460 6c 61 79 2d 70 75 74 20 6f 76 20 27 6b 65 79 6d 61 70 20 67 70 74 65 6c 2d 72 65 77 72 69 74 65 lay-put.ov.'keymap.gptel-rewrite
75480 2d 61 63 74 69 6f 6e 73 2d 6d 61 70 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 76 65 -actions-map)...............(ove
754a0 72 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 rlay-put.ov.'mouse-face.'highlig
754c0 68 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75 74 0a 20 ht)...............(overlay-put..
754e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 76 20 27 68 65 6c 70 2d 65 63 68 6f 0a 20 20 20 20 ..............ov.'help-echo.....
75500 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 25 73 20 72 ...........(format.(concat."%s.r
75520 65 77 72 69 74 65 20 61 76 61 69 6c 61 62 6c 65 3a 20 25 73 20 6f 72 20 5c 5c 5b 67 70 74 65 6c ewrite.available:.%s.or.\\[gptel
75540 2d 2d 72 65 77 72 69 74 65 2d 64 69 73 70 61 74 63 68 5d 20 66 6f 72 20 6f 70 74 69 6f 6e 73 22 --rewrite-dispatch].for.options"
75560 29 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 )........................(concat
75580 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
755a0 6e 64 29 20 22 3a 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 nd).":".(gptel--model-name.gptel
755c0 2d 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 -model))........................
755e0 6d 6b 62 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 6f 76 20 67 70 74 mkb))...............(push.ov.gpt
75600 65 6c 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 20 20 20 20 20 el--rewrite-overlays))..........
75620 20 20 20 28 69 66 2d 6c 65 74 2a 20 28 28 73 79 6d 20 67 70 74 65 6c 2d 72 65 77 72 69 74 65 2d ...(if-let*.((sym.gptel-rewrite-
75640 64 65 66 61 75 6c 74 2d 61 63 74 69 6f 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 default-action))................
75660 20 28 69 66 2d 6c 65 74 2a 20 28 28 61 63 74 69 6f 6e 20 28 69 6e 74 65 72 6e 20 28 63 6f 6e 63 .(if-let*.((action.(intern.(conc
75680 61 74 20 22 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 22 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d at."gptel--rewrite-".(symbol-nam
756a0 65 20 73 79 6d 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 e.sym)))).......................
756c0 20 20 20 20 28 28 66 75 6e 63 74 69 6f 6e 70 20 61 63 74 69 6f 6e 29 29 29 0a 20 20 20 20 20 20 ....((functionp.action))).......
756e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 61 63 74 69 6f 6e 20 6f 76 ..............(funcall.action.ov
75700 29 20 28 66 75 6e 63 61 6c 6c 20 73 79 6d 20 6f 76 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 ).(funcall.sym.ov)).............
75720 20 20 28 6d 65 73 73 61 67 65 20 28 63 6f 6e 63 61 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ..(message.(concat..............
75740 20 20 20 20 20 20 20 20 20 20 20 22 4c 4c 4d 20 72 65 77 72 69 74 65 20 6f 75 74 70 75 74 22 0a ..........."LLM.rewrite.output".
75760 20 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 6e 6c 65 73 73 20 ........................(unless.
75780 28 65 71 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 20 62 75 66 29 0a 20 20 20 20 20 20 (eq.(current-buffer).buf).......
757a0 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 69 6e ....................(format.".in
757c0 20 62 75 66 66 65 72 20 25 73 20 22 20 28 62 75 66 66 65 72 2d 6e 61 6d 65 20 62 75 66 29 29 29 .buffer.%s.".(buffer-name.buf)))
757e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 .........................(concat
75800 20 22 20 72 65 61 64 79 3a 20 22 20 6d 6b 62 20 22 2c 20 22 20 28 70 72 6f 70 65 72 74 69 7a 65 .".ready:.".mkb.",.".(propertize
75820 20 22 52 45 54 22 20 27 66 61 63 65 20 27 68 65 6c 70 2d 6b 65 79 2d 62 69 6e 64 69 6e 67 29 0a ."RET".'face.'help-key-binding).
75840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
75860 22 20 6f 72 20 22 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 ".or.".(substitute-command-keys.
75880 22 5c 5c 5b 67 70 74 65 6c 2d 72 65 77 72 69 74 65 5d 20 74 6f 20 63 6f 6e 74 69 6e 75 65 2e 22 "\\[gptel-rewrite].to.continue."
758a0 29 29 29 29 29 29 29 29 29 29 29 0a 0a 3b 3b 20 2a 20 54 72 61 6e 73 69 65 6e 74 20 50 72 65 66 )))))))))))..;;.*.Transient.Pref
758c0 69 78 65 73 20 66 6f 72 20 72 65 77 72 69 74 69 6e 67 0a 0a 28 74 72 61 6e 73 69 65 6e 74 2d 64 ixes.for.rewriting..(transient-d
758e0 65 66 69 6e 65 2d 70 72 65 66 69 78 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 64 69 72 65 efine-prefix.gptel--rewrite-dire
75900 63 74 69 76 65 2d 6d 65 6e 75 20 28 29 0a 20 20 22 53 65 74 20 74 68 65 20 64 69 72 65 63 74 69 ctive-menu.()..."Set.the.directi
75920 76 65 20 28 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 29 20 66 6f 72 20 72 65 77 72 69 74 65 20 ve.(system.message).for.rewrite.
75940 61 63 74 69 6f 6e 73 2e 0a 0a 42 79 20 64 65 66 61 75 6c 74 2c 20 67 70 74 65 6c 20 75 73 65 73 actions...By.default,.gptel.uses
75960 20 74 68 65 20 64 69 72 65 63 74 69 76 65 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 .the.directive.associated.with.t
75980 68 65 20 60 72 65 77 72 69 74 65 27 0a 20 6b 65 79 20 69 6e 20 60 67 70 74 65 6c 2d 64 69 72 65 he.`rewrite'..key.in.`gptel-dire
759a0 63 74 69 76 65 73 27 2e 20 20 59 6f 75 20 63 61 6e 20 61 64 64 20 6d 6f 72 65 20 72 65 77 72 69 ctives'...You.can.add.more.rewri
759c0 74 65 2d 73 70 65 63 69 66 69 63 0a 20 64 69 72 65 63 74 69 76 65 73 20 74 6f 20 60 67 70 74 65 te-specific..directives.to.`gpte
759e0 6c 2d 64 69 72 65 63 74 69 76 65 73 27 20 61 6e 64 20 70 69 63 6b 20 6f 6e 65 20 66 72 6f 6d 20 l-directives'.and.pick.one.from.
75a00 68 65 72 65 2e 22 0a 20 20 5b 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 67 70 74 65 6c 2d 73 79 73 here."...[:description.gptel-sys
75a20 74 65 6d 2d 70 72 6f 6d 70 74 2d 2d 66 6f 72 6d 61 74 0a 20 20 20 5b 28 67 70 74 65 6c 2d 2d 73 tem-prompt--format....[(gptel--s
75a40 75 66 66 69 78 2d 72 65 77 72 69 74 65 2d 64 69 72 65 63 74 69 76 65 29 5d 0a 20 20 20 5b 28 67 uffix-rewrite-directive)]....[(g
75a60 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 76 61 72 69 61 62 6c 65 2d 73 63 6f 70 65 29 5d 5d 0a 20 20 ptel--infix-variable-scope)]]...
75a80 20 5b 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 20 20 20 3a 73 .[:class.transient-column.....:s
75aa0 65 74 75 70 2d 63 68 69 6c 64 72 65 6e 0a 20 20 20 20 28 6c 61 6d 62 64 61 20 28 5f 29 20 28 74 etup-children.....(lambda.(_).(t
75ac0 72 61 6e 73 69 65 6e 74 2d 70 61 72 73 65 2d 73 75 66 66 69 78 65 73 0a 20 20 20 20 20 20 20 20 ransient-parse-suffixes.........
75ae0 20 20 20 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 2d 6d 65 ....'gptel--rewrite-directive-me
75b00 6e 75 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 73 65 74 75 70 2d 64 69 72 nu.............(gptel--setup-dir
75b20 65 63 74 69 76 65 2d 6d 65 6e 75 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 27 67 70 74 65 6c 2d ective-menu..............'gptel-
75b40 2d 72 65 77 72 69 74 65 2d 64 69 72 65 63 74 69 76 65 20 22 52 65 77 72 69 74 65 20 64 69 72 65 -rewrite-directive."Rewrite.dire
75b60 63 74 69 76 65 22 29 29 29 0a 20 20 20 20 3a 70 61 64 2d 6b 65 79 73 20 74 5d 29 0a 0a 28 64 65 ctive"))).....:pad-keys.t])..(de
75b80 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 20 27 67 70 fine-obsolete-function-alias.'gp
75ba0 74 65 6c 2d 72 65 77 72 69 74 65 2d 6d 65 6e 75 20 27 67 70 74 65 6c 2d 72 65 77 72 69 74 65 20 tel-rewrite-menu.'gptel-rewrite.
75bc0 22 30 2e 39 2e 36 22 29 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 20 28 61 75 74 6f 6c 6f "0.9.6")..;;;###autoload.(autolo
75be0 61 64 20 27 67 70 74 65 6c 2d 72 65 77 72 69 74 65 20 22 67 70 74 65 6c 2d 72 65 77 72 69 74 65 ad.'gptel-rewrite."gptel-rewrite
75c00 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 2d 70 72 65 66 69 ".nil.t).(transient-define-prefi
75c20 78 20 67 70 74 65 6c 2d 72 65 77 72 69 74 65 20 28 29 0a 20 20 22 52 65 77 72 69 74 65 20 6f 72 x.gptel-rewrite.()..."Rewrite.or
75c40 20 72 65 66 61 63 74 6f 72 20 74 65 78 74 20 72 65 67 69 6f 6e 20 75 73 69 6e 67 20 61 6e 20 4c .refactor.text.region.using.an.L
75c60 4c 4d 2e 22 0a 20 20 5b 3a 64 65 73 63 72 69 70 74 69 6f 6e 0a 20 20 20 28 6c 61 6d 62 64 61 20 LM."...[:description....(lambda.
75c80 28 29 0a 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 74 69 ()......(gptel--describe-directi
75ca0 76 65 0a 20 20 20 20 20 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 64 69 72 65 63 74 69 76 ve.......gptel--rewrite-directiv
75cc0 65 20 28 6d 61 78 20 28 2d 20 28 77 69 6e 64 6f 77 2d 77 69 64 74 68 29 20 31 34 29 20 32 30 29 e.(max.(-.(window-width).14).20)
75ce0 20 22 20 22 29 29 0a 20 20 20 5b 22 22 0a 20 20 20 20 28 22 73 22 20 22 53 65 74 20 66 75 6c 6c ."."))....["".....("s"."Set.full
75d00 20 64 69 72 65 63 74 69 76 65 22 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 64 69 72 65 63 .directive".gptel--rewrite-direc
75d20 74 69 76 65 2d 6d 65 6e 75 29 0a 20 20 20 20 28 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 72 65 77 tive-menu).....(gptel--infix-rew
75d40 72 69 74 65 2d 65 78 74 72 61 29 5d 5d 0a 20 20 3b 3b 20 46 49 58 4d 45 3a 20 57 65 20 61 72 65 rite-extra)]]...;;.FIXME:.We.are
75d60 20 72 65 71 75 69 72 69 6e 67 20 60 67 70 74 65 6c 2d 74 72 61 6e 73 69 65 6e 74 27 20 62 65 63 .requiring.`gptel-transient'.bec
75d80 61 75 73 65 20 6f 66 20 74 68 69 73 20 73 75 66 66 69 78 2c 20 70 65 72 68 61 70 73 0a 20 20 3b ause.of.this.suffix,.perhaps...;
75da0 3b 20 77 65 20 63 61 6e 20 67 65 74 20 66 69 6e 64 20 73 6f 6d 65 20 77 61 79 20 61 72 6f 75 6e ;.we.can.get.find.some.way.aroun
75dc0 64 20 74 68 61 74 3f 0a 20 20 5b 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 43 6f 6e 74 65 78 74 d.that?...[:description."Context
75de0 20 66 6f 72 20 72 65 77 72 69 74 65 22 0a 20 20 20 3a 69 66 20 75 73 65 2d 72 65 67 69 6f 6e 2d .for.rewrite"....:if.use-region-
75e00 70 0a 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 72 65 6d 6f 76 p....(gptel--infix-context-remov
75e20 65 2d 61 6c 6c 20 3a 6b 65 79 20 22 2d 64 22 29 0a 20 20 20 28 67 70 74 65 6c 2d 2d 73 75 66 66 e-all.:key."-d")....(gptel--suff
75e40 69 78 2d 63 6f 6e 74 65 78 74 2d 62 75 66 66 65 72 20 3a 6b 65 79 20 22 43 22 20 3a 66 6f 72 6d ix-context-buffer.:key."C".:form
75e60 61 74 20 22 20 20 25 6b 20 25 64 22 29 5d 0a 20 20 5b 5b 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 at."..%k.%d")]...[[:description.
75e80 22 44 69 66 66 20 4f 70 74 69 6f 6e 73 22 0a 20 20 20 20 3a 69 66 20 28 6c 61 6d 62 64 61 20 28 "Diff.Options".....:if.(lambda.(
75ea0 29 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6f 76 65 72 6c 61 79 73 29 0a 20 20 20 20 28 ).gptel--rewrite-overlays).....(
75ec0 22 2d 62 22 20 22 49 67 6e 6f 72 65 20 77 68 69 74 65 73 70 61 63 65 20 63 68 61 6e 67 65 73 22 "-b"."Ignore.whitespace.changes"
75ee0 20 20 20 20 20 20 28 22 2d 62 22 20 22 2d 2d 69 67 6e 6f 72 65 2d 73 70 61 63 65 2d 63 68 61 6e ......("-b"."--ignore-space-chan
75f00 67 65 22 29 29 0a 20 20 20 20 28 22 2d 77 22 20 22 49 67 6e 6f 72 65 20 61 6c 6c 20 77 68 69 74 ge")).....("-w"."Ignore.all.whit
75f20 65 73 70 61 63 65 22 20 20 20 20 20 20 20 20 20 20 28 22 2d 77 22 20 22 2d 2d 69 67 6e 6f 72 65 espace"..........("-w"."--ignore
75f40 2d 61 6c 6c 2d 73 70 61 63 65 22 29 29 0a 20 20 20 20 28 22 2d 69 22 20 22 49 67 6e 6f 72 65 20 -all-space")).....("-i"."Ignore.
75f60 63 61 73 65 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 22 2d 69 22 20 22 case"....................("-i"."
75f80 2d 2d 69 67 6e 6f 72 65 2d 63 61 73 65 22 29 29 0a 20 20 20 20 28 67 70 74 65 6c 2d 2d 69 6e 66 --ignore-case")).....(gptel--inf
75fa0 69 78 2d 72 65 77 72 69 74 65 2d 64 69 66 66 3a 2d 55 29 5d 0a 20 20 20 5b 3a 64 65 73 63 72 69 ix-rewrite-diff:-U)]....[:descri
75fc0 70 74 69 6f 6e 20 22 41 63 63 65 70 74 20 61 6c 6c 22 0a 20 20 20 20 3a 69 66 20 28 6c 61 6d 62 ption."Accept.all".....:if.(lamb
75fe0 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 20 da.().gptel--rewrite-overlays)..
76000 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 6d 65 72 67 65 29 ...(gptel--suffix-rewrite-merge)
76020 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 61 63 63 65 .....(gptel--suffix-rewrite-acce
76040 70 74 29 0a 20 20 20 20 22 52 65 6a 65 63 74 20 61 6c 6c 22 0a 20 20 20 20 28 67 70 74 65 6c 2d pt)....."Reject.all".....(gptel-
76060 2d 73 75 66 66 69 78 2d 72 65 77 72 69 74 65 2d 72 65 6a 65 63 74 29 5d 5d 0a 20 20 5b 5b 3a 64 -suffix-rewrite-reject)]]...[[:d
76080 65 73 63 72 69 70 74 69 6f 6e 20 22 44 69 66 66 20 72 65 77 72 69 74 65 20 72 65 67 69 6f 6e 73 escription."Diff.rewrite.regions
760a0 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
760c0 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 66 66 69 78 ite-overlays).....(gptel--suffix
760e0 2d 72 65 77 72 69 74 65 2d 64 69 66 66 29 0a 20 20 20 20 28 67 70 74 65 6c 2d 2d 73 75 66 66 69 -rewrite-diff).....(gptel--suffi
76100 78 2d 72 65 77 72 69 74 65 2d 65 64 69 66 66 29 5d 5d 0a 20 20 5b 5b 3a 64 65 73 63 72 69 70 74 x-rewrite-ediff)]]...[[:descript
76120 69 6f 6e 20 22 52 65 77 72 69 74 65 22 0a 20 20 20 20 3a 69 66 20 28 6c 61 6d 62 64 61 20 28 29 ion."Rewrite".....:if.(lambda.()
76140 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 6f 69 6e 74 29 20 .(or.(get-char-property.(point).
76160 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 20 20 20 20 20 20 'gptel-rewrite).................
76180 20 20 28 75 73 65 2d 72 65 67 69 6f 6e 2d 70 29 29 29 0a 20 20 20 20 28 67 70 74 65 6c 2d 2d 73 ..(use-region-p))).....(gptel--s
761a0 75 66 66 69 78 2d 72 65 77 72 69 74 65 29 5d 0a 20 20 20 5b 22 44 72 79 20 52 75 6e 22 0a 20 20 uffix-rewrite)]....["Dry.Run"...
761c0 20 20 3a 69 66 20 28 6c 61 6d 62 64 61 20 28 29 20 28 61 6e 64 20 28 6f 72 20 67 70 74 65 6c 2d ..:if.(lambda.().(and.(or.gptel-
761e0 6c 6f 67 2d 6c 65 76 65 6c 20 67 70 74 65 6c 2d 65 78 70 65 72 74 2d 63 6f 6d 6d 61 6e 64 73 29 log-level.gptel-expert-commands)
76200 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 20 28 67 65 74 2d 63 68 61 ....................(or.(get-cha
76220 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
76240 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 75 73 65 2d 72 e)........................(use-r
76260 65 67 69 6f 6e 2d 70 29 29 29 29 0a 20 20 20 20 28 22 49 22 20 22 49 6e 73 70 65 63 74 20 71 75 egion-p)))).....("I"."Inspect.qu
76280 65 72 79 20 28 4c 69 73 70 29 22 0a 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 29 0a 20 20 20 20 ery.(Lisp)"......(lambda.().....
762a0 20 20 20 22 49 6e 73 70 65 63 74 20 74 68 65 20 71 75 65 72 79 20 74 68 61 74 20 77 69 6c 6c 20 ..."Inspect.the.query.that.will.
762c0 62 65 20 73 65 6e 74 20 61 73 20 61 20 6c 69 73 70 20 6f 62 6a 65 63 74 2e 22 0a 20 20 20 20 20 be.sent.as.a.lisp.object."......
762e0 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 73 ..(interactive)........(gptel--s
76300 61 6e 69 74 69 7a 65 2d 6d 6f 64 65 6c 29 0a 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 69 6e anitize-model)........(gptel--in
76320 73 70 65 63 74 2d 71 75 65 72 79 0a 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 73 75 66 66 spect-query.........(gptel--suff
76340 69 78 2d 72 65 77 72 69 74 65 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6d 65 73 73 61 67 ix-rewrite.gptel--rewrite-messag
76360 65 20 74 29 29 29 29 0a 20 20 20 20 28 22 4a 22 20 22 49 6e 73 70 65 63 74 20 71 75 65 72 79 20 e.t)))).....("J"."Inspect.query.
76380 28 4a 53 4f 4e 29 22 0a 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 29 0a 20 20 20 20 20 20 20 22 (JSON)"......(lambda.()........"
763a0 49 6e 73 70 65 63 74 20 74 68 65 20 71 75 65 72 79 20 74 68 61 74 20 77 69 6c 6c 20 62 65 20 73 Inspect.the.query.that.will.be.s
763c0 65 6e 74 20 61 73 20 61 20 4a 53 4f 4e 20 6f 62 6a 65 63 74 2e 22 0a 20 20 20 20 20 20 20 28 69 ent.as.a.JSON.object."........(i
763e0 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 73 61 6e 69 74 nteractive)........(gptel--sanit
76400 69 7a 65 2d 6d 6f 64 65 6c 29 0a 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 69 6e 73 70 65 63 ize-model)........(gptel--inspec
76420 74 2d 71 75 65 72 79 0a 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 73 75 66 66 69 78 2d 72 t-query.........(gptel--suffix-r
76440 65 77 72 69 74 65 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6d 65 73 73 61 67 65 20 74 29 ewrite.gptel--rewrite-message.t)
76460 0a 20 20 20 20 20 20 20 20 27 6a 73 6f 6e 29 29 29 5d 5d 0a 20 20 28 69 6e 74 65 72 61 63 74 69 .........'json)))]]...(interacti
76480 76 65 29 0a 20 20 28 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 73 61 6e 69 74 69 7a 65 2d 6f ve)...(gptel--rewrite-sanitize-o
764a0 76 65 72 6c 61 79 73 29 0a 20 20 28 75 6e 6c 65 73 73 20 28 6f 72 20 67 70 74 65 6c 2d 2d 72 65 verlays)...(unless.(or.gptel--re
764c0 77 72 69 74 65 2d 6f 76 65 72 6c 61 79 73 20 28 75 73 65 2d 72 65 67 69 6f 6e 2d 70 29 29 0a 20 write-overlays.(use-region-p))..
764e0 20 20 20 28 75 73 65 72 2d 65 72 72 6f 72 20 22 60 67 70 74 65 6c 2d 72 65 77 72 69 74 65 27 20 ...(user-error."`gptel-rewrite'.
76500 72 65 71 75 69 72 65 73 20 61 6e 20 61 63 74 69 76 65 20 72 65 67 69 6f 6e 20 6f 72 20 72 65 77 requires.an.active.region.or.rew
76520 72 69 74 65 20 69 6e 20 70 72 6f 67 72 65 73 73 2e 22 29 29 0a 20 20 28 75 6e 6c 65 73 73 20 67 rite.in.progress."))...(unless.g
76540 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 28 73 65 74 71 20 ptel--rewrite-message.....(setq.
76560 67 70 74 65 6c 2d 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 gptel--rewrite-message."Rewrite:
76580 20 22 29 29 0a 20 20 28 74 72 61 6e 73 69 65 6e 74 2d 73 65 74 75 70 20 27 67 70 74 65 6c 2d 72 ."))...(transient-setup.'gptel-r
765a0 65 77 72 69 74 65 29 29 0a 0a 3b 3b 20 2a 20 54 72 61 6e 73 69 65 6e 74 20 69 6e 66 69 78 65 73 ewrite))..;;.*.Transient.infixes
765c0 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 6e .for.rewriting..(transient-defin
765e0 65 2d 69 6e 66 69 78 20 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 72 65 77 72 69 74 65 2d 65 78 74 e-infix.gptel--infix-rewrite-ext
76600 72 61 20 28 29 0a 20 20 22 43 68 61 74 20 64 69 72 65 63 74 69 76 65 20 28 73 79 73 74 65 6d 20 ra.()..."Chat.directive.(system.
76620 6d 65 73 73 61 67 65 29 20 74 6f 20 75 73 65 20 66 6f 72 20 72 65 77 72 69 74 69 6e 67 20 6f 72 message).to.use.for.rewriting.or
76640 20 72 65 66 61 63 74 6f 72 69 6e 67 2e 22 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 52 .refactoring."...:description."R
76660 65 77 72 69 74 65 20 69 6e 73 74 72 75 63 74 69 6f 6e 22 0a 20 20 3a 63 6c 61 73 73 20 27 67 70 ewrite.instruction"...:class.'gp
76680 74 65 6c 2d 6c 69 73 70 2d 76 61 72 69 61 62 6c 65 0a 20 20 3a 76 61 72 69 61 62 6c 65 20 27 67 tel-lisp-variable...:variable.'g
766a0 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6d 65 73 73 61 67 65 0a 20 20 3a 73 65 74 2d 76 61 6c ptel--rewrite-message...:set-val
766c0 75 65 20 23 27 67 70 74 65 6c 2d 2d 73 65 74 2d 77 69 74 68 2d 73 63 6f 70 65 0a 20 20 3a 64 69 ue.#'gptel--set-with-scope...:di
766e0 73 70 6c 61 79 2d 6e 69 6c 20 22 28 4e 6f 6e 65 29 22 0a 20 20 3a 6b 65 79 20 22 64 22 0a 20 20 splay-nil."(None)"...:key."d"...
76700 3a 66 6f 72 6d 61 74 20 22 20 25 6b 20 25 64 20 25 76 22 0a 20 20 3a 70 72 6f 6d 70 74 20 28 63 :format.".%k.%d.%v"...:prompt.(c
76720 6f 6e 63 61 74 20 22 49 6e 73 74 72 75 63 74 69 6f 6e 73 20 22 20 67 70 74 65 6c 2d 2d 72 65 61 oncat."Instructions.".gptel--rea
76740 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 61 64 65 72 20 28 6c d-with-prefix-help)...:reader.(l
76760 61 6d 62 64 61 20 28 70 72 6f 6d 70 74 20 5f 20 68 69 73 74 6f 72 79 29 0a 20 20 20 20 20 20 20 ambda.(prompt._.history)........
76780 20 20 20 20 20 28 6c 65 74 2a 20 28 28 72 65 77 72 69 74 65 2d 64 69 72 65 63 74 69 76 65 0a 20 .....(let*.((rewrite-directive..
767a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 61 72 2d 73 61 66 65 20 28 67 70 ...................(car-safe.(gp
767c0 74 65 6c 2d 2d 70 61 72 73 65 2d 64 69 72 65 63 74 69 76 65 20 67 70 74 65 6c 2d 2d 72 65 77 72 tel--parse-directive.gptel--rewr
767e0 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 20 20 20 20 ite-directive...................
76800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
76820 20 20 20 20 27 72 61 77 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 ....'raw)))....................(
76840 63 62 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 cb.(current-buffer))............
76860 20 20 20 20 20 20 20 20 28 63 79 63 6c 65 2d 70 72 65 66 69 78 0a 20 20 20 20 20 20 20 20 20 20 ........(cycle-prefix...........
76880 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 65 72 61 63 74 69 76 ..........(lambda.().(interactiv
768a0 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d e).......................(gptel-
768c0 2d 72 65 61 64 2d 77 69 74 68 2d 70 72 65 66 69 78 20 72 65 77 72 69 74 65 2d 64 69 72 65 63 74 -read-with-prefix.rewrite-direct
768e0 69 76 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 64 69 74 2d ive)))....................(edit-
76900 69 6e 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c in-buffer.....................(l
76920 61 6d 62 64 61 20 28 29 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 20 20 20 20 20 20 20 ambda.().(interactive)..........
76940 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 6f 66 66 73 65 74 20 28 2d 20 28 70 .............(let.((offset.(-.(p
76960 6f 69 6e 74 29 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 29 29 oint).(minibuffer-prompt-end))))
76980 0a 20 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-
769a0 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 72 69 74 65 2d -edit-directive.'gptel--rewrite-
769c0 6d 65 73 73 61 67 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 message.........................
769e0 20 20 3a 70 72 6f 6d 70 74 20 72 65 77 72 69 74 65 2d 64 69 72 65 63 74 69 76 65 20 3a 69 6e 69 ..:prompt.rewrite-directive.:ini
76a00 74 69 61 6c 20 28 6d 69 6e 69 62 75 66 66 65 72 2d 63 6f 6e 74 65 6e 74 73 29 0a 20 20 20 20 20 tial.(minibuffer-contents)......
76a20 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 20 63 62 20 .....................:buffer.cb.
76a40 3a 73 65 74 75 70 20 28 6c 61 6d 62 64 61 20 28 29 20 28 69 67 6e 6f 72 65 2d 65 72 72 6f 72 73 :setup.(lambda.().(ignore-errors
76a60 20 28 66 6f 72 77 61 72 64 2d 63 68 61 72 20 6f 66 66 73 65 74 29 29 29 0a 20 20 20 20 20 20 20 .(forward-char.offset)))........
76a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 61 6c 6c 62 61 63 6b 0a 20 20 20 ...................:callback....
76aa0 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.(
76ac0 29 0a 20 20 20 20 20 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
76ae0 75 6e 2d 61 74 2d 74 69 6d 65 20 30 20 6e 69 6c 20 23 27 74 72 61 6e 73 69 65 6e 74 2d 73 65 74 un-at-time.0.nil.#'transient-set
76b00 75 70 20 27 67 70 74 65 6c 2d 72 65 77 72 69 74 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 up.'gptel-rewrite)..............
76b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 62 75 66 66 65 72 2d 6c 6f 63 ...............(push.(buffer-loc
76b40 61 6c 2d 76 61 6c 75 65 20 27 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6d 65 73 73 61 67 65 al-value.'gptel--rewrite-message
76b60 20 63 62 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .cb)............................
76b80 20 20 20 20 20 20 20 28 61 6c 69 73 74 2d 67 65 74 20 27 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d .......(alist-get.'gptel--infix-
76ba0 72 65 77 72 69 74 65 2d 65 78 74 72 61 20 74 72 61 6e 73 69 65 6e 74 2d 68 69 73 74 6f 72 79 29 rewrite-extra.transient-history)
76bc0 29 0a 20 20 20 20 20 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 ).............................(w
76be0 68 65 6e 20 28 6d 69 6e 69 62 75 66 66 65 72 70 29 20 28 6d 69 6e 69 62 75 66 66 65 72 2d 71 75 hen.(minibufferp).(minibuffer-qu
76c00 69 74 2d 72 65 63 75 72 73 69 76 65 2d 65 64 69 74 29 29 29 29 29 29 29 0a 20 20 20 20 20 20 20 it-recursive-edit)))))))........
76c20 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 6d 61 ............(minibuffer-local-ma
76c40 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 6d 70 p.....................(make-comp
76c60 6f 73 65 64 2d 6b 65 79 6d 61 70 20 28 64 65 66 69 6e 65 2d 6b 65 79 6d 61 70 0a 20 20 20 20 20 osed-keymap.(define-keymap......
76c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
76ca0 20 20 20 20 20 20 20 22 54 41 42 22 20 63 79 63 6c 65 2d 70 72 65 66 69 78 20 22 3c 74 61 62 3e ......."TAB".cycle-prefix."<tab>
76cc0 22 20 63 79 63 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 ".cycle-prefix..................
76ce0 20 20 20 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 43 2d 63 20 ..........................."C-c.
76d00 43 2d 65 22 20 65 64 69 74 2d 69 6e 2d 62 75 66 66 65 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 C-e".edit-in-buffer)............
76d20 20 20 20 20 20 20 20 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
76d40 69 6e 69 62 75 66 66 65 72 2d 6c 6f 63 61 6c 2d 6d 61 70 29 29 29 0a 20 20 20 20 20 20 20 20 20 inibuffer-local-map)))..........
76d60 20 20 20 20 20 28 6d 69 6e 69 62 75 66 66 65 72 2d 77 69 74 68 2d 73 65 74 75 70 2d 68 6f 6f 6b .....(minibuffer-with-setup-hook
76d80 20 63 79 63 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 28 72 .cycle-prefix.................(r
76da0 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 20 70 72 6f 6d ead-string..................prom
76dc0 70 74 20 28 6f 72 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6d 65 73 73 61 67 65 20 22 52 pt.(or.gptel--rewrite-message."R
76de0 65 77 72 69 74 65 3a 20 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 69 73 74 ewrite:.")..................hist
76e00 6f 72 79 29 29 29 29 29 0a 0a 28 74 72 61 6e 73 69 65 6e 74 2d 64 65 66 69 6e 65 2d 61 72 67 75 ory)))))..(transient-define-argu
76e20 6d 65 6e 74 20 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 72 65 77 72 69 74 65 2d 64 69 66 66 3a 2d ment.gptel--infix-rewrite-diff:-
76e40 55 20 28 29 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 43 6f 6e 74 65 78 74 20 6c 69 6e U.()...:description."Context.lin
76e60 65 73 22 0a 20 20 3a 63 6c 61 73 73 20 27 74 72 61 6e 73 69 65 6e 74 2d 6f 70 74 69 6f 6e 0a 20 es"...:class.'transient-option..
76e80 20 3a 61 72 67 75 6d 65 6e 74 20 22 2d 55 22 0a 20 20 3a 72 65 61 64 65 72 20 23 27 74 72 61 6e .:argument."-U"...:reader.#'tran
76ea0 73 69 65 6e 74 2d 72 65 61 64 2d 6e 75 6d 62 65 72 2d 4e 30 29 0a 0a 3b 3b 20 2a 20 54 72 61 6e sient-read-number-N0)..;;.*.Tran
76ec0 73 69 65 6e 74 20 73 75 66 66 69 78 65 73 20 66 6f 72 20 72 65 77 72 69 74 69 6e 67 0a 0a 28 74 sient.suffixes.for.rewriting..(t
76ee0 72 61 6e 73 69 65 6e 74 2d 64 65 66 69 6e 65 2d 73 75 66 66 69 78 20 67 70 74 65 6c 2d 2d 73 75 ransient-define-suffix.gptel--su
76f00 66 66 69 78 2d 72 65 77 72 69 74 65 2d 64 69 72 65 63 74 69 76 65 20 28 26 6f 70 74 69 6f 6e 61 ffix-rewrite-directive.(&optiona
76f20 6c 20 63 61 6e 63 65 6c 29 0a 20 20 22 45 64 69 74 20 52 65 77 72 69 74 65 20 64 69 72 65 63 74 l.cancel)..."Edit.Rewrite.direct
76f40 69 76 65 2e 0a 0a 43 41 4e 43 45 4c 20 69 73 20 75 73 65 64 20 74 6f 20 61 76 6f 69 64 20 74 6f ive...CANCEL.is.used.to.avoid.to
76f60 75 63 68 69 6e 67 20 64 79 6e 61 6d 69 63 20 72 65 77 72 69 74 65 20 64 69 72 65 63 74 69 76 65 uching.dynamic.rewrite.directive
76f80 73 2c 0a 67 65 6e 65 72 61 74 65 64 20 66 72 6f 6d 20 66 75 6e 63 74 69 6f 6e 73 2e 22 0a 20 20 s,.generated.from.functions."...
76fa0 3a 74 72 61 6e 73 69 65 6e 74 20 27 74 72 61 6e 73 69 65 6e 74 2d 2d 64 6f 2d 65 78 69 74 0a 20 :transient.'transient--do-exit..
76fc0 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 45 64 69 74 20 66 75 6c 6c 20 72 65 77 72 69 74 65 .:description."Edit.full.rewrite
76fe0 20 64 69 72 65 63 74 69 76 65 22 0a 20 20 3a 6b 65 79 20 22 73 22 0a 20 20 28 69 6e 74 65 72 61 .directive"...:key."s"...(intera
77000 63 74 69 76 65 0a 20 20 20 28 6c 69 73 74 20 28 61 6e 64 0a 20 20 20 20 20 20 20 20 20 20 28 66 ctive....(list.(and...........(f
77020 75 6e 63 74 69 6f 6e 70 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 64 69 72 65 63 74 69 76 unctionp.gptel--rewrite-directiv
77040 65 29 0a 20 20 20 20 20 20 20 20 20 20 28 6e 6f 74 20 28 79 2d 6f 72 2d 6e 2d 70 0a 20 20 20 20 e)...........(not.(y-or-n-p.....
77060 20 20 20 20 20 20 20 20 20 20 20 20 22 52 65 77 72 69 74 65 20 64 69 72 65 63 74 69 76 65 20 69 ............"Rewrite.directive.i
77080 73 20 64 79 6e 61 6d 69 63 61 6c 6c 79 20 67 65 6e 65 72 61 74 65 64 3a 20 45 64 69 74 20 69 74 s.dynamically.generated:.Edit.it
770a0 73 20 63 75 72 72 65 6e 74 20 76 61 6c 75 65 20 69 6e 73 74 65 61 64 3f 22 29 29 29 29 29 0a 20 s.current.value.instead?")))))..
770c0 20 28 69 66 20 63 61 6e 63 65 6c 20 28 70 72 6f 67 6e 20 28 6d 65 73 73 61 67 65 20 22 45 64 69 .(if.cancel.(progn.(message."Edi
770e0 74 20 63 61 6e 63 65 6c 65 64 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 t.canceled")....................
77100 20 28 63 61 6c 6c 2d 69 6e 74 65 72 61 63 74 69 76 65 6c 79 20 23 27 67 70 74 65 6c 2d 72 65 77 .(call-interactively.#'gptel-rew
77120 72 69 74 65 29 29 0a 20 20 20 20 28 67 70 74 65 6c 2d 2d 65 64 69 74 2d 64 69 72 65 63 74 69 76 rite)).....(gptel--edit-directiv
77140 65 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 0a 20 20 20 20 e.'gptel--rewrite-directive.....
77160 20 20 3a 63 61 6c 6c 62 61 63 6b 20 23 27 67 70 74 65 6c 2d 72 65 77 72 69 74 65 20 3a 73 65 74 ..:callback.#'gptel-rewrite.:set
77180 75 70 20 23 27 61 63 74 69 76 61 74 65 2d 6d 61 72 6b 29 29 29 0a 0a 28 74 72 61 6e 73 69 65 6e up.#'activate-mark)))..(transien
771a0 74 2d 64 65 66 69 6e 65 2d 73 75 66 66 69 78 20 67 70 74 65 6c 2d 2d 73 75 66 66 69 78 2d 72 65 t-define-suffix.gptel--suffix-re
771c0 77 72 69 74 65 20 28 26 6f 70 74 69 6f 6e 61 6c 20 72 65 77 72 69 74 65 2d 6d 65 73 73 61 67 65 write.(&optional.rewrite-message
771e0 20 64 72 79 2d 72 75 6e 29 0a 20 20 22 52 65 77 72 69 74 65 20 6f 72 20 72 65 66 61 63 74 6f 72 .dry-run)..."Rewrite.or.refactor
77200 20 72 65 67 69 6f 6e 20 63 6f 6e 74 65 6e 74 73 2e 22 0a 20 20 3a 6b 65 79 20 22 72 22 0a 20 20 .region.contents."...:key."r"...
77220 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 28 6c 61 6d 62 64 61 20 28 29 20 28 69 66 20 28 67 65 74 :description.(lambda.().(if.(get
77240 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
77260 77 72 69 74 65 29 20 22 49 74 65 72 61 74 65 22 20 22 52 65 77 72 69 74 65 22 29 29 0a 20 20 28 write)."Iterate"."Rewrite"))...(
77280 69 6e 74 65 72 61 63 74 69 76 65 20 28 6c 69 73 74 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 interactive.(list.gptel--rewrite
772a0 2d 6d 65 73 73 61 67 65 29 29 0a 20 20 28 6c 65 74 2a 20 28 28 6e 6f 73 79 73 74 65 6d 20 28 67 -message))...(let*.((nosystem.(g
772c0 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)
772e0 29 0a 20 20 20 20 20 20 20 20 20 3b 3b 20 54 72 79 20 74 6f 20 73 65 6e 64 20 63 6f 6e 74 65 78 )..........;;.Try.to.send.contex
77300 74 20 77 69 74 68 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 0a 20 20 20 20 20 20 20 20 20 28 t.with.system.message..........(
77320 67 70 74 65 6c 2d 75 73 65 2d 63 6f 6e 74 65 78 74 0a 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 gptel-use-context...........(and
77340 20 67 70 74 65 6c 2d 75 73 65 2d 63 6f 6e 74 65 78 74 20 28 69 66 20 6e 6f 73 79 73 74 65 6d 20 .gptel-use-context.(if.nosystem.
77360 27 75 73 65 72 20 27 73 79 73 74 65 6d 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 70 72 6f 6d 70 'user.'system)))..........(promp
77380 74 20 28 6c 69 73 74 20 28 6f 72 20 28 67 65 74 2d 63 68 61 72 2d 70 72 6f 70 65 72 74 79 20 28 t.(list.(or.(get-char-property.(
773a0 70 6f 69 6e 74 29 20 27 67 70 74 65 6c 2d 72 65 77 72 69 74 65 29 0a 20 20 20 20 20 20 20 20 20 point).'gptel-rewrite)..........
773c0 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
773e0 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 20 28 72 65 67 69 6f 6e 2d 62 65 67 69 6e 6e ing-no-properties.(region-beginn
77400 69 6e 67 29 20 28 72 65 67 69 6f 6e 2d 65 6e 64 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 ing).(region-end))).............
77420 20 20 20 20 20 20 20 20 20 20 20 22 57 68 61 74 20 69 73 20 74 68 65 20 72 65 71 75 69 72 65 64 ..........."What.is.the.required
77440 20 63 68 61 6e 67 65 3f 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .change?".......................
77460 20 28 6f 72 20 72 65 77 72 69 74 65 2d 6d 65 73 73 61 67 65 20 67 70 74 65 6c 2d 2d 72 65 77 72 .(or.rewrite-message.gptel--rewr
77480 69 74 65 2d 6d 65 73 73 61 67 65 29 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 6e 6f 73 79 73 74 ite-message)))).....(when.nosyst
774a0 65 6d 0a 20 20 20 20 20 20 28 73 65 74 63 61 72 20 70 72 6f 6d 70 74 20 28 63 6f 6e 63 61 74 20 em.......(setcar.prompt.(concat.
774c0 28 63 61 72 2d 73 61 66 65 20 28 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 64 69 72 65 63 74 69 76 (car-safe.(gptel--parse-directiv
774e0 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...............................
77500 20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 64 69 72 65 63 74 69 ..........gptel--rewrite-directi
77520 76 65 20 27 72 61 77 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ve.'raw)).......................
77540 20 20 20 20 20 20 20 22 5c 6e 5c 6e 22 20 28 63 61 72 20 70 72 6f 6d 70 74 29 29 29 29 0a 20 20 ......."\n\n".(car.prompt))))...
77560 20 20 28 70 72 6f 67 31 20 28 67 70 74 65 6c 2d 72 65 71 75 65 73 74 20 70 72 6f 6d 70 74 0a 20 ..(prog1.(gptel-request.prompt..
77580 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 0a 20 20 20 ............:dry-run.dry-run....
775a0 20 20 20 20 20 20 20 20 20 20 3a 73 79 73 74 65 6d 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 ..........:system.gptel--rewrite
775c0 2d 64 69 72 65 63 74 69 76 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 73 74 72 65 61 6d 20 -directive..............:stream.
775e0 67 70 74 65 6c 2d 73 74 72 65 61 6d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 6f 6e 74 65 gptel-stream..............:conte
77600 78 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 6f 76 20 28 6f 72 20 28 63 xt..............(let.((ov.(or.(c
77620 64 72 2d 73 61 66 65 20 28 67 65 74 2d 63 68 61 72 2d 70 72 6f 70 65 72 74 79 2d 61 6e 64 2d 6f dr-safe.(get-char-property-and-o
77640 76 65 72 6c 61 79 20 28 70 6f 69 6e 74 29 20 27 67 70 74 65 6c 2d 72 65 77 72 69 74 65 29 29 0a verlay.(point).'gptel-rewrite)).
77660 20 20 20 20 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 ...........................(make
77680 2d 6f 76 65 72 6c 61 79 20 28 72 65 67 69 6f 6e 2d 62 65 67 69 6e 6e 69 6e 67 29 20 28 72 65 67 -overlay.(region-beginning).(reg
776a0 69 6f 6e 2d 65 6e 64 29 20 6e 69 6c 20 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ion-end).nil.t))))..............
776c0 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 70 74 ..(overlay-put.ov.'category.'gpt
776e0 65 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75 74 20 el)................(overlay-put.
77700 6f 76 20 27 65 76 61 70 6f 72 61 74 65 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ov.'evaporate.t)................
77720 28 63 6f 6e 73 20 6f 76 20 28 67 65 6e 65 72 61 74 65 2d 6e 65 77 2d 62 75 66 66 65 72 20 22 2a (cons.ov.(generate-new-buffer."*
77740 67 70 74 65 6c 2d 72 65 77 72 69 74 65 2a 22 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 gptel-rewrite*")))..............
77760 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 63 61 6c 6c 62 :callback.#'gptel--rewrite-callb
77780 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 74 68 61 74 20 ack).......;;.Move.back.so.that.
777a0 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 79 20 77 68 65 the.cursor.is.on.the.overlay.whe
777c0 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 63 68 61 72 2d n.done........(unless.(get-char-
777e0 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 65 29 property.(point).'gptel-rewrite)
77800 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 72 65 67 69 6f .........(when.(=.(point).(regio
77820 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 0a 20 20 20 20 n-end)).(backward-char.1))).....
77840 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 41 6c 6c 6f 77 ..(deactivate-mark))))..;;.Allow
77860 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 72 61 63 74 69 .this.to.be.called.non-interacti
77880 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 65 6c 2d 2d 73 vely.for.dry.runs.(put.'gptel--s
778a0 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 6f 6e 6c 79 20 uffix-rewrite.'interactive-only.
778c0 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 66 69 78 20 67 nil)..(transient-define-suffix.g
778e0 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 26 6f 70 74 69 ptel--suffix-rewrite-diff.(&opti
77900 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 6f 75 74 70 75 onal.switches)..."Diff.LLM.outpu
77920 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 61 6d 62 64 61 t.against.buffer."...:if.(lambda
77940 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 20 20 3a .().gptel--rewrite-overlays)...:
77960 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 66 20 20 4c 4c key."D"...:description."Diff..LL
77980 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 28 6c 69 73 74 M.rewrites"...(interactive.(list
779a0 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 63 75 72 72 65 .(transient-args.transient-curre
779c0 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 72 69 74 65 2d nt-command)))...(gptel--rewrite-
779e0 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 73 20 73 77 69 diff.gptel--rewrite-overlays.swi
77a00 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 73 75 66 66 69 tches))..(transient-define-suffi
77a20 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 66 66 20 28 29 x.gptel--suffix-rewrite-ediff.()
77a40 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 74 20 62 75 66 ..."Ediff.LLM.output.against.buf
77a60 66 65 72 2e 22 0a 20 20 3a 69 66 20 28 6c 61 6d 62 64 61 20 28 29 20 67 70 74 65 6c 2d 2d 72 65 fer."...:if.(lambda.().gptel--re
77a80 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 20 20 3a 64 65 write-overlays)...:key."E"...:de
77aa0 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 65 73 22 0a 20 scription."Ediff.LLM.rewrites"..
77ac0 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 72 69 74 65 .(interactive)...(gptel--rewrite
77ae0 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 61 79 73 29 29 -ediff.gptel--rewrite-overlays))
77b00 0a 0a 28 74 72 61 6e 73 69 65 6e 74 2d 64 65 66 69 6e 65 2d 73 75 66 66 69 78 20 67 70 74 65 6c ..(transient-define-suffix.gptel
77b20 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 20 22 49 6e 73 --suffix-rewrite-merge.()..."Ins
77b40 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 66 6c 69 63 74 ert.LLM.output.as.merge.conflict
77b60 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 72 65 77 72 69 s"...:if.(lambda.().gptel--rewri
77b80 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 64 65 73 63 72 te-overlays)...:key."M"...:descr
77ba0 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 73 22 0a 20 20 iption."Merge.with.conflicts"...
77bc0 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 72 69 74 65 2d (interactive)...(gptel--rewrite-
77be0 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 79 73 29 29 0a merge.gptel--rewrite-overlays)).
77c00 0a 28 74 72 61 6e 73 69 65 6e 74 2d 64 65 66 69 6e 65 2d 73 75 66 66 69 78 20 67 70 74 65 6c 2d .(transient-define-suffix.gptel-
77c20 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 20 22 41 63 63 -suffix-rewrite-accept.()..."Acc
77c40 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 20 20 3a 69 66 ept.pending.LLM.rewrites."...:if
77c60 20 28 6c 61 6d 62 64 61 20 28 29 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6f 76 65 72 6c .(lambda.().gptel--rewrite-overl
77c80 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 69 6f 6e 20 22 ays)...:key."A"...:description."
77ca0 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 72 61 63 74 69 Accept.and.replace"...(interacti
77cc0 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 74 20 67 70 74 ve)...(gptel--rewrite-accept.gpt
77ce0 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6f 76 65 72 6c 61 79 73 29 29 0a 0a 28 74 72 61 6e 73 69 65 el--rewrite-overlays))..(transie
77d00 6e 74 2d 64 65 66 69 6e 65 2d 73 75 66 66 69 78 20 67 70 74 65 6c 2d 2d 73 75 66 66 69 78 2d 72 nt-define-suffix.gptel--suffix-r
77d20 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 65 6e 64 69 6e ewrite-reject.()..."Clear.pendin
77d40 67 20 4c 4c 4d 20 72 65 77 72 69 74 65 73 2e 22 0a 20 20 3a 69 66 20 28 6c 61 6d 62 64 61 20 28 g.LLM.rewrites."...:if.(lambda.(
77d60 29 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6f 76 65 72 6c 61 79 73 29 0a 20 20 3a 6b 65 ).gptel--rewrite-overlays)...:ke
77d80 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 20 70 65 6e 64 y."K"...:description."Clear.pend
77da0 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 65 29 0a 20 20 ing.rewrites"...(interactive)...
77dc0 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 6c 2d 2d 72 65 (gptel--rewrite-reject.gptel--re
77de0 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 27 67 70 74 65 write-overlays))..(provide.'gpte
77e00 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 65 2e 65 6c 20 l-rewrite).;;;.gptel-rewrite.el.
77e20 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 3b ends.here..;;.Local.Variables:.;
77e40 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 22 0a 3b 3b 20 ;.outline-regexp:."^;;.\\*+".;;.
77e60 45 6e 64 3a 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 End:............................
77e80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
77ea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
77ec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
77ee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
77f00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
77f20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
77f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
77f60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
77f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
77fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
77fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
77fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
78000 67 70 74 65 6c 2d 30 2e 39 2e 38 2f 67 70 74 65 6c 2d 6f 70 65 6e 61 69 2e 65 6c 00 00 00 00 00 gptel-0.9.8/gptel-openai.el.....
78020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
78040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
78060 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
78080 30 30 36 35 33 35 32 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 34 32 32 33 00 20 30 00 00 00 0065352.00000000000.014223..0...
780a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
780c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
780e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
78100 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...................
78120 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...................
78140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
78160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
78180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
781a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
781c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
781e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
78200 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
78220 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
78240 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.(
78260 43 29 20 32 30 32 33 20 20 4b 61 72 74 68 69 6b 20 43 68 69 6b 6d 61 67 61 6c 75 72 0a 0a 3b 3b C).2023..Karthik.Chikmagalur..;;
78280 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
782a0 72 74 68 69 6b 63 68 69 6b 6d 61 67 61 6c 75 72 40 67 6d 61 69 6c 2e 63 6f 6d 3e 0a 0a 3b 3b 20 rthikchikmagalur@gmail.com>..;;.
782c0 54 68 69 73 20 70 72 6f 67 72 61 6d 20 69 73 20 66 72 65 65 20 73 6f 66 74 77 61 72 65 3b 20 79 This.program.is.free.software;.y
782e0 6f 75 20 63 61 6e 20 72 65 64 69 73 74 72 69 62 75 74 65 20 69 74 20 61 6e 64 2f 6f 72 20 6d 6f ou.can.redistribute.it.and/or.mo
78300 64 69 66 79 0a 3b 3b 20 69 74 20 75 6e 64 65 72 20 74 68 65 20 74 65 72 6d 73 20 6f 66 20 74 68 dify.;;.it.under.the.terms.of.th
78320 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 61 73 20 e.GNU.General.Public.License.as.
78340 70 75 62 6c 69 73 68 65 64 20 62 79 0a 3b 3b 20 74 68 65 20 46 72 65 65 20 53 6f 66 74 77 61 72 published.by.;;.the.Free.Softwar
78360 65 20 46 6f 75 6e 64 61 74 69 6f 6e 2c 20 65 69 74 68 65 72 20 76 65 72 73 69 6f 6e 20 33 20 6f e.Foundation,.either.version.3.o
78380 66 20 74 68 65 20 4c 69 63 65 6e 73 65 2c 20 6f 72 0a 3b 3b 20 28 61 74 20 79 6f 75 72 20 6f 70 f.the.License,.or.;;.(at.your.op
783a0 74 69 6f 6e 29 20 61 6e 79 20 6c 61 74 65 72 20 76 65 72 73 69 6f 6e 2e 0a 0a 3b 3b 20 54 68 69 tion).any.later.version...;;.Thi
783c0 73 20 70 72 6f 67 72 61 6d 20 69 73 20 64 69 73 74 72 69 62 75 74 65 64 20 69 6e 20 74 68 65 20 s.program.is.distributed.in.the.
783e0 68 6f 70 65 20 74 68 61 74 20 69 74 20 77 69 6c 6c 20 62 65 20 75 73 65 66 75 6c 2c 0a 3b 3b 20 hope.that.it.will.be.useful,.;;.
78400 62 75 74 20 57 49 54 48 4f 55 54 20 41 4e 59 20 57 41 52 52 41 4e 54 59 3b 20 77 69 74 68 6f 75 but.WITHOUT.ANY.WARRANTY;.withou
78420 74 20 65 76 65 6e 20 74 68 65 20 69 6d 70 6c 69 65 64 20 77 61 72 72 61 6e 74 79 20 6f 66 0a 3b t.even.the.implied.warranty.of.;
78440 3b 20 4d 45 52 43 48 41 4e 54 41 42 49 4c 49 54 59 20 6f 72 20 46 49 54 4e 45 53 53 20 46 4f 52 ;.MERCHANTABILITY.or.FITNESS.FOR
78460 20 41 20 50 41 52 54 49 43 55 4c 41 52 20 50 55 52 50 4f 53 45 2e 20 20 53 65 65 20 74 68 65 0a .A.PARTICULAR.PURPOSE...See.the.
78480 3b 3b 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 66 6f ;;.GNU.General.Public.License.fo
784a0 72 20 6d 6f 72 65 20 64 65 74 61 69 6c 73 2e 0a 0a 3b 3b 20 59 6f 75 20 73 68 6f 75 6c 64 20 68 r.more.details...;;.You.should.h
784c0 61 76 65 20 72 65 63 65 69 76 65 64 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20 47 4e 55 20 47 ave.received.a.copy.of.the.GNU.G
784e0 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 0a 3b 3b 20 61 6c 6f 6e 67 20 77 eneral.Public.License.;;.along.w
78500 69 74 68 20 74 68 69 73 20 70 72 6f 67 72 61 6d 2e 20 20 49 66 20 6e 6f 74 2c 20 73 65 65 20 3c ith.this.program...If.not,.see.<
78520 68 74 74 70 73 3a 2f 2f 77 77 77 2e 67 6e 75 2e 6f 72 67 2f 6c 69 63 65 6e 73 65 73 2f 3e 2e 0a https://www.gnu.org/licenses/>..
78540 0a 3b 3b 3b 20 43 6f 6d 6d 65 6e 74 61 72 79 3a 0a 0a 3b 3b 20 54 68 69 73 20 66 69 6c 65 20 61 .;;;.Commentary:..;;.This.file.a
78560 64 64 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20 74 68 65 20 43 68 61 74 47 50 54 20 41 50 49 20 dds.support.for.the.ChatGPT.API.
78580 74 6f 20 67 70 74 65 6c 0a 0a 3b 3b 3b 20 43 6f 64 65 3a 0a 28 72 65 71 75 69 72 65 20 27 63 6c to.gptel..;;;.Code:.(require.'cl
785a0 2d 67 65 6e 65 72 69 63 29 0a 28 65 76 61 6c 2d 77 68 65 6e 2d 63 6f 6d 70 69 6c 65 0a 20 20 28 -generic).(eval-when-compile...(
785c0 72 65 71 75 69 72 65 20 27 63 6c 2d 6c 69 62 29 29 0a 28 72 65 71 75 69 72 65 20 27 6d 61 70 29 require.'cl-lib)).(require.'map)
785e0 0a 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 29 0a 28 64 65 66 76 61 72 20 67 ..(defvar.gptel-model).(defvar.g
78600 70 74 65 6c 2d 73 74 72 65 61 6d 29 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d 75 73 65 2d 63 ptel-stream).(defvar.gptel-use-c
78620 75 72 6c 29 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 0a 28 64 65 66 url).(defvar.gptel-backend).(def
78640 76 61 72 20 67 70 74 65 6c 2d 74 65 6d 70 65 72 61 74 75 72 65 29 0a 28 64 65 66 76 61 72 20 67 var.gptel-temperature).(defvar.g
78660 70 74 65 6c 2d 6d 61 78 2d 74 6f 6b 65 6e 73 29 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d 2d ptel-max-tokens).(defvar.gptel--
78680 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 6e 2d 6f 62 6a system-message).(defvar.json-obj
786a0 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 65 29 0a 28 64 ect-type).(defvar.gptel-mode).(d
786c0 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 0a 28 64 65 66 efvar.gptel-track-response).(def
786e0 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 76 61 72 20 67 var.gptel-track-media).(defvar.g
78700 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 65 6c 2d 74 6f ptel-use-tools).(defvar.gptel-to
78720 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 6c 2d 63 6f 6e ols).(declare-function.gptel-con
78740 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 63 6f 6e 74 65 text--collect-media."gptel-conte
78760 78 74 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 67 70 74 65 6c 2d 2d 62 61 xt").(declare-function.gptel--ba
78780 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 72 65 2d 66 75 se64-encode."gptel").(declare-fu
787a0 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 20 22 67 70 74 nction.gptel--trim-prefixes."gpt
787c0 65 6c 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 67 70 74 65 6c 2d 2d 70 61 el").(declare-function.gptel--pa
787e0 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 65 63 6c 61 72 rse-media-links."gptel").(declar
78800 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 61 62 6c 65 2d e-function.gptel--model-capable-
78820 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 6e 20 67 70 74 p."gptel").(declare-function.gpt
78840 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 63 6c 61 72 65 el--model-name."gptel").(declare
78860 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 79 20 22 67 70 -function.gptel--get-api-key."gp
78880 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 70 2d 6d 61 74 tel").(declare-function.prop-mat
788a0 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 72 63 68 22 29 ch-value."text-property-search")
788c0 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 70 65 72 74 79 .(declare-function.text-property
788e0 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 65 72 74 79 2d -search-backward."text-property-
78900 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 6a 73 6f 6e 2d search").(declare-function.json-
78920 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 69 6f 6e 20 67 read."json").(declare-function.g
78940 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 67 70 74 65 6c ptel-prompt-prefix-string."gptel
78960 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 72 65 73 70 6f ").(declare-function.gptel-respo
78980 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 28 64 65 63 6c nse-prefix-string."gptel").(decl
789a0 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 6c 69 73 74 73 are-function.gptel--merge-plists
789c0 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
789e0 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 74 65 6c 22 29 l--model-request-params."gptel")
78a00 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
78a20 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 72 65 --wrap."gptel-context").(declare
78a40 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 6d 70 74 20 22 -function.gptel--inject-prompt."
78a60 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-
78a80 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 53 4f 4e 20 63 -parse-tools."gptel")..;;.JSON.c
78aa0 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 20 67 70 74 65 onversion.semantics.used.by.gpte
78ac0 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 6d 70 74 79 20 l.;;.empty.object."{}".=>.empty.
78ae0 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 20 20 20 20 20 list.'().==.nil.;;.null.........
78b00 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 20 20 20 20 20 .....=>.:null.;;.false..........
78b20 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 74 6f 6f 6c 29 ...=>.:json-false..;;.TODO(tool)
78b40 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 72 6f 6d 20 61 .Except.when.reading.JSON.from.a
78b60 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 0a 28 64 65 66 .string,.where.null.=>.nil..(def
78b80 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 20 28 69 66 20 macro.gptel--json-read.()...(if.
78ba0 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 29 0a 20 20 20 (fboundp.'json-parse-buffer)....
78bc0 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 20 20 20 20 3a ...`(json-parse-buffer.........:
78be0 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 3a 6e 75 6c 6c object-type.'plist.........:null
78c00 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 65 2d 6f 62 6a -object.:null.........:false-obj
78c20 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 72 65 20 27 6a ect.:json-false).....(require.'j
78c40 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 74 2d 74 79 70 son).....(defvar.json-object-typ
78c60 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 20 20 20 28 64 e).....(defvar.json-null).....(d
78c80 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 6a 73 6f 6e 2d 72 65 61 64 20 22 6a 73 6f 6e 22 eclare-function.json-read."json"
78ca0 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 74 2d 74 79 70 .()).....`(let.((json-object-typ
78cc0 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 6e 75 6c 6c 20 e.'plist)............(json-null.
78ce0 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 29 0a 0a 28 64 :null)).......(json-read))))..(d
78d00 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 72 69 6e 67 20 efmacro.gptel--json-read-string.
78d20 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 70 61 72 73 65 (str)...(if.(fboundp.'json-parse
78d40 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 2d 73 74 72 69 -string).......`(json-parse-stri
78d60 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 65 20 27 70 6c ng.,str.........:object-type.'pl
78d80 69 73 74 0a 20 20 20 20 20 20 20 20 3a 6e 75 6c 6c 2d 6f 62 6a 65 63 74 20 6e 69 6c 0a 20 20 20 ist.........:null-object.nil....
78da0 20 20 20 20 20 3a 66 61 6c 73 65 2d 6f 62 6a 65 63 74 20 3a 6a 73 6f 6e 2d 66 61 6c 73 65 29 0a .....:false-object.:json-false).
78dc0 20 20 20 20 28 72 65 71 75 69 72 65 20 27 6a 73 6f 6e 29 0a 20 20 20 20 28 64 65 66 76 61 72 20 ....(require.'json).....(defvar.
78de0 6a 73 6f 6e 2d 6f 62 6a 65 63 74 2d 74 79 70 65 29 0a 20 20 20 20 28 64 65 63 6c 61 72 65 2d 66 json-object-type).....(declare-f
78e00 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 6e 67 20 22 6a unction.json-read-from-string."j
78e20 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 74 son".()).....`(let.((json-object
78e40 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 72 65 61 64 2d -type.'plist)).......(json-read-
78e60 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 61 63 72 6f 20 from-string.,str))))..(defmacro.
78e80 67 70 74 65 6c 2d 2d 6a 73 6f 6e 2d 65 6e 63 6f 64 65 20 28 6f 62 6a 65 63 74 29 0a 20 20 28 69 gptel--json-encode.(object)...(i
78ea0 66 20 28 66 62 6f 75 6e 64 70 20 27 6a 73 6f 6e 2d 73 65 72 69 61 6c 69 7a 65 29 0a 20 20 20 20 f.(fboundp.'json-serialize).....
78ec0 20 20 60 28 6a 73 6f 6e 2d 73 65 72 69 61 6c 69 7a 65 20 2c 6f 62 6a 65 63 74 0a 20 20 20 20 20 ..`(json-serialize.,object......
78ee0 20 20 20 3a 6e 75 6c 6c 2d 6f 62 6a 65 63 74 20 3a 6e 75 6c 6c 0a 20 20 20 20 20 20 20 20 3a 66 ...:null-object.:null.........:f
78f00 61 6c 73 65 2d 6f 62 6a 65 63 74 20 3a 6a 73 6f 6e 2d 66 61 6c 73 65 29 0a 20 20 20 20 28 72 65 alse-object.:json-false).....(re
78f20 71 75 69 72 65 20 27 6a 73 6f 6e 29 0a 20 20 20 20 28 64 65 66 76 61 72 20 6a 73 6f 6e 2d 66 61 quire.'json).....(defvar.json-fa
78f40 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 0a 20 20 20 20 lse).....(defvar.json-null).....
78f60 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 64 65 20 22 6a (declare-function.json-encode."j
78f80 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 6a 73 6f 6e 2d son".(object)).....`(let.((json-
78fa0 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 20 20 20 28 6a false.:json-false)............(j
78fc0 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 6f 6e 2d 65 6e son-null..:null)).......(json-en
78fe0 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 74 65 6c 2d 2d code.,object))))..(defun.gptel--
79000 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 43 6f 6e 76 65 process-models.(models)..."Conve
79020 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 6c 73 20 77 69 rt.items.in.MODELS.to.symbols.wi
79040 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 0a 20 20 28 6c th.appropriate.properties."...(l
79060 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 20 28 64 6f 6c et.((models-processed)).....(dol
79080 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 6c 2d 65 74 79 ist.(model.models).......(cl-ety
790a0 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 67 20 28 70 75 pecase.model.........(string.(pu
790c0 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 6f 63 65 73 73 sh.(intern.model).models-process
790e0 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 6d 6f 64 65 6c ed)).........(symbol.(push.model
79100 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 20 28 63 6f 6e .models-processed)).........(con
79120 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 67 2d 62 69 6e s..........(cl-destructuring-bin
79140 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 20 20 20 20 20 d.(name...props).model..........
79160 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 0a 20 20 20 20 ..(setf.(symbol-plist.name).....
79180 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 69 6e 67 20 65 .............;;.MAYBE:.Merging.e
791a0 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 66 65 72 2c 20 xisting.symbol.plists.is.safer,.
791c0 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 20 20 20 3b 3b but.makes.it..................;;
791e0 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 6c 20 70 6c 69 .difficult.to.reset.a.symbol.pli
79200 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 6d 0a 20 20 20 st,.since.removing.keys.from....
79220 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 6f 73 65 64 20 ..............;;.it.(as.opposed.
79240 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 6d 6f 72 65 20 to.setting.them.to.nil).is.more.
79260 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 20 20 20 20 20 work...................;;.......
79280 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 6c 69 73 74 20 ...........;;.(map-merge.'plist.
792a0 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 20 20 20 20 20 (symbol-plist.name).props)......
792c0 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 20 20 20 28 70 ............props)............(p
792e0 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 29 29 29 0a 20 ush.name.models-processed)))))..
79300 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 65 64 29 29 29 ...(nreverse.models-processed)))
79320 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 20 66 6f 72 20 ..;;;.Common.backend.struct.for.
79340 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 6b 6e 6f 77 6e LLM.support.(defvar.gptel--known
79360 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 4c 4d 20 62 61 -backends.nil..."Alist.of.LLM.ba
79380 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 73 20 69 73 20 ckends.known.to.gptel...This.is.
793a0 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 64 65 64 20 6e an.alist.mapping.user-provided.n
793c0 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 65 20 60 67 70 ames.to.backend.structs,.see.`gp
793e0 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 20 6d 6f 72 65 tel-backend'...You.can.have.more
79400 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 74 6f 20 74 68 .than.one.backend.pointing.to.th
79420 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 69 6e 67 20 73 e.same.resource.with.differing.s
79440 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 74 2d 62 61 63 ettings.")..(defun.gptel-get-bac
79460 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 20 62 61 63 6b kend.(name)..."Return.gptel.back
79480 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 72 6f 72 20 69 end.with.NAME...Throw.an.error.i
794a0 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 20 28 61 6c 69 f.there.is.no.match."...(or.(ali
794c0 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 64 st-get.name.gptel--known-backend
794e0 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 73 65 72 2d 65 s.nil.nil.#'equal).......(user-e
79500 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 77 6e 20 74 6f rror."Backend.%s.is.not.known.to
79520 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 20 20 20 20 6e .be.defined"...................n
79540 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 70 74 65 6c 2d ame)))..(gv-define-setter.gptel-
79560 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 73 65 74 66 20 get-backend.(val.name)...`(setf.
79580 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 77 6e 2d 62 61 (alist-get.,name.gptel--known-ba
795a0 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 75 61 6c 29 0a ckends...........nil.t.#'equal).
795c0 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 20 20 20 28 67 ....,val))..(cl-defstruct.....(g
795e0 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 67 70 74 65 6c ptel-backend.(:constructor.gptel
79600 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 20 20 20 20 20 --make-backend).................
79620 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 6b 65 6e 64 29 ...(:copier.gptel--copy-backend)
79640 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 6f 6c 20 73 74 )...name.host.header.protocol.st
79660 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 75 72 6c 20 72 ream...endpoint.key.models.url.r
79680 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 29 0a 0a 3b 3b 3b 20 equest-params...curl-args)..;;;.
796a0 4f 70 65 6e 41 49 20 28 43 68 61 74 47 50 54 29 0a 28 63 6c 2d 64 65 66 73 74 72 75 63 74 20 28 OpenAI.(ChatGPT).(cl-defstruct.(
796c0 67 70 74 65 6c 2d 6f 70 65 6e 61 69 20 28 3a 63 6f 6e 73 74 72 75 63 74 6f 72 20 67 70 74 65 6c gptel-openai.(:constructor.gptel
796e0 2d 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 --make-openai)..................
79700 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 20 ...........(:copier.nil)........
79720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 3a 69 6e 63 6c 75 64 65 20 67 .....................(:include.g
79740 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 29 29 0a 0a 3b 3b 20 48 6f 77 20 74 68 65 20 66 6f 6c 6c ptel-backend)))..;;.How.the.foll
79760 6f 77 69 6e 67 20 66 75 6e 63 74 69 6f 6e 20 77 6f 72 6b 73 3a 0a 3b 3b 0a 3b 3b 20 54 68 65 20 owing.function.works:.;;.;;.The.
79780 4f 70 65 6e 41 49 20 41 50 49 20 72 65 74 75 72 6e 73 20 61 20 73 74 72 65 61 6d 20 6f 66 20 64 OpenAI.API.returns.a.stream.of.d
797a0 61 74 61 20 63 68 75 6e 6b 73 2e 20 20 45 61 63 68 20 64 61 74 61 20 63 68 75 6e 6b 20 68 61 73 ata.chunks...Each.data.chunk.has
797c0 20 61 0a 3b 3b 20 63 6f 6d 70 6f 6e 65 6e 74 20 74 68 61 74 20 63 61 6e 20 62 65 20 70 61 72 73 .a.;;.component.that.can.be.pars
797e0 65 64 20 61 73 20 4a 53 4f 4e 2e 20 20 42 65 73 69 64 65 73 20 6d 65 74 61 64 61 74 61 2c 20 65 ed.as.JSON...Besides.metadata,.e
79800 61 63 68 20 63 68 75 6e 6b 20 68 61 73 0a 3b 3b 20 65 69 74 68 65 72 20 73 6f 6d 65 20 74 65 78 ach.chunk.has.;;.either.some.tex
79820 74 20 6f 72 20 70 61 72 74 20 6f 66 20 61 20 74 6f 6f 6c 20 63 61 6c 6c 2e 0a 3b 3b 0a 3b 3b 20 t.or.part.of.a.tool.call..;;.;;.
79840 49 66 20 77 65 20 66 69 6e 64 20 74 65 78 74 2c 20 77 65 20 63 6f 6c 6c 65 63 74 20 69 74 20 69 If.we.find.text,.we.collect.it.i
79860 6e 20 61 20 6c 69 73 74 2c 20 63 6f 6e 63 61 74 20 74 68 65 6d 20 61 74 20 74 68 65 20 65 6e 64 n.a.list,.concat.them.at.the.end
79880 20 61 6e 64 20 72 65 74 75 72 6e 0a 3b 3b 20 69 74 2e 0a 3b 3b 0a 3b 3b 20 49 66 20 77 65 20 66 .and.return.;;.it..;;.;;.If.we.f
798a0 69 6e 64 20 70 61 72 74 20 6f 66 20 61 20 74 6f 6f 6c 20 63 61 6c 6c 2c 20 77 65 20 62 65 67 69 ind.part.of.a.tool.call,.we.begi
798c0 6e 20 63 6f 6c 6c 65 63 74 69 6e 67 20 74 68 65 20 70 69 65 63 65 73 20 69 6e 0a 3b 3b 20 49 4e n.collecting.the.pieces.in.;;.IN
798e0 46 4f 20 2d 3e 20 3a 74 6f 6f 6c 2d 75 73 65 2e 0a 3b 3b 0a 3b 3b 20 54 6f 6f 6c 20 63 61 6c 6c FO.->.:tool-use..;;.;;.Tool.call
79900 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 74 68 65 6d 73 65 6c 76 65 73 20 4a 53 4f 4e 20 65 .arguments.are.themselves.JSON.e
79920 6e 63 6f 64 65 64 20 73 74 72 69 6e 67 73 20 63 61 6e 20 62 65 20 73 70 72 65 61 64 20 61 63 72 ncoded.strings.can.be.spread.acr
79940 6f 73 73 0a 3b 3b 20 63 68 75 6e 6b 73 2e 20 20 57 65 20 63 6f 6c 6c 65 63 74 20 74 68 65 6d 20 oss.;;.chunks...We.collect.them.
79960 69 6e 20 49 4e 46 4f 20 2d 3e 20 3a 70 61 72 74 69 61 6c 5f 6a 73 6f 6e 2e 20 20 54 68 65 20 65 in.INFO.->.:partial_json...The.e
79980 6e 64 20 6f 66 20 61 20 74 6f 6f 6c 20 63 61 6c 6c 0a 3b 3b 20 63 68 75 6e 6b 20 69 73 20 6d 61 nd.of.a.tool.call.;;.chunk.is.ma
799a0 72 6b 65 64 20 62 79 20 74 68 65 20 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20 61 6e 6f 74 68 65 72 rked.by.the.beginning.of.another
799c0 2c 20 6f 72 20 62 79 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20 73 74 72 65 61 6d 2e 20 20 ,.or.by.the.end.of.the.stream...
799e0 49 6e 0a 3b 3b 20 65 69 74 68 65 72 20 63 61 73 65 20 77 65 20 66 6c 61 74 65 6e 20 74 68 65 20 In.;;.either.case.we.flaten.the.
79a00 3a 70 61 72 74 69 61 6c 5f 6a 73 6f 6e 20 77 65 20 68 61 76 65 20 74 68 75 73 20 66 61 72 2c 20 :partial_json.we.have.thus.far,.
79a20 61 64 64 20 69 74 20 74 6f 20 74 68 65 20 74 6f 6f 6c 0a 3b 3b 20 63 61 6c 6c 20 73 70 65 63 20 add.it.to.the.tool.;;.call.spec.
79a40 69 6e 20 3a 74 6f 6f 6c 2d 75 73 65 20 61 6e 64 20 72 65 73 65 74 20 69 74 2e 20 20 46 69 6e 61 in.:tool-use.and.reset.it...Fina
79a60 6c 6c 79 20 77 65 20 61 70 70 65 6e 64 20 74 68 65 20 74 6f 6f 6c 20 63 61 6c 6c 73 20 74 6f 20 lly.we.append.the.tool.calls.to.
79a80 74 68 65 0a 3b 3b 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 the.;;.(INFO.->.:data.->.:messag
79aa0 65 73 29 20 6c 69 73 74 20 6f 66 20 70 72 6f 6d 70 74 73 2e 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 es).list.of.prompts...(cl-defmet
79ac0 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 28 28 5f hod.gptel-curl--parse-stream.((_
79ae0 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 6f 70 65 6e 61 69 29 20 69 6e 66 6f 29 0a 20 20 22 50 backend.gptel-openai).info)..."P
79b00 61 72 73 65 20 61 6e 20 4f 70 65 6e 41 49 20 41 50 49 20 64 61 74 61 20 73 74 72 65 61 6d 2e 0a arse.an.OpenAI.API.data.stream..
79b20 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 63 63 75 6d 75 .Return.the.text.response.accumu
79b40 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 6f 20 74 68 69 lated.since.the.last.call.to.thi
79b60 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 6d 75 74 61 74 s.function...Additionally,.mutat
79b80 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 65 0a 69 6e 66 e.state.INFO.to.add.tool-use.inf
79ba0 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 61 69 6e 73 20 ormation.if.the.stream.contains.
79bc0 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 29 29 0a 20 20 it."...(let*.((content-strs))...
79be0 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 28 77 ..(condition-case.nil.........(w
79c00 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 5e 64 61 74 61 3a 22 hile.(re-search-forward."^data:"
79c20 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 61 74 63 68 2d 64 61 .nil.t)...........(save-match-da
79c40 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 6e 67 2d 61 74 20 22 ta.............(if.(looking-at."
79c60 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 20 20 3b .*\\[DONE\\]").................;
79c80 3b 20 54 68 65 20 73 74 72 65 61 6d 20 68 61 73 20 65 6e 64 65 64 2c 20 73 6f 20 77 65 20 64 6f ;.The.stream.has.ended,.so.we.do
79ca0 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 68 69 6e 67 20 28 69 66 20 77 65 20 66 6f 75 6e .the.following.thing.(if.we.foun
79cc0 64 20 74 6f 6f 6c 20 63 61 6c 6c 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b d.tool.calls).................;;
79ce0 20 2d 20 70 61 63 6b 20 74 6f 6f 6c 20 63 61 6c 6c 73 20 69 6e 74 6f 20 74 68 65 20 6d 65 73 73 .-.pack.tool.calls.into.the.mess
79d00 61 67 65 73 20 70 72 6f 6d 70 74 73 20 6c 69 73 74 20 74 6f 20 73 65 6e 64 20 28 49 4e 46 4f 20 ages.prompts.list.to.send.(INFO.
79d20 2d 3e 20 3a 64 61 74 61 20 2d 3e 20 3a 6d 65 73 73 61 67 65 73 29 0a 20 20 20 20 20 20 20 20 20 ->.:data.->.:messages)..........
79d40 20 20 20 20 20 20 20 3b 3b 20 2d 20 63 6f 6c 6c 65 63 74 20 74 6f 6f 6c 20 63 61 6c 6c 73 20 28 .......;;.-.collect.tool.calls.(
79d60 66 6f 72 6d 61 74 74 65 64 20 64 69 66 66 65 72 65 6e 74 6c 79 29 20 69 6e 74 6f 20 28 49 4e 46 formatted.differently).into.(INF
79d80 4f 20 2d 3e 20 3a 74 6f 6f 6c 2d 75 73 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 O.->.:tool-use).................
79da0 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 69 73 74 2d 67 65 74 (when-let*.((tool-use.(plist-get
79dc0 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 20 20 20 20 20 20 20 .info.:tool-use))...............
79de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 72 67 73 20 28 61 70 70 6c 79 20 23 27 63 6f 6e ..............(args.(apply.#'con
79e00 63 61 74 20 28 6e 72 65 76 65 72 73 65 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 70 cat.(nreverse.(plist-get.info.:p
79e20 61 72 74 69 61 6c 5f 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 artial_json)))).................
79e40 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 20 28 70 6c 69 73 74 2d 67 65 74 20 28 63 61 ............(func.(plist-get.(ca
79e60 72 20 74 6f 6f 6c 2d 75 73 65 29 20 3a 66 75 6e 63 74 69 6f 6e 29 29 29 0a 20 20 20 20 20 20 20 r.tool-use).:function)))........
79e80 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 66 75 6e 63 20 3a 61 72 67 75 ...........(plist-put.func.:argu
79ea0 6d 65 6e 74 73 20 61 72 67 73 29 20 3b 55 70 64 61 74 65 20 61 72 67 75 6d 65 6e 74 73 20 66 6f ments.args).;Update.arguments.fo
79ec0 72 20 6c 61 73 74 20 72 65 63 6f 72 64 65 64 20 74 6f 6f 6c 0a 20 20 20 20 20 20 20 20 20 20 20 r.last.recorded.tool............
79ee0 20 20 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 0a 20 20 20 .......(gptel--inject-prompt....
79f00 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.
79f20 3a 62 61 63 6b 65 6e 64 29 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 64 61 74 61 29 :backend).(plist-get.info.:data)
79f40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 60 28 3a 72 6f 6c 65 20 22 61 73 73 ....................`(:role."ass
79f60 69 73 74 61 6e 74 22 20 3a 63 6f 6e 74 65 6e 74 20 3a 6e 75 6c 6c 20 3a 74 6f 6f 6c 5f 63 61 6c istant".:content.:null.:tool_cal
79f80 6c 73 20 2c 28 76 63 6f 6e 63 61 74 20 74 6f 6f 6c 2d 75 73 65 29 29 29 20 3b 20 3a 72 65 66 75 ls.,(vconcat.tool-use))).;.:refu
79fa0 73 61 6c 20 3a 6e 75 6c 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d sal.:null...................(cl-
79fc0 6c 6f 6f 70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 74 6f 6f 6c loop....................for.tool
79fe0 2d 63 61 6c 6c 20 69 6e 20 74 6f 6f 6c 2d 75 73 65 20 3b 20 43 6f 6e 73 74 72 75 63 74 20 74 68 -call.in.tool-use.;.Construct.th
7a000 65 20 63 61 6c 6c 20 73 70 65 63 73 20 66 6f 72 20 72 75 6e 6e 69 6e 67 20 74 68 65 20 66 75 6e e.call.specs.for.running.the.fun
7a020 63 74 69 6f 6e 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 20 66 ction.calls....................f
7a040 6f 72 20 73 70 65 63 20 3d 20 28 70 6c 69 73 74 2d 67 65 74 20 74 6f 6f 6c 2d 63 61 6c 6c 20 3a or.spec.=.(plist-get.tool-call.:
7a060 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 20 20 63 6f 6c function)....................col
7a080 6c 65 63 74 20 28 6c 69 73 74 20 3a 69 64 20 28 67 70 74 65 6c 2d 2d 6f 70 65 6e 61 69 2d 75 6e lect.(list.:id.(gptel--openai-un
7a0a0 66 6f 72 6d 61 74 2d 74 6f 6f 6c 2d 69 64 20 28 70 6c 69 73 74 2d 67 65 74 20 74 6f 6f 6c 2d 63 format-tool-id.(plist-get.tool-c
7a0c0 61 6c 6c 20 3a 69 64 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 all.:id)).......................
7a0e0 20 20 20 20 20 20 20 20 20 20 20 3a 6e 61 6d 65 20 28 70 6c 69 73 74 2d 67 65 74 20 73 70 65 63 ...........:name.(plist-get.spec
7a100 20 3a 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .:name).........................
7a120 20 20 20 20 20 20 20 20 20 3a 61 72 67 73 20 28 69 67 6e 6f 72 65 2d 65 72 72 6f 72 73 20 28 67 .........:args.(ignore-errors.(g
7a140 70 74 65 6c 2d 2d 6a 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 ptel--json-read-string..........
7a160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
7a180 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 70 65 63 20 3a 61 ..............(plist-get.spec.:a
7a1a0 72 67 75 6d 65 6e 74 73 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rguments))))....................
7a1c0 69 6e 74 6f 20 63 61 6c 6c 2d 73 70 65 63 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 into.call-specs.................
7a1e0 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
7a200 2d 75 73 65 20 63 61 6c 6c 2d 73 70 65 63 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 -use.call-specs)))..............
7a220 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 72 65 73 70 6f 6e 73 65 20 28 67 70 74 65 6c 2d 2d 6a .(when-let*.((response.(gptel--j
7a240 73 6f 6e 2d 72 65 61 64 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 son-read))......................
7a260 20 20 20 20 20 28 64 65 6c 74 61 20 28 6d 61 70 2d 6e 65 73 74 65 64 2d 65 6c 74 20 72 65 73 70 .....(delta.(map-nested-elt.resp
7a280 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 29 0a 20 20 20 onse.'(:choices.0.:delta))))....
7a2a0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 2d 6c 65 74 2a 20 28 28 63 6f 6e 74 65 6e 74 20 .............(if-let*.((content.
7a2c0 28 70 6c 69 73 74 2d 67 65 74 20 64 65 6c 74 61 20 3a 63 6f 6e 74 65 6e 74 29 29 0a 20 20 20 20 (plist-get.delta.:content)).....
7a2e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 6e 6f 74 20 28 65 71 20 ......................((not.(eq.
7a300 63 6f 6e 74 65 6e 74 20 3a 6e 75 6c 6c 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 content.:null))))...............
7a320 20 20 20 20 20 20 28 70 75 73 68 20 63 6f 6e 74 65 6e 74 20 63 6f 6e 74 65 6e 74 2d 73 74 72 73 ......(push.content.content-strs
7a340 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 4e 6f 20 74 65 78 74 20 63 )...................;;.No.text.c
7a360 6f 6e 74 65 6e 74 2c 20 73 6f 20 6c 6f 6f 6b 20 66 6f 72 20 74 6f 6f 6c 20 63 61 6c 6c 73 0a 20 ontent,.so.look.for.tool.calls..
7a380 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 74 6f .................(when-let*.((to
7a3a0 6f 6c 2d 63 61 6c 6c 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 ol-call.(map-nested-elt.delta.'(
7a3c0 3a 74 6f 6f 6c 5f 63 61 6c 6c 73 20 30 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :tool_calls.0)))................
7a3e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 20 28 70 6c 69 73 74 2d 67 65 74 20 ...............(func.(plist-get.
7a400 74 6f 6f 6c 2d 63 61 6c 6c 20 3a 66 75 6e 63 74 69 6f 6e 29 29 29 0a 20 20 20 20 20 20 20 20 20 tool-call.:function)))..........
7a420 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 70 6c 69 73 74 2d 67 65 74 20 66 75 6e 63 20 3a ...........(if.(plist-get.func.:
7a440 6e 61 6d 65 29 20 3b 6e 65 77 20 74 6f 6f 6c 20 62 6c 6f 63 6b 20 62 65 67 69 6e 73 0a 20 20 20 name).;new.tool.block.begins....
7a460 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 67 6e 0a 20 20 20 20 .....................(progn.....
7a480 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 2d 6c 65 74 2a ......................(when-let*
7a4a0 20 28 28 70 61 72 74 69 61 6c 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 70 61 72 74 .((partial.(plist-get.info.:part
7a4c0 69 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 ial_json))).....................
7a4e0 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 70 72 65 76 2d 74 6f 6f 6c 2d 63 61 6c 6c 20 28 ........(let*.((prev-tool-call.(
7a500 63 61 72 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 74 6f 6f 6c 2d 75 73 65 29 29 29 car.(plist-get.info.:tool-use)))
7a520 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
7a540 20 20 20 20 28 70 72 65 76 2d 66 75 6e 63 20 28 70 6c 69 73 74 2d 67 65 74 20 70 72 65 76 2d 74 ....(prev-func.(plist-get.prev-t
7a560 6f 6f 6c 2d 63 61 6c 6c 20 3a 66 75 6e 63 74 69 6f 6e 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 ool-call.:function)))...........
7a580 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 70 ....................(plist-put.p
7a5a0 72 65 76 2d 66 75 6e 63 20 3a 61 72 67 75 6d 65 6e 74 73 20 3b 75 70 64 61 74 65 20 61 72 67 73 rev-func.:arguments.;update.args
7a5c0 20 66 6f 72 20 6f 6c 64 20 74 6f 6f 6c 20 62 6c 6f 63 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 .for.old.tool.block.............
7a5e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 70 .............................(ap
7a600 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 2d 67 65 ply.#'concat.(nreverse.(plist-ge
7a620 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))))).......
7a640 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
7a660 20 69 6e 66 6f 20 3a 70 61 72 74 69 61 6c 5f 6a 73 6f 6e 20 6e 69 6c 29 29 20 3b 63 6c 65 61 72 .info.:partial_json.nil)).;clear
7a680 20 6f 75 74 20 66 69 6e 69 73 68 65 64 20 63 68 61 69 6e 20 6f 66 20 70 61 72 74 69 61 6c 20 61 .out.finished.chain.of.partial.a
7a6a0 72 67 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b rgs...........................;;
7a6c0 20 53 74 61 72 74 20 6e 65 77 20 63 68 61 69 6e 20 6f 66 20 70 61 72 74 69 61 6c 20 61 72 67 75 .Start.new.chain.of.partial.argu
7a6e0 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....................
7a700 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 5f .......(plist-put.info.:partial_
7a720 6a 73 6f 6e 20 28 6c 69 73 74 20 28 70 6c 69 73 74 2d 67 65 74 20 66 75 6e 63 20 3a 61 72 67 75 json.(list.(plist-get.func.:argu
7a740 6d 65 6e 74 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ments)))........................
7a760 20 20 20 3b 3b 20 4e 4f 54 45 3a 20 44 6f 20 4e 4f 54 20 75 73 65 20 60 70 75 73 68 27 20 66 6f ...;;.NOTE:.Do.NOT.use.`push'.fo
7a780 72 20 74 68 69 73 2c 20 69 74 20 70 72 65 70 65 6e 64 73 20 61 6e 64 20 77 65 20 6c 6f 73 65 20 r.this,.it.prepends.and.we.lose.
7a7a0 74 68 65 20 72 65 66 65 72 65 6e 63 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 the.reference...................
7a7c0 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 2d 75 73 ........(plist-put.info.:tool-us
7a7e0 65 20 28 63 6f 6e 73 20 74 6f 6f 6c 2d 63 61 6c 6c 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 e.(cons.tool-call.(plist-get.inf
7a800 6f 20 3a 74 6f 6f 6c 2d 75 73 65 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 o.:tool-use)))).................
7a820 20 20 20 20 20 20 3b 3b 20 6f 6c 64 20 74 6f 6f 6c 20 62 6c 6f 63 6b 20 63 6f 6e 74 69 6e 75 65 ......;;.old.tool.block.continue
7a840 73 2c 20 73 6f 20 63 6f 6e 74 69 6e 75 65 20 63 6f 6c 6c 65 63 74 69 6e 67 20 61 72 67 75 6d 65 s,.so.continue.collecting.argume
7a860 6e 74 73 20 69 6e 20 3a 70 61 72 74 69 61 6c 5f 6a 73 6f 6e 20 0a 20 20 20 20 20 20 20 20 20 20 nts.in.:partial_json............
7a880 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 70 6c 69 73 74 2d 67 65 74 20 66 75 6e ............(push.(plist-get.fun
7a8a0 63 20 3a 61 72 67 75 6d 65 6e 74 73 29 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 70 c.:arguments).(plist-get.info.:p
7a8c0 61 72 74 69 61 6c 5f 6a 73 6f 6e 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 artial_json)))))................
7a8e0 20 3b 3b 20 43 68 65 63 6b 20 66 6f 72 20 72 65 61 73 6f 6e 69 6e 67 20 62 6c 6f 63 6b 73 2c 20 .;;.Check.for.reasoning.blocks,.
7a900 63 75 72 72 65 6e 74 6c 79 20 6f 6e 6c 79 20 75 73 65 64 20 62 79 20 4f 70 65 6e 72 6f 75 74 65 currently.only.used.by.Openroute
7a920 72 0a 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 53 68 6f 75 r.................;;.MAYBE:.Shou
7a940 6c 64 20 74 68 69 73 20 62 65 20 6d 6f 76 65 64 20 74 6f 20 61 20 64 65 64 69 63 61 74 65 64 20 ld.this.be.moved.to.a.dedicated.
7a960 4f 70 65 6e 72 6f 75 74 65 72 20 62 61 63 6b 65 6e 64 3f 0a 20 20 20 20 20 20 20 20 20 20 20 20 Openrouter.backend?.............
7a980 20 20 20 20 28 75 6e 6c 65 73 73 20 28 6f 72 20 28 65 71 20 28 70 6c 69 73 74 2d 67 65 74 20 69 ....(unless.(or.(eq.(plist-get.i
7a9a0 6e 66 6f 20 3a 72 65 61 73 6f 6e 69 6e 67 2d 62 6c 6f 63 6b 29 20 27 64 6f 6e 65 29 0a 20 20 20 nfo.:reasoning-block).'done)....
7a9c0 20 20 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 70 .........................(not.(p
7a9e0 6c 69 73 74 2d 6d 65 6d 62 65 72 20 64 65 6c 74 61 20 3a 72 65 61 73 6f 6e 69 6e 67 29 29 29 0a list-member.delta.:reasoning))).
7aa00 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 72 65 61 ..................(if-let*.((rea
7aa20 73 6f 6e 69 6e 67 2d 63 68 75 6e 6b 20 28 70 6c 69 73 74 2d 67 65 74 20 64 65 6c 74 61 20 3a 72 soning-chunk.(plist-get.delta.:r
7aa40 65 61 73 6f 6e 69 6e 67 29 29 20 3b 66 6f 72 20 6f 70 65 6e 72 6f 75 74 65 72 0a 20 20 20 20 20 easoning)).;for.openrouter......
7aa60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 6e 6f 74 20 28 65 71 .......................((not.(eq
7aa80 20 72 65 61 73 6f 6e 69 6e 67 2d 63 68 75 6e 6b 20 3a 6e 75 6c 6c 29 29 29 29 0a 20 20 20 20 20 .reasoning-chunk.:null))))......
7aaa0 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
7aac0 20 3a 72 65 61 73 6f 6e 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .:reasoning.....................
7aae0 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 73 74 2d 67 65 74 20 .............(concat.(plist-get.
7ab00 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 67 2d 63 68 75 6e 6b info.:reasoning).reasoning-chunk
7ab20 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 44 6f 6e 65 20 77 )).....................;;.Done.w
7ab40 69 74 68 20 72 65 61 73 6f 6e 69 6e 67 20 69 66 20 77 65 20 67 65 74 20 6e 6f 6e 2d 65 6d 70 74 ith.reasoning.if.we.get.non-empt
7ab60 79 20 63 6f 6e 74 65 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 y.content.....................(i
7ab80 66 2d 6c 65 74 2a 20 28 28 63 20 28 70 6c 69 73 74 2d 67 65 74 20 64 65 6c 74 61 20 3a 63 6f 6e f-let*.((c.(plist-get.delta.:con
7aba0 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))..........................
7abc0 20 20 20 20 20 28 28 6e 6f 74 20 28 6f 72 20 28 65 71 20 63 20 3a 6e 75 6c 6c 29 20 28 73 74 72 .....((not.(or.(eq.c.:null).(str
7abe0 69 6e 67 2d 65 6d 70 74 79 2d 70 20 63 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ing-empty-p.c)))))..............
7ac00 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 70 6c 69 73 74 2d 6d 65 6d 62 65 72 20 69 6e 66 ...........(if.(plist-member.inf
7ac20 6f 20 3a 72 65 61 73 6f 6e 69 6e 67 29 20 3b 49 73 20 74 68 69 73 20 61 20 72 65 61 73 6f 6e 69 o.:reasoning).;Is.this.a.reasoni
7ac40 6e 67 20 6d 6f 64 65 6c 3f 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ng.model?.......................
7ac60 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 69 6e 67 ......(plist-put.info.:reasoning
7ac80 2d 62 6c 6f 63 6b 20 74 29 20 3b 45 6e 64 20 6f 66 20 73 74 72 65 61 6d 69 6e 67 20 72 65 61 73 -block.t).;End.of.streaming.reas
7aca0 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 20 20 20 oning.block.....................
7acc0 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 69 6e 67 ......(plist-put.info.:reasoning
7ace0 2d 62 6c 6f 63 6b 20 27 64 6f 6e 65 29 29 29 29 29 29 29 29 29 20 3b 4e 6f 74 20 75 73 69 6e 67 -block.'done))))))))).;Not.using
7ad00 20 61 20 72 65 61 73 6f 6e 69 6e 67 20 6d 6f 64 65 6c 0a 20 20 20 20 20 20 28 65 72 72 6f 72 20 .a.reasoning.model.......(error.
7ad20 28 67 6f 74 6f 2d 63 68 61 72 20 28 6d 61 74 63 68 2d 62 65 67 69 6e 6e 69 6e 67 20 30 29 29 29 (goto-char.(match-beginning.0)))
7ad40 29 0a 20 20 20 20 28 61 70 70 6c 79 20 23 27 63 6f 6e 63 61 74 20 28 6e 72 65 76 65 72 73 65 20 ).....(apply.#'concat.(nreverse.
7ad60 63 6f 6e 74 65 6e 74 2d 73 74 72 73 29 29 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 content-strs))))..(cl-defmethod.
7ad80 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
7ada0 20 67 70 74 65 6c 2d 6f 70 65 6e 61 69 29 20 72 65 73 70 6f 6e 73 65 20 69 6e 66 6f 29 0a 20 20 .gptel-openai).response.info)...
7adc0 22 50 61 72 73 65 20 61 6e 20 4f 70 65 6e 41 49 20 28 6e 6f 6e 2d 73 74 72 65 61 6d 69 6e 67 29 "Parse.an.OpenAI.(non-streaming)
7ade0 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 74 65 .RESPONSE.and.return.response.te
7ae00 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 73 70 xt...Mutate.state.INFO.with.resp
7ae20 6f 6e 73 65 20 6d 65 74 61 64 61 74 61 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 63 68 6f 69 63 65 onse.metadata."...(let*.((choice
7ae40 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 3a 63 68 0.(map-nested-elt.response.'(:ch
7ae60 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 28 70 6c oices.0)))..........(message.(pl
7ae80 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 20 20 20 ist-get.choice0.:message))......
7aea0 20 20 20 20 28 63 6f 6e 74 65 6e 74 20 28 70 6c 69 73 74 2d 67 65 74 20 6d 65 73 73 61 67 65 20 ....(content.(plist-get.message.
7aec0 3a 63 6f 6e 74 65 6e 74 29 29 29 0a 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 :content))).....(plist-put.info.
7aee0 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 28 70 6c 69 :stop-reason................(pli
7af00 73 74 2d 67 65 74 20 63 68 6f 69 63 65 30 20 3a 66 69 6e 69 73 68 5f 72 65 61 73 6f 6e 29 29 0a st-get.choice0.:finish_reason)).
7af20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 6f 75 74 70 75 74 2d 74 6f 6b 65 ....(plist-put.info.:output-toke
7af40 6e 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 70 2d 6e 65 73 74 65 64 2d 65 6c ns................(map-nested-el
7af60 74 20 72 65 73 70 6f 6e 73 65 20 27 28 3a 75 73 61 67 65 20 3a 63 6f 6d 70 6c 65 74 69 6f 6e 5f t.response.'(:usage.:completion_
7af80 74 6f 6b 65 6e 73 29 29 29 0a 20 20 20 20 3b 3b 20 4f 70 65 6e 41 49 20 72 65 74 75 72 6e 73 20 tokens))).....;;.OpenAI.returns.
7afa0 65 69 74 68 65 72 20 6e 6f 6e 2d 62 6c 61 6e 6b 20 74 65 78 74 20 63 6f 6e 74 65 6e 74 20 6f 72 either.non-blank.text.content.or
7afc0 20 61 20 74 6f 6f 6c 20 63 61 6c 6c 2c 20 6e 6f 74 20 62 6f 74 68 0a 20 20 20 20 28 69 66 20 28 .a.tool.call,.not.both.....(if.(
7afe0 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 74 and.content.(not.(or.(eq.content
7b000 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 29 .:null).(string-empty-p.content)
7b020 29 29 29 0a 20 20 20 20 20 20 20 20 28 70 72 6f 67 31 20 63 6f 6e 74 65 6e 74 0a 20 20 20 20 20 ))).........(prog1.content......
7b040 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 69 .....(when-let*.((reasoning.(pli
7b060 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 6f st-get.message.:reasoning)).;loo
7b080 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 20 k.for.reasoning.blocks..........
7b0a0 20 20 20 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 .............((and.(stringp.reas
7b0c0 6f 6e 69 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 oning).(not.(string-empty-p.reas
7b0e0 6f 6e 69 6e 67 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 oning))))).............(plist-pu
7b100 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 29 29 0a 20 t.info.:reasoning.reasoning)))..
7b120 20 20 20 20 20 28 70 72 6f 67 31 20 6e 69 6c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .....(prog1.nil.................
7b140 20 20 20 20 20 20 20 3b 20 4c 6f 6f 6b 20 66 6f 72 20 74 6f 6f 6c 20 63 61 6c 6c 73 20 6f 6e 6c .......;.Look.for.tool.calls.onl
7b160 79 20 69 66 20 6e 6f 20 63 6f 6e 74 65 6e 74 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 y.if.no.content.........(when-le
7b180 74 2a 20 28 28 74 6f 6f 6c 2d 63 61 6c 6c 73 20 28 70 6c 69 73 74 2d 67 65 74 20 6d 65 73 73 61 t*.((tool-calls.(plist-get.messa
7b1a0 67 65 20 3a 74 6f 6f 6c 5f 63 61 6c 6c 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 67 70 74 ge.:tool_calls)))...........(gpt
7b1c0 65 6c 2d 2d 69 6e 6a 65 63 74 2d 70 72 6f 6d 70 74 20 20 20 20 3b 20 46 69 72 73 74 20 61 64 64 el--inject-prompt....;.First.add
7b1e0 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 69 .the.tool.call.to.the.prompts.li
7b200 73 74 0a 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 62 st............(plist-get.info.:b
7b220 61 63 6b 65 6e 64 29 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 64 61 74 61 29 20 6d ackend).(plist-get.info.:data).m
7b240 65 73 73 61 67 65 29 0a 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 20 20 20 20 20 20 essage)...........(cl-loop......
7b260 20 20 20 3b 54 68 65 6e 20 63 61 70 74 75 72 65 20 74 68 65 20 74 6f 6f 6c 20 63 61 6c 6c 20 64 ...;Then.capture.the.tool.call.d
7b280 61 74 61 20 66 6f 72 20 72 75 6e 6e 69 6e 67 20 74 68 65 20 74 6f 6f 6c 0a 20 20 20 20 20 20 20 ata.for.running.the.tool........
7b2a0 20 20 20 20 66 6f 72 20 74 6f 6f 6c 2d 63 61 6c 6c 20 61 63 72 6f 73 73 20 74 6f 6f 6c 2d 63 61 ....for.tool-call.across.tool-ca
7b2c0 6c 6c 73 20 3b 72 65 70 6c 61 63 65 20 22 3a 61 72 67 75 6d 65 6e 74 73 22 20 77 69 74 68 20 22 lls.;replace.":arguments".with."
7b2e0 3a 61 72 67 73 22 0a 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 63 61 6c 6c 2d 73 70 65 63 20 :args"............for.call-spec.
7b300 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 6f 6c =.(copy-sequence.(plist-get.tool
7b320 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 20 20 20 20 64 6f 20 -call.:function))............do.
7b340 28 69 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 (ignore-errors.(plist-put.call-s
7b360 70 65 63 20 3a 61 72 67 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 pec.:args.......................
7b380 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
7b3a0 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 20 20 20 20 20 ead-string......................
7b3c0 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 63 ....................(plist-get.c
7b3e0 61 6c 6c 2d 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 all-spec.:arguments)))).........
7b400 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 61 72 67 75 6d 65 6e ...(plist-put.call-spec.:argumen
7b420 74 73 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 63 61 ts.nil)............(plist-put.ca
7b440 6c 6c 2d 73 70 65 63 20 3a 69 64 20 28 67 70 74 65 6c 2d 2d 6f 70 65 6e 61 69 2d 75 6e 66 6f 72 ll-spec.:id.(gptel--openai-unfor
7b460 6d 61 74 2d 74 6f 6f 6c 2d 69 64 20 28 70 6c 69 73 74 2d 67 65 74 20 74 6f 6f 6c 2d 63 61 6c 6c mat-tool-id.(plist-get.tool-call
7b480 20 3a 69 64 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 63 6f 6c 6c 65 63 74 20 63 61 6c 6c 2d .:id)))............collect.call-
7b4a0 73 70 65 63 20 69 6e 74 6f 20 74 6f 6f 6c 2d 75 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 66 69 spec.into.tool-use............fi
7b4c0 6e 61 6c 6c 79 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 74 6f 6f 6c 2d 75 73 65 20 nally.(plist-put.info.:tool-use.
7b4e0 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 65 74 68 6f 64 20 67 tool-use)))))))..(cl-defmethod.g
7b500 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 65 6e 64 20 67 70 74 ptel--request-data.((backend.gpt
7b520 65 6c 2d 6f 70 65 6e 61 69 29 20 70 72 6f 6d 70 74 73 29 0a 20 20 22 4a 53 4f 4e 20 65 6e 63 6f el-openai).prompts)..."JSON.enco
7b540 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 20 43 68 61 74 47 50 de.PROMPTS.for.sending.to.ChatGP
7b560 54 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 6d 65 73 73 61 67 T."...(when.gptel--system-messag
7b580 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 79 73 74 65 6d 22 e.....(push.(list.:role."system"
7b5a0 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 67 70 74 65 6c 2d .................:content.gptel-
7b5c0 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 70 72 6f 6d 70 -system-message)...........promp
7b5e0 74 73 29 29 0a 20 20 28 6c 65 74 20 28 28 70 72 6f 6d 70 74 73 2d 70 6c 69 73 74 0a 20 20 20 20 ts))...(let.((prompts-plist.....
7b600 20 20 20 20 20 60 28 3a 6d 6f 64 65 6c 20 2c 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 6e 61 6d .....`(:model.,(gptel--model-nam
7b620 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 3a 6d 65 73 73 61 e.gptel-model)............:messa
7b640 67 65 73 20 5b 2c 40 70 72 6f 6d 70 74 73 5d 0a 20 20 20 20 20 20 20 20 20 20 20 3a 73 74 72 65 ges.[,@prompts]............:stre
7b660 61 6d 20 2c 28 6f 72 20 67 70 74 65 6c 2d 73 74 72 65 61 6d 20 3a 6a 73 6f 6e 2d 66 61 6c 73 65 am.,(or.gptel-stream.:json-false
7b680 29 29 29 0a 20 20 20 20 20 20 20 20 28 72 65 61 73 6f 6e 69 6e 67 2d 6d 6f 64 65 6c 2d 70 20 3b ))).........(reasoning-model-p.;
7b6a0 20 54 4f 44 4f 3a 20 45 6d 62 65 64 20 74 68 69 73 20 63 61 70 61 62 69 6c 69 74 79 20 69 6e 20 .TODO:.Embed.this.capability.in.
7b6c0 74 68 65 20 6d 6f 64 65 6c 27 73 20 70 72 6f 70 65 72 74 69 65 73 0a 20 20 20 20 20 20 20 20 20 the.model's.properties..........
7b6e0 28 6d 65 6d 71 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 20 27 28 6f 31 20 6f 31 2d 70 72 65 76 69 65 (memq.gptel-model.'(o1.o1-previe
7b700 77 20 6f 31 2d 6d 69 6e 69 20 6f 33 2d 6d 69 6e 69 20 6f 33 29 29 29 29 0a 20 20 20 20 28 77 68 w.o1-mini.o3-mini.o3)))).....(wh
7b720 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
7b740 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-
7b760 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
7b780 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
7b7a0 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
7b7c0 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
7b7e0 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
7b800 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
7b820 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
7b840 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.................
7b860 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
7b880 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
7b8a0 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-
7b8c0 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
7b8e0 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
7b900 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
7b920 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,
7b940 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
7b960 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
7b980 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
7b9a0 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
7b9c0 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
7b9e0 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).........
7ba00 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)).....
7ba20 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
7ba40 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
7ba60 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
7ba80 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
7baa0 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
7bac0 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
7bae0 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
7bb00 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
7bb20 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
7bb40 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
7bb60 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
7bb80 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-
7bba0 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
7bbc0 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
7bbe0 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
7bc00 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...
7bc20 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.
7bc40 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
7bc60 61 6c 6c 5f 69 64 20 28 67 70 74 65 6c 2d 2d 6f 70 65 6e 61 69 2d 66 6f 72 6d 61 74 2d 74 6f 6f all_id.(gptel--openai-format-too
7bc80 6c 2d 69 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 l-id......................(plist
7bca0 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 3a 63 6f 6e 74 -get.tool-call.:id)).......:cont
7bcc0 65 6e 74 20 28 70 6c 69 73 74 2d 67 65 74 20 74 6f 6f 6c 2d 63 61 6c 6c 20 3a 72 65 73 75 6c 74 ent.(plist-get.tool-call.:result
7bce0 29 29 29 0a 20 20 20 74 6f 6f 6c 2d 75 73 65 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d )))....tool-use))..(defun.gptel-
7bd00 2d 6f 70 65 6e 61 69 2d 66 6f 72 6d 61 74 2d 74 6f 6f 6c 2d 69 64 20 28 74 6f 6f 6c 2d 69 64 29 -openai-format-tool-id.(tool-id)
7bd20 0a 20 20 28 66 6f 72 6d 61 74 20 22 63 61 6c 6c 5f 25 73 22 20 74 6f 6f 6c 2d 69 64 29 29 0a 0a ...(format."call_%s".tool-id))..
7bd40 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 6f 70 65 6e 61 69 2d 75 6e 66 6f 72 6d 61 74 2d 74 6f (defun.gptel--openai-unformat-to
7bd60 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 64 20 28 73 74 72 69 ol-id.(tool-id)...(or.(and.(stri
7bd80 6e 67 2d 6d 61 74 63 68 20 22 63 61 6c 6c 5f 5c 5c 28 2e 2b 5c 5c 29 22 20 74 6f 6f 6c 2d 69 64 ng-match."call_\\(.+\\)".tool-id
7bda0 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 20 31 20 74 6f 6f )............(match-string.1.too
7bdc0 6c 2d 69 64 29 29 0a 20 20 20 20 20 20 28 70 72 6f 67 6e 0a 20 20 20 20 20 20 20 20 28 6d 65 73 l-id)).......(progn.........(mes
7bde0 73 61 67 65 20 22 55 6e 65 78 70 65 63 74 65 64 20 74 6f 6f 6c 5f 63 61 6c 6c 5f 69 64 20 66 6f sage."Unexpected.tool_call_id.fo
7be00 72 6d 61 74 3a 20 25 73 22 20 74 6f 6f 6c 2d 69 64 29 0a 20 20 20 20 20 20 20 20 74 6f 6f 6c 2d rmat:.%s".tool-id).........tool-
7be20 69 64 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 69 6e 6a 65 63 id)))..;;.NOTE:.No.`gptel--injec
7be40 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 67 70 t-prompt'.method.required.for.gp
7be60 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 61 6e tel-openai,.since.this.;;.is.han
7be80 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
7bea0 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
7bec0 65 2d 6c 69 73 74 20 28 28 5f 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 6f 70 65 6e 61 69 29 20 e-list.((_backend.gptel-openai).
7bee0 70 72 6f 6d 70 74 2d 6c 69 73 74 29 0a 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 74 65 78 74 prompt-list)...(cl-loop.for.text
7bf00 20 69 6e 20 70 72 6f 6d 70 74 2d 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 72 .in.prompt-list............for.r
7bf20 6f 6c 65 20 3d 20 74 20 74 68 65 6e 20 28 6e 6f 74 20 72 6f 6c 65 29 0a 20 20 20 20 20 20 20 20 ole.=.t.then.(not.role).........
7bf40 20 20 20 69 66 20 74 65 78 74 20 63 6f 6c 6c 65 63 74 0a 20 20 20 20 20 20 20 20 20 20 20 28 6c ...if.text.collect............(l
7bf60 69 73 74 20 3a 72 6f 6c 65 20 28 69 66 20 72 6f 6c 65 20 22 75 73 65 72 22 20 22 61 73 73 69 73 ist.:role.(if.role."user"."assis
7bf80 74 61 6e 74 22 29 20 3a 63 6f 6e 74 65 6e 74 20 74 65 78 74 29 29 29 0a 0a 28 63 6c 2d 64 65 66 tant").:content.text)))..(cl-def
7bfa0 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 62 75 66 66 65 72 20 28 28 62 61 63 method.gptel--parse-buffer.((bac
7bfc0 6b 65 6e 64 20 67 70 74 65 6c 2d 6f 70 65 6e 61 69 29 20 26 6f 70 74 69 6f 6e 61 6c 20 6d 61 78 kend.gptel-openai).&optional.max
7bfe0 2d 65 6e 74 72 69 65 73 29 0a 20 20 28 6c 65 74 20 28 28 70 72 6f 6d 70 74 73 29 20 28 70 72 65 -entries)...(let.((prompts).(pre
7c000 76 2d 70 74 20 28 70 6f 69 6e 74 29 29 0a 20 20 20 20 20 20 20 20 28 69 6e 63 6c 75 64 65 2d 6d v-pt.(point)).........(include-m
7c020 65 64 69 61 20 28 61 6e 64 20 67 70 74 65 6c 2d 74 72 61 63 6b 2d 6d 65 64 69 61 0a 20 20 20 20 edia.(and.gptel-track-media.....
7c040 20 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 67 70 74 ........................(or.(gpt
7c060 65 6c 2d 2d 6d 6f 64 65 6c 2d 63 61 70 61 62 6c 65 2d 70 20 27 6d 65 64 69 61 29 0a 20 20 20 20 el--model-capable-p.'media).....
7c080 20 20 20 20 20 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
7c0a0 65 6c 2d 2d 6d 6f 64 65 6c 2d 63 61 70 61 62 6c 65 2d 70 20 27 75 72 6c 29 29 29 29 29 0a 20 20 el--model-capable-p.'url)))))...
7c0c0 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
7c0e0 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.(
7c100 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
7c120 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 2f 3d ries.0)).....................(/=
7c140 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 20 20 20 .prev-pt.(point-min))...........
7c160 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 72 65 76 69 6f 75 73 2d 73 ..........(goto-char.(previous-s
7c180 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 20 20 20 20 ingle-property-change...........
7c1a0 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 67 ......................(point).'g
7c1c0 70 74 65 6c 20 6e 69 6c 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 29 29 0a 20 20 20 20 20 20 20 20 ptel.nil.(point-min)))).........
7c1e0 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
7c200 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 6e nt).'gptel).............('respon
7c220 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 6e se..............(when-let*.((con
7c240 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 20 tent.(gptel--trim-prefixes......
7c260 20 20 20 20 20 20 20 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 ..............................(b
7c280 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
7c2a0 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 20 oint).prev-pt))))...............
7c2c0 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 20 3a .(push.(list.:role."assistant".:
7c2e0 63 6f 6e 74 65 6e 74 20 63 6f 6e 74 65 6e 74 29 20 70 72 6f 6d 70 74 73 29 29 29 0a 20 20 20 20 content.content).prompts))).....
7c300 20 20 20 20 20 20 20 20 28 60 28 74 6f 6f 6c 20 2e 20 2c 69 64 29 0a 20 20 20 20 20 20 20 20 20 ........(`(tool...,id)..........
7c320 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 ....(save-excursion.............
7c340 20 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 ...(condition-case.nil..........
7c360 20 20 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 ..........(let*.((tool-call.(rea
7c380 64 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 d.(current-buffer)))............
7c3a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 61 6d 65 20 28 70 6c 69 73 74 2d 67 65 74 20 ...............(name.(plist-get.
7c3c0 74 6f 6f 6c 2d 63 61 6c 6c 20 3a 6e 61 6d 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 tool-call.:name))...............
7c3e0 20 20 20 20 20 20 20 20 20 20 20 20 28 61 72 67 75 6d 65 6e 74 73 20 28 67 70 74 65 6c 2d 2d 6a ............(arguments.(gptel--j
7c400 73 6f 6e 2d 65 6e 63 6f 64 65 20 28 70 6c 69 73 74 2d 67 65 74 20 74 6f 6f 6c 2d 63 61 6c 6c 20 son-encode.(plist-get.tool-call.
7c420 3a 61 72 67 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 28 :args))))......................(
7c440 70 6c 69 73 74 2d 70 75 74 20 74 6f 6f 6c 2d 63 61 6c 6c 20 3a 69 64 20 69 64 29 0a 20 20 20 20 plist-put.tool-call.:id.id).....
7c460 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 6f 6f 6c .................(plist-put.tool
7c480 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 20 20 20 -call.:result...................
7c4a0 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 75 66 66 ..............(string-trim.(buff
7c4c0 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 20 er-substring-no-properties......
7c4e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
7c500 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 20 20 20 .........(point).prev-pt))).....
7c520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 63 61 72 20 28 67 70 74 .................(push.(car.(gpt
7c540 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.(
7c560 6c 69 73 74 20 74 6f 6f 6c 2d 63 61 6c 6c 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 list.tool-call)))...............
7c580 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 6d 70 74 73 29 0a 20 20 20 20 20 20 20 20 20 20 .............prompts)...........
7c5a0 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 61 73 ...........(push.(list.:role."as
7c5c0 73 69 73 74 61 6e 74 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 sistant"........................
7c5e0 20 20 20 20 20 20 20 20 20 20 3a 74 6f 6f 6c 5f 63 61 6c 6c 73 0a 20 20 20 20 20 20 20 20 20 20 ..........:tool_calls...........
7c600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 76 65 63 74 6f 72 20 28 .......................(vector.(
7c620 6c 69 73 74 20 3a 74 79 70 65 20 22 66 75 6e 63 74 69 6f 6e 22 0a 20 20 20 20 20 20 20 20 20 20 list.:type."function"...........
7c640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
7c660 20 20 20 20 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 2d 74 .....:id.(gptel--openai-format-t
7c680 6f 6f 6c 2d 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 ool-id.id)......................
7c6a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 66 75 6e 63 74 ..........................:funct
7c6c0 69 6f 6e 20 60 28 20 3a 6e 61 6d 65 20 2c 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ion.`(.:name.,name..............
7c6e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
7c700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 61 72 67 75 6d 65 6e 74 73 20 2c 61 72 67 75 6d ...............:arguments.,argum
7c720 65 6e 74 73 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ents))))........................
7c740 20 20 20 20 70 72 6f 6d 70 74 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 ....prompts))..................(
7c760 28 65 6e 64 2d 6f 66 2d 66 69 6c 65 20 69 6e 76 61 6c 69 64 2d 72 65 61 64 2d 73 79 6e 74 61 78 (end-of-file.invalid-read-syntax
7c780 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 28 66 6f )...................(message.(fo
7c7a0 72 6d 61 74 20 22 43 6f 75 6c 64 20 6e 6f 74 20 70 61 72 73 65 20 74 6f 6f 6c 2d 63 61 6c 6c 20 rmat."Could.not.parse.tool-call.
7c7c0 25 73 20 6f 6e 20 6c 69 6e 65 20 25 73 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 %s.on.line.%s"..................
7c7e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 64 20 28 6c 69 6e 65 2d 6e 75 6d 62 65 ..................id.(line-numbe
7c800 72 2d 61 74 2d 70 6f 73 20 28 70 6f 69 6e 74 29 29 29 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 r-at-pos.(point)))))))).........
7c820 20 20 20 20 28 27 69 67 6e 6f 72 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 27 6e 69 6c 0a ....('ignore).............('nil.
7c840 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 6d 61 78 2d 65 6e 74 72 69 65 73 20 28 63 .............(and.max-entries.(c
7c860 6c 2d 64 65 63 66 20 6d 61 78 2d 65 6e 74 72 69 65 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 l-decf.max-entries))............
7c880 20 20 28 69 66 20 69 6e 63 6c 75 64 65 2d 6d 65 64 69 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 ..(if.include-media.............
7c8a0 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 6c .....(when-let*.((content.(gptel
7c8c0 2d 2d 6f 70 65 6e 61 69 2d 70 61 72 73 65 2d 6d 75 6c 74 69 70 61 72 74 0a 20 20 20 20 20 20 20 --openai-parse-multipart........
7c8e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
7c900 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 2d (gptel--parse-media-links.major-
7c920 6d 6f 64 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 mode............................
7c940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
7c960 20 20 20 20 20 20 28 70 6f 69 6e 74 29 20 70 72 65 76 2d 70 74 29 29 29 29 0a 20 20 20 20 20 20 ......(point).prev-pt)))).......
7c980 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
7c9a0 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)......................(
7c9c0 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 74 push.(list.:role."user".:content
7c9e0 20 63 6f 6e 74 65 6e 74 29 20 70 72 6f 6d 70 74 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 .content).prompts)))............
7ca00 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 63 6f 6e 74 65 6e 74 20 28 67 70 74 65 6c 2d ....(when-let*.((content.(gptel-
7ca20 2d 74 72 69 6d 2d 70 72 65 66 69 78 65 73 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 -trim-prefixes.(buffer-substring
7ca40 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..................
7ca60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
7ca80 20 20 20 20 20 20 20 20 20 20 28 70 6f 69 6e 74 29 20 70 72 65 76 2d 70 74 29 29 29 29 0a 20 20 ..........(point).prev-pt))))...
7caa0 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 65 ...............(push.(list.:role
7cac0 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 74 ."user".:content.content).prompt
7cae0 73 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 70 72 65 76 2d 70 74 20 28 s)))))...........(setq.prev-pt.(
7cb00 70 6f 69 6e 74 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 point))).......(let.((content.(s
7cb20 74 72 69 6e 67 2d 74 72 69 6d 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 2d 6e 6f 2d tring-trim.(buffer-substring-no-
7cb40 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 20 properties......................
7cb60 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 6e ...............(point-min).(poin
7cb80 74 2d 6d 61 78 29 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 t-max))))).........(push.(list.:
7cba0 72 6f 6c 65 20 22 75 73 65 72 22 20 3a 63 6f 6e 74 65 6e 74 20 63 6f 6e 74 65 6e 74 29 20 70 72 role."user".:content.content).pr
7cbc0 6f 6d 70 74 73 29 29 29 0a 20 20 20 20 70 72 6f 6d 70 74 73 29 29 0a 0a 3b 3b 20 54 4f 44 4f 20 ompts))).....prompts))..;;.TODO.
7cbe0 54 68 69 73 20 63 6f 75 6c 64 20 62 65 20 61 20 67 65 6e 65 72 69 63 20 66 75 6e 63 74 69 6f 6e This.could.be.a.generic.function
7cc00 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 6f 70 65 6e 61 69 2d 70 61 72 73 65 2d 6d 75 6c 74 .(defun.gptel--openai-parse-mult
7cc20 69 70 61 72 74 20 28 70 61 72 74 73 29 0a 20 20 22 43 6f 6e 76 65 72 74 20 61 20 6d 75 6c 74 69 ipart.(parts)..."Convert.a.multi
7cc40 70 61 72 74 20 70 72 6f 6d 70 74 20 50 41 52 54 53 20 74 6f 20 74 68 65 20 4f 70 65 6e 41 49 20 part.prompt.PARTS.to.the.OpenAI.
7cc60 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 6e 20 61 6c 69 API.format...The.input.is.an.ali
7cc80 73 74 20 6f 66 20 74 68 65 20 66 6f 72 6d 0a 20 28 28 3a 74 65 78 74 20 5c 22 73 6f 6d 65 20 74 st.of.the.form..((:text.\"some.t
7cca0 65 78 74 5c 22 29 0a 20 20 28 3a 6d 65 64 69 61 20 5c 22 2f 70 61 74 68 2f 74 6f 2f 6d 65 64 69 ext\")...(:media.\"/path/to/medi
7ccc0 61 2e 70 6e 67 5c 22 20 3a 6d 69 6d 65 20 5c 22 69 6d 61 67 65 2f 70 6e 67 5c 22 29 0a 20 20 28 a.png\".:mime.\"image/png\")...(
7cce0 3a 74 65 78 74 20 5c 22 4d 6f 72 65 20 74 65 78 74 5c 22 29 29 2e 0a 0a 54 68 65 20 6f 75 74 70 :text.\"More.text\"))...The.outp
7cd00 75 74 20 69 73 20 61 20 76 65 63 74 6f 72 20 6f 66 20 65 6e 74 72 69 65 73 20 69 6e 20 61 20 62 ut.is.a.vector.of.entries.in.a.b
7cd20 61 63 6b 65 6e 64 2d 61 70 70 72 6f 70 72 69 61 74 65 0a 66 6f 72 6d 61 74 2e 22 0a 20 20 28 63 ackend-appropriate.format."...(c
7cd40 6c 2d 6c 6f 6f 70 0a 20 20 20 66 6f 72 20 70 61 72 74 20 69 6e 20 70 61 72 74 73 0a 20 20 20 66 l-loop....for.part.in.parts....f
7cd60 6f 72 20 6e 20 75 70 66 72 6f 6d 20 31 0a 20 20 20 77 69 74 68 20 6c 61 73 74 20 3d 20 28 6c 65 or.n.upfrom.1....with.last.=.(le
7cd80 6e 67 74 68 20 70 61 72 74 73 29 0a 20 20 20 66 6f 72 20 74 65 78 74 20 3d 20 28 70 6c 69 73 74 ngth.parts)....for.text.=.(plist
7cda0 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 65 64 69 61 20 3d 20 -get.part.:text)....for.media.=.
7cdc0 28 70 6c 69 73 74 2d 67 65 74 20 70 61 72 74 20 3a 6d 65 64 69 61 29 0a 20 20 20 69 66 20 74 65 (plist-get.part.:media)....if.te
7cde0 78 74 20 64 6f 0a 20 20 20 28 61 6e 64 20 28 6f 72 20 28 3d 20 6e 20 31 29 20 28 3d 20 6e 20 6c xt.do....(and.(or.(=.n.1).(=.n.l
7ce00 61 73 74 29 29 20 28 73 65 74 71 20 74 65 78 74 20 28 67 70 74 65 6c 2d 2d 74 72 69 6d 2d 70 72 ast)).(setq.text.(gptel--trim-pr
7ce20 65 66 69 78 65 73 20 74 65 78 74 29 29 29 0a 20 20 20 61 6e 64 20 69 66 20 74 65 78 74 0a 20 20 efixes.text)))....and.if.text...
7ce40 20 63 6f 6c 6c 65 63 74 20 60 28 3a 74 79 70 65 20 22 74 65 78 74 22 20 3a 74 65 78 74 20 2c 74 .collect.`(:type."text".:text.,t
7ce60 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
7ce80 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 74 79 70 65 e.if.media....collect....`(:type
7cea0 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
7cec0 72 6c 20 2c 28 63 6f 6e 63 61 74 20 22 64 61 74 61 3a 22 20 28 70 6c 69 73 74 2d 67 65 74 20 70 rl.,(concat."data:".(plist-get.p
7cee0 61 72 74 20 3a 6d 69 6d 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 art.:mime)......................
7cf00 20 20 20 22 3b 62 61 73 65 36 34 2c 22 20 28 67 70 74 65 6c 2d 2d 62 61 73 65 36 34 2d 65 6e 63 ...";base64,".(gptel--base64-enc
7cf20 6f 64 65 20 6d 65 64 69 61 29 29 29 29 0a 20 20 20 69 6e 74 6f 20 70 61 72 74 73 2d 61 72 72 61 ode.media))))....into.parts-arra
7cf40 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 70 61 72 74 20 y.end.and....if.(plist-get.part.
7cf60 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 20 22 69 6d 61 :url)....collect....`(:type."ima
7cf80 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 72 6c 20 2c 28 ge_url"......:image_url.(:url.,(
7cfa0 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 6e 74 6f 20 70 plist-get.part.:url)))....into.p
7cfc0 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 6e 20 28 76 63 arts-array....finally.return.(vc
7cfe0 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 44 4f 3a 20 44 oncat.parts-array)))..;;.TODO:.D
7d000 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 69 63 20 66 75 oes.this.need.to.be.a.generic.fu
7d020 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 2d 2d 77 72 61 nction?.(cl-defmethod.gptel--wra
7d040 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 6f p-user-prompt.((_backend.gptel-o
7d060 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 20 20 20 20 20 penai).prompts..................
7d080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 26 6f 70 74 69 6f 6e 61 6c 20 ......................&optional.
7d0a0 69 6e 6a 65 63 74 2d 6d 65 64 69 61 29 0a 20 20 22 57 72 61 70 20 74 68 65 20 6c 61 73 74 20 75 inject-media)..."Wrap.the.last.u
7d0c0 73 65 72 20 70 72 6f 6d 70 74 20 69 6e 20 50 52 4f 4d 50 54 53 20 77 69 74 68 20 74 68 65 20 63 ser.prompt.in.PROMPTS.with.the.c
7d0e0 6f 6e 74 65 78 74 20 73 74 72 69 6e 67 2e 0a 0a 49 66 20 49 4e 4a 45 43 54 2d 4d 45 44 49 41 20 ontext.string...If.INJECT-MEDIA.
7d100 69 73 20 6e 6f 6e 2d 6e 69 6c 20 77 72 61 70 20 69 74 20 77 69 74 68 20 62 61 73 65 36 34 2d 65 is.non-nil.wrap.it.with.base64-e
7d120 6e 63 6f 64 65 64 20 6d 65 64 69 61 0a 66 69 6c 65 73 20 69 6e 20 74 68 65 20 63 6f 6e 74 65 78 ncoded.media.files.in.the.contex
7d140 74 2e 22 0a 20 20 28 69 66 20 69 6e 6a 65 63 74 2d 6d 65 64 69 61 0a 20 20 20 20 20 20 3b 3b 20 t."...(if.inject-media.......;;.
7d160 57 72 61 70 20 74 68 65 20 66 69 72 73 74 20 75 73 65 72 20 70 72 6f 6d 70 74 20 77 69 74 68 20 Wrap.the.first.user.prompt.with.
7d180 69 6e 63 6c 75 64 65 64 20 6d 65 64 69 61 20 66 69 6c 65 73 2f 63 6f 6e 74 65 78 74 73 0a 20 20 included.media.files/contexts...
7d1a0 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 6d 65 64 69 61 2d 6c 69 73 74 20 28 67 70 74 ....(when-let*.((media-list.(gpt
7d1c0 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 63 6f 6c 6c 65 63 74 2d 6d 65 64 69 61 29 29 29 0a 20 20 20 el-context--collect-media)))....
7d1e0 20 20 20 20 20 28 63 6c 2d 63 61 6c 6c 66 20 28 6c 61 6d 62 64 61 20 28 63 75 72 72 65 6e 74 29 .....(cl-callf.(lambda.(current)
7d200 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...
7d220 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 6f 70 65 6e 61 ...................(gptel--opena
7d240 69 2d 70 61 72 73 65 2d 6d 75 6c 74 69 70 61 72 74 20 6d 65 64 69 61 2d 6c 69 73 74 29 0a 20 20 i-parse-multipart.media-list)...
7d260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 74 79 70 65 63 61 73 65 20 ...................(cl-typecase.
7d280 63 75 72 72 65 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 current........................(
7d2a0 73 74 72 69 6e 67 20 60 28 28 3a 74 79 70 65 20 22 74 65 78 74 22 20 3a 74 65 78 74 20 2c 63 75 string.`((:type."text".:text.,cu
7d2c0 72 72 65 6e 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rrent)))........................
7d2e0 28 76 65 63 74 6f 72 20 63 75 72 72 65 6e 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (vector.current)................
7d300 20 20 20 20 20 20 20 20 28 74 20 63 75 72 72 65 6e 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 ........(t.current))))..........
7d320 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 63 6f 6e ...(plist-get.(car.prompts).:con
7d340 74 65 6e 74 29 29 29 0a 20 20 20 20 3b 3b 20 57 72 61 70 20 74 68 65 20 6c 61 73 74 20 75 73 65 tent))).....;;.Wrap.the.last.use
7d360 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 6e 74 r.prompt.with.included.text.cont
7d380 65 78 74 73 0a 20 20 20 20 28 63 6c 2d 63 61 6c 6c 66 20 28 6c 61 6d 62 64 61 20 28 63 75 72 72 exts.....(cl-callf.(lambda.(curr
7d3a0 65 6e 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 65 74 79 70 65 63 61 ent).................(cl-etypeca
7d3c0 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 28 73 74 se.current...................(st
7d3e0 72 69 6e 67 20 28 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 77 72 61 70 20 63 75 72 72 65 6e ring.(gptel-context--wrap.curren
7d400 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 76 65 63 74 6f 72 20 28 69 t))...................(vector.(i
7d420 66 2d 6c 65 74 2a 20 28 28 77 72 61 70 70 65 64 20 28 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d f-let*.((wrapped.(gptel-context-
7d440 2d 77 72 61 70 20 6e 69 6c 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -wrap.nil)))....................
7d460 20 20 20 20 20 20 20 20 20 20 20 28 76 63 6f 6e 63 61 74 20 60 28 28 3a 74 79 70 65 20 22 74 65 ...........(vconcat.`((:type."te
7d480 78 74 22 20 3a 74 65 78 74 20 2c 77 72 61 70 70 65 64 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 xt".:text.,wrapped))............
7d4a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 75 72 72 ............................curr
7d4c0 65 6e 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ent)............................
7d4e0 20 63 75 72 72 65 6e 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 67 65 74 20 .current)))).........(plist-get.
7d500 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 29 29 29 (car.(last.prompts)).:content)))
7d520 29 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a 28 63 6c 2d 64 65 66 75 6e 20 67 70 74 65 )..;;;###autoload.(cl-defun.gpte
7d540 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 79 20 63 75 72 l-make-openai.....(name.&key.cur
7d560 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 71 75 65 73 74 l-args.models.stream.key.request
7d580 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 20 20 20 20 20 -params...........(header.......
7d5a0 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 29 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 6b 65 79 .....(lambda.().(when-let*.((key
7d5c0 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 20 20 20 20 20 .(gptel--get-api-key))).........
7d5e0 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 20 2e 20 ...........`(("Authorization"...
7d600 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 20 20 20 ,(concat."Bearer.".key))))))....
7d620 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 6d 22 29 0a 20 .......(host."api.openai.com")..
7d640 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 20 20 20 .........(protocol."https").....
7d660 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 6f 6d 70 6c 65 ......(endpoint."/v1/chat/comple
7d680 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 6e 41 49 20 41 tions"))..."Register.an.OpenAI.A
7d6a0 50 49 2d 63 6f 6d 70 61 74 69 62 6c 65 20 62 61 63 6b 65 6e 64 20 66 6f 72 20 67 70 74 65 6c 20 PI-compatible.backend.for.gptel.
7d6c0 77 69 74 68 20 4e 41 4d 45 2e 0a 0a 4b 65 79 77 6f 72 64 20 61 72 67 75 6d 65 6e 74 73 3a 0a 0a with.NAME...Keyword.arguments:..
7d6e0 43 55 52 4c 2d 41 52 47 53 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 61 20 6c 69 73 74 20 6f CURL-ARGS.(optional).is.a.list.o
7d700 66 20 61 64 64 69 74 69 6f 6e 61 6c 20 43 75 72 6c 20 61 72 67 75 6d 65 6e 74 73 2e 0a 0a 48 4f f.additional.Curl.arguments...HO
7d720 53 54 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 74 68 65 20 41 50 49 20 68 6f 73 74 2c 20 74 ST.(optional).is.the.API.host,.t
7d740 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 2e 0a 0a 4d 4f ypically.\"api.openai.com\"...MO
7d760 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 64 65 DELS.is.a.list.of.available.mode
7d780 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 6c 6c l.names,.as.symbols..Additionall
7d7a0 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 4c 4d y,.you.can.specify.supported.LLM
7d7c0 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 6f 6f .capabilities.like.vision.or.too
7d7e0 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 74 68 l-use.by.appending.a.plist.to.th
7d800 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 20 69 e.model.with.more.information,.i
7d820 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 73 74 n.the.form...(model-name...plist
7d840 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 6f 67 )..For.a.list.of.currently.recog
7d860 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 6f 70 nized.plist.keys,.see.`gptel--op
7d880 65 6e 61 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 6d 6f enai-models'..An.example.of.a.mo
7d8a0 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 74 68 del.specification.including.both
7d8c0 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 28 67 .kinds.of.specs:..:models.\\='(g
7d8e0 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 20 20 20 20 20 20 pt-3.5-turbo....................
7d900 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 2d 74 75 72 62 6f .....;Simple.specs...gpt-4-turbo
7d920 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 20 20 20 20 20 20 ...(gpt-4o-mini.................
7d940 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 72 69 70 74 .........;Full.spec....:descript
7d960 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 74 65 6c 6c 69 67 ion....\"Affordable.and.intellig
7d980 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 65 69 67 68 74 20 ent.small.model.for.lightweight.
7d9a0 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 6d 65 64 69 61 20 tasks\"....:capabilities.(media.
7d9c0 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 70 65 73 0a 20 20 tool.json.url)....:mime-types...
7d9e0 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 6e 67 5c 22 20 5c .(\"image/jpeg\".\"image/png\".\
7da00 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 22 29 29 29 0a 0a "image/gif\".\"image/webp\")))..
7da20 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 74 STREAM.is.a.boolean.to.toggle.st
7da40 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 66 reaming.responses,.defaults.to.f
7da60 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 69 alse...PROTOCOL.(optional).speci
7da80 66 69 65 73 20 74 68 65 20 70 72 6f 74 6f 63 6f 6c 2c 20 68 74 74 70 73 20 62 79 20 64 65 66 61 fies.the.protocol,.https.by.defa
7daa0 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
7dac0 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
7dae0 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 6c 65 74 69 6f 6e efaults.to.\"/v1/chat/completion
7db00 73 5c 22 2e 0a 0a 48 45 41 44 45 52 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 66 6f 72 20 61 s\"...HEADER.(optional).is.for.a
7db20 64 64 69 74 69 6f 6e 61 6c 20 68 65 61 64 65 72 73 20 74 6f 20 73 65 6e 64 20 77 69 74 68 20 65 dditional.headers.to.send.with.e
7db40 61 63 68 0a 72 65 71 75 65 73 74 2e 20 20 49 74 20 73 68 6f 75 6c 64 20 62 65 20 61 6e 20 61 6c ach.request...It.should.be.an.al
7db60 69 73 74 20 6f 72 20 61 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 72 65 74 75 72 6e 73 20 61 ist.or.a.function.that.returns.a
7db80 6e 0a 61 6c 69 73 74 2c 20 6c 69 6b 65 3a 0a 20 28 28 5c 22 43 6f 6e 74 65 6e 74 2d 54 79 70 65 n.alist,.like:..((\"Content-Type
7dba0 5c 22 20 2e 20 5c 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 6a 73 6f 6e 5c 22 29 29 0a 0a 4b 45 59 \"...\"application/json\"))..KEY
7dbc0 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 61 20 76 61 72 69 61 62 6c 65 20 77 68 6f 73 65 20 .(optional).is.a.variable.whose.
7dbe0 76 61 6c 75 65 20 69 73 20 74 68 65 20 41 50 49 20 6b 65 79 2c 20 6f 72 0a 66 75 6e 63 74 69 6f value.is.the.API.key,.or.functio
7dc00 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 54 n.that.returns.the.key...REQUEST
7dc20 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
7dc40 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
7dc60 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
7dc80 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.
7dca0 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
7dcc0 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."
7dce0 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.(
7dd00 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....
7dd20 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
7dd40 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
7dd60 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...
7dd80 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..
7dda0 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.......
7ddc0 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
7dde0 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)..............
7de00 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.........
7de20 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....
7de40 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...
7de60 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.
7de80 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..................
7dea0 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..............
7dec0 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."
7dee0 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).............
7df00 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
7df20 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......
7df40 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
7df60 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....................
7df80 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)............
7dfa0 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 75 72 65 0a 3b 3b .......backend))))..;;;.Azure.;;
7dfc0 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
7dfe0 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 6c 2d 61 72 67 73 e-azure.....(name.&key.curl-args
7e000 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 22 68 74 74 70 73 .host...........(protocol."https
7e020 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 64 61 20 28 29 20 ")...........(header.(lambda.().
7e040 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 74 2d 61 70 69 2d `(("api-key"...,(gptel--get-api-
7e060 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 70 74 65 6c 2d 61 key)))))...........(key.'gptel-a
7e080 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 74 72 65 61 6d 20 pi-key)...........models.stream.
7e0a0 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 20 22 52 65 67 69 endpoint.request-params)..."Regi
7e0c0 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 67 70 74 65 6c 20 ster.an.Azure.backend.for.gptel.
7e0e0 77 69 74 68 20 4e 41 4d 45 2e 0a 0a 4b 65 79 77 6f 72 64 20 61 72 67 75 6d 65 6e 74 73 3a 0a 0a with.NAME...Keyword.arguments:..
7e100 43 55 52 4c 2d 41 52 47 53 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 61 20 6c 69 73 74 20 6f CURL-ARGS.(optional).is.a.list.o
7e120 66 20 61 64 64 69 74 69 6f 6e 61 6c 20 43 75 72 6c 20 61 72 67 75 6d 65 6e 74 73 2e 0a 0a 48 4f f.additional.Curl.arguments...HO
7e140 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 53 20 69 73 20 61 ST.is.the.API.host...MODELS.is.a
7e160 20 6c 69 73 74 20 6f 66 20 61 76 61 69 6c 61 62 6c 65 20 6d 6f 64 65 6c 20 6e 61 6d 65 73 2c 20 .list.of.available.model.names,.
7e180 61 73 20 73 79 6d 62 6f 6c 73 2e 0a 0a 53 54 52 45 41 4d 20 69 73 20 61 20 62 6f 6f 6c 65 61 6e as.symbols...STREAM.is.a.boolean
7e1a0 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,.
7e1c0 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
7e1e0 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,.
7e200 68 74 74 70 73 20 62 79 20 64 65 66 61 75 6c 74 2e 0a 0a 45 4e 44 50 4f 49 4e 54 20 69 73 20 74 https.by.default...ENDPOINT.is.t
7e220 68 65 20 41 50 49 20 65 6e 64 70 6f 69 6e 74 20 66 6f 72 20 63 6f 6d 70 6c 65 74 69 6f 6e 73 2e he.API.endpoint.for.completions.
7e240 0a 0a 48 45 41 44 45 52 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 66 6f 72 20 61 64 64 69 74 ..HEADER.(optional).is.for.addit
7e260 69 6f 6e 61 6c 20 68 65 61 64 65 72 73 20 74 6f 20 73 65 6e 64 20 77 69 74 68 20 65 61 63 68 0a ional.headers.to.send.with.each.
7e280 72 65 71 75 65 73 74 2e 20 20 49 74 20 73 68 6f 75 6c 64 20 62 65 20 61 6e 20 61 6c 69 73 74 20 request...It.should.be.an.alist.
7e2a0 6f 72 20 61 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 72 65 74 75 6e 73 20 61 6e 0a 61 6c 69 or.a.function.that.retuns.an.ali
7e2c0 73 74 2c 20 6c 69 6b 65 3a 0a 20 28 28 5c 22 43 6f 6e 74 65 6e 74 2d 54 79 70 65 5c 22 20 2e 20 st,.like:..((\"Content-Type\"...
7e2e0 5c 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 6a 73 6f 6e 5c 22 29 29 0a 0a 4b 45 59 20 28 6f 70 74 \"application/json\"))..KEY.(opt
7e300 69 6f 6e 61 6c 29 20 69 73 20 61 20 76 61 72 69 61 62 6c 65 20 77 68 6f 73 65 20 76 61 6c 75 65 ional).is.a.variable.whose.value
7e320 20 69 73 20 74 68 65 20 41 50 49 20 6b 65 79 2c 20 6f 72 0a 66 75 6e 63 74 69 6f 6e 20 74 68 61 .is.the.API.key,.or.function.tha
7e340 74 20 72 65 74 75 72 6e 73 20 74 68 65 20 6b 65 79 2e 0a 0a 52 45 51 55 45 53 54 2d 50 41 52 41 t.returns.the.key...REQUEST-PARA
7e360 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
7e380 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.(
7e3a0 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
7e3c0 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
7e3e0 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
7e400 20 70 72 6f 76 69 64 65 20 75 73 65 72 20 6f 70 74 69 6f 6e 73 0a 66 6f 72 2e 0a 0a 45 78 61 6d .provide.user.options.for...Exam
7e420 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 2d 61 7a 75 72 65 ple:.-------...(gptel-make-azure
7e440 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 20 5c 22 68 74 74 ...\"Azure-1\"...:protocol.\"htt
7e460 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 4d 45 2e 6f 70 65 ps\"...:host.\"RESOURCE_NAME.ope
7e480 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 74 0a 20 20 5c 22 nai.azure.com\"...:endpoint...\"
7e4a0 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 4d 45 4e 54 5f 4e /openai/deployments/DEPLOYMENT_N
7e4c0 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 6e 3d 32 30 32 33 AME/completions?api-version=2023
7e4e0 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 64 65 6c 73 20 5c -05-15\"...:stream.t...:models.\
7e500 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 0a 20 20 28 64 65 \='(gpt-3.5-turbo.gpt-4))"...(de
7e520 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
7e540 6e 64 20 28 67 70 74 65 6c 2d 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 0a 20 20 20 20 20 20 20 20 20 nd.(gptel--make-openai..........
7e560 20 20 20 20 20 20 20 20 20 3a 63 75 72 6c 2d 61 72 67 73 20 63 75 72 6c 2d 61 72 67 73 0a 20 20 .........:curl-args.curl-args...
7e580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6e 61 6d 65 20 6e 61 6d 65 0a 20 20 20 20 20 ................:name.name......
7e5a0 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 68 6f 73 74 20 68 6f 73 74 0a 20 20 20 20 20 20 20 20 .............:host.host.........
7e5c0 20 20 20 20 20 20 20 20 20 20 3a 68 65 61 64 65 72 20 68 65 61 64 65 72 0a 20 20 20 20 20 20 20 ..........:header.header........
7e5e0 20 20 20 20 20 20 20 20 20 20 20 3a 6b 65 79 20 6b 65 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 ...........:key.key.............
7e600 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
7e620 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)...................:
7e640 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...............
7e660 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..........
7e680 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.........
7e6a0 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
7e6c0 74 2d 70 61 72 61 6d 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 75 72 6c 20 t-params...................:url.
7e6e0 28 69 66 20 70 72 6f 74 6f 63 6f 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (if.protocol....................
7e700 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 70 72 6f 74 6f 63 6f 6c 20 22 3a 2f 2f 22 20 68 ........(concat.protocol."://".h
7e720 6f 73 74 20 65 6e 64 70 6f 69 6e 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ost.endpoint)...................
7e740 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 68 6f 73 74 20 65 6e 64 70 6f 69 6e 74 29 29 29 29 .......(concat.host.endpoint))))
7e760 29 0a 20 20 20 20 28 70 72 6f 67 31 20 62 61 63 6b 65 6e 64 0a 20 20 20 20 20 20 28 73 65 74 66 ).....(prog1.backend.......(setf
7e780 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
7e7a0 63 6b 65 6e 64 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 69 ckends........................ni
7e7c0 6c 20 6e 69 6c 20 23 27 65 71 75 61 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 61 63 6b 65 l.nil.#'equal).............backe
7e7e0 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 75 74 6f 6c 6f 61 nd))))..;;.GPT4All.;;;###autoloa
7e800 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 74 34 61 6c 6c 20 d.(defalias.'gptel-make-gpt4all.
7e820 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 73 74 65 72 20 61 'gptel-make-openai..."Register.a
7e840 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 20 77 69 74 68 20 .GPT4All.backend.for.gptel.with.
7e860 4e 41 4d 45 2e 0a 0a 4b 65 79 77 6f 72 64 20 61 72 67 75 6d 65 6e 74 73 3a 0a 0a 43 55 52 4c 2d NAME...Keyword.arguments:..CURL-
7e880 41 52 47 53 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 61 64 64 ARGS.(optional).is.a.list.of.add
7e8a0 69 74 69 6f 6e 61 6c 20 43 75 72 6c 20 61 72 67 75 6d 65 6e 74 73 2e 0a 0a 48 4f 53 54 20 69 73 itional.Curl.arguments...HOST.is
7e8c0 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 70 6f 72 74 29 2c .where.GPT4All.runs.(with.port),
7e8e0 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 0a 4d 4f 44 45 4c .typically.localhost:4891..MODEL
7e900 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
7e920 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
7e940 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
7e960 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
7e980 4f 4c 20 73 70 65 63 69 66 69 65 73 20 74 68 65 20 70 72 6f 74 6f 63 6f 6c 2c 20 68 74 74 70 73 OL.specifies.the.protocol,.https
7e9a0 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
7e9c0 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
7e9e0 74 69 6f 6e 73 2c 20 64 65 66 61 75 6c 74 73 20 74 6f 0a 5c 22 2f 61 70 69 2f 76 31 2f 63 6f 6d tions,.defaults.to.\"/api/v1/com
7ea00 70 6c 65 74 69 6f 6e 73 5c 22 0a 0a 48 45 41 44 45 52 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 pletions\"..HEADER.(optional).is
7ea20 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.
7ea40 77 69 74 68 20 65 61 63 68 0a 72 65 71 75 65 73 74 2e 20 49 74 20 73 68 6f 75 6c 64 20 62 65 20 with.each.request..It.should.be.
7ea60 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 75 an.alist.or.a.function.that.retu
7ea80 6e 73 20 61 6e 0a 61 6c 69 73 74 2c 20 6c 69 6b 65 3a 0a 28 28 5c 22 43 6f 6e 74 65 6e 74 2d 54 ns.an.alist,.like:.((\"Content-T
7eaa0 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 29 0a 0a ype\"...\"application/json\"))..
7eac0 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 77 68 6f KEY.(optional).is.a.variable.who
7eae0 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 75 6e 63 se.value.is.the.API.key,.or.func
7eb00 74 69 6f 6e 20 74 68 61 74 20 72 65 74 75 72 6e 73 20 74 68 65 20 6b 65 79 2e 20 54 68 69 73 20 tion.that.returns.the.key..This.
7eb20 69 73 20 74 79 70 69 63 61 6c 6c 79 20 6e 6f 74 20 72 65 71 75 69 72 65 64 20 66 6f 72 0a 6c 6f is.typically.not.required.for.lo
7eb40 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 52 45 51 55 45 53 cal.models.like.GPT4All...REQUES
7eb60 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
7eb80 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
7eba0 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.
7ebc0 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
7ebe0 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
7ec00 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.
7ec20 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 2d 6d 61 6b 65 2d ..Example:.-------..(gptel-make-
7ec40 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 74 6f 63 6f 6c 20 gpt4all..\"GPT4All\"..:protocol.
7ec60 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 74 3a 34 38 39 31 \"http\"..:host.\"localhost:4891
7ec80 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 62 2d 6f 70 65 6e \"..:models.\\='(mistral-7b-open
7eca0 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 64 65 20 27 67 70 orca.Q4_0.gguf))")..(provide.'gp
7ecc0 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 61 69 2e 65 6c 20 tel-openai).;;;.gptel-openai.el.
7ece0 65 6e 64 73 20 68 65 72 65 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ends.here.......................
7ed00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7ed20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7ed40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7ed60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7ed80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7eda0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7edc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7ede0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7ee00 67 70 74 65 6c 2d 30 2e 39 2e 38 2f 67 70 74 65 6c 2d 6f 72 67 2e 65 6c 00 00 00 00 00 00 00 00 gptel-0.9.8/gptel-org.el........
7ee20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7ee40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7ee60 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
7ee80 30 30 37 37 34 36 34 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 33 35 34 36 00 20 30 00 00 00 0077464.00000000000.013546..0...
7eea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7eec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7eee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7ef00 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...................
7ef20 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...................
7ef40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7ef60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7ef80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7efa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7efc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7efe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7f000 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
7f020 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
7f040 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.(
7f060 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..;;
7f080 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
7f0a0 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
7f0c0 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
7f0e0 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
7f100 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
7f120 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
7f140 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
7f160 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
7f180 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.;
7f1a0 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
7f1c0 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
7f1e0 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
7f200 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
7f220 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.
7f240 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
7f260 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
7f280 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
7f2a0 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...;;
7f2c0 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
7f2e0 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
7f300 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...
7f320 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
7f340 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:..;
7f360 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.
7f380 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
7f3a0 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
7f3c0 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
7f3e0 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
7f400 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--
7f420 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
7f440 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)
7f460 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.
7f480 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
7f4a0 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
7f4c0 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
7f4e0 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).
7f500 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
7f520 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
7f540 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-
7f560 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
7f580 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
7f5a0 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--
7f5c0 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
7f5e0 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
7f600 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
7f620 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-
7f640 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
7f660 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
7f680 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
7f6a0 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").
7f6c0 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-
7f6e0 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.
7f700 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
7f720 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
7f740 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
7f760 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").(
7f780 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
7f7a0 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
7f7c0 69 6f 6e 20 6f 72 67 2d 65 6e 74 72 79 2d 67 65 74 20 22 6f 72 67 22 29 0a 28 64 65 63 6c 61 72 ion.org-entry-get."org").(declar
7f7e0 65 2d 66 75 6e 63 74 69 6f 6e 20 6f 72 67 2d 65 6e 74 72 79 2d 70 75 74 20 22 6f 72 67 22 29 0a e-function.org-entry-put."org").
7f800 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 6f 72 67 2d 77 69 74 68 2d 77 69 64 65 2d (declare-function.org-with-wide-
7f820 62 75 66 66 65 72 20 22 6f 72 67 2d 6d 61 63 73 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 buffer."org-macs").(declare-func
7f840 74 69 6f 6e 20 6f 72 67 2d 73 65 74 2d 70 72 6f 70 65 72 74 79 20 22 6f 72 67 22 29 0a 28 64 65 tion.org-set-property."org").(de
7f860 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 6f 72 67 2d 70 72 6f 70 65 72 74 79 2d 76 61 6c 75 clare-function.org-property-valu
7f880 65 73 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 es."org").(declare-function.org-
7f8a0 6f 70 65 6e 2d 6c 69 6e 65 20 22 6f 72 67 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 open-line."org").(declare-functi
7f8c0 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 28 64 65 63 6c on.org-at-heading-p."org").(decl
7f8e0 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 6f 72 67 2d 67 65 74 2d 68 65 61 64 69 6e 67 20 22 6f 72 are-function.org-get-heading."or
7f900 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 61 74 2d 68 65 61 g").(declare-function.org-at-hea
7f920 64 69 6e 67 2d 70 20 22 6f 72 67 22 29 0a 0a 3b 3b 20 42 75 6e 64 6c 65 20 60 6f 72 67 2d 65 6c ding-p."org")..;;.Bundle.`org-el
7f940 65 6d 65 6e 74 2d 6c 69 6e 65 61 67 65 2d 6d 61 70 27 20 69 66 20 69 74 27 73 20 6e 6f 74 20 61 ement-lineage-map'.if.it's.not.a
7f960 76 61 69 6c 61 62 6c 65 20 28 66 6f 72 20 4f 72 67 20 39 2e 36 37 20 6f 72 20 6f 6c 64 65 72 29 vailable.(for.Org.9.67.or.older)
7f980 0a 28 65 76 61 6c 2d 61 6e 64 2d 63 6f 6d 70 69 6c 65 0a 20 20 28 69 66 20 28 66 62 6f 75 6e 64 .(eval-and-compile...(if.(fbound
7f9a0 70 20 27 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 6c 69 6e 65 61 67 65 2d 6d 61 70 29 0a 20 20 20 20 p.'org-element-lineage-map).....
7f9c0 20 20 28 70 72 6f 67 6e 20 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 6f 72 67 2d 65 ..(progn.(declare-function.org-e
7f9e0 6c 65 6d 65 6e 74 2d 6c 69 6e 65 61 67 65 2d 6d 61 70 20 22 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d lement-lineage-map."org-element-
7fa00 61 73 74 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 65 66 61 6c 69 61 73 20 27 67 70 ast")..............(defalias.'gp
7fa20 74 65 6c 2d 6f 72 67 2d 2d 65 6c 65 6d 65 6e 74 2d 6c 69 6e 65 61 67 65 2d 6d 61 70 20 27 6f 72 tel-org--element-lineage-map.'or
7fa40 67 2d 65 6c 65 6d 65 6e 74 2d 6c 69 6e 65 61 67 65 2d 6d 61 70 29 29 0a 20 20 20 20 28 64 65 66 g-element-lineage-map)).....(def
7fa60 75 6e 20 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 65 2d 6d 61 un.gptel-org--element-lineage-ma
7fa80 70 20 28 64 61 74 75 6d 20 66 75 6e 20 26 6f 70 74 69 6f 6e 61 6c 20 74 79 70 65 73 20 77 69 74 p.(datum.fun.&optional.types.wit
7faa0 68 2d 73 65 6c 66 20 66 69 72 73 74 2d 6d 61 74 63 68 29 0a 20 20 20 20 20 20 22 4d 61 70 20 46 h-self.first-match)......."Map.F
7fac0 55 4e 20 61 63 72 6f 73 73 20 61 6e 63 65 73 74 6f 72 73 20 6f 66 20 44 41 54 55 4d 2c 20 66 72 UN.across.ancestors.of.DATUM,.fr
7fae0 6f 6d 20 63 6c 6f 73 65 73 74 20 74 6f 20 66 75 72 74 68 65 73 74 2e 0a 0a 44 41 54 55 4d 20 69 om.closest.to.furthest...DATUM.i
7fb00 73 20 61 6e 20 6f 62 6a 65 63 74 20 6f 72 20 65 6c 65 6d 65 6e 74 2e 20 20 46 6f 72 20 54 59 50 s.an.object.or.element...For.TYP
7fb20 45 53 2c 20 57 49 54 48 2d 53 45 4c 46 20 61 6e 64 0a 46 49 52 53 54 2d 4d 41 54 43 48 20 73 65 ES,.WITH-SELF.and.FIRST-MATCH.se
7fb40 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 70 27 2e 0a 0a 54 68 e.`org-element-lineage-map'...Th
7fb60 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 70 72 6f 76 69 64 65 64 20 66 6f 72 20 63 6f 6d 70 is.function.is.provided.for.comp
7fb80 61 74 69 62 69 6c 69 74 79 20 77 69 74 68 20 6f 6c 64 65 72 20 76 65 72 73 69 6f 6e 73 0a 6f 66 atibility.with.older.versions.of
7fba0 20 4f 72 67 2e 22 0a 20 20 20 20 20 20 28 64 65 63 6c 61 72 65 20 28 69 6e 64 65 6e 74 20 32 29 .Org.".......(declare.(indent.2)
7fbc0 29 0a 20 20 20 20 20 20 28 73 65 74 71 20 66 75 6e 20 28 69 66 20 28 66 75 6e 63 74 69 6f 6e 70 ).......(setq.fun.(if.(functionp
7fbe0 20 66 75 6e 29 20 66 75 6e 20 60 28 6c 61 6d 62 64 61 20 28 6e 6f 64 65 29 20 2c 66 75 6e 29 29 .fun).fun.`(lambda.(node).,fun))
7fc00 29 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 75 70 20 28 69 66 20 77 69 74 68 2d 73 65 6c 66 20 ).......(let.((up.(if.with-self.
7fc20 64 61 74 75 6d 20 28 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 70 61 72 65 6e 74 20 64 61 74 75 6d 29 datum.(org-element-parent.datum)
7fc40 29 29 0a 09 20 20 20 20 61 63 63 20 72 74 6e 29 0a 20 20 20 20 20 20 20 20 28 63 61 74 63 68 20 ))......acc.rtn).........(catch.
7fc60 3a 2d 2d 66 69 72 73 74 2d 6d 61 74 63 68 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 69 6c 65 20 :--first-match...........(while.
7fc80 75 70 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 6f 72 20 28 6e 6f 74 20 74 79 up.............(when.(or.(not.ty
7fca0 70 65 73 29 20 28 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 74 79 70 65 2d 70 20 75 70 20 74 79 70 65 pes).(org-element-type-p.up.type
7fcc0 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 72 74 6e 20 28 66 75 6e s))...............(setq.rtn.(fun
7fce0 63 61 6c 6c 20 66 75 6e 20 75 70 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 call.fun.up))...............(if.
7fd00 28 61 6e 64 20 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 (and.first-match.rtn)...........
7fd20 20 20 20 20 20 20 20 20 28 74 68 72 6f 77 20 3a 2d 2d 66 69 72 73 74 2d 6d 61 74 63 68 20 72 74 ........(throw.:--first-match.rt
7fd40 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 72 74 6e 20 28 70 75 n).................(when.rtn.(pu
7fd60 73 68 20 72 74 6e 20 61 63 63 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 sh.rtn.acc)))).............(setq
7fd80 20 75 70 20 28 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 70 61 72 65 6e 74 20 75 70 29 29 29 0a 20 20 .up.(org-element-parent.up)))...
7fda0 20 20 20 20 20 20 20 20 28 6e 72 65 76 65 72 73 65 20 61 63 63 29 29 29 29 29 0a 20 20 28 69 66 ........(nreverse.acc)))))...(if
7fdc0 20 28 66 62 6f 75 6e 64 70 20 27 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 62 65 67 69 6e 29 0a 20 20 .(fboundp.'org-element-begin)...
7fde0 20 20 20 20 28 70 72 6f 67 6e 20 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 6f 72 67 ....(progn.(declare-function.org
7fe00 2d 65 6c 65 6d 65 6e 74 2d 62 65 67 69 6e 20 22 6f 72 67 2d 65 6c 65 6d 65 6e 74 22 29 0a 20 20 -element-begin."org-element")...
7fe20 20 20 20 20 20 20 20 20 20 20 20 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 6f 72 67 ...........(declare-function.org
7fe40 2d 65 6c 65 6d 65 6e 74 2d 65 6e 64 20 22 6f 72 67 2d 65 6c 65 6d 65 6e 74 22 29 0a 20 20 20 20 -element-end."org-element").....
7fe60 20 20 20 20 20 20 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 .........(defalias.'gptel-org--e
7fe80 6c 65 6d 65 6e 74 2d 62 65 67 69 6e 20 27 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 62 65 67 69 6e 29 lement-begin.'org-element-begin)
7fea0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 65 66 61 6c 69 61 73 20 27 67 70 74 65 6c 2d 6f ..............(defalias.'gptel-o
7fec0 72 67 2d 2d 65 6c 65 6d 65 6e 74 2d 65 6e 64 20 27 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 65 6e 64 rg--element-end.'org-element-end
7fee0 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 65 6d 65 6e 74 )).....(defun.gptel-org--element
7ff00 2d 62 65 67 69 6e 20 28 6e 6f 64 65 29 0a 20 20 20 20 20 20 22 47 65 74 20 60 3a 62 65 67 69 6e -begin.(node)......."Get.`:begin
7ff20 27 20 70 72 6f 70 65 72 74 79 20 6f 66 20 4e 4f 44 45 2e 22 0a 20 20 20 20 20 20 28 6f 72 67 2d '.property.of.NODE.".......(org-
7ff40 65 6c 65 6d 65 6e 74 2d 70 72 6f 70 65 72 74 79 20 3a 62 65 67 69 6e 20 6e 6f 64 65 29 29 0a 20 element-property.:begin.node))..
7ff60 20 20 20 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 6f 72 67 2d 2d 65 6c 65 6d 65 6e 74 2d 65 6e 64 ...(defun.gptel-org--element-end
7ff80 20 28 6e 6f 64 65 29 0a 20 20 20 20 20 20 22 47 65 74 20 60 3a 65 6e 64 27 20 70 72 6f 70 65 72 .(node)......."Get.`:end'.proper
7ffa0 74 79 20 6f 66 20 4e 4f 44 45 2e 22 0a 20 20 20 20 20 20 28 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d ty.of.NODE.".......(org-element-
7ffc0 70 72 6f 70 65 72 74 79 20 3a 65 6e 64 20 6e 6f 64 65 29 29 29 29 0a 0a 0c 0a 3b 3b 3b 20 55 73 property.:end.node))))....;;;.Us
7ffe0 65 72 20 6f 70 74 69 6f 6e 73 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 6f 72 67 2d er.options.(defcustom.gptel-org-
80000 62 72 61 6e 63 68 69 6e 67 2d 63 6f 6e 74 65 78 74 20 6e 69 6c 0a 20 20 22 55 73 65 20 74 68 65 branching-context.nil..."Use.the
80020 20 6c 69 6e 65 61 67 65 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 68 65 61 64 69 6e 67 20 .lineage.of.the.current.heading.
80040 61 73 20 74 68 65 20 63 6f 6e 74 65 78 74 20 66 6f 72 20 67 70 74 65 6c 20 69 6e 20 4f 72 67 20 as.the.context.for.gptel.in.Org.
80060 62 75 66 66 65 72 73 2e 0a 0a 54 68 69 73 20 6d 61 6b 65 73 20 65 61 63 68 20 73 61 6d 65 20 6c buffers...This.makes.each.same.l
80080 65 76 65 6c 20 68 65 61 64 69 6e 67 20 61 20 73 65 70 61 72 61 74 65 20 63 6f 6e 76 65 72 73 61 evel.heading.a.separate.conversa
800a0 74 69 6f 6e 0a 62 72 61 6e 63 68 2e 0a 0a 42 79 20 64 65 66 61 75 6c 74 2c 20 67 70 74 65 6c 20 tion.branch...By.default,.gptel.
800c0 75 73 65 73 20 61 20 6c 69 6e 65 61 72 20 63 6f 6e 74 65 78 74 3a 20 61 6c 6c 20 74 68 65 20 74 uses.a.linear.context:.all.the.t
800e0 65 78 74 20 75 70 20 74 6f 20 74 68 65 0a 63 75 72 73 6f 72 20 69 73 20 73 65 6e 74 20 74 6f 20 ext.up.to.the.cursor.is.sent.to.
80100 74 68 65 20 4c 4c 4d 2e 20 20 45 6e 61 62 6c 69 6e 67 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 6d the.LLM...Enabling.this.option.m
80120 61 6b 65 73 20 74 68 65 0a 63 6f 6e 74 65 78 74 20 74 68 65 20 68 69 65 72 61 72 63 68 69 63 61 akes.the.context.the.hierarchica
80140 6c 20 6c 69 6e 65 61 67 65 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 4f 72 67 20 68 65 61 l.lineage.of.the.current.Org.hea
80160 64 69 6e 67 2e 20 20 49 6e 0a 74 68 69 73 20 65 78 61 6d 70 6c 65 3a 0a 0a 2d 2d 2d 2d 2d 0a 54 ding...In.this.example:..-----.T
80180 6f 70 20 6c 65 76 65 6c 20 74 65 78 74 0a 0a 2a 20 48 65 61 64 69 6e 67 20 31 0a 68 65 61 64 69 op.level.text..*.Heading.1.headi
801a0 6e 67 20 31 20 74 65 78 74 0a 0a 2a 20 48 65 61 64 69 6e 67 20 32 0a 68 65 61 64 69 6e 67 20 32 ng.1.text..*.Heading.2.heading.2
801c0 20 74 65 78 74 0a 0a 2a 2a 20 48 65 61 64 69 6e 67 20 32 2e 31 0a 68 65 61 64 69 6e 67 20 32 2e .text..**.Heading.2.1.heading.2.
801e0 31 20 74 65 78 74 0a 2a 2a 20 48 65 61 64 69 6e 67 20 32 2e 32 0a 68 65 61 64 69 6e 67 20 32 2e 1.text.**.Heading.2.2.heading.2.
80200 32 20 74 65 78 74 0a 2d 2d 2d 2d 2d 0a 0a 57 69 74 68 20 74 68 65 20 63 75 72 73 6f 72 20 61 74 2.text.-----..With.the.cursor.at
80220 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20 62 75 66 66 65 72 2c 20 74 68 65 20 74 65 78 74 .the.end.of.the.buffer,.the.text
80240 20 73 65 6e 74 20 74 6f 20 74 68 65 0a 4c 4c 4d 20 77 69 6c 6c 20 62 65 20 6c 69 6d 69 74 65 64 .sent.to.the.LLM.will.be.limited
80260 20 74 6f 0a 0a 2d 2d 2d 2d 2d 0a 54 6f 70 20 6c 65 76 65 6c 20 74 65 78 74 0a 0a 2a 20 48 65 61 .to..-----.Top.level.text..*.Hea
80280 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
802a0 67 20 32 2e 32 0a 68 65 61 64 69 6e 67 20 32 2e 32 20 74 65 78 74 0a 2d 2d 2d 2d 2d 0a 0a 54 68 g.2.2.heading.2.2.text.-----..Th
802c0 69 73 20 6d 61 6b 65 73 20 69 74 20 66 65 61 73 69 62 6c 65 20 74 6f 20 68 61 76 65 20 6d 75 6c is.makes.it.feasible.to.have.mul
802e0 74 69 70 6c 65 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 20 62 72 61 6e 63 68 65 73 2e 22 0a 20 20 tiple.conversation.branches."...
80300 3a 6c 6f 63 61 6c 20 74 0a 20 20 3a 74 79 70 65 20 27 62 6f 6f 6c 65 61 6e 0a 20 20 3a 67 72 6f :local.t...:type.'boolean...:gro
80320 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 6c 2d 6f 72 67 up.'gptel)..(defcustom.gptel-org
80340 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 2d 64 72 61 77 -ignore-elements.'(property-draw
80360 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 20 74 68 61 74 er)..."List.of.Org.elements.that
80380 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 65 20 70 72 6f .should.be.stripped.from.the.pro
803a0 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 64 65 66 61 75 mpt.before.sending.it...By.defau
803c0 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 6f 70 65 72 74 lt.gptel.will.remove.Org.propert
803e0 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 20 46 6f 72 20 y.drawers.from.the.prompt...For.
80400 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 65 6c 65 6d 65 the.full.list.of.available.eleme
80420 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 74 2d 61 6c 6c nts,.please.see.`org-element-all
80440 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 65 6d 6f 76 69 -elements'...Please.note:.Removi
80460 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 20 69 73 20 66 ng.property-drawer.elements.is.f
80480 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 20 74 68 69 73 ast,.but.adding.elements.to.this
804a0 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 77 20 64 6f 77 .list.can.significantly.slow.dow
804c0 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 67 70 74 65 6c n.`gptel-send'."...:group.'gptel
804e0 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 0a 0c 0a 3b 3b ...:type.'(repeat.symbol))....;;
80500 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 69 6e 67 20 71 ;.Setting.context.and.creating.q
80520 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 74 2d 74 6f 70 ueries.(defun.gptel-org--get-top
80540 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 61 74 69 6f 6e ic-start.()..."If.a.conversation
80560 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 20 20 28 77 68 .topic.is.set,.return.it."...(wh
80580 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 47 50 54 45 4c en.(org-entry-get.(point)."GPTEL
805a0 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 65 72 2d 70 6f _TOPIC".'inherit).....(marker-po
805c0 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 6e 68 65 72 69 sition.org-entry-property-inheri
805e0 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 72 67 2d 73 65 ted-from)))..(defun.gptel-org-se
80600 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 50 49 43 20 61 t-topic.(topic)..."Set.a.TOPIC.a
80620 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 74 6f 20 74 68 nd.limit.this.conversation.to.th
80640 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 6d 69 74 73 20 e.current.heading...This.limits.
80660 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 20 74 6f 20 74 the.context.sent.to.the.LLM.to.t
80680 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 20 68 65 61 64 he.text.between.the.current.head
806a0 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 2e 22 0a 20 20 ing.and.the.cursor.position."...
806c0 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 70 72 6f 67 6e (interactive....(list.....(progn
806e0 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 27 6f 72 67 2d .......(or.(derived-mode-p.'org-
80700 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 20 22 53 75 70 mode)...........(user-error."Sup
80720 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 72 20 62 75 66 port.for.multiple.topics.per.buf
80740 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 20 60 6f 72 67 fer.is.only.implemented.for.`org
80760 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 2d 72 65 61 64 -mode'")).......(completing-read
80780 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 20 20 20 20 20 ."Set.topic.as:."...............
807a0 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 65 73 20 22 47 .........(org-property-values."G
807c0 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 20 20 20 20 20 PTEL_TOPIC")....................
807e0 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 20 20 20 20 20 ....nil.nil.(downcase...........
80800 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 2d ......................(truncate-
80820 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 20 string-to-width.................
80840 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 2d 6e 6f 2d 70 .................(substring-no-p
80860 72 6f 70 65 72 74 69 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 roperties.......................
80880 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 2d 69 6e 2d 73 ............(replace-regexp-in-s
808a0 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...........................
808c0 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 20 20 20 20 20 ........."\\s-+"."-"............
808e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 67 2d 67 65 74 ........................(org-get
80900 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 20 -heading))).....................
80920 20 20 20 20 20 20 20 20 20 20 20 20 20 35 30 29 29 29 29 29 29 0a 20 20 28 77 68 65 6e 20 28 73 .............50))))))...(when.(s
80940 74 72 69 6e 67 70 20 74 6f 70 69 63 29 20 28 6f 72 67 2d 73 65 74 2d 70 72 6f 70 65 72 74 79 20 tringp.topic).(org-set-property.
80960 22 47 50 54 45 4c 5f 54 4f 50 49 43 22 20 74 6f 70 69 63 29 29 29 0a 0a 3b 3b 20 4e 4f 54 45 3a "GPTEL_TOPIC".topic)))..;;.NOTE:
80980 20 54 68 69 73 20 63 61 6e 20 62 65 20 63 6f 6e 76 65 72 74 65 64 20 74 6f 20 61 20 63 6c 2d 64 .This.can.be.converted.to.a.cl-d
809a0 65 66 6d 65 74 68 6f 64 20 66 6f 72 20 60 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 62 75 66 66 65 efmethod.for.`gptel--parse-buffe
809c0 72 27 0a 3b 3b 20 28 63 6f 6e 63 65 70 74 75 61 6c 6c 79 20 63 6c 65 61 6e 65 72 29 2c 20 62 75 r'.;;.(conceptually.cleaner),.bu
809e0 74 20 77 69 6c 6c 20 63 61 75 73 65 20 6c 6f 61 64 2d 6f 72 64 65 72 20 69 73 73 75 65 73 20 69 t.will.cause.load-order.issues.i
80a00 6e 20 67 70 74 65 6c 2e 65 6c 20 61 6e 64 0a 3b 3b 20 6d 69 67 68 74 20 62 65 20 68 61 72 64 65 n.gptel.el.and.;;.might.be.harde
80a20 72 20 74 6f 20 64 65 62 75 67 2e 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 6f 72 67 2d 2d 63 72 r.to.debug..(defun.gptel-org--cr
80a40 65 61 74 65 2d 70 72 6f 6d 70 74 20 28 26 6f 70 74 69 6f 6e 61 6c 20 70 72 6f 6d 70 74 2d 65 6e eate-prompt.(&optional.prompt-en
80a60 64 29 0a 20 20 22 52 65 74 75 72 6e 20 61 20 66 75 6c 6c 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e d)..."Return.a.full.conversation
80a80 20 70 72 6f 6d 70 74 20 66 72 6f 6d 20 74 68 65 20 63 6f 6e 74 65 6e 74 73 20 6f 66 20 74 68 69 .prompt.from.the.contents.of.thi
80aa0 73 20 4f 72 67 20 62 75 66 66 65 72 2e 0a 0a 49 66 20 60 67 70 74 65 6c 2d 2d 6e 75 6d 2d 6d 65 s.Org.buffer...If.`gptel--num-me
80ac0 73 73 61 67 65 73 2d 74 6f 2d 73 65 6e 64 27 20 69 73 20 73 65 74 2c 20 6c 69 6d 69 74 20 74 6f ssages-to-send'.is.set,.limit.to
80ae0 20 74 68 61 74 20 6d 61 6e 79 0a 72 65 63 65 6e 74 20 65 78 63 68 61 6e 67 65 73 2e 0a 0a 54 68 .that.many.recent.exchanges...Th
80b00 65 20 70 72 6f 6d 70 74 20 69 73 20 63 6f 6e 73 74 72 75 63 74 65 64 20 66 72 6f 6d 20 74 68 65 e.prompt.is.constructed.from.the
80b20 20 63 6f 6e 74 65 6e 74 73 20 6f 66 20 74 68 65 20 62 75 66 66 65 72 20 75 70 20 74 6f 0a 70 6f .contents.of.the.buffer.up.to.po
80b40 69 6e 74 2c 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 int,.or.PROMPT-END.if.provided..
80b60 20 49 74 73 20 63 6f 6e 74 65 6e 74 73 20 64 65 70 65 6e 64 20 6f 6e 20 74 68 65 0a 76 61 6c 75 .Its.contents.depend.on.the.valu
80b80 65 20 6f 66 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 e.of.`gptel-org-branching-contex
80ba0 74 27 2c 20 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 t',.which.see."...(when.(use-reg
80bc0 69 6f 6e 2d 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 ion-p).....(narrow-to-region.(re
80be0 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 0a 20 gion-beginning).(region-end)))..
80c00 20 28 69 66 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 .(if.prompt-end.......(goto-char
80c20 20 70 72 6f 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 .prompt-end).....(setq.prompt-en
80c40 64 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 28 6c 65 74 20 28 28 6d 61 78 2d 65 6e 74 72 69 65 73 d.(point)))...(let.((max-entries
80c60 20 28 61 6e 64 20 67 70 74 65 6c 2d 2d 6e 75 6d 2d 6d 65 73 73 61 67 65 73 2d 74 6f 2d 73 65 6e .(and.gptel--num-messages-to-sen
80c80 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 28 2a 20 32 d...........................(*.2
80ca0 20 67 70 74 65 6c 2d 2d 6e 75 6d 2d 6d 65 73 73 61 67 65 73 2d 74 6f 2d 73 65 6e 64 29 29 29 0a .gptel--num-messages-to-send))).
80cc0 20 20 20 20 20 20 20 20 28 74 6f 70 69 63 2d 73 74 61 72 74 20 28 67 70 74 65 6c 2d 6f 72 67 2d ........(topic-start.(gptel-org-
80ce0 2d 67 65 74 2d 74 6f 70 69 63 2d 73 74 61 72 74 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 74 6f -get-topic-start))).....(when.to
80d00 70 69 63 2d 73 74 61 72 74 0a 20 20 20 20 20 20 3b 3b 20 6e 61 72 72 6f 77 20 74 6f 20 47 50 54 pic-start.......;;.narrow.to.GPT
80d20 45 4c 5f 54 4f 50 49 43 20 70 72 6f 70 65 72 74 79 20 73 63 6f 70 65 0a 20 20 20 20 20 20 28 6e EL_TOPIC.property.scope.......(n
80d40 61 72 72 6f 77 2d 74 6f 2d 72 65 67 69 6f 6e 20 74 6f 70 69 63 2d 73 74 61 72 74 20 70 72 6f 6d arrow-to-region.topic-start.prom
80d60 70 74 2d 65 6e 64 29 29 0a 20 20 20 20 28 69 66 20 28 61 6e 64 20 67 70 74 65 6c 2d 6f 72 67 2d pt-end)).....(if.(and.gptel-org-
80d80 62 72 61 6e 63 68 69 6e 67 2d 63 6f 6e 74 65 78 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 branching-context..............(
80da0 6f 72 20 28 66 62 6f 75 6e 64 70 20 27 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 6c 69 6e 65 61 67 65 or.(fboundp.'org-element-lineage
80dc0 2d 6d 61 70 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 67 31 20 6e 69 -map)..................(prog1.ni
80de0 6c 0a 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 77 61 l....................(display-wa
80e00 72 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 27 28 67 70 74 65 rning.....................'(gpte
80e20 6c 20 6f 72 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 55 73 69 6e l.org)....................."Usin
80e40 67 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 20 g.`gptel-org-branching-context'.
80e60 72 65 71 75 69 72 65 73 20 4f 72 67 20 76 65 72 73 69 6f 6e 20 39 2e 37 20 6f 72 20 68 69 67 68 requires.Org.version.9.7.or.high
80e80 65 72 2c 20 69 74 20 77 69 6c 6c 20 62 65 20 69 67 6e 6f 72 65 64 2e 22 29 29 29 29 0a 20 20 20 er,.it.will.be.ignored."))))....
80ea0 20 20 20 20 20 3b 3b 20 43 72 65 61 74 65 20 70 72 6f 6d 70 74 20 66 72 6f 6d 20 64 69 72 65 63 .....;;.Create.prompt.from.direc
80ec0 74 20 61 6e 63 65 73 74 6f 72 73 20 6f 66 20 70 6f 69 6e 74 0a 20 20 20 20 20 20 20 20 28 73 61 t.ancestors.of.point.........(sa
80ee0 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 6f ve-excursion...........(let*.((o
80f00 72 67 2d 62 75 66 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29 0a 20 20 20 20 20 20 20 rg-buf.(current-buffer))........
80f20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 43 6f 6c 6c 65 63 74 20 61 6c 6c 20 68 65 61 64 69 6e 67 ..........;;.Collect.all.heading
80f40 20 73 74 61 72 74 20 70 6f 73 69 74 69 6f 6e 73 20 69 6e 20 74 68 65 20 6c 69 6e 65 61 67 65 0a .start.positions.in.the.lineage.
80f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6c 6c 2d 62 6f 75 6e 64 73 20 28 67 .................(full-bounds.(g
80f80 70 74 65 6c 2d 6f 72 67 2d 2d 65 6c 65 6d 65 6e 74 2d 6c 69 6e 65 61 67 65 2d 6d 61 70 0a 20 20 ptel-org--element-lineage-map...
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 20 20 20 20 ................................
80fc0 28 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 61 74 2d 70 6f 69 6e 74 29 20 23 27 67 70 74 65 6c 2d 6f (org-element-at-point).#'gptel-o
80fe0 72 67 2d 2d 65 6c 65 6d 65 6e 74 2d 62 65 67 69 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rg--element-begin...............
81000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 28 68 65 61 64 6c 69 6e 65 29 20 27 77 ..................'(headline).'w
81020 69 74 68 2d 73 65 6c 66 29 20 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 ith-self).)..................;;.
81040 6c 69 6e 65 61 67 65 2d 6d 61 70 20 72 65 74 75 72 6e 73 20 74 68 65 20 66 75 6c 6c 20 6c 69 6e lineage-map.returns.the.full.lin
81060 65 61 67 65 20 69 6e 20 74 68 65 20 75 6e 6e 61 72 72 6f 77 65 64 0a 20 20 20 20 20 20 20 20 20 eage.in.the.unnarrowed..........
81080 20 20 20 20 20 20 20 20 3b 3b 20 62 75 66 66 65 72 2e 20 20 52 65 6d 6f 76 65 20 68 65 61 64 69 ........;;.buffer...Remove.headi
810a0 6e 67 20 73 74 61 72 74 20 70 6f 73 69 74 69 6f 6e 73 20 61 74 20 6f 72 20 62 65 66 6f 72 65 0a ng.start.positions.at.or.before.
810c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 .................;;.(point-min).
810e0 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 69 6e that.are.invalid.due.to.narrowin
81100 67 2c 20 61 6e 64 20 61 64 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 28 g,.and.add..................;;.(
81120 70 6f 69 6e 74 2d 6d 69 6e 29 20 65 78 70 6c 69 63 69 74 6c 79 0a 20 20 20 20 20 20 20 20 20 20 point-min).explicitly...........
81140 20 20 20 20 20 20 20 28 73 74 61 72 74 2d 62 6f 75 6e 64 73 20 28 6e 63 6f 6e 63 20 28 63 6c 2d .......(start-bounds.(nconc.(cl-
81160 64 65 6c 65 74 65 2d 69 66 20 28 6c 61 6d 62 64 61 20 28 70 29 20 28 3c 3d 20 70 20 28 70 6f 69 delete-if.(lambda.(p).(<=.p.(poi
81180 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 20 20 nt-min))).......................
811a0 20 20 20 20 20 20 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 75 ..............................fu
811c0 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 20 20 20 20 20 20 20 ll-bounds)......................
811e0 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 2d 6d 69 .................(list.(point-mi
81200 6e 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6e 64 2d 62 6f 75 6e n))))..................(end-boun
81220 64 73 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 70 0a 20 20 ds...................(cl-loop...
81240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 28 63 61 72 20 73 74 61 72 74 2d 62 .................;;.(car.start-b
81260 6f 75 6e 64 73 29 20 69 73 20 74 68 65 20 62 65 67 69 6e 69 6e 67 20 6f 66 20 74 68 65 20 63 75 ounds).is.the.begining.of.the.cu
81280 72 72 65 6e 74 20 65 6c 65 6d 65 6e 74 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rrent.element,..................
812a0 20 20 3b 3b 20 6e 6f 74 20 72 65 6c 65 76 61 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..;;.not.relevant...............
812c0 20 20 20 20 20 66 6f 72 20 70 6f 73 20 69 6e 20 28 63 64 72 20 73 74 61 72 74 2d 62 6f 75 6e 64 .....for.pos.in.(cdr.start-bound
812e0 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 20 28 67 6f 74 6f 2d 63 s)....................do.(goto-c
81300 68 61 72 20 70 6f 73 29 20 28 6f 75 74 6c 69 6e 65 2d 6e 65 78 74 2d 68 65 61 64 69 6e 67 29 0a har.pos).(outline-next-heading).
81320 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 70 6f 69 6e ...................collect.(poin
81340 74 29 20 69 6e 74 6f 20 65 6e 64 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 t).into.ends....................
81360 66 69 6e 61 6c 6c 79 20 72 65 74 75 72 6e 20 28 63 6f 6e 73 20 70 72 6f 6d 70 74 2d 65 6e 64 20 finally.return.(cons.prompt-end.
81380 65 6e 64 73 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 77 69 74 ends)))).............(gptel--wit
813a0 68 2d 62 75 66 66 65 72 2d 63 6f 70 79 20 6f 72 67 2d 62 75 66 20 6e 69 6c 20 6e 69 6c 0a 20 20 h-buffer-copy.org-buf.nil.nil...
813c0 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 73 74 61 72 74 20 69 ............(cl-loop.for.start.i
813e0 6e 20 73 74 61 72 74 2d 62 6f 75 6e 64 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 n.start-bounds..................
81400 20 20 20 20 20 20 66 6f 72 20 65 6e 64 20 69 6e 20 65 6e 64 2d 62 6f 75 6e 64 73 0a 20 20 20 20 ......for.end.in.end-bounds.....
81420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 20 28 69 6e 73 65 72 74 2d 62 75 ...................do.(insert-bu
81440 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 20 6f 72 67 2d 62 75 66 20 73 74 61 72 74 20 65 6e 64 ffer-substring.org-buf.start.end
81460 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 )........................(goto-c
81480 68 61 72 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 har.(point-min)))...............
814a0 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 20 (goto-char.(point-max)).........
814c0 20 20 20 20 20 20 28 67 70 74 65 6c 2d 6f 72 67 2d 2d 75 6e 65 73 63 61 70 65 2d 74 6f 6f 6c 2d ......(gptel-org--unescape-tool-
814e0 72 65 73 75 6c 74 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 6f 72 results)...............(gptel-or
81500 67 2d 2d 73 74 72 69 70 2d 65 6c 65 6d 65 6e 74 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 g--strip-elements)..............
81520 20 28 67 70 74 65 6c 2d 6f 72 67 2d 2d 73 74 72 69 70 2d 62 6c 6f 63 6b 2d 68 65 61 64 65 72 73 .(gptel-org--strip-block-headers
81540 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 6f 72 67 2d )...............(when.gptel-org-
81560 69 67 6e 6f 72 65 2d 65 6c 65 6d 65 6e 74 73 20 28 67 70 74 65 6c 2d 6f 72 67 2d 2d 73 74 72 69 ignore-elements.(gptel-org--stri
81580 70 2d 65 6c 65 6d 65 6e 74 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 61 76 65 p-elements))...............(save
815a0 2d 65 78 63 75 72 73 69 6f 6e 20 28 72 75 6e 2d 68 6f 6f 6b 73 20 27 67 70 74 65 6c 2d 70 72 6f -excursion.(run-hooks.'gptel-pro
815c0 6d 70 74 2d 66 69 6c 74 65 72 2d 68 6f 6f 6b 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 mpt-filter-hook))...............
815e0 28 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 62 75 66 66 65 72 20 67 70 74 65 6c 2d 62 61 63 6b 65 (gptel--parse-buffer.gptel-backe
81600 6e 64 20 6d 61 78 2d 65 6e 74 72 69 65 73 29 29 29 29 0a 20 20 20 20 20 20 3b 3b 20 43 72 65 61 nd.max-entries)))).......;;.Crea
81620 74 65 20 70 72 6f 6d 70 74 20 74 68 65 20 75 73 75 61 6c 20 77 61 79 0a 20 20 20 20 20 20 28 6c te.prompt.the.usual.way.......(l
81640 65 74 20 28 28 6f 72 67 2d 62 75 66 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29 0a 20 et.((org-buf.(current-buffer))..
81660 20 20 20 20 20 20 20 20 20 20 20 28 62 65 67 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 20 28 65 6e ...........(beg.(point-min)).(en
81680 64 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 29 0a 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d d.(point-max))).........(gptel--
816a0 77 69 74 68 2d 62 75 66 66 65 72 2d 63 6f 70 79 20 6f 72 67 2d 62 75 66 20 62 65 67 20 65 6e 64 with-buffer-copy.org-buf.beg.end
816c0 0a 20 20 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 ...........(gptel-org--unescape-
816e0 74 6f 6f 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 tool-results)...........(gptel-o
81700 72 67 2d 2d 73 74 72 69 70 2d 65 6c 65 6d 65 6e 74 73 29 0a 20 20 20 20 20 20 20 20 20 20 28 67 rg--strip-elements)...........(g
81720 70 74 65 6c 2d 6f 72 67 2d 2d 73 74 72 69 70 2d 62 6c 6f 63 6b 2d 68 65 61 64 65 72 73 29 0a 20 ptel-org--strip-block-headers)..
81740 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 6f 72 67 2d 69 67 6e 6f 72 65 2d .........(when.gptel-org-ignore-
81760 65 6c 65 6d 65 6e 74 73 20 28 67 70 74 65 6c 2d 6f 72 67 2d 2d 73 74 72 69 70 2d 65 6c 65 6d 65 elements.(gptel-org--strip-eleme
81780 6e 74 73 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 20 nts))...........(save-excursion.
817a0 28 72 75 6e 2d 68 6f 6f 6b 73 20 27 67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 66 69 6c 74 65 72 2d (run-hooks.'gptel-prompt-filter-
817c0 68 6f 6f 6b 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 62 hook))...........(gptel--parse-b
817e0 75 66 66 65 72 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 6d 61 78 2d 65 6e 74 72 69 65 73 29 uffer.gptel-backend.max-entries)
81800 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 65 )))))..(defun.gptel-org--strip-e
81820 6c 65 6d 65 6e 74 73 20 28 29 0a 20 20 22 52 65 6d 6f 76 65 20 61 6c 6c 20 65 6c 65 6d 65 6e 74 lements.()..."Remove.all.element
81840 73 20 69 6e 20 60 67 70 74 65 6c 2d 6f 72 67 2d 69 67 6e 6f 72 65 2d 65 6c 65 6d 65 6e 74 73 27 s.in.`gptel-org-ignore-elements'
81860 20 66 72 6f 6d 20 74 68 65 0a 70 72 6f 6d 70 74 2e 22 0a 20 20 28 6c 65 74 20 28 28 6d 61 6a 6f .from.the.prompt."...(let.((majo
81880 72 2d 6d 6f 64 65 20 27 6f 72 67 2d 6d 6f 64 65 29 20 65 6c 65 6d 65 6e 74 2d 6d 61 72 6b 65 72 r-mode.'org-mode).element-marker
818a0 73 29 0a 20 20 20 20 28 69 66 20 28 65 71 75 61 6c 20 27 28 70 72 6f 70 65 72 74 79 2d 64 72 61 s).....(if.(equal.'(property-dra
818c0 77 65 72 29 20 67 70 74 65 6c 2d 6f 72 67 2d 69 67 6e 6f 72 65 2d 65 6c 65 6d 65 6e 74 73 29 0a wer).gptel-org-ignore-elements).
818e0 20 20 20 20 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 ........(save-excursion.........
81900 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 0a 20 20 20 20 20 20 ..(goto-char.(point-min)).......
81920 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 6f 72 ....(while.(re-search-forward.or
81940 67 2d 70 72 6f 70 65 72 74 79 2d 64 72 61 77 65 72 2d 72 65 20 6e 69 6c 20 74 29 0a 20 20 20 20 g-property-drawer-re.nil.t).....
81960 20 20 20 20 20 20 20 20 3b 3b 20 3b 3b 20 53 6c 6f 77 65 72 20 62 75 74 20 61 63 63 75 72 61 74 ........;;.;;.Slower.but.accurat
81980 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 28 6c 65 74 20 28 28 64 72 61 77 65 72 20 28 e.............;;.(let.((drawer.(
819a0 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 61 74 2d 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 20 20 20 20 org-element-at-point))).........
819c0 20 20 20 20 3b 3b 20 20 20 28 77 68 65 6e 20 28 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 74 79 70 65 ....;;...(when.(org-element-type
819e0 2d 70 20 64 72 61 77 65 72 20 27 70 72 6f 70 65 72 74 79 2d 64 72 61 77 65 72 29 0a 20 20 20 20 -p.drawer.'property-drawer).....
81a00 20 20 20 20 20 20 20 20 3b 3b 20 20 20 20 20 28 64 65 6c 65 74 65 2d 72 65 67 69 6f 6e 20 28 6f ........;;.....(delete-region.(o
81a20 72 67 2d 65 6c 65 6d 65 6e 74 2d 62 65 67 69 6e 20 64 72 61 77 65 72 29 20 28 6f 72 67 2d 65 6c rg-element-begin.drawer).(org-el
81a40 65 6d 65 6e 74 2d 65 6e 64 20 64 72 61 77 65 72 29 29 29 29 0a 0a 20 20 20 20 20 20 20 20 20 20 ement-end.drawer))))............
81a60 20 20 3b 3b 20 46 61 73 74 20 62 75 74 20 69 6e 65 78 61 63 74 2c 20 63 61 6e 20 68 61 76 65 20 ..;;.Fast.but.inexact,.can.have.
81a80 66 61 6c 73 65 20 70 6f 73 69 74 69 76 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 64 65 6c false.positives.............(del
81aa0 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 20 28 ete-region.(match-beginning.0).(
81ac0 6d 61 74 63 68 2d 65 6e 64 20 30 29 29 29 29 0a 20 20 20 20 20 20 3b 3b 20 4e 4f 54 45 3a 20 50 match-end.0)))).......;;.NOTE:.P
81ae0 61 72 73 69 6e 67 20 74 68 65 20 62 75 66 66 65 72 20 69 73 20 65 78 74 72 65 6d 65 6c 79 20 73 arsing.the.buffer.is.extremely.s
81b00 6c 6f 77 2e 20 20 41 76 6f 69 64 20 74 68 69 73 20 70 61 74 68 20 75 6e 6c 65 73 73 0a 20 20 20 low...Avoid.this.path.unless....
81b20 20 20 20 3b 3b 20 72 65 71 75 69 72 65 64 2e 0a 20 20 20 20 20 20 3b 3b 20 4e 4f 54 45 3a 20 60 ...;;.required........;;.NOTE:.`
81b40 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 6d 61 70 27 20 74 61 6b 65 73 20 61 20 74 68 69 72 64 20 4b org-element-map'.takes.a.third.K
81b60 45 45 50 2d 44 45 46 45 52 52 45 44 20 61 72 67 75 6d 65 6e 74 20 69 6e 20 6e 65 77 65 72 0a 20 EEP-DEFERRED.argument.in.newer..
81b80 20 20 20 20 20 3b 3b 20 4f 72 67 20 76 65 72 73 69 6f 6e 73 0a 20 20 20 20 20 20 28 6f 72 67 2d .....;;.Org.versions.......(org-
81ba0 65 6c 65 6d 65 6e 74 2d 6d 61 70 20 28 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 70 61 72 73 65 2d 62 element-map.(org-element-parse-b
81bc0 75 66 66 65 72 20 27 65 6c 65 6d 65 6e 74 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 67 70 uffer.'element.nil)...........gp
81be0 74 65 6c 2d 6f 72 67 2d 69 67 6e 6f 72 65 2d 65 6c 65 6d 65 6e 74 73 0a 20 20 20 20 20 20 20 20 tel-org-ignore-elements.........
81c00 28 6c 61 6d 62 64 61 20 28 6e 6f 64 65 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 (lambda.(node)...........(push.(
81c20 6c 69 73 74 20 28 67 70 74 65 6c 2d 6f 72 67 2d 2d 65 6c 65 6d 65 6e 74 2d 62 65 67 69 6e 20 6e list.(gptel-org--element-begin.n
81c40 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 67 70 74 65 ode).......................(gpte
81c60 6c 2d 6f 72 67 2d 2d 65 6c 65 6d 65 6e 74 2d 65 6e 64 20 6e 6f 64 65 29 29 0a 20 20 20 20 20 20 l-org--element-end.node)).......
81c80 20 20 20 20 20 20 20 20 20 20 65 6c 65 6d 65 6e 74 2d 6d 61 72 6b 65 72 73 29 29 29 0a 20 20 20 ..........element-markers)))....
81ca0 20 20 20 28 64 6f 6c 69 73 74 20 28 62 6f 75 6e 64 73 20 65 6c 65 6d 65 6e 74 2d 6d 61 72 6b 65 ...(dolist.(bounds.element-marke
81cc0 72 73 29 0a 20 20 20 20 20 20 20 20 28 61 70 70 6c 79 20 23 27 64 65 6c 65 74 65 2d 72 65 67 69 rs).........(apply.#'delete-regi
81ce0 6f 6e 20 62 6f 75 6e 64 73 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 6f 72 67 on.bounds)))))..(defun.gptel-org
81d00 2d 2d 73 74 72 69 70 2d 62 6c 6f 63 6b 2d 68 65 61 64 65 72 73 20 28 29 0a 20 20 22 52 65 6d 6f --strip-block-headers.()..."Remo
81d20 76 65 20 61 6c 6c 20 67 70 74 65 6c 2d 73 70 65 63 69 66 69 63 20 62 6c 6f 63 6b 20 68 65 61 64 ve.all.gptel-specific.block.head
81d40 65 72 73 20 61 6e 64 20 66 6f 6f 74 65 72 73 2e 0a 45 76 65 72 79 20 6c 69 6e 65 20 74 68 61 74 ers.and.footers..Every.line.that
81d60 20 6d 61 74 63 68 65 73 20 77 69 6c 6c 20 62 65 20 72 65 6d 6f 76 65 64 20 65 6e 74 69 72 65 6c .matches.will.be.removed.entirel
81d80 79 2e 0a 0a 54 68 69 73 20 72 65 6d 6f 76 61 6c 20 69 73 20 6e 65 63 65 73 73 61 72 79 20 74 6f y...This.removal.is.necessary.to
81da0 20 61 76 6f 69 64 20 61 75 74 6f 2d 6d 69 6d 69 63 72 79 20 62 79 20 4c 4c 4d 73 2e 22 0a 20 20 .avoid.auto-mimicry.by.LLMs."...
81dc0 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 (save-excursion.....(goto-char.(
81de0 70 6f 69 6e 74 2d 6d 69 6e 29 29 0a 20 20 20 20 28 77 68 69 6c 65 20 28 72 65 2d 73 65 61 72 63 point-min)).....(while.(re-searc
81e00 68 2d 66 6f 72 77 61 72 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 72 78 20 6c 69 6e 65 2d 73 h-forward.............(rx.line-s
81e20 74 61 72 74 20 28 6c 69 74 65 72 61 6c 20 22 23 2b 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 tart.(literal."#+").............
81e40 20 20 20 20 28 6f 72 20 28 6c 69 74 65 72 61 6c 20 22 62 65 67 69 6e 22 29 20 28 6c 69 74 65 72 ....(or.(literal."begin").(liter
81e60 61 6c 20 22 65 6e 64 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 20 28 al."end")).................(or.(
81e80 6c 69 74 65 72 61 6c 20 22 5f 74 6f 6f 6c 22 29 20 28 6c 69 74 65 72 61 6c 20 22 5f 72 65 61 73 literal."_tool").(literal."_reas
81ea0 6f 6e 69 6e 67 22 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 69 6c 20 74 29 0a 20 20 20 oning"))).............nil.t)....
81ec0 20 20 20 28 64 65 6c 65 74 65 2d 72 65 67 69 6f 6e 20 28 6d 61 74 63 68 2d 62 65 67 69 6e 6e 69 ...(delete-region.(match-beginni
81ee0 6e 67 20 30 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 69 6e 20 ng.0)......................(min.
81f00 28 70 6f 69 6e 74 2d 6d 61 78 29 20 28 31 2b 20 28 6c 69 6e 65 2d 65 6e 64 2d 70 6f 73 69 74 69 (point-max).(1+.(line-end-positi
81f20 6f 6e 29 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 6f 72 67 2d 2d 75 6e 65 on)))))))..(defun.gptel-org--une
81f40 73 63 61 70 65 2d 74 6f 6f 6c 2d 72 65 73 75 6c 74 73 20 28 29 0a 20 20 22 55 6e 64 6f 20 65 73 scape-tool-results.()..."Undo.es
81f60 63 61 70 65 73 20 64 6f 6e 65 20 74 6f 20 6b 65 65 70 20 72 65 73 75 6c 74 73 20 66 72 6f 6d 20 capes.done.to.keep.results.from.
81f80 65 73 63 61 70 69 6e 67 20 62 6c 6f 63 6b 73 2e 0a 53 63 61 6e 73 20 62 61 63 6b 77 61 72 64 20 escaping.blocks..Scans.backward.
81fa0 66 6f 72 20 67 70 74 65 6c 20 74 6f 6f 6c 20 74 65 78 74 20 70 72 6f 70 65 72 74 79 2c 20 72 65 for.gptel.tool.text.property,.re
81fc0 61 64 73 20 74 68 65 20 61 72 67 75 6d 65 6e 74 73 2c 20 74 68 65 6e 0a 75 6e 65 73 63 61 70 65 ads.the.arguments,.then.unescape
81fe0 73 20 74 68 65 20 72 65 6d 61 69 6e 64 65 72 2e 22 0a 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 s.the.remainder."...(save-excurs
82000 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 61 78 29 29 0a ion.....(goto-char.(point-max)).
82020 20 20 20 20 28 6c 65 74 20 28 28 70 72 65 76 2d 70 74 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 ....(let.((prev-pt.(point)))....
82040 20 20 20 28 77 68 69 6c 65 20 28 3e 20 70 72 65 76 2d 70 74 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 ...(while.(>.prev-pt.(point-min)
82060 29 0a 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 0a 20 20 20 20 20 20 20 20 20 28 70 ).........(goto-char..........(p
82080 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 63 68 61 revious-single-char-property-cha
820a0 6e 67 65 20 28 70 6f 69 6e 74 29 20 27 67 70 74 65 6c 29 29 0a 20 20 20 20 20 20 20 20 28 6c 65 nge.(point).'gptel)).........(le
820c0 74 20 28 28 70 72 6f 70 20 28 67 65 74 2d 74 65 78 74 2d 70 72 6f 70 65 72 74 79 20 28 70 6f 69 t.((prop.(get-text-property.(poi
820e0 6e 74 29 20 27 67 70 74 65 6c 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 61 63 6b nt).'gptel))...............(back
82100 77 61 72 64 2d 70 72 6f 67 72 65 73 73 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 20 20 20 20 ward-progress.(point))).........
82120 20 20 28 77 68 65 6e 20 28 65 71 20 28 63 61 72 2d 73 61 66 65 20 70 72 6f 70 29 20 27 74 6f 6f ..(when.(eq.(car-safe.prop).'too
82140 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 55 73 65 72 20 65 64 69 74 73 20 74 6f 20 l).............;;.User.edits.to.
82160 63 6c 65 61 6e 20 75 70 20 63 61 6e 20 70 6f 74 65 6e 74 69 61 6c 6c 79 20 69 6e 73 65 72 74 20 clean.up.can.potentially.insert.
82180 61 20 74 6f 6f 6c 2d 63 61 6c 6c 20 68 65 61 64 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b a.tool-call.header.............;
821a0 3b 20 74 68 61 74 20 69 73 20 70 72 6f 70 65 72 74 69 7a 65 64 2e 20 20 54 6f 6f 6c 20 63 61 6c ;.that.is.propertized...Tool.cal
821c0 6c 20 68 65 61 64 65 72 73 20 73 68 6f 75 6c 64 20 6e 6f 74 20 62 65 0a 20 20 20 20 20 20 20 20 l.headers.should.not.be.........
821e0 20 20 20 20 3b 3b 20 70 72 6f 70 65 72 74 69 7a 65 64 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 ....;;.propertized..............
82200 28 77 68 65 6e 20 28 6c 6f 6f 6b 69 6e 67 2d 61 74 2d 70 20 22 5b 5b 3a 73 70 61 63 65 3a 5d 5d (when.(looking-at-p."[[:space:]]
82220 2a 23 5c 5c 2b 62 65 67 69 6e 5f 74 6f 6f 6c 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 *#\\+begin_tool")...............
82240 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 20 (goto-char.(match-end.0)))......
82260 20 20 20 20 20 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20 6e 69 6c 0a 20 20 20 20 20 .......(condition-case.nil......
82280 20 20 20 20 20 20 20 20 20 20 20 28 72 65 61 64 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 ...........(read.(current-buffer
822a0 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 65 6e 64 2d 6f 66 2d 66 69 6c 65 20 69 ))...............((end-of-file.i
822c0 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 20 20 20 20 20 20 nvalid-read-syntax).............
822e0 20 20 20 28 6d 65 73 73 61 67 65 20 22 43 6f 75 6c 64 20 6e 6f 74 20 72 65 61 64 20 74 6f 6f 6c ...(message."Could.not.read.tool
82300 20 61 72 67 75 6d 65 6e 74 73 22 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 54 4f .arguments"))).............;;.TO
82320 44 4f 20 74 68 69 73 20 63 6f 64 65 20 69 73 20 61 62 6c 65 20 74 6f 20 70 75 74 20 74 68 65 20 DO.this.code.is.able.to.put.the.
82340 70 6f 69 6e 74 20 62 65 68 69 6e 64 20 70 72 65 76 2d 70 74 2c 20 77 68 69 63 68 0a 20 20 20 20 point.behind.prev-pt,.which.....
82360 20 20 20 20 20 20 20 20 3b 3b 20 6d 61 6b 65 73 20 74 68 65 20 72 65 67 69 6f 6e 20 69 6e 76 65 ........;;.makes.the.region.inve
82380 72 74 65 64 2e 20 20 54 68 65 20 60 6d 61 78 27 20 63 61 74 63 68 65 73 20 74 68 69 73 2c 20 62 rted...The.`max'.catches.this,.b
823a0 75 74 20 72 65 61 6c 6c 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 60 72 65 61 64 27 20 ut.really.............;;.`read'.
823c0 61 6e 64 20 60 6c 6f 6f 6b 69 6e 67 2d 61 74 27 20 61 72 65 20 74 68 65 20 63 75 6c 70 72 69 74 and.`looking-at'.are.the.culprit
823e0 73 2e 20 20 42 61 64 6c 79 20 66 6f 72 6d 65 64 20 74 6f 6f 6c 0a 20 20 20 20 20 20 20 20 20 20 s...Badly.formed.tool...........
82400 20 20 3b 3b 20 62 6c 6f 63 6b 73 20 63 61 6e 20 6c 65 61 64 20 74 6f 20 74 68 69 73 20 62 65 69 ..;;.blocks.can.lead.to.this.bei
82420 6e 67 20 6e 65 63 65 73 73 61 72 79 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 67 2d 75 ng.necessary..............(org-u
82440 6e 65 73 63 61 70 65 2d 63 6f 64 65 2d 69 6e 2d 72 65 67 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 nescape-code-in-region..........
82460 20 20 20 20 28 6d 69 6e 20 70 72 65 76 2d 70 74 20 28 70 6f 69 6e 74 29 29 20 70 72 65 76 2d 70 ....(min.prev-pt.(point)).prev-p
82480 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 73 65 74 71 20 70 t))...........(goto-char.(setq.p
824a0 72 65 76 2d 70 74 20 62 61 63 6b 77 61 72 64 2d 70 72 6f 67 72 65 73 73 29 29 29 29 29 29 29 0a rev-pt.backward-progress))))))).
824c0 0a 3b 3b 20 48 61 6e 64 6c 65 20 6d 65 64 69 61 20 6c 69 6e 6b 73 20 69 6e 20 74 68 65 20 62 75 .;;.Handle.media.links.in.the.bu
824e0 66 66 65 72 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d ffer.(cl-defmethod.gptel--parse-
82500 6d 65 64 69 61 2d 6c 69 6e 6b 73 20 28 28 5f 6d 6f 64 65 20 28 65 71 6c 20 27 6f 72 67 2d 6d 6f media-links.((_mode.(eql.'org-mo
82520 64 65 29 29 20 62 65 67 20 65 6e 64 29 0a 20 20 22 50 61 72 73 65 20 74 65 78 74 20 61 6e 64 20 de)).beg.end)..."Parse.text.and.
82540 61 63 74 69 6f 6e 61 62 6c 65 20 6c 69 6e 6b 73 20 62 65 74 77 65 65 6e 20 42 45 47 20 61 6e 64 actionable.links.between.BEG.and
82560 20 45 4e 44 2e 0a 0a 52 65 74 75 72 6e 20 61 20 6c 69 73 74 20 6f 66 20 74 68 65 20 66 6f 72 6d .END...Return.a.list.of.the.form
82580 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 3a 6d 65 64 ..((:text.\"some.text\")...(:med
825a0 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 69 6d 65 20 ia.\"/path/to/media.png\".:mime.
825c0 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 72 65 20 74 \"image/png\")...(:text.\"More.t
825e0 65 78 74 5c 22 29 29 0a 66 6f 72 20 69 6e 63 6c 75 73 69 6f 6e 20 69 6e 74 6f 20 74 68 65 20 75 ext\")).for.inclusion.into.the.u
82600 73 65 72 20 70 72 6f 6d 70 74 20 66 6f 72 20 74 68 65 20 67 70 74 65 6c 20 72 65 71 75 65 73 74 ser.prompt.for.the.gptel.request
82620 2e 22 0a 20 20 28 72 65 71 75 69 72 65 20 27 6d 61 69 6c 63 61 70 29 20 20 20 20 20 20 20 20 20 ."...(require.'mailcap).........
82640 20 20 20 20 20 20 20 20 20 20 20 3b 46 49 58 4d 45 20 41 76 6f 69 64 20 74 68 69 73 20 73 6f 6d ...........;FIXME.Avoid.this.som
82660 65 68 6f 77 0a 20 20 28 6c 65 74 20 28 28 70 61 72 74 73 29 20 28 66 72 6f 6d 2d 70 74 29 0a 20 ehow...(let.((parts).(from-pt)..
82680 20 20 20 20 20 20 20 28 6c 69 6e 6b 2d 72 65 67 65 78 20 28 63 6f 6e 63 61 74 20 22 5c 5c 28 3f .......(link-regex.(concat."\\(?
826a0 3a 22 20 6f 72 67 2d 6c 69 6e 6b 2d 62 72 61 63 6b 65 74 2d 72 65 20 22 5c 5c 7c 22 0a 20 20 20 :".org-link-bracket-re."\\|"....
826c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 72 67 2d 6c 69 6e .........................org-lin
826e0 6b 2d 61 6e 67 6c 65 2d 72 65 20 22 5c 5c 29 22 29 29 29 0a 20 20 20 20 28 73 61 76 65 2d 65 78 k-angle-re."\\)"))).....(save-ex
82700 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 28 73 65 74 71 20 66 72 6f 6d 2d 70 74 20 28 67 6f 74 cursion.......(setq.from-pt.(got
82720 6f 2d 63 68 61 72 20 62 65 67 29 29 0a 20 20 20 20 20 20 28 77 68 69 6c 65 20 28 72 65 2d 73 65 o-char.beg)).......(while.(re-se
82740 61 72 63 68 2d 66 6f 72 77 61 72 64 20 6c 69 6e 6b 2d 72 65 67 65 78 20 65 6e 64 20 74 29 0a 20 arch-forward.link-regex.end.t)..
82760 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 6c 69 6e 6b 20 28 6f 72 67 2d 65 6c .......(when-let*.((link.(org-el
82780 65 6d 65 6e 74 2d 63 6f 6e 74 65 78 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ement-context)).................
827a0 20 20 20 20 28 28 67 70 74 65 6c 2d 6f 72 67 2d 2d 6c 69 6e 6b 2d 73 74 61 6e 64 61 6c 6f 6e 65 ....((gptel-org--link-standalone
827c0 2d 70 20 6c 69 6e 6b 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 -p.link)).....................(r
827e0 61 77 2d 6c 69 6e 6b 20 28 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 70 72 6f 70 65 72 74 79 20 3a 72 aw-link.(org-element-property.:r
82800 61 77 2d 6c 69 6e 6b 20 6c 69 6e 6b 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 aw-link.link))..................
82820 20 20 20 28 70 61 74 68 20 28 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 70 72 6f 70 65 72 74 79 20 3a ...(path.(org-element-property.:
82840 70 61 74 68 20 6c 69 6e 6b 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 path.link)).....................
82860 28 74 79 70 65 20 28 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 70 72 6f 70 65 72 74 79 20 3a 74 79 70 (type.(org-element-property.:typ
82880 65 20 6c 69 6e 6b 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 e.link)).....................;;.
828a0 46 49 58 4d 45 20 54 68 69 73 20 69 73 20 6e 6f 74 20 61 20 67 6f 6f 64 20 70 6c 61 63 65 20 74 FIXME.This.is.not.a.good.place.t
828c0 6f 20 63 68 65 63 6b 20 66 6f 72 20 75 72 6c 20 63 61 70 61 62 69 6c 69 74 79 21 0a 20 20 20 20 o.check.for.url.capability!.....
828e0 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 74 79 70 65 20 60 28 ................((member.type.`(
82900 22 61 74 74 61 63 68 6d 65 6e 74 22 20 22 66 69 6c 65 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 "attachment"."file".............
82920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2c 40 28 61 6e 64 20 28 ........................,@(and.(
82940 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 63 61 70 61 62 6c 65 2d 70 20 27 75 72 6c 29 0a 20 20 20 gptel--model-capable-p.'url)....
82960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
82980 20 20 20 20 27 28 22 68 74 74 70 22 20 22 68 74 74 70 73 22 20 22 66 74 70 22 29 29 29 29 29 0a ....'("http"."https"."ftp"))))).
829a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 69 6d 65 20 28 6d 61 69 6c 63 ....................(mime.(mailc
829c0 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 68 29 29 ap-file-name-to-mime-type.path))
829e0 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 6c 2d 2d 6d 6f .....................((gptel--mo
82a00 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 0a 20 20 20 20 20 del-mime-capable-p.mime)))......
82a20 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 28 28 6d 65 6d 62 65 72 20 74 .....(cond............((member.t
82a40 79 70 65 20 27 28 22 66 69 6c 65 22 20 22 61 74 74 61 63 68 6d 65 6e 74 22 29 29 0a 20 20 20 20 ype.'("file"."attachment")).....
82a60 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 66 69 6c 65 2d 72 65 61 64 61 62 6c 65 2d 70 20 70 ........(when.(file-readable-p.p
82a80 61 74 68 29 0a 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 74 65 ath)...............;;.Collect.te
82aa0 78 74 20 75 70 20 74 6f 20 74 68 69 73 20 69 6d 61 67 65 2c 20 61 6e 64 0a 20 20 20 20 20 20 20 xt.up.to.this.image,.and........
82ac0 20 20 20 20 20 20 20 3b 3b 20 43 6f 6c 6c 65 63 74 20 74 68 69 73 20 69 6d 61 67 65 0a 20 20 20 .......;;.Collect.this.image....
82ae0 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 65 78 74 20 28 73 74 ...........(when-let*.((text.(st
82b00 72 69 6e 67 2d 74 72 69 6d 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 2d 6e 6f 2d 70 ring-trim.(buffer-substring-no-p
82b20 72 6f 70 65 72 74 69 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 roperties.......................
82b40 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 70 74 20 ........................from-pt.
82b60 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 6b 29 29 (gptel-org--element-begin.link))
82b80 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
82ba0 69 6e 67 2d 65 6d 70 74 79 2d 70 20 74 65 78 74 29 20 28 70 75 73 68 20 28 6c 69 73 74 20 3a 74 ing-empty-p.text).(push.(list.:t
82bc0 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 20 ext.text).parts)))..............
82be0 20 28 70 75 73 68 20 28 6c 69 73 74 20 3a 6d 65 64 69 61 20 70 61 74 68 20 3a 6d 69 6d 65 20 6d .(push.(list.:media.path.:mime.m
82c00 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 28 73 65 74 71 20 ime).parts)...............(setq.
82c20 66 72 6f 6d 2d 70 74 20 28 70 6f 69 6e 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 28 from-pt.(point))))............((
82c40 6d 65 6d 62 65 72 20 74 79 70 65 20 27 28 22 68 74 74 70 22 20 22 68 74 74 70 73 22 20 22 66 74 member.type.'("http"."https"."ft
82c60 70 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 43 6f 6c 6c 65 63 74 20 74 65 78 74 p")).............;;.Collect.text
82c80 20 75 70 20 74 6f 20 74 68 69 73 20 69 6d 61 67 65 2c 20 61 6e 64 0a 20 20 20 20 20 20 20 20 20 .up.to.this.image,.and..........
82ca0 20 20 20 3b 3b 20 43 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 ...;;.Collect.this.image.url....
82cc0 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 73 74 72 69 .........(when-let*.((text.(stri
82ce0 6e 67 2d 74 72 69 6d 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f ng-trim.(buffer-substring-no-pro
82d00 70 65 72 74 69 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 perties.........................
82d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 72 6f 6d 2d 70 74 20 28 67 70 74 ....................from-pt.(gpt
82d40 65 6c 2d 6f 72 67 2d 2d 65 6c 65 6d 65 6e 74 2d 62 65 67 69 6e 20 6c 69 6e 6b 29 29 29 29 29 0a el-org--element-begin.link))))).
82d60 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 65 6d ..............(unless.(string-em
82d80 70 74 79 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 pty-p.text).(push.(list.:text.te
82da0 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 70 75 73 68 20 28 xt).parts))).............(push.(
82dc0 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 69 6d 65 29 20 70 list.:url.raw-link.:mime.mime).p
82de0 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 6f 6d 2d 70 74 20 arts).............(setq.from-pt.
82e00 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 20 28 3d 20 66 72 (point)))))).......(unless.(=.fr
82e20 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 6c 69 73 74 20 3a om-pt.end).........(push.(list.:
82e40 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 72 text.(buffer-substring-no-proper
82e60 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 29 0a 20 20 20 20 ties.from-pt.end)).parts))).....
82e80 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 20 67 70 74 65 6c (nreverse.parts)))..(defun.gptel
82ea0 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 62 6a 65 63 74 29 -org--link-standalone-p.(object)
82ec0 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 73 20 6f 6e 20 61 ..."Check.if.link.OBJECT.is.on.a
82ee0 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 63 69 66 79 20 61 .line.by.itself."...;;.Specify.a
82f00 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 35 29 0a 20 20 28 ncestor.TYPES.as.list.(#245)...(
82f20 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 6e 74 2d 6c 69 6e when-let*.((par.(org-element-lin
82f40 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 29 0a 20 20 20 20 eage.object.'(paragraph)))).....
82f60 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 74 2d 62 65 67 69 (and.(=.(gptel-org--element-begi
82f80 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 65 2d 65 78 63 75 n.object).............(save-excu
82fa0 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 63 68 61 72 20 28 rsion...............(goto-char.(
82fc0 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 65 6e 74 73 2d 62 org-element-property.:contents-b
82fe0 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 73 6b 69 70 2d 63 egin.par))...............(skip-c
83000 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 20 20 20 hars-forward."\t.").............
83020 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 20 20 3b 61 63 63 ..(point))).................;acc
83040 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 6f 72 65 20 6f 62 ount.for.leading.space.before.ob
83060 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 65 6c 65 6d 65 6e ject..........(<=.(-.(org-elemen
83080 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 61 72 29 0a 20 20 t-property.:contents-end.par)...
830a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 70 72 6f 70 65 ..............(org-element-prope
830c0 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 20 20 20 20 20 31 rty.:end.object))..............1
830e0 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 6e 64 2d 77 69 74 ))))..(defun.gptel-org--send-wit
83100 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 67 73 29 0a 20 20 h-props.(send-fun.&rest.args)...
83120 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 2d 46 55 4e 27 73 "Conditionally.modify.SEND-FUN's
83140 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 69 6e 20 61 6e 20 .calling.environment...If.in.an.
83160 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 20 63 6f 6e 74 61 Org.buffer.under.a.heading.conta
83180 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 67 75 72 61 74 69 ining.a.stored.gptel.configurati
831a0 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 69 6e 73 74 65 61 on,.use.that.for.requests.instea
831c0 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 65 6d 20 6d 65 73 d...This.includes.the.system.mes
831e0 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 62 61 63 6b 65 6e sage,.model.and.provider.(backen
83200 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 2e 0a 0a 41 52 47 d),.among.other.parameters...ARG
83220 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 6e 20 63 61 6c 6c S.are.the.original.function.call
83240 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 64 2d 6d 6f 64 65 .arguments."...(if.(derived-mode
83260 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 2d 6c 65 74 20 28 -p.'org-mode).......(pcase-let.(
83280 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 2c 67 70 74 65 6c (`(,gptel--system-message.,gptel
832a0 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 20 20 20 20 20 20 -backend.,gptel-model...........
832c0 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 75 72 65 20 2c 67 ...........,gptel-temperature.,g
832e0 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 20 20 20 20 20 20 ptel-max-tokens)................
83300 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 29 20 28 6f 72 20 ....(seq-mapn.(lambda.(a.b).(or.
83320 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 20 20 20 20 20 20 a.b))...........................
83340 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 29 ...(gptel-org--entry-properties)
83360 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c ..............................(l
83380 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 67 70 74 65 6c 2d ist.gptel--system-message.gptel-
833a0 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 20 20 20 20 20 20 backend.gptel-model.............
833c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 74 65 6d .......................gptel-tem
833e0 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 29 29 29 0a 20 20 perature.gptel-max-tokens))))...
83400 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 29 29 0a 20 20 20 ......(apply.send-fun.args))....
83420 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 28 61 64 76 69 63 .(apply.send-fun.args)))..(advic
83440 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 23 27 67 70 74 65 e-add.'gptel-send.:around.#'gpte
83460 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 64 76 69 63 65 2d l-org--send-with-props).(advice-
83480 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 72 6f 75 6e 64 20 add.'gptel--suffix-send.:around.
834a0 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 3b #'gptel-org--send-with-props)..;
834c0 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 72 67 2d 6d 6f 64 ;.;;.NOTE:.Basic.uses.in.org-mod
834e0 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 67 70 74 65 6c 2d e.are.covered.by.advising.gptel-
83500 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 69 78 2d 73 65 6e send.and.;;.;;.gptel--suffix-sen
83520 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 20 6d 69 67 68 74 d...For.custom.commands.it.might
83540 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 20 3b 3b 20 67 70 .be.necessary.to.advise.;;.;;.gp
83560 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 64 76 69 63 65 2d tel-request.instead..;;.(advice-
83580 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 20 23 27 67 70 74 add.'gptel-request.:around.#'gpt
835a0 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 0c 0a 3b 3b 3b 20 el-org--send-with-props)....;;;.
835c0 53 61 76 69 6e 67 20 61 6e 64 20 72 65 73 74 6f 72 69 6e 67 20 73 74 61 74 65 0a 28 64 65 66 75 Saving.and.restoring.state.(defu
835e0 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 69 65 73 20 28 26 n.gptel-org--entry-properties.(&
83600 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 20 63 6f 6e 66 69 optional.pt)..."Find.gptel.confi
83620 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 20 61 74 20 50 54 guration.properties.stored.at.PT
83640 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 2c 73 79 73 74 65 ."...(pcase-let.......((`(,syste
83660 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 74 75 72 65 20 2c m.,backend.,model.,temperature.,
83680 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 63 61 72 0a 20 20 tokens.,num)..........(mapcar...
836a0 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 67 2d 65 6e 74 72 ........(lambda.(prop).(org-entr
836c0 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 20 27 73 65 6c 65 y-get.(or.pt.(point)).prop.'sele
836e0 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 5f 53 59 53 54 45 ctive))...........'("GPTEL_SYSTE
83700 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 4d 4f 44 45 4c 22 M"."GPTEL_BACKEND"."GPTEL_MODEL"
83720 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 41 54 55 52 45 22 ............."GPTEL_TEMPERATURE"
83740 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 20 20 20 20 20 20 ."GPTEL_MAX_TOKENS".............
83760 22 47 50 54 45 4c 5f 4e 55 4d 5f 4d 45 53 53 41 47 45 53 5f 54 4f 5f 53 45 4e 44 22 29 29 29 29 "GPTEL_NUM_MESSAGES_TO_SEND"))))
83780 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 65 74 71 20 73 79 .....(when.system.......(setq.sy
837a0 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 20 22 5c 6e 22 20 stem.(string-replace."\\n"."\n".
837c0 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 64 0a 20 20 20 20 system))).....(when.backend.....
837e0 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 20 62 61 63 6b 65 ..(setq.backend.(alist-get.backe
83800 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 20 20 20 20 20 20 nd.gptel--known-backends........
83820 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 6e 69 6c 20 ........................nil.nil.
83840 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 20 28 73 65 74 71 #'equal))).....(when.model.(setq
83860 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 6c 29 29 29 0a 20 .model.(gptel--intern.model)))..
83880 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 20 28 73 65 74 71 ...(when.temperature.......(setq
838a0 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 6d 62 65 72 20 74 .temperature.(gptel--to-number.t
838c0 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 6b 65 6e 73 20 28 emperature))).....(when.tokens.(
838e0 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 62 65 72 20 74 6f setq.tokens.(gptel--to-number.to
83900 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 71 20 6e 75 6d 20 kens))).....(when.num.(setq.num.
83920 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 20 20 20 28 6c 69 (gptel--to-number.num))).....(li
83940 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 6d 70 65 72 61 74 st.system.backend.model.temperat
83960 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 67 70 74 65 6c 2d ure.tokens.num)))..(defun.gptel-
83980 6f 72 67 2d 2d 72 65 73 74 6f 72 65 2d 73 74 61 74 65 20 28 29 0a 20 20 22 52 65 73 74 6f 72 65 org--restore-state.()..."Restore
839a0 20 67 70 74 65 6c 20 73 74 61 74 65 20 66 6f 72 20 4f 72 67 20 62 75 66 66 65 72 73 20 77 68 65 .gptel.state.for.Org.buffers.whe
839c0 6e 20 74 75 72 6e 69 6e 67 20 6f 6e 20 60 67 70 74 65 6c 2d 6d 6f 64 65 27 2e 22 0a 20 20 28 73 n.turning.on.`gptel-mode'."...(s
839e0 61 76 65 2d 72 65 73 74 72 69 63 74 69 6f 6e 0a 20 20 20 20 28 77 69 64 65 6e 29 0a 20 20 20 20 ave-restriction.....(widen).....
83a00 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20 73 74 61 74 75 73 0a 20 20 20 20 20 20 20 20 28 (condition-case.status.........(
83a20 70 72 6f 67 6e 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 62 6f 75 progn...........(when-let*.((bou
83a40 6e 64 73 20 28 6f 72 67 2d 65 6e 74 72 79 2d 67 65 74 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 22 nds.(org-entry-get.(point-min)."
83a60 47 50 54 45 4c 5f 42 4f 55 4e 44 53 22 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 GPTEL_BOUNDS"))).............(gp
83a80 74 65 6c 2d 2d 72 65 73 74 6f 72 65 2d 70 72 6f 70 73 20 28 72 65 61 64 20 62 6f 75 6e 64 73 29 tel--restore-props.(read.bounds)
83aa0 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 63 61 73 65 2d 6c 65 74 20 28 28 60 28 2c 73 79 73 ))...........(pcase-let.((`(,sys
83ac0 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 74 75 72 65 tem.,backend.,model.,temperature
83ae0 20 2c 74 6f 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 .,tokens.,num)..................
83b00 20 20 20 20 20 20 28 67 70 74 65 6c 2d 6f 72 67 2d 2d 65 6e 74 72 79 2d 70 72 6f 70 65 72 74 69 ......(gptel-org--entry-properti
83b20 65 73 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 77 es.(point-min)))).............(w
83b40 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
83b60 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))...........
83b80 20 20 28 69 66 20 62 61 63 6b 65 6e 64 20 28 73 65 74 71 2d 6c 6f 63 61 6c 20 67 70 74 65 6c 2d ..(if.backend.(setq-local.gptel-
83ba0 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 28 backend.backend)...............(
83bc0 6d 65 73 73 61 67 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 75 62 73 74 69 74 75 message................(substitu
83be0 74 65 2d 63 6f 6d 6d 61 6e 64 2d 6b 65 79 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 te-command-keys.................
83c00 28 63 6f 6e 63 61 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 43 6f 75 6c 64 20 (concat.................."Could.
83c20 6e 6f 74 20 61 63 74 69 76 61 74 65 20 67 70 74 65 6c 20 62 61 63 6b 65 6e 64 20 5c 22 25 73 5c not.activate.gptel.backend.\"%s\
83c40 22 21 20 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 53 77 69 74 63 68 20 62 "!..".................."Switch.b
83c60 61 63 6b 65 6e 64 73 20 77 69 74 68 20 5c 5c 5b 75 6e 69 76 65 72 73 61 6c 2d 61 72 67 75 6d 65 ackends.with.\\[universal-argume
83c80 6e 74 5d 20 5c 5c 5b 67 70 74 65 6c 2d 73 65 6e 64 5d 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 nt].\\[gptel-send]".............
83ca0 20 20 20 20 20 22 20 62 65 66 6f 72 65 20 75 73 69 6e 67 20 67 70 74 65 6c 2e 22 29 29 0a 20 20 .....".before.using.gptel."))...
83cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 62 61 63 6b 65 6e 64 29 29 0a 20 20 20 20 20 20 20 20 20 .............backend))..........
83ce0 20 20 20 28 77 68 65 6e 20 6d 6f 64 65 6c 20 28 73 65 74 71 2d 6c 6f 63 61 6c 20 67 70 74 65 6c ...(when.model.(setq-local.gptel
83d00 2d 6d 6f 64 65 6c 20 6d 6f 64 65 6c 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e -model.model)).............(when
83d20 20 74 65 6d 70 65 72 61 74 75 72 65 20 28 73 65 74 71 2d 6c 6f 63 61 6c 20 67 70 74 65 6c 2d 74 .temperature.(setq-local.gptel-t
83d40 65 6d 70 65 72 61 74 75 72 65 20 74 65 6d 70 65 72 61 74 75 72 65 29 29 0a 20 20 20 20 20 20 20 emperature.temperature))........
83d60 20 20 20 20 20 28 77 68 65 6e 20 74 6f 6b 65 6e 73 20 28 73 65 74 71 2d 6c 6f 63 61 6c 20 67 70 .....(when.tokens.(setq-local.gp
83d80 74 65 6c 2d 6d 61 78 2d 74 6f 6b 65 6e 73 20 74 6f 6b 65 6e 73 29 29 0a 20 20 20 20 20 20 20 20 tel-max-tokens.tokens)).........
83da0 20 20 20 20 28 77 68 65 6e 20 6e 75 6d 20 28 73 65 74 71 2d 6c 6f 63 61 6c 20 67 70 74 65 6c 2d ....(when.num.(setq-local.gptel-
83dc0 2d 6e 75 6d 2d 6d 65 73 73 61 67 65 73 2d 74 6f 2d 73 65 6e 64 20 6e 75 6d 29 29 29 29 0a 20 20 -num-messages-to-send.num))))...
83de0 20 20 20 20 28 3a 73 75 63 63 65 73 73 20 28 6d 65 73 73 61 67 65 20 22 67 70 74 65 6c 20 63 68 ....(:success.(message."gptel.ch
83e00 61 74 20 72 65 73 74 6f 72 65 64 2e 22 29 29 0a 20 20 20 20 20 20 28 65 72 72 6f 72 20 28 6d 65 at.restored.")).......(error.(me
83e20 73 73 61 67 65 20 22 43 6f 75 6c 64 20 6e 6f 74 20 72 65 73 74 6f 72 65 20 67 70 74 65 6c 20 73 ssage."Could.not.restore.gptel.s
83e40 74 61 74 65 2c 20 73 6f 72 72 79 21 20 45 72 72 6f 72 3a 20 25 73 22 20 73 74 61 74 75 73 29 29 tate,.sorry!.Error:.%s".status))
83e60 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 6f 70 65 72 )))..(defun.gptel-org-set-proper
83e80 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 74 6f 72 65 ties.(pt.&optional.msg)..."Store
83ea0 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 69 6f 6e 20 .the.active.gptel.configuration.
83ec0 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 54 68 65 20 under.the.current.heading...The.
83ee0 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 6e 63 6c 75 active.gptel.configuration.inclu
83f00 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 67 65 2c 20 des.the.current.system.message,.
83f20 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 28 62 61 63 language.model.and.provider.(bac
83f40 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 67 73 20 77 kend),.and.additional.settings.w
83f60 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 75 72 73 6f hen.applicable...PT.is.the.curso
83f80 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 53 47 20 69 r.position.by.default...If.MSG.i
83fa0 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 20 61 20 6d s.non-nil.(default),.display.a.m
83fc0 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 61 63 74 69 essage.afterwards."...(interacti
83fe0 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 65 6e 74 72 ve.(list.(point).t))...(org-entr
84000 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 6c 2d 2d 6d y-put.pt."GPTEL_MODEL".(gptel--m
84020 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 72 67 2d 65 odel-name.gptel-model))...(org-e
84040 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 28 67 70 74 ntry-put.pt."GPTEL_BACKEND".(gpt
84060 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 29 0a el-backend-name.gptel-backend)).
84080 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 6c 75 65 20 ..(unless.(equal.(default-value.
840a0 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 6d 70 65 72 'gptel-temperature).gptel-temper
840c0 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 20 22 47 50 ature).....(org-entry-put.pt."GP
840e0 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 20 20 20 20 TEL_TEMPERATURE"................
84100 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 74 65 6d 70 ....(number-to-string.gptel-temp
84120 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 67 70 74 65 erature)))...(when.(natnump.gpte
84140 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 20 28 6f 72 l--num-messages-to-send).....(or
84160 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 53 53 41 47 g-entry-put.pt."GPTEL_NUM_MESSAG
84180 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 20 20 20 28 ES_TO_SEND"....................(
841a0 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 6d 65 73 73 number-to-string.gptel--num-mess
841c0 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 2d 70 75 74 ages-to-send)))...(org-entry-put
841e0 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 20 20 20 20 .pt."GPTEL_SYSTEM"..............
84200 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 65 0a 20 20 ....(and-let*.((msg.(car-safe...
84220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
84240 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 20 20 20 20 (gptel--parse-directive.........
84260 20 20 20 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
84280 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 20 20 20 20 --system-message))))............
842a0 20 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 2d 72 65 70 6c 61 63 65 20 22 5c 6e 22 20 22 5c 5c ........(string-replace."\n"."\\
842c0 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 74 6f 6b 65 n".msg)))...(when.gptel-max-toke
842e0 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 74 20 22 47 ns.....(org-entry-put......pt."G
84300 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 73 74 72 69 PTEL_MAX_TOKENS".(number-to-stri
84320 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 65 6e 20 6d ng.gptel-max-tokens)))...(when.m
84340 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 20 63 6f 6e sg.....(message."Added.gptel.con
84360 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 6e 65 2e 22 figuration.to.current.headline."
84380 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 73 74 61 74 )))..(defun.gptel-org--save-stat
843a0 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 65 20 74 6f e.()..."Write.the.gptel.state.to
843c0 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 72 74 69 65 .the.Org.buffer.as.Org.propertie
843e0 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 20 20 20 28 s."...(org-with-wide-buffer....(
84400 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 68 65 6e 20 goto-char.(point-min))....(when.
84420 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 2d 6f 70 65 (org-at-heading-p)......(org-ope
84440 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 2d 70 72 6f n-line.1))....(gptel-org-set-pro
84460 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 61 76 65 20 perties.(point-min))....;;.Save.
84480 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 65 63 20 28 response.boundaries....(letrec.(
844a0 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 6c 61 6d 62 (write-bounds..............(lamb
844c0 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 20 28 6c 65 da.(attempts)................(le
844e0 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 65 72 2d 62 t*.((bounds.(gptel--get-buffer-b
84500 6f 75 6e 64 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b ounds)).......................;;
84520 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 65 67 20 65 .first.value.of.((prop...((beg.e
84540 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 20 20 20 20 nd.val)...))...)................
84560 20 20 20 20 20 20 20 28 6f 66 66 73 65 74 20 28 63 61 61 64 61 72 20 62 6f 75 6e 64 73 29 29 0a .......(offset.(caadar.bounds)).
84580 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 74 2d 6d 61 ......................(offset-ma
845a0 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 72 29 20 6f rker.(set-marker.(make-marker).o
845c0 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 72 67 2d 65 ffset)))..................(org-e
845e0 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 42 4f 55 4e ntry-put.(point-min)."GPTEL_BOUN
84600 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 20 20 20 20 DS".............................
84620 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 2d 67 65 74 ....(prin1-to-string.(gptel--get
84640 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 20 20 20 20 -buffer-bounds)))...............
84660 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 72 2d 70 6f ...(when.(and.(not.(=.(marker-po
84680 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 29 29 0a 20 sition.offset-marker).offset))..
846a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 3e 20 61 74 ...........................(>.at
846c0 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 20 20 28 66 tempts.0))....................(f
846e0 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 6d 70 74 73 uncall.write-bounds.(1-.attempts
84700 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 62 6f 75 6e )))))))......(funcall.write-boun
84720 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 20 72 65 73 ds.6))))....;;;.Transforming.res
84740 70 6f 6e 73 65 73 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 63 6f 6e 76 65 72 74 2d 6d 61 72 ponses.(defun.gptel--convert-mar
84760 6b 64 6f 77 6e 2d 3e 6f 72 67 20 28 73 74 72 29 0a 20 20 22 43 6f 6e 76 65 72 74 20 73 74 72 69 kdown->org.(str)..."Convert.stri
84780 6e 67 20 53 54 52 20 66 72 6f 6d 20 6d 61 72 6b 64 6f 77 6e 20 74 6f 20 6f 72 67 20 6d 61 72 6b ng.STR.from.markdown.to.org.mark
847a0 75 70 2e 0a 0a 54 68 69 73 20 69 73 20 61 20 76 65 72 79 20 62 61 73 69 63 20 63 6f 6e 76 65 72 up...This.is.a.very.basic.conver
847c0 74 65 72 20 74 68 61 74 20 68 61 6e 64 6c 65 73 20 6f 6e 6c 79 20 61 20 66 65 77 20 6d 61 72 6b ter.that.handles.only.a.few.mark
847e0 75 70 0a 65 6c 65 6d 65 6e 74 73 2e 22 0a 20 20 28 77 69 74 68 2d 74 65 6d 70 2d 62 75 66 66 65 up.elements."...(with-temp-buffe
84800 72 0a 20 20 20 20 28 69 6e 73 65 72 74 20 73 74 72 29 0a 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 r.....(insert.str).....(goto-cha
84820 72 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 0a 20 20 20 20 28 77 68 69 6c 65 20 28 72 65 2d 73 65 r.(point-min)).....(while.(re-se
84840 61 72 63 68 2d 66 6f 72 77 61 72 64 20 22 60 2b 5c 5c 7c 5c 5c 2a 5c 5c 7b 31 2c 32 5c 5c 7d 5c arch-forward."`+\\|\\*\\{1,2\\}\
84860 5c 7c 5f 5c 5c 7c 5e 23 2b 22 20 6e 69 6c 20 74 29 0a 20 20 20 20 20 20 28 70 63 61 73 65 20 28 \|_\\|^#+".nil.t).......(pcase.(
84880 6d 61 74 63 68 2d 73 74 72 69 6e 67 20 30 29 0a 20 20 20 20 20 20 20 20 3b 3b 20 48 61 6e 64 6c match-string.0).........;;.Handl
848a0 65 20 62 61 63 6b 74 69 63 6b 73 0a 20 20 20 20 20 20 20 20 28 28 61 6e 64 20 28 67 75 61 72 64 e.backticks.........((and.(guard
848c0 20 28 65 71 20 28 63 68 61 72 2d 62 65 66 6f 72 65 29 20 3f 60 29 29 20 74 69 63 6b 73 29 0a 20 .(eq.(char-before).?`)).ticks)..
848e0 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 72 65 70 6c 61 63 65 2d 73 6f 75 72 63 65 2d 6d ........(gptel--replace-source-m
84900 61 72 6b 65 72 20 28 6c 65 6e 67 74 68 20 74 69 63 6b 73 29 29 0a 20 20 20 20 20 20 20 20 20 28 arker.(length.ticks))..........(
84920 73 61 76 65 2d 6d 61 74 63 68 2d 64 61 74 61 0a 20 20 20 20 20 20 20 20 20 20 20 28 63 61 74 63 save-match-data............(catc
84940 68 20 27 62 6c 6f 63 6b 2d 65 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 69 6c 65 h.'block-end..............(while
84960 20 28 73 65 61 72 63 68 2d 66 6f 72 77 61 72 64 20 74 69 63 6b 73 20 6e 69 6c 20 74 29 0a 20 20 .(search-forward.ticks.nil.t)...
84980 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 63 68 .............(unless.(or.(eq.(ch
849a0 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 20 3f ar-before.(match-beginning.0)).?
849c0 60 29 0a 20 20 20 20 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 `)............................(e
849e0 71 20 28 63 68 61 72 2d 61 66 74 65 72 29 20 3f 60 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 q.(char-after).?`)).............
84a00 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 72 65 70 6c 61 63 65 2d 73 6f 75 72 63 65 2d 6d 61 72 6b .....(gptel--replace-source-mark
84a20 65 72 20 28 6c 65 6e 67 74 68 20 74 69 63 6b 73 29 20 27 65 6e 64 29 0a 20 20 20 20 20 20 20 20 er.(length.ticks).'end).........
84a40 20 20 20 20 20 20 20 20 20 28 74 68 72 6f 77 20 27 62 6c 6f 63 6b 2d 65 6e 64 20 6e 69 6c 29 29 .........(throw.'block-end.nil))
84a60 29 29 29 29 0a 20 20 20 20 20 20 20 20 3b 3b 20 48 61 6e 64 6c 65 20 68 65 61 64 69 6e 67 73 0a )))).........;;.Handle.headings.
84a80 20 20 20 20 20 20 20 20 28 28 61 6e 64 20 28 67 75 61 72 64 20 28 65 71 20 28 63 68 61 72 2d 62 ........((and.(guard.(eq.(char-b
84aa0 65 66 6f 72 65 29 20 3f 23 29 29 20 68 65 61 64 69 6e 67 29 0a 20 20 20 20 20 20 20 20 20 28 63 efore).?#)).heading)..........(c
84ac0 6f 6e 64 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 5b 5b 3a 73 ond...........((looking-at."[[:s
84ae0 70 61 63 65 3a 5d 5d 22 29 20 20 20 3b 48 61 6e 64 6c 65 20 68 65 61 64 69 6e 67 73 0a 20 20 20 pace:]]")...;Handle.headings....
84b00 20 20 20 20 20 20 20 20 28 64 65 6c 65 74 65 2d 72 65 67 69 6f 6e 20 28 6c 69 6e 65 2d 62 65 67 ........(delete-region.(line-beg
84b20 69 6e 6e 69 6e 67 2d 70 6f 73 69 74 69 6f 6e 29 20 28 70 6f 69 6e 74 29 29 0a 20 20 20 20 20 20 inning-position).(point)).......
84b40 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 67 74 .....(insert.(make-string.(lengt
84b60 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 28 28 6c 6f 6f h.heading).?*)))...........((loo
84b80 6b 69 6e 67 2d 61 74 20 22 5c 5c 2b 62 65 67 69 6e 5f 73 72 63 22 29 20 3b 4f 76 65 72 65 61 67 king-at."\\+begin_src").;Overeag
84ba0 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 73 72 63 er.LLM.switched.to.using.Org.src
84bc0 20 62 6c 6f 63 6b 73 0a 20 20 20 20 20 20 20 20 20 20 20 28 73 61 76 65 2d 6d 61 74 63 68 2d 64 .blocks............(save-match-d
84be0 61 74 61 20 28 72 65 2d 73 65 61 72 63 68 2d 66 6f 72 77 61 72 64 20 22 5e 23 5c 5c 2b 65 6e 64 ata.(re-search-forward."^#\\+end
84c00 5f 73 72 63 22 20 6e 69 6c 20 74 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 3b 3b 20 48 61 6e 64 _src".nil.t))))).........;;.Hand
84c20 6c 65 20 65 6d 70 68 61 73 69 73 0a 20 20 20 20 20 20 20 20 28 22 2a 2a 22 20 28 63 6f 6e 64 0a le.emphasis.........("**".(cond.
84c40 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 74 20 22 ...............;;.((looking-at."
84c60 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 0a 20 20 20 \\*\\(?:[[:word:]]\\|\s\\)")....
84c80 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 20 28 64 65 6c 65 74 65 2d 63 68 61 72 20 31 29 29 ............;;..(delete-char.1))
84ca0 0a 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 62 61 63 6b 20 22 ................((looking-back."
84cc0 5c 5c 28 3f 3a 5b 5b 3a 77 6f 72 64 3a 5d 5b 3a 70 75 6e 63 74 3a 5d 5c 6e 5d 5c 5c 7c 5c 73 5c \\(?:[[:word:][:punct:]\n]\\|\s\
84ce0 5c 29 5c 5c 2a 5c 5c 7b 32 5c 5c 7d 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 \)\\*\\{2\\}"...................
84d00 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 78 20 28 2d 20 28 70 6f 69 6e 74 29 20 33 29 20 28 ............(max.(-.(point).3).(
84d20 70 6f 69 6e 74 2d 6d 69 6e 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 65 point-min))).................(de
84d40 6c 65 74 65 2d 63 68 61 72 20 2d 31 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 22 2a 22 0a 20 20 lete-char.-1)))).........("*"...
84d60 20 20 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 20 28 28 73 61 76 65 2d 6d 61 .......(cond...........((save-ma
84d80 74 63 68 2d 64 61 74 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 28 6f 72 20 28 tch-data..............(and.(or.(
84da0 3d 20 28 70 6f 69 6e 74 29 20 32 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 =.(point).2)....................
84dc0 20 20 20 28 6c 6f 6f 6b 69 6e 67 2d 62 61 63 6b 20 22 5c 5c 28 3f 3a 5b 5b 3a 73 70 61 63 65 3a ...(looking-back."\\(?:[[:space:
84de0 5d 5d 5c 5c 7c 5c 73 5c 5c 29 5c 5c 28 3f 3a 5f 5c 5c 7c 5c 5c 2a 5c 5c 29 22 0a 20 20 20 20 20 ]]\\|\s\\)\\(?:_\\|\\*\\)"......
84e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 ...............................(
84e20 6d 61 78 20 28 2d 20 28 70 6f 69 6e 74 29 20 32 29 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 29 29 max.(-.(point).2).(point-min))))
84e40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 6f 74 20 28 6c 6f 6f 6b 69 6e 67 ...................(not.(looking
84e60 2d 61 74 20 22 5b 5b 3a 73 70 61 63 65 3a 5d 5d 5c 5c 7c 5c 73 22 29 29 29 29 0a 20 20 20 20 20 -at."[[:space:]]\\|\s"))))......
84e80 20 20 20 20 20 20 3b 3b 20 50 6f 73 73 69 62 6c 65 20 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20 65 ......;;.Possible.beginning.of.e
84ea0 6d 70 68 61 73 69 73 0a 20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 0a 20 20 20 20 20 20 20 20 mphasis............(and.........
84ec0 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 ....(save-excursion.............
84ee0 20 20 28 77 68 65 6e 20 28 61 6e 64 20 28 72 65 2d 73 65 61 72 63 68 2d 66 6f 72 77 61 72 64 20 ..(when.(and.(re-search-forward.
84f00 28 72 65 67 65 78 70 2d 71 75 6f 74 65 20 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 20 30 29 29 0a (regexp-quote.(match-string.0)).
84f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
84f40 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 29 20 ............(line-end-position).
84f60 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 6c 6f 6f t)..........................(loo
84f80 6b 69 6e 67 2d 61 74 20 22 5b 5b 3a 73 70 61 63 65 5d 5d 5c 5c 7c 5c 73 22 29 0a 20 20 20 20 20 king-at."[[:space]]\\|\s")......
84fa0 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 6f 6f 6b 69 6e ....................(not.(lookin
84fc0 67 2d 62 61 63 6b 20 22 5c 5c 28 3f 3a 5b 5b 3a 73 70 61 63 65 5d 5d 5c 5c 7c 5c 73 5c 5c 29 5c g-back."\\(?:[[:space]]\\|\s\\)\
84fe0 5c 28 3f 3a 5f 5c 5c 7c 5c 5c 2a 5c 5c 29 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 \(?:_\\|\\*\\)".................
85000 20 20 20 20 20 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 ............................(max
85020 20 28 2d 20 28 70 6f 69 6e 74 29 20 32 29 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 29 29 29 0a 20 .(-.(point).2).(point-min)))))..
85040 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 20 ...............(delete-char.-1).
85060 28 69 6e 73 65 72 74 20 22 2f 22 29 20 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 (insert."/").t)).............(pr
85080 6f 67 6e 20 28 64 65 6c 65 74 65 2d 63 68 61 72 20 2d 31 29 20 28 69 6e 73 65 72 74 20 22 2f 22 ogn.(delete-char.-1).(insert."/"
850a0 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a ))))...........((save-excursion.
850c0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 67 6e 6f 72 65 2d 65 72 72 6f 72 73 20 28 62 61 63 .............(ignore-errors.(bac
850e0 6b 77 61 72 64 2d 63 68 61 72 20 32 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 20 kward-char.2))..............(or.
85100 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 5b 5b 3a 73 (and.(bobp).(looking-at."\\*[[:s
85120 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 28 6c 6f 6f pace:]]"))..................(loo
85140 6b 69 6e 67 2d 61 74 20 22 5c 5c 28 3f 3a 24 5c 5c 7c 5c 5c 60 5c 5c 29 5c 6e 5c 5c 2a 5b 5b 3a king-at."\\(?:$\\|\\`\\)\n\\*[[:
85160 73 70 61 63 65 3a 5d 5d 22 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 42 75 6c 6c 65 space:]]")))............;;.Bulle
85180 74 20 70 6f 69 6e 74 2c 20 72 65 70 6c 61 63 65 20 77 69 74 68 20 68 79 70 68 65 6e 0a 20 20 20 t.point,.replace.with.hyphen....
851a0 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 73 65 72 74 ........(delete-char.-1).(insert
851c0 20 22 2d 22 29 29 29 29 29 29 0a 20 20 20 20 28 62 75 66 66 65 72 2d 73 74 72 69 6e 67 29 29 29 ."-")))))).....(buffer-string)))
851e0 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 72 65 70 6c 61 63 65 2d 73 6f 75 72 63 65 2d 6d ..(defun.gptel--replace-source-m
85200 61 72 6b 65 72 20 28 6e 75 6d 2d 74 69 63 6b 73 20 26 6f 70 74 69 6f 6e 61 6c 20 65 6e 64 29 0a arker.(num-ticks.&optional.end).
85220 20 20 22 52 65 70 6c 61 63 65 20 6d 61 72 6b 64 6f 77 6e 20 73 74 79 6c 65 20 62 61 63 6b 74 69 .."Replace.markdown.style.backti
85240 63 6b 73 20 77 69 74 68 20 4f 72 67 20 65 71 75 69 76 61 6c 65 6e 74 73 2e 0a 0a 4e 55 4d 2d 54 cks.with.Org.equivalents...NUM-T
85260 49 43 4b 53 20 69 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 62 61 63 6b 74 69 63 6b 73 20 ICKS.is.the.number.of.backticks.
85280 62 65 69 6e 67 20 72 65 70 6c 61 63 65 64 2e 20 20 49 66 20 45 4e 44 20 69 73 0a 74 72 75 65 20 being.replaced...If.END.is.true.
852a0 74 68 65 73 65 20 61 72 65 20 5c 22 65 6e 64 69 6e 67 5c 22 20 62 61 63 6b 74 69 63 6b 73 2e 0a these.are.\"ending\".backticks..
852c0 0a 54 68 69 73 20 69 73 20 69 6e 74 65 6e 64 65 64 20 66 6f 72 20 75 73 65 20 69 6e 20 74 68 65 .This.is.intended.for.use.in.the
852e0 20 6d 61 72 6b 64 6f 77 6e 20 74 6f 20 6f 72 67 20 73 74 72 65 61 6d 20 63 6f 6e 76 65 72 74 65 .markdown.to.org.stream.converte
85300 72 2e 22 0a 20 20 28 6c 65 74 20 28 28 66 72 6f 6d 20 28 6d 61 74 63 68 2d 62 65 67 69 6e 6e 69 r."...(let.((from.(match-beginni
85320 6e 67 20 30 29 29 29 0a 20 20 20 20 28 64 65 6c 65 74 65 2d 72 65 67 69 6f 6e 20 66 72 6f 6d 20 ng.0))).....(delete-region.from.
85340 28 70 6f 69 6e 74 29 29 0a 20 20 20 20 28 69 66 20 28 61 6e 64 20 28 3d 20 6e 75 6d 2d 74 69 63 (point)).....(if.(and.(=.num-tic
85360 6b 73 20 33 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 ks.3)..............(save-excursi
85380 6f 6e 20 28 62 65 67 69 6e 6e 69 6e 67 2d 6f 66 2d 6c 69 6e 65 29 0a 20 20 20 20 20 20 20 20 20 on.(beginning-of-line)..........
853a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 6b 69 70 2d 63 68 61 72 73 2d ....................(skip-chars-
853c0 66 6f 72 77 61 72 64 20 22 20 5c 74 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 forward.".\t")..................
853e0 20 20 20 20 20 20 20 20 20 20 20 20 28 65 71 20 28 70 6f 69 6e 74 29 20 66 72 6f 6d 29 29 29 0a ............(eq.(point).from))).
85400 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 28 69 66 20 65 6e 64 20 22 23 2b 65 6e 64 5f 73 ........(insert.(if.end."#+end_s
85420 72 63 22 20 22 23 2b 62 65 67 69 6e 5f 73 72 63 20 22 29 29 0a 20 20 20 20 20 20 28 69 6e 73 65 rc"."#+begin_src.")).......(inse
85440 72 74 20 22 3d 22 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 73 74 72 65 61 6d rt."="))))..(defun.gptel--stream
85460 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 74 61 72 74 2d 6d 61 -convert-markdown->org.(start-ma
85480 72 6b 65 72 29 0a 20 20 22 52 65 74 75 72 6e 20 61 20 4d 61 72 6b 64 6f 77 6e 20 74 6f 20 4f 72 rker)..."Return.a.Markdown.to.Or
854a0 67 20 63 6f 6e 76 65 72 74 65 72 2e 0a 0a 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 70 61 72 73 g.converter...This.function.pars
854c0 65 73 20 61 20 73 74 72 65 61 6d 20 6f 66 20 4d 61 72 6b 64 6f 77 6e 20 74 65 78 74 20 74 6f 20 es.a.stream.of.Markdown.text.to.
854e0 4f 72 67 0a 63 6f 6e 74 69 6e 75 6f 75 73 6c 79 20 77 68 65 6e 20 69 74 20 69 73 20 63 61 6c 6c Org.continuously.when.it.is.call
85500 65 64 20 77 69 74 68 20 73 75 63 63 65 73 73 69 76 65 20 63 68 75 6e 6b 73 20 6f 66 20 74 68 65 ed.with.successive.chunks.of.the
85520 0a 74 65 78 74 20 73 74 72 65 61 6d 2e 0a 0a 53 54 41 52 54 2d 4d 41 52 4b 45 52 20 69 73 20 75 .text.stream...START-MARKER.is.u
85540 73 65 64 20 74 6f 20 69 64 65 6e 74 69 66 79 20 74 68 65 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e sed.to.identify.the.correspondin
85560 67 20 70 72 6f 63 65 73 73 20 77 68 65 6e 0a 63 6c 65 61 6e 69 6e 67 20 75 70 20 61 66 74 65 72 g.process.when.cleaning.up.after
85580 2e 22 0a 20 20 28 6c 65 74 72 65 63 20 28 28 69 6e 2d 73 72 63 2d 62 6c 6f 63 6b 20 6e 69 6c 29 ."...(letrec.((in-src-block.nil)
855a0 20 20 20 20 20 20 20 20 20 20 20 3b 65 78 70 6c 69 63 69 74 20 6e 69 6c 20 74 6f 20 61 64 64 72 ...........;explicit.nil.to.addr
855c0 65 73 73 20 42 55 47 20 23 31 38 33 0a 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 2d 6f 72 67 2d ess.BUG.#183............(in-org-
855e0 73 72 63 2d 62 6c 6f 63 6b 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 74 65 6d 70 2d src-block.nil)............(temp-
85600 62 75 66 20 28 67 65 6e 65 72 61 74 65 2d 6e 65 77 2d 62 75 66 66 65 72 20 22 20 2a 67 70 74 65 buf.(generate-new-buffer.".*gpte
85620 6c 2d 74 65 6d 70 2a 22 20 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 73 74 61 72 74 2d 70 l-temp*".t))............(start-p
85640 74 20 28 6d 61 6b 65 2d 6d 61 72 6b 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 74 69 63 t.(make-marker))............(tic
85660 6b 73 2d 74 6f 74 61 6c 20 30 29 20 20 20 20 20 20 3b 4d 41 59 42 45 20 73 68 6f 75 6c 64 20 77 ks-total.0)......;MAYBE.should.w
85680 65 20 6c 65 74 2d 62 69 6e 64 20 63 61 73 65 2d 66 6f 6c 64 2d 73 65 61 72 63 68 20 68 65 72 65 e.let-bind.case-fold-search.here
856a0 3f 0a 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 65 61 6e 75 70 2d 66 6e 0a 20 20 20 20 20 20 20 ?............(cleanup-fn........
856c0 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 62 65 67 20 5f 29 0a 20 20 20 20 20 20 20 20 20 20 20 .....(lambda.(beg._)............
856e0 20 20 20 28 77 68 65 6e 20 28 61 6e 64 20 28 65 71 75 61 6c 20 62 65 67 20 28 6d 61 72 6b 65 72 ...(when.(and.(equal.beg.(marker
85700 2d 70 6f 73 69 74 69 6f 6e 20 73 74 61 72 74 2d 6d 61 72 6b 65 72 29 29 0a 20 20 20 20 20 20 20 -position.start-marker))........
85720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 71 20 28 63 75 72 72 65 6e 74 2d 62 ..................(eq.(current-b
85740 75 66 66 65 72 29 20 28 6d 61 72 6b 65 72 2d 62 75 66 66 65 72 20 73 74 61 72 74 2d 6d 61 72 6b uffer).(marker-buffer.start-mark
85760 65 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 62 75 66 er))).................(when.(buf
85780 66 65 72 2d 6c 69 76 65 2d 70 20 28 67 65 74 2d 62 75 66 66 65 72 20 74 65 6d 70 2d 62 75 66 29 fer-live-p.(get-buffer.temp-buf)
857a0 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 6d 61 72 6b 65 72 20 )...................(set-marker.
857c0 73 74 61 72 74 2d 70 74 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 start-pt.nil)...................
857e0 28 6b 69 6c 6c 2d 62 75 66 66 65 72 20 74 65 6d 70 2d 62 75 66 29 29 0a 20 20 20 20 20 20 20 20 (kill-buffer.temp-buf)).........
85800 20 20 20 20 20 20 20 20 28 72 65 6d 6f 76 65 2d 68 6f 6f 6b 20 27 67 70 74 65 6c 2d 70 6f 73 74 ........(remove-hook.'gptel-post
85820 2d 72 65 73 70 6f 6e 73 65 2d 66 75 6e 63 74 69 6f 6e 73 20 63 6c 65 61 6e 75 70 2d 66 6e 29 29 -response-functions.cleanup-fn))
85840 29 29 29 0a 20 20 20 20 28 61 64 64 2d 68 6f 6f 6b 20 27 67 70 74 65 6c 2d 70 6f 73 74 2d 72 65 ))).....(add-hook.'gptel-post-re
85860 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 20 sponse-functions.cleanup-fn)....
85880 20 28 6c 61 6d 62 64 61 20 28 73 74 72 29 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 6e 6f 6f 70 .(lambda.(str).......(let.((noop
858a0 2d 70 29 20 28 74 69 63 6b 73 20 30 29 29 0a 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 63 75 72 -p).(ticks.0)).........(with-cur
858c0 72 65 6e 74 2d 62 75 66 66 65 72 20 28 67 65 74 2d 62 75 66 66 65 72 20 74 65 6d 70 2d 62 75 66 rent-buffer.(get-buffer.temp-buf
858e0 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 20 28 67 6f 74 )...........(save-excursion.(got
85900 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 20 28 69 6e 73 65 72 74 20 73 74 72 29 o-char.(point-max)).(insert.str)
85920 29 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 6d 61 72 6b 65 72 2d 70 6f 73 69 74 69 )...........(when.(marker-positi
85940 6f 6e 20 73 74 61 72 74 2d 70 74 29 20 28 67 6f 74 6f 2d 63 68 61 72 20 73 74 61 72 74 2d 70 74 on.start-pt).(goto-char.start-pt
85960 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 69 6e 2d 73 72 63 2d 62 6c 6f 63 6b 20 ))...........(when.in-src-block.
85980 28 73 65 74 71 20 74 69 63 6b 73 20 74 69 63 6b 73 2d 74 6f 74 61 6c 29 29 0a 20 20 20 20 20 20 (setq.ticks.ticks-total)).......
859a0 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 ....(save-excursion.............
859c0 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 60 5c 5c 7c 5c (while.(re-search-forward."`\\|\
859e0 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 6c 20 74 29 0a 20 20 \*\\{1,2\\}\\|_\\|^#+".nil.t)...
85a00 20 20 20 20 20 20 20 20 20 20 20 20 28 70 63 61 73 65 20 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 ............(pcase.(match-string
85a20 20 30 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 22 60 22 0a 20 20 20 20 20 20 20 .0).................("`"........
85a40 20 20 20 20 20 20 20 20 20 20 3b 3b 20 43 6f 75 6e 74 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6e ..........;;.Count.number.of.con
85a60 73 65 63 75 74 69 76 65 20 62 61 63 6b 74 69 63 6b 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 secutive.backticks..............
85a80 20 20 20 20 28 62 61 63 6b 77 61 72 64 2d 63 68 61 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 ....(backward-char).............
85aa0 20 20 20 20 20 28 77 68 69 6c 65 20 28 61 6e 64 20 28 63 68 61 72 2d 61 66 74 65 72 29 20 28 65 .....(while.(and.(char-after).(e
85ac0 71 20 28 63 68 61 72 2d 61 66 74 65 72 29 20 3f 60 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 q.(char-after).?`)).............
85ae0 20 20 20 20 20 20 20 28 66 6f 72 77 61 72 64 2d 63 68 61 72 29 0a 20 20 20 20 20 20 20 20 20 20 .......(forward-char)...........
85b00 20 20 20 20 20 20 20 20 20 28 69 66 20 69 6e 2d 73 72 63 2d 62 6c 6f 63 6b 20 28 63 6c 2d 64 65 .........(if.in-src-block.(cl-de
85b20 63 66 20 74 69 63 6b 73 29 20 28 63 6c 2d 69 6e 63 66 20 74 69 63 6b 73 29 29 29 0a 20 20 20 20 cf.ticks).(cl-incf.ticks))).....
85b40 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 53 65 74 20 74 68 65 20 76 65 72 62 61 74 69 6d .............;;.Set.the.verbatim
85b60 20 73 74 61 74 65 20 6f 66 20 74 68 65 20 70 61 72 73 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 .state.of.the.parser............
85b80 20 20 20 20 20 20 28 69 66 20 28 61 6e 64 20 28 65 6f 62 70 29 0a 20 20 20 20 20 20 20 20 20 20 ......(if.(and.(eobp)...........
85ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 53 70 65 63 69 61 6c 20 63 61 73 65 20 ................;;.Special.case.
85bc0 68 65 75 72 69 73 74 69 63 3a 20 49 66 20 74 68 65 20 72 65 73 70 6f 6e 73 65 20 65 6e 64 73 20 heuristic:.If.the.response.ends.
85be0 77 69 74 68 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b with...........................;
85c00 3b 20 5e 60 60 60 20 77 65 20 64 6f 6e 27 74 20 77 61 69 74 20 66 6f 72 20 6d 6f 72 65 20 69 6e ;.^```.we.don't.wait.for.more.in
85c20 70 75 74 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b put............................;
85c40 3b 20 46 49 58 4d 45 3a 20 54 68 69 73 20 63 61 6e 20 68 61 76 65 20 66 61 6c 73 65 20 70 6f 73 ;.FIXME:.This.can.have.false.pos
85c60 69 74 69 76 65 73 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 itives..........................
85c80 20 20 28 6e 6f 74 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 20 28 62 65 67 69 6e 6e 69 6e ..(not.(save-excursion.(beginnin
85ca0 67 2d 6f 66 2d 6c 69 6e 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 g-of-line)......................
85cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 6f 6f 6b 69 ..........................(looki
85ce0 6e 67 2d 61 74 20 22 5e 60 60 60 24 22 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ng-at."^```$"))))...............
85d00 20 20 20 20 20 20 20 3b 3b 20 45 6e 64 20 6f 66 20 69 6e 70 75 74 20 3d 3e 20 74 68 65 72 65 20 .......;;.End.of.input.=>.there.
85d20 63 6f 75 6c 64 20 62 65 20 6d 6f 72 65 20 62 61 63 6b 74 69 63 6b 73 20 63 6f 6d 69 6e 67 2c 0a could.be.more.backticks.coming,.
85d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 73 6f 20 77 65 20 77 61 .....................;;.so.we.wa
85d60 69 74 20 66 6f 72 20 6d 6f 72 65 20 69 6e 70 75 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 it.for.more.input...............
85d80 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
85da0 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
85dc0 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 57 ing.0)))....................;;.W
85de0 65 20 72 65 61 63 68 65 64 20 61 20 63 68 61 72 61 63 74 65 72 20 6f 74 68 65 72 20 74 68 61 6e e.reached.a.character.other.than
85e00 20 61 20 62 61 63 6b 74 69 63 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 .a.backtick....................(
85e20 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 54 69 63 6b cond.....................;;.Tick
85e40 73 20 62 61 6c 61 6e 63 65 64 2c 20 65 6e 64 20 73 72 63 20 62 6c 6f 63 6b 0a 20 20 20 20 20 20 s.balanced,.end.src.block.......
85e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 3d 20 74 69 63 6b 73 20 30 29 0a 20 20 20 20 20 ..............((=.ticks.0)......
85e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 67 6e 20 28 73 65 74 71 20 69 6e 2d ................(progn.(setq.in-
85ea0 73 72 63 2d 62 6c 6f 63 6b 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 src-block.nil)..................
85ec0 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 72 65 70 6c 61 63 65 2d 73 6f 75 72 63 ...........(gptel--replace-sourc
85ee0 65 2d 6d 61 72 6b 65 72 20 74 69 63 6b 73 2d 74 6f 74 61 6c 20 27 65 6e 64 29 29 29 0a 20 20 20 e-marker.ticks-total.'end)))....
85f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 50 6f 73 69 74 69 76 65 20 6e 75 6d .................;;.Positive.num
85f20 62 65 72 20 6f 66 20 74 69 63 6b 73 2c 20 73 74 61 72 74 20 61 6e 20 73 72 63 20 62 6c 6f 63 6b ber.of.ticks,.start.an.src.block
85f40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 61 6e 64 20 28 3e 20 74 69 .....................((and.(>.ti
85f60 63 6b 73 20 30 29 20 28 6e 6f 74 20 69 6e 2d 73 72 63 2d 62 6c 6f 63 6b 29 29 0a 20 20 20 20 20 cks.0).(not.in-src-block))......
85f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 74 69 63 6b 73 2d 74 6f 74 61 ................(setq.ticks-tota
85fa0 6c 20 74 69 63 6b 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 l.ticks.........................
85fc0 20 20 20 69 6e 2d 73 72 63 2d 62 6c 6f 63 6b 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ...in-src-block.t)..............
85fe0 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 72 65 70 6c 61 63 65 2d 73 6f 75 72 63 65 2d 6d ........(gptel--replace-source-m
86000 61 72 6b 65 72 20 74 69 63 6b 73 2d 74 6f 74 61 6c 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 arker.ticks-total)).............
86020 20 20 20 20 20 20 20 20 3b 3b 20 4e 65 67 61 74 69 76 65 20 6e 75 6d 62 65 72 20 6f 66 20 74 69 ........;;.Negative.number.of.ti
86040 63 6b 73 20 6f 72 20 69 6e 20 61 20 73 72 63 20 62 6c 6f 63 6b 20 61 6c 72 65 61 64 79 2c 0a 20 cks.or.in.a.src.block.already,..
86060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 72 65 73 65 74 20 74 69 63 6b ...................;;.reset.tick
86080 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 20 28 73 65 74 71 20 74 s.....................(t.(setq.t
860a0 69 63 6b 73 20 74 69 63 6b 73 2d 74 6f 74 61 6c 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 icks.ticks-total)))))...........
860c0 20 20 20 20 20 20 3b 3b 20 48 61 6e 64 6c 65 20 68 65 61 64 69 6e 67 73 20 61 6e 64 20 6d 69 73 ......;;.Handle.headings.and.mis
860e0 67 75 69 64 65 64 20 23 2b 62 65 67 69 6e 5f 73 72 63 20 74 65 78 74 0a 20 20 20 20 20 20 20 20 guided.#+begin_src.text.........
86100 20 20 20 20 20 20 20 20 28 28 61 6e 64 20 28 67 75 61 72 64 20 28 61 6e 64 20 28 65 71 20 28 63 ........((and.(guard.(and.(eq.(c
86120 68 61 72 2d 62 65 66 6f 72 65 29 20 3f 23 29 20 28 6f 72 20 28 6e 6f 74 20 69 6e 2d 73 72 63 2d har-before).?#).(or.(not.in-src-
86140 62 6c 6f 63 6b 29 20 69 6e 2d 6f 72 67 2d 73 72 63 2d 62 6c 6f 63 6b 29 29 29 0a 20 20 20 20 20 block).in-org-src-block)))......
86160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 65 61 64 69 6e 67 29 0a 20 20 20 20 20 20 .................heading).......
86180 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 69 6e 2d 6f 72 67 2d 73 72 63 2d 62 6c 6f 63 6b 0a ...........(if.in-org-src-block.
861a0 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 77 65 20 61 72 .....................;;.If.we.ar
861c0 65 20 69 6e 73 69 64 65 20 61 6e 20 4f 72 67 2d 73 74 79 6c 65 20 73 72 63 20 62 6c 6f 63 6b 2c e.inside.an.Org-style.src.block,
861e0 20 6c 6f 6f 6b 20 66 6f 72 20 23 2b 65 6e 64 5f 73 72 63 0a 20 20 20 20 20 20 20 20 20 20 20 20 .look.for.#+end_src.............
86200 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 20 .........(cond..................
86220 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 29 29 .....((<.(-.(point-max).(point))
86240 20 38 29 20 3b 6e 6f 74 20 65 6e 6f 75 67 68 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 74 6f 20 63 .8).;not.enough.information.to.c
86260 6c 6f 73 65 20 4f 72 67 20 73 72 63 20 62 6c 6f 63 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 lose.Org.src.block..............
86280 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 65 74 2d 6d ..........(setq.noop-p.t).(set-m
862a0 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 69 6e 67 20 arker.start-pt.(match-beginning.
862c0 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 20 20 28 28 6c 6f 6f 0))).......................((loo
862e0 6b 69 6e 67 2d 61 74 20 22 5c 5c 2b 65 6e 64 5f 73 72 63 22 29 20 3b 43 6c 6f 73 65 20 4f 72 67 king-at."\\+end_src").;Close.Org
86300 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 20 20 20 20 20 .src.block......................
86320 20 20 28 73 65 74 71 20 69 6e 2d 73 72 63 2d 62 6c 6f 63 6b 20 6e 69 6c 20 69 6e 2d 6f 72 67 2d ..(setq.in-src-block.nil.in-org-
86340 73 72 63 2d 62 6c 6f 63 6b 20 6e 69 6c 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 src-block.nil)))................
86360 20 20 20 20 3b 3b 20 4f 74 68 65 72 77 69 73 65 20 63 68 65 63 6b 20 66 6f 72 20 4d 61 72 6b 64 ....;;.Otherwise.check.for.Markd
86380 6f 77 6e 20 68 65 61 64 69 6e 67 73 2c 20 6f 72 20 66 6f 72 20 23 2b 62 65 67 69 6e 5f 73 72 63 own.headings,.or.for.#+begin_src
863a0 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 20 ....................(cond.......
863c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 65 6f 62 70 29 20 20 20 20 20 20 20 3b 20 4e 6f ..............((eobp).......;.No
863e0 74 20 65 6e 6f 75 67 68 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 74 68 65 20 68 t.enough.information.about.the.h
86400 65 61 64 69 6e 67 20 79 65 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 eading.yet......................
86420 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
86440 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)))......
86460 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 5b 5b 3a ...............((looking-at."[[:
86480 73 70 61 63 65 3a 5d 5d 22 29 20 3b 20 43 6f 6e 76 65 72 74 20 6d 61 72 6b 64 6f 77 6e 20 68 65 space:]]").;.Convert.markdown.he
864a0 61 64 69 6e 67 20 74 6f 20 4f 72 67 20 68 65 61 64 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 ading.to.Org.heading............
864c0 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 6c 69 6e 65 2d 62 ..........(delete-region.(line-b
864e0 65 67 69 6e 6e 69 6e 67 2d 70 6f 73 69 74 69 6f 6e 29 20 28 70 6f 69 6e 74 29 29 0a 20 20 20 20 eginning-position).(point)).....
86500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 28 6d 61 6b 65 2d 73 .................(insert.(make-s
86520 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 29 29 29 0a 20 20 20 tring.(length.heading).?*)))....
86540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 3c 20 28 2d 20 28 70 6f 69 6e 74 2d 6d .................((<.(-.(point-m
86560 61 78 29 20 28 70 6f 69 6e 74 29 29 20 31 31 29 20 3b 4e 6f 74 20 65 6e 6f 75 67 68 20 69 6e 66 ax).(point)).11).;Not.enough.inf
86580 6f 72 6d 61 74 69 6f 6e 20 74 6f 20 63 68 65 63 6b 20 69 66 20 4f 72 67 20 73 72 63 20 62 6c 6f ormation.to.check.if.Org.src.blo
865a0 63 6b 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 ck......................(setq.no
865c0 6f 70 2d 70 20 74 29 20 28 73 65 74 2d 6d 61 72 6b 65 72 20 73 74 61 72 74 2d 70 74 20 28 6d 61 op-p.t).(set-marker.start-pt.(ma
865e0 74 63 68 2d 62 65 67 69 6e 6e 69 6e 67 20 30 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 tch-beginning.0)))..............
86600 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 65 67 69 6e 5f 73 72 .......((looking-at."\\+begin_sr
86620 63 20 22 29 20 3b 4f 76 65 72 65 61 67 65 72 20 4c 4c 4d 20 73 77 69 74 63 68 65 64 20 74 6f 20 c.").;Overeager.LLM.switched.to.
86640 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 20 20 20 20 20 20 using.Org.src.blocks............
86660 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 69 6e 2d 73 72 63 2d 62 6c 6f 63 6b 20 74 20 69 ..........(setq.in-src-block.t.i
86680 6e 2d 6f 72 67 2d 73 72 63 2d 62 6c 6f 63 6b 20 74 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 n-org-src-block.t)))))..........
866a0 20 20 20 20 20 20 20 3b 3b 20 48 61 6e 64 6c 65 20 6f 74 68 65 72 20 63 68 61 72 73 3a 20 65 6d .......;;.Handle.other.chars:.em
866c0 70 68 61 73 69 73 2c 20 62 6f 6c 64 20 61 6e 64 20 62 75 6c 6c 65 74 20 69 74 65 6d 73 0a 20 20 phasis,.bold.and.bullet.items...
866e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 61 6e 64 20 22 2a 2a 22 20 28 67 75 61 72 64 20 ..............((and."**".(guard.
86700 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)))............
86720 20 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b ......(cond...................;;
86740 20 54 4f 44 4f 20 4e 6f 74 20 73 75 72 65 20 77 68 79 20 74 68 69 73 20 62 72 61 6e 63 68 20 77 .TODO.Not.sure.why.this.branch.w
86760 61 73 20 6e 65 65 64 65 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 28 as.needed...................;;.(
86780 28 6c 6f 6f 6b 69 6e 67 2d 61 74 20 22 5c 5c 2a 5c 5c 28 3f 3a 5b 5b 3a 77 6f 72 64 3a 5d 5d 5c (looking-at."\\*\\(?:[[:word:]]\
867a0 5c 7c 5c 73 5c 5c 29 22 29 20 28 64 65 6c 65 74 65 2d 63 68 61 72 20 31 29 29 0a 0a 20 20 20 20 \|\s\\)").(delete-char.1))......
867c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 4c 6f 6f 6b 69 6e 67 20 62 61 63 6b 20 61 74 ..............;;.Looking.back.at
867e0 20 22 77 2a 2a 22 20 6f 72 20 22 20 2a 2a 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ."w**".or.".**".................
86800 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 5d ..((looking-back."\\(?:[[:word:]
86820 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 0a [:punct:]\n]\\|\s\\)\\*\\{2\\}".
86840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
86860 20 28 6d 61 78 20 28 2d 20 28 70 6f 69 6e 74 29 20 33 29 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 .(max.(-.(point).3).(point-min))
86880 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 65 6c 65 74 65 2d 63 68 61 )....................(delete-cha
868a0 72 20 2d 31 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 61 6e 64 20 22 r.-1)))).................((and."
868c0 2a 22 20 28 67 75 61 72 64 20 28 6e 6f 74 20 69 6e 2d 73 72 63 2d 62 6c 6f 63 6b 29 29 29 0a 20 *".(guard.(not.in-src-block)))..
868e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 65 6f 62 70 29 0a 20 20 20 20 20 ................(if.(eobp)......
86900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 4e 6f 74 20 65 6e 6f 75 67 68 20 69 6e ................;;.Not.enough.in
86920 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 74 68 65 20 22 2a 22 20 79 65 74 0a 20 20 20 20 formation.about.the."*".yet.....
86940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 67 6e 20 28 73 65 74 71 20 6e 6f .................(progn.(setq.no
86960 6f 70 2d 70 20 74 29 20 28 73 65 74 2d 6d 61 72 6b 65 72 20 73 74 61 72 74 2d 70 74 20 28 6d 61 op-p.t).(set-marker.start-pt.(ma
86980 74 63 68 2d 62 65 67 69 6e 6e 69 6e 67 20 30 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 tch-beginning.0)))..............
869a0 20 20 20 20 20 20 3b 3b 20 22 2a 22 20 69 73 20 65 69 74 68 65 72 20 65 6d 70 68 61 73 69 73 20 ......;;."*".is.either.emphasis.
869c0 6f 72 20 61 20 62 75 6c 6c 65 74 20 70 6f 69 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 or.a.bullet.point...............
869e0 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 20 20 .....(save-match-data...........
86a00 20 20 20 20 20 20 20 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 ...........(save-excursion......
86a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 67 6e 6f 72 65 2d 65 72 72 6f 72 73 ..................(ignore-errors
86a40 20 28 62 61 63 6b 77 61 72 64 2d 63 68 61 72 20 32 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 .(backward-char.2)).............
86a60 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 20 20 20 20 20 20 3b 20 41 74 20 62 6f 62 2c 20 ...........(cond......;.At.bob,.
86a80 75 6e 64 65 72 73 63 6f 72 65 2f 61 73 74 65 72 69 73 6b 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 underscore/asterisk.followed.by.
86aa0 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 20 20 20 20 28 28 6f word.........................((o
86ac0 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 28 3f 3a r.(and.(bobp).(looking-at."\\(?:
86ae0 5f 5c 5c 7c 5c 5c 2a 5c 5c 29 5c 5c 28 5b 5e 5b 3a 73 70 61 63 65 3a 5d 5b 3a 70 75 6e 63 74 3a _\\|\\*\\)\\([^[:space:][:punct:
86b00 5d 5d 5c 5c 7c 24 5c 5c 29 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ]]\\|$\\)"))....................
86b20 20 20 20 20 20 20 20 20 20 20 28 6c 6f 6f 6b 69 6e 67 2d 61 74 20 3b 20 77 6f 72 64 20 66 6f 6c ..........(looking-at.;.word.fol
86b40 6c 6f 77 65 64 20 62 79 20 75 6e 64 65 72 73 63 6f 72 65 2f 61 73 74 65 72 69 73 6b 0a 20 20 20 lowed.by.underscore/asterisk....
86b60 20 20 20 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 5b 5e 5b 3a ..........................."[^[:
86b80 73 70 61 63 65 3a 5d 5b 3a 70 75 6e 63 74 3a 5d 5c 6e 5d 5c 5c 28 3f 3a 5f 5c 5c 7c 5c 5c 2a 5c space:][:punct:]\n]\\(?:_\\|\\*\
86ba0 5c 29 5c 5c 28 3f 3a 5b 5b 3a 73 70 61 63 65 3a 5d 5b 3a 70 75 6e 63 74 3a 5d 5d 5c 5c 7c 24 5c \)\\(?:[[:space:][:punct:]]\\|$\
86bc0 5c 29 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 \)")............................
86be0 20 20 28 6c 6f 6f 6b 69 6e 67 2d 61 74 20 3b 20 75 6e 64 65 72 73 63 6f 72 65 2f 61 73 74 65 72 ..(looking-at.;.underscore/aster
86c00 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 20 20 20 isk.followed.by.word............
86c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 5c 5c 28 3f 3a 5b 5b 3a 73 70 61 63 ..................."\\(?:[[:spac
86c40 65 3a 5d 5b 3a 70 75 6e 63 74 3a 5d 5d 5c 5c 29 5c 5c 28 3f 3a 5f 5c 5c 7c 5c 5c 2a 5c 5c 29 5c e:][:punct:]]\\)\\(?:_\\|\\*\\)\
86c60 5c 28 5b 5e 5b 3a 73 70 61 63 65 3a 5d 5b 3a 70 75 6e 63 74 3a 5d 5d 5c 5c 7c 24 5c 5c 29 22 29 \([^[:space:][:punct:]]\\|$\\)")
86c80 29 0a 20 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 45 6d )..........................;;.Em
86ca0 70 68 61 73 69 73 2c 20 72 65 70 6c 61 63 65 20 77 69 74 68 20 73 6c 61 73 68 65 73 0a 20 20 20 phasis,.replace.with.slashes....
86cc0 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 63 ......................(forward-c
86ce0 68 61 72 20 28 69 66 20 28 62 6f 62 70 29 20 31 20 32 29 29 20 28 64 65 6c 65 74 65 2d 63 68 61 har.(if.(bobp).1.2)).(delete-cha
86d00 72 20 2d 31 29 20 28 69 6e 73 65 72 74 20 22 2f 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 r.-1).(insert."/")).............
86d20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 6f 72 20 28 61 6e 64 20 28 62 6f 62 70 29 20 28 6c 6f ............((or.(and.(bobp).(lo
86d40 6f 6b 69 6e 67 2d 61 74 20 22 5c 5c 2a 5b 5b 3a 73 70 61 63 65 3a 5d 5d 22 29 29 0a 20 20 20 20 oking-at."\\*[[:space:]]")).....
86d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 6f 6f 6b 69 6e .........................(lookin
86d80 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
86da0 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 20 20 20 20 20 20 ce:]]"))........................
86dc0 20 20 3b 3b 20 42 75 6c 6c 65 74 20 70 6f 69 6e 74 2c 20 72 65 70 6c 61 63 65 20 77 69 74 68 20 ..;;.Bullet.point,.replace.with.
86de0 68 79 70 68 65 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 hyphen..........................
86e00 28 66 6f 72 77 61 72 64 2d 63 68 61 72 20 28 69 66 20 28 62 6f 62 70 29 20 31 20 32 29 29 20 28 (forward-char.(if.(bobp).1.2)).(
86e20 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 22 29 29 29 29 29 delete-char.-1).(insert."-")))))
86e40 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 69 66 20 6e 6f 6f 70 2d 70 0a 20 20 20 20 20 )))))...........(if.noop-p......
86e60 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 70 6f 69 6e .........(buffer-substring.(poin
86e80 74 29 20 73 74 61 72 74 2d 70 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 67 31 20 t).start-pt).............(prog1.
86ea0 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 20 28 70 6f 69 6e 74 29 20 28 70 6f 69 6e 74 (buffer-substring.(point).(point
86ec0 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 28 73 65 74 2d 6d -max))....................(set-m
86ee0 61 72 6b 65 72 20 73 74 61 72 74 2d 70 74 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 29 29 29 29 29 arker.start-pt.(point-max)))))))
86f00 29 29 0a 0a 28 70 72 6f 76 69 64 65 20 27 67 70 74 65 6c 2d 6f 72 67 29 0a 3b 3b 3b 20 67 70 74 ))..(provide.'gptel-org).;;;.gpt
86f20 65 6c 2d 6f 72 67 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 el-org.el.ends.here.............
86f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
86f60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
86f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
86fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
86fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
86fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87000 67 70 74 65 6c 2d 30 2e 39 2e 38 2f 2e 65 6c 70 61 69 67 6e 6f 72 65 00 00 00 00 00 00 00 00 00 gptel-0.9.8/.elpaignore.........
87020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87060 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
87080 30 30 30 30 30 33 30 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 33 34 32 31 00 20 30 00 00 00 0000030.00000000000.013421..0...
870a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
870c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
870e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87100 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...................
87120 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...................
87140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
871a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
871c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
871e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87200 74 65 73 74 0a 2e 67 69 74 68 75 62 0a 2e 65 6c 70 61 69 67 6f 72 65 0a 00 00 00 00 00 00 00 00 test..github..elpaigore.........
87220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
872a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
872c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
872e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
873a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
873c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
873e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
874a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
874c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
874e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
875a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
875c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
875e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
876a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
876c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
876e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
877a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
877c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
877e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
878a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
878c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
878e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
879a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
879c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
879e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87a00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87a20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87a60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87a80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87b00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87b20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87c00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87c20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87c60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87c80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87d00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87d20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87e00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87e20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87e40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87e60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87e80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87ea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87ec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87ee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87f00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87f20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87f60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
880a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
880c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
880e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
881a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
881c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
881e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
882a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
882c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
882e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
883a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
883c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
883e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
884a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
884c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
884e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
885a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
885c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
885e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
886a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
886c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
886e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
887a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
887c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
887e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
888a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
888c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
888e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
889a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
889c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
889e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88a00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88a20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88a60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88a80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88b00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88b20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88c00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88c20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88c60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88c80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88d00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88d20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88e00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88e20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88e40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88e60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88e80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88ea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88ec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88ee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88f00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88f20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88f60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
89000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
89020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
89040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
89060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
89080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
890a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
890c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
890e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
89100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
89120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
89140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
89160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
89180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
891a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
891c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
891e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
89200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
89220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
89240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
89260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
89280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
892a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
892c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
892e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
89300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
89320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
89340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
89360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
89380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
893a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
893c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
893e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
89400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
89420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
89440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
89460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
89480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
894a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
894c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
894e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
89500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
89520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
89540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
89560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
89580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
895a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
895c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
895e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
89600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
89620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
89640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
89660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
89680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
896a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
896c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
896e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
89700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
89720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
89740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
89760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
89780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
897a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
897c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
897e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................